表格中特定长度的垂直填充(带文本换行、交替行颜色和指定宽度)

表格中特定长度的垂直填充(带文本换行、交替行颜色和指定宽度)

我正在尝试创建固定宽度(即跨越整个\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}

初次尝试

因此,我可以指定表格宽度、为行着色以及对齐文本。到目前为止一切都很好。现在我想添加垂直间距。

我已经尝试了几种组合:

  • \arraystretchp, 与/ 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到目前为止,我一直在尝试使用 来实现这一点,我非常喜欢将Xc列组合在一起的便利性,因此如果您的解决方案涉及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} 

在此处输入图片描述

相关内容