Ich möchte in Tabellen Zeilen visuell zusammenfassen durch vertikale geschweifte Klammern. Zum Beispiel die Mehrfachnennungen in dieser Tabelle:

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}

\renewcommand*{\familydefault}{\sfdefault}
\newcommand*{\head}{\bfseries}

\newcolumntype{_}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
  \begin{tabular}{_l*{3}{^l}}
    \toprule
    \rowstyle{\head}
    Anwendung               & Betriebssystem & Version     \\
    \midrule
    Fileservice             & Linux          & Debian      \\
    Backup                  & Linux          & Debian      \\
    Mail                    & Linux          & Debian      \\
    Datenbanken             & Linux          & Red Hat     \\
    DHCP / DNS              & Linux          & Red Hat     \\
    LDAP / Domaincontroller & Windows        & Server 2008 \\
    \bottomrule
  \end{tabular}
\end{document}

Tabelle

Wie lässt sich das erreichen?

gefragt 13 Jul '13, 23:55

Tino's gravatar image

Tino
2458812
Akzeptiert-Rate: 0%

Bitte denke daran, die Antworten zu akzeptieren, die zur Lösung des jeweiligen Problems führen. Da gibt es bei einigen deiner Fragen noch Nachholbedarf.

(14 Jul '13, 11:19) Thorsten

@Thorsten Mache ich natürlich. Manchmal lasse ich Fragen offen für Alternativ-Vorschläge, gehe aber dann mein Profil durch und räume auf durch Abhaken.

(14 Jul '13, 14:18) Tino

Man kann hier das Paket bigdelim gemeinsam mit multirow verwenden - sie gehören sowieso zum selben Bundle. Das Paket bietet diese Befehle für Klammern über mehrere Tabellenzeilen:

\ldelim({Zeilenzahl}{Breite}[Text]
\rdelim){Zeilenzahl}{Breite}[Text]

Statt ) kann man hier beliebige Begrenzer wählen, wie etwa \}, \{, [ und ], alles was man auch bei \left und \right angeben kann. Der optionale Text würde mittig daneben gesetzt.

An diesem Beispiel kann es so aussehen - einmal mit optionalem Text und einmal ohne, dafür mit Extra-Spalte für die Klammern:

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{bigdelim}
\renewcommand*{\familydefault}{\sfdefault}
\newcommand*{\head}{\bfseries}

\newcolumntype{_}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
\begin{tabular}{_l*{3}{^l}}
  \toprule
  \rowstyle{\head}
  Anwendung               & Betriebssystem & Version     \\
  \midrule
  Fileservice             & Linux          & \rdelim\}{3}{1.8cm}[\normalfont Debian] \\
  Backup                  & Linux          & \\
  Mail                    & Linux          & \\
  Datenbanken             & Linux          & \rdelim\}{2}{1.8cm}[\normalfont Red Hat] \\
  DHCP / DNS              & Linux          & \\
  LDAP / Domaincontroller & Windows        & Server 2008 \\
  \bottomrule
\end{tabular}

\bigskip

\begin{tabular}{_l*{4}{^l}}
  \toprule
  \rowstyle{\head}
  Anwendung               & Betriebssystem & & Version \\
  \midrule
  Fileservice             & Linux          & \rdelim\}{3}{11pt} & \multirow{3}{*}{Debian}\\
  Backup                  & Linux          & & \\
  Mail                    & Linux          & & \\
  Datenbanken             & Linux          & \rdelim\}{2}{11pt} & \multirow{2}{*}{Red Hat}\\
  DHCP / DNS              & Linux          & & \\
  LDAP / Domaincontroller & Windows        & & Server 2008 \\
  \bottomrule
\end{tabular}
\end{document}

alt text

Permanenter link

beantwortet 14 Jul '13, 13:56

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

Man lernt doch immer wieder neue Pakete kennen.

(14 Jul '13, 17:30) Thorsten

Vielleicht noch der Hinweis, dass bigdelim einen großen Bug hat: Modifikationen mittels \arraystretch werden ignoriert.

(14 Jul '13, 17:35) Marco_D

Hier darf eine TikZ-Antwort nicht fehlen ;) TikZ ermöglicht es durch seine remember picture und overlay Optionen, Stellen zu markieren, etwa um sie später zu verbinden. Um einen Pfad zwischen zwei solchen Stellen mit einer geschweiften Klammer zu verbinden, kann man die Bibliothek decorations.pathreplacing verwenden, um dann den Pfad mit decorate,decoration=brace zu dekorieren.

Erbegnis

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}

