Biblatex 警告未引用的片段中不支持的语言

Biblatex 警告未引用的片段中不支持的语言

我有一份英文文档biblatex,需要添加另一种语言的摘要,该语言支持babel但不支持biblatex。我认为这不会成为问题,因为摘要不包含任何引文,但当我更改语言时,我仍然收到警告。我该如何解决这个问题?

language=english附言:当我将 传递给时也会发生这种情况biblatex,但无论如何我不想这样做,因为我确实有一些非英语书目条目,其语言受 支持biblatex

一个工作示例

\documentclass{article}

\usepackage[english]{babel}
% Not including 'csquotes' fires an unrelated warning.
\usepackage{csquotes}
\usepackage{biblatex}

\begin{filecontents}{bibliography.bib}
@misc{SampleEntry,
  author = {Author, Sample},
  title = {Sample Title}
}
\end{filecontents}
\addbibresource{bibliography.bib}

\begin{document}

\selectlanguage{esperanto}
Saluton!
\selectlanguage{english}

Let us cite \cite{SampleEntry}.

\printbibliography
\end{document}

警告

包 biblatex 警告:不支持语言‘世界语’。

LaTeX 警告:存在未定义的引用。

包 biblatex 警告:请重新运行 LaTeX。

答案1

biblatex的语言支持实现方式是

  • 要求事先“了解”所有使用的语言(babel这意味着,您将要使用的所有语言都需要作为选项宣布babel),
  • 尝试加载biblatex所有已公布语言的本地化版本,即使您的文档中该语言排版部分没有引文/参考书目。

这意味着,一旦您读取文档,编译时就会出现更少的警告

\documentclass{article}
\usepackage[esperanto, english]{babel}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}

\selectlanguage{esperanto}
Saluton!
\selectlanguage{english}
Let us cite \cite{sigfridsson}.

\printbibliography
\end{document}

您仍然会收到一条警告,指出esperanto不受支持biblatex,因为biblatex没有esperanto.lbx

您可以选择忽略此警告,或者您可能需要研究编写合适的esperanto.lbx(参见配置 biblatex 以用于不受支持的语言的最合适方法是什么?)。

有一些方法可以“消除”这个警告,但我不建议这样做,因为如果您真的想要世界语引用/参考书目条目,那么消除警告可能会给您带来麻烦。

古斯布斯建议一个简单的方法让biblatex闭嘴在评论中:将世界语映射为英语

\DeclareLanguageMapping{esperanto}{english}

或者您可以发出

\makeatletter
\protected\def\blx@langsetup#1{%
  \blx@lbxinput{#1}
    {\edef\blx@languagename{#1}}
    {}}
\makeatother

在序言中删除生成相关警告的代码。


如果您不传递选项并在稍后使用则babel不会出错,但结果可能会有点偏差。esperanto\selectlanguage{esperanto}

\documentclass{article}
\usepackage[english]{babel}

\begin{document}
\selectlanguage{esperanto}
\tableofcontents
\section{Foo}
Saluton!
\selectlanguage{english}
\tableofcontents
\section{Bar}
Lorem
\end{document}

给出

? 内容名称 ?

以及警告

Package babel Warning: \contentsname not set for 'esperanto'. Please,
(babel)                define it after the language has been loaded
(babel)                (typically in the preamble) with:
(babel)                \setlocalecaption{esperanto}{contents}{..}
(babel)                Reported on input line 6.

\documentclass{article}
\usepackage[esperanto, english]{babel}

\begin{document}
\selectlanguage{esperanto}
\tableofcontents
\section{Foo}
Saluton!
\selectlanguage{english}
\tableofcontents
\section{Bar}
Lorem
\end{document}

我明白了

恩哈沃

我无法告诉您其他更重要的功能(例如连字符)是否在两种设置中都有效,但这种行为似乎向我表明,至少目前,您仍应将所有语言宣布为babel包/类选项。

相关内容