biblatex 中的 \bbl@main@language 错误

biblatex 中的 \bbl@main@language 错误

这是一个简单的文档:

\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{
                        }
?

奇怪的是,如果缺少AuthorTitle字段,我不会收到错误。此外,如果我删除该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


解决方案一是加载babelpolyglossia使用正确的语言选项(american或),如果您不使用英语书写,则特别推荐这样做britishbabel

如果你不想加载任何一个包,你可以使用不带语言感知的无星号版本请注意,带星号的版本\MakeSentenceCase*通常是强烈因为它遵循语言设置,所以使用无星号版本只能是一种临时解决方法

\DeclareFieldFormat[article,book,thesis,incollection,unpublished,inproceedings]{titlecase}{\MakeSentenceCase{#1}}%

或者彻底摆脱句子大小写

\DeclareFieldFormat[article,book,thesis,incollection,unpublished,inproceedings]{titlecase}{#1}%

相关内容