Seite 1 von 1

Zeilenumbrüche in Tabellen mit tabu

Verfasst: So 13. Jul 2014, 04:47
von zerocon
Hi@all,



erstmal eine Warnung: ich habe nur gefährliches Halbwissen von dem, worüber ich hier rede. Daher bitte nicht alles für bare Münze nehmen, besonders wenn du auch Anfänger bist!

Mit tabular kann man bei l-, c- und r-Zellen mit \newline und \\ keine Zeilenumbrüche in Zellen bekommen, beim p-Zellen geht es mit \newline, bei m-Zellen mit \newline und \\.
Ich möchte Zeilenumbrüche aber in zentrierten Zellen machen, also definiere ich mir einen Zellentyp M (das geht mit dem colortbl-Paket):
\newcolumntype{M}[1]{>{\centering}m{#1}}
Wie in folgendem Beispiel gezeigt, verursacht \newline dabei einen Versatz, mit \\ geht es sauber:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{colortbl}

\newcolumntype{M}[1]{>{\centering}m{#1}}

\begin{document}

\begin{tabular}{|l|c|r|} \hline
	\multicolumn{1}{|M{2cm}|}{Zelle\\eins}	& \multicolumn{1}{M{2cm}|}{Zelle{\newline}zwei}	& bla\\\hline
	eins	& zwei	& drei\\\hline
\end{tabular}

\end{document}
Ich möchte auch dicke vertikale Linien in meiner Tabelle benutzen (bitte erspart uns den Exkurs bezüglich vertikaler Linien!), dafür kenne ich bisher nur tabu, Farbe geht mit tabu auch gut. Allerdings gehen Zeielnumbrüche nur mit \newline und das erzeugt eben diesen Versatz:
\documentclass[11pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{colortbl}
\usepackage{tabu}

\newcolumntype{M}[1]{>{\centering}m{#1}}

\begin{document}

\begin{tabu}{|l|c|r|} \hline
	\multicolumn{1}{|M{2cm}|}{Zelle{\newline}eins}	& \multicolumn{1}{M{2cm}|}{Zelle{\newline}zwei}	& bla\\\hline
	eins	& zwei	& drei\\\hline
\end{tabu}

\end{document}
Außerdem ist die Zeilenhöhe jetzt ganz seltsam.

Kennt dafür jemand eine Lösung?



THX, zerocon.

Verfasst: So 13. Jul 2014, 10:23
von Besserwisser
Ich habe ehrlich gesagt momentan weder Lust noch Zeit, bei Adam und Eva anzufangen, um Deine ganzen Irrtümer aufzuklären. Ich würde dir aber sehr empfehlen, mal min. die Anleitung zu den Paketen array, tabularx, booktabs, xcolor und tabu zu lesen. Außerdem sei – auch wenn du es nicht hören willst – darauf hingewiesen, dass vertikale Linien in Tabellen typografisch mehr als fragwürdig sind.

Für gute Tabellen siehe beispielsweise die Anleitung zu booktabs und die Folien zum Tabellenvortrag, die in »Wichtige Netzdokumente« verlinkt sind.

Das Thema Tabellen ist übrigens durchaus ein komplexes. Nicht umsonst gibt es dazu ein ganzes Buch von Herbert Voß.

Verfasst: So 13. Jul 2014, 15:34
von esdd
Nimm \linebreak statt \newline. Siehe dazu auch Zentrierung in mehrzeiligen p-Spalten und Was ist der Unterschied zwischen \\, \newline und \linebreak?.

Die Definition neuer Spaltentypen ermöglicht das Paket array, das von tabu geladen wird. Das Paket colortbl hat dagegen etwas mit Farben in Tabellen zu tun, wobei es besser ist statt diesem das Paket xcolor mit der Option table zu laden.

Den Abstand oberhalb und unterhalb in den Zellen lässt sich über \tabulinesep einstellen. Das ist auch getrennt möglich. Informationen dazu findet man aber problemlos in der Dokumentation des Paketes tabu.
\documentclass{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[table]{xcolor} 
\usepackage{tabu} 

\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}} 
\setlength{\tabulinesep}{5pt}

\begin{document} 
\begin{tabu}{lcr} \hline 
    \multicolumn{1}{M{2cm}}{Zelle\linebreak eins}   & \multicolumn{1}{M{2cm}}{Zelle\linebreak zwei}   & bla\\\hline 
    eins   & zwei   & drei\\\hline 
\end{tabu} 

\end{document} 
Gruß
Elke

Verfasst: Do 17. Jul 2014, 00:26
von zerocon
Danke esdd!