5 tabularray 是否能控制单元格内部的行距?

发布于 2023-04-11 10:29:34

如题,我在使用 tabularray 宏包时,因为文本内容比较长,有时会在单元格内部换行,这时遇到单元格遇到不能控制单元格内部行距的问题。虽然使用 stretch 选项可以控制单元格的行高,但这似乎不能影响单元格内部的行距,一个示例如下(使用 TeX Live 2023 集成的 XeLaTeX 排版):

\documentclass{article}
\usepackage{tabularray}
\usepackage{ctex}

\begin{document}
\begin{tblr}{colspec = {ll}, hlines, stretch = {-1}, column{1} = {2\ccwd}, column{2} = {4\ccwd}}
    \SetCell[r = 2]{l, h}\textbf{巻一} & 〇〇〇〇  \\
                                       & 〇〇〇〇〇\\
    \SetCell[r = 2]{l, h}\textbf{巻二} & 〇〇〇〇〇\\
                                       & 〇〇〇〇〇\\
    \textbf{巻三}                      & 〇〇〇〇〇\\
\end{tblr}

\vspace{1\baselineskip}
\begin{tblr}{colspec = {ll}, hlines, stretch = {1}, column{1} = {2\ccwd}, column{2} = {4\ccwd}}
    \SetCell[r = 2]{l, h}\textbf{巻一} & 〇〇〇〇  \\
                                       & 〇〇〇〇〇\\
    \SetCell[r = 2]{l, h}\textbf{巻二} & 〇〇〇〇〇\\
                                       & 〇〇〇〇〇\\
    \textbf{巻三}                      & 〇〇〇〇〇\\
\end{tblr}
\end{document}

其编译实例如下:

编译实例

可见上例中虽然设置 stretch = -1,单元格内部断行时其行距却和下例中 stretch = 1 的情况一致。

查看更多

关注者
0
被浏览
604
M
M 2023-04-12
这家伙很懒,什么也没写!

可以用 setspace 包,给需要的单元格添加控制行距的命令cmd=\setstretch{1}来实现

\documentclass{article}
\usepackage{tabularray}
\usepackage{setspace}
\usepackage{ctex}

\begin{document}
\begin{tblr}{colspec = {ll}, hlines, stretch = {-1}, column{1} = {2\ccwd}, column{2} = {4\ccwd,cmd=\setstretch{1}}}
    \SetCell[r = 2]{l, h}\textbf{巻一} & 〇〇〇〇  \\
                                       & 〇〇〇〇〇\\
    \SetCell[r = 2]{l, h}\textbf{巻二} & 〇〇〇〇〇\\
                                       & 〇〇〇〇〇\\
    \textbf{巻三}                      & 〇〇〇〇〇\\
\end{tblr}

\vspace{1\baselineskip}
\begin{tblr}{colspec = {ll}, hlines, stretch = {1}, column{1} = {2\ccwd}, column{2} = {4\ccwd}}
    \SetCell[r = 2]{l, h}\textbf{巻一} & 〇〇〇〇  \\
                                       & 〇〇〇〇〇\\
    \SetCell[r = 2]{l, h}\textbf{巻二} & 〇〇〇〇〇\\
                                       & 〇〇〇〇〇\\
    \textbf{巻三}                      & 〇〇〇〇〇\\
\end{tblr}
\end{document}

3f1e95ab92d8bff0a14fda3608c8af92.png

3 个回答
寄存器
寄存器 2023-04-12
这家伙很懒,什么也没写!

可以使用setspace宏包的\setstrectch命令结合tblr的cellcellscmd参数实现,如:

\documentclass{article}
\usepackage{tabularray}
\usepackage{ctex}
\usepackage{setspace}
\begin{document}
\begin{tblr}{colspec = {ll}, hlines,%
        cells={cmd=\setstretch{0.8}},%
    column{1} = {2\ccwd}, column{2} = {4\ccwd}}
    \SetCell[r = 2]{l, h}\textbf{卷一} & 〇〇〇〇  \\
                                       & 〇〇〇〇〇\\
    \SetCell[r = 2]{l, h}\textbf{卷二} & 〇〇〇〇〇\\
                                       & 〇〇〇〇〇\\
    \textbf{卷三}                      & 〇〇〇〇〇\\
\end{tblr}
\end{document}

其结果为:
image.png

明灯夜行
明灯夜行 2023-04-14
明灯夜行,照己示人。

也可以用 parbox{}{} 强制手动換行,并适当缩减行距:

5个圈改成:

\parbox{4em}{〇〇〇〇\\[-1.5ex]〇}

或者

\parbox[c][4ex][c]{4em}{〇〇〇〇\\[-1.5ex]〇}

另外顺便提醒一个:卷 字是不是写成 异体字了?

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览