Распечатать сообщение в расширяемом макросе

Распечатать сообщение в расширяемом макросе

Можно ли вывести сообщение, как \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

Связанный контент