A typst package for drawing go/baduk/weiqi diagrams
#import "@preview/hane:0.1.0": board, stone #figure( board(" . . . . . 1 . . . O X . . . . . "), caption: [Black's #stone(black, n: 1) is a _hane_.] ) | |
#import "@preview/hane:0.1.0": board #board(" $$Bc Support for Sensei's Library syntax. $$ | . . $$ | . X $$ | . $$ | . X X , $$ | . O X X X $$ | . . O O X . X $$ | . O . B $$ -------- ", board-color: rgb("eb9")) |
How to use it
The stone
function draws an inline stone of the given color:
#stone(black)
#stone(white, n: 4)
#stone(black, mark: "circle") // or "square" or "triangle" or "cross"
The board
function draws a position diagram. The syntax is modeled after Sensei’s Library’s go diagram syntax, documented here.
#board("
O .
. X
")
Board symbols
The available symbols are:
Symbol | Meaning |
---|---|
. | Empty space |
, | Hoshi (star point) |
| - + | Edge of the board |
X | Black stone |
O | White stone |
B # Y Z | Marked black stone |
W @ Q P | Marked white stone |
C S T M | Marked empty space |
1 2 … | Numbered stone |
a b c … | Letter-marked empty space |
Header lines
If a line starts with $$B
or $$W
, it is parsed as a header. Example headers and their meanings are:
Header | Meaning |
---|---|
$$B | 19×19 board where ① is Black. |
$$W7 | 7×7 board where ① is White. |
$$Bc13 | 13×13 board where ① is Black, with coordinates. |
$$BC13 | 13×13 board where ① is Black, with inverted coordinates. |
$$W Hello | 19×19 board where ① is White, wrapped in a figure captioned Hello . |
For example:
#board(" $$Wc11 Example SL-style figure +-------- | . . . . | 1 2 3 4 | . . . . ") |
Options
stone
Parameter | Default | Description |
---|---|---|
fill | (positional) | The color of the stone, black or white . |
n | none | The number written on the stone. |
mark | none | The type of mark on the stone, "circle" or "square" or "triangle" or "cross" . |
height | 1em | Height of the stone. |
font | "Inter" | Font used for number on the stone. |
mark-color | rgb("#f24") | Color used for markings on the stone. |
mark-outline | false | Whether to outline the marking on the stone. |
board
Parameter | Default | Description |
---|---|---|
notation | (positional) | The board notation string. |
caption | none | If present, wrap the board in a figure with this caption. |
scale | 1em | The height to use for a single stone on the board. |
font | "Inter" | Font of coordinates and the numbers on the stones. |
placement | none | Placement of the figure, if caption is not none . |
stroke | 0.05em | Stroke of board grid lines. |
edge-stroke | 0.1em | Stroke of board grid lines at the edge of the board. |
coordinates | false | Whether to draw coordinates off the side of the grid. |
board-color | rgb("#fff") | Background color for the board. |
mark-color | rgb("#f24") | Color used for markings on the stones. |