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)」を指す変数で特別な意味はありません。
bodyやcontentなど、利用シーンに応じてわかりやすい名前をつけることもできます。
ページの設定
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)