mizejici slozene zavorky pri nacitani parametru makra

Zdenek Wagner wagner at cesnet.cz
Mon Jul 17 20:32:40 CEST 2006


On Mon, 17 Jul 2006, Milan Vancura wrote:

> Dobry den,
>
> narazil jsem na zvlastnost, ke ktere jsem zatim nenasel vysvetleni ani v TBN -
> mozna ze spatne hledam, mozna je to opravdu divnost \TeX{}u?
>
V mem TeXbooku v kapitole 20 = Definitions na strane 203 dole zacina
dvojita nebezpecna zatacka s textem "How does TeX determine where an
argument stops, you ask. Answer: ..." O par radku dale je: "In both cases,
if the argument found in this way has the form '{<nested tokens>}', where
<nested tokens> stands for any sequence of tokens that is properly nested
with respect to braces, the outermost braces enclosing the argument are
removed and the <nesting tokens> will remain."

> Nasledujici kod ukazuje z meho pohledu chybu
>
> ------------------------------------------------
> \tracingmacros=2
> \def\inttest#1\endtest{{pred #1 po}}%
>
> \message{bez zavorek}
> % do #1 se ma nacist "\bf ahoj" a take se nacte, OK
> \inttest \bf ahoj\endtest
>
> \message{se zavorkami a pomocnym znakem}
> % do #1 se ma nacist "{\bf ahoj}a" a take se nacte, OK
> \inttest {\bf ahoj}a\endtest
>
> \message{se zavorkami}
> % do #1 se ma nacist "{\bf ahoj}" a nacte se "\bf ahoj", slozenice zmizely
> \inttest {\bf ahoj}\endtest
>
> \message{bye}\bye
> ------------------------------------------------
>
> Kratce: pokud separovany parametr obsahuje prave jednu skupinu uzavrenou {..},
> tak jeji ohranicujici slozene zavorky se do hodnoty parametru makra neprenesou.
> Presto ze se jedna o SEPAROVANY parametr. Staci pridat cokoliv pred nebo za tu
> skupinu a je vse OK, napr. tedy i toto dopadne OK, prenesou se obe skupiny:
>
> % i prazdna skupina pomuze
> \inttest {\bf ahoj}{}\endtest
>
> Nevite prosim nekdo, v cem je zakopany pes?
>
> Dekuji,
>
> Milan Vancura
>

Zdenek Wagner
e-mail: wagner at cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
         http://icebearsoft.euweb.cz




More information about the csTeX mailing list