50 使用tabularray的X列格式控制宽度比例时如何同时允许自动换行?

发布于 2026-03-14 13:26:46

下面这份基于tabularray的代码在不插入大段文字内容时表现还算良好:

\documentclass[12pt, a4paper]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage[showframe,a4paper,hmargin=1.25cm]{geometry}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,varwidth}
\setlength{\parindent}{0pt}
\usepackage{lipsum}
\begin{document}

\begin{tblr}{
    colspec={X[1.25,c,m]X[1.75,c,m]X[1,c,m]X[1.5,c,m]X[1.75,c,m]},
    hlines,vlines,
    hline{1,Z} = {2pt},
    vline{1,Z} = {2pt},
    width=\linewidth,
    measure=vbox,
    rows = {ht=1cm},
    row{3} = {ht=2.5cm},
    row{X-Y} = {ht=3cm},
    cell{1}{1-Y} = {r=2}{valign=m},
    cell{2}{Z} = {r=3}{valign=m},
    cell{3}{2} = {c=3}{valign=m},
    cell{5-Z}{2} = {c=4}{halign=l,valign=m},
    cell{X-Y}{2} = {valign=h},
}
课程名称 & & {学\quad 分} & & {总计:\qquad 学时} \\
& & & & {\linespread{1.75}\selectfont 讲课:\qquad 学时\\讲课:\qquad 学时\\讲课:\qquad 学时\\讲课:\qquad 学时\\讲课:\qquad 学时\\} \\
{课程性质\\[10pt](请打勾)} & %
{\linespread{1.5}\selectfont%<- important % hete
    通识必修课(\quad)\ 通识选修课(\quad)\ 专业必修课(\quad)\\
    通识必修课(\quad)\ 通识选修课(\quad)\ 专业必修课(\quad)\\
    通识必修课(\quad)\ 通识选修课(\quad)\ 专业必修课(\quad)\\
}  
&  &  &  \\
任课老师 &  & 职称 &  &  \\
授课对象 & 年级、专业: &  &  &  \\
课程目标 &  &  &  &  \\
教学重难点 &  &  &  &  \\
教材 & {教材:} &  &  &  \\
参考资料 & {参考资料:} &  &  &  \\
% 教材 & {教材:\lipsum[2][1-6]} &  &  &  \\
% 参考资料 & {参考资料:\lipsum[2][1-6]} &  &  &  \\
其他要求 &  &  &  &  \\
\end{tblr}

\bigskip

Notes: \lipsum[2][1-5]

\end{document}

image.png

然而如果改用:

教材 & {教材:\lipsum[2][1-6]} &  &  &  \\
参考资料 & {参考资料:\lipsum[2][1-6]} &  &  &  \\

将导致:

image.png

我不希望放弃:

X[1.25,c,m]
X[1.75,c,m]
X[1,c,m]
X[1.5,c,m]
X[1.75,c,m]

带来的宽度控制上的便利,在这种情况下,有没有好的方案呢?

查看更多

关注者
0
被浏览
56
1 个回答
Sagittarius Rover
Sagittarius Rover 8小时前
这家伙很懒,什么也没写!

hspan=minimal is all I need, actually...

对文档还是不够熟悉(摇头...)

image.png

\documentclass[12pt]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage[showframe,a4paper,hmargin=1.25cm]{geometry}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,varwidth}
\setlength{\parindent}{0pt}
\usepackage{lipsum}
\begin{document}

\begin{tblr}{
    colspec={X[1.25,c,m]X[1.75,c,m]X[1,c,m]X[1.5,c,m]X[1.75,c,m]},
    hlines,vlines,
    hline{1,Z} = {2pt},
    vline{1,Z} = {2pt},
    width=\linewidth,
    measure=vbox,
    hspan=minimal,
    rows = {ht=1cm},
    row{3} = {ht=2.5cm},
    row{X-Y} = {ht=3cm},
    cell{1}{1-Y} = {r=2}{valign=m},
    cell{2}{Z} = {r=3}{valign=m},
    cell{3}{2} = {c=3}{valign=m},
    cell{5-Z}{2} = {c=4}{halign=l,valign=m},
    cell{X-Y}{2} = {valign=h},
}
课程名称 & & {学\quad 分} & & {总计:\qquad 学时} \\
& & & & {\linespread{1.75}\selectfont 讲课:\qquad 学时\\讲课:\qquad 学时\\讲课:\qquad 学时\\讲课:\qquad 学时\\讲课:\qquad 学时\\} \\
{课程性质\\[10pt](请打勾)} & %
{\linespread{1.5}\selectfont%<- important % hete
    通识必修课(\quad)\ 通识选修课(\quad)\ 专业必修课(\quad)\\
    通识必修课(\quad)\ 通识选修课(\quad)\ 专业必修课(\quad)\\
    通识必修课(\quad)\ 通识选修课(\quad)\ 专业必修课(\quad)\\
}  
&  &  &  \\
任课老师 &  & 职称 &  &  \\
授课对象 & 年级、专业: &  &  &  \\
课程目标 &  &  &  &  \\
教学重难点 &  &  &  &  \\
% 教材 & {教材:} &  &  &  \\
% 参考资料 & {参考资料:} &  &  &  \\
教材 & {教材:\lipsum[2][1-6]} &  &  &  \\
参考资料 & {参考资料:\lipsum[2][1-6]} &  &  &  \\
其他要求 &  &  &  &  \\
\end{tblr}

\bigskip

Notes: \lipsum[2][1-5]

\end{document}

image.png

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览