10 如何处理`tblr`环境中使用了最小支架后的垂直居中问题?

发布于 2025-08-17 18:15:04

现有一张表格,需要将行的高度拉高,并确保文字处于垂直居中位置。但在使用了最小支架stretch之后,发现文字并不在垂直居中位置。以下是排版要求(大多数都已完成):

  1. 每个单元格内的文字,列格式水平居左,行格式垂直居中
  2. 每一行的高度至少有“3行那么高”,当然不一定必须是3行,也可以是3cm,5cm等,大概意思就是要很明显地看出:相邻两行的文字被分隔线隔开、存在相当高的垂直空白;
  3. 不要竖线,只要中间2条横线,线型为虚线(为了方便理解我用了hlines);
  4. 每个单元格内的文字,其行数只有1行,字数也已经限定,按照MWE中的假文理解即可;
  5. 第2列文字,比第1列文字,字号稍小;
  6. 第1列的右侧和第2列的左侧,增加稍许额外水平间距。
  7. 第1列文字,使用红色。

image.png

最小工作示例:

\documentclass[border=2pt]{standalone}
\usepackage{ctex,tabularray,color,varwidth}
\begin{document}
\begin{tblr}{
    colspec={ll},
    % hline{2,3}={dashed},
    hlines={dashed},
    column{1}={fg=red,rightsep+=.2em},
    column{2}={font=\scriptsize,leftsep+=.2em},
    stretch=3.5,
}
    \begin{varwidth}{4em}
        四个个字
    \end{varwidth}&
    \begin{varwidth}{50em}
        六个个个个字\texttt{Sixxxx}四个个字,六个个个个字
    \end{varwidth}\\
    \begin{varwidth}{4em}
        四个个字
    \end{varwidth}&
    \begin{varwidth}{50em}
        十二个个个个个个个个个字,五个个个字
    \end{varwidth}\\
    \begin{varwidth}{4em}
        四个个字
    \end{varwidth}&
    \begin{varwidth}{50em}
        八个个个个个个字,九个个个个个个个字
    \end{varwidth}\\
\end{tblr}
\end{document}
四个个字&六个个个个字\texttt{Sixxxx}四个个字,六个个个个字\\
四个个字&十二个个个个个个个个个字,五个个个字\\
四个个字&八个个个个个个字,九个个个个个个个字\\

查看更多

关注者
0
被浏览
79
1 个回答
Sagittarius Rover
Sagittarius Rover 14小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

其实关键问题点并没有解决

感觉是varwidth的基线和stretch的功能互相作用导致...

just a workaround

如果想要「每一行的高度至少有“3行那么高”,当然不一定必须是3行,也可以是3cm,5cm等」,似乎用ht会更方便(?)

\documentclass[border=2pt]{standalone}
\usepackage{ctex,tabularray,xcolor,varwidth}
\begin{document}
\begin{tblr}{
    colspec={Q[l,m]Q[l,m]},
    hlines={dashed},
    column{1}={fg=red,rightsep+=.2em},
    column{2}={font=\scriptsize,leftsep+=.2em},
    % stretch=3.5,
    rows = {ht = 3\baselineskip},
}
    \begin{varwidth}{4em}
        四个个字
    \end{varwidth}&
    \begin{varwidth}{50em}
        六个个个个字\texttt{Sixxxx}四个个字,六个个个个字
    \end{varwidth}\\
    \begin{varwidth}{4em}
        四个个字
    \end{varwidth}&
    \begin{varwidth}{50em}
        十二个个个个个个个个个字,五个个个字
    \end{varwidth}\\
    \begin{varwidth}{4em}
        四个个字
    \end{varwidth}&
    \begin{varwidth}{50em}
        八个个个个个个字,九个个个个个个个字
    \end{varwidth}\\
\end{tblr}
\end{document}

image.png

P.S 上述的7点需求似乎只有「2」与问题核心有关....为了让潜在的回答者少看文字,其他的内容或许可以更加省略...

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览