Universe

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_.]
)
Typst output showing a go board diagram
#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"))
Typst output showing a go board diagram

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
  | . . . .
")

output

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.