使用 varwidth 对多行单元格进行垂直填充

使用 varwidth 对多行单元格进行垂直填充

要设置最大列宽,我使用varwidth如下建议这个答案。但是,垂直填充仅对单行单元格正确,对于多行单元格来说太小了。最小示例:

\documentclass{article}

\usepackage{varwidth}
\usepackage{array}

\newcolumntype{M}{>{\begin{varwidth}{1cm}}l<{\end{varwidth}}}

\begin{document}

\begin{tabular}{|M|c|}
    \hline
     asdf      & \\ \hline
     asdf asdf & \\ \hline
\end{tabular}

\end{document}

结果是:

在此处输入图片描述

我尝试varwidth在单元格内部使用(而不是使用数组包定义新的列类型),但这产生了相同的结果:

\documentclass{article}

\usepackage{varwidth}

\begin{document}

\begin{tabular}{|c|c|}
    \hline
     \begin{varwidth}{1cm}asdf     \end{varwidth} & \\ \hline
     \begin{varwidth}{1cm}asdf asdf\end{varwidth} & \\ \hline
\end{tabular}

\end{document}

我也尝试\par在单元格中添加或添加双换行符,但我的所有尝试都无法产生正确的垂直填充。手动添加vspaces 也不起作用。

有没有办法保证单行单元格和多行单元格的垂直填充相同?

答案1

加载cellspace包,旨在确保单元格顶部和底部的垂直填充最小,并M使用S预说明符(稍微)更改列类型的定义:

\documentclass{article}

\usepackage{varwidth}
\usepackage{array}
\usepackage{cellspace}
\setlength\cellspacetoplimit{6pt}
\setlength\cellspacebottomlimit{6pt}

\newcolumntype{M}{>{\begin{varwidth}{1cm}}Sl<{\end{varwidth}}}

\begin{document}

\begin{tabular}{|M|c|}
    \hline
     asdf & \\ \hline
     asdf asdf & \\ \hline
\end{tabular}

\end{document} 

在此处输入图片描述

答案2

尝试

\documentclass{article}
\usepackage{varwidth}
\usepackage{makecell}% added
\setcellgapes{5pt}   % added

\begin{document}

{\makegapedcells    % added
\begin{tabular}{|c|c|}
    \hline
     \begin{varwidth}{1cm}asdf     \end{varwidth} & \\ \hline
     \begin{varwidth}{1cm}asdf asdf\end{varwidth} & \\ \hline
\end{tabular}
}

\end{document}

笔记:该解决方案 - 使用\makegapedcells- 不适用于列类型,m也不启用着色表使用colortbl[table]{xcolor}包。但这不会大大降低该解决方案的实用性,因为它们很少使用。

使用它的好处是您不需要关心S向单元格类型添加属性,也不需要关心它在包S中的列类型组合中的使用siunitx(也很少发生,但最好知道,S您应该使用C什么,在使用时会再次受到限制tabularx...等等:))

在此处输入图片描述

答案3

在加载之后array,包varwidth会定义一个名为的新列类型V。使用该列类型,您可以直接获得预期的输出。

\documentclass{article}
\usepackage{array}
\usepackage{varwidth}% must be loaded after array

\begin{document}

\begin{tabular}{|V{1cm}|c|}
    \hline
     asdf      & \\ \hline
     asdf asdf & \\ \hline
\end{tabular}

\end{document}

上述代码的输出

相关内容