如何\finalandcomma
在参考书目之外使用 biblatex 的连续逗号 ( )?以下最小示例导致错误Undefined control sequence. [ One, two\finalandcomma]
\documentclass{article}
\usepackage[american]{babel}
\usepackage{biblatex}
\begin{document}
One, two\finalandcomma{} and three.
\end{document}
但如果我禁用牛津/连续逗号,那么它就可以正常工作:
\documentclass{article}
\usepackage[american]{babel}
\usepackage{biblatex}
\DefineBibliographyExtras{american}{% Remove Oxford/serial commas
\let\finalandcomma\empty
}
\begin{document}
One, two\finalandcomma{} and three.
\end{document}
答案1
您的第一个 MWE 的完整错误消息是
! Undefined control sequence.
\finalandcomma ->\addcomma
l.5 One, two\finalandcomma
{} and three.
?
这意味着它不是\finalandcomma
未定义的。\finalandcomma
定义为\addcomma
。并且\addcomma
是此处未定义的命令。
确实biblatex
文档解释见§4.7标点和间距那
请注意,这些功能 [
\addcomma
和朋友 ] 仅在引文和参考书目中本地可用。它们不会影响文档的任何其他部分。
原因有两个:首先,这些命令只能在特定的空间因子设置中正常工作,而这种设置通常不会在引用之外使用。其次,biblatex
将这些宏保存在私有名称空间中,以避免名称冲突。
禁用的示例可以正常\finalandcomma
工作,因为宏扩展为一个空的替换文本,这显然不能以未定义的形式结束。
总而言之,我建议您用不同的名称定义自己的宏,不要依赖biblatex
于\finalandcomma
。
\documentclass{article}
\usepackage[american]{babel}
\newcommand*{\listfinalcomma}{}
\begin{document}
One, two\listfinalcomma{} and three.
\end{document}
如果你真的想使用解决这个问题的另一种方法是biblatex
定义\finalandcomma
\addcomma
\documentclass{article}
\usepackage[american]{babel}
\usepackage{biblatex}
\newcommand*{\addcomma}{,}
\begin{document}
One, two\finalandcomma{} and three.
\end{document}
biblatex
在负责\addcomma
时仍将使用自己的定义,但在的范围之外,我们有一个应该足够好的后备定义。biblatex
biblatex