TeX「プリプロセッサ」の出力を見ることは可能ですか?e. 実際の出力が行われる前の中間ステップですが、すべてのユーザー定義マクロが置き換えられ、TeX プリミティブのサブセットのみが残っていますか?
それとも、そのような中間ステップはありませんか?
書く
\edef\xxx{Any text with any commands. For example, $\phantom x$.}
そして、ログファイルへの出力用
\show\xxx
またはドキュメントの出力用
\meaning\xxx
TeX には、マクロ展開のトレースなど、さまざまなトレース ツールが組み込まれています。これは、実際に展開されているライブ マクロのみをトレースしますが、それでも非常に便利です。完全な詳細はThe TeXbookおよびおそらく他の場所にあります。
マクロの問題をデバッグしようとしているときは、通常、大きなハンマーを使用します。
\tracingall\tracingonline
次に、出力または .log ファイルを調べて、知りたいことを探します。
Selective Macro Expanderを試してください。
TeX には「プリプロセッサ」はありません。任意の段階の任意の制御シーケンスの置換テキストはさまざまです (これは多くのことに使用されます!)。例えば
\def\demo{\def\demo{cde}}
\demo
最初に \demo を 1 つの方法で定義し、次にそれを変更します。同様に、TeX プリミティブをリダイレクトできます。たとえば、LaTeX カーネルは \input を内部の位置に移動して変更します。簡易版:
\let\@@input\input
\def\input#1{\@@input#1 }
この問題については、tex.SE でのこの質問とこの質問に関する多くの議論があります。しかし、最良の答え (IMO) はde-macro
、TeXLive に付属している Python スクリプトであるプログラムを使用することであることに注意してください。それは非常に有能で、単純な置換だけでなく引数も処理できます。
これを使用するには、展開するマクロを <something>-private.sty
ファイルに移動し、 でドキュメントに含めてから を\usepackage{<something>-private}
実行しますde-macro <mydocument>
。これ<mydocument>-clean.tex
は元のマクロと同じですが、プライベートマクロがより基本的なものに置き換えられています。