如何使表格中的某一行具有固定高度

如何使表格中的某一行具有固定高度

读完答案后如何使表格中的一行变短,我还有一个问题:有没有办法让行高成为一个固定值(比如0.3厘米)?

我的表格如下:

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

我希望第二列的高度是固定长度,而不是像\setarstrut{\tiny}Heiko Oberdiek 的答案中的那样。

答案1

一个粗鲁的黑客:在最后一列的每个单元格中添加零宽规则(作为支柱):

\documentclass[12pt]{article}
\usepackage{array}

\begin{document}
\begin{tabular}{|c|c|c<{\rule[-2mm]{0pt}{7mm}}|}
  \hline
  a & b & c \\
  \hline
  \tiny a & \tiny b & \tiny c \\
  \hline
  a & b & c \\
  \hline
  \tiny a & \tiny b & \tiny c \\
  \hline
\end{tabular}
\end{document}

在此处输入图片描述

离题:\tiny不是环境,而是从一种字体大小切换到另一种字体tiny大小。因此,正确的用法是,或者如果它的使用受到表格中单元格的限制,{\tiny a}则简单。\tiny a

答案2

下列的Heiko Oberdiek 的回答,我终于找到了改变一行的高度(和深度)的方法:

\documentclass{article}
\usepackage{array,xparse}

\makeatletter
\ExplSyntaxOn

% #1=height, #2=depth. They should be dimexpr.
\NewExpandableDocumentCommand \setarstrut { m m }
  { \mytab_set_array_strut:nn {#1} {#2} }
\NewExpandableDocumentCommand \restorearstrut { }
  { \mytab_restore_array_strut: }

\box_new:N \l__mytab_old_arstrut_box

\cs_new:Npn \mytab_set_array_strut:nn #1#2
  {
    \tex_noalign:D
      {
        \group_begin:
          % Store the old strutbox
          \box_gset_eq:NN \l__mytab_old_arstrut_box \@arstrutbox
          % Change the dimension of \@arstrutbox
          \hbox_set_to_wd:Nnn \l_tmpa_box { \c_zero_dim } { }
          \box_set_ht:Nn \l_tmpa_box {#1}
          \box_set_dp:Nn \l_tmpa_box {#2}
          \hbox_gset:Nn \@arstrutbox { \box_use:N \l_tmpa_box }
        \group_end:
      }
  }
\cs_new:Npn \mytab_restore_array_strut:
  {
    \tex_noalign:D
      { \box_gset_eq:NN \@arstrutbox \l__mytab_old_arstrut_box }
  }

\ExplSyntaxOff
\makeatother

\begin{document}

\begin{tabular}{|c|c|c|}
  \hline
  a & b & c \\
  \hline
  \setarstrut{4pt}{1.3pt}
  \tiny a & \tiny b & \tiny c \\
  \restorearstrut
  \hline
  a & b & c \\
  \hline
\end{tabular}

\end{document}

我使用LaTeX3重写了代码,但是主要思想是一样的:只是修改框\@arstrutbox

结果:

在此处输入图片描述

相关内容