显示宏的定义

显示宏的定义

我一直想知道某些宏是如何生成的,我通常使用命令\show来了解其定义。是否可以使用命令(例如)打印宏的定义,\printmacro{\quad}该命令反过来会创建一个.pdf(或.txt)文件,其中包含定义和定义的位置(文件)?

更新:

如果有以下功能就更好了:

  1. \printmacro使用选项创建命令[printhere]。也就是说,它将模拟的行为\meaning
  2. 创建选项printtopdfprinttotxt文件。
  3. 请注意,所有这些选项都应自动指示哪个文件包含命令的定义。如果可以提取包含命令定义的文件的确切位置,那就太好了。

答案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启用它(我认为)。

相关内容