
Можно ли вывести сообщение, как \message{…}
в расширяемом макросе, для отладки? Я пытался создать расширяемые функции с помощью \message{}
, но не могу подключить их к siunit \num{…}
, который ожидает расширенную строку.
\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