PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle mit alternierender Farbe erzeugen



brom
10-08-2007, 15:37
Hallo,

ich würde gerne eine Tabelle mit alternierender Farbe erzeugen, so wie z.B. bei der Matthias Pospiech Vorlage (http://www.pospiech.eu/download/latex/vorlagen/diplomarbeit/Diplomarbeit-kompakt.zip) für Diplomarbeiten unter Punkt 1.5.4.

Folgenden Code habe ich ein mein Latex-file übernommen, anscheinend fehlen mir aber noch enige Packete, da ich noch ein paar Fehlermeldungen bekomme (z.B. \tablehead undfined)



\subsection{Tabelle mit alternatierender Farbe}


%--Einstellungen für Tabellen ----------

\colorlet{tablesubheadcolor}{gray!40}
\colorlet{tableheadcolor}{gray!25}
\colorlet{tableblackheadcolor}{black!60}
\colorlet{tablerowcolor}{gray!15.0}


\renewcommand\tablehead{%
\tableheadfontsize%
\sffamily\bfseries%
\slshape
\color{white}
}

\renewcommand\tableheadcolor{
\rowcolor{tableblackheadcolor}
}


%---------------------------------------
%
\begin{table}[H]
\tablestyle
\tablealtcolored
\begin{tabular}{*{2}{v{0.45\textwidth}}}
\hline
\tableheadcolor
\tablehead Tabellenkopf &
\tablehead Tabellenkopf \tabularnewline\hline
% Zwischenkopf
\multicolumn{2}{>{\columncolor{tablesubheadcolor}}l}{
\bfseries Zwischenkopf
} \tabularnewline

\tablebody
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
\multicolumn{2}{>{\columncolor{tablesubheadcolor}}l}{
\bfseries Zwischenkopf
} \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
\hline
\end{tabular}
\end{table}

Könnt ihr mir sagen, was ich alles einbinden muss, damit das funktioniert?

Bisher habe ich mal \usepackage{xcolor} und \usepackage{tabularx} eingebunden

pospiech
10-08-2007, 16:26
\usepackage[tables]{xcolor}
\usepackage{tabularx}

und die Befehle die du benutzt hatte ich vorher schon definiert, daher das renewcomand. Wenn du sie dort erst neu benutzt muss das renewcommand weg.

Diese Befehle definiere ich übrigens damit ich in allen Tabellen das gleiche Aussehen habe und es übersichticher ist.

Matthias

brom
10-08-2007, 17:58
Danke erst mal für die schnelle Antwort!

Ich hab jetzt noch einiges ausprobiert, kriegs aber leider nicht hin.

Was sind das denn für Befehle, die du alle schon vorher definiert hast bzw. wo finde ich die in deinem Beispiel?

Ich habe versucht mir ein "Minimalbeispiel" zusmmenzubasteln, dazu fehlen mir aber diese "Befehle" anscheinend noch, da meine erste Fehlermeldung "\tablehead undefined" ist.

So sieht mein Beispiel bisher aus:


\documentclass[a4paper, 11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{scrpage2}
\usepackage[ansinew]{inputenc}
\frenchspacing

\usepackage{color}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{gray1}{rgb}{0.7,0.7,0.7}
\definecolor{gray2}{rgb}{0.4,0.4,0.4}
\definecolor{gray3}{rgb}{0.9,0.9,0.9}

\usepackage[tables]{xcolor}
\usepackage{tabularx}

\pagestyle{scrheadings}


\begin{document}


% Hier fehlt noch einiges (tablehead,...)


%--Einstellungen für Tabellen ----------

\colorlet{tablesubheadcolor}{gray!40}
\colorlet{tableheadcolor}{gray!25}
\colorlet{tableblackheadcolor}{black!60}
\colorlet{tablerowcolor}{gray!15.0}


\renewcommand\tablehead{%
\tableheadfontsize%
\sffamily\bfseries%
\slshape
\color{white}
}

\renewcommand\tableheadcolor{
\rowcolor{tableblackheadcolor}
}


%---------------------------------------
%
\begin{table}[H]
\tablestyle
\tablealtcolored
\begin{tabular}{*{2}{v{0.45\textwidth}}}
\hline
\tableheadcolor
\tablehead Tabellenkopf &
\tablehead Tabellenkopf \tabularnewline\hline
% Zwischenkopf
\multicolumn{2}{>{\columncolor{tablesubheadcolor}}l}{
\bfseries Zwischenkopf
} \tabularnewline

\tablebody
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
\multicolumn{2}{>{\columncolor{tablesubheadcolor}}l}{
\bfseries Zwischenkopf
} \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
\hline
\end{tabular}
\end{table}


\end{document}

pospiech
10-08-2007, 18:47
\documentclass[a4paper, 11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{scrpage2}
\usepackage[ansinew]{inputenc}
\frenchspacing wofür ?

%\usepackage{color} du brauchst nicht color und xcolor gleichzeitig laden

\usepackage[tables]{xcolor}
die folgenden Befehle habe die color Syntax, du könntest auch die von xcolor nehmen. Ist aber für das Ergebnis egal
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{gray1}{rgb}{0.7,0.7,0.7}
\definecolor{gray2}{rgb}{0.4,0.4,0.4}
\definecolor{gray3}{rgb}{0.9,0.9,0.9}


\usepackage{tabularx}

\pagestyle{scrheadings}


\begin{document}


% Hier fehlt noch einiges (tablehead,...)


%--Einstellungen für Tabellen ----------
Diese Farbdefinitionen haben die xcolor Syntax
\colorlet{tablesubheadcolor}{gray!40}
\colorlet{tableheadcolor}{gray!25}
\colorlet{tableblackheadcolor}{black!60}
\colorlet{tablerowcolor}{gray!15.0}


% um Tabellenspalten mit Flattersatz zu setzen, muss \\ vor
% (z.B.) \raggedright geschuetzt werden:
\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}

% Linksbuendig:
\newcolumntype{v}[1]{>{\PreserveBackslash\RaggedRight\hspace{0pt}}p{#1}}
% Groesse der Schrift in Tabellen
\newcommand{\tablefontsize}{ \footnotesize}
\newcommand{\tableheadfontsize}{\footnotesize}

% Layout der Tabelle: Ausrichtung, Schrift, Zeilenabstand
\newcommand\tablestylecommon{%
\renewcommand{\arraystretch}{1.4} % Groessere Abstaende zwischen Zeilen
\normalfont\normalsize %
\sffamily\tablefontsize % Serifenlose und kleine Schrift
\centering% % Tabelle zentrieren
}

\newcommand\tablealtcolored{%
\rowcolors{1}{tablerowcolor}{white!100}%
}

\newcommand{\tablestyle}{
\tablestylecommon
%\tablealtcolored
}



\newcommand statt \renew...
\newcommand\tablehead{%
\tableheadfontsize%
\sffamily\bfseries%
\slshape
\color{white}
}

\newcommand\tableheadcolor{
\rowcolor{tableblackheadcolor}
}


%---------------------------------------
%
\begin{table}[H]
\tablestyle
\tablealtcolored
\begin{tabular}{*{2}{v{0.45\textwidth}}}
\hline
\tableheadcolor
\tablehead Tabellenkopf &
\tablehead Tabellenkopf \tabularnewline\hline
% Zwischenkopf
\multicolumn{2}{>{\columncolor{tablesubheadcolor}}l}{
\bfseries Zwischenkopf
} \tabularnewline

\tablebody
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
\multicolumn{2}{>{\columncolor{tablesubheadcolor}}l}{
\bfseries Zwischenkopf
} \tabularnewline
Inhalt & Inhalt \tabularnewline
Inhalt & Inhalt \tabularnewline
\hline
\end{tabular}
\end{table}


\end{document}


entnommen aus http://www.matthiaspospiech.de/latex/vorlagen/allgemein/neue-befehle/#TableCommands

die Datei ist bei meiner Vorlage auch dabei.

Matthias

pospiech
11-08-2007, 10:44
Ich habe jetzt ein 'Minimalbeispiel' online gestellt, dass vollständig ohne meine Vorlage auskommt:
http://www.latexwiki.org/Loesungen:Tabellen#Tabelle_mit_alternierender_Zeil enfarbe

Matthias

brom
11-08-2007, 19:48
Vielen Dank!!! :)

Ist echt klasse das einem hier so supter geholfen wird! Selbst habe ich es bisher noch nicht hinbekommen, das Beispiel in der LaTeXWiki funktioniert bei mir aber einwandfrei.

e. hindman
12-08-2007, 09:28
Sehr elegant geschrieben, Matthias.
Allerdings wundert mich die Zeile:

\rowcolors{2}{tablerowcolor}{white!100}
Ich dachte die Zahl gibt an, ab welcher Zeile der Farbwechsel begonnen werden soll. Ändert man die aber zu z.B. einer drei, passiert irgendwie nix.

rais
12-08-2007, 14:53
Moin moin,



\rowcolors{2}{tablerowcolor}{white!100}
Ich dachte die Zahl gibt an, ab welcher Zeile der Farbwechsel begonnen werden soll. Ändert man die aber zu z.B. einer drei, passiert irgendwie nix.
das stimmt auch. Ändere mal die (erste) Zeile (oder einfach alle):


Inhalt & Inhalt \tabularnewline

zu


Inhalt & Zeile \number\rownum \tabularnewline

dann wird Dir vermutlich klar, warum sich noch nichts ändern kann.;)
MfG,

e. hindman
12-08-2007, 20:10
Zeilen zählen kann ich auch manuell :). Den Denkfehler seh ich aber trotzdem nicht.

rais
12-08-2007, 21:33
Vielleicht gehen wir ja von unterschiedlichen Dokumenten aus -- ich beziehe mich hier auf den von Matthias zuletzt geposteten , bei dessen Code etwa folgendes bei rauskommt:
Tabellenkopf...
Zwischenkopf...
Inhalt...
Inhalt...
wobei sowohl Tabellen- als auch Zwischenkopf die Farbgebung des \rowcolors überschreiben... anders ausgedrückt: die erste Tabellenzeile, in der die Farbgebung des \rowcolors-Befehls effektiv greift, ist die Dritte -- aber vermutlich versteh' ich wieder irgend etwas nicht.
MfG,

e. hindman
12-08-2007, 22:53
Dass die ersten beiden überschrieben werden ist klar.
Jetzt hab ich meinen Denkfehler auch gefunden.
\rowcolors{3}{tablerowcolor}{white!100} bedeutet nicht dass die dritte Zeile die dunklere Farbe bekommt und dann alternierend weiter. Sondern dass ab der dritten die ungeraden dunkler sind. Darum macht das Erhöhen um einen Zähler erstmal nix aus. Kommt davon, wenn man zu kompliziert denkt :)

