简而言之:
当您使用该包时,如何在左对齐表格单元格中提供自动换行功能bookstabs
?
我的问题详细:
我正在撰写一篇科学论文,希望发表在 ACM 杂志上。文档类包括以下包booktabs
:https://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}
它生成以下表格:
然后我在使用的 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}
结果如下:
没有自动换行,表格太宽,页面放不下。表格在右侧被截断。
tabularray
我可以使用参数(第 5 行)在左对齐的表格单元格中指定自动换行。当X[l]
我尝试使用时,booktabs
我收到一条错误消息(“LaTeX 错误:数组参数中的非法字符”),并且表格单元格没有自动换行和居中文本:
图 3:用包装制作的桌子booktabs
和X[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}