Wie kann ich in der multirow-Zelle den weißen Strich vermeiden? Mit \cline erhält man leider gar keine weiße Linie mehr.

\documentclass{scrartcl}
\usepackage{colortbl}
\usepackage{multirow}

\begin{document}
\setlength\arrayrulewidth{2pt}
\arrayrulecolor{white}

\begin{tabular}{>{\columncolor{green}}l| >{\columncolor{yellow}}l| >{\columncolor{red}}m{2cm}}
A&B&C\\\hline
1&2&\\\hline %\cline{1-2}
X&Y&\multirow{-2}{*}{Summe}
\end{tabular}

\end{document}

gefragt 26 Feb, 10:31

sehuja's gravatar image

sehuja
215
Akzeptiert-Rate: 0%

bearbeitet 26 Feb, 13:58

saputello's gravatar image

saputello
10.8k104064

Ein bekanntes Problem. Ich habe dafür eine sehr ausgefeilte Lösung geschrieben, die leider in einem unveröffentlichten Paket sitzt... Gib mir zwei Minuten, dann habe ich etwas zusammen.

(26 Feb, 10:38) Skillmon
1

Im Übrigen kann man Source-Code als solchen formatieren, indem er entweder um 4 Leerzeichen eingerückt wird, oder aber markiert wird und anschließend auf den Button mit den Einsen und Nullen im Editor gedrückt wird.

(26 Feb, 10:52) Skillmon

Danke, für die super Lösung. :)

(26 Feb, 10:54) sehuja

@sehuja: Danke geht bei uns ein wenig anders: → Ich habe auf meine Frage eine Antwort bekommen. Wie geht es weiter?

Für die auf TeXwelt verwendete Formatierung gibt es übrigens eine Hilfe, die sich hinter dem großen Fragezeichen rechts über dem Eingabefeld für Fragen/Antworten verbirgt. Im Markdown-Sandkasten kann man das ungestört üben. Speziell zur Markierung von Code gibt es auch eine bebilderte Antwort @cgnieder.

(26 Feb, 11:08) saputello

Ok, hier die manuelle Variante, wie man das ohne weitere Pakete vermeiden kann. Die Lösung ist die Verwendung von zwei \cline in einer Reihe, allerdings mit unterschiedlichen Farben. Anschließend muss man die \cline sichtbar machen, da diese in LaTeX keinen vertikalen Platz reserviert und somit von einer folgenden \rowcolor oder \cellcolor (was implizit von \columncolor durchgeführt wird) verdeckt würden.

Die Dicke einer \cline entspricht \arrayrulewidth, welche wir mittels \noalign{\vskip\arrayrulewidth} reservieren (\cline macht intern am Ende seines Codes das Gegenteil, nämlich \vskip-\arrayrulewidth, wodurch mehrere \cline in die gleiche Zeile gesetzt werden können).

Außerdem müssen wir die \multirow noch anpassen, damit die vertikale Position stimmt, nämlich um eine halbe \arrayrulewidth.

\documentclass{scrartcl}

\usepackage{colortbl}
\usepackage{multirow}

\setlength\arrayrulewidth{2pt}
\arrayrulecolor{white}

\begin{document}
\begin{tabular}{>{\columncolor{green}}l| >{\columncolor{yellow}}l| >{\columncolor{red}}m{2cm}}
  A & B & C\\
  \hline
  1 & 2 & \\
  \cline{1-2}
  \arrayrulecolor{red}
  \cline{3-3}
  \arrayrulecolor{white}
  \noalign{\vskip\arrayrulewidth}
  X & Y & \multirow{-2}{*}[.5\arrayrulewidth]{Summe}
\end{tabular}
\end{document}

alt text

Permanenter link

beantwortet 26 Feb, 10:45

Skillmon's gravatar image

Skillmon
9215
Akzeptiert-Rate: 51%

bearbeitet 26 Feb, 10:50

