.png)
Se tivermos um arquivo .tex de entrada, como encontrar todas as invocações de macro nele?
\documentclass{article}
\newcommand{\samplemacro}{This is a sample macro.}
\begin{document}
\samplemacro
\begin{itemize}
\item \samplemacro
\end{itemize}
\section[\samplemacro]{\samplemacro}
\tableofcontents
\end{document}
Qualquer tipo de posição seria adequado, por exemplo, um deslocamento de byte para início/fim do comando. Start é quando o comando começaria a ser processado, enquanto end seria logo após todos os argumentos terem sido consumidos.
Para o exemplo acima, seria ótimo obtê-lo da seguinte maneira:
[
'\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}'
]
A estrutura exata não é realmente importante, então não há problema em considerar \samplemacro como apenas uma parte de \section sem rastrear as chamadas internas, ou talvez considerar o conteúdo do ambiente como parte de \begin. Trata-se literalmente de quais tokens são consumidos por qual rotina.
Como macros como \section
implementam análise personalizada, parece muito mais fácil usar ganchos luatex de alguma forma do que análise codificada comoSopa Texestá tentando fazer.