コンテンツにスキップ

Typst における関数

#で始まる文は関数を表します。マークアップも実体は関数です。

マークアップ関数
日本語#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 $])

mode

内蔵の関数や以下のように#letを使って自作の関数を定義し利用することができます。

#let test(body) = { [渡された文字列は#body] }
- #test("テスト")
- #test[#text(fill: red, weight: "bold", [test])]

func01

引数の渡し方は複数あります。以下は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)[引数]

func02