如何使表格中的一行变短?

如何使表格中的一行变短?

我有一张表格(表格)的一行,其中的文本很小(很小)。我想让这一行(第一行)变短,可以自动(自动高度)或手动(为该特定行设置非默认高度)。

我尝试了不同的技巧(例如使用\\[shift]),但没有成功。

梅威瑟:

在此处输入图片描述

\documentclass[]{article}
\begin{document}
\begin{tabular}
{|c|c|c|c|}
{\tiny0}&{\tiny1}&{\tiny2}&{\tiny3}\\[-1mm]
\hline 0 & 4.94066e-323 & 22 & 9.78381e+199\\
\hline 
\end{tabular}
\end{document}

tabular我们优先使用简单的解决方案,但是pgfplotstables也欢迎使用优雅的解决方案;特别是因为我考虑的是列的枚举(最终是行的枚举)。

请注意,类似的问题,例如如何减少表格行高?处理制服行高调整。

答案1

tblr环境的替代解决方案tabularrayrowsep包:因为表格有默认值tblr,所以可以自由设置stretch=0移除支柱。

\documentclass{article}

\usepackage{tabularray}

\begin{document}

\begin{tblr}{
  colspec = {|c|c|c|c|},
  hlines,
  row{1} = {font=\tiny},
  stretch = 0,
}
  0 & 1            & 2  & 3            \\
  0 & 4.94066e-323 & 22 & 9.78381e+199 \\
\end{tblr}

\end{document}

在此处输入图片描述

答案2

LaTeX 在表格行/单元格内添加支柱。每次更新字体大小/ \baselineskip\size@update)都会设置\strutbox(一个具有高度0.7\baselineskip和深度的框。在/0.3\baselineskip的开头设置使用当前并使用因子缩放的框。tabulararray\@arstrutbox\strutbox\arraystretch

下面的示例定义了\setarstrut{...}将表格支柱设置在下一行之前:

  • 参数允许字体大小命令,例如:\tiny。或者也\arraystretch可以更改:

    \setarstrut{\renewcommand*{\arraystretch}{0.5}}%
    
  • 内部\nolign使用。因此\setarstrut必须位于行的开头。否则设置较小的支柱就太晚了。
  • 人们还记得旧的支撑架\saved@arstrutbox
  • 一个小缺点是支柱框的全局设置会跳过分组级别。因此,如果表格嵌套在另一个表格中,则需要小心。

\saved@arstrutbox恢复已保存的支柱箱。

示例文件:

\documentclass[]{article}

\makeatletter
\newsavebox\saved@arstrutbox
\newcommand*{\setarstrut}[1]{%
  \noalign{%
    \begingroup
      \global\setbox\saved@arstrutbox\copy\@arstrutbox
      #1%
      \global\setbox\@arstrutbox\hbox{%
        \vrule \@height\arraystretch\ht\strutbox
               \@depth\arraystretch \dp\strutbox
               \@width\z@
      }%
    \endgroup
  }%
}
\newcommand*{\restorearstrut}{%
  \noalign{%
    \global\setbox\@arstrutbox\copy\saved@arstrutbox
  }%
}
\makeatother

\begin{document}
  \begin{tabular}{|c|c|c|c|}
    \setarstrut{\tiny}%
    {\tiny0}&{\tiny1}&{\tiny2}&{\tiny3}\\
    \restorearstrut
    \hline
    0 & 4.94066e-323 & 22 & 9.78381e+199\\
    \hline
  \end{tabular}
\end{document}

结果

答案3

鉴于 LaTeX 解决方案的复杂性,我别无选择,只能发布 ConTeXt 解决方案 ;-)

\strut与 LaTeX 一样,ConTeXt 也会在表格的每一行中插入。但是,我们不必与支撑结构作斗争,只需通过 来要求 ConTeXt 不要添加支撑结构即可strut=no

\startsetups table:size
  \setupTABLE[row][1][style=\tfxx, strut=no]
  \setupTABLE[align=middle]
\stopsetups

\starttext
\startTABLE[setups={table:size}]
  \NC 0 \NC 1 \NC 2 \NC 3 \NC \NR
  \NC 0 \NC 4.94066e-323 \NC 22 \NC 9.78381e+199  \NC \NR
\stopTABLE
\stoptext

在此处输入图片描述

答案4

这并不漂亮,但它有效:

在此处输入图片描述

\documentclass{article}
\newlength{\mylen}
\settoheight{\mylen}{\tiny 1}
\newcommand{\myheading}[1]{%
  \raisebox{\dimexpr\normalbaselineskip-\mylen}{\tiny #1}}
\begin{document}
\begin{tabular}
{|c|c|c|c|}
\myheading{0} & \myheading{1} & \myheading{2} & \myheading{3} \\[\dimexpr-\normalbaselineskip+\mylen]
\hline 0 & 4.94066e-323 & 22 & 9.78381e+199 \\
\hline 
\end{tabular}
\end{document}

这假设您仅在第一行使用相似高度的元素(使用\mylen设置为高度的长度{\tiny 1})。

相关内容