Expanze pri zapisu do souboru
Michal Kubecek
kubecek at karlin.mff.cuni.cz
Sat Apr 8 00:45:21 CEST 2000
Abych shrnul pouzitelna reseni:
a) pouziti \protect
Tak se to dela v LaTeXu. Popisuje Z. Wagner v tretim dilu LaTeXove
kucharky, Zpravodaj 3/97, str. 142. Zminuje se o nem i P. Olsak
v TBN kap. 7.1, str. 288. Zde je take vysvetleno, proc to funguje.
b) predefinovani na \relax
Reseni, ktere popisuje zmineny odkaz do TBN. Nevyhodou je, ze na to
clovek musi myslet. Nekde jsem videl rafinovanejsi pristup, kdy si
to dela nejake makro automaticky (myslim, ze to bude nekde v TeXbooku,
nejspis Appendix D).
c) vyuziti toho, ze prvky token listu se pri \the\xxxtoks dale neexpanduji.
Tohle reseni osobne pouzivam a velice se mi osvedcilo. I problemy
s generovanim obsahu se daji snadno vyresit. Pokud pisete styl pro
plain, ktery budou pouzivat jini (a nechcete je nutit k pouzivani
nejake analogie robustnich maker), nevim o jine moznosti.
> Ale varianta \let\neco\relax se ukazala jako schudna. Funguje ve vsech
> pripadech az na jeden, a to kdyz makro, ktere chci takto upravit, obsahuje
> ve svem nazvu znak ceske abecedy (priklad: \az (s hackem nad zet,
> jsem v LaTeXu 2e). To se expanduje na \a z (\a mezera z s hackem).
V LaTeXu 2e je zvlastni zpusob reseni diakritiky, ktery ma sve vyhody
a nevyhody. Jednou nevyhodou je fakt, ze pismena s diakritikou nemaji
kategorii 11, nemohou tedy byt v nazvu makra. Pokud vam to tedy dosud
fungovalo, byla to cira nahoda, ze jste nenadefinoval napr. makra
\az a \ac (oboje s hackem). Ve skutecnosti by se jednalo o dve definice
makra \a
> Nevite o nejakem reseni (jinem nez predefinovat makro)?
Nepouzivat LaTeX 2e. To byl jen vtip. Ale pokud chcete pouzivat LaTeX 2e,
pak opravdu nelze pouzivat pismena s diakritikou v nazvech maker. Souhlasim
ale se Z. Wagnerem, ze pouzivani diakritiky v nazvech maker neni rozumna
vec kvuli prenositelnosti.
Michal Kubecek
More information about the csTeX
mailing list