我正在编写一些用于常规调试目的的宏(请参阅扬尼斯的问题)。我基本上是逐步扩展给定的输入,并将结果打印到终端和日志中。为了逐步实现这一点,我使用了\show
,它会中断 TeX 并让用户有机会跟踪正在发生的事情。
但是,\show
它太冗长了:至少有六行,其中大部分都是无用的。这个数字可以减少吗?(我不介意\show
为了更好的替代方案而放弃。)
即,
\documentclass{minimal}
\begin{document}
\errorcontextlines=-1\relax % attempt to have less lines
\def\deeper{\show\deepest...}
\def\deep{A \deeper macro}
\deep
\end{document}
将以下内容写入终端:
> \deepest=undefined.
\deeper ->\show \deepest
...
l.6 \deep
?
答案1
\show
你可以使用\message
和 来定义自己的\meaning
。你可以通过读取一些虚拟输入来停止编译:
\def\myshow#1{%
\message{\string#1=\meaning#1^^J?}%
{\read-1 to \dummy}%
}
例子:
\def\example{Example macro}
\myshow\example
结果是:
\example=macro:->Example macro
?
看TeXBook在第 20 章:第 217 页的“定义(也称为宏)”中了解更多详细信息。