Zebraw is a lightweight and fast package for displaying code blocks with line numbers in typst, supporting code line highlighting. The term zebraw is a combination of zebra and raw, for the highlighted lines will be displayed in the code block like a zebra lines.
Import zebraw
package by #import "@preview/zebraw:0.4.8": *
then follow with #show: zebraw
to start using zebraw in the simplest way. To manually display some specific code blocks in zebraw, you can use #zebraw()
function:
Line numbers will be displayed on the left side of the code block. By passing an integer to the numbering-offset
parameter, you can change the starting line number. The default value is 0
.
To disable line numbering, pass false
to the numbering
parameter:
You can highlight specific lines in the code block by passing the highlight-lines
parameter to the zebraw
function. The highlight-lines
parameter can be a single line number or an array of line numbers.
You can add comments to the highlighted lines by passing an array of line numbers and comments to the highlight-lines
parameter.
Comments can begin with a flag, which is ">"
by default. You can change the flag by passing the comment-flag
parameter to the zebraw
function:
To disable the flag feature, pass ""
to the comment-flag
parameter (the indentation of the comment will be disabled as well):
Usually, the comments passing by a dictionary of line numbers and comments are used to add a header or footer to the code block:
Or you can use header
and footer
parameters to add a header or footer to the code block:
If lang
is set to true
, then there will be a language tab on the top right corner of the code block:
Customize the language to display by pass a string or content to the lang
parameter.
Line numbers will not be selected when selecting exported code in one page.
PRs are welcome!
See example-html.typ or GitHub Pages for more information.
There are 3 ways to customize code blocks in your document:
- Manually render some specific blocks by
#zebraw()
function and passing parameters to it. - By passing parameters to
#show: zebraw.with()
will affect every raw block after the#show
rule, except blocks created manually by#zebraw()
function. - By passing parameters to
#show: zebraw-init.with()
will affect every raw block after the#show
rule, including blocks created manually by#zebraw()
function. By usingzebraw-init
without any parameters, the values will be reset to default.
Customize the inset of each line by passing a to the inset
parameter:
Customize the background color by passing a or an of s to the background-color
parameter.
Customize the highlight color by passing a to the highlight-color
parameter:
Customize the comments' background color by passing a to the comment-color
parameter:
Customize the language tab's background color by passing a to the lang-color
parameter.
To customize the arguments of comments' font, the language tab's font or the numberings' font, pass a dictionary to comment-font-args
parameter, lang-font-args
parameter or numbering-font-args
parameter.
Language tab will be rendered as comments if nothing is passed.
Extend at vertical is enabled at default. When there's header or footer it will be automatically disabled.
The default value of most parameters are none
for it will use the default value in zebraw-init
.
Zebraw is licensed under the MIT License. See the LICENSE file for more information.