Geschweifte Klammer über mehrere Spalten

Tabellen und Grafiken erstellen und anordnen


Adriana
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Di 3. Mai 2016, 11:19

Geschweifte Klammer über mehrere Spalten

Beitrag von Adriana »

Hallo Zusammen

wie kriege ich es hin, eine geschweifte Klammer über mehrere Spalten einzurichten?
Das hier wäre ein Beispiel mit geschweiften Klammer über mehrere Zeilen:
\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}
Danke und Gruß

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 808
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

Mit TikZ geht sowas zum Beispiel so:
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{bigdelim}
\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}

\begin{tikzpicture}
	\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},overlay,decorate]
	(0,4) -- (7,4) ;
\end{tikzpicture} 
\end{document}

Adriana
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Di 3. Mai 2016, 11:19

Beitrag von Adriana »

Erstmal vielen Dank für die Antwort!

Und wenn ich über die geschweifte Klammer noch etwas schreiben möchte? Wie funktioniert das?

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 808
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

Z.B. so:
\begin{tikzpicture}
   \draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},overlay,decorate]
   (0,4) -- node[anchor=south][align=center,yshift=.5cm] {So schreibe ich\\ ueber die geschweifte Klammer} (7,4) ;

Adriana
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Di 3. Mai 2016, 11:19

Beitrag von Adriana »

Ich kriege das leider nicht hin ...wie finde ich die richtigen Koordinaten in Latex aus?

Die hier angegebenen Koordinaten (0,4) -- (7,4) führen dazu, dass die geschweifte Klammer in mein etwas größeres Dokument auf einer falschen Seite gezeichnet wird. Wenn ich mit den Koordinaten spiele verrutschen diese dann irgendwann, so dass ich diese nicht wieder finde..

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du könntest auch die Bibliothek tikzmark verwenden. In der Zeile, in der die Klammer stehen soll, kannst Du mit \rule vertikalen Platz reservieren sowie mit \tikzmark Anfangs- und Endpunkt der Klammer markieren.
\documentclass{article} 
\usepackage{array} 
\usepackage{booktabs} 
\usepackage{multirow} 
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usetikzlibrary{decorations.pathreplacing} 
\usepackage{bigdelim} 
\newcommand*{\head}{\bfseries} 
\newcolumntype{_}{>{\global\let\currentrowstyle\relax}} 
\newcolumntype{^}{>{\currentrowstyle}} 
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}% 
   #1\ignorespaces 
} 

\usepackage{blindtext}% für Fülltext
\begin{document}
\blindtext
\par
\begin{tabular}{_l*{3}{^l}}
    \rule{0pt}{4\normalbaselineskip}\tikzmark{tab1}&\multicolumn{1}{r}{\tikzmark{tab2}}\\
   \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}\nobreak
\begin{tikzpicture}[remember picture,overlay]
    \draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate] 
      (pic cs:tab1)
      -- node[above=5mm,align=center]{Text oberhalb\\der geschweiften Klammer}
      (pic cs:tab2) ; 
\end{tikzpicture}
\end{document}
Das braucht zwei Durchläufe für

Bild
Dateianhänge
gl_horizontaleKlammer.png
gl_horizontaleKlammer.png (24.33 KiB) 3574 mal betrachtet

Adriana
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Di 3. Mai 2016, 11:19

Beitrag von Adriana »

Bitte noch einmal um Hilfe, ich möchte mehrere geschweifte Klammer nebeneinander über den Tabellenkopf zeichnen
\documentclass{article} 
\usepackage{array} 
\usepackage{booktabs} 
\usepackage{multirow} 
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usetikzlibrary{decorations.pathreplacing} 
\usepackage{bigdelim} 
\newcommand*{\head}{\bfseries} 
\newcolumntype{_}{>{\global\let\currentrowstyle\relax}} 
\newcolumntype{^}{>{\currentrowstyle}} 
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}% 
   #1\ignorespaces 
} 
\usepackage{blindtext}% für Fülltext
\begin{document}
\blindtext
\par

