我搜索了一下,没有找到类似的问题。我知道乳胶漆是解决方案之一,但似乎Babel
也可以做到
我的设置:Miktex 2.9和巴别塔 2015/08/03 3.9m和 比伯 2.1 这是 MWE
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[russian,greek,english]{babel}
\usepackage[natbib=true,
style=alphabetic,
isbn=true,
url=true,
citestyle=alphabetic,
defernumbers=false,
sorting=nyt,
bibencoding=utf8,
backend=biber,
language=auto,
autolang=other,]{biblatex}
\addbibresource{test.bib}
\begin{document}
Example one in Greek \textgreek{\cite{AlKarapan}},
example two in Russian
{ \otherlanguage{russian}текст на русском \cite{CypinIstorijaRPC} текст на русском} and example in English again.
\printbibliography
\end{document}
和测试文件如下:
@Book{AlKarapan,
author = {Καραπαναγοπούλου, Αλέξανδρος Κ.},
title = {Η Μεγάλη Σύνοδος της Ορθοδόξου Ανατολικής Εκκλησίας},
publisher = {auto-édition},
year = {\hbox{1990--1998}},
volumes = {6},
address = {Αθήνα},
hyphenation={greek},
langid={greek},
}
@Inbook{CypinIstorijaRPC,
author = {Владислав Цыпин},
title = {История Русской Церкви 1917--1997},
chapter = {VIII},
publisher = {Издательство Спасо-Преображенского Валаамского монастыря},
address = {Москва},
date = {1997},
urldate = {2010-10-25},
url = {http://old.pravoslavie.by/podpod.asp?id=135&Session=10},
langid={russian},
hyphenation={russian},
}
现在如果你运行 pdflatex--biber-pdflatex 你会看到
错误是:
Command \textKappa unavailable in encoding OT1. \endentry
等等...
如果您将主要语言设为俄语,那么您将在俄语双键输入中看到字母,但在希腊语双键输入中看不到。
解决方案如下:打开生成的 bbl 文件并找到 labelalpha
字段条目
\field{labelalpha}{Καρ98}
和
\field{labelalpha}{Цып97}
并添加适当的\otherlanguage
命令条目作为
\field{labelalpha}{\otherlanguage{greek}Καρ98}
和
\field{labelalpha}{\otherlanguage{russian}Цып97}
保存它并运行 pdflatex..错误消失,一切正常..
所以问题是,如何在不编辑 bbl 文件的情况下将其他语言调用添加到 labelalpha 条目中?biblatex 可以做到这一点吗?我认为这很自然,因为密钥是由 langid 生成的,\otherlanguage
或者一般来说labelalpha
, 的语言需要与langid
附言:我在设置英语、俄语、希腊语、格鲁吉亚语时都遇到了这个问题。无论将哪种语言设置为文档的主要语言...添加“其他语言”调用即可解决问题。示例已缩短以供演示。
已编辑:刚刚添加了图片,显示了在编辑.bbl
文件并添加“其他语言”调用后参考书目的样子
我认为language=auto
或类似选项需要应用于参考书目列表中的键
答案1
我们唯一忽略的language=auto
是,autolang=other
它们忽略了将label
参考书目中的 包装到foreignlanguage
或中otherlanguage
。使用以下定义可以轻松修复此问题
\DeclareFieldFormat{labelalpha}{%
\iffieldundef{langid}
{#1}
{\foreignlanguage{\thefield{langid}}{#1}}%
}
这与您对.bbl
文件所做的操作完全相同,但自动执行。当然,只有当该langid
字段存在时我们才能真正做到这一点,因此我们首先检查该字段。
平均能量损失
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Book{AlKarapan,
author = {Καραπαναγοπούλου, Αλέξανδρος Κ.},
title = {Η Μεγάλη Σύνοδος της Ορθοδόξου Ανατολικής Εκκλησίας},
publisher = {auto-édition},
date = {1990/1998},
volumes = {6},
address = {Αθήνα},
langid={greek},
}
@Inbook{CypinIstorijaRPC,
author = {Владислав Цыпин},
title = {История Русской Церкви 1917--1997},
chapter = {VIII},
publisher = {Издательство Спасо-Преображенского Валаамского монастыря},
address = {Москва},
date = {1997},
urldate = {2010-10-25},
url = {http://old.pravoslavie.by/podpod.asp?id=135&Session=10},
langid={russian},
}
\end{filecontents*}
\usepackage[russian,greek,english]{babel}
\usepackage[natbib=true,
style=alphabetic,
isbn=true,
url=true,
defernumbers=false,
sorting=nyt,
backend=biber,
language=auto,
autolang=other]{biblatex}
\DeclareFieldFormat{labelalpha}{%
\iffieldundef{langid}
{#1}
{\foreignlanguage{\thefield{langid}}{#1}}%
}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{AlKarapan,CypinIstorijaRPC,aksin}
\printbibliography
\end{document}
给出