我很难理解如何解决这个错误:
包 inputenc 错误:Unicode 字符 ̀ (U+300) (inputenc) 未设置为用于 LaTeX。
我已经看过这个相关的问题,但问题是我不知道在哪里使用过这个字符,而且似乎无法用 find 命令找到它。
答案1
U+0300 是组合重音符。PDFTeX 和 8 位inputenc
包无法处理组合 Unicode 字符,只能处理预组合字符(NFC 形式)。
如果在 PDFTeX 中编译,以下 MWE 将重现您的错误:
\documentclass{article}
\tracinglostchars=2
\usepackage[T1]{fontenc}
\begin{document}
à
\end{document}
这是因为 à 是分解形式 (U+0061 U+0300),而不是 NFC 形式 à (U+00E0)。这只是一个例子,它还可能出现在其他几个地方。(英语中最著名的例子可能是莎士比亚对“punishèd”的运用。)
如果您使用 LuaLaTeX 而不是 PDFLaTeX 进行编译,引擎将理解组合字符,但您的 8 位字体将不包含它,因此不会显示。该\tracinglostchars=2
行至少会向您提供一条有关它的警告消息。
但是,由于我给出的代码永远无法编译,所以您的旧文档中不太可能包含类似内容。一些用户报告说,\'{\i}
他们的参考书目中存在此错误。在旧版本的 TeX 中,您需要将重音符号叠加在无点的 上ı
,而不是叠加在i
带点的 上。这不再是必要的,因为它将\'{i}
被定义为文本复合。
这为您提供了以下选项:
使用 Unicode 引擎
如果删除 8 位字体包(例如fontenc
和)inputenc
,并使用 LuaTeX 或 XeTeX 进行编译,则可以正常工作:
\documentclass{article}
\tracinglostchars=2
\usepackage{fontspec}
\begin{document}
à
\end{document}
转换为预制字符
我恰好写过一个小程序将 UTF-8 输入规范化为 NFC 格式,或者您可以进行搜索和替换。
这是可行的,因为它不包含组合字符,只包含预组合字符:
\documentclass{article}
\tracinglostchars=2
\usepackage[T1]{fontenc}
\begin{document}
à
\end{document}
使用重音宏
如果你必须使用 PDFTeX,并且没有你想要的字素的预制字符,你可以将其写成
\documentclass{article}
\tracinglostchars=2
\usepackage[T1]{fontenc}
\begin{document}
\`{a}
\end{document}