PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : farbige Tabellenzeilen



LuPi
18-09-2010, 19:42
Bekanntermaßen kann man mit \rowcolor (aus dem xcolor-Paket) farbig hinterlegte Tabellenzeilen setzen. Gibt es eine genau so elegante Methode, auch den Text selber für eine Zeile farbig zu setzen, ohne in jeder Spalte mit \color hantieren zu müssen (noch schlimmer wird es ja in einer d-Spalte).

Falls ein Minimalbeispiel erforderlich ist, kann ich das gerne am Montag nachliefern.

mechanicus
18-09-2010, 20:04
Bekanntermaßen kann man mit \rowcolor (aus dem xcolor-Paket) farbig hinterlegte Tabellenzeilen setzen. Gibt es eine genau so elegante Methode, auch den Text selber für eine Zeile farbig zu setzen, ohne in jeder Spalte mit \color hantieren zu müssen (noch schlimmer wird es ja in einer d-Spalte).

du kannst die Spalte anpassen
>{\color{red}}c




Falls ein Minimalbeispiel erforderlich ist, kann ich das gerne am Montag nachliefern.
keine schlechte Idee

Gruß
Marco

LuPi
18-09-2010, 20:10
mechanicus schlug vor:


>{\color{red}}c

Das funktioniert aber leider nur für alle Zeilen. Ich brauche es aber für eine Zeile.

voss
18-09-2010, 20:32
mechanicus schlug vor:


>{\color{red}}c

Das funktioniert aber leider nur für alle Zeilen. Ich brauche es aber für eine Zeile.

steht doch alles in der Doku beschrieben, wie das geht ...

Herbert

LuPi
18-09-2010, 21:11
steht doch alles in der Doku beschrieben, wie das geht

Hmh. In welcher? In der xcolor-Doku wird in Abschnitt 2.11 auf Farbe in Tabelle eingegangen - aber nur zum Hintergrund.

In Deinem Buch habe ich auch nichts dazu gefunden.

Daher wäre für ich einen etwas detaillierteren Hinweis schon dankbar.

voss
18-09-2010, 21:33
Hmh. In welcher? In der xcolor-Doku wird in Abschnitt 2.11 auf Farbe in Tabelle eingegangen - aber nur zum Hintergrund.

In Deinem Buch habe ich auch nichts dazu gefunden.

Daher wäre für ich einen etwas detaillierteren Hinweis schon dankbar.

Jetzt habe ich erst deine Ausgangsfrage gelesen und gemerkt, dass du ja nur
die Textfarbe haben willst. Dann habe ich natürlich Schwachsinn erzählt. Eine
einfache Methode für eine Zeile gibt es nicht, da jede Zelle für sich lokal ist.
Also musst du schon mit \color{arbeiten}.

Herbert

mechanicus
18-09-2010, 21:37
Das funktioniert aber leider nur für alle Zeilen. Ich brauche es aber für eine Zeile.
Dann musst du jeweils \color davor schreiben. Ich kenne auch keine Möglichkeit.

@Herbert: Bist du sicher, dass es sowas gibt :-)

Gruß
Marco

EDIT: MERKE AKTUALISIEREN!!!! :D

LuPi
18-09-2010, 21:37
Schade! Einen schönen Abend noch.

voss
18-09-2010, 21:40
Schade! Einen schönen Abend noch.


\def\farbe{}
\tabular{>{\farbe}c>{\farbe}c}
foo & bar\\
foo & bar\gdef\farbe{\color{red}}\\
foo & bar\gdef\farbe{}\\
foo & bar\\
\endtabular

Herbert

LuPi
18-09-2010, 23:57
Sieht interessant aus, muss ich morgen mal ausprobieren. Besten Dank!

LuPi
19-09-2010, 15:38
So, ich habe das mal ausprobiert. Sieht auch im Großen und Ganzen sehr schön aus, aber ...

