从 Biber 1.9 升级到 Biber 2.1 后出现输入编码错误

从 Biber 1.9 升级到 Biber 2.1 后出现输入编码错误

在 biber 2.1 下,我的 biblatex 产生输入编码错误。同样的程序在 biblatex 2.9a/biber 1.9 下运行顺利,现在我升级到 biblatex 3.0/biber 2.1,在 biber 之后运行 pdflatex 时,我收到以下消息:

包 inputenc 错误:Unicode 字符 \u8:╠ü 未设置为用于 LaTeX。

这是一个最小工作示例:

\documentclass{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex} 
\bibliography{test.bib}
\usepackage{filecontents}

\begin{filecontents}{test.bib}
@article{rodr,
author = {Rodr{\'{\i}}guez, A},
year = {1999} }
\end{filecontents}

\begin{document}
Rodr\'{\i}guez
\textcite{rodr}
\printbibliography
\end{document} 

任何帮助都值得感激!

答案1

运行biber

biber --output-safechars <file>

在此处输入图片描述

答案2

书写Rodr{\'{\i}}guez似乎没有必要那么复杂。我建议你直接书写Rodr{\'i}guez。这样做不仅更容易,而且还会让biber/inputenc问题自动消失。

顺便,外部bib文件,即在 tex 文件正文中,我会写入Rodr\'iguez

答案3

这是 biber 2.1 中特别的更改\i。现在 biber 正确地将其编码为无点 i (ı​​ - 0x0131) 并带有组合重音符。尽管 biber 总是在输出时转换为预组合 (NFC) 形式,因此通常对 inputenc 尽可能友好,但这种组合没有预组合形式。对于普通的“i”后跟相同的组合字符,有一种预组合形式,但这是错误的,而且是完全不同的东西,在某些字体中会导致问题,并且在解码时需要特殊情况。\'i通常是更好的选择,因为大多数字体都知道其中的“i”不应该同时带有点和重音符(或者,如果您幸运的话,您只是因为重音符而看不到点)。inputenc 还知道普通的 ISO8859-1 文字í字符,因此您可以直接使用这些字符而无需任何宏。

如果您从某个外部来源获取数据,因此无法选择获取带重音符的“i”的形式,请放入 biber 源映射以修复代码(如果您遇到无点“i”的输入或字体问题):

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite]{
      \step[fieldsource=author,
            match=\regexp{\x{0131}\x{0301}},
            replace=\regexp{\x{00ED}}]
    }
  }
}

由于宏解码为 UTF8 是在源映射之前完成的,因此在应用映射时它已经是 UTF-8 NFD 格式了。上面的代码只是将无点 i (U+0131) 更改为带有尖音符 (U+0301) 的标准 ISO 8859-1 小写 i,并由 inputenc 支持尖音符 (U+00ED)。

--output-safechars或者您可以在编写 .bbl 时使用 biber选项强制将 UTF-8 编码到 LaTeX 宏中。

答案4

如果直接输入í,它可以正常运行:

\documentclass{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\bibliography{test.bib}
\usepackage{filecontents}
%
\begin{filecontents}{test.bib}
@article{rodr,
author = {Rodríguez, A},
year = {1999} }
\end{filecontents}

\begin{document}
Rodríguez
\textcite{rodr}
\printbibliography
\end{document} 

在此处输入图片描述

相关内容