%20%D0%B2%20%D0%BC%D0%BE%D0%B5%D0%BC%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%20.bib%3F.png)
Я использую BiblaTeX
и у меня возник вопрос: поскольку я вижу, что почти во всех типах источников в моем .bib
файле я могу использовать запись language
.
Однако все, что я вставляю в них, литературно отображается в моих ссылках. Так что не могу ли я, например, также использовать ISO-639-1 или другойИСО-код?
Например:
@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
] Идентификатор языка библиографической записи. [...] Идентификатор должен быть названием языка, известным пакетам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
is 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
\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}]
}
}
}