我在使用 Biber 和 LaTeX 时遇到了一个错误:
这是我的 MNWE:
测试.bib:
@misc{citation1, title = {Any title}, author = {{{Foo} bar}}, },
测试.tex:
\documentclass{book}
\usepackage[backend=biber]{biblatex}
\addbibresource{test.bib}
\begin{document}
Minimal\cite{citation1}.
\end{document}
通过更改 bib 文件中的作者行可以 author = {{Foo} bar}
解决此问题。
错误:
(./test.bbl
Runaway argument?
{{{hash=caae7d4677b9798ddeb82790f6e3b20d}{{{Foo}\bibnamedelimb bar}}{\ETC.
! Paragraph ended before \name was complete.
当使用BibTeX时,没有问题(更改backend=bibtex
)。
尝试了 biber 1.2 和最新的 biblatex 以及 biber 0.99 和 texlive2011 中包含的 biblatex,问题相同。
答案1
这种输出格式有点混乱,因为不清楚重点是保护“Foo”还是整个名称。除了要求 Zotero 团队不要输出如此混乱的 bibtex 之外,还可以将其添加到您的 biber.conf 中,以自动删除已完全受保护的名称内的括号:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map>
<map_step map_field_source="AUTHOR"
map_match="\A{.+}\z" final="1"/>
<map_step map_field_source="AUTHOR"
map_match="(?:(?!\A){|}(?!\z))"
map_replace=""/>
</map>
</maps>
</sourcemap>
</config>
此特定修复需要 SF 的 biber 1.3/biblatex 2.3 dev 版本,因为在处理空替换字符串时存在错误。