上下文

上下文

上下文

我正在尝试创建一个满足以下条件的表

  1. 第一行所有单元格的填充必须大于默认填充。
  2. 所有单元格的内容必须垂直居中对齐。

关于条件 1:我知道如何更改所有单元格的填充,但不知道如何对特定行的所有单元格执行此操作而不对所有其他行造成影响(请参阅下面的文档)

\documentclass{article}

\begin{document}

\def\arraystretch{2}

\noindent
\begin{tabular}{|c|c|c|}
   \hline a & b & c
\\ \hline a & b & c
\\ \hline a & b & c
\\ \hline
\end{tabular}

\end{document}

在此处输入图片描述

关于条件2:我知道怎么做。

\documentclass{article}

\usepackage{array, lipsum}

\begin{document}

\noindent
\begin{tabular}{|m{5cm}|m{5cm}|}
   \hline a & \lipsum[1][1-2]
\\ \hline \lipsum[2][1-2] & b
\\ \hline
\end{tabular}

\end{document}

在此处输入图片描述

问题

如何创建满足条件 1 和条件 2 的表格?

答案1

我使用零宽度规则插入零宽度 m 列来设置行高。此外,我定义了一种新的列类型,M使其内容垂直和水平居中。

在示例2中,我定义了一个新命令\rl,它允许您单独设置行高。

示例 1 - 等高行

在此处输入图片描述

\documentclass{article}

\usepackage{array}
\newcolumntype{M}{>{\centering\arraybackslash}m{15pt}}

\begin{document}

\noindent
\begin{tabular}{|*{3}{M|}>{\rule{0pt}{30pt}}m{0pt}}
   \cline{1-3} a & b & j &
\\ \cline{1-3}  a & b & j &
\\ \cline{1-3}  a & b & j &
\\ \cline{1-3} 
\end{tabular}

\end{document}

示例 2 - 不同高度的行

在此处输入图片描述

\documentclass{article}

\usepackage{array}
\newcolumntype{M}{>{\centering\arraybackslash}m{15pt}}
\newcommand{\rl}[1]{\rule{0pt}{#1pt}}


\begin{document}


\noindent
\begin{tabular}{|*{3}{M|}m{0pt}}
   \cline{1-3} a & b & j & \rl{16}
\\ \cline{1-3}  a & b & j &
\\ \cline{1-3}  a & b & j &\rl{30}
\\ \cline{1-3} 
\end{tabular}

\end{document}

答案2

{NiceTabular}在 的环境中nicematrix,您有两个键cell-space-top-limitcell-space-bottom-limit以及一个用于它们连接的键cell-space-limits

使用最新版本nicematrix(2021-07-15 的 v. 5.18),可以使用命令修复单行的这些参数的值\RowStyle

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\newcolumntype{M}{>{\raggedright\arraybackslash}m{2.2cm}}

\begin{NiceTabular}{MMM}[hvlines,cell-space-limits=1mm]
some text & here also some text & text, text, text and text \\
some text & here also some text & text, text, text and text \\
\RowStyle[cell-space-limits=0pt]{}
some text & here also some text & text, text, text and text \\
some text & here also some text & text, text, text and text \\
\end{NiceTabular}

\end{document}

该包还提供了绘制所有规则的nicematrix密钥。hvlines

上述代码的输出

答案3

我不会使用 arraystretch 垂直居中的单元格内容,因为它会不对称地扩展单元格的高度和深度。更好的方法是使用包cellspace,它定义了一个最小在以字母为前缀的说明符的列中单元格顶部和底部的垂直填充S(或者C如果您加载siunitx)。

这里是演示,\cellspacetop-bottomlimit选择,以便解决方案arraystretch和解决方案cellspace导致表格高度相同:

\documentclass{article}
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{8.5pt}
\setlength{\cellspacebottomlimit}{8.5pt}

\begin{document}

{\def\arraystretch{2}

\noindent
\begin{tabular}{|c|c|c|}
   \hline a & b & c
\\ \hline a & b & c
\\ \hline a & b & c
\\ \hline
\end{tabular}}
\qquad
\begin{tabular}{|Sc|Sc|Sc|}
   \hline a & b & c
\\ \hline a & b & c
\\ \hline a & b & c
\\ \hline
\end{tabular}

\end{document} 

在此处输入图片描述

答案4

这种方法可以满足两个条件

\documentclass{article}

\usepackage{tabu, stackengine}

\usepackage{lipsum}

\begin{document}

\begin{tabu}{|m{80pt}|m{80pt}|m{80pt}|}
\hline

\addstackgap[80pt]{a}
& b
& \lipsum[1][1-2]
\\ \hline

A
& B
& C
\\ \hline

\end{tabu}

\end{document}

在此处输入图片描述

相关内容