
Kurzgesagt:
Wie können Sie bei Verwendung des Pakets einen Zeilenumbruch in linksbündigen Tabellenzellen bereitstellen bookstabs
?
Mein Problem im Detail:
Ich schreibe einen wissenschaftlichen Artikel, der (hoffentlich) in einem ACM-Magazin veröffentlicht wird. Die Dokumentklasse enthält das Paket booktabs
:https://ctan.org/pkg/booktabsund der Stilleitfaden erlaubt nicht die Verwendung anderer Tabellenstile.
Davor hatte ich in einem Dokumententwurf diese Tabelle unter Verwendung des Pakets tabularray
:
\documentclass{article}
\usepackage{tabularray} % <-- line 2
\begin{document}
\begin{table}
\begin{tblr}{X[l]X[l]rrr} % <-- line 5
\hline
Authors/Editors & Title & Pages & Year & Ref. \\
\hline
David Salomon and Giovanni Motta &
Handbook of Data Compression & 1,370 & 2010 & [1] \\
Colt McAnlis and Aleks Haecky &
Understanding Compression: Data Compression
for Modern Developers & 241 & 2016 & [2] \\
\hline
\end{tblr} % <-- line 15
\end{table}
\end{document}
Es entsteht diese Tabelle:
Abb. 1: Tabelle erstellt mit Pakettabularray
Dann habe ich es in der verwendeten ACM-Vorlage versucht booktabs
und es ist fehlgeschlagen. Hier ist ein Beispielcode, der dieses Paket verwendet. Nur die Zeilen 2, 5 und 15 sind unterschiedlich (mit Kommentaren markiert):
\documentclass{article}
\usepackage{booktabs} % <-- line 2
\begin{document}
\begin{table}
\begin{tabular}{llrrr} % <-- line 5
\hline
Authors/Editors & Title & Pages & Year & Ref. \\
\hline
David Salomon and Giovanni Motta &
Handbook of Data Compression & 1,370 & 2010 & [1] \\
Colt McAnlis and Aleks Haecky &
Understanding Compression: Data Compression
for Modern Developers & 241 & 2016 & [2] \\
\hline
\end{tabular} % <-- line 15
\end{table}
\end{document}
Hier ist das Ergebnis:
Abb. 2: Tabelle mit Paket booktabs
undllrrr
Es gibt keinen Zeilenumbruch und die Tabelle ist zu breit, um auf die Seite zu passen. Sie wird auf der rechten Seite abgeschnitten.
Mit tabularray
kann ich mit dem Parameter (in Zeile 5) einen Zeilenumbruch in einer linksbündigen Tabellenzelle festlegen X[l]
. Wenn ich das mit versuche, booktabs
erhalte ich eine Fehlermeldung ("LaTeX Error: Illegal character in array arg") und Tabellenzellen ohne Zeilenumbruch und zentrierten Text:
Abb. 3: Tabelle mit Paket booktabs
undX[l]X[l]rrr
Wenn ich X[l]
durch ersetze l
, erhalte ich das, was Sie in Abbildung 2 sehen können (ohne Fehler).
Anhttps://ctan.org/pkg/booktabsist eine 18 Seiten lange Dokumentation des Pakets booktabs
, in der jedoch nirgends Spaltenbreiten, Zeilenumbrüche oder ähnliche Themen erwähnt werden. Tatsächlich behandeln alle 18 Seiten nur ein Thema: die Dicke horizontaler Linien, was nicht sehr hilfreich ist.
Hier ist meine Frage:
Können Sie mir bitte sagen, was ich tun muss, um eine Tabelle mit Zeilenumbrüchen zu erstellen, wie in meinem ersten Beispiel gezeigt, aber für das Paket bookstabs
?
Antwort1
Das Problem liegt nicht bei Ihnen, booktabs
sondern daran, dass Sie nicht angegeben haben, wie die Spalten angeordnet werden sollen. Verwenden Sie p{width}
für eine Spalte mit mehreren Textzeilen.
% booktabsprob.tex SE 640799
\documentclass{article}
\usepackage{booktabs} % <-- line 2
\begin{document}
\begin{table}
% \begin{tabular}{llrrr} % <-- line 5
\begin{tabular}{lp{4cm}rrr} % <-- line 5
\hline
Authors/Editors & Title & Pages & Year & Ref. \\
\hline
David Salomon and Giovanni Motta &
Handbook of Data Compression & 1,370 & 2010 & [1] \\
Colt McAnlis and Aleks Haecky &
Understanding Compression: Data Compression
for Modern Developers & 241 & 2016 & [2] \\
\hline
\end{tabular} % <-- line 15
\end{table}
\end{document}
Antwort2
Mit tabularray
und seiner Bibliothek booktabs
(die booktabs
auch das Paket lädt):
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs} % <---
\begin{document}
\begin{table}
\begin{tblr}{colsep = 4pt,
colspec = {@{} X[0.8,l]X[1.2,l]rrr @{}}
}
\toprule
Authors/Editors & Title & Pages & Year & Ref. \\
\midrule
David Salomon and Giovanni Motta
& Handbook of Data Compression
& 1,370 & 2010 & [1] \\
Colt McAnlis and Aleks Haecky
& Understanding Compression: Data Compression
for Modern Developers
& 241 & 2016 & [2] \\
\bottomrule
\end{tblr}
\end{table}
\end{document}
Antwort3
Hier ist eine mögliche Lösung mit tabularx
:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs} % <-- line 2
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{XXrrr} % <-- line 5
\toprule
Authors/Editors & Title & Pages & Year & Ref. \\
\midrule
David Salomon and Giovanni Motta &
Handbook of Data Compression & 1,370 & 2010 & [1] \\ \addlinespace
Colt McAnlis and Aleks Haecky &
Understanding Compression: Data Compression
for Modern Developers & 241 & 2016 & [2] \\
\bottomrule
\end{tabularx} % <-- line 15
\end{table}
\end{document}
Antwort4
Du hast gefragt,
Wie können Sie bei Verwendung des Pakets einen [Zeilenumbruch] in linksbündigen Tabellenzellen bereitstellen
booktabs
?
Das Aktivieren des automatischen Zeilenumbruchs unterscheidet sich vollständig von allen Funktionen, die das booktabs
Paket bietet. Wie Sie festgestellt haben, l
bietet der Spaltentyp keinen automatischen Zeilenumbruch. Ich schlage vor, Sie laden das tabularx
Paket, verwenden die gleichnamige tabularx
Umgebung anstelle von tabular
, setzen die Gesamtbreite der tabularx
Umgebung auf und verwenden den Spaltentyp \textwidth
des Pakets für die ersten beiden Spalten.X
Im Vergleich zu dem tabularx
von @Bernard verfolgten -basierten Ansatz indiese AntwortDer im Folgenden verfolgte Ansatz (a) entfernt die Leerzeichen an den linken und rechten Rändern der Tabelle, (b) richtet den Zellinhalt in den Spalten 1 und 2 nicht vollständig aus, (c) zentriert den Inhalt der Spalten 3 bis 5 statt rechtsbündig auszurichten und (d) verwendet den S
Spaltentyp des siunitx
Pakets, um die Zahlen in Spalte 3 an ihren (impliziten) Dezimaltrennzeichen auszurichten.
\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx,ragged2e}
\newcolumntype{L}{>{\RaggedRight}X}
\usepackage{siunitx} % for S column type
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{@{}
LL
S[table-format=4.0,group-separator={,},group-minimum-digits=4]
cc @{}}
\toprule
Authors/Editors & Title & {Pages} & Year & Ref. \\
\midrule
David Salomon and Giovanni Motta &
Handbook of Data Compression & 1370 & 2010 & [1] \\
\addlinespace
Colt McAnlis and Aleks Haecky &
Understanding Compression: Data Compression
for Modern Developers & 241 & 2016 & [2] \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}