多年来,我写过很多“奇怪”的 TeX,从未遇到过 TeX 编程环境完全不够用的情况。然而,我经常希望一点
在编写复杂的宏时提供更多帮助。发现括号、条件和
\string
以及\romannumeral-1...
技巧很有趣,但感觉有点太特殊了。现在(如果有人能相信的话,这只是一个月前的事!我已经使用 TeX 超过二十年了!)我已经查看了 LaTeX3 代码(expl3
更准确地说,我仍然无法让自己使用 LaTeX),我发现了许多我几乎羞于使用的相同技巧(我甚至学会了几种略短的方法来实现某些效果)。
那么,经过这么长的介绍之后,您希望有一个什么样的 TeX 扩展可以解决原始 TeX 的编程效率低下问题,如果可能的话,为什么呢?
理想情况下,这将是候选名单(5 件或更少)。只有编程环境应该得到解决(即不涉及 TeX 对字体、其他排版问题等的处理。Frank Mittelbach 关于该主题的论文很好地讨论了该领域)。请注意,我喜欢 TeX 的极简主义哲学和宏编程(虽然当我切换到用 C 编写嵌入式代码时感觉就像长了翅膀),所以我正在寻找一个更符合 TeX 精神的答案,而不是“只使用 LuaTeX”(我对 LuaTeX 没有任何意见本身感觉有点特别指定;我也觉得编程太容易了不是一个好主意)。如果答案是“e-TeX(或其他扩展)已经做到了这一切,这就是为什么 e-TeX 的选择更好', 请详细说明。
我将从我自己的愿望清单开始:
\xxpandafter{tokens}
-- 扩展组后面的标记
\iftoks{token list}{token list}
-- 比较两个标记列表(相同
\def\listone{...}\def\listtwo{...}\ifx\listone\listtwo ...
但可扩展)
\unlet token
-- 扩展为类别代码、字符代码标记,如果标记不是活动字符/控制序列,则扩展为无
\numexpr
-- 与 e-TeX 相同(只希望它与 配对\endnumexpr
而不是\relax
)
\batchxmode{...}
允许自动从括号内扩展的代码的错误中恢复,它本身扩展为无(即相同\batchmode ... \errorstopmode
但扩展为无)