
É possível imprimir uma mensagem como \message{…}
em uma macro expansível para fins de depuração? Tentei criar funções expansíveis com \message{}
, mas não consigo conectá-las ao siunit \num{…}
que espera uma string expandida.
\documentclass[]{article}
\usepackage{siunitx}
\begin{document}
\NewExpandableDocumentCommand{\foo}{}{
\message{Foo}%
42%
}
\num{\foo}
\end{document}
Responder1
Em luatex você pode imprimir de Lua, por exemplo
\documentclass[]{article}
\usepackage{siunitx}
\begin{document}
\NewExpandableDocumentCommand{\foo}{}{%
\directlua{print('Foo')}%
42%
}
\num{\foo}
\end{document}
Ou use as texio
funções do módulo se quiser gravar no log e também no terminal.
Caso contrário, você pode usar (por exemplo) devorar e ativar o rastreamento):
\usepackage{siunitx}
\def\MESSAGE#1{}
\begin{document}
\NewExpandableDocumentCommand{\foo}{}{%
\MESSAGE{Foo}%
42%
}
\tracingmacros=1
\tracingonline=1
\num{\foo}
\tracingnone
\end{document}
correr com
pdflatex file | grep -A2 'MESSAGE #1'
produz saída terminal
\MESSAGE #1->
#1<-Foo