当 unicode 希腊字母映射到命令时,Inputenc 出现错误:\UTFviii@two@octets@combine 的参数有一个额外的 }

当 unicode 希腊字母映射到命令时,Inputenc 出现错误:\UTFviii@two@octets@combine 的参数有一个额外的 }

我曾经inputenc能够在源代码中写入 unicode 并将其转换为 LaTeX 命令。例如

\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{221A}{\sqrt}
\DeclareUnicodeCharacter{03C0}{\pi}
\DeclareUnicodeCharacter{00B2}{^2}

然后$√{π²}$变成$\sqrt{\pi^2}$。这非常方便,我使用的键盘布局可以轻松访问 α、β、→、⇔、∀、⊂、∨、∩、√、∞、∑ 等字符。

但当我写的时候,例如,

$$\frac a b$$
$$\frac a σ$$
$$\frac σ b$$

第一行按预期输出“a/b”,但第二行出现错误Argument of \UTFviii@two@octets@combine has an extra }. $$\frac a �。第三行也出现错误,如果希腊字母进入第一个参数:Package inputenc Error: Invalid UTF-8 byte sequence. $$\frac σ。有趣的是,如果命令只有一个参数,例如,它可以正常工作$\sqrt σ$

这是什么原因造成的?可以解决吗?

梅威瑟:

\documentclass{article}

\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{03C3}{\sigma}

\begin{document}

$$a$$
$$σ$$
$$\frac a b$$
$$\frac a σ$$
$$\frac σ b$$

\end{document}

答案1

所有带参数的命令都支持 LaTeX 语法,即使用括号

\documentclass{article}

\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{03C3}{\sigma}

\begin{document}

\[a\]
\[σ\]
\[\frac{a}{b}\]
\[\frac{a}{σ}\]
\[\frac{σ}{b}\]

\end{document}

工作正常,没有错误。

如果参数是单个标记,则有时可以删除括号,但此处的希腊语不是单个标记。

这仅适用于经典的 8 位 TeX,其中 UTF-8 编码的每个字节都是一个单独的标记。

如果您使用 Unicode TeX(例如 lualatex 或 xelatex),则希腊字母的工作方式与拉丁字母相同:

\documentclass{article}

\usepackage{unicode-math}

\begin{document}

\[a\]
\[σ\]
\[\frac a b\]
\[\frac a σ\]
\[\frac σ b\]

\end{document}

相关内容