Platzierung der Tabellenzeilen bei Zeilenumbrüchen

Platzierung der Tabellenzeilen bei Zeilenumbrüchen

Ich habe eine Tabelle mit drei Spalten, die eine Beschreibung, eine kurze Abkürzung und einen Wert enthalten. Die Beschreibung kann ein sehr langer Eintrag sein, daher verwende ich den Spaltentyp p, um die Zeilen automatisch zu unterbrechen. Ich verwende longtable, da die endgültige Tabelle mehrere Seiten umfassen wird.

Im Moment benutze ich diesen Code

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
here is a very long text in the first column that will be broken into multiple rows & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
\hline
\end{longtable}

\end{document}

um diese Tabelle zu erhalten:

aktuelle Version

Wie Sie sehen, ist es einfach, die letzten beiden Spalten auszurichten, wenn der Eintrag in der ersten Spalte kurz ist. Wenn der Text in der ersten Spalte jedoch in mehrere Zeilen aufgeteilt ist, gibt es in den letzten beiden Zeilen natürlich einen ähnlichen, aber jetzt leeren Zwischenraum. Im Beispiel würde ich also Eintrag l.2 und Wert v.l2 um zwei „Zeilen“ nach oben „verschieben“.

Antwort1

Um eine Zelle über mehrere Zeilen aufzuspannen, können Sie beispielsweise \multirowFolgendes aus dem Paket verwenden:multirow

\documentclass{article}
\usepackage{longtable}
\usepackage{multirow}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
\multirow{2}{0.5\textwidth}{here is a very long text in the first column that will be broken into multiple rows} & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
 \\
\hline
\end{longtable}

\end{document}

Für den Textumbruch müssen Sie die Breite der Spalte manuell festlegen – im Beispiel ist sie auf eingestellt .5\textwidth. Siehe auchdiese Antwort auf „Textumbruch in mehrzeiligen Spalten“.

BEARBEITEN: Um ein manuelles Überprüfen der Zeilen zu vermeiden, über die sich Ihr Text erstreckt, können Sie für die letzten beiden Spalten verschachtelte Tabellen verwenden \multirow, anstatt beispielsweise:

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}c} 
\hline
Column 2 &\begin{tabular}{cc}Column 2 & Column 3\end{tabular}\\ 
\hline
short entry &\begin{tabular}{cc}
    Entry s.1 & Value v.s1\\
    Entry s.2 & Value v.s2
\end{tabular}\\
\hline
here is a very long text in the first column that will be broken into multiple rows &\begin{tabular}{cc}
    Entry l.1 & Value v.l1 \\
    Entry l.2 & Value v.l2
\end{tabular}\\
\hline
\end{longtable}

\end{document}

Ich glaube, ich würde es vorziehen, zweimal zu prüfen, da ich nach Möglichkeit versuchen würde, langen Text in Tabellen zu vermeiden.

Antwort2

Sie können auch das Booktabs-Paket verwenden.

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\begin{document}
\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}} 
\toprule
Column 1 &  Column 2 & Column 3\\ 
\midrule
short entry & Entry s.1 & Value v.s1\\
& Entry s.2 & Value v.s2 \\
\midrule
There is a very long text in the  & Entry l.1 &  Value v.l1 \\
first column that will be broken  &Entry 1.2 & Value v.12\\
into multi rows&&\\
\bottomrule
\end{longtable}
\end{document}

Buchtabs

Antwort3

Da alle Ihre Spalten sind p{some width}, können Sie \newlineinnerhalb einer Zelle verwenden und haben weniger Zeilen. Alternativ können Sie das makecellPaket verwenden, das Zeilenumbrüche innerhalb von Zellen zulässt:

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{makecell}
\renewcommand\cellalign{lt}

\begin{document}

\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}}
  \toprule
  Column 1 & Column 2 & Column 3 \\
  \midrule
  short entry & Entry s.1 & Value v.s1 \\
                                                                                    & Entry s.2 & Value v.s2 \\
  \midrule
  There is a very long text in the first column that will be broken into multi rows & \makecell{Entry l.1 & \\Entry 1.2} & \makecell{Value v.l1\\Value v.12} \\
  \addlinespace
  There is a very long text in the first column that will be broken into multi rows & Entry l.1\newline Entry 1.2 & Value v.l1\newline Value v.12 \\
  \bottomrule
\end{longtable}

\end{document} 

Bildbeschreibung hier eingeben

verwandte Informationen