Typst:文献リストを直書きするやつ
全項目importの形でパッケージを読み込む。
#import "@local/bxbibwrite:0.2.1": *
その直後に以下のshow ruleを設定する。
#show: use-bib-item-ref
文献リストはbibliography-list
関数で出力できる。
#bibliography-list[
#bib-item(«ラベル1»)[«文献1»]
#bib-item(«ラベル2»)[«文献2»]
//...以下同様
]
ここで«文献n»
には“実際に出力したいテキスト”を通常のTypstのマークアップで記述する。«ラベルn»
には当該の文献項目に紐づけるラベル(label値)を指定する。
#bibliography-list[
#bib-item(<great>)[なんかすごい論文, 2000.]
]
文書中で文献参照番号(“[1]”等)を出力したい場合は、Typstの本来の文献リスト(bibliography()
関数)での参照と同様に、文献に紐づくラベルに対する参照(ref
関数)を記述する。
すごい論文 @great によると、……
※@great
は単純に文献番号“[1]”を出力するだけで、その前後について何か“和文用の調整”をするわけではない。もし欧文空白を入れたくないなら、何か工夫をする必要がある(一般の@...
記法の使用と同様)。
// 後ろになにも出力しない要素 #[] を挿入する.
すごい論文@great#[]によると、……
// #ref(<great>) や #[@great] でもよい
Typst本来の文献リスト項目への参照と同様に、supplementの引数は“補足説明”として“[1, 説明]”のような形式で出力される。
すごい本@great-book[3章]によると、……
// "[1, 3章]"と出力される
-
use-bib-item-ref(«本体»)
(function): 文書中で文献参照が正常に機能するようにする。つまり、本パッケージの文献参照の機能を利用したいならば以下のshow ruleを設定する必要がある。#show: use-bib-item-ref // 文献番号の書式を変えたいなら次のようにする #show: use-bib-item-ref.with(numbering: "(1)")
«本体»
(content): 適用対象となる内容。前述のshow ruleの形で呼び出す場合は“以降の文章全部”となる。
オプション引数:
numbering
(str | function; 既定値"[1]"
): 文献番号の書式。Typstのカウンタ書式と類似のパターン文字列または関数を指定する(詳細は後述)。
-
bibliography-list(«本体»)
(function): 文献リストを出力する。
※1つの文書内で複数回使用できる。«本体»
(content): 文献リストの内容。
オプション引数:
title
(str | content; 既定値"Bibliography"
): 文献リストの節見出しの内容。heading-level
(int | none; 既定値1
): 節見出しの見出しレベル。noneを設定すると節見出しが出力されなくなる。numbering
(str | function | auto; 既定値auto
): 文献リスト中の文献番号の書式。パターン文字列または関数で指定する。autoを指定すると、use-bib-item-ref
で指定した書式と同じになる。
※文献番号の書式を本文中の参照と文献リスト内で異なるものにしたい場合にこの引数を利用する。key-width
(length | auto; 既定値auto
): 文献番号部分に確保される横幅。autoを指定すると、実際に出力した文献番号の横幅の最大値になる。spacing
(length | auto; 既定値auto
): 文献項目の間の垂直空き。autoを設定すると、Typst本来の文献リストに合わせる。body-indent
(length; 既定値0.65em
): 文献番号部分と本体の間の水平空き。
-
bib-item([«ラベル», ] «本体»)
(function): 文献リストの項目を出力する。bibliography-list
の«本体»
中でのみ使用できる。
※それ以外の場所で使用した場合の仕様は未定義である。逆に、bibliography-list
の«本体»
中でbib-item
以外のテキストを記述することは許容される。«ラベル»
(label | none; 既定値none
): 文献項目に紐づくラベルを指定する。noneを指定した場合、項目は出力されるがそれを参照することはできない。
※記述の便宜のため位置引数であるが省略可能にしている。«本体»
(content): 文献項目の内容。要するにenum
の本体と同じ扱いで、記述したものがそのまま出力される。
オプション引数:
key
(str | content | none; 既定値none
): 文献番号を指定する。noneを指定した場合は自動採番される。
※“文献番号”を番号ではなく“[Knu20]”の類の形式にしたい場合はこの引数を用いる。
use-bib-item-ref
とbibliography-list
の両関数のnumbering
引数には文献番号書式を指定する。これはTypstのカウンタ書式(numbering
関数の第1引数)と同様にパターン文字列(pattern string)か関数かの何れかの値を指定できるが、カウンタ書式のものとは仕様が少し異なる。
文献番号のカウンタ値は常に単一値となるため、パターン文字列中のカウンタ記号(counting symbol)は最初に出現したもののみが有効になり、それ以降の文字列は全て接尾辞と見なされる。例えばパターンが(A/a)
でありカウンタ値が4の場合の出力は“(D/a)”となる。
また、bib-item
関数のkey
引数で文献番号を直接指定した場合は、カウンタ記号の部分がkey
の値で置き換えられる。先の(A/a)
の例で、key
に"Foo"
を指定した場合の出力は“(Foo/a)”となる。
参照(ref
関数)でsupplement引数が指定された場合は、“カウンタ記号の置換部分”にその内容が追記される。例えばsupplementに"Sup"
を指定すると、出力は“(D, Sup/a)”や“(Foo, Sup/a)”のようになる。
※現状では“, ”の部分は固定である。
文献番号書式として関数を指定することもできる。この場合、関数は以下の仕様に従う必要がある。
- 第1引数には“番号の本体部分”が渡される。これは
key
引数を指定した場合はその値(strまたはcontent)、指定しない場合はカウンタ値(int)である。 - 第2引数にはsupplement引数(str、content、noneの何れか)が渡される。supplement引数が指定されない場合はnoneになる。
- 関数が返すべき値は文献番号の表現(strまたはcontent)である。
文献に対する参照(ref
関数)の挙動は本来のTypstの文献リストの項目に対するものと可能な限り合わせているが、以下のような相違点がある。
- Typst本来の文献項目の参照は
cite
関数でも行えるが、本パッケージの文献項目の参照にはref
関数(またはその簡易記法の@ラベル名
)で行う必要がある。 - Typst本来の文献項目の参照を
ref
で行った場合、ref
とcite
の両方の設定(show ruleなど)が適用される。本パッケージの文献項目の参照にはref
の設定のみが適用される。 - Typst本来の文献項目の参照を複数並べた場合(
@ref1 @ref2
など)は間に自動的に“, ”が挿入される。本パッケージの文献項目の参照にはこの機能はない。