大阪大学大学院医学系研究科 麻酔科集中治療医学講座

  • TOP
  • 麻酔学講座
  • 関連施設
  • 研究生・学生の方へ
  • 各種マニュアル
  • リンク集
  • 各種マニュアル
    大阪大学大学院医学系研究科 麻酔集中治療医学講座 TOP>各種マニュアル>LaTeXの解説II. レファレンスの書式設定について>BibTeXのドキュメント

    II-4. BibTeXのドキュメント

    ここの内容はCTAN/biblio/bibtex/distribs/docにあるbtxdoc, btxhakなどの BibTeXの解説を日本語にしたものです.
    対象となるBibTeXはVer 0.99以降です.現在使用されえているバージョンは0.99cだと思います. BibTeXのスタイルファイルは基本的にはBibTeXに出力フォーマットを示すための プログラムです.プログラム言語に名前は付けられていません.BibTeX用マクロ言語とでもいうべきもので,postfix stack languageです.

    II-4-1. BibTeXの文法

    bstファイルは逆ポーランド記法で記述されています.
    list 1

    label "a" * 'label :=        % label := label * "a"
    lab.width #1 + 'bab.width :=   % lab.width := lab.width + 1
    各コマンドの詳細は次節を参照して下さい.list 1の右にはbstファイルの各行を Pascalライクに書き直しています.
    1行目は以下のような意味になります.labelをスタックにプッシュし,続いて文字列"a"をスタックにプッシュします.*コマンドで2つをポップしてつなぎ,できた新しい文字列をスタックにプッシュします.'labelは変数名としてlabelをスタックにプッシュします. %以降はコメントです.
    2行目も同様な意味ですが,#1は数値定数としての1をスタックにプッシュすることを意味しています.#と1の間にスペースを入れてはいけません.

    II-4-2. BibTeXのコマンド

      BibTeXには2種類のコマンド系があります.ひとつはbuilt-inコマンドであり, もうひとつはMACROまたはFUNCTIONコマンドです.

    II-4-2-1. BibTeXのスタイルコマンド

    BibTeXには5種類の宣言用コマンド(ENTRY, FUNCTION, INTEGERS,MACRO, STRINGS) と1種類のデータ入力用コマンド(READ),4種の入出力操作用コマンド(EXECUTE, ITERATE, REVERSE, SORT)があります.これらはすべて大文字である必要があります. 小文字の場合は無視されます.
    コマンド行の間には最低1行の空行を入れて下さい.また各々の文は{}で括って下さい.
    1. ENTRY : フィールドの定義を宣言するコマンド.なおBibTeXは自動的に crossref, sort.key$を定義する.sort.key$はSORTコマンドで使用される. crossrefはクロスレファレンス作成のために使用される.
    2. EXECUTE : 一つの関数を実行する.引数としてひとつの関数名を持つ.
    3. FUNCTION : 新しい関数を定義する.関数名と関数の定義という2つの引数を持つ.再帰定義は許されていない.
    4. INTEGERS : 大域数値変数を宣言する.引数としてひとつの変数名を持つ. entry.max$とglobal.max$の2つは文字変数の長さを制限するために自動的に宣言 される.このコマンドはいくつでも使用できるが,変数は使用する前に宣言しておく必要がある.
    5. ITERATE : 一つのコマンドをエントリーリストそれぞれに対して1回ずつ実行する.
    6. MARCO : 文字列マクロを定義する.マクロ名とその定義の2つの引数をとる. これらはダブルクォーテイション("")で区切る必要がある.
    7. READ : データベースファイルから各フィールドデータを読み込む. エントリーがないフィールドにはmissingのマークが付けられる.
    8. REVERSE : ITERATEと同様のコマンドだがエントリーリストを操作する順が逆である.
    9. SORT : エントリーリストをsort.key$をキーとしてソートする.
    10. STRINGS : 大域文字変数を宣言する.引数としてひとつの変数名を持つ.

    II-4-2-2. BibTeXのビルトインコマンド

    BibTeXには37のビルトインコマンドがあります.ビルトインコマンドは最後に'$'が付けられています.
    リテラルはスタック上の要素を指し,これは,数値,文字列,関数名もしくは missing fieldに付けられる特別な値のいずれかを指します.
    1. >スタックトップの2つの数値をポップして比較し大きければ1を,そうでなければ0をプッシュする.
    2. <スタックトップの2つの数値をポップして比較し小さければ1を,そうでなければ0をプッシュする.
    3. = スタックトップの2つの数値をポップして比較し等しければ1を,そうでなければ0をプッシュする.
    4. + スタックトップの2つの数値をポップしてその和をプッシュする.
    5. - スタックトップの2つの数値をポップしてその差をプッシュする.
    6. * スタックトップの2つの文字列をポップして結合しプッシュする.
    7. := スタックトップから2つの変数をポップし先の変数に後の変数を代入する.
    8. add.period$ スタックトップの文字列をポップし,最後の'}'でない文字が '.'や'?'や'!'でなければ'.'を付けてスタックにプッシュする.
    9. call.type$ エントリータイプの名前を持つ関数を実行する. 例えばエントリータイプがbookならbook関数を実行する. もしもタイプが不明の場合にはdafault.typeの関数が実行さ れる.
      このように各々のエントリータイプおよびdefault.typeの コマンドはREADコマンドよりも前に定義すべきである.
    10. change.case$ スタックトップの2つのリテラルをポップし1番目の指定に従って2番目リテラルの先頭文字の大文字小文字の変換を行う.  第1リテラルが't'なら第2リテラルの2文字目以降をすべて小文字とし,先頭の文字は':'やnonnull white spaceに続いて いなければそのままにしておかれる.
       第1リテラルが'l'なら第2リテラルはすべて小文字に変換される.
       第1リテラルが'u'なら第2リテラルはすべて大文字に変換される.
    11. chr.to.int$ スタックトップのリテラルをポップし,それが1文字であると確認されたらASCIIコードとしてスタックにプッシュする.
    12. cite$ このエントリーに対する\citeコマンドの引数の文字列をスタックにプッシュする.
    13. duplicate$ スタックトップのリテラルをポップしコピー2つをプッシュする.
    14. empty$ スタックトップをポップしそれがmissing fieldもしくはスペース以外の文字を持たない場合には1をプッシュし,そうでないなら0をプッシュする.
    15. format.name$ スタックトップから3コのリテラル (文字列,数値,文字列)をポップする.最後の文字列はnameリスト を示し,数値はどの名前をリストから取り出すかを示し,最初の文字列はどのようにnameをフォーマットするかを示す.最終的にはこのコマンドはフォーマットされたnameをスタックにプッシュする.
    16. if$ スタックトップから3コのリテラル (2コの関数リテラルと1コの数値リテラル)をポップする. 数値リテラルが0より大きければ2番目のリテラルで示される関数を を実行し,そうでなければ1番目のリテラルで示される関数を実行する.
    17. int.to.chr$ スタックトップのリテラルをポップし,その値に相当するASCII1文字をスタックにプッシュする.
    18. int.to.str$ スタックトップのリテラルをポップし,その値を10進数の文字列に変換してスタックにプッシュする.
    19. missing$ スタックトップのリテラルをポップし,もしもmissingフィールドなら1をプッシュし,そうでないなら0をプッシュする.
    20. newline$ bblファイルにアウトプットバッファの内容を書き出す. 通常はwrite$コマンドが適正にline breakingを行うので,明示的にblank lineが 必要な時のみこのコマンドを使用すべきである.
    21. num.name$ スタックトップの文字列リテラルをポップし,そこに含まれる名前の 数をプッシュする.名前は"and"で区切られている.
    22. pop$ スタックトップのリテラルをポップするが,出力はしない.
    23. preamble$ @PREAMBLEコマンドによって作られた文字列をすべてまとめてスタック にプッシュする.
    24. purify$ スタックトップの文字列リテラルをポップし,アルファベット以外の 文字を取り除きスタックにプッシュする.ただしwhite-space, hyphen, tieは除かれない.
    25. quote$ "をプッシュする.
    26. skip$ no-opです.
    27. stack$ スタックトップをポップしその内容を書き出す.
    28. substring$ スタックトップから3コのリテラル (2コの数値len, startと文字列)をポップし,その部分文字列をスタックにプッシュする.
    29. swap$ スタックトップの2コのリテラルを入れ換える.
    30. text.length$ スタックトップの文字列リテラルをポップし,含まれる文字数を プッシュする.
    31. text.prefix$ スタックトップから2コのリテラル(数値lenと文字列)をポップ しlenの長さだけの部分文字列をスタックにプッシュする.text.length$に似るが, このコマンドでは"special character"は考慮されない点が異なる.
    32. top$ スタックトップをポップしターミナルとログファイルに出力する.
    33. type$ 現在のエントリータイプ(book, articleなど)をプッシュする. nuknownもしくはundefinedタイプの場合にはnullをプッシュする.
    34. warning$ スタックトップの文字列をポップしwarningメッセージを書き出す.
    35. while$ スタックトップの2コの関数リテラルをポップし,1番目のリテラル が0より大きい間,2番目の関数を実行する.
    36. width$ スタックトップの文字列をポップし,relative unitで決められる幅を スタックにプッシュする.ラベル文字列の長さの比較に用いられる.
    37. write$ スタックトップの文字列をポップし,アウトプットバッファに書き出す. バッファが満たされた場合にはbblファイルに書き出される.

    非常に簡単にコマンド解説だけを日本語にしました.詳細については原文 (btxdoc, btxhak)を参照して下さい.これらの他jBibTeX にはis.kanji.str$というスタックトップの文字列をチェックし日本語なら1をそうでなければ0をスタックにプッシュするコマンドが付加されています.
    御意見やお問い合わせがありましたらhagihira@anes.med.osaka-u.ac.jp (萩平 哲)までメールをお願いします.
    最終改定 1997.05.24 (Ver1.04)