我一直想知道某些宏是如何生成的,我通常使用命令\show
来了解其定义。是否可以使用命令(例如)打印宏的定义,\printmacro{\quad}
该命令反过来会创建一个.pdf
(或.txt
)文件,其中包含定义和定义的位置(文件)?
更新:
如果有以下功能就更好了:
\printmacro
使用选项创建命令[printhere]
。也就是说,它将模拟的行为\meaning
。- 创建选项
printtopdf
或printtotxt
文件。 - 请注意,所有这些选项都应自动指示哪个文件包含命令的定义。如果可以提取包含命令定义的文件的确切位置,那就太好了。
答案1
我认为您的大多数问题都可以通过非常有用的texdef
和来解决latexdef
。但您似乎想要一种方法来将每个定义从输入打印到文件中.tex
。我通常使用,\texttt{\meaning\stuff}
但以下可能是您所指的:
\documentclass{article}
\newwrite\definition
\def\printmacro #1{%
\begingroup\escapechar=-1
% better as .txt file
\immediate\openout\definition=\jobname-meaning-\string#1.txt
\endgroup
\immediate\write\definition{\meaning#1}%
\immediate\closeout\definition
}
% or perhaps you prefer:
\def\printmacro #1{%
\begingroup\escapechar=-1
\immediate\openout\definition=\jobname-meaning-\string#1.txt
\endgroup
(printing definition of \texttt{\string#1} to file \texttt{\escapechar-1
\jobname-meaning-\string#1.txt})
\immediate\write\definition{\meaning#1}%
\immediate\closeout\definition
}
\def\testmacro #1#2#3{$#2^{#3}$ (#1)}
\begin{document}
\printmacro\testmacro % can also be used in preamble
\printmacro\tabular
\expandafter\printmacro\csname @tabular\endcsname
\begin{tabular}{c}
Hello\printmacro\\
\end{tabular}
\end{document}
然而,为了pdf
输出,需要shell-escape
启用它(我认为)。