Biber 写入了错误的 \'\i Unicode 编码

Biber 写入了错误的 \'\i Unicode 编码

Biber 在读取 bib 条目时似乎会写入一些奇怪的 unicode 字符,其中重音字符í已输入为\'\i。这会导致使用 pdflatex(和 utf8 输入)时编译中断,并在 xelatex 中使用某些字体时产生奇怪的字符或随机错误。我怎样才能让 biber 产生正确的字符?

下面是最小示例

\documentclass{article}

\begin{filecontents}{test.bib}
@article{sample,
    Author = {Ver{\'o}nica Mac{\'\i}as},
    Title = {My Sample Paper},
    Journal = {Journal of Sample Documents},
    Year = {2011}}
\end{filecontents}

\usepackage{iftex}
\ifXeTeX
  \usepackage{fontspec}
  \setromanfont[Mapping=tex-text]{Minion Pro}
\else
  \usepackage[utf8]{inputenc}
\fi

\usepackage[backend=biber]{biblatex}
\addbibresource{test.bib}

\begin{document}
Verónica Macías \cite{sample}
\printbibliography
\end{document}

如果我跑

pdflatex test
biber test
pdflatex test

我得到了错误

! Package inputenc Error: Unicode char \u8:́ not set up for use with LaTeX.

如果改为(清理辅助文件之后)我运行:

xelatex test
biber test
xelatex test
xelatex test

然后我会随机得到

** ERROR ** Charstring too long: gid=1679

或者编译成功,但输出如下

在此处输入图片描述

我怎样才能说服 biber 生成正确的 unicode 字符í

PS:是的,我知道我可以通过改变 bib 文件的编码来解决问题,但假设我不想这样做,因为该文件是在其他地方自动生成的,这就是我得到的结果。

答案1

使用正确的语法:

Author = {Ver{\'{o}}nica Mac{\'{i}}as}

或者直接

Author = {Verónica Macías}

确保文件是 UTF-8 编码的。在 pdflatex 和 xelatex 中均可使用。\i多年来,LaTeX 不再要求在主要重音符号后加上括号,但重音字母周围的括号从起源上来说就是 BibTeX 语法。

如果确实无法修改文档,以下方法似乎有效

XeLaTeX:

\begingroup\lccode`\~=\string"0131
  \lowercase{\endgroup\protected\def~}#1{\char\string"00ED}
\catcode\string"0131=\active

或者更简单地说,

\catcode`ı=13 \protected\defı#1{í}

PDFLaTeX:

\DeclareUnicodeCharacter{0131}{í}
\DeclareUnicodeCharacter{0301}{}

如果您也有某个地方,则需要更复杂的东西\`\i

答案2

你必须这样写作者条目:

Author = {Ver{\'o}nica Mac{\'{\i}}as},

那么它可以工作,至少对于 XeLaTeX 来说

相关内容