\begin{table}[htbp]
	\centering
	\begin{tabular}{|p{0.12\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.03\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.1\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}}\hline
	\rule{0pt}{5\normalbaselineskip}\multicolumn{2}{r}{\tikzmark{tab1}}&\multicolumn{3}{r}{\tikzmark{tab2}}\\
		\rule{0pt}{5\normalbaselineskip}\multicolumn{5}{r}{\tikzmark{tab3}}&\multicolumn{8}{r}{\tikzmark{tab4}}\\
			\rule{0pt}{5\normalbaselineskip}\multicolumn{8}{r}{\tikzmark{tab5}}&\multicolumn{10}{r}{\tikzmark{tab6}}\\
	\toprule 
		\centering
		\rotatebox{90}{Artikelbezeichnung} & \rotatebox{90}{ fhgfdg } & \rotatebox{90}{dhjfjgf } & \rotatebox{90}{ fjghdfgkjsh } & \rotatebox{90}{gfghgfhg} & \rotatebox{90}{fghhghfd} & \rotatebox{90}{ufzufzu} & \rotatebox{90}{fhgjgfgfsz} & \rotatebox{90}{efzuuefguztsd} & \rotatebox{90}{dfzuizuidzfizf } & \rotatebox{90}{eruiiuzizfiz} & \rotatebox{90}{dfgzgzfugzuftg} & \rotatebox{90}{fdggzugfszuf} & \rotatebox{90}{dfhhfjjdfg} & \rotatebox{90}{dfhugfggf} & \rotatebox{90}{dufuhfzuhdf} & \rotatebox{90}{dshfghudfguzewrt} & \rotatebox{90}{dfhhdjfjgdf}\\
		\hline
		hgfgdfgz\newline hfgzufgeuz \newline uefugfg& &  & 1\newline 1 \newline 1 & & & & & 3\newline 3\newline 3 & &  2;4\newline 2;4\newline 2;4 & 5\newline 5\newline 5 & & & 6\newline 6\newline 6 & 7\newline 7\newline 7 & & ~\newline utdfuioghzurgezu\\
		\hline
		urgfuzr\newline rgerg\newline wrtwzz& 1\newline 1\newline 1 &  &  &  & & & & & & & & & 2\newline 2\newline 2 & 3\newline 3\newline 3 & 4\newline 4\newline 4 & & ~\newline hggh\\
		\hline 
		rtzueuterzut\newline gzftzt &  &1\newline 1 &&& 3\newline & ~\newline 3 & & & &2\newline 2 & &4\newline & ~\newline 4 & 5\newline 5 & 6\newline 6 & &uzuzuzu \newline guftzftz \\
		\hline
		ztttuzt &  &&&1& & &3 & &2 & & & & 4 &5 & 6&7&hgjghjgh \\
		\hline
	\end{tabular}
	\nobreak
	\begin{tikzpicture}[remember picture,overlay]
	\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate] 
	(pic cs:tab1)
	-- node[above=5mm,align=center]{zutuztuztuitzti}
	(pic cs:tab2) ; 
	\end{tikzpicture}
		\begin{tikzpicture}[remember picture,overlay]
		\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate] 
		(pic cs:tab3)
		-- node[above=5mm,align=center]{tztztzutzut}
		(pic cs:tab4) ; 
		\end{tikzpicture}
			\begin{tikzpicture}[remember picture,overlay]
			\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate] 
			(pic cs:tab5)
			-- node[above=5mm,align=center]{67676678}
			(pic cs:tab6) ; 
			\end{tikzpicture}
	\captionsetup{singlelinecheck=true}
	\caption{ztutztuzututututuztzu}
	\label{tabelle1}
\end{table}
\end{document}
Danke und Gruß

DADABBI

Beitrag von DADABBI »

Du solltest darauf achten, dass das Beispiel zumindest theoretisch lauffähig ist, also keine Anweisungen verwenden, die gar nicht definiert sind. Und dann darf man natürlich eine Spalte nicht erst mit Inhalt wie einer \rule versehen und danach noch \multicolumn darauf anwenden wollen. \multicolumn muss immer als erstes in der ersten betroffenen Spalte stehen und bis zum Ende der letzten betroffenen Spalte reichen.
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{bigdelim}
\newcommand*{\head}{\bfseries}
\newcolumntype{_}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
\usepackage{blindtext}% für Fülltext
\begin{document}
\blindtext
\par

