我有一张表格(表格)的一行,其中的文本很小(很小)。我想让这一行(第一行)变短,可以自动(自动高度)或手动(为该特定行设置非默认高度)。
我尝试了不同的技巧(例如使用\\[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
环境的替代解决方案tabularray
rowsep
包:因为表格有默认值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
的开头设置使用当前并使用因子缩放的框。tabular
array
\@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}
)。