Vertikale Ausrichtung in Tabellen

Tabellen und Grafiken erstellen und anordnen


Melli_94
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 27. Feb 2021, 17:56

Vertikale Ausrichtung in Tabellen

Beitrag von Melli_94 »

Hey,

ich habe folgendes Problem mit meiner Tabelle:

Ich schaffe es nicht die Texte vertikal mittig zu zentrieren, wenn in einer Zelle mehrere Zeilen entstehen, ist in der Zelle nebendran der Text unten. Dadurch steht das = 8mm nicht neben dem kleinen Quadrat, sondern unten und zudem berühren die Kreise die untere Linie.
Das Problem habe ich fast durch \vspace behoben, nur werden da die vertikalen nicht mitverlängert.
Ich habe hier die Tabelle in 2 Beispielen und wär euch wirklich dankbar, wenn ihr mir dabei weiter helfen könntet.

Vielen lieben Dank schonmal :)

\documentclass[twoside, 12pt, a4paper, openright]{report} 

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{color}
\usepackage{xcolor}
\usepackage{pdfpages}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows}
\usepackage[hang]{caption} % Beschriftung für Tabelle, Abbildungen usw.
\usepackage{float}
\usepackage{stfloats}
\usepackage{placeins}
\usepackage{tabularx}
\usepackage{multirow}



\begin{document}

\begin{table}[!htb]
\centering
\begin{tabular}[c]{|l|c|c|c|c|}
\hline
%\rule{0pt}{25pt}
\textbf{Text} & \multicolumn{2}{c|}{\textbf{Text}} & \multicolumn{2}{c|}{\textbf{Text}}\\
\hline
Text \textbf{(1)}
& 	\begin{tikzpicture}[baseline=0][line width =1 pt]
	\fill [fill=black,draw=black]
	(1,1 cm) coordinate (B)
		--node{} 
	(0,1) coordinate(A)
		 -- node{} 
	(0,0) coordinate(C)
		-- node{} 
	(1,0) coordinate(D)
		-- node{} 
	cycle
	;	
	\fill [fill=white,draw=black] (.5,.5) circle (.4 cm ) ; 
	\end{tikzpicture} 
& = 8 mm / 10 mm
& 	\begin{tikzpicture}[baseline=0][line width =1 pt]
	\fill [fill=black,draw=black]
	(1,1 cm) coordinate (B)
		--node{} 
	(0,1) coordinate(A)
		 -- node{} 
	(0,0) coordinate(C)
		-- node{} 
	(1,0) coordinate(D)
		-- node{} 
	cycle
	;	
	\fill [fill=white,draw=black] (.5,.5) circle (.4 cm ) ; 
	\end{tikzpicture} 
& = 8 mm / 10 mm
\\
\hline
Text \textbf{(2)}
& 	\begin{tikzpicture}[baseline=0][line width =1 pt]
	\fill [fill=white,draw=black] (0,0) circle (.4 cm ) ; 			
	\end{tikzpicture} 
& = 8 mm
& 	\begin{tikzpicture}[baseline=0][line width =1 pt]
	\fill [fill=white,draw=black] (0,0) circle (.4 cm ) ; 			
	\end{tikzpicture} 
& = 8 mm
\\

\hline
Text \textbf{(3)} 
& 	\begin{tikzpicture}[baseline=0][line width =1 pt]
	\fill [fill=white,draw=black] (0,0) circle (.3 cm ) ; 			
	\end{tikzpicture}  
& = 6 mm & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.2 cm ) ; \end{tikzpicture}
& = 4 mm \\ \hline Text \textbf{(4,5,6)} & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.2 cm ) ; \end{tikzpicture}
& = 4 mm && \\ \hline \end{tabular} \end{table} \FloatBarrier \begin{table}[!htb] \centering \newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} \begin{tabular}{|L{6.5cm}|C{1.75cm}C{1.75cm}|C{1.75cm}C{1.75cm}|} \hline \textbf{Text} & \multicolumn{2}{c|}{\textbf{Text}} & \multicolumn{2}{c|}{\textbf{Text}}\\ \hline Text \textbf{(1)} & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=black,draw=black] (1,1 cm) coordinate (B) --node{} (0,1) coordinate(A) -- node{} (0,0) coordinate(C) -- node{} (1,0) coordinate(D) -- node{} cycle ; \fill [fill=white,draw=black] (.5,.5) circle (.4 cm ) ; \end{tikzpicture} & = 8 mm / 10 mm & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=black,draw=black] (1,1 cm) coordinate (B) --node{} (0,1) coordinate(A) -- node{} (0,0) coordinate(C) -- node{} (1,0) coordinate(D) -- node{} cycle ; \fill [fill=white,draw=black] (.5,.5) circle (.4 cm ) ; \end{tikzpicture} & = 8 mm / 10 mm \\ \hline Text \textbf{(2)} & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.4 cm ) ; \end{tikzpicture} & = 8 mm & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.4 cm ) ; \end{tikzpicture} & = 8 mm \\ \hline Text \textbf{(3)} & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.3 cm ) ; \end{tikzpicture}
& = 6 mm & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.2 cm ) ; \end{tikzpicture}
& = 4 mm \\ \hline Text \textbf{(4,5,6)} & \begin{tikzpicture}[baseline=0][line width =1 pt] \fill [fill=white,draw=black] (0,0) circle (.2 cm ) ; \end{tikzpicture}
& = 4 mm \vspace{.5cm} && \\ \hline \end{tabular} \end{table} \FloatBarrier \end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2321
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Vertikale Ausrichtung in Tabellen

