LaTeX と BibTeX 間のインターフェースとは何ですか?

LaTeX と BibTeX 間のインターフェースとは何ですか?

LaTeX と BibTeX 間の「プロトコル」とは正確には何でしょうか?

つまり、、、を実行した場合latex foo、情報は LaTeX から BibTeX へ、bibtex fooまたlatex fooその逆にどのように流れるのでしょうか?


私の現在の推測データフローは次のようになります。

  1. LaTeX はファイルを生成しますfoo.aux
  2. BibTeX はファイル を読み取ります。 、、foo.auxの形式の行のみに注目します。\citation{...}\bibstyle{...}\bibdata{...}
  3. BibTeX はファイルを生成しますfoo.bbl
  4. 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.bblbibliography

このワークフローには多くの追加が可能です。例えば、プリアンブルで使用する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

関連情報