Sloupce tabulky s pevnou ¹íøkou a centrovaným obsahem

Stepan Kasal kasal at matsrv.math.cas.cz
Tue Dec 11 12:48:55 CET 2001


On Sat, 8 Dec 2001 15:55:12 +0100, Jan Trmal <afrox at centrum.cz> wrote:
> Zdravím,

I ja Vas!

> mam takovy mozna trvivialni problem. Vytvoril jsem tuto tabulku:
...
> 3& 2& 3& 1\\
> \hline
> 1& 7& 1& 10\\
...
> Kdyz z toho udelam dvi, tak ta tabulka vypada silne nepekne, protoze ten
> posledni sloupec tabulky je roztazen podle cisla deset ve ctvrte radce.

Muzete misto "10" napsat "\llap1\rlap0", to je objekt se sirkou nula, ze
ktereho deleva couha kresba cislice 1 a doprava kresba cislice 0.
Tehoz lze docilit pomoci "\hbox to0pt{\hss10\hss}".
Nebo to lze vysadit trochu excentricky, protoze 1 ma stejnou sirku jako
ostatni cislice, ac je jeji kresba jen uprostred (vizte priklad v pripojenem
souboru).

Dale se mi nelibi, ze mate cislice prilis nalepene k hornimu okraji poli.
I to resim v pripojenem prikladu, makro \tabstrut

> 1) Jde nejak specifikovat zarovnavani i ve formatu tabulky p{}?

Nevim, jen bych rad podotkl, ze p{} je tu od toho, aby se v prislusnem
sloupci v kazdem policku objevil text, zarovnany do odstavce zadane sirky.
Takze chtit po nem, aby centroval mi nepripada moc prirozene.

> 2) Jak zjistim delku nejakeho vysazeneho textu, napr. delku "10" v bodech. To
> abych tam nemusel psat to p{1.5em}?

V plainu takto:

\newdimen \sirka
\setbox0 = \hbox{10}
\sirka = \wd0

V LaTeXu to samozrejme funguje taky.
Je mozne, ze v LaTeXu jsou jeste nejake jine zpusoby.

======
Jinak, ja bych tento priklad povazoval za jeden z peknych prikladu situace,
kdy se nehodi pouzivat prostredi tabular.
Resil bych to jednoduse pomoci primitivu \hbox a \vbox, jak vidno z druhe
casti pripojeneho souboru.
V tomto druhem prikladu jsem se take polepsil, co se tyce excentricity
te desitky, uz to neni v absolutnich jednotkach, ale v jednotce "em," coz
je sirka ctverciku aktualniho fontu.

Preji prijemne studium.
Pokud se Vam neco nepovede rozlousknout, ozvete se.

> Moc dekuji
>   Honza

S pozdravem,
	Stepan Kasal

\documentclass{article}
\begin{document}

\newcommand\tabstrut{\vrule height10pt width0pt}
\noindent
%
\begin{tabular}{|c|c|c|c|}
\hline
\tabstrut
5& 7& 2& 6\\
\hline
\tabstrut
1& 8& 9& 6\\
\hline
\tabstrut
3& 2& 3& 1\\
\hline
\tabstrut
1& 7& 1& \hbox to 0pt{\hss\kern-1pt 10\hss}\\
\hline
\tabstrut
9& 9& 8& 7\\
\hline
\end{tabular}

\kern 2cm

\newbox \tabstrutbox
\setbox \tabstrutbox = \hbox{\vrule height11pt depth4.5pt width0pt}
\def\tabstrut{\unhcopy\tabstrutbox}
\newdimen \velikostpole
\velikostpole = \ht\tabstrutbox
\advance\velikostpole by \dp\tabstrutbox
\def\pole#1{\hbox to \velikostpole {\hfil #1\hfil}}
\def\radka #1 #2 #3 #4 {
	\hbox{%
		\tabstrut \vrule
		\pole{#1}\vrule
		\pole{#2}\vrule
		\pole{#3}\vrule
		\pole{#4}\vrule
	}
	\hrule
}

\newdimen \jednicka
\setbox0 = \hbox{1}
\jednicka = \wd0

\vbox {
\hrule
\radka 5 7 2 6
\radka 1 8 9 6
\radka 3 2 3 1
\radka 1 7 1 \kern-.1\jednicka10
\radka 9 9 8 7
}

\end{document}




More information about the csTeX mailing list