![tabularray,包括 X 列中的 \linewidth 图形会导致较大的垂直空间](https://linux22.com/image/438360/tabularray%EF%BC%8C%E5%8C%85%E6%8B%AC%20X%20%E5%88%97%E4%B8%AD%E7%9A%84%20%5Clinewidth%20%E5%9B%BE%E5%BD%A2%E4%BC%9A%E5%AF%BC%E8%87%B4%E8%BE%83%E5%A4%A7%E7%9A%84%E5%9E%82%E7%9B%B4%E7%A9%BA%E9%97%B4.png)
如何正确地在某些X
单元格中插入图像,其宽度由单元格宽度决定?
\documentclass{article}
\usepackage{geometry}
\usepackage[export]{adjustbox}
\usepackage{tabularray}
\setlength\parindent{0pt}
\begin{document}
case 1:
\begin{center}
\adjustboxset{height=0.15\textwidth, % determined by trial
keepaspectratio,
valign=M}
\begin{tblr}{hlines, vlines,
colspec={X[0.6,l,m] *{3}{X[1,c,m]}},
rowsep=4pt,
}
some description of images
& \adjincludegraphics{example-image-duck}
& \adjincludegraphics{example-image-duck}
& \adjincludegraphics{example-image-duck} \\
\end{tblr}
\end{center}
case 2:
\begin{center}
\adjustboxset{width=\linewidth,
keepaspectratio,
valign=M}
\begin{tblr}{hlines, vlines,
colspec={X[0.6,l,m] *{3}{X[1,c,m]}},
rowsep=4pt,
}
some description of images
& \adjincludegraphics{example-image-duck}
& \adjincludegraphics{example-image-duck}
& \adjincludegraphics{example-image-duck} \\
\end{tblr}
\end{center}
\end{document}
第一种情况下的结果符合预期,但第二种情况下,图像上方和下方插入了巨大的空间。第一种情况下所示的写表(其中通过猜测明确确定图像的高度)非常烦人,因此第二种情况(其中图像的宽度由列的宽度定义)是写表的首选方式,但结果很糟糕。我希望第二种情况下 MWE 的结果与第一种情况相同。
所以问题是,为什么第二种情况下的代码没有给出与第一种情况下相同的结果
如果在第二种情况下使用tabularx
表格,则不会出现此类问题,甚至在这种情况下,为了获得更好的效果,应该添加一些小的垂直空间。我预计,类似的情况也会发生tabularray
。
我是否遗漏了tabularray
设置中的某些内容,或者这是错误,或者它尚未具有此属性?
答案1
看https://github.com/lvjr/tabularray/issues/80
当我们第一次测量单元格宽度时,\linewidth
等于\textwidth
。但是当我们稍后用 排版单元格时\parbox
,\linewidth
等于计算出的列宽。这些差异导致了问题。解决方案是@row-height
在调整X
列宽后重置。
此错误已修复。您可以从以下位置下载最新的软件包文件
https://github.com/lvjr/tabularray/raw/main/tabularray.sty
或者等待2021N
9月1日发布的下一个版本。