我觉得 (La)TeX 的一个烦人之处是特殊字符太多。如果要\ $ % & # _ ~ ^ { }
在文档中的文本中包含 ,我们必须使用 对其进行转义\
。
我个人认为这很愚蠢——毕竟我们是编写文本文档而不是进行编程。
我认为如果有一种模式只有一个转义字符(并且\
非常适合我)那就太好了全部命令和控制序列前面必须有\
。注释可以是(例如)数学可以用等\%
来引入。\$
是否有任何软件包/黑客/修改可以实现这一点?
答案1
我无法回答您关于是否有任何软件包可以做到这一点的问题。其中一些参数可以更改。例如,如果您总是使用\( ... \)
而不是$...$
,那么您可以将 设为$
普通标点符号(或者您可以使用\$
)。同样,\&
和\_
可以\^
轻松与它们的非斜线对应项交换。无需~
激活 ,您可以轻松定义\~
以具有相同的效果。正如 Will 在评论中指出的那样,#
可以成为一个符号。
我无法让注释正常工作。我不知道如何让宏扩展为行尾标记。实际上,我甚至不确定这是 TeX 能够接受的标记之一。
真正的问题在于括号。你确实需要两个额外的字符来充当分组。你可以将两个不常用的字符作为括号。
因此,除非括号是特殊的并且没有行注释(尽管定义一个块注释可能很容易,\def\%#1\relax{}
这可能足以满足您的目的),否则这似乎是有效的。
\newenvironment{plaintext}{%
\catcode`\$12
\def\&{&}%
\catcode`\&12
\def\_{_}%
\catcode`\_12
\def\^{^}%
\catcode`\^12
\catcode`\#12
\catcode`\%12
\let\~~%
\catcode`\~12
}{}
像使用它一样
\begin{plaintext}
Here is some test text % ^ & _ $ # &.
How about some math \(x\_y\^z\). You're still out of luck with braces
though.
\end{plaintext}
答案2
在 ConTeXt 中,我们正在讨论添加一个宏\asciimode
,该宏将设置 catcode,使得只有\
、{
和}
空格(制表符、换行符和分页符)具有其通常含义。其他所有内容(包括%
和$
)均设置为其他。
您可以使用 进入数学模式\math{...}
,使用 显示数学模式\startformula
,使用 注释\starthidden
等。在数学模式中,_
和^
具有其通常含义。将有一个专用的“编程”环境,它将恢复传统的 TeX catcodes。
初步版本位于http://source.contextgarden.net/tex/context/base/catc-ctx.tex(尽管目前已被注释掉)
答案3
LuaTeX 定义了 TeX 中使用的单字符控制序列的原语:
\Usuperscript ^
\Usubscript _
\Ustartmath $
\Ustopmath $
\Ustartdisplaymath $$
\Ustopdisplaymath $$
因此,人们可以以某种方式使用这些原语,并将这些特殊字符的 catcode 设置为正常。这样就剩下百分号了,但我认为如果真的需要,可以定义一个不同的注释字符来代替它。