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