PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zellen horizontal gleichverteilen



ProfessorChaos
17-09-2010, 14:20
Hallo,

ich weiß, meine Frage ist bestimmt *elementar*, also sorry fürs Stellen.^^
Da sie aber nicht an ein konkretes Package gebunden ist, weiß ich nicht so wirklich, wo ich nachlesen soll (Forensuche war auch erfolglos).

Bevor ich mein Problem lange theoretisch beschreibe, hier ein Minimalbeispiel:


\documentclass{article}
\usepackage{multicol}
\begin{document}

\begin{table}
\begin{tabular}{|c|c|}
\multicolumn{2}{|c|}{this is a very long description} \\
left & right
\end{tabular}
\end{table}

\end{document}


Ich möchte, dass die Zellen "left" und "right" jeweils gleich viel Platz einnehmen. Sie sollen also zentriert sein. Im Augenblick nimmt aber "left" so wenig Platz wie möglich ein und "right" dann den Rest.
Weiß jemand, wie man das macht?

edico
17-09-2010, 15:16
Es bietet sich an, die Spalten an einer p-Spalte (evtl. m-Spalte, um auch vertikale Zentralisierung zu erreichen) auszurichten. Dazu ist es sinnvoll, einen neuen Spaltentyp zu definieren.
Um die Gesamtbreite der zusammengesetzten Spalte (multicolumn) zu erfassen, wird die Textlänge gemessen, so dass die Spaltenbreite dann die Hälfte (bei 2 Spalten) minus der Spaltenseparatoren ist.

Daraus ergibt sich folgender Code:



\documentclass{article}
\usepackage{array,calc}

\begin{document}

%%% Spaltenbreite SPB ermitteln
\sbox0{this is a very long description}
\newlength{\SPB}
\setlength{\SPB}{\the\wd0-2\tabcolsep}

%%% Spaltentyp definieren: Zeilenumbruch und zentriert
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\begin{table}
\begin{tabular}{|M{.5\SPB}|M{.5\SPB}|}
\multicolumn{2}{|c|}{this is a very long description} \\
left & right
\end{tabular}
\end{table}

\end{document}



edico

voss
17-09-2010, 15:42
Ich möchte, dass die Zellen "left" und "right" jeweils gleich viel Platz einnehmen. Sie sollen also zentriert sein. Im Augenblick nimmt aber "left" so wenig Platz wie möglich ein und "right" dann den Rest.
Weiß jemand, wie man das macht?


\documentclass[12pt,parskip]{scrartcl}

\usepackage{tabularx,ragged2e}
\newsavebox\Breite
\renewcommand\tabularxcolumn[1]{>{\Centering}p{#1}}

\begin{document}

\begin{tabular}{|c|c|}
\multicolumn{2}{|c|}{this is a very long description} \\
left & right
\end{tabular}

\begin{tabularx}{\linewidth}{|X|X|}
\multicolumn{2}{|c|}{this is a very long description} \\
left & right
\end{tabularx}

\sbox\Breite{this is a very long description}
\begin{tabularx}{\wd\Breite}{|X|X|}
\multicolumn{2}{|c|}{this is a very long description} \\
left & right
\end{tabularx}

\end{document}


Herbert

ProfessorChaos
20-09-2010, 10:42
Danke für die Antworten. Problem gelöst.