Zeilenumbruch in Tabellenzellen in BOOKTABS-Tabellen

Zeilenumbruch in Tabellenzellen in BOOKTABS-Tabellen

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:

Tabelle erstellt mit dem Paket tabularray
Abb. 1: Tabelle erstellt mit Pakettabularray

Dann habe ich es in der verwendeten ACM-Vorlage versucht booktabsund 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:

Tabelle erstellt mit dem Paket Booktabs
Abb. 2: Tabelle mit Paket booktabsundllrrr

Es gibt keinen Zeilenumbruch und die Tabelle ist zu breit, um auf die Seite zu passen. Sie wird auf der rechten Seite abgeschnitten.

Mit tabularraykann ich mit dem Parameter (in Zeile 5) einen Zeilenumbruch in einer linksbündigen Tabellenzelle festlegen X[l]. Wenn ich das mit versuche, booktabserhalte ich eine Fehlermeldung ("LaTeX Error: Illegal character in array arg") und Tabellenzellen ohne Zeilenumbruch und zentrierten Text:

zweite Version mit Booktabs
Abb. 3: Tabelle mit Paket booktabsundX[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, booktabssondern 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}

Bildbeschreibung hier eingeben

Antwort2

Mit tabularrayund seiner Bibliothek booktabs(die booktabsauch 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}

Bildbeschreibung hier eingeben

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} 

Bildbeschreibung hier eingeben

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 booktabsPaket bietet. Wie Sie festgestellt haben, lbietet der Spaltentyp keinen automatischen Zeilenumbruch. Ich schlage vor, Sie laden das tabularxPaket, verwenden die gleichnamige tabularxUmgebung anstelle von tabular, setzen die Gesamtbreite der tabularxUmgebung auf und verwenden den Spaltentyp \textwidthdes Pakets für die ersten beiden Spalten.X

Im Vergleich zu dem tabularxvon @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 SSpaltentyp des siunitxPakets, um die Zahlen in Spalte 3 an ihren (impliziten) Dezimaltrennzeichen auszurichten.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen