添加扩展钩的问题

添加扩展钩的问题

我有一个命令\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}

相关内容