Wie man dem beiliegenden Minimalbeispiel entnehmen kann, gibt es da ein Problem mit den d-Spalten (wie in meinem Ausgangs-Posting schon angedeutet). Ich könnte mir vorstellen, dass das mit dem verwendeten Mathe-Modus (oder bringe ich da etwas durcheinander?) zusammenhängt. Gibt es dafür eventuell auch noch eine Lösung?


\documentclass{scrartcl}
\usepackage{colortbl}
\usepackage{columns}
\usepackage{ifthen}
\newcommand{\RTC}{}
\newcommand{\rowtextcolor}[1][]{\ifthenelse{\equal{#1}{}}{\gdef\RTC{}}{\gdef\RTC{ \color{#1}}}}
\begin{document}
\begin{tabular}{@{}>{\RTC}d{3.3}>{\RTC}c@{}}
40.660 & 40\rowtextcolor[blue] \\
\rowcolor{yellow} 433.050 & 40 \\
\rowcolor{yellow} 868.000 & 40\rowtextcolor\\
902.000 & 40
\end{tabular}
\end{document}

mechanicus
19-09-2010, 15:47
Hi,

dein Beispiel funktioniert nicht.

Gruß
Marco

voss
19-09-2010, 16:07
Wie man dem beiliegenden Minimalbeispiel entnehmen kann, gibt es da ein Problem mit den d-Spalten (wie in meinem Ausgangs-Posting schon angedeutet). Ich könnte mir vorstellen, dass das mit dem verwendeten Mathe-Modus (oder bringe ich da etwas durcheinander?) zusammenhängt. Gibt es dafür eventuell auch noch eine Lösung?


das hier geht ...

\documentclass{scrartcl}
\usepackage[table]{xcolor}
\usepackage{rccol}
\newcommand\RTC{}
\newcommand\rowtextcolor[1][]{\ifx\relax#1\relax\gdef\RTC{}\else\gdef\RTC{\colo r{#1}}\fi}
\begin{document}
\begin{tabular}{@{}>{\RTC}R[.][.]{3}{3}>{\RTC}c@{}}
40.660 & 40\rowtextcolor[blue] \\
\rowcolor{yellow} 433.050 & 40 \\
\rowcolor{yellow} 868.000 & 40\rowtextcolor\\
902.000 & 40
\end{tabular}
\end{document}

Herbert

rstuby
19-09-2010, 16:22
Bei mir auch nicht, weil ich colums.sty nicht finden kann.
Wenn man es auskommentiert, kommen 2 Fehlermeldungen wegen nichtdefinierter Spaltentypen, und die Nachkommastellen sind blau, die 40 in der nächsten Spalte dagegen schwarz. Sorry, keine Ahnung, was da los ist.

Oh, dies sollte eine Antwort auf #12 sein. Während ich am experimentieren war, hat Herbert schon eine gute Idee gehabt...

LuPi
19-09-2010, 17:27
das hier geht ...


Sehr schön, vielen Dank. Zwei Fragen noch dazu:

(1) Wird das eventuell irgendwann in einem Paket implementiert?

(2) Wird das in einer Neuauflage Deines Tabellenbuchs zu finden sein?

Normalerweise mag ich Farbe in Tabellen nicht so, aber auf "Folien" kann das schon ganz wirksam sein.



[...] funktioniert nicht.


Sorry, "columns" war eine Nachlässigkeit. Das ist mein eigenes Paket, in dem die ganzen Spaltendefinitionen, wie sie beispielsweise in booktabs zu finden sind, zusammengestellt sind. Ich habe mich inzwischen so daran gewöhnt, dass ich das als öffentlich angenommen habe. Mein Fehler! (Herbert hat das freundlicherweise weggebügelt :D)

voss
19-09-2010, 17:40
(1) Wird das eventuell irgendwann in einem Paket implementiert?
Das liegt an dir ... :)



(2) Wird das in einer Neuauflage Deines Tabellenbuchs zu finden sein?

Wenn ich es nicht vergesse ... :D

Herbert

LuPi
21-09-2010, 06:59
Das liegt an dir ... :)


Der feature request beim xcolor-Autor ist gestartet und hat eine positive Reaktion erhalten.


Wenn ich es nicht vergesse ... :D

Schau'n mer mal.