Farbe in \multicolumn geht nicht bis Zellenende

Tabellen und Grafiken erstellen und anordnen


DT
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Fr 30. Sep 2011, 15:01

Farbe in \multicolumn geht nicht bis Zellenende

Beitrag von DT »

Hallo,

wie die Überschrift schon sagt hab ich nen Problem mit \multicolumn und \cellcolor. In der letzten Zeile geht die Farbe nicht bis zum Ende der Zelle... warum auch immer. Wenn ich die Zeilen oberhalb der Summenzeile ausklammere gehts aber (fast).
Den Code muss ich wohl noch ein bisschen erklären damit man auch sieht warum der so ist. Also ich wollte horizontal und vertikal zentrierte Felder mit einer festen Breite. Daher habe ich die C{}-Spalten definiert (kopiert von irgendwo). Ausserdem wollte ich die Felder in denen die Zahlen stehen quadratisch deswegen sind \tabcolsep und \arraystretch jeweils auf 0(mm) gesetzt. So jetzt noch zu der letzten C{0mm}-Spalte die ist mit in der Tabelle weil sonst der Inhalt der (eigentlich) letzten Spalte nach oben rutscht (keine Ahnung warum aber es geht ja so erstmal).
Hier der Code:
\documentclass[a4paper,12pt]{scrreprt}	
\usepackage{ngerman}							%neue deutsche Rechtschreibung
\usepackage[utf8]{inputenc}						%direkte Eingabe von deutschen Sonderzeichen
\usepackage[T1]{fontenc}						%Trennung von Wörtern mit Umlauten

