PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellen mit farbigen Zeilen und Linien



kays_girl
05-05-2008, 14:45
Hallo,
für dieses Problem habe ich schon viel recherchiert und lediglich festgestellt, dass es bekannt ist, aber keine Lösung gefunden.
Ich schreibe meine Diplomarbeit in einem biologischen Fachbereich und muss viele z. T. elendig lange Tabellen erstellen, z. B. von erfassten Arten.
Um diese Tabellen halbwegs übersichtlich zu halten, habe ich mir überlegt, jede zweite Zeile grau zu hinterlegen, was auch wunderbar funktioniert.
Nun habe ich allerdings das Problem, dass die Linien z. T. im pdf nicht erscheinen. Wenn man reinzoomt, sind sie da, dafür andere Linien nicht. Es sieht aus, als wenn bei der Konvertierung in das pdf-Dokument irgendwas mit der Auflösung nicht stimmt oder die Farbe über die Linien gemalt wird. Im Ausdruck sieht zwar alles prima aus, aber ich muss die Diplomarbeit z. B. an den Landkreis auch als pdf-Version abgeben.

Hier mal ein (hoffentlich) Minimalbeispiel aus meiner Arbeit:

\documentclass[11pt, a4paper, bibtotocnumbered]{scrbook}
\usepackage{longtable}
\usepackage[table]{xcolor}
\usepackage{colortbl}
\usepackage{booktabs}

%Definition der Tabellenfarben
\colorlet{tablesubheadcolor}{gray!25}
\colorlet{tableheadcolor}{gray!40}
\colorlet{tablerowcolor}{gray!15.0}

\begin{document}

%Tabellenbeispiel (analog für longtables angewendet)

\begin{table}[!htb]

\renewcommand{\arraystretch}{1.4}
\centering
\setlength{\belowrulesep}{0pt}
\setlength{\aboverulesep}{0pt}
\rowcolors{1}{tablerowcolor}{white!100}
\begin{tabular}{|p{0.2\textwidth} p{0.2\textwidth} p{0.2\textwidth} p{0.2\textwidth}|}
\toprule

% hier die eigentliche Tabelle
blabla & bla& bla& Bla\\
bla & bla & bla & bla\\

\bottomrule

\end{tabular}
\end{table}

\end{document}

Ich möchte links und rechts gerne horizontale Linien haben. Ich finde, das sieht schöner aus, das sind dann auch die einzigen horizontalen Linien. BTW: Gibt es eine Möglichkeit, diese analog zu toprule breiter zu zeichnen?

Ich danke euch für eure Hilfe,

Mfg,
Christina

edico
05-05-2008, 15:54
Die rowcolors werden nach dem Setzen der rules gemalt ... und teilweise 'übermalt'. Eine Lösung ist zwei selbe Tabellen zu zeichnen, erst mit Farbe, schliesslich mit rules ... ist natürlich nicht gerade sehr sinnvoll. Aber in LaTeX ist es eben auch nicht sinnvoll, Tabellen nicht leserfreundlich zu setzen, da es sich eher um ein typographisches, denn ein Malprogramm handelt. Demnach sind Linien, wenn schon Zeilen farbig gesetzt sind, des Guten zu viel und - wie vertikale rules - an sich obsolet.
Dennoch kannst Du es ja mal so versuchen.



\documentclass[]{scrbook}
\usepackage[table]{xcolor}
\usepackage{colortbl,booktabs,calc}

%Definition der Tabellenfarben
\colorlet{tablesubheadcolor}{gray!25}
\colorlet{tableheadcolor}{gray!40}
\colorlet{tablerowcolor}{gray!15}

\begin{document}

\begin{table}[!htb]
\renewcommand{\arraystretch}{1.4}
\centering
\setlength{\belowrulesep}{1pt}
\setlength{\aboverulesep}{1pt}
\rowcolors{1}{tablerowcolor}{white!100}
\begin{tabular}{p{0.2\textwidth-2\tabcolsep}
p{0.2\textwidth-2\tabcolsep}
p{0.2\textwidth-2\tabcolsep}
p{0.2\textwidth-2\tabcolsep}}
\toprule
blabla & bla & bla & Bla\\
\midrule
bla & bla & bla & bla\\
bla & bla & bla & bla\\
bla & bla & bla & bla\\
bla & bla & bla & bla\\
bla & bla & bla & bla\\
\bottomrule
\end{tabular}
\end{table}

\end{document}


edico

