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