LaTeX: tabulka s pevnou sirkou sloupcu?

David Necas (Yeti) yeti at physics.muni.cz
Wed Nov 30 10:31:22 CET 2005


On Wed, Nov 30, 2005 at 09:45:44AM +0100, Jaromír Kuben wrote:
> Rudo Blasko napsal(a):
> 
> >jedna zo zjednodusenych moznosti je,
> >ze odhadneme velkost najsirsieho stlpca a pouzijeme p{},
> >lenze potom musime stlpec centrovat rucne,
> >napriklad:
> >
> >\newcommand\xc[1]{\hfill #1\hfill\vphantom{.}}
> >
> >\begin{tabular}{|p{4em}|*{3}{p{4em}|}}
> >\hline
> >\xc{THEN} & \xc{FOR} & \xc{a}    & \xc{b} \\ \hline
> >\xc{x}    & \xc{d}   & \xc{ECHO} & \xc{c} \\ \hline\hline
> >\end{tabular}
> >
> To centrovani pak lze udelat elegantneji.
> Pouzijte \usepackage{array}.
> Muzte pak definovat nove typy specifikace sloupcu
> a do definice pomoci >{} resp. <{} vlozit nejake prikazy,
> ktere se automaticke vkladaji do kazde polozky.
> Podrobnosti najdete v dokumentaci k balicku array.

Hlavni problem ovsem asi neni, jak dostat do definice
sloupcu cokoli (k tomu lze vzdy pouzit primo primitiv
\halign), ale jak zaridit stejne, a pritom minimalni sirky.
Pokud jsem spravne pochopil, o co jde. Lze sazet
dvoupruchodove, v prvnim pruchodu si jen zmerit sirky
a v druhem cetnrovat do boxu o jiz zname velikosti (pro
jednoduchost nekreslim cary):

\def\maketable#1{\halign{&\apply{##}\cr#1\crcr}}
\def\fwtable#1{
  \dimen0=0pt
  \def\apply##1{\setbox0=\hbox{##1}\ifnum\wd0>\dimen0 \global\dimen0=\wd0\fi}
  \setbox0=\vbox{\maketable{#1}}
  \def\apply##1{\hbox to\dimen0{\hfil##1\hfil}}
  \maketable{#1}}

\fwtable{THEN&FOR&a&b\cr
         x&d&ECHO&c\cr}

\bye

Slo by to nepochybne prepsat i s package array.

Yeti


--
That's enough.




More information about the csTeX mailing list