我正在尝试将包含特殊符号(重音符号、美元符号,尤其是 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}
但其实用性却很值得怀疑。