\begin{table}[htbp]
\centering
\begin{tabular}{|p{0.12\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.03\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.1\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}}\hline
%\rule{0pt}{5\normalbaselineskip}% \multicolumn kann nicht verwendet werden,
                                 % nachdem die Spalte bereits Inhalt hat,
                                 % auch wenn dieser ggf. unsichtbar ist.
\multicolumn{2}{r}{\tikzmark{tab1}\rule{0pt}{5\normalbaselineskip}}&\multicolumn{3}{r}{\tikzmark{tab2}}\\
%\rule{0pt}{5\normalbaselineskip}
\multicolumn{5}{r}{\tikzmark{tab3}}&\multicolumn{8}{r}{\tikzmark{tab4}}\\
%\rule{0pt}{5\normalbaselineskip}
\multicolumn{8}{r}{\tikzmark{tab5}}&\multicolumn{10}{r}{\tikzmark{tab6}}\\
\toprule
\centering
\rotatebox{90}{Artikelbezeichnung} & \rotatebox{90}{ fhgfdg } & \rotatebox{90}{dhjfjgf } & \rotatebox{90}{ fjghdfgkjsh } & \rotatebox{90}{gfghgfhg} & \rotatebox{90}{fghhghfd} & \rotatebox{90}{ufzufzu} & \rotatebox{90}{fhgjgfgfsz} & \rotatebox{90}{efzuuefguztsd} & \rotatebox{90}{dfzuizuidzfizf } & \rotatebox{90}{eruiiuzizfiz} & \rotatebox{90}{dfgzgzfugzuftg} & \rotatebox{90}{fdggzugfszuf} & \rotatebox{90}{dfhhfjjdfg} & \rotatebox{90}{dfhugfggf} & \rotatebox{90}{dufuhfzuhdf} & \rotatebox{90}{dshfghudfguzewrt} & \rotatebox{90}{dfhhdjfjgdf}\\
\hline
hgfgdfgz\newline hfgzufgeuz \newline uefugfg& & & 1\newline 1 \newline 1 & & & & & 3\newline 3\newline 3 & & 2;4\newline 2;4\newline 2;4 & 5\newline 5\newline 5 & & & 6\newline 6\newline 6 & 7\newline 7\newline 7 & & ~\newline utdfuioghzurgezu\\
\hline
urgfuzr\newline rgerg\newline wrtwzz& 1\newline 1\newline 1 & & & & & & & & & & & & 2\newline 2\newline 2 & 3\newline 3\newline 3 & 4\newline 4\newline 4 & & ~\newline hggh\\
\hline
rtzueuterzut\newline gzftzt & &1\newline 1 &&& 3\newline & ~\newline 3 & & & &2\newline 2 & &4\newline & ~\newline 4 & 5\newline 5 & 6\newline 6 & &uzuzuzu \newline guftzftz \\
\hline
ztttuzt & &&&1& & &3 & &2 & & & & 4 &5 & 6&7&hgjghjgh \\
\hline
\end{tabular}
\nobreak
\begin{tikzpicture}[remember picture,overlay]
\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate]
(pic cs:tab1)
-- node[above=5mm,align=center]{zutuztuztuitzti}
(pic cs:tab2) ;
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate]
(pic cs:tab3)
-- node[above=5mm,align=center]{tztztzutzut}
(pic cs:tab4) ;
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate]
(pic cs:tab5)
-- node[above=5mm,align=center]{67676678}
(pic cs:tab6) ;
\end{tikzpicture}
%\captionsetup{singlelinecheck=true}% gibt es nicht
\caption{ztutztuzututututuztzu}
\label{tabelle1}
\end{table}
\end{document}
BTW: Tabellen mit vertikalen Linien sind eher schlecht lesbar. Vertikale Linien sollte man daher insgesamt meiden und horizontale auf ein Minimum reduzieren. Siehe dazu beispielsweise die [d]booktabs[/d]-Anleitung oder die Folien zum tabsatz-Vortrag (Link in Wichtige Netzdokumente).

Adriana
Forum-Anfänger
Forum-Anfänger
Beiträge: 22
Registriert: Di 3. Mai 2016, 11:19

Beitrag von Adriana »

