我可以在 .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

biblatex區分兩個語言領域: (1)language和 (2) langid。根據biblatex文件,p。 20、

[此language欄位包含]作品的語言。語言可以按字面指定或作為本地化鍵指定。如果使用本地化鍵,lang則可以省略前綴。

上頁。 25 我們有

[ langid] 參考書目條目的語言 ID。 [...] 識別碼必須是babel/polyglossia包已知的語言名稱。這些資訊可用於切換連字模式並本地化參考書目中的字串。請注意,語言名稱區分大小寫。

因此,該language字段是在參考書目中作為作品語言打印的內容,而langid在內部用於 的biblatex語言切換行為(它可以用於切換參考書目中的連字符,因此單詞可以正確連字符,否則可能會改變以及與語言相關的字串;這由選項控制autolang)。請注意language,如果此處給出的語言與文件的主要語言一致,則預設不會列印該資訊;這是由clearlang選項 和控制的\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},
}

對於遵循新的正字法規則 ( is )的德語文本 ( languageis germanlanggerman也可以) 。langidngerman


langid欄位只能使用babel/已知的語言標識符polyglossia,但根據上面 PLK 的評論,Biber 也可以處理 BCP47 語言代碼並將它們對應到各自的對應項。事實上 Biber 會很樂意接受諸如 之類的無意義輸入langid = {flobbel},但這會導致問題,babel或者polyglossia如果您使用語言包以外的任何內容autolang=none並且語言包嘗試加載未知語言flobbel


language欄位接受任何輸入,但biblatex已知的語言標識符會被區別對待,它們會被翻譯。更準確地說,這適用於目前使用的.lbx文件中定義的語言lang<language>,您可以將它們指定為<language>lang<language>。如果 中未定義書目字串,則按原樣列印.lbx該欄位的內容。languageenglish.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}]
    }
  }
}

相關內容