LaTeX:UTF8 与 algorithm2e 发生冲突

LaTeX:UTF8 与 algorithm2e 发生冲突

我有这个 utf8 编码的输入文件:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{algorithm2e}
\begin{document}

\begin{procedure}
foo
\caption{ö()}
\end{procedure}
\end{document}

但这给了我一个错误:

) (./test.aux)
! Missing \endcsname inserted.
<to be read again> 
                   \unhbox 
l.8 \caption{ö()}

不知何故,该\caption命令不喜欢 ö 字符。有没有办法在 utf8 编码和算法包中使用 ö?

 *File List*
 article.cls    2007/10/19 v1.4h Standard LaTeX document class
  size10.clo    2007/10/19 v1.4h Standard LaTeX file (size option)
inputenc.sty    2008/03/30 v1.1d Input encoding file
    utf8.def    2008/04/05 v1.1m UTF-8 support for inputenc
   t1enc.dfu    2008/04/05 v1.1m UTF-8 support for inputenc
  ot1enc.dfu    2008/04/05 v1.1m UTF-8 support for inputenc
  omsenc.dfu    2008/04/05 v1.1m UTF-8 support for inputenc
algorithm2e.sty    2008/00/00 v3.10 algorithms environments
  ifthen.sty    2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
  xspace.sty    2006/05/08 v1.12 Space after command names (DPC,MH)
 relsize.sty    2003/07/04 ver 3.1

答案1

Algorithm2e 尝试在您的示例中定义命令 \csname ö\endcsname。问题是“ö”已经是一个命令,并且 - 由于您使用的是 OT1 字体编码 - 它包含无法在 \csname 中使用的命令。您可以使用\usepackage[T1]{fontenc}。这将解决 ö 的问题。但总的来说,我确实发现 algorithm2e 定义命令而不进行检查相当成问题。我建议使用 nokwfunc 选项。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage%[nokwfunc] % enable it to see the difference
  {algorithm2e}
\usepackage[T1]{fontenc}
\begin{document}
\section{A}

\begin{procedure}
foo \caption{ö()}
\end{procedure}

\begin{procedure}
foo \caption{section()}
\end{procedure}

\section{B}
\end{document}

答案2

我不相信可以用变音符号定义宏名称,但这里却发生了这种情况。您\caption{ö()}将使用 创建一个命令 \ö csname。例如,这可以完美运行。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{algorithm2e}
\begin{document}
\begin{procedure}
\caption{test(disjöint decomposition)}
\end{procedure}
\end{document}

问题不在于 utf-08 或变音符号,只是不能将变音符号用作宏名。

相关内容