Eine sehr einfache Lösung dieses Problems stellt das hhline-Paket dar. Dieses stellt die Anweisung \hline{Liniendeklaration} bereit. Die Liniendeklaration gibt dabei das spaltenweise Aussehen der jeweiligen Linie an. Ein vertikaler Strich | steht wie in der Spaltendeklaration für eine vertikale Linie bzw. den Anteil der vertikalen Linie innerhalb der horizontalen Linie. Ein Minus - steht für eine horizontale Linie. Eine Tilde ~ steht für das Fehlen einer Linie. Wie bei Spaltendeklaration kann man mit > Befehle vor der Ausführung der Linie einfügen. Um nun also die weiße Linie in der dritten Spalte an der entsprechenden Stelle weg zu bekommen, kann man einfach diesen Teil der Linie rot einfärben:

\documentclass{scrartcl}
\usepackage[table]{xcolor}% ist dem alleinigen colortbl überlegen
\usepackage{multirow}
\usepackage{hhline}

\begin{document}
\arrayrulecolor{white}
\setlength\arrayrulewidth{2pt}

\begin{tabular}{>{\columncolor{green}}l| >{\columncolor{yellow}}l| >{\columncolor{red}}m{2cm}}
  A&B&C\\
  \hline
  1&2&\\
  \hhline{|-|-|>{\arrayrulecolor{red}}-|}
  X&Y&\multirow{-2}{*}{Summe}
\end{tabular}

\end{document}

Kombination von multirow mit hhline

Indirekt ist dieses Vorgehen übrigens auch in Abschnitt »3.4 Multirow and colored cells« der multirow-Anleitung zu finden.

Permanenter link

beantwortet 26 Feb, 11:27

saputello's gravatar image

saputello
10.8k104064
Akzeptiert-Rate: 51%

bearbeitet 26 Feb, 11:27

Noch ein kleines Problem, welches in beiden Varianten auftritt. Wenn ich die gelbe Spalte auch wie die rote Spalte definiere, hängt die gelbe cline über. Habt ihr da auch noch eine tolle Idee ?

\begin{tabular}{>{\columncolor{green}}l|>{\columncolor{yellow}}m{2cm}|>{\columncolor{red}}m{2cm}}

A&B&C\ \ \hline

1&&\ \ \hhline{|-|>{\arrayrulecolor{yellow}}-|>{\arrayrulecolor{red}}-|}

X&\multirow{-2}{ * }{Frage}&\multirow{-2}{*}{Summe}

\end{tabular}

(26 Feb, 12:51) sehuja
1

@sehuja: Das wäre eigentlich eine Folgefrage und sollte als solche gestellt werden. Ich will aber mal nicht so sein. Du musst die Farbe, genau wie an der genannten Stelle in der multirow-Anleitung gezeigt, einfach vor dem vertikalen Strich wieder zurückstellen, damit der in weiß gesetzt wird:

\hhline{|-|>{\arrayrulecolor{yellow}}->{\arrayrulecolor{white}}|>{\arrayrulecolor{red}}-|}

BTW: Du solltest auch in Kommentaren auf korrektes Markdown achten, damit Code nicht als Text formatiert wird und so * und \\ korrekt angezeigt werden. Näheres findest Du in meinem Kommentar zur Frage.

(26 Feb, 12:59) saputello

Ok, danke, saputello. Das hatte ich noch nicht so ganz begriffen. Aber jetzt ;) echt cool.

(26 Feb, 13:27) sehuja

@sehuja: Mit der manuellen Variante lässt sich das Folgeproblem nicht so einfach lösen. Die Linienbreite ist im \cline-Code verankert, ohne \cline umzudefinieren, wodurch es mehr oder minder zu einem schlechten \hhline-Klon würde, geht das meines Wissens nach nicht.

(26 Feb, 13:54) Skillmon
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×241
×48
×29
×8
×7

gestellte Frage: 26 Feb, 10:31

Frage wurde gesehen: 1,284 Mal

zuletzt geändert: 26 Feb, 13:54