\show 用更少的行?

\show 用更少的行?

我正在编写一些用于常规调试目的的宏(请参阅扬尼斯的问题)。我基本上是逐步扩展给定的输入,并将结果打印到终端和日志中。为了逐步实现这一点,我使用了\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 页的“定义(也称为宏)”中了解更多详细信息。

相关内容