Makro na zkratky v plainu
David Necas (Yeti)
yeti at physics.muni.cz
Tue Jan 6 08:19:12 CET 2004
On Tue, Jan 06, 2004 at 04:10:26AM +0100, Matous Jan Fialka wrote:
> zasekl jsem se na nasledujicim pravdepodobne typicky zacatecnickem problemu:
>
> \def\zkratka#1#2{\def\#1{#2}}
> \zkratka{ahoj}{Ahoj vespolek}
>
> \ahoj % nefunguje :(
>
> Vysledek by mel byt takovy, ze pokud nekam v textu napisu \ahoj, melo by se
> vysazet "Ahoj vespolek", ale to se nedeje. Proc? Asi mi neco unika, prosim
> poradte :)
\def\zkratka#1#2{\def\#1{#2}}
nadefinuje makro na tuto posloupnost tokenů:
\def, \#, 1, {, #2, }
^^
Z čehož je vidět, co je špatně. Funkční definice je musí
použít konstrukci \csname ... \endcsname, která ze svého
obsahu dělá kontrolní sekvenci, např.
\def\zkratka#1#2{\expandafter\def\csname#1\endcsname{#2}}
Vysvětlení a podobný příklad viz např. v TBN str. 44-45.
Yeti
--
Do not use tab characters. Their effect is not predictable.
More information about the csTeX
mailing list