\usepackage{array}
\newcolumntype{C}[1]{>{\centering}m{#1}}

\usepackage{rotating}
\newcommand{\side}[1]{\begin{sideways}\parbox{21.5mm}{#1}\end{sideways}}

\usepackage{colortbl}
\newcommand{\dg}{\cellcolor[gray]{0.7}}
\newcommand{\mg}{\cellcolor[gray]{0.8}}
\newcommand{\hg}{\cellcolor[gray]{0.9}}

\usepackage{multirow}

\setlength{\tabcolsep}{0mm} 		%zusätzlicher abstand zwischen den Spalten
\renewcommand{\arraystretch}{0} 	%zusätzlicher abstand zwischen den Zeilen (Faktor)

\begin{document}

\begin{tabular}{|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{0mm}}
\hline
\multicolumn{2}{|C{20mm}|}{}&\multicolumn{5}{C{50mm}|}{Kriterium A}&\multirow{2}{*}[7.5mm]{\side{Summe}}&\multirow{2}{*}[7.5mm]{\side{Wichtung}}&\\[15mm]\cline{3-7}
\multicolumn{2}{|C{20mm}|}{}& K1& K2& K3& K4& K5&&&\\[10mm]\hline
\multirow{5}{*}{\side{\hspace{-10mm} Kriterium B}}
&\hg K1	&\hg 1&\hg 0&\hg 1&\hg 0&\hg 2&\hg 4&\hg 16&\\[10mm]
& 	 K2	&	 2&    1&	 2&	   0&	 2&	   7&    28&\\[10mm]
&\hg K3 &\hg 1&\hg 0&\hg 1&\hg 0&\hg 1&\hg 3&\hg 12&\\[10mm]
&    K4 &    2&    2&	 2&	   1&	 2&    9&    36&\\[10mm]
&\hg K5 &\hg 0&\hg 0&\hg 1&\hg 0&\hg 1&\hg 2&\hg  8&\\[10mm]\hline
\multicolumn{7}{|C{70mm}|}{Summe}& 25& 100&\\[10mm]\hline
\multicolumn{2}{|C{20mm}|}{\dg Legende}&\multicolumn{7}{C{70mm}|}{\dg hier wird das Feld nicht bis zum Ende gefüllt
}&\\[10mm]\hline

\end{tabular}

\end{document}
Kann mir jemand erklären wo das Problem liegt... und am besten noch eine Lösung dazu anbieten?
Andere Vorschläge sind auch willkommen.

Epllus
Forum-Guru
Forum-Guru
Beiträge: 470
Registriert: So 23. Sep 2012, 17:31

Beitrag von Epllus »

Versuch es mit dem Code:
\documentclass[a4paper,12pt]{scrreprt}   
\usepackage{ngerman}                     %neue deutsche Rechtschreibung 
\usepackage[utf8]{inputenc}                  %direkte Eingabe von deutschen Sonderzeichen 
\usepackage[T1]{fontenc}                  %Trennung von Wörtern mit Umlauten 

\usepackage{array} 
\newcolumntype{C}[1]{>{\centering}m{#1}} 

\usepackage{rotating} 
\newcommand{\side}[1]{\begin{sideways}\parbox{21.5mm}{#1}\end{sideways}} 

\usepackage{colortbl} 
\newcommand{\dg}{\cellcolor[gray]{0.7}} 
\newcommand{\mg}{\cellcolor[gray]{0.8}} 
\newcommand{\hg}{\cellcolor[gray]{0.9}} 

\usepackage{multirow} 

\setlength{\tabcolsep}{0mm}       %zusätzlicher abstand zwischen den Spalten 
\renewcommand{\arraystretch}{0}    %zusätzlicher abstand zwischen den Zeilen (Faktor) 

\begin{document} 

\begin{tabular}{|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{10mm}|C{0mm}}
\hline 
\multicolumn{2}{|C{20mm}|}{}&\multicolumn{5}{C{50mm}|}{Kriterium A}&\multirow{2}{*}[7.5mm]{\side{Summe}}&\multirow{2}{*}[7.5mm]{\side{Wichtung}}&\\[15mm]\cline{3-7} 
\multicolumn{2}{|C{20mm}|}{}& K1& K2& K3& K4& K5&&&\\[10mm]\hline 
\multirow{5}{*}{\side{\hspace{-10mm} Kriterium B}} 
&\hg K1   &\hg 1&\hg 0&\hg 1&\hg 0&\hg 2&\hg 4&\hg 16&\\[10mm] 
&     K2   &    2&    1&    2&      0&    2&      7&    28&\\[10mm] 
&\hg K3 &\hg 1&\hg 0&\hg 1&\hg 0&\hg 1&\hg 3&\hg 12&\\[10mm] 
&    K4 &    2&    2&    2&      1&    2&    9&    36&\\[10mm] 
&\hg K5 &\hg 0&\hg 0&\hg 1&\hg 0&\hg 1&\hg 2&\hg  8&\\[10mm]\hline 
\multicolumn{7}{|C{70mm}|}{Summe}& 25& 100&\\[10mm]\hline 
\multicolumn{2}{|C{20.1mm}|}{\dg Legende}&\multicolumn{7}{C{70.9mm}|}{\dg hier wird das Feld nicht bis zum Ende gefüllt 
}&\\[10mm]\hline 

\end{tabular} 

\end{document} 
Wie du bemerkst steht in der letzten Zeile statt 20mm, 20.1mm und statt 70mm, 70,9.
Die Antwort ist eigentlich einfach:
Du hast LaTeX befohlen, ein 70mm langes graues Kasterl zu machen, obwohl es eigentlich 70,9mm lang sein sollte. Darum der weiße Rand.

Hoffe es hilft,
Epllus.

DT
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Fr 30. Sep 2011, 15:01

Beitrag von DT »

Danke das geht... jetzt frage ich mich allerdings woher die 0.1 bzw. 0.9mm zusätzlich kommen? kannst du mir das vll. noch sagen?

Epllus
Forum-Guru
Forum-Guru
Beiträge: 470
Registriert: So 23. Sep 2012, 17:31

Beitrag von Epllus »

Die 0,1mm bzw. 0,9mm kommen von dem \tablecolsep, diese legt
den Abstand fest, der innerhalb einer tabular-Umgebung vor und nach den einzelnen Spalten jeweils eingefügt wird, also den halben Abstand zwischen zwei Spalten.
Quelle: http://www.weinelt.de/latex/tabcolsep.html

Dadurch wird deine Tabelle etwas länger als 90mm.

Hoffe es hilft,
Epllus

DT
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Fr 30. Sep 2011, 15:01

Beitrag von DT »

Aha... etwas merkwürdig weil ich den ja eigentlich extra auf 0mm gesetzt habe (
\setlength{\tabcolsep}{0mm} 
) aber gut wenn dem halt so ist...

danke für deine hilfe

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Beitrag von rais »

DT hat geschrieben:jetzt frage ich mich allerdings woher die 0.1 bzw. 0.9mm zusätzlich kommen?
Du setzt vertikale Linien zwischen die einzelnen Spalten, deshalb kommt Deine \multicolumn-Box um n-1 Liniendicken zu kurz.
\multicolumn{7}{C{\dimexpr 70mm+6\arrayrulewidth\relax}|}{\dg hier wird das Feld nun bis zum Ende gefüllt}
MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

DT
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Fr 30. Sep 2011, 15:01

Beitrag von DT »

ok das erklärt einiges... dachte bisher die Linien werden einfach über die Box gezeichnet und nicht dazwischen...
Vielen dank...

bella9091

Beitrag von bella9091 »

Vielen Dank, genau das, was ich gesucht habe.

Antworten