biblatex 问题:\DeclareUnicodeCharacter

biblatex 问题:\DeclareUnicodeCharacter

我最近从 Ubuntu 18(TeX Live 2017)升级到了 Ubuntu 20,但出现了问题:我现在需要添加

\DeclareUnicodeCharacter{0304}{ ̄}
\DeclareUnicodeCharacter{0301}{ ́}

才能正常biblatex工作。是什么导致了这种变化?有没有办法让这些行以 TeX Live 版本为条件,以便我的文件向后兼容其他仍具有旧 TeX 版本的机器?

.bib注意:我的典型条目是

@book{Cederlof:stow,
   author=   {Mikael Cederl\"of},   
   title=    {The element \emph{-st\=ow} in the history of English},
   year=     {1998},
   series=   {Acta Universitatis Upsaliensis: Studia Anglistica
 Upsaliensia},
   publisher={Uppsala University},
   number=   {103},
}

长音符号似乎需要\DeclareUnicodeCharacter,但变音符号则不需要。

答案1

旧系统上的 TeX Live 早于 LaTeX 转向 UTF-8 标准编码(例如,参见ltnews28)。除非你明确告诉 LaTeX 使用不同的编码,否则你实际上只能使用 ASCII。2018 年,LaTeX 改用 UTF-8。

由于biblatex尝试检测文档编码,因此现在将尝试使用 UTF-8。通常这会起作用,但如果您想坚持使用 ASCII,您可以尝试将选项传递texencoding=ascii,biblatex。类似的方法是使用选项--output-safechars作为 来调用 Biber biber --output-safechars <filename>

问题中显示的示例.bib条目对于我来说,使用当前的 TeX 发行版编译得很好,但可能有些定义在稍旧的发行版中不存在,或者您还有其他条目仍然存在问题。(无点/带点 i 存在一个长期存在的问题:Unicode -(U+301) 错误出现在 biblatex 中,但不出现在正文中:{\'{\i}}和链接的帖子。)

定义

\DeclareUnicodeCharacter{0304}{ ̄}
\DeclareUnicodeCharacter{0301}{ ́}

很可能不会做任何有用的事情,因为它们重新定义了组合字符。pdfLaTeX 实际上无法处理组合字符,因此使用此代码的文档可能会编译(我甚至不确定),但很可能不会像预期的那样看起来。

最好尝试使用类似的方法\DeclareUnicodeCharacter{0304}{XXXXXXXXX}来查找导致问题的条目,然后通过找出使用组合重音的原因来更直接地解决这个问题。

相关内容