跟踪输入 .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 hooks 似乎比硬编码解析容易得多,例如特克斯汤正在尝试做。

相关内容