Longtable Cell Alignment Top

Tabellen und Grafiken erstellen und anordnen


moritz1988
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Di 5. Dez 2017, 15:40

Longtable Cell Alignment Top

Beitrag von moritz1988 »

Moin moin,

Der Inhalt in der zweiten Spalte meiner Longtable wird zum Inhalt der ersten Spalte vertikal zentriert ausgerichtet. Ich möchte, dass der Text in der zweiten Spalte mit dem ersten Listenpunkt in der ersten Spalte ausgerichtet wird, also "top" Ausrichtung.
Auf das array und makecell paket bin ich schon gestoßen, die bringen unzureichende Ergebnisse. Hat vielleicht jemand eine Idee?
Besten Dank und schöne Grüße,
Moritz
\documentclass[a4paper,12pt]{scrartcl}
\usepackage{longtable}
\usepackage{paralist}
\usepackage{blindtext}
\begin{document}
\begin{longtable}[l]{p{4cm} p{11cm}}
\multicolumn{2}{l}{\parbox{150mm}{%
\begin{compactdesc}
 \item[\sffamily \footnotesize Table \thetable] Caption here.
\end{compactdesc}}}\\
\smallskip \\
\hline
{\bfseries Column 1} & {\bfseries Column 2}\\
\hline
\vspace{-4mm}
\endfirsthead 
\multicolumn{2}{l}{\parbox{150mm}{%
\begin{compactdesc}
 \item[\sffamily \footnotesize Table \thetable] Caption here.
\end{compactdesc}}}\\
\vspace{-4mm}\\
\hline
{\bfseries Column 1} & {\bfseries Column 2}\\
\hline
\endhead 
\endfoot
\hline
\endlastfoot
\label{table1}
Point 1&\\
{\parbox{40mm}{%
\begin{compactitem}
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\end{compactitem}
}}&\blindtext \\
\hline
\end{longtable}
\end{document}

Gast

Beitrag von Gast »

Die vertikale Ausrichtung hast du mit den ganzen überflüssigen \parbox-Anweisungen verursacht. Ich verstehe auch nicht, warum du nicht \caption verwendest:
\documentclass[a4paper,12pt,captions=tableheading,captions=nooneline]{scrartcl}
\usepackage{longtable}
\usepackage{enumitem}
\usepackage{booktabs}
\usepackage{blindtext}
\begin{document}
\begin{longtable}[l]{p{4cm}p{11cm}}
\caption{Caption here.}\label{table1}\\
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endfirsthead 
\caption[]{Caption here.}\\[\bigskipamount]
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endhead 
\endfoot
\bottomrule
\endlastfoot
Point 1
\begin{itemize}[nosep]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\end{itemize}
&\blindtext \\
\end{longtable}
\end{document}
Ich verwende enumitem weil es flexibler ist und man damit ggf. auch den Einzug der einzelnen Listenelemente einfach verändern kann, beispielsweise mit \begin{itemize}[nosep,leftmargin*].

moritz1988
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Di 5. Dez 2017, 15:40

Beitrag von moritz1988 »

Ich hatte die Vorgehensweise aus einem Template übernommen, wegen des Vorteils dass ich "Table 1" im Layout unmittelbar anpassen kann (in diesem Fall \sffamily \footnotesize ).
Die compact Umgebungen funktionieren innerhalb einer Tab. nur in einer parbox - deshalb die nervigen parboxes.

Aber so ist es natürlich weitaus schönerer und sauberer!
Klasse, besten Dank!!!

Gruß Moritz

Gast

Beitrag von Gast »

