入力 .tex ファイル内のすべてのマクロ呼び出しを追跡します (luatex 経由?)

入力 .tex ファイル内のすべてのマクロ呼び出しを追跡します (luatex 経由?)

入力 .tex ファイルがある場合、その中のすべてのマクロ呼び出しを見つけるにはどうすればよいでしょうか?

\documentclass{article}
\newcommand{\samplemacro}{This is a sample macro.}

\begin{document}
\samplemacro

\begin{itemize}
    \item \samplemacro
\end{itemize}
\section[\samplemacro]{\samplemacro}
\tableofcontents
\end{document}

位置の種類は何でも構いません。たとえば、コマンドの開始/終了のバイト オフセットなどです。開始はコマンドの処理が開始される時点であり、終了はすべての引数が消費された直後です。

上記の例では、次のようにすると便利です。

[
  '\documentclass{article}',
  '\newcommand{\samplemacro}{This is a sample macro.}',

  '\begin{document}',
  '\samplemacro',

  '\begin{itemize}',
  '\item'
  '\samplemacro',
  '\end{itemize}',
  ['\section[\samplemacro]{\samplemacro}', '\samplemacro', '\samplemacro'],
  '\tableofcontents',
  '\end{document}'
]

正確な構造はそれほど重要ではないので、内部呼び出しをトレースせずに \samplemacro を \section の一部と見なしたり、環境コンテンツを \begin の一部と見なしたりしても問題ありません。文字通り、どのルーチンによってどのトークンが消費されるかが重要です。

マクロはカスタム解析を実装するので\section、次のようにハードコーディングするよりもluatexフックを使用する方がはるかに簡単であるように思われます。テックススープやろうとしている。

関連情報