拡張可能なマクロでメッセージを印刷する

拡張可能なマクロでメッセージを印刷する

\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

関連情報