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
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