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