Ich möchte in Tabellen Zeilen visuell zusammenfassen durch vertikale eckige Klammern. Ansätze werden bereits hier Wie kann ich geschweifte Klammern über mehrere Tabellen-Zeilen spannen? dargestellt, mir scheint jedoch für meinen Fall nur der mit TikZ brauchbar. Wie kann ich nun die geschweiften Klammern eckig machen? Ich finde im manual von Wellen über Sternen bis hin zu Fußspuren alles, aber keine eckigen Klammern...oder läuft das nicht über \draw[decorate,decoration=_____]?

alt text

Open in writeLaTeX
\documentclass{scrartcl}
\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*{4}{^l}}
    \toprule
    \rowstyle{\head}
    & Vers & &Zusammenfassung \\
    \midrule
    \savepos{a} &  1-5  & & Seefahrt\\
     & \savepos{c} & 6-15  & Natura\\
     & \savepos{d}&16-25 & Reise \\
     \savepos{b}& 26-30 & & Unterwelt \\
    \bottomrule
  \end{tabular}

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

gefragt 15 Jun '14, 16:16

Apricus's gravatar image

Apricus
21111
Akzeptiert-Rate: 0%

bearbeitet 15 Jun '14, 16:53

esdd's gravatar image

esdd
17.8k284257


Mit den TikZ-Bibliotheken fit und matrix

  • Der Anfangs- und Endpunkt wird mit \savepos{<name>-a} und \savepos{<name-e>} markiert, damit eine foreach Schleife zum Einfügen der Klammern verwendet werden kann.
  • Mittels der Option fit=(<name>-s) (<name>-e) wird ein neuer node über die gesamte Höhe definiert.
  • Über die Option left delimiter={]} wird an den rechten Rand dieses node eine eckige Klammer gezeichnet. Die delimiter Optionen werden von der matrix Bibliothek bereit gestellt
Open in writeLaTeX
\documentclass{scrartcl}
\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{fit,matrix}
\newcommand\savepos[1]{\tikz[remember picture]{\node[](#1){};}}

\begin{document}
  \begin{tabular}{_l*{4}{^l}}
    \toprule
    \rowstyle{\head}
    & Vers & &Zusammenfassung \\
    \midrule
    \savepos{a-s} &  1-5  & & Seefahrt\\
     & \savepos{b-s} & 6-15  & Natura\\
     & \savepos{b-e}&16-25 & Reise \\
     \savepos{a-e}& 26-30 & & Unterwelt \\
    \bottomrule
  \end{tabular}
% Einfügen der Klammern als overlay
  \tikz[remember picture,overlay]\foreach \n in {a,b}
      \node[fit=(\n-s.north east) (\n-e.south east),inner sep=0pt,left delimiter={[}]{};
\end{document}

alt text

Alternative: Zeichnen der Klammern

Dae es sich bei den Klammern ja nur um gerade Linien handelt, kann man diese auch einfach selbst zeichnen.

  • Der Anfangs- und Endpunkt wird wieder mit \savepos{<name>-a} und \savepos{<name-e>} markiert. Dieses Namensschema ermöglicht das Einfügen mehrerer Klammern in einer foreach-Schleife.
  • Die Länge der kleinen Strich sollte abhängig von der Schriftgröße sein. Im Codebeispiel entsprechen sie der Länge inner xsep, die hier mir 0.25em festgelegt wird.
  • Die Klammern werden als overlay nach Fertigstellung der Tabelle eingezeichnet
Open in writeLaTeX
\documentclass{scrartcl}
\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}
\newcommand\savepos[1]{\tikz[remember picture]{\node[inner xsep=0.2em](#1){};}}

\begin{document}
  \begin{tabular}{_l*{4}{^l}}
    \toprule
    \rowstyle{\head}
    & Vers & &Zusammenfassung \\
    \midrule
    \savepos{a-s} &  1-5  & & Seefahrt\\
     & \savepos{b-s} & 6-15  & Natura\\
     & \savepos{b-e}&16-25 & Reise \\
     \savepos{a-e}& 26-30 & & Unterwelt \\
    \bottomrule
  \end{tabular}
% Einfügen der Klammern als overlay
  \tikz[remember picture,overlay]\foreach \n in {a,b}
    \draw(\n-s.north)--(\n-s.north west)--(\n-e.south west)--(\n-e.south);
\end{document}

alt text

Permanenter link

beantwortet 15 Jun '14, 17:51

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 15 Jun '14, 19:26

Ah ja, die Klammern natürlich anders herum, also nach rechts hin offen, das hatte ich vergessen. Aber das lässt sich ja leicht lösen, indem ich den delimiter ändere. Vielen Dank!!

(15 Jun '14, 17:59) Apricus

@Apricus Ich hab die Klammern im Beispiel entsprechend geändert.

(15 Jun '14, 18:11) esdd
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:

×256
×15

gestellte Frage: 15 Jun '14, 16:16

Frage wurde gesehen: 11,443 Mal

zuletzt geändert: 15 Jun '14, 19:26