kalkul

Michal Kubecek kubecek at karlin.mff.cuni.cz
Thu Oct 17 09:53:20 CEST 1996


> mel bych jeden dotaz na TeXprogramatory. Rad bych docilil toho, aby
> mi TeX secetl sloupec cisel, ktery prave vysazel  a na zadanem miste
> dosadil vysledek. Predstavoval bych si to nejak takto:
>
> \bodypisemkaA{25} resp. \bodypisemkaA{Text prvni polozky}{25}
> \bodypisemkaB{40}
> \bodypisemkaC{15}
> \bodyustni{120}
> \celkem
>
> Jeste lepsi, kdyby to mohlo byt jedno makro \body{}, aby pouziti bylo
> variabilnejsi a univerzalnejsi.
> Pozadovany vysledek asi v podobe:
>
> Text prvni polozky   25
> Text druhe ...       40
> ...
> ------------------------
> Celkem              200

Tohle by snad mohlo fungovat:

\newcount\bodycnt
\newcount\xxcnt

\def\body#1\endbody{%
  \global\bodycnt = 0
  \halign{%
    ##\hfil&\hfil##\cr %% pred druhy \hfil by to chtelo nejakou mezeru
    #1%
    \noalign{%
      \vskip 2 mm %% nevim kolik
      \hrule      %% height tloustka
      \vskip 2 mm %% nevim kolik
    }%
    Celkem&\xxcnt=\bodycnt\divide\xxcnt2\relax\the\bodycnt\cr
  }%
}

\def\bline#1#2 {%
  #1&\global\xxcnt=#2\relax\the\xxcnt\global\advance\bodycnt\xxcnt\cr
}

%% to saskovani s delenim dvema na konci je tam kvuli tomu, ze v \halign
%% se kazda bunka expanduje dvakrat (poprve kdyz zjistuje sirku, podruhe
%% kdyz se skutecne sazi
%% pozor: takhle je to zavisle na neodkomentovanem konci radku (ale
%% nechce se mi premyslet, jak to odstranit). Moje oblibene \eatspaces
%% zpusobi 'Misplaced \noalign'

\body
  \bline{prvni}{20}
  \bline{druha}{10}
  \bline{treti}{5}
\endbody







More information about the csTeX mailing list