LaTeX: template pro pisemku - help...

Petr Prikryl prikryl at dcse.fee.vutbr.cz
Tue May 5 23:54:12 CEST 1998


Vrele diky za zapojeni do akce...

Stepan Kasal (kasal at matsrv.math.cas.cz) wrote:
>On 21 Apr 1998 13:54:11 (nebo spise o nekolik dni drive), Petr Prikryl wrote:
>> \addtocounter{otazky}{-1} \refstepcounter{otazky} \label{otazky}
>> \addtocounter{soucet}{-1} \refstepcounter{soucet} \label{soucet}
>
>coz mne natolik zdesilo, ze jsem se ja, zaryty plainista, ponoril
>do hlubin souboru latex.* (kteryzto soubor je obrovsky, automaticky vytvoreny
>a temer prost komentaru), abych vystaral toto:

Nejsem plainista (jeste ne), ale mozna by Vam pomohlo vedet, ze zdrojove
texty *.dtx lze prelozit normalnim LaTeXem a dostanete pekne vysazeny dokument
s komentovanou podobou toho, co jste videl v latex.ltx (tohle vim, to jak
se v plainovych vecech orientovat, to nevim -- takze mockrat dekuji).

>Uvazme nasledujici priklad:
>\documentclass{report}
>  \newcounter{xyz}
>  \makeatletter
>  \AtEndDocument{\write\@auxout{\string\setcounter{xyz}{\the\value{xyz}}}}
>  \makeatother
>\begin{document}
>  Hodnnota xyz \arabic{xyz}
>  \setcounter{xyz}{15}
>\end{document}
>
>Timto mechanismem docilim toho, ze:
>-- v prvnim pruchodu:
>   definuji xyz, jeho hodnota je tudiz 0.
>   v prubehu zpracovani se "zjisti", ze ma byt xyz=15
>   na konci se toto zjisteni zapise do aux souboru
>-- ve druhem pruchodu:
>   definuji xyz, jeho hodnota je 0.
>   pri provadeni \begin{document} se nastavi xyz=15
>   a jede se ....

Pro uvazovany ucel je tam drobna chyba. Pocitadlo se postupne
zvetsuje a pri ulozeni do aux a novem prekladu se bude zvetsovat
dal. Naznaceny inspirujici postup jsem modifikoval tim,
ze jsem pouzil dve pocitadla (viz take varovne
hlaseni, ze se neco zmenilo). Nove pocitadlo pocita vzdy
od nuly a vysledna hodnota se do aux uklada pod jmenem stareho
pocitadla. Pri tisku hodnot se pouziva vzdy stare pocitadlo.

[...]
>Abyste docilil varovani podobneho jako "Cross-References has changed",
>mel byste udelat zhruba toto:
>- \newcounter{otazky_old}
>- do makra \Body dat na zacatek \setcounter{otazky_old}{\value{otazky}}
>  a pridat
>  \AtEndDocument{\ifnum\value{otazky_old}=\value{otazky}\else
>     \PackageWarningNoLine{pisemka}{Pocet otazek se zmenil. Doporucuji
>         prekompilovat jeste jednou.}\fi}
>Nezkousel jsem to, mohou tedy nastat problemy, ozvete se, bude-li potreba.

Po vyse zminenych upravach to funguje dobre. Jeste vsemu tak uplne nerozumim
(treba co dela \makeatletter a \makeatother), takze vysledek asi neni optimalni.
Cele jsem to trochu jeste pomenil a vysledek muzete posoudit, kdyz si
stahnete
          http://www.fee.vutbr.cz/~prikryl/ZIP/pisemka.zip

dostupny tez ze stranky

          http://www.fee.vutbr.cz/~prikryl/dtp.html

>Jak se naucit programovat v plainu?
>  Precist si TeXbook, TeXbook a TeXbook.  (Pri prvnich dvou pruchodech
>  se zpracovava pouze cast textu -- viz tzv. "dangerous bend".)
>  Pri kazde prilezitosti se divat do souboru plain.tex.
>
>Jak se naucit programovat v LaTeXu?
>  Precist si knihy The TeXbook, knihu TeXbook a knihu The TeXbook.
>  Pri kazde prilezitosti si najit v souboru latex.ltx (nebo lepe v prislusnych
>  kometovanych zdrojacich) veci tykajici se meho problemu (v tomto pripade
>  counteru).
[...]

Ja se tomuto postupu nijak nebranim. Jenom na to zatim nemam cas ;-)
Pravda je, ze LaTeX je v podstate slozitejsi aplikace zapsana v plainu.
Nebo ne? Asi neuskodi, kdyz clovek ovlada oboji.

Diky za pomoc, dobre se to vyviji.

            Petr

--
Petr Prikryl (prikryl at dcse.fee.vutbr.cz)   http://www.fee.vutbr.cz/~prikryl/
TU of Brno, Dept. of Computer Sci. & Engineering;    tel. +420-(0)5-7275 218



More information about the csTeX mailing list