我将问题简化为以下最小工作示例(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 包用于某些语言(例如德语)时, " 会被重新定义为产生变音符号
并且还显示了一些可能的替代方案。