localghost
05-05-2008, 16:15
Das Paket colortbl (http://dante.ctan.org/CTAN/help/Catalogue/entries/colortbl.html) muss nicht nochmal extra geladen werden. Dafür sorgt schon die Option table bei xcolor (http://dante.ctan.org/CTAN/help/Catalogue/entries/xcolor.html).


MfG
Thorsten¹

kays_girl
05-05-2008, 16:43
Hallo edico,
danke für die Hilfe. Für die top- und bottom-rules sieht das schonmal echt klasse aus. Es funktioniert. Allerdings, werden midrules, wie cmidrules weiterhin überschrieben. Ich kopiere hier mal meinen Tabellenkopf rein, damit ihr seht worum es geht.
Da ich hier viel mit multicolumns arbeite, finde ich es sinnvoll, hier auch zumindest Teillinien einzufügen, denn sonst finde ich es schnell ein wenig unübersichtlich, zumal der Kopf mehrere Informationen enthält.
Hier der Tabellenkopf der Beispieltabelle:

\begin{table}[!htb]

\renewcommand{\arraystretch}{1.4}
\centering
\setlength{\belowrulesep}{0pt}
\setlength{\aboverulesep}{0pt}
\rowcolors{1}{tablerowcolor}{white!100}
\begin{tabular}{|p{0.2\textwidth-2\tabcolsep} p{0.2\textwidth-2\tabcolsep} p{0.2\textwidth-2\tabcolsep} p{0.2\textwidth-2\tabcolsep}|}
\toprule
\rowcolor{tableheadcolor}
& \multicolumn{3}{>{\columncolor{gray!40}} c|}{Bodenkundliche Feuchtestufe}\\
\cmidrule{2-4}
\rowcolor{tableheadcolor}
nFK (l m$^{-2}$) & \multicolumn{3}{>{\columncolor{gray!40}} c|}{Klimabereich}\\
\rowcolor{tableheadcolor}
& 1,2 & 3-8 & 9,10\\
\midrule

%hier der eigentliche Tabelleninhalt

\bottomrule
\end{tabular}
\end{table}

Also, wenn das mit den midrules auch noch irgendwie klappt, wär das echt klasse, auch wenn immer wieder gesagt wird, man soll die weglassen :-)
Danke euch.

Mfg,
Christina

kays_girl
05-05-2008, 16:58
Hallo nochmal,
ich habe den Tipp mit dem Linien doppelt zeichnen auch mal an einer meiner longtables ausprobiert. Leider funktioniert das ganze hier nicht:
\begin{longtable}{|m{0.2\textwidth-2\tabcolsep} ...}

Wofür steht eigentlich die 2 vor tabcolsep? Bedeutet das 2x ausführen oder ist die 2 variabel und muss je nach der Spaltenbreite neu gesetzt werden? Ist wahrscheinlich eine doofe Frage, aber als Latex-Neuling sind das oft alles bömische Dörfer ;-)

Danke für eure Hilfe.
Mfg,
Christina

kays_girl
05-05-2008, 18:00
Hallo nochmals,
also, ich habe festgestellt, dass folgender Befehl nicht funktioniert:
\begin{tabular}{c-2\tabcolsep}}

Kann ich mit tabcolsep die Buchstaben c, l und r nicht mehr verwenden und muss alles in p{} umwandeln, oder gibt es hier auch eine Möglichkeit für c, l und r?

Ich danke euch,
Mfg.
Christina

voss
05-05-2008, 18:05
Hallo nochmals,
also, ich habe festgestellt, dass folgender Befehl nicht funktioniert:
\begin{tabular}{c-2\tabcolsep}}

Kann ich mit tabcolsep die Buchstaben c, l und r nicht mehr verwenden und muss alles in p{} umwandeln, oder gibt es hier auch eine Möglichkeit für c, l und r?



\begin{tabular}{@{} c @{}}

dann sind die Ränder weg. \tabcolsep kann man nur von einer Länge abziehen, aber
nicht von c l r, was keine Länge darstellt.

Herbert

kays_girl
05-05-2008, 20:33
Hallo.
@voss: Das war nicht so ganz was ich brauche, dennoch danke.

Um nochmal zum Eingangsproblem zurückzukommen

Hallo edico,
danke für die Hilfe. Für die top- und bottom-rules sieht das schonmal echt klasse aus. Es funktioniert. Allerdings, werden midrules, wie cmidrules weiterhin überschrieben.

Das war wohl eher Zufall... Bei einer anderen Tabelle hat es mit der midrule geklappt, aber nicht mit der Toprule. Weitere Ideen? Würde mich riesig freuen und bin dankbar für jeden Vorschlag.

Mfg,
Christina