parametr makra aktivnim znakem

Petr Olsak olsak at math.feld.cvut.cz
Wed May 21 14:49:50 CEST 1997



On Wed, 21 May 1997, Karel Horak l.209 205 wrote:

> > Dobry den,
> > mam takovy dotaz:
> > Chtela bych neco jako
> >
> > \def\makro#1{
> > \catcode`#1=\active
> > \def #1{ delej neco }
> > ..neco dalsiho
> > }
> >
> > \makro{a}
> >
> > Jako ze abych mohla nejaky znak udelat aktivnim, ale jeste nevim ktery.
> > Ale nevim, jak to vprogramovat, je to furt dokola inaccesible nebo jine
> > hlasky.
> >
> Nejlepsi bude, kdyz si v plainu najdete, jak je definovano makro
> \obeylines!
>
> Mnoho uspechu preje
> Karel Horak

\obeylines s tim nema nic spolecneho. Jde o to udelat makro, ktere
pracuje s tokenem kategorie 13, ale dopredu nevi, jakou ASCII hodnotu
ten token bude mit (to se dozvi az z parametru).

Toto je pomerne zajimavy problem, ktery zde jiz vyresil pan Ginzel, ovsem
v zapise jeho reseni byl nejaky renonc, takze to uvedu znova:

\catcode`^^X=13
\def\makro#1{%
  \catcode`#1=13 \uccode`^^X=`#1
  \uppercase{\def^^X}{ delej neco, #1 je zde neaktivni znak }
  ..neco dalsiho
}

Vtip je v tom, ze \makro precte do #1 znak a jeho ascii hodnotu "zasune"
do pradne krabicky ^^X, ktera uz ma pripravenu kategorii 13. Toto
"zasunuti" se provede prostrednictvim nastaveni \uccode od ^^X a
primitivem \uppercase.

Petr Olsak




More information about the csTeX mailing list