Problem s expanzi mezi \csname a \endcsname

Vladimír Solnický {Vladimir Solnicky} vs at utia.cas.cz
Wed Aug 20 10:44:36 CEST 1997


On Tue, 19 Aug 1997, Vladimír Solnický {Vladimir Solnicky} wrote:

> Dobry den!

> Mam pomoci \csname \endcsname definovana makra, ktera jako svoji hodnotu
> obsahuji odkazy (mam pouze zpetne odkazy, takze nepotrebuji pomocne
> soubory. Dale mam prevodni makro (PM), ktere mi z nazvu souboru vytvari
> text, ktery pak v podobe \csname text\endcsname ma tvorit jmeno makra --
> to pak chci testovat na definovanost (via \expandafter\ifx na \relax)
> a pokud je definovano, vypsat jeho hodnotu. A tady je problem. 
> 
> PM nemohu nadefinovat via \edef, protoze v nem docasne pracuji s ciselnym
> registrem (255), ktere prirazuji jmeno -- na tomto mi \edef konci. 
> 
> A pokud ho nadefinuji via \def, tak se mi nedari dosahnout toho, aby mi
> \ifx spravne rozlisovalo a \expandafter\csname \PM{XYZ}\endcsname vytisko
> hodnotu makra (vykonalo ho).

Poradil mi pan Petr Olšák, aby vysledna hodnota nebyla textem, ktery
produkuje vyse zminene makro \PM, ale abych si zavedl dalsi makro (napr.
\PMvysledek), ktere nadefinuji via \edef uvnitr makra \PM tak, aby
\PMvysledek obsahovalo vysledek vypoctu, ktery provadim v \PM. Pak staci
jednou zavolat \PM a vsude, kde potrebuji vysledek, tak pouzivat
\PMvysledek. Takto to funguje i v sekvencich jako

\csname \PMvysledek\endcsname 

\expandafter\ifx\csname \PMvysledek\endcsname \relax

coz je to, co jsem potreboval.

S pranim pekneho dne

V. S.

Vladimír Solnický, ÚTIA AV ČR, Pod vodárenskou věží 4,
CZ 182 08 Praha 8-Libeň, +420 2 6605/2364, telefax: +420 2 6884677,
vs at utia.cas.cz, klíče PGP via ,,SEND PGP KEY`` v předmětu dopisu.





More information about the csTeX mailing list