PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : colortbl und tikz inkompatibel



kemfar
10-08-2007, 18:20
Hallo Tex-Freunde,

ich bin Anfänger in Tex und habe ein Problem mit Paketinkompatibilitäten. Ich nutze colortbl und tikz, wobei tikz xcolor aufzurufen scheint. Dieses ist wohl nur mit der Option [table] mit colortbl kompatibel, die ich aber so nicht einschalten kann. Wie bekomme ich es hin, dass ich sowohl das Kreisdiagramm zeichnen kann, aber auch Farbige Tabellenzellen erstellen kann, ohne für jede Zelle eine Warnung zu bekommen?

Mein Minimalbeispeil ist etwas groß geraten, da der komplette Code zum Erstellen eines Kreisdiagramms mit dabei ist. (Der Kreisdiagramm-Code stammt nicht von mir und der Autor ist sich bewusst, dass er teilweise sehr gehackt ist.)



\documentclass{scrreprt} % Dokumentenklasse Bericht

%Tabellen
\usepackage{array} % Tabellennutzung

%Farben
\usepackage{colortbl}
\definecolor{gruen}{rgb}{0.68,1,0.68}
\definecolor{gelb}{rgb}{1,1,0.29}
\definecolor{rot}{rgb}{1,0.32,0.32}

% Kreisdiagramme
\usepackage{ifthen}
\usepackage{tikz}
\usepackage{calc}

\newcounter{temp}

% calculate the anchor of the external label
\newcommand{\angledir}[1]{
\setcounter{temp}{#1}
\ifthenelse{\thetemp < 0}{\addtocounter{temp}{360}}{}
\ifthenelse{\thetemp > 360}{\addtocounter{temp}{-360}}{}
\ifthenelse{\thetemp < 11}{\def\piedir{right}}{
\ifthenelse{\thetemp < 80}{\def\piedir{above right}}{
\ifthenelse{\thetemp < 101}{\def\piedir{above}}{
\ifthenelse{\thetemp < 170}{\def\piedir{above left}}{
\ifthenelse{\thetemp < 191}{\def\piedir{left}}{
\ifthenelse{\thetemp < 260}{\def\piedir{below left}}{
\ifthenelse{\thetemp < 281}{\def\piedir{below}}{
\ifthenelse{\thetemp < 350}{\def\piedir{below right}}{
right}}}}}}}}%
}

% calculate the position of the internal label
\newcommand{\calcpiedist}[1]{%
\ifthenelse{#1 > 120}{\def\piedist{0.50}}{
\ifthenelse{#1 < 10}{\def\piedist{0.80}}{
\setcounter{temp}{(80 * (120-#1) + 50 * (#1-10))/110}
\def\piedist{0.\thetemp}}}
}

\newcounter{diffI}
\newcounter{diffII}
\newcommand{\slice}[4]{%
\setcounter{temp}{(#1+#2)/2}
\setcounter{diffI}{#1-\thetemp}
\setcounter{diffII}{#2-\thetemp}
\begin{scope}[rotate=\thetemp]
\draw[fill=black!10,join=round,thick]
(0,0)
-- (\thediffI:1)
arc (\thediffI:\thediffII:1)
-- cycle;
\angledir{\thetemp}
\node [\piedir] at (1,0) {#4};
\setcounter{temp}{#2-#1}
\calcpiedist{\thetemp}
\node at (\piedist,0) {#3};

\end{scope}
}



% Anfang der Dokumentenausgabe
\begin{document}

% Tabelle
\begin{table}
\begin{tabular}{ccc}
\textbf{A} & \textbf{B} & \textbf{C}\\
\cellcolor{rot}45 & \cellcolor{gelb}35 & \cellcolor{gruen}20 \\
\end{tabular}
\end{table}

% Kreisdiagramm
\begin{tikzpicture}[scale=3]
\newcounter{a}
\newcounter{b}
\foreach \p/\t in {45/A, 35/B, 20/C}
{
\setcounter{a}{\value{b}}
\addtocounter{b}{\p}
\slice{360*\thea/100}
{360*\theb/100}
{\p\,\%}{\t}
}
\end{tikzpicture}

\end{document}



MfG

Kemfar

pospiech
11-08-2007, 11:42
[table]{xcolor} ersetzt colortbl

du brauchst also colortbl gar nicht laden, bzw bekommst dann einen Fehler. Die alternierenden Farben funktionieren trotzdem.

kemfar
11-08-2007, 20:57
Hallo Matthias,

vielen Dank, durch deinen Hinweis läuft es jetzt!

Für alle anderen, die ein ähnliches Problem haben möchte ich aber noch erwähnen, dass es wichtig ist erst \usepackage[table]{xcolor} zu schreiben und später im Code \usepackage{tikz} zu verwenden.


MfG

Kemfar


PS: Das mit den alternierenden Farben in der Tabelle war jemand anderes. ;-)