LaTeX と BibTeX 間の「プロトコル」とは正確には何でしょうか?
つまり、、、を実行した場合latex foo
、情報は LaTeX から BibTeX へ、bibtex foo
またlatex foo
その逆にどのように流れるのでしょうか?
私の現在の推測データフローは次のようになります。
- LaTeX はファイルを生成します
foo.aux
。 - BibTeX はファイル を読み取ります。 、、
foo.aux
の形式の行のみに注目します。\citation{...}
\bibstyle{...}
\bibdata{...}
- BibTeX はファイルを生成します
foo.bbl
。 - LaTeX が が存在することを認識すると
foo.bbl
、\bibliography
コマンドは のように動作します\input{foo.bbl}
。
これは正確ですか、それとももっと意味がありますか? たとえば、\citation{...}
テキストは常に 1 行ですか?
プロトコルに何らかの影響を与える、よく使用されるドキュメント クラスやパッケージはありますか?biblatex
状況は明らかに異なりますが、注意すべきそれほど明白ではないことはありますか?
背景: BibTeX の代替として使用できるスクリプトを書くことに興味があります (LaTeX 側では何も変わりませんが、ファイルの生成がfoo.bbl
異なります)。
答え1
あなたの推測は、アプローチが少し変わるという事実を含めて、多かれ少なかれ正しいです(他のパッケージもそれを変更しますが、同じ程度ではありません)。複数の参考文献などを必要としない、biblatex
単一のファイルの最も単純なケースを取り上げます。.tex
\bibliographystyle
\bibstyle{...}
ファイルに行を書き込む.aux
。これはプリアンブルで指定できる。\bibliography
\bibdata{...}
行をファイルに書き込み.aux
、.bbl
ファイルが利用可能な場合はそのファイルも入力します。\cite
\citation{...}
ファイルに1行書き込み.aux
、LaTeX文書に引用も作成します。\nocite
\citations{...}
ファイルに1 行書き込みます.aux
が、LaTeX ドキュメントでは何も行いません。
BibTeX はファイルを読み取るときに、1行と 1行、および複数行.aux
を探します。その後、ファイルに書き込みますが、そこに何が含まれるかはファイル内の指示によって異なります。通常の慣例では、ファイルにはフォーマットされた引用を保持する環境のみが含まれますが、常にそうであるとは限りません。\bibstyle
\bibdata
\citation
.bbl
.bst
.bbl
bibliography
このワークフローには多くの追加が可能です。例えば、プリアンブルで使用するbiblatex
定義は、\bibliography
ない印刷用データを含むファイルを直接操作します.bbl
。複数の.aux
ファイルを使用してファイル セットを作成することで、複数の参考文献を作成できます.bbl
。参考文献の XML バージョンがファイル内に LaTeX の「コメント」として書き込まれる実装も見たことがあります。これらのアプローチでは、BibTeX がファイル内で同じコマンドを検索してファイルを書き込む.bbl
という意味で、同じ基礎インターフェイスが使用されています。.aux
.bbl
を例にとるとmultibib
、LaTeX側では、新しい参考文献の種類ごとに一連のコマンドが定義されます。たとえば、
\newcites{sec}{Secondary Literature}
新しい引用コマンドを作成する
\citesec{...}
これらの新しいコマンドはメインファイルとは別のファイルに書き込む.aux
ため、BibTeXを2回実行する必要があります。1回はファイルに対して、\jobname.aux
もう1回はファイルに対してですsec.aux
。これにより、二 .bbl
ファイル、\jobname.bbl
およびは、およびsec.bbl
によって通常どおり読み取られます。\bibliography
\bibliographysec
。したがって、全体的なプロセスは標準の場合とほとんど変わりませんが、関係するファイルが増えるだけです。
答え2
multibib
はい、デフォルトでは1つのauxファイルです。しかし、またはchapterbib
または...を使用して、2つ以上のauxファイルが存在する可能性がありますmultibib
。メインのauxファイルとユーザーが定義したファイルを実行する必要があります。これには拡張子.auxが付いています。chapterbib
。 では、章ごとに 1 つの aux ファイルがあります。どちらの場合も簡単に処理できます。bibtex *.aux
パッケージの場合も同様ですbibunits
。