由于该角色~
的 catcode 为 13,因此它被视为活动角色。我可以通过执行类似代码
\let~\catcode ~`a8
(为该角色分配a
catcode 为 8(表示下标))来(滥用)它,而无需先执行此操作\catcode`~13
。
TeX 中还有哪些其他字符默认被视为活动字符?换句话说,哪些字符的默认 catcode 为 13?
答案1
plain 始终将字符 12(换页符)和 126(波浪号)作为活动字符,这并不奇怪。
在 LaTeX 中,情况取决于所使用的引擎。在 pdflatex 中,字符 128-225 处于活动状态以支持编码;在 xelatex 和 lualatex 中,字符 173(U+00AD“软连字符”)被声明为活动状态并赋予含义\-
(自由连字符)。
以表格形式:
格式/引擎 | 特克斯 | pdftex | 西特克斯 | 路特克斯 |
---|---|---|---|---|
清楚的 | 12 126 | 12 126 | 12 126 | 12 126 |
乳胶 | / | 1-8 11 12 14-31 126 128-255 | 12 126 173 | 12 126 173 |
语境 | / | / | / | 124 126 |
美式英语 | / | 12 64 126 | / | / |
OpTeX | / | / | / | 126 160 |
总体来说~
似乎只是通用的。
使用以下测试文件:
\ifx\documentclass\undefined \else
\documentclass{article}
\begin{document}
\fi
\csname starttext\endcsname
\newcount\curr
\newcount\upper
\ifx\numexpr\undefined
\upper="100
\def\n{^^J}
\else
\ifx\pdftexbanner\undefined
\upper="10000
\edef\n{\Uchar"000A}
\else
\upper="100
\def\n{^^J}
\fi
\fi
\newlinechar=10
\message{\n\n}
\count0=0
\loop
\ifnum\catcode\curr=\active
\message{ \the\curr}
\fi
\advance\curr 1
\ifnum\curr<\upper \repeat
\message{\n\n}
\csname stoptext\endcsname \end{document}