Typst における関数
マークアップと関数
Section titled “マークアップと関数”#で始まる文は関数を表します。マークアップも実体は関数です。
| マークアップ | 関数 |
|---|---|
日本語 | #text("日本語") |
= heading | #hading("heading") |
Typst には 3 種類の構文モードがあります。
{ }で区切られたブロック内はコードブロックなので関数に#をつけずに呼び出します。マークアップ文を使う場合は[ ]で囲みます。数式は$...$で囲みます。
- コンテントブロック(Content block)
[...]: 関数は#をつけて使う。 例:#text(fill: red)[*Hey* there!] - コードブロック(Code block)
{...}: 関数は#をつけずに使う。 例:text(fill: red)[*Hey* there!] - 数式ブロック(Formula block)
$...$: 例:$ a=b+c
モードごとのブロックは入れ子にすることができます。
#let test(message: "テスト")={text(fill: blue)[このように #text(fill: red)[#message] にできます。]}#test(message: [入れ子$ 3+(2 times 2)/2 $])
#let 関数
Section titled “#let 関数”内蔵の関数や以下のように#letを使って自作の関数を定義し利用することができます。
#let test(body) = { [渡された文字列は#body] }- #test("テスト")- #test[#text(fill: red, weight: "bold", [test])]
引数の渡し方は複数あります。以下はbodyに引数が割り当てられます。
#test("テスト")このようにマークアップ文全体をを渡すこともできます。これも自動的にbodyに割り当てられます。
#test[#text(fill: red, weight: "bold", [test])]以下のように複数の引数がある場合も自動的にbodyに割り当てられます。引数の初期値も設定でき省略時にこれが参照されます。
#let test2( var: false, body) = { if var { [varはTrueです。] } else { [varはFalseです。] } body}
- #test2[引数]- #test2(var: true)[引数]