\renewcommand*{\familydefault}{\sfdefault}
\newcommand*{\head}{\bfseries}

\newcolumntype{_}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\newcommand\savepos[1]{\tikz[remember picture]{\node(#1){};}}

\begin{document}
  \begin{tabular}{_l*{3}{^l}}
    \toprule
    \rowstyle{\head}
    Anwendung               & Betriebssystem & Version \\
    \midrule
    Fileservice             & \savepos{a}    & \savepos{c} \\
    Backup \\
    Mail                    &                & \savepos{d} \\
    Datenbanken             &                & \savepos{e} \\
    DHCP / DNS              & \savepos{b}    & \savepos{f} \\
    LDAP / Domaincontroller & Windows        & Server 2008 \\
    \bottomrule
  \end{tabular}

  \begin{tikzpicture}[remember picture,overlay]
    \draw[decorate,decoration=brace]
      (a.north east) -- node[anchor=west] { Linux } (b.south east) ;
    \draw[decorate,decoration=brace]
      (c.north east) -- node[anchor=west] { Debian } (d.south east) ;
    \draw[decorate,decoration=brace]
      (e.north east) -- node[anchor=west] { Red Hat } (f.south east) ;
  \end{tikzpicture}
\end{document}
Permanenter link

beantwortet 14 Jul '13, 13:53

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

bearbeitet 14 Jul '13, 13:53

Sehr gut zu verstehen, wie das funktioniert! Das lässt sich ja dann auch woanders analog anwenden, wie in itemize, tabbing oder anderem. Lohnt sich echt, das im Kopf zu behalten, auch wenn ich erstmal bigdelim nehme.

(14 Jul '13, 14:25) Tino

Dazu bedarf es eines Tricks (bzw. mehrerer).

  • Es wird eine zusätzliche Spalte ^c mit zentriertem Inhalt und festgelegten Abständen zu den benachbarten Spalten eingerichtet. Diese Spalte nimmt dann die geschweiften Klammern auf.
  • Da die Klammern über mehrere Zeilen reichen werden, muss deren Höhe mit Hilfe von \smash versteckt werden, damit die betroffenen Zeilen ihre Höhe behalten.
  • An den Stellen, wo die Klammern über eine gerade Anzahl an Zeilen reichen sollen, muss das Paket »multirow« zur Hilfe herangezogen werden.
  • Die Skalierung der Klammern erfolgt im Mathematik-Modus. Die Größe der Klammern muss allerdings manuell festgelegt werden (vielleicht fällt jemand anderem hier ja ein Automatismus ein).

Wenn ich dich dann noch richtig verstanden habe, sollte nachfolgendes Beispiel deinen Wünschen entsprechen.

\documentclass[
  11pt,
  border=2pt,
  convert={density=100}
]{standalone}
\usepackage{array,booktabs,multirow}

\renewcommand*{\familydefault}{\sfdefault}
\newcommand*{\head}{\bfseries}

\newcolumntype{_}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
  \begin{tabular}{_l^l@{\,}^c@{\,}^l} \toprule
    \rowstyle{\head}
    Anwendung               & Betriebssystem & & Version     \\ \midrule
    Fileservice             & Linux          & &       \\
    Backup                  & Linux          & \smash{$\left.\rule{0pt}{4.5ex}\right\rbrace$}& Debian      \\
    Mail                    & Linux          & &       \\
    Datenbanken             & Linux          & \multirow{2}{*}{\smash{$\left.\rule{0pt}{3ex}\right\rbrace$}}& \multirow{2}{*}{Red Hat}     \\
    DHCP / DNS              & Linux          & &             \\
    LDAP / Domaincontroller & Windows        & & Server 2008 \\ \bottomrule
  \end{tabular}
\end{document}

Ergebnis

Permanenter link

beantwortet 14 Jul '13, 11:16

Thorsten's gravatar image

Thorsten
1.6k325
Akzeptiert-Rate: 58%

bearbeitet 14 Jul '13, 14:02

stefan's gravatar image

stefan ♦♦
18.1k143048

Sieht perfekt aus! Ist manuell erarbeitet, dafür lernt man aber daraus das Feintunen. Sehr in Ordnung die Lösung, vielen Dank, ich denke ich werde dennoch die bigdelim-Lösung nehmen, weil es ein fertiges Paket ist. Mit Feinheiten Deiner Lösung lässt sich das ja noch kombinieren.

(14 Jul '13, 14:21) Tino
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:

×254
×15

gestellte Frage: 13 Jul '13, 23:55

Frage wurde gesehen: 33,543 Mal

zuletzt geändert: 15 Jun '14, 15:21