如何打印出“日志”而不影响其他任何内容(lua print equiv)

如何打印出“日志”而不影响其他任何内容(lua print equiv)

luaprint对于我的调试目的非常有效,但由于所有宏扩展问题,我无法轻松地在 TeX 中使用它。

它所做的就是将文本打印到窗口(控制台窗口或其他;我使用 WinEdt)但不会以任何方式影响输出。

我已经尝试过\the、、\showthe和,\message但似乎都没有效果。

有没有什么简单的方法可以让我打印宏和寄存器值以用于调试目的?

答案1

如果您想在终端和日志中显示宏和寄存器内容,那么您需要的两个原语是\show\showthe。使用 显示宏\show

\def\foo{some tokens}
\show\foo

导致

> \foo=macro:
->some tokens.
l.5 \show\foo

例如。如果你尝试\show使用寄存器,它就没那么有用了,例如

\newcount\foo
\show\foo

给予

> \foo=\count201.
l.5 \show\foo

这就是\showthe发挥作用的地方,就像

\newcount\foo
\foo 10\relax
\showthe\foo

你得到

> 10.
l.7     \showthe\foo

这同样适用于其他寄存器类型(toks、dimens、skips)。

\message在不中断运行的情况下写入终端和日志,并进行扩展。所以

\def\foo{bar}
\message{Hello world \foo}

写道

Hello world bar 

到终端,但不会停止运行。如果你想写入寄存器的内容通过 \message您需要包括\the

\newtoks\foo
\foo{bar}
\message{Hello world \the\foo}

再次输出

Hello world bar 

在此上下文中,另一个有用的原语是 e-TeX 的\showtokens,它可用于在终端中显示任意标记,因此可用于构建“交互式”消息而不会发出错误。后者是使用 执行的\errmessage,如果您想要“漂亮的打印”,则需要进行一些设置(例如,请参阅 中 LaTeX2e 如何处理此问题latex.ltx)。

相关内容