下面这份基于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}
然而如果改用:
教材 & {教材:\lipsum[2][1-6]} & & & \\
参考资料 & {参考资料:\lipsum[2][1-6]} & & & \\将导致:

我不希望放弃:
X[1.25,c,m]
X[1.75,c,m]
X[1,c,m]
X[1.5,c,m]
X[1.75,c,m]带来的宽度控制上的便利,在这种情况下,有没有好的方案呢?
hspan=minimal is all I need, actually...
对文档还是不够熟悉(摇头...)

\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}
如果只有一页,我觉得
tabularray还是可以的。需要多页的话,由于LaTeX表格盒子的机制限制,不容易实现breakbale.我在这里有类似的讨论:
https://tex.stackexchange.com/questions/757812/smartly-break-text-into-cells-in-naked-longtblr-environment
这种表格本身的设计就不是用来在PDF上排版的,只是一些形式上的装饰....
他这个表格后来又出现了换页问题,所以,我这样回答的。
@u1077 哈哈,确实是这样。换页的话,没有太好的方案。说实话我也不喜欢这种layout的表格「bad, lazy table design...」
而且即使是
这里也可以预见到不小的手动调整成本 ;-(