Vlákno názorů k článku TeX pro každého - TeX jako jazyk od Vojtech Hala - Ja jsem sice v zivote v TeXu neprogramoval,...

  • Článek je starý, nové názory již nelze přidávat.
  • 22. 11. 2002 13:04

    Vojtech Hala (neregistrovaný)

    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! :)

  • 25. 11. 2002 12:12

    Stanislav Brabec (neregistrovaný)

    \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čí