Write Chinese pinyin easily.
Usage
Import the package:
#import "@preview/easy-pinyin:0.1.0": pinyin, zhuyin
With the pinyin
function, you can use a2
to write an ɑ́
, o3
to write an ǒ
, v4
to represent ǜ
, etc.
With zhuyin
function,you can put pinyin above the text easily, with parameters:
- positional parameters:
doc: content|string
: main charactersruby: content|string
: zhuyin characters
- named parameters:
scale: number = 0.7
: font size scale ofruby
, default0.7
gutter: length = 0.3em
: spacing betweendoc
andruby
, default0.3em
delimiter: string|none = none
: if not none, use this character to splitdoc
andruby
into partsspacing: length|none = none
: spacing between each parts
See example bellow.
Example
汉(#pinyin[ha4n])语(#pinyin[yu3])拼(#pinyin[pi1n])音(#pinyin[yi1n])。
#let per-char(f) = [#f(delimiter: "|")[汉|语|拼|音][ha4n|yu3|pi1n|yi1n]]
#let per-word(f) = [#f(delimiter: "|")[汉语|拼音][ha4nyu3|pi1nyi1n]]
#let all-in-one(f) = [#f[汉语拼音][ha4nyu3pi1nyi1n]]
#let example(f) = (per-char(f), per-word(f), all-in-one(f))
// argument of scale and spacing
#let arguments = ((0.5, none), (0.7, none), (0.7, 0.1em), (1.0, none), (1.0, 0.2em))
#table(
columns: (auto, auto, auto, auto),
align: (center + horizon, center, center, center),
[arguments], [per char], [per word], [all in one],
..arguments.map(((scale, spacing)) => (
text(size: 0.7em)[#scale,#repr(spacing)],
..example(zhuyin.with(scale: scale, spacing: spacing))
)).flatten(),
)
LICENSE
MIT, see License file.