我最近从 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}
来查找导致问题的条目,然后通过找出使用组合重音的原因来更直接地解决这个问题。