[Tex/LaTex] How to add a hook to a macro


LaTeX uses hooks extensively, one method employed is the command g@addto@macro. It is defined in source2e as:


I have used the g@addto@macro in the minimal example below:


\long\def\mainmacro{Preambles in main macro. \par}
\xdef\testOne{Contents of first macro. \par }
\xdef\testTwo{Contents of second macro. \par }

  \g@addto@macro{\mainmacro}{\testTwo \par}
  \g@addto@macro{\mainmacro}{Adhoc contents (1). \par}
  \g@addto@macro{\mainmacro}{\xdef\@elt{ Test } }
  \g@addto@macro{\mainmacro}{Adhoc contents (2).\@elt \par}


What would be the best way to add a hook to the macro – at the beginning or for that matter anywhere but the end?

Best Answer

\def\foo{\message{Here is the original \string\foo}}

% Add a hook to \foo (\foohook does not have be predefined):

% Demo:
\def\foohook{\message{Redefined \string\foohook}}

(Complete working example; to turn it into latex, remove \bye and add necessary latex cruft.)

Related Question