BOOKTABS 表格单元格中的自动换行

BOOKTABS 表格单元格中的自动换行

简而言之:

当您使用该包时,如何在左对齐表格单元格中提供自动换行功能bookstabs

我的问题详细:

我正在撰写一篇科学论文,希望发表在 ACM 杂志上。文档类包括以下包booktabshttps://ctan.org/pkg/booktabs并且样式指南不允许使用其他表格样式。

在此之前,在一份草稿文档中,我使用以下包制作了这张表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}

它生成以下表格:

使用 tabularray 包制作的表格
图 1:用包装制作的桌子tabularray

然后我在使用的 ACM 模板中尝试了它booktabs,但失败了。这是使用此包的示例代码。只有第 2、5 和 15 行不同(标有注释):

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

结果如下:

使用 booktabs 包制作的表格
图 2:用包装制作的桌子booktabsllrrr

没有自动换行,表格太宽,页面放不下。表格在右侧被截断。

tabularray我可以使用参数(第 5 行)在左对齐的表格单元格中指定自动换行。当X[l]我尝试使用时,booktabs我收到一条错误消息(“LaTeX 错误:数组参数中的非法字符”),并且表格单元格没有自动换行和居中文本:

使用 booktabs 的第二个版本
图 3:用包装制作的桌子booktabsX[l]X[l]rrr

当我替换时X[l]l我得到了图 2 中看到的内容(没有错误)。

https://ctan.org/pkg/booktabs是一份长达 18 页的软件包文档booktabs,但其中没有提到列宽、自动换行或类似主题。事实上,所有 18 页仅涉及一个主题:水平线的粗细,这没什么帮助。

这是我的问题:

请您告诉我,我必须做什么才能创建一个带有自动换行功能的表格,如我的第一个例子所示,但对于包来说bookstabs

答案1

问题不在于您使用,booktabs而在于您没有指定如何设置列。用于p{width}包含多行文本的列。

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

在此处输入图片描述

答案2

使用tabularray及其库booktabs(也加载booktabs包):

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

在此处输入图片描述

答案3

这是一个可能的解决方案,使用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} 

在此处输入图片描述

答案4

你问,

当您使用该包时,如何在左对齐表格单元格中提供[换行] booktabs

启用自动换行与包提供的任何功能完全不同booktabs。正如您所发现的,l列类型不提供自动换行。我建议您加载包tabularx,使用其同名tabularx环境而不是tabular,将环境的整体宽度设置tabularx为,并对前两列\textwidth使用包的列类型。X

相对于tabularx@Bernard 在这个答案,下面采用的方法 (a) 消除了表格左右边缘的空白填充,(b) 没有完全调整第 1 列和第 2 列中的单元格内容,(c) 将第 3 列至第 5 列的内容居中对齐而不是右对齐,(d) 使用包S的列类型siunitx将第 3 列中的数字与其(隐式)小数标记对齐。

在此处输入图片描述

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

相关内容