在 ConTeXt 中,可以更改 catcode,使得(几乎)所有特殊字符在文本模式下自动打印,而其中一些在数学模式下保留其原始含义(例如_
和^
)。相应的命令是\asciimode
。
\asciimode
\starttext
#$%&^_|~ %% these are disabled
\ { } %% these remain enabled
\stoptext
我的问题是,如果存在这样的东西,标准 LaTeX 中会产生什么副作用,或者更具体地说,标准 LaTeX 中是否存在假设某种 catcode 机制的宏?
这个问题部分受到 Aditya 的精彩博客文章的启发关于降低 TeX 学习曲线的一些想法。
答案1
当然,你可以改变重新定义的具体细节,以及重新定义的时间,但是
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\let\tablesep&
\makeatletter
\AtBeginDocument{%
\@makeother\#%
\@makeother\$%
\@makeother\&%
\@makeother\%%
\@makeother\^%
\@makeother\_%
\@makeother\~%
}
\makeatother
\newcommand\mycmd[2]{aaa(#1)(#2)}
\begin{document}
one # $ & ^ _ ~ two
\(x\sp{2}\)
\begin{tabular}{|c|c|}
aaa \tablesep bbb \\
1 \tablesep 2
\end{tabular}
\verb| \{^} |
\mycmd{$$$}{%%%}
\end{document}