showしたい(#show

 1// シグネチャ
 2#show TARGET: RULES
 3
 4// 文字列の置換
 5#show "文字列": "置換文字列"
 6
 7// スタイル変更
 8#show SELECTOR: set ELEMENT(..options)
 9
10// 自由変形
11#show SELECTOR: it => {...}[#it]

#showルールで、要素の表示方法をカスタマイズできます。 文字列の置換から完全なカスタマイズまで、幅広い表現が可能です。

注釈

showルールの本質は「指定した要素を変換する」操作です。

文字列を置換したい

1#show "TY": "Typst"

#show "文字列": "置換文字列"の形で、特定の文字列を別の文字列に置換できます。 上記サンプルでは、TYという文字列をTypstに置換しています。

1#show "pi0": $pi^(0)$
2#show "pi+": $pi^(+)$
3#show "pi-": $pi^(-)$

文字列を数式に置換することもできます。 上記サンプルではπ中間子の記号を数式に置換しています。

スタイルを変更したい(#show 要素: set 装飾

1#show heading: set block(
2  above: 1em,
3  below: 1em,
4  // fill: luma(20%),
5)

#show 要素: set 装飾の形で、要素のスタイルを変更できます。 Typstではスタイルを追加・変更するための基本的な形式です。

上記のサンプルでは、すべての見出しを対象に、上と下にスペースを追加しています。 具体的には、heading要素をblock要素に変換して「スタイル」を追加しています。 heading要素の構造自体には変更を加えていないため、見出しのレベルや文字列などはそのまま保持されます。

1#show heading: set text(size: 1.5em, weight: "bold")
2#show heading: set block(
3  above: 1em,
4  below: 1em,
5)

指定した要素の構造を変更しないため、複数回#showルールを定義して、装飾を重ね書きすることもできます。

自由変形したい(#show 要素: it => {...}[#it]

 1// 見出しを太字にする
 2#show heading: set text(weight: "bold")
 3#show heading: set block(
 4  width: 100%,
 5  above: 1em,
 6  below: 1em,
 7)
 8
 9// クロージャ形式
10#show heading: it => {
11  block(
12    above: 1em,
13    below: 1em,
14  )[
15    #text(weight: "bold")[
16      #it
17    ]
18  ]
19}

#show 要素: it => {装飾}[#it]の形で、 要素の構造全体を書き換えることができます。 この形式は、指定した要素に適用する変換関数を定義するイメージです。 変換関数の中で、複数の装飾やラップ処理を組み合わせることができいます。 itを元にした新しい構造が生成されます。

注意

#show 要素: set 装飾の形で書かれたルールは、ユーザーが後から上書きできます。 一方で、#show 要素: it => {装飾}[#it]の形は、ユーザーが上書きできません。

ヒント

it => {装飾}[#it]itは、指定した要素を指す変数です。 #show link: it => {...}の例ではれば、it = linkを指しています。 そのためlinkオブジェクトが持つプロパティにアクセスできます。

Typstにおけるitは「それ(it)」を指す変数で特別な意味はありません。 bodycontentなど、利用シーンに応じてわかりやすい名前をつけることもできます。

ページの設定

1#set page(
2  paper: "a4",  // 用紙サイズ
3  fill: white,  //  背景色
4)

テキストの設定

1#set text(
2  font: "Noto Serif CJK JP",  // フォント
3  lang: "ja",  // 言語
4  size: 12pt,
5  fill: rgb(0, 0, 0),  // 文字色
6)

段落の設定

1#set par(
2  justify: true,   // 両端揃え
3  leading: 1.5em,  // 行間
4  spacing: 0.5em,  // 段落間
5)

見出しの設定

1#show heading: set text(
2  font: "Noto Serif CJK JP",
3  weight: "bold",
4)
5
6#show heading: set block(
7  above: 1em,
8  below: 1em,
9)

目次の設定

1#set outline(indent: 1em)
2#show outline.entry: set block(
3  spacing: 1em,
4)

リストの設定

1#set list(
2  spacing: 1em,
3  indent: 1em,
4  body-indent: 0.5em,
5  // marker: ([•], [‣], [–]),
6)
1#set enum(
2  spacing: 1em,
3  indent: 1em,
4  body-indent: 0.5em,
5  // numbering: "1. ",
6)
1#set term(
2  spacing: 1em,
3  indent: 1em,
4  body-indent: 0.5em,
5  // separator: ": ",
6)

数式の設定

1#show math.equation: set text(
2  font: "Fira Math",
3)

表の設定

 1#set table(
 2  stroke: (x, y) => {
 3    let thick: 2pt
 4    let thin: 0.5pt
 5    (
 6      top: if y == 0 or y == 1 { thick } else { thin },
 7      bottom: thick,
 8      left: none,
 9      right: none,
10    )
11  },
12  inset: 1em,
13)
14
15#show table.header: set text(
16  weight: bold,
17)

コードブロックの設定

 1#show raw: set text(
 2  font: "Fira Code",
 3)
 4
 5#show raw.where(block: true): set block(
 6  width: 100%,
 7  fill: luma(95%),
 8  inset: 1em,
 9  radius: 1em,
10  stroke: luma(50%) + 0.5pt,
11)
12
13#show raw.where(block: false): set text(
14  fill: olive,
15)

図版の設定

1#show figure: set block(
2  width: 100%,
3  above: 1em,
4  below: 1em,
5)
6
7#show figure.caption: set text(
8  fill: luma(50%),
9)

インライン要素の設定

1#show strong: set text(
2  fill: red,
3)
1#show emph: set text(
2  fill: red,
3)
1#show highlight: set text(
2  fill: yellow,
3)

リンクの設定

1#show link: set text(
2  fill: blue,
3)

脚注の設定

1#show footnote.entry: set text(
2    size: 0.8em,
3    fill: luma(50%),
4)

引用文献の設定

1#show bibliography.entry: set text(
2  size: 0.8em,
3  fill: luma(50%),
4)
1#show cite: set text(
2  size: 0.8em,
3  fill: luma(50%),
4)

引用の設定

1#show quote: set block(
2  width: 100%,
3  above: 1em,
4  below: 1em,
5  fill: luma(95%),
6  inset: 1em,
7  stroke: luma(50%) + 0.5pt,
8)