在可扩展宏中打印消息

在可扩展宏中打印消息

\message{…}是否可以像在可扩展宏中一样打印消息以进行调试?我尝试使用 创建可扩展函数\message{},但无法将它们插入\num{…}需要扩展字符串的 siunit。

\documentclass[]{article}

\usepackage{siunitx}

\begin{document}

\NewExpandableDocumentCommand{\foo}{}{
  \message{Foo}%
  42%
}

\num{\foo}

\end{document}

答案1

在 luatex 中你可以从 Lua 打印例如

\documentclass[]{article}

\usepackage{siunitx}

\begin{document}

\NewExpandableDocumentCommand{\foo}{}{%
  \directlua{print('Foo')}%
  42%
}

\num{\foo}

\end{document}

或者,texio如果您想写入日志和终端,请使用模块功能。

否则,您可以使用(例如)gobble,然后打开跟踪):


\usepackage{siunitx}
\def\MESSAGE#1{}
\begin{document}

\NewExpandableDocumentCommand{\foo}{}{%
  \MESSAGE{Foo}%
  42%
}

\tracingmacros=1
\tracingonline=1
\num{\foo}
\tracingnone

\end{document}

运行

pdflatex file | grep -A2 'MESSAGE #1'

产生终端输出

\MESSAGE #1->
#1<-Foo

相关内容