On Sun, Mar 11, 2001 at 01:19:46AM +0100, Marcin Gryszkalis wrote:
> witam
>
>  Czy ktoś może ma doświadczenie w skłądaniu LaTeXem słupków -- mam
>  na myśli takie słupki matematyczne, np.:
>
>    234
>   +123
>  -----
>   ....
>
>
>   Próby z użyciem tabular + \hline dają raczej kiepski efekt, a dobre
>   wyrównanie oznaczałoby wstawianie każdej kolumny cyfr do oddzielnej
>   kolumny tabulara (bo użycie czcionki tt nie wchodzi w grę).
>
>   Czy może ktoś słyszał o gotowych rozwiązaniach lub ma własne
>   doświadczenia w tej dziedzinie? Wszelkie sugestie mile widziane.
>


 % Ja nie LateXowiec, a i pora (2:30 w nocy mało sposobna),
 % impreza umiera. Wszystko co było do wypicia wypili.

\documentclass{article}%cokolwiek
\begin{document}
 % ^^ Tak sie zdaje się w LaTeX zaczynało, dalej będę niestety
 % plainił, bo z LaTeXem u mnie kiepskawo :-(, pan(i) Lamport
 % wybaczy. I Marcin W. też! O Prezesie naszym nie wspomnę.

\halign{\hfil #\cr
  234\cr
  23332233232\cr
  +\kern 3pt 21\cr
  \noalign{\smallskip\hrule\smallskip}
  23332233487\cr}

\end{document}


Ewidentnie wychodzi dobrze, prawdopodobnie dlatego, że font cmr10
ma wszystkie liczby stałej szerokości co możemy zobaczyć pisząc
\newcount \X \X=`0
\newlinechar=`\@ %<- dla przyzwoitości
\loop
  \lccode`*=\X
  \lowercase{\setbox0=\hbox{*}\message{* -- \the \wd0@}}
\ifnum \X<`9
  \advance \X by 1
\repeat

Wszystkie jako jeden mąż mają szerokość 5.00002pt.


Gorzej jest jeśli jeden z drugim wezmą font o szerokości cyfr tak
stałej jak zawsze wierni małżonkowie podczas bachotkowego
ogniska. Niestety (lub na szczęście) nie udało mi się wyłowić
takiego fontu, spróbowałem: Times, Helvetica, Bookman,
NewCenturySchoolbook, Utopia, wszystkie mają cyfry szerokości
stałej. Gdyby się jednak zdażyło, no to mamy problem. Zakładam,
że chciałbyś uniknąć rozwiązania typu.

\halign{#&&\hfil #\hfil\cr
  &&&&&&&&&2&3&4\cr
  &2&3&3&3&2&2&3&3&2&3&2\cr
  &&&&&&&&&\llap{+}&2&1\cr
  \noalign{\smallskip\hrule\smallskip}
  &2&3&3&3&2&2&3&3&4&8&7\cr}




\documentclass{article}
\usepackage{utopia}
\begin{document}
 % dalej jest plain zapisany w LaTeXu, LaTeXować ładnie nie
 % umiem.

{\catcode`\+=\active\catcode`\-=\active
 \let\+=\relax \let\-=\relax % Żeby nie były \outer
 % Przepraszam za \gdef, nie chcę mącić, bo mnie znowu
 % na liście ochrzanią :-(
\gdef \BeginSlupek #1{\begingroup
  % Chyba się powtarzam, prawda?
  \catcode`\+=\active\catcode`\-=\active
  \def +{\llap{\char `+}&}\def-{\llap{\char`-}&}%
  % Dlaczego w plainie nie zrobili żadnego \count na scratch? W
  % LaTeXu, z tego co mi mówił MW, jest. Wykorzystuję \count0 bo
  % raczej nie może się zdażyć, żeby strona była łamana w trakcie
  % liczenia tabelki. Jeśli może to przepraszam.
  \count0=`\0
  \loop
     \lccode`\~=\count0
     \lowercase{\catcode`~=\active
       \def ~{\char`~&}}
    \ifnum \count0<`9
       \advance\count0 1
  \repeat
  \def \Kreseczka{\noalign{\smallskip \hrule \smallskip}}
  \halign #1\bgroup ##&&\hfil##\hfil\cr}

\gdef \EndSlupek{\crcr\egroup\endgroup}}

% Na przykład, &-mi wypełniasz wolne miejsca, można zrobić aktywne spacje
% i końce wierszy, ale to by nic nie wniosło, a skomplikowałoby
% przykład.
\BeginSlupek{}
  &&&&&&&&&234\cr
  &23332233232\cr
  &&&&&&&&&+21\cr
  \Kreseczka
  &23332233487\cr
\EndSlupek

\end{document}



Czy o to chodziło?

--kl

Odpowiedź listem elektroniczym