このページは日本語に翻訳済みです。
outline
要素関数要素関数要素関数はset
ルールやshow
ルールでカスタマイズできます。
set
ルールやshow
ルールでカスタマイズできます。目次や図表などのアウトライン。
この関数は、指定したdepth
までに登場する要素を文書内から抽出し、その一覧(アウトライン)を生成します。
各要素には、その見出しやキャプションとともに、その要素の番号やページ番号がアウトライン形式で表示されます。
例
#set heading(numbering: "1.")
#outline()
= Introduction
#lorem(5)
= Methods
== Setup
#lorem(10)

見出し以外のアウトライン
デフォルト設定では、この関数は目次(セクション見出しのアウトライン)を生成します。
target
パラメーターを設定することで、見出し以外の要素のアウトラインも生成できます。
下の例では、target
をfigure.where(kind: image)
に設定して、画像を含む図のみをアウトライン表示しています。
同様にfigure.where(kind: table)
と設定すれば、表のアウトラインを生成できます。
where
セレクターを使わずにfigure
のみの指定もできますが、その場合は画像や表、またその他の素材も含む すべて の図表がアウトラインに表示されます。
#outline(
title: [List of Figures],
target: figure.where(kind: image),
)
#figure(
image("tiger.jpg"),
caption: [A nice figure!],
)

アウトラインのスタイル
基本的に、アウトライン本体やその項目に対してプロパティを設定することでスタイルを変更できます。 これにより、アウトラインのタイトル、項目のインデント、項目のテキストとページ番号の間の空白の埋め方などをカスタマイズできます。
アウトラインの項目を設定を調整することで、より高度なカスタマイズも可能です。 アウトラインは、対象となる各要素に対して1つの項目を生成します。
項目同士の間隔調整
アウトラインの各項目はブロック要素であるため、通常のブロック間隔設定を用いて、項目同士の間隔を調整できます。
#show outline.entry.where(
level: 1
): set block(above: 1.2em)
#outline()
= About ACME Corp.
== History
=== Origins
= Products
== ACME Tools

アウトライン項目の構築
項目の外観を完全に制御するために、outline.entry
を変更するshowルールも書けます。
ただし、アウトライン項目を適切に書式設定・インデントするための処理は非常に複雑であり、アウトライン項目自体が持つフィールドは「レベル」と「対象要素」の2つのみです。
そのため、必要な部分だけを組み合わせて項目を構築できるよう、さまざまな補助関数が提供されています。
アウトライン項目に対する既定のshowルールは次のようになっています1。:
#show outline.entry: it => link(
it.element.location(),
it.indented(it.prefix(), it.inner()),
)
-
indented
関数は、任意のプレフィックスと内部コンテンツを受け取り、適切なインデントを自動的に適用します。 これにより、異なる項目同士がきれいに揃い、長い見出しも正しく折り返されます。 -
prefix
関数は、要素の番号(存在する場合)を整形します。 また、特定の要素には補足語も付加します。 -
inner
関数は、要素のbody
とpage
number、およびそれらの間を埋めるフィラー(点線など)を組み合わせます。
これらの関数を個別に使うことで、アウトライン項目の書式を変更できます。 たとえば、フィラーやページ番号を完全に削除したい場合は、次のようなshowルールを書くことができます。
#show outline.entry: it => link(
it.element.location(),
// Keep just the body, dropping
// the fill and the page.
it.indented(it.prefix(), it.body()),
)
#outline()
= About ACME Corp.
== History

数式のアウトラインはこのルールの例外で、本文を持たないためインデント付きのレイアウトは使用しません。
引数引数引数は関数への入力値です。関数名の後に括弧で囲んで指定します。
title
アウトラインのタイトル。
auto
と設定するとtext languageに従ったタイトル名となります。none
と設定すると、タイトルなしとなります。- 独自のタイトルはコンテンツとして設定できます。
アウトライン自体はデフォルトでは見出しとして番号付けされません。
強制的に番号付けしたい場合は、show outline: set heading(numbering: "1.")
のようにshow-setルールを使います。
デフォルト値: auto
target
アウトラインにする要素の種類。
特定の種類の要素(画像や表など)のみを含む図表をアウトライン表示したい場合は、where
セレクターで目的の種類を指定できます。
詳細は見出し以外のアウトラインのセクションをご参照ください。
デフォルト値: heading
例を表示
#outline(
title: [List of Tables],
target: figure.where(kind: table),
)
#figure(
table(
columns: 4,
[t], [1], [2], [3],
[y], [0.3], [0.7], [0.5],
),
caption: [Experiment results],
)

