Seite 1 von 1

Vertikale Zentrierung in Tabellenzeile bei Umbruch

Verfasst: Di 8. Mär 2016, 09:44
von EliasvonB
Servus in die Runde! :)
Ich habe folgende Problematik und hoffe durch diesen Beitrag hilfreiche Hinweise zu bekommen.
Ich habe eine longtable, die mit dynamischen Inhalten gefüllt wird. So lange der Inhalt der Spalte 'Bezeichnung' nicht umbricht, ist alles in Ordnung. Ist der Inhalt allerdings zu lang und es kommt zu einem automatischen Umbruch, dann wird der Inhalt der ganzen Zeile leicht an den oberen Rand gedrückt. Mein Wunsch ist es aber, dass der Inhalt der Zeile anschließend immer noch vertikal zentriert ist. Lässt sich das auf irgendeine Weise realisieren?
Vielen Dank schon mal im voraus!

Gruß Elias

PS: Unten stehender Code ist nur ein Auszug.
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage[left=1.3cm,right=0.7cm,top=0.1cm,bottom=1.0cm,includefoot,includehead,headheight=210pt,headsep=0cm]{geometry}
\usepackage[T1]{fontenc}

% Regeln für die Ausrichtung in Tabellen
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}}

\begin{document}
\begin{large}
\begin{longtable}{@{}C{0.6cm} | @{  }C{1.55cm} | L{7cm} | L{3.5cm} | @{  }C{1.2cm} | C{2.5cm} @{}m{0cm}@{} } 
\hline 

\textbf{Pos}  & \textbf{Art-Nr} 	& \textbf{Bezeichnung} & \textbf{Farbe} & \textbf{Menge} & \textbf{usw.} &\\ [1.7ex]  \hline
\endhead
 1  & 12345/00      & Hier ist alles gut                                      & schwarz  &  1  & 	&\\ [0.7ex] \hline
 2  & 12345/00      & Im Gegensatz zu hier, wo die Zeile automatisch umbricht & weiß     &  1  &    &\\ [0.7ex] \hline
\end{longtable}
\end{large}
\end{document}

Verfasst: Di 8. Mär 2016, 11:10
von Besserwisser
Am besten lässt man die ganzen den Lesefluss ohnehin sehr störenden vertikalen Linien weg und verwendet booktabs:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage[left=1.3cm,right=0.7cm,top=0.1cm,bottom=1.0cm,includefoot,includehead,headheight=210pt,headsep=0cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage{booktabs}

% Regeln für die Ausrichtung in Tabellen
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}}

\begin{document}
\large
\begin{longtable}{C{0.6cm}C{1.55cm}L{7cm}L{3.5cm}C{1.2cm}C{2.5cm}} 
\toprule
\textbf{Pos}  & \textbf{Art-Nr}    & \textbf{Bezeichnung} & \textbf{Farbe} & \textbf{Menge} & \textbf{usw.} \\
\midrule
\endhead
 1  & 12345/00      & Hier ist alles gut                                      & schwarz  &  1  &    \\
\midrule
 2  & 12345/00      & Im Gegensatz zu hier, wo die Zeile automatisch umbricht & weiß     &  1  &    \\
\bottomrule
\end{longtable}
\end{document}
Was die leere Spalte am Ende sollte, hat sich mir auch nicht erschlossen, weshalb ich auch diese entfernt habe.

Das Hauptproblem ist übrigens das optionale Argument von \\, das sich bei Absatzspalten nicht ganz so verhält, wie man das erwarten würde. Auch dafür bietet booktabs eine Alternative. Wenn man allerdings jede Tabellenzeile mit einem optionalen Argument für \\ beendet, hat man meist etwas falsch gemacht und wäre beispielsweise mit \arraystretch (siehe eine beliebige, ausführliche LaTeX-Einführung) besser bedient.

Verfasst: Di 8. Mär 2016, 11:48
von u_fischer
\\[0.7ex] eignet sich hier nicht dazu, zusätzlichen Abstand nach der Linie einzufügen. Du kannst aber \extrarowheight=2pt setzen.

Verfasst: Di 8. Mär 2016, 14:39
von EliasvonB
Vielen Dank 'Besserwisser' !

Booktabs waren anscheinend genau das was ich gesucht habe. Habe die Änderung bereits implementiert und nun verhält sich alles wunderbar. :)

Danke für deine Mühe. Einen schönen Tag noch!

Gruß Elias