Bibtex での「タイトルケース」の実装

Bibtex での「タイトルケース」の実装

bibtexでは「タイトルケース」はどのように定義されていますか?単語のリストは何ですか?ない大文字にするには、どのファイルで定義されていますか? 変更することは可能ですか? ファイルを確認しましたが、定義が見つからない.bst関数に委任されているようです。change.case

答え1

私の知る限り、BibTeX(および他のbiblatex)スタイルには、「タイトルケースに変換する」マクロ/関数を実装したものはありません(少し前に、これをどうやって実現するかという質問がありましたbiblatex答えは、Biber でこのようなマクロを開始する方法を示していますbiblatex

ただし、タイトルを文頭大文字 (最初の単語の最初の文字を大文字、残りを小文字) に変換する関数があります。この機能が使用されるかどうかは、スタイルによって異なります。スタイルで文頭大文字を適用する場合は、おそらくファイル内に次のような行が見つかり.bstますtitle "t" change.case$

したがって、ルールとしては、ファイル内のタイトルをタイトルケースで指定し.bib、必要に応じて参考文献スタイルでセンテンスケースに変換するということになります (cf.書誌データベースにタイトルを保存するときに使用する適切な大文字と小文字は何ですか?)。

一般的に、.bibファイル内のタイトルは常にタイトルケースで表記する必要があり、常に大文字で表記する必要がある特定の方法(名前、頭字語、数式など)で使用されているものは、中括弧で囲みます{}

title = {From {Brouwer} to {Hilbert}: {The} Debate on the Foundations of Mathematics in the 1920s}
title = {{NASA} Ends Unmanned Launchings in {Florida}}

参照BibTeX は .bbl ファイルを作成するときに大文字が失われます、 特にアレクシスの答え

答え2

組み込み関数change.case$はソース(texk/bibtex-x/bibtex-4.cTeX Live 内)で説明されています。

* The |built_in| function change.case$ pops the top two (string)
* literals; it changes the case of the second according to the
* specifications of the first, as follows.  (Note: The word `letters' in
* the next sentence refers only to those at brace-level~0, the top-most
* brace level; no other characters are changed, except perhaps for
* special characters, described shortly.)  If the first literal is the
* string t, it converts to lower case all letters except the very
* first character in the string, which it leaves alone, and except the
* first character following any |colon| and then nonnull |white_space|,
* which it also leaves alone; if it's the string l, it converts all
* letters to lower case; if it's the string u, it converts all
* letters to upper case; and if it's anything else, it complains and
* does no conversion.  It then pushes this resulting string.  If either
* type is incorrect, it complains and pushes the null string; however,
* if both types are correct but the specification string (i.e., the
* first string) isn't one of the legal ones, it merely pushes the second
* back onto the stack, after complaining.  (Another note: It ignores
* case differences in the specification string; for example, the strings
* t and T are equivalent for the purposes of this |built_in|
* function.)

複雑でほとんど理解できませんでしたが、実際には、「.」、「!」、または「?」などの句読点の後でも、文字はデフォルトで小文字に変換されるということを覚えておく必要があると思います...「:」(コロン)の後を除いて。確かに、

title = {Test! Test? Test: Test. Test, Test}

.bib ファイルでは次のようになります:

\newblock Test! test? test: Test. test, test.

この唯一の例外は、むしろ奇妙で予想外のものです。

答え3

カスタム .bst ファイルを作成する場合は、次の方法で実行できます。ドキュメントには次の行が必要です。

\usepackage{titlecaps}
\Addlcwords{the of into}

ここで、はマクロを含むパッケージ\usepackageを使用します。マクロは、小文字のままにして大文字にしない単語のリストを提供します。titlecaps\titlecap\Addlcwords

ファイルに.bst新しいマクロを追加する必要があります:

FUNCTION {titlecap}
{ duplicate$ empty$
    { pop$ "" }
    { "\titlecap{" swap$ * "}" * }
  if$
}

残っているのは、書式設定するさまざまなドキュメント スタイルにそれを使用することだけです。たとえば、スタイル内の行には次のような内容が記述されている可能性があります。

title ". " * output

これはタイトルを印刷し、ピリオドを連結して結果を出力します。これを次のように編集します。

title titlecap ". " * output

これは、まずtitlecapマクロを に適用しtitle、その後ピリオドを連結して結果を出力します。\titlecapマクロ内で を呼び出すと、除外リストにある単語を除いて、各単語の最初の文字が大文字になります。パッケージのドキュメントを参照してください。http://ctan.org/pkg/titlecaps

関連情報