我正在使用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
文档,第 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},
}
对于遵循新正字法规则的德语文本(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>
。如果 bibstring 未在中定义.lbx
,则字段的内容language
将按原样打印。english.lbx
您可以在此处查看支持的语言,荷兰语列表在此处)。您可以为语言标识符指定前缀lang
或不指定前缀,langgreek
结果greek
相同。如果您使用
language = {english},
在荷兰语文档中,您会得到输出“Engels”,如果文档语言是英语,我们会得到“English”。
该字符串en
不在可识别的语言标识符列表中,因此按原样打印。
langid
你可以使用 sourcemap来模拟 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}]
}
}
}