
¿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 texio
funciones 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