根据 Babel 语言设置,我收到 BibLaTeX 错误“\language@active@arg 的参数”有一个额外的}。

根据 Babel 语言设置,我收到 BibLaTeX 错误“\language@active@arg 的参数”有一个额外的}。

我将问题简化为以下最小工作示例(MWE):

\begin{filecontents}{library.bib}
  @misc {test1,
    author = {Author},
    note = {{This note is "bad"}},
    }
\end{filecontents}

\documentclass[12pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\usepackage[ngerman, english]{babel}
%\usepackage[english, ngerman]{babel}

\usepackage[backend=biber]{biblatex}
\addbibresource{library.bib}

\begin{document}
\cite{test1}
\printbibliography[]
\end{document}

上面的代码运行正常。但是,如果我使用 更改主语言,\usepackage[english, ngerman]{babel}则会收到以下错误:

! Argument of \language@active@arg" has an extra }.
  • 理想情况下,我正在寻找一种不涉及更改文件的解决方案.bib,因为它们是外部的,我无法控制它们。即使问题似乎出在"文件}内部.bib。(我意识到note = {This note is "bad"}note = {{This note is bad}}note = {{This note is "bad".}}似乎适用于两种语言。但这note = {{This note is "bad"}}不是格式错误吗?它应该可以工作吧?
  • 那么,也许我可以将资源的主要语言.bib重新设置english为解决方法?

感谢您的任何想法:-)

答案1

此示例重现了该问题

\documentclass{article}

\usepackage[ngerman]{babel}

\begin{document}
{"bad"}
\end{document}

ngerman处于活动状态时,"是一个简写字符,其操作取决于其后的内容。例如,"a被翻译成\"a变音符号,并"|设置用于断开连字的词素边界。后面永远不应该跟的"},并且您的.bbl文件将包含

\field{note}{{This note is "bad"}}

删除不需要的括号并不能解决问题。使用正确的引号

note={This note is ``bad''}

或者更好的是,使用csquotes设施:

note={This note is \enquote{bad}}

答案2

我应该花时间阅读一些关于 LaTeX 的基本介绍,以避免这些问题。错误似乎来自错误的引用。使用 引用"通常不是一个好主意。https://en.wikibooks.org/wiki/LaTeX/Text_Formatting#Quote-marks例如,它说

不要使用 " 作为右双引号:当 babel 包用于某些语言(例如德语)时, " 会被重新定义为产生变音符号

并且还显示了一些可能的替代方案。

相关内容