LaTeX: template pro pisemku - help...

Antonin Strejc STREJC at vc.cvut.cz
Thu Apr 23 19:06:21 CEST 1998


Petr Prikryl pise:
>Na konci prispevku uvadim plnou podobu template, ktery nyni pouzivam
>pro sazbu zadani pisemky. Mimo jine pouzivam hodnotu ziskanou z aux
>souboru uvnitr makra a pri prvnim pruchodu se hlasi toto:
>
>    No file P.aux.
>
>    LaTeX Warning: Reference `soucet' on page 1 undefined on input line 35.

Az potud je to normalni chovani LaTeXu, kdy pri prvnim pruchodu jeste
nejsou sestavene krizove reference. Neni treba se znepokojovat,
nakonec, je to "jen" Warning.

>    ! Missing number, treated as zero.
>    <to be read again>
>               \protect
>    l.47 \Body
>
>    ?

Toto uz je vazna chyba, ktera je zpusobena tim, ze ve smycce \loop
pouzivate v numerickem testu makro \ref{soucet}, ktere pri prvnim
pruchodu expanduje na nenumerickou sekvenci tokenu. Je treba rozsirit
makro \Body o test, zda se jedna o prvni ci dalsi pruchod. Odzkousel
jsem tuto upravu:

\def\Body{\n=0
  \edef\limit{\ref{otazky}}
  \setbox1\hbox{\meaning\limit}
  \ifdim\wd1>200pt\def\limit{1}\fi
  \centerline{\hbox{%
    \loop\ifnum\n<\limit\advance\n by 1%
      \vbox{%
        \hbox{\makebox[7mm][c]{{\small\number\n\strut}}}%
        \hbox{\framebox[7mm]{\rule{0pt}{1cm}}}%
      }\kern-\fboxrule%
    \repeat}}}

Zavadim pomocne makro \limit, ktere ve druhem a dalsim pruchodu
expanduje na cislo dane jiz znamou referenci "otazky". V prvnim
pruchodu, kdy reference jeste neni znama, expanduje na sahodlouhou
sekvenci tokenu danou chovanim makra \ref pri nezname referenci.
Necham-li si vysledek expanze zjistit primitivem \meaning a uzavru-li
jej do boxu, mohu se rozhodovat podle sirky tohoto boxu. Pri prvnim
pruchodu je box jiste mnohem sirsi nez 200pt, pri dalsich pruchodech
jiz ne. Pri identifikaci prvniho pruchodu, kdy jeste neni znama
ciselna hodnota nutna pro nasledny \ifnum, se makru \limit priradi
natvrdo nejake cislo, zde jednicka (nula neni vhodna, protoze by
se tabulka kreslila az ve druhem pruchodu, coz by zmenilo strankovy
zlom).

>Diky za pripominky,
>                    Petr

S pozdravem
Antonin Strejc

---------------------------------------------------------------------
Ing. Antonin Strejc                            Phone: +420-2-24352938
---------------------------------------------------------------------
Czech Technical University in Prague                 Computing Centre
Czech Republic                               Zikova 4, 166 35 Praha 6
---------------------------------------------------------------------



More information about the csTeX mailing list