PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit \colortbl und Umbruch in Tabellen



3Darky
10-06-2012, 19:49
Ich habe ein Problem mit dem Paket colortbl und mehrer Umbrüche in einer Tabelle, die m. M. n. automatisch umbrochen werden sollten, aber sie werden es nicht. Ich kann die Tabelle leider auch nicht ändern, da sie leider genau diese Form und das Aussehen haben muss. (Auch wenn das typographisch suboptimal ist).

Ich möchte die Überschriftenspalten dunkelgrau hinterlegen und die unumbrochnen Zeilen gerne umbrochen haben. Zusätzlich die erste Spalte der ersten Tabelle dunkelgrau und die erste Spalte der zweiten Tabelle hellgrau.

Ein Minimalbeispiel ist angehängt.

Vielen Dank für eure Hilfe.

hakaze
11-06-2012, 09:09
Moin, moin!
Zunächst will ich dir raten nochmal die Doku zu multirow zu studieren, dort sind die meisten deiner Probleme nämlich beschrieben.

So könnte die Lösung dann aussehen:
\documentclass[a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[a4paper, top=15mm, left=15mm, right=15mm, bottom=20mm,
headsep=5mm, footskip=5mm]{geometry}
\usepackage{multirow,array,color,colortbl}

\definecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
\definecolor{hellgrau}{rgb}{0.95,0.95,0.95}
\begin{document}

\begin{tabular}{|>{\columncolor{dunkelgrau}}p{2,1cm}|p{5cm}p{9cm}|}
\hline
& \cellcolor{dunkelgrau}\textbf{Spaltenüberschrift 1a und Spaltenüberschrift 1b} & \cellcolor{dunkelgrau}\textbf{Spaltenüberschrift 2a und Spaltenüberschrift 2b } \\
%Die Tabellenüberschriften sollen dunkelgrau werden
\hline
& \multirow{5}[7]{*}[-1ex]{TextfeldTextfeldTexfeld} & - TextfeldTextfeldTextfeld \\
%Das Feld "Zentral" sollte trotzdem noch sichtbar sein
& & - TextfeldTextfeldTextfeldTextfeldTextfeld\\
& & - TextfeldTextfeldTextfeldTextfeldTextfeldTextfeldTe xtfeldTextfeldTextfeld \\
& & - TextfeldTextfeldTextfeldTextfeldTextfeldTextfeldTe xtfeldTextfeldTextfeld \\
& & - TextfeldTextfeldTextfeldTextfeldTextfeld \\
\cline{2-3}
& \multirow{2}{*}{TextfeldTextfeldTextfeld} & - TextfeldTextfeldTextfeldTextfeldTextfeld\\
\multirow{-7}[9]{*}{\textbf{Zentral}} & & - TextfeldTextfeldTextfeldTextfeld\\
\hline
\end{tabular}


\begin{tabular}{|>{\columncolor{hellgrau}}p{2,1cm}|p{5cm}p{9cm}|}
\hline
& \multirow{3}{5cm}{\hspace*{0pt}Wortfindungsmaschin enspülung} & - TextfeldTextfeld \\
& & - TextfeldTextfeldTextfeld \\
& & - TextfeldTextfeldTextfeldTextfeld \\
\cline{2-3}
& \multirow{2}{5cm}{Großartige Wortfindungsmaschinenspülung} & - TextfeldTextfeldTextfeldTextfeldTextfeldTextfeld\\
\multirow{-5}{2.1cm}{\textbf{Flankierend}}& & - TextfeldTextfeldTextfeldTextfeldTextfeldTextfeld\\
\hline
\end{tabular}

\end{document}Die Spalte kann mit \columncolor komplett eingefärbt werden. Damit der Text in multirow nicht von der Farbe übermalt wird, wird die multirow von unten nach oben definiert (negative Zeilenzahl). Der optionale bigstrut-Parameter sorgt für eine bessere Ausrichtung, da es zwar 7 Tabellenzeilen, aber durch Umbrüche eben 9 Textzeilen sind. Alternativ kann man auch mit dem fixup-Parameter noch Feinjustierungen der vertikalen Ausrichtung vornehmen.

In der zweiten Tabelle sollte auch die Spaltenbreite an multirow übergeben werden, damit überhaupt ein Umbruch stattfinden kann. Ansonsten orientiert sich die Breite am Inhalt, nicht an der Vorgabe der Spaltendefinition. Da das erste Wort bei Latex i.d.R. nicht getrennt wird, empfiehlt sich ein \hspace*{0pt} (als Pseudowort) einzufügen, wenn nur ein sehr langes Wort dort steht.

Außerdem solltest du eher \textbf als den low-level-Befehl \bf verwenden.

3Darky
12-06-2012, 07:57
Auf so einen Code wäre ich alleine niemals gekommen. Negative multirow, Pseudowort, etc. pp. Wow! Sie sind ein/e Expertin.
Großartig!

Vielen Dank!

hakaze
12-06-2012, 08:18
Gern geschehen! Wenn man schon länger mit Tabellen in Latex arbeitet, lernt man so einiges.

Den Trick mit \hspace*{0pt} für die Trennung des ersten Wortes habe ich auch hier im Forum gelernt (ist allerdings schon etwas her ;)).