我正在尝试创建固定宽度(即跨越整个\textwidth
)的表格,具有交替的行颜色和任意对齐(水平和垂直),并且在行上有均匀分布的特定长度(即我可以指定绝对长度)的垂直填充。
首先,一个 MWE(我想它确实有很多功能,但它们都应该代表我在最终结果中所需要的东西):
\documentclass{book}
\usepackage{lipsum}
\usepackage[table]{xcolor}
\definecolor{mycolor}{gray}{0.85}
\begin{document}
\begin{table}
\rowcolors{1}{}{mycolor}
\begin{tabular}{>{\centering\arraybackslash}p{1cm}>{\raggedright\arraybackslash}p{\dimexpr\the\textwidth-1cm-4\tabcolsep\relax}}
\textbf{Name} & \textbf{Column 2} \\
1 & \lipsum*[66] \\
2 & \lipsum*[75] \\
3 & \lipsum*[66] \\
4 & \lipsum*[75]
\end{tabular}
\end{table}
\end{document}
因此,我可以指定表格宽度、为行着色以及对齐文本。到目前为止一切都很好。现在我想添加垂直间距。
我已经尝试了几种组合:
\arraystretch
p
, 与/m
/etc 列类型一起使用时会产生不均匀的垂直填充。booktabs
与行颜色配合不佳,因为增加的垂直间距没有颜色(并且我见过的任何解决方案最适合为单行着色,而不是交替行 - 即通过重新定义命令上方和下方的行为\midrule
)
我希望我可以开始cellspace
工作,但是当我包含以下代码时:
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{10pt}
\setlength{\cellspacebottomlimit}{10pt}
[...]
\begin{tabular}{S{>{\centering\arraybackslash}p{1cm}}
S{>{\raggedright\arraybackslash}p{\dimexpr\the\textwidth-1cm-4\tabcolsep\relax}}}
我得到以下信息:
文本换行不正确,但结果行间距均匀(并且行颜色实际上宽度正确)。
cellspace
如能得到有关如何使填充与文本换行配合使用的任何帮助,我们将不胜感激。
理想情况下,我想避免导入数十个库(它们已经让我在完整文档中头疼),但我知道这可能是不可避免的。
我还希望有一个可扩展的解决方案(即我不必向表格的每一行添加代码),因为我的文档包含大量这样的表格。
如果该解决方案能够奏效
\multicolumn
,那就太好了。
附言tabularx
到目前为止,我一直在尝试使用 来实现这一点,我非常喜欢将X
和c
列组合在一起的便利性,因此如果您的解决方案涉及tabularx
,那就太好了。我没有包括它,因为我想避免使用大量包使问题变得过于复杂。但是,tabularx 中的错误似乎确实相同(即使用cellspace
列时没有文本换行)。
答案1
应该>{...]
位于 S
前列说明符之外。下面是带有 的简单代码tabularx
。
我还擅自将您的定义改为mycolor
更贴切的(符合我的口味)。当然,如果您愿意,可以随时返回到您的初始版本。
\documentclass{book}
\usepackage[latin]{babel}
\usepackage[showframe]{geometry}
\usepackage{lipsum}
\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage[table, svgnames]{xcolor}
\colorlet{mycolor}{Gainsboro!70!Lavender}%
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{10pt}
\setlength{\cellspacebottomlimit}{10pt}
\addparagraphcolumntypes{X}
\begin{document}
\begin{table}
\centering
\rowcolors{1}{}{mycolor}
\begin{tabularx}{\linewidth}{Sc >{\RaggedRight\arraybackslash}S{X}}
\textbf{Name} & \textbf{Column 2} \\
1 & \lipsum*[66] \\
2 & \lipsum*[75] \\
3 & \lipsum*[66] \\
4 & \lipsum*[75]
\end{tabularx}
\end{table}
\end{document}