包 inputenc 错误:Unicode 字符 ̀ (U+300) (inputenc) 未设置为用于 LaTeX

包 inputenc 错误:Unicode 字符 ̀ (U+300) (inputenc) 未设置为用于 LaTeX

我很难理解如何解决这个错误:

包 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}

相关内容