这是一个简单的文档:
\documentclass{article}
\usepackage[%
backend = biber,
bibstyle = biblatex-sp-unified,
]{biblatex}
\addbibresource{test.bib}
\begin{document}
\cite{test}
\printbibliography{}
\end{document}
其中指的是这bbx
以及这个简单的bib
文件:
@article{test,
Author = {test},
Title = {test}
}
这曾经有效。在本周日早上更新我的 MacTeX 发行版并(全面披露)执行 后sudo tlmgr update --all
,我现在收到如下错误:
! Undefined control sequence.
<argument> \bbl@main@language
l.12 \printbibliography{
}
?
奇怪的是,如果缺少Author
或Title
字段,我不会收到错误。此外,如果我删除该bibstyle
选项,错误就会消失。这让我怀疑问题出在bbx
上面链接的文件中,但这是我有限的知识和专业知识所能得到的。
我意识到这可能是一个相当具体的问题(而且我已经在链接到的 github 上打开了一个问题),但也许这里存在一个导致问题的一般问题,在这种情况下,其他人可能会从一般解决方案中受益。
答案1
此问题已在 3.5 版中修复
biblatex
。更新至 的当前版本biblatex
应该可以解决此问题。
babel
请注意,或的旧版本可能会出现类似的问题polyglossia
,在这种情况下,解决方案是再次更新这些软件包。
罪魁祸首是线路
\DeclareFieldFormat[article,book,thesis,incollection,unpublished,inproceedings]{titlecase}{\MakeSentenceCase*{#1}}%
\MakeSentenceCase*
检查保存的文档语言\bbl@main@language
,由于您既没有加载babel
也没有加载polyglossia
,所以没有可用的命令并且biblatex
会抱怨。
该问题已在开发版本中得到解决,即将推出的 3.5 版本将对其进行修复biblatex
(请参阅 2016-06-19 的讨论)问题 #393)。
当然,问题不仅限于您的特殊.bbx
文件 - 所有使用的代码\MakeSentenceCase*
都会受到影响。使用特殊格式的标题会调用该宏,因此也会受到影响,即使您在其命令中biblatex-ieee
找不到直接调用。\MakeSentenceCase*
\DeclareFieldFormat
解决方案一是加载babel
或polyglossia
使用正确的语言选项(american
或),如果您不使用英语书写,则特别推荐这样做british
。babel
如果你不想加载任何一个包,你可以使用不带语言感知的无星号版本请注意,带星号的版本\MakeSentenceCase*
通常是强烈因为它遵循语言设置,所以使用无星号版本只能是一种临时解决方法
\DeclareFieldFormat[article,book,thesis,incollection,unpublished,inproceedings]{titlecase}{\MakeSentenceCase{#1}}%
或者彻底摆脱句子大小写
\DeclareFieldFormat[article,book,thesis,incollection,unpublished,inproceedings]{titlecase}{#1}%