biber 文件中的字符宏

biber 文件中的字符宏

我们在 XeLaTeX + biblatex 中使用了一个 bibtex 文件,该文件最初是用 ASCII 编码的,因此重音字符由宏表示。其余文本是 Unicode UTF-8。.bib 文件中的重音字符之一是\"{0},XeLaTeX 可以很好地处理它(这是我在以下地方看到的表示此类字符的方式https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Escaped_codes但 biber 抱怨道:

ERROR - BibTeX subsystem: /tmp/i_hu76qDT8/References.bib_3533.utf8, 
line 2, syntax error: found "{o}", expected end of entry ("}" or ")") 
(skipping to next "@")
INFO - ERRORS: 1

Biber 显然想要这种格式{\"o},XeLaTeX 也接受这种格式。

我们通常到处都使用 UTF-8,而不是 ASCII 转义字符。但是,当导入旧的 .bib 文件时,我们并没有费心将转义字符代码转换为 UTF-8——至少到目前为止是这样。事实上,我知道这在几年内无需我们转换代码就可以正常工作;一定是最近对 biber 的更改破坏了 \"{o} 表示。(我们现在有 biber v2.10。)

这是预料之中的还是一个错误?下面是最小示例。它在 XeLaTeX 中“编译”成功,但 biber 步骤失败并出现上述错误消息。

===========XeLaTeX 文件===========

\documentclass{report}
\usepackage{biblatex}
\addbibresource{References.bib}

\begin{document}
John S\"{o}ren wrote \cite{TestEntry}.
\printbibliography
\end{document}

===========.bib 文件=============

@InCollection{TestEntry,
   author    = "John S\"{o}ren",
   booktitle = "Nonesuch",
   publisher = "Some Publisher",
   address   = "Somewhere",
   year      = "1996"
}

答案1

恐怕写

author    = "John S\"{o}ren",

.bib文件中 - 普通文件中的情况有所不同.tex,这就是您链接到的 Wikibook 页面所适用的内容。

作为文件的字段分隔符,"..."和之间只有很少的区别,但其中之一是括在 中的字段不能在字段内容中具有不受保护的内容。在文字中必须通过将其括在括号中来保护。这就是为什么在文件中必须写和 而不是的原因之一,请参阅{...}.bib"..."""...""{\"o}\"{o}.bib如何在参考书目中书写“ä”及其他变音符号和重音字母?以及第 20 页驯服野兽或 Q5BibTeX 常见问题解答。BibTeX 从一开始就是如此,并且延续到了 Biber。

您可以使用括号代替引号来解决此问题。

author    = {John S\"{o}ren},

有效。这就是为什么我更喜欢用括号而不是引号作为字段分隔符的原因之一。

但实际上你应该切换到 {\"o}甚至更好ö。即使对于旧文件,对有问题的字符宏进行搜索和替换也不应该太难。

相关内容