私は長年にわたり、多くの「奇妙な」TeXを書いてきましたが、TeXのプログラミング環境が完全に不十分な状況に遭遇したことは一度もありません。しかし、私はしばしば、少し
複雑なマクロを書くときに、より多くの助けが得られます。括弧、条件文、
\string
、および\romannumeral-1...
トリックの扱い方を発見するのは楽しかったですが、少し特異すぎるように感じました。今 (信じられないかもしれませんが、これはほんの 1 か月前のことです。私は 20 年以上 TeX を使っています!)、LaTeX3 コードを見て (expl3
もっと正確に言うと、私はまだ LaTeX を使う気にはなれません)、使うのが恥ずかしくなるような同じトリックをいくつか見つけました (いくつかの効果を達成するための少し短い方法もいくつか見つけました)。
さて、この長い紹介の後、オリジナルの TeX のプログラミングの非効率性を解決する TeX 拡張機能について、どのような希望がありますか。また、可能な場合はその理由は何ですか。
理想的には、これはショートリスト(5項目以下)。プログラミング環境の問題は解決されるべきです(つまり、TeX のフォントやその他のタイポグラフィの問題などの処理には関係ありません。このトピックに関する Frank Mittelbach の論文では、その領域を非常にうまく扱っています)。私は TeX のミニマリスト哲学とマクロプログラミング全般が好きです(ただし、C で埋め込みコードを書くことに切り替えると、翼が生えたように感じます)。そのため、私は「LuaTeX を使用するだけ」ではなく、TeX の精神に沿った答えを求めています(LuaTeX に反対しているわけではありません)。それ自体ちょっとこのために; プログラミングをすることは簡単すぎるあまり良い考えではありません)。答えが「e-TeX(または他の拡張機能)はすでにこれらすべてを実行しており、e-TeXの選択が優れている理由は次のとおりです。'、詳しく説明してください。
まずは私自身の希望リストから始めましょう:
\xxpandafter{tokens}
-- グループの後のトークンを展開します
\iftoks{token list}{token list}
-- 2つのトークンリストを比較します(同じです
\def\listone{...}\def\listtwo{...}\ifx\listone\listtwo ...
が拡張可能)
\unlet token
-- カテゴリコード、文字コードトークンに展開されますが、トークンがアクティブな文字/制御シーケンスでない場合は何も表示されません。
\numexpr
-- e-TeX と同じです (\endnumexpr
ではなく とペアになっていると良いのですが\relax
)
\batchxmode{...}
括弧内で展開されたコードのエラーから自動的に回復できるようにします。コード自体は何も展開されません (つまり、と同じですが\batchmode ... \errorstopmode
何も展開されません)。