depth
アウトラインに含める要素の最大レベル。
この引数がnone
の場合は、すべての要素が含まれます。
デフォルト値: none
例を表示
#set heading(numbering: "1.")
#outline(depth: 2)
= Yes
Top-level section.
== Still
Subsection.
=== Nope
Not included.

indent
どのようにアウトライン項目をインデントするか。
-
auto
: 入れ子になった項目の番号やプレフィックスを、親項目のタイトル位置に揃えてインデントします。 たとえば見出しの番号付けで項目が番号付きとしない設定をしている場合には、レベルに応じて単純に固定幅1.2em
のインデントを追加します。 -
相対長さ: ネストレベルごとに指定した長さ分だけインデントします。 具体例として
2em
と指定すると、最上位レベル(ネストなし)のインデントは0em
、第2レベル(1段階のネスト)のインデントは2em
、第3レベル(2段階のネスト)は4em
といった具合に設定されます。 -
関数: 関数を使ってさらに細かくカスタマイズできます。 関数はネストレベルが引数として渡され(最上位要素は0)、相対長さを返します。 たとえば
n => n * 2em
とすれば単に2em
を指定した場合と同じ結果となります。
デフォルト値: auto
例を表示
#set heading(numbering: "1.a.")
#outline(
title: [Contents (Automatic)],
indent: auto,
)
#outline(
title: [Contents (Length)],
indent: 2em,
)
= About ACME Corp.
== History
=== Origins
#lorem(10)
== Products
#lorem(10)

定義定義これらの関数や型には、関連する定義を持たせることができます。定義にアクセスするには、対象の関数や型の名前を指定した後に、ピリオド区切りで定義名を記述します。
entry
要素関数要素関数要素関数はset
ルールやshow
ルールでカスタマイズできます。
set
ルールやshow
ルールでカスタマイズできます。アウトライン内の項目。
show-setルールやshowルールをアウトライン項目に適用することで、アウトラインの見た目を柔軟にカスタマイズできます。 詳細はアウトラインのスタイルのセクションをご参照ください。
level
アウトライン項目のネストレベル。
最上位のネストレベルは1
から始まります。
element
fill
デフォルト値: repeat(body: [.], gap: 0.15em)
例を表示
#set outline.entry(fill: line(length: 100%))
#outline()
= A New Beginning

entry
の定義定義これらの関数や型には、関連する定義を持たせることができます。定義にアクセスするには、対象の関数や型の名前を指定した後に、ピリオド区切りで定義名を記述します。
indented
コンテキスト関数コンテキスト関数コンテキスト関数は、コンテキストが既知の場合にのみ使用できます。
インデント付きの項目レイアウトを作成するための補助関数。 プレフィックスと項目本文を、インデントを考慮して配置します。
親アウトラインのindent
がauto
の場合、レベルN
の項目の内部(inner)コンテンツは、レベルN + 1
の項目のプレフィックスに揃えられ、プレフィックスと内部コンテンツの間には最低でもgap
分のスペースが空けられます。
さらに、同じレベルのすべての項目のinner
コンテンツも整列されます。
アウトラインのインデントが固定値または関数に設定されている場合、プレフィックスはインデントされますが、内部コンテンツはアウトライン全体で整列されるのではなく、指定されたgap
分だけプレフィックスからオフセットされます。
prefix
prefix
は、レベルが1段低い項目のinner
コンテンツと揃うように配置されます。
デフォルトのshowルールではit.prefix()
ですが、自由にカスタマイズできます。
inner
項目のフォーマットされた内部コンテンツ。
デフォルトのshowルールではit.inner()
ですが、自由にカスタマイズできます。