使用 biber 和 babel 在 biblatex 中的多语言书目中使用 alphalabel

使用 biber 和 babel 在 biblatex 中的多语言书目中使用 alphalabel

我搜索了一下,没有找到类似的问题。我知道乳胶漆是解决方案之一,但似乎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}

给出

在此处输入图片描述

相关内容