我有一个命令\mthook
,我想定义一个新命令\apptomt
,使我能够附加到\mthook
(不使用\write
)。
就像是
\newcommand{\apptomt}[1]{\g@addto@macro\mthook{\gdef \csname mt#1\endcsname {foo}}}
以便文本文件
\documentclass{article}
\makeatletter
\newcommand{\mthook}{}
\newcommand{\apptomt}[1]{....}
\AtEndDocument{\immediate\write\@auxout{\mthook}}
\makeatother
\begin{document}
\def\mt{section}
\apptomt{\mt}
\def\mt{subsection}
\apptomt{\mt}
\end{document}
给出辅助文件
\relax
\gdef\mtsection{foo}
\gdef\mtsubsection{foo}
答案1
\documentclass{article}
\makeatletter
\newcommand{\mthook}{}
\newcommand{\apptomt}[1]{%
\xdef\mthook{%
\mthook^^J\string\gdef\expandafter\string\csname mt#1\endcsname{foo}}}
\AtEndDocument{\immediate\write\@auxout{\mthook}}
\makeatother
\begin{document}
\def\mt{section}
\apptomt{\mt}
\def\mt{subsection}
\apptomt{\mt}
\end{document}
生成辅助文件:
\relax
\gdef\mtsection{foo}
\gdef\mtsubsection{foo}