Vielen Dank für die sehr konstruktive Antwort!

Nur noch eine Frage: Wie bringe ich alle Klammern auf die gleiche Höhe?
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{bigdelim}
\newcommand*{\head}{\bfseries}
\newcolumntype{_}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
\usepackage{blindtext}% für Fülltext
\begin{document}
\blindtext
\par

\begin{table}[htbp]
\centering
\begin{tabular}{|p{0.12\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.03\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.1\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}|p{0.01\textwidth}}\hline
	\multicolumn{2}{r}{\tikzmark{tab1}\rule{0pt}{5\normalbaselineskip}}&\multicolumn{3}{r}{\tikzmark{tab2}}\\
		\multicolumn{6}{r}{\tikzmark{tab3}}&\multicolumn{2}{r}{\tikzmark{tab4}}\\
		\multicolumn{12}{r}{\tikzmark{tab5}}&\multicolumn{2}{r}{\tikzmark{tab6}}\\
\toprule
\centering
\rotatebox{90}{Artikelbezeichnung} & \rotatebox{90}{ fhgfdg } & \rotatebox{90}{dhjfjgf } & \rotatebox{90}{ fjghdfgkjsh } & \rotatebox{90}{gfghgfhg} & \rotatebox{90}{fghhghfd} & \rotatebox{90}{ufzufzu} & \rotatebox{90}{fhgjgfgfsz} & \rotatebox{90}{efzuuefguztsd} & \rotatebox{90}{dfzuizuidzfizf } & \rotatebox{90}{eruiiuzizfiz} & \rotatebox{90}{dfgzgzfugzuftg} & \rotatebox{90}{fdggzugfszuf} & \rotatebox{90}{dfhhfjjdfg} & \rotatebox{90}{dfhugfggf} & \rotatebox{90}{dufuhfzuhdf} & \rotatebox{90}{dshfghudfguzewrt} & \rotatebox{90}{dfhhdjfjgdf}\\
\hline
hgfgdfgz\newline hfgzufgeuz \newline uefugfg& & & 1\newline 1 \newline 1 & & & & & 3\newline 3\newline 3 & & 2;4\newline 2;4\newline 2;4 & 5\newline 5\newline 5 & & & 6\newline 6\newline 6 & 7\newline 7\newline 7 & & ~\newline utdfuioghzurgezu\\
\hline
urgfuzr\newline rgerg\newline wrtwzz& 1\newline 1\newline 1 & & & & & & & & & & & & 2\newline 2\newline 2 & 3\newline 3\newline 3 & 4\newline 4\newline 4 & & ~\newline hggh\\
\hline
rtzueuterzut\newline gzftzt & &1\newline 1 &&& 3\newline & ~\newline 3 & & & &2\newline 2 & &4\newline & ~\newline 4 & 5\newline 5 & 6\newline 6 & &uzuzuzu \newline guftzftz \\
\hline
ztttuzt & &&&1& & &3 & &2 & & & & 4 &5 & 6&7&hgjghjgh \\
\hline
\end{tabular}
\nobreak
\begin{tikzpicture}[remember picture,overlay]
\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate]
(pic cs:tab1)
-- node[above=5mm,align=center]{zutuztuztuitzti}
(pic cs:tab2) ;
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate]
(pic cs:tab3)
-- node[above=5mm,align=center]{tztztzutzut}
(pic cs:tab4) ;
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\draw[thick,decoration={brace, amplitude = 12 pt, aspect = 0.5},decorate]
(pic cs:tab5)
-- node[above=5mm,align=center]{67676678}
(pic cs:tab6) ;
\end{tikzpicture}
%\captionsetup{singlelinecheck=true}% gibt es nicht
\caption{ztutztuzututututuztzu}
\label{tabelle1}
\end{table}
\end{document}

DADABBI

Beitrag von DADABBI »

Indem du die Marken auch in derselben Zeile setzt. Die Klammern werden genau zwischen den mit \tikzmark gesetzten Marken ausgegeben. Wenn du diese also in unterschiedlichen Zeilen setzt, dann sind die auch in unterschiedlichen Zeilen. Wenn du sie in derselben Tabellenzeile setzt, dann werden sie auch in derselben Tabellenzeile ausgegeben.

Antworten