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:
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 \multirow
Folgendes 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}
Antwort3
Da alle Ihre Spalten sind p{some width}
, können Sie \newline
innerhalb einer Zelle verwenden und haben weniger Zeilen. Alternativ können Sie das makecell
Paket 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}