Rozdil ve vysledku

Stepan Kasal kasal at math.cas.cz
Wed Sep 15 15:17:07 CEST 2004


Dobry den,

> \count1=#1\ifnum\count1>\max\global\max=\count1\fi%
> \ifnum\count1<\min\global\min=\count1\fi\fi\next}

jiz bylo receno, ze za #1 v prirazeni mate dat mezeru nebo \relax.
(Ta mezera se nevysadi, v gramatice TeXu je receno, ze cislo je mj.
posloupnost cislic a za ni nepovinna mezera.  Cili TeX tu mezeru
spolkne.)

K podrobnejsimu pochopeni, co se delo, si musite uvedomit, ze TeX
vyhodnocoval podminku "\ifnum\count1>\max" jeste pred tim, nez dokoncil
prirazeni, tedy se starou hodnotou \count1.

1) Pokud byla splnena, narazil na \global, ktery nemuze byt soucasti
cisla, takze TeX dokoncil prirazeni \count1=#1 a prirazeni \max=\count1
jiz provadel s nove nactenou hodnotou.
2) Pokud nebyla prvni podminka splnena, blok \ifnum...\fi se preskocil
a pokracovalo se dalsi podminkou: "\ifnum\count1<\min\", stale jeste
s predchozi hodnotou \count1.
2.1) Pokud byla splnena, je tam \global, dokoncilo se prirazeni...
2.2) Nebyla-li splnena, narazilo se na \next, coz je makro zacinajici
  \edef, pripadne primitivum \relax, takze se mohlo dokoncit prirazeni
  \count1=#1

Uff, za domaci cviceni si muzete podrobne projit, proc to davalo takove
vysledky, jake to davalo.

Nedavno jsem videl citat nekoho z otcu UNIXu (Kernighan, Ritchie, Thompson?)
neco jako:

Macro languages are very appealing because they are so easy to create;
the only problem is that the effects of them in not predictable.

Zdravim,
	Stepan Kasal



More information about the csTeX mailing list