.bib ファイルで短縮された「言語」エントリ (言語コード) を使用できますか?

.bib ファイルで短縮された「言語」エントリ (言語コード) を使用できますか?

を使用していますBiblaTeXが、質問があります。.bibファイル内のほぼすべての種類のソースで、エントリを使用できますlanguage

しかし、私がそこに入力したものはすべて、私の参考文献に文学的に表示されています。したがって、例えばISO-639-1または別のものも使用できないでしょうか?ISOコード?

例えば:

@online{SOTexBibLangIso,
    author = {Stackoverflow Tex Community},
    title = {Can I use a shortened "language" entry (language code) in my .bib file?},
    url = {https://tex.stackexchange.com/questions/294703/can-i-use-a-shortened-language-entry-language-code-in-my-bib-file},
    language = {en},
    urldate = {2016-02-18},
}

答え1

biblatexlanguageは、(1)と(2)の2つの言語分野を区別しているlangidbiblatexドキュメンテーション、20ページ、

[このlanguageフィールドには] 作品の言語が格納されます。言語は、文字どおりに指定することも、ローカリゼーション キーとして指定することもできます。ローカリゼーション キーを使用する場合は、プレフィックスをlang省略できます。

25ページには

[ langid] 書誌エントリの言語 ID。[...] 識別子は、babel/polyglossiaパッケージに認識されている言語名である必要があります。この情報は、ハイフネーション パターンを切り替えたり、書誌内の文字列をローカライズしたりするために使用される場合があります。言語名は大文字と小文字が区別されることに注意してください。

したがって、languageフィールドは作品の言語として参考文献に印刷されるものであり、は の言語切り替え動作langidのために内部的に使用されます(これを使用して参考文献のハイフネーションを切り替えることができるため、単語は適切にハイフネーションされます。また、言語に依存する文字列も変更される可能性があります。これはオプションで制御されます)。デフォルトでは、そこに指定された言語がドキュメントのメイン言語と一致する場合、情報は印刷されないことに注意してください。これはオプションとで制御されます。biblatexautolanglanguageclearlang\DeclareRedundantLanguages

例えば、

@online{elk,
  author   = {Anne Elk},
  title    = {Über die Anatomie der Donnerechse},
  url      = {http://www.example.edu/~elk/bronto.pdf},
  date     = {2016-01-01},
  language = {german},
  langid   = {ngerman},
}

ドイツ語のテキストの場合は (languagegermanlanggermanも OK です)、新しい正書法の規則に従います (langidngerman)。


フィールドは/langidに認識されている言語識別子でのみ機能しますが、上記の PLK のコメントによると、Biber は BCP47 言語コードも処理でき、それぞれの対応するコードにマッピングできます。実際、Biber は などの意味のない入力を問題なく受け入れますが、以外のものを使用すると または で問題が発生し、言語パッケージは不明な言語 を読み込もうとします。babelpolyglossialangid = {flobbel}babelpolyglossiaautolang=noneflobbel


フィールドlanguageは任意の入力を受け入れますが、 がbiblatex認識している言語識別子は異なる方法で処理され、翻訳されます。もう少し正確に言うと、これは現在使用されている.lbxファイルで として定義されている言語に対して機能し、またはlang<language>として指定できます。 bibstring が で定義されていない場合、フィールドの内容はそのまま印刷されます。<language>lang<language>.lbxlanguageサポートされている言語はenglish.lbxここで確認できますオランダ語のリストはこちら)。言語識別子は接頭辞を付けてもlang付けなくてlanggreekgreek同じ結果が得られます。

language = {english},

オランダ語の文書では、出力は「Engels」となり、文書の言語が英語の場合は「English」となります。

文字列はen認識された言語識別子のリストにないため、そのまま印刷されます。

langidソースマップを使用して、Biberがフィールドで行っていることをエミュレートできます。

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=language,
            match=\regexp{\Aen\Z},
            replace=\regexp{english}]
      \step[fieldsource=language,
            match=\regexp{\Ade\Z},
            replace=\regexp{german}]
    }
  }
}

関連情報