[texhax] Macro that defines other macros
Niall Mansfield
texhax at uit.co.uk
Mon Jul 9 16:41:44 CEST 2007
The macro below works, sort of. We use it to define many (about 20)
"editorial marks" which show up in a draft manuscript. E.g.
\defineedvis{AMPLIFYthis}{amplify}
\defineedvis{CHANGEthis}{change this}
\defineedvis{CHECKthis}{check}
It's not perfect though: when e.g. \CHANGEthis{...}{...} is called,
it seems to swallow some stuff after the final curly bracket.
Is there an obvious mistake? (As this is TeX code I suppose
I should sprinkle \relax's all over the place but why?)
Thanks,
Niall
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Define a visible editorial mark, which shows MARGINTEXT as a note (in blue) in the margin,
%% and underlines the related text in the body.
%%
%% \defineedvis{MACRONAME}{MARGINTEXT}
%%
%% e.g. \defineedvis{TOBECHECKED}{not known} creates the macro:
%% \TOBECHECKED{DATE}{Double-check this}
%% which we might use like
%%
%% ... a big banana costs \TOBECHECKED{9-Jul-2007}{ten cents} from the local store
%%
%% and then we get "9-Jul-2007 Double-check this" in the margin,
%% and "ten cents" underlined in the body text.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\defineedvis}[2]
{
\expandafter\def\csname #1\endcsname##1##2
{\marginpar{\raggedleft\relsize{-3}\textcolor{blue}{\textbf{#2} ##1}}
\uline{##2}}
}
More information about the texhax
mailing list