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, 10:16

Apricus's gravatar image

Apricus
2111
Akzeptiert: 0%

bearbeitet 15 Jun '14, 10:53

esdd's gravatar image

esdd
14.2k53251


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, 11:51

esdd's gravatar image

esdd
14.2k53251

bearbeitet 15 Jun '14, 13: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, 11:59) Apricus

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

(15 Jun '14, 12:11) esdd
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185
×13

Frage gestellt: 15 Jun '14, 10:16

Frage wurde angeschaut: 2,804 Mal

Zuletzt aktualisiert: 15 Jun '14, 13:26