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)[引数]