Biber 无法支持作者姓名中的 { }

Biber 无法支持作者姓名中的 { }

我在使用 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 版本,因为在处理空替换字符串时存在错误。

相关内容