definice makra -- znovu

Pavel Mach mach at utia.cas.cz
Tue Jul 22 12:54:45 CEST 1997


> chtel bych mit moznost psat neco jako \lv{text} kde se v textu ceske "t"
> (myslim t s hackem) nahradi sekvenci "\c{k}", dlouhe "i" se stane
> "\={\i}" a pod. Nasledujici makro mi ale nefunguje a ja jsem nedokazal
> vymyslet proc:
> \def\lv#1{
> \catcode`\t=\active
> \catcode`\i=\active
> \deft{\c{k}}
> \defi{\={\i}}
> #1}
>
Snad se moc nemylim; v dobe definice makra se prikazy v jeho tele
neprovadi, proto je pri poslednich dvou definicich \catcode znaku ,t' a
,i' stale stejny jako pred radky \catcode... (pravdepodobne 11).
Resenim je docasne nastavit \catcode potrebnych znaku a pote definovat
makro. Pro delsi texty je lepe pouzit \beglv <text> \endlv. Je treba take
dat pozor pokud nastavujeme jako aktivni znaky vyskytujici se v makrech,
ktera pri definici pouzivame (napr. \catcode, \letm \def ...):

(T, I znamena ,t' s hackem, ,i' s carkou) :

{\catcode`T=13\catcode`I=13
  \gdef\beglv{\bgroup
  \def\thacek{\c{k}}%
  \def\icarka{\={\i}}%
  \catcode`T=13\catcode`I=13
  \let T=\th \let I=\ic}
\def\endlv{\egroup}
\def\lv#1{\beglv#1\endlv}

                                                                Pavel Mach
                                                          mach at utia.cas.cz
 _________________________________________________________________________
 | tel: (4202) 66052283 | Institute of Information Theory and Automation |
 | fax: (4202) 6684677  |                      Czech Academy of Sciences |
 -------------------------------------------------------------------------




More information about the csTeX mailing list