moritz1988 hat geschrieben:Ich hatte die Vorgehensweise aus einem Template übernommen, wegen des Vorteils dass ich "Table 1" im Layout unmittelbar anpassen kann (in diesem Fall \sffamily \footnotesize )
Das macht man nicht! Erstens meidet man physische Auszeichnungen so weit irgend möglich und zweitens hat man dann keine Verzeichniseinträge etc. Wenn man Tabellenüberschriften serifenlos und sehr klein haben will, dann verwendet man
\setkomafont{caption}{\sffamily\footnotesize}
Bezüglich irgendwelcher Templates sei wieder einmal auf »Minimale Vorlage vs. maximale Probleme« hingewiesen. Wenn ein Template einmal nicht total veraltet ist, dann ist höchstwahrscheinlich irgendein anderer Unfug darin. Templates sehen für Anfänger auf den ersten Blick toll aus, irgendwann machen sie häufig mehr Ärger als man sich Nutzen eingehandelt hat. Und hier ärgern sie ständig und bereiten ständig unnötige Arbeit.Wir erklären Leuten viel lieber, wie sie Dinge erreichen können, als wie sie die Fehler von Templates beheben können.

moritz1988
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Di 5. Dez 2017, 15:40

Beitrag von moritz1988 »

Dem stimme ich uneingeschränkt zu.

Ein Punkt hätte ich noch:
Wenn ich aus deinem Code vor \begin{itemize} die Zeile "Point 1" entferne, dann rutschen die Listenpunkte trotzdem nicht nach oben. Da schafft topsep=0pt keine Abhilfe. Woran liegt das? Bekommt man diese "Leerzeile" weg?

Gruß Moritz
\documentclass[a4paper,12pt,captions=tableheading,captions=nooneline]{scrartcl}
\usepackage{longtable}
\usepackage{enumitem}
\usepackage{booktabs}
\usepackage{blindtext}
\begin{document}
\begin{longtable}[l]{p{4cm}p{11cm}}
\caption{Caption here.}\label{table1}\\
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endfirsthead 
\caption[]{Caption here.}\\[\bigskipamount]
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endhead 
\endfoot
\bottomrule
\endlastfoot
\begin{itemize}[nosep]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\end{itemize}
&\blindtext \\
\end{longtable}
\end{document}

Gast

Beitrag von Gast »

\documentclass[a4paper,12pt,captions=tableheading,captions=nooneline]{scrartcl}
\usepackage{array,longtable}
\usepackage{enumitem}
\usepackage{booktabs}
\usepackage{blindtext}
\begin{document}
\begin{longtable}[l]{p{4cm}p{11cm}}
\caption{Caption here.}\label{table1}\\
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endfirsthead 
\caption[]{Caption here.}\\[\bigskipamount]
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endhead 
\endfoot
\bottomrule
\endlastfoot
\begin{minipage}[t]{\hsize}
\begin{itemize}[nosep,leftmargin=*]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\end{itemize}\end{minipage}%
&\blindtext \\
\end{longtable}
\end{document}

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

Beitrag von Bartman »

@moritz1988

Wenn die Tabelle schon so breit ist, dann könntest Du auch gleich zu ltablex greifen.
\documentclass[fontsize=12pt,captions=tableheading,captions=nooneline]{scrartcl}
\usepackage{ltablex}
\usepackage{enumitem}
\usepackage{booktabs}
\usepackage{blindtext}
\usepackage{showframe}

\begin{document}
\begin{tabularx}{\linewidth}{p{4cm}X}
\caption{Caption here.}\label{table1}\\
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endfirsthead 
\caption[]{Caption here.}\\[\bigskipamount]
\toprule
{\bfseries Column 1} & {\bfseries Column 2}\\
\midrule
\endhead 
\endfoot
\bottomrule
\endlastfoot
\begin{minipage}[t]{\hsize}
\begin{itemize}[nosep,leftmargin=*]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\end{itemize}
\end{minipage}%
&\blindtext \\
\end{tabularx}
\end{document}

Gast

Beitrag von Gast »

ltablex ist natürlich ein super Tipp!

Herzlichen Dank ihr beiden!

Gruß Moritz

Gast

Beitrag von Gast »

Auch, wenn es hier nicht vorkommt: In x-Spalten ist es ggf. sinnvoll minipage durch varwidth zu ersetzen.

Antworten