当我尝试使用 inputenc 包在我的文档中启用 utf8 字符时,我收到错误inputenc Error: Unicode char
(U+2028) not set up for use with LaTeX
。它由 quote 环境中的显示公式触发。例如,以下示例已经触发它:
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{quote}
blah:
\[ blah \]
\end{quote}
\end{document}
我考虑了一下\DeclareUnicodeCharacter{2028}{}
,这似乎确实可行(将其定义为在\\
未满水平盒子的情况下生成),但这感觉有点不靠谱;这难道不应该开箱即用吗?我正在使用最新版本的 TeXLive 2016。
答案1
为什么你的源代码中有行分隔符?:-) 但无论如何,这是意料之中的:Unicode 有数万个字符,inputenc 没有为它们全部定义 tex 代码,你只需要\DeclareUnicodeCharacter
为你需要的任何其他字符使用。所以你的建议
\DeclareUnicodeCharacter{2028}{}
很好,或者
\DeclareUnicodeCharacter{2028}{\linebreak}
取决于字符的预期含义。但实际上,这样的控制字符根本不应该出现在 tex 源中。
如果你粘贴blah:
\[ blah \]
到
https://w3c.github.io/xml-entities/unicode-names.html
然后你会看到以下内容,表明你在:
和之间有控制字符\[
U+000a LINE FEED (LF) 

U+0020 SPACE \space
U+0020 SPACE \space
U+0020 SPACE \space
U+0020 SPACE \space
U+0020 SPACE \space
U+0062 LATIN SMALL LETTER B b
U+006c LATIN SMALL LETTER L l
U+0061 LATIN SMALL LETTER A a
U+0068 LATIN SMALL LETTER H h
U+003a COLON : \mathcolon :
% U+2028 LINE SEPARATOR
U+005c REVERSE SOLIDUS \ \backslash \textbackslash
U+005b LEFT SQUARE BRACKET [ [ \lbrack [
U+0020 SPACE \space
U+0062 LATIN SMALL LETTER B b
U+006c LATIN SMALL LETTER L l
U+0061 LATIN SMALL LETTER A a
U+0068 LATIN SMALL LETTER H h
U+0020 SPACE \space
U+005c REVERSE SOLIDUS \ \backslash \textbackslash
U+005d RIGHT SQUARE BRACKET ] ] \rbrack ]
U+000a LINE FEED (LF)