Imprimir mensaje en macro expandible

Imprimir mensaje en macro expandible

¿Es posible imprimir un mensaje como \message{…}en una macro expandible con fines de depuración? Intenté crear funciones expandibles con \message{}, pero no puedo conectarlas a siunit \num{…}que espera una cadena expandida.

\documentclass[]{article}

\usepackage{siunitx}

\begin{document}

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

\num{\foo}

\end{document}

Respuesta1

En luatex puedes imprimir desde Lua, por ejemplo

\documentclass[]{article}

\usepackage{siunitx}

\begin{document}

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

\num{\foo}

\end{document}

O utilice las texiofunciones del módulo si desea escribir tanto en el registro como en el terminal.

De lo contrario, puede usar (por ejemplo) engullir y luego activar el rastreo):


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

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

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

\end{document}

corre con

pdflatex file | grep -A2 'MESSAGE #1'

produce salida terminal

\MESSAGE #1->
#1<-Foo

información relacionada