[cstex] csname

Zdenek Wagner zdenek.wagner at gmail.com
Mon Aug 27 17:06:58 CEST 2012


Dne 27. srpna 2012 15:48 Jan Sustek <Jan.Sustek at seznam.cz> napsal(a):
> Dobry den,
>
> uz na konferenci jsem se chtel zeptat, jak je to s expanzi \csname...\endcsname, pokud prislusna ridici sekvence neni definovana. Ale zapomnel jsem, proto se ptam tady.
>
> Pokud prislusna ridici sekvence neni definovana, definuje ji expand procesor jako \relax. Otazkou je, jestli toto definovani ma byt lokalni, nebo globalni. Podle TeXbooku (strany 40 a 213) se to tvari, ze se jedna o definici jako kazdou jinou. Presneji, TeXbook se tvari, jako by expand procesor definoval
> \expandafter\let\csname...\endcsname\relax
> To znamena, ze by dle meho nazoru pri nastavenem \globaldefs=1 melo byt ono \relax definovano globalne.
>
> Ale jak si muzete vyzkouset, i pri nastaveni \globaldefs=1 je toto \relax definovano lokalne.
>
> {\globaldefs1 \csname bflmpsvz\endcsname}
> \ifx\bflmpsvz\relax globalni\else lokalni\fi
> \bye
>
> Nebo se muzete podivat do sekce 372 souboru tex.web, kde je tento \relax natvrdo definovan lokalne, bez testu na globalitu, ktery se provadi jinde, napriklad v sekci 1221, kde je implementovan primitiv \let.
>
> Otazkou je, jestli je nejaky zdokumentovany duvod, proc se TeX takto chova. Pripada mi to jako chyba TeXu, ale DEK o tomto vi, protoze o zmenach ve verzi TeXu 2.9 z prosince 1987 pise [[made \csname\endcsname's "relax" local']].
>
> Nevite, proc to tak je nebo proc to neni zdokumentovano?
>
Kdyz mel DEK prednasku v Praze, rekl, ze v \csname je chyba, protoze napr. po
\expandafter{\csname undefined\endcsname} neni \undefined definovano.

> Diky.
>
> Honza Sustek
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz




More information about the csTeX mailing list