Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
TeX pro každého - grafické nadstavy, rentabilita nasazení TeXu, barvy v TeXu

Vojtech Hala
Vojtech Hala (neregistrovaný)
22. 11. 2002 20:24

loop example z II. dilu

Psal jsem komentar i ke druhemu dilu, ale tam to uz asi mesic nikdo necte, tak to jeste zkusim tady:

Ja jsem sice v zivote v TeXu neprogramoval, ale ten priklad s definici makra \loop se mi nejak nelibi. Nejvic asi proto, ze tam je \else a \fi, ale neni tam \if, takze to v me hlave neproslo syntaktickou analyzou. ;-) Krome toho jsem nepochopil, co dela \repeat, kdyz je nad tim napsano, ze TeX nema zadnou konstrukci na cykly. Za vysvetleni dekuji.

PS. Serial je jinak sqelej, diky za nej! :)

Stanislav Brabec
Stanislav Brabec (neregistrovaný)
25. 11. 2002 12:12

Re: loop example z II. dilu

Dávám to sem i ke starému příspěvku:

\def\loop#1\repeat{\def\body{#1}\iterate}

\def\iterate{\body \let\next\iterate

\else\let\next\relax\fi \next}

Příklad použití:

\newcount\cnt

\loop\ifnum\cnt<10 a\advance\cnt by1\fi

(vypíše deset a)

Tedy if se nachází mimo makro. TeX skutečně nemá konstrukci na cykly. Toto makro funguje tak, že:

- nadefinuje tělo cyklu jako makro \body

- pokud není splněna podmínka opuštění cyklu, expanduje se \next v makru \iterate opět na \iterate

- pokud je splněna, expanduje se na \relax a expanze končí

Zasílat nově přidané příspěvky e-mailem