Schafmoeoe
24-11-2008, 10:09
Ich benutze die selbe Vorlage wie am Anfang eingeführt. Mich verwundert nur die Breiteneinstellung.

ich hätte zu folgender codezeile eine frage
die Zeile sagt ja nur das zwei spalten zu je 0.45 facher Zeilenbreite für die tabelle verwendet werden.


\begin{tabular}{*{2}{v{0.45\textwidth}}}


wenn ich diese Zeile anpasse zu um eine schmale und eine fest definierte breite spalte zu haben, gibt es keine Fehlermeldung und die Spalten werden aus so erzeugt wie ich das wollte.

\begin{tabular}{lp{120mm}}


Dennoch kommt es im Tabellenkopf zu einer Veränderung die so nicht gewollt ist. So erhöht sich die Zeilenhöhe der Überschrift auf ca das doppelte, der zweite Eintrag rutscht anscheinend eine Zeile tiefer. Das passiert nicht wenn ich den \tablehead vor dem zweiten Eintrag im Tabellenkopf entferne, jedoch sieht das natürlich dann irgendwie unschön aus.

Ich würde gern die Beiden Tabellenspalten getrennt von einander in ihrer bereite einstellen. hat jemand da einen tip für mich wie ich das am besten realisiere. Am besten in der for in der die ursprüngliche Einstellung erfolgt ist


\begin{tabular}{*{2}{v{0.45\textwidth}}}