Beitrag von Bartman »

Die erste Tabelle zeigt einen Vorschlag, der die in Deiner Tabelle vorgegebenen waagerechten und senkrechten Linien beibehält, während der zweite Vorschlag von den Befehlen des Pakets booktabs Gebrauch macht. Die Beispiele in tabsatz können nützliche Anreize für den Tabellenentwurf mit dem genannten Paket bieten.

Falls Du den Zelleninhalten der ersten Tabelle mehr Raum geben darfst und möchtest, dann habe ich dafür mal zwei mögliche Herangehensweisen hinzugefügt.

\documentclass[twoside, 12pt, a4paper, openright]{report}

%\usepackage[utf8]{inputenc}% https://texwelt.de/fragen/26496
\usepackage[T1]{fontenc}
\usepackage{lmodern}% https://texwelt.de/fragen/5537
\usepackage[ngerman]{babel}
\usepackage{tikz}% lädt xcolor, graphicx und wird von pgfplots geladen
\usepackage[locale=DE]{siunitx}
\usepackage{booktabs}
% Stellt Befehle für die senkrechte Ausrichtung der TikZ-Zeichnungen zur Verfügung.
\usepackage{adjustbox}
\usepackage{varwidth}

\newcommand{\circleInRectangle}{%
    \tikz
        \fill
            rectangle (1,1)
            (.5,.5) circle [radius=4mm]
        ;%
}

\newcommand{\emptyCircle}[1]{%
    \tikz\draw circle [radius=#1];%
}

\newcommand{\setCellHeight}[2]{%
    \begin{varwidth}[c][#1]{\linewidth}
    #2%
    \end{varwidth}%
}

% https://tex.stackexchange.com/questions/562009
%\newcommand{\extendCellHeight}[2]{%
%    $\vcenter{\vspace{#1}\hbox{#2}\vspace{#1}}$%
%}

\begin{document}
\begin{table}[!htb]
\centering
\adjustboxset{valign=c}
\begin{tabular}{|l| *2{c|l|}}
\hline
\textbf{Text} 
& \multicolumn{2}{c|}{\textbf{Text}} 
& \multicolumn{2}{c|}{\textbf{Text}}\\
\hline
Text \textbf{(1)}
& \adjustbox{}{\circleInRectangle}
& = \SI{8}{\mm} / \SI{10}{\mm}
& \adjustbox{}{\circleInRectangle}
& = \SI{8}{\mm} / \SI{10}{\mm}
\\
\hline
\setCellHeight{1cm}{Text \textbf{(2)}}
& \adjustbox{}{\emptyCircle{4mm}}
& = \SI{8}{\mm}
& \adjustbox{}{\emptyCircle{4mm}}
& = \SI{8}{\mm}
\\
\hline
\setCellHeight{.9cm}{Text \textbf{(3)}}
& \adjustbox{}{\emptyCircle{3mm}}
& = \SI{6}{\mm}
& \adjustbox{}{\emptyCircle{2mm}}
& = \SI{4}{\mm}
\\
\hline
\setCellHeight{.7cm}{Text \textbf{(4,5,6)}}
& \adjustbox{}{\emptyCircle{2mm}}
& = \SI{4}{\mm}
&&
\\
\hline
\end{tabular}
\end{table}

\begin{table}[!htb]
\centering
\adjustboxset{valign=c}
\begin{tabular}{l *2{cl}}
\toprule
\textbf{Text} 
& \multicolumn{2}{c}{\textbf{Text}} 
& \multicolumn{2}{c}{\textbf{Text}}\\
\cmidrule(lr){1-1}
\cmidrule(lr){2-3}
\cmidrule(lr){4-5}
Text \textbf{(1)} & \adjustbox{}{\circleInRectangle}
& = \SI{8}{\mm} / \SI{10}{\mm}
& \adjustbox{}{\circleInRectangle}
& = \SI{8}{\mm} / \SI{10}{\mm}
\\
\addlinespace
Text \textbf{(2)}
& \adjustbox{}{\emptyCircle{4mm}}
& = \SI{8}{\mm}
& \adjustbox{}{\emptyCircle{4mm}}
& = \SI{8}{\mm}
\\
\addlinespace
Text \textbf{(3)}
& \adjustbox{}{\emptyCircle{3mm}}
& = \SI{6}{\mm}
& \adjustbox{}{\emptyCircle{2mm}}
& = \SI{4}{\mm}
\\
\addlinespace
Text \textbf{(4,5,6)}
& \adjustbox{}{\emptyCircle{2mm}}
& = \SI{4}{\mm}
&&
\\
\bottomrule
\end{tabular}
\end{table}
\end{document}

Melli_94
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 27. Feb 2021, 17:56

Re: Vertikale Ausrichtung in Tabellen

Beitrag von Melli_94 »

Vielen lieben Dank!! Hat mir wirklich sehr geholfen! :)


Antworten