
我正在使用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 )的德語文本 ( language
is german
,langgerman
也可以) 。langid
ngerman
該langid
欄位只能使用babel
/已知的語言標識符polyglossia
,但根據上面 PLK 的評論,Biber 也可以處理 BCP47 語言代碼並將它們對應到各自的對應項。事實上 Biber 會很樂意接受諸如 之類的無意義輸入langid = {flobbel}
,但這會導致問題,babel
或者polyglossia
如果您使用語言包以外的任何內容autolang=none
並且語言包嘗試加載未知語言flobbel
。
該language
欄位接受任何輸入,但biblatex
已知的語言標識符會被區別對待,它們會被翻譯。更準確地說,這適用於目前使用的.lbx
文件中定義的語言lang<language>
,您可以將它們指定為<language>
或lang<language>
。如果 中未定義書目字串,則按原樣列印.lbx
該欄位的內容。language
english.lbx
您可以在這裡查看支援的語言,對於荷蘭語,清單在這裡)。您可以使用前綴lang
或不使用前綴來指定語言標識符,langgreek
並greek
產生相同的結果。如果你使用
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}]
}
}
}