标记中的 Htlatex 重音导致缺少 \endcsname

标记中的 Htlatex 重音导致缺少 \endcsname

我正在尝试将包含特殊符号(重音符号、美元符号,尤其是 utf8 中的输入)的字符序列与某些内容关联起来。这将与 htlatex 一起使用。重音符号会产生问题,如下例所示:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document} 
\expandafter\def\csname è\endcsname{an acentuated token}
\end{document}

使用 pdftex 可以很好地编译,但使用 htlatex 时,我得到:

! Missing \endcsname inserted.
<to be read again> 
                   \protect 
l.6 \expandafter\def\csname è
                              \endcsname{an accentuated token}
? 

我无法弄清楚 htlatex 的问题出在哪里(事实上 \IeC 有不同的定义,但简单地纠正它是不够的)。

我也能理解这样的回答:“你甚至不应该考虑用奇怪的符号构造标记”。但是,有什么方法可以维护包含此类条目的表呢?

答案1

它与...一起工作pdflatex完全是偶然的。如果你使用

\csname è\endcsname

\protect在这样的上下文中\@unexpandable@protect(例如,在.toc文件中写入章节标题时),你会得到同样的错误

! Missing \endcsname inserted.
<to be read again> 
                   \IeC 
l.11 \csname è
               \endcsname

不一样\protect,但是概念是一样的。

你用什么来定义

\expandafter\def\csname è\endcsname{an acentuated token}

是令牌\^^e8,但你肯定不能用它来代替\csname è\endcsname

在任何情况下都不要使用重音字符\csname

可能使用

\expandafter\def\csname\detokenize{è}\endcsname{an acentuated token}

但其实用性却很值得怀疑。

相关内容