PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellenzeilen ab n-ter Zeile abwechselnd farbig einfärben



kurztipp
30-11-2012, 15:17
Hallo,

ich möchte in einer Tabelle gerne die Zeilen abwechselnd farbig einfärben.
Das habe ich mit der Option [table] von xcolor bereits hinbekommen.
Leider werden alle Zeilen eingefärbt. Ich möchte aber die ersten n Zeilen (im MB 2) nicht einfärben. Ich dachte, das geht mit dem ersten Argument des \rowcolors Befehls, tut es nur scheinbar nicht.

\documentclass[fontsize=12pt,paper=a4,titlepage,twoside=false,hea dings=normal]{scrartcl}

%------------------------------------------------
%% Spracheinstellungen
% Deutsche Sprachunterstützung
\usepackage{ngerman}
\usepackage[utf8]{inputenc}
% Sonderzeichen verf�gbar machen
\usepackage[T1]{fontenc}

%------------------------------------------------
%% Zeichen- / Absatzeinstellung
% Überschriften auf Times stellen
\addtokomafont{sectioning}{\rmfamily}
% Schriftartfamilie auf Times stellen
\usepackage{txfonts

%------------------------------------------------
%% Tabllenpakete
% Zeilen verbinden
\usepackage{multirow}
% Tabellen mit automatischer Spaltenbreite
\usepackage{tabularx}
% Zeilenrahmen bearbeiten
\usepackage{booktabs}

\usepackage{graphicx}
\usepackage[table]{xcolor}
% Array
\usepackage{array}

\begin{document}
\definecolor{highlightblue}{HTML}{4F81C0}
\definecolor{row-lightblue}{HTML}{D3DFEE}
\definecolor{TFFrameColor}{named}{row-lightblue}
\definecolor{TFTitleColor}{named}{highlightblue}

\begin{table}[!h]
\rowcolors{2}{row-lightblue}{white}
\begin{tabularx}{\textwidth}{>{\hsize=.3\hsize\bfseries}X>{\hsize=.7\hsize}X}
\toprule
\multicolumn{2}{c}{\large{Überschrift}}\\
\textcolor{highlightblue}{Begriff} & \textcolor{highlightblue}{\textbf{Definition}}\\
\hline
\hline
A & Text \\
B & Text \\
C & Text \\
\bottomrule
\end{tabularx}
\end{table}


\end{document}

Hat jemand eine Idee, warum, oder muss ich die ersten beiden Zeilen einfach manuell einfärben?

LG

bobmalaria
30-11-2012, 16:46
hi,

schau mal hier (http://tex.stackexchange.com/questions/50374/table-with-colored-rows-alternating-every-n-rows) und hier (http://stackoverflow.com/questions/5621355/alternating-row-colors-in-tabularx) rein.

der befehl aus xcolor scheint nicht mit tabular perfekt zu funktionieren. du kannst das makro versuchen das im link beschrieben wird oder du nimmst eventuell das tabu paket als ersatz.

gruss

ps: verwende \usepackage[ngerman]{babel} statt dem ngerman paket. hat mit dem problem nichts zu tun, aber ngerman kann komische ding tun

klops
30-11-2012, 17:30
Du hast das erste Argument von \rowcolors offenbar falsch verstanden. Wie dem auch sei: Ich würde schlicht die Verwendung von tabu (http://www.ctan.org/pkg/tabu) empfehlen. Damit sind dergleichen Dinge weit einfacher zu realisieren. Weil Dein Beispiel nicht funktioniert, habe ich es weiter minimiert und komme dann zu:

\documentclass[fontsize=12pt,titlepage,headings=normal,pagesize]{scrartcl}

\usepackage[ngerman]{babel} % Deutsche Sprachunterstützung
\usepackage[utf8]{inputenc}% Sonderzeichen verfügbar machen
\usepackage[T1]{fontenc}

\usepackage{booktabs}
\usepackage[table]{xcolor}
\usepackage{tabu}

\begin{document}
\definecolor{highlightblue}{HTML}{4F81C0}
\definecolor{row-lightblue}{HTML}{D3DFEE}
\definecolor{TFFrameColor}{named}{row-lightblue}
\definecolor{TFTitleColor}{named}{highlightblue}

\begin{table}[!htp]% !h alleine ist Nonsense!!!
\taburowcolors[3]2{row-lightblue .. white}
\begin{tabu}{X[3]X[7]}
\toprule
\multicolumn{2}{c}{\large{Überschrift}}\\
\textcolor{highlightblue}{Begriff} & \textcolor{highlightblue}{Definition}\\
\midrule
\midrule
A & Text \\
B & Text \\
C & Text \\
\bottomrule
\end{tabu}
\end{table}

\end{document}

hakaze
01-12-2012, 20:45
Für ein späteres Einsetzen der Zeilenfarben oder das Ein- und Ausschalten derselben bietet xcolor die Befehle \showrowcolors und \hiderowcolors:
\documentclass[fontsize=12pt,paper=a4,titlepage,twoside=false,hea dings=normal]{scrartcl}

%------------------------------------------------
%% Spracheinstellungen
% Deutsche Sprachunterstützung
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
% Sonderzeichen verfügbar machen
\usepackage[T1]{fontenc}
%------------------------------------------------
%% Tabllenpakete

% Tabellen mit automatischer Spaltenbreite
\usepackage{tabularx}
% Zeilenrahmen bearbeiten
\usepackage{booktabs}

\usepackage{graphicx}
\usepackage[table]{xcolor}
% Array
\usepackage{array}

\definecolor{highlightblue}{HTML}{4F81C0}
\definecolor{row-lightblue}{HTML}{D3DFEE}
\definecolor{TFFrameColor}{named}{row-lightblue}
\definecolor{TFTitleColor}{named}{highlightblue}

\rowcolors{1}{white}{row-lightblue}

\begin{document}
\begin{table}[htb]
\begin{tabularx}{\textwidth}{>{\hsize=.3\hsize\bfseries}X>{\hsize=.7\hsize}X}
\toprule \hiderowcolors
\multicolumn{2}{c}{\large{Überschrift}}\\
\textcolor{highlightblue}{Begriff} & \textcolor{highlightblue}{\textbf{Definition}}\\
\midrule \showrowcolors
A & Text \\
B & Text \\
C & Text \\
A & Text \\
B & Text \\
C & Text \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

kurztipp
11-12-2012, 16:01
Du hast das erste Argument von \rowcolors offenbar falsch verstanden.
Wieso?


2.12 Color in tables
\rowcolors [commandsi{row}{odd-row color}{even-row color}
\rowcolors* [commands]{row}{odd-row color}{even-row color}
One of these commands has to be executed before a table starts. row tells the
number of the first row which should be colored according to the odd-row color and even-row color scheme.
Kling für mich eindeutig, lasse mich aber gerne eines besseren belehren.


der befehl aus xcolor scheint nicht mit tabular perfekt zu funktionieren.
Klingt inklusive link schlüssig.

LG

u_fischer
11-12-2012, 16:35
tabularx setzt seinen Inhalt zweimal um die Breite rauszufinden, deswegen kommt es dann mit der Zeilennummerierung durcheinander. Es funktioniert, wenn du am Ende den \rownum-Zähler auf -1 setzt:


\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}

\begin{document}
\rowcolors{3}{red}{green}
\begin{tabularx}{5cm}{ll}
a\\ b\\c\\d\\e \global\rownum=-1
\end{tabularx}

\rowcolors{3}{red}{green}
\begin{tabular}{l}
a\\b\\c\\d\\e
\end{tabular}

\end{document}