点名册:课程信息六项改为定宽三栏对齐 #26
原来用 \hfill 均分,各栏起点随内容长短漂移,两行对不齐: 第 2 栏差 42pt、第 3 栏差 55pt。 改为定宽三栏:版心 269mm 三等分,每栏 89.67mm, 标签占 18mm,值占 63.67mm。上下两行冒号位置严格重合。 值超长自动折行,不会压到下一栏。 验证:两行冒号位置 90.7 / 344.9 / 599.1 完全一致,差值 0.0。 全库 17/17 通过,点名册 error 0、Overfull 0。
This commit is contained in:
+42
-14
@@ -42,7 +42,7 @@
|
||||
\fontsize{10.5bp}{13bp}\selectfont}
|
||||
|
||||
\newcommand{\rolltitlefont}{\linespread{1}\relax\fontsize{20bp}{24bp}\selectfont}
|
||||
\newcommand{\rollinfofont} {\linespread{1}\relax\fontsize{10.5bp}{13bp}\selectfont}
|
||||
\newcommand{\rollinfofont} {\linespread{1}\relax\fontsize{10.5bp}{15bp}\selectfont}
|
||||
\newcommand{\rollheadfont} {\linespread{1}\relax\fontsize{8bp}{9.5bp}\selectfont}
|
||||
\newcommand{\rollcellfont} {\linespread{1}\relax\fontsize{10bp}{12.5bp}\selectfont}
|
||||
\newcommand{\rollweekfont} {\linespread{1}\relax\fontsize{7.5bp}{9bp}\selectfont}
|
||||
@@ -88,10 +88,6 @@
|
||||
\newcommand{\rollsetterm}[1]{\renewcommand{\rollterm}{#1}}
|
||||
\newcommand{\rollsetdept}[1]{\renewcommand{\rolldept}{#1}}
|
||||
|
||||
% 一项:标签(黑体) + 值
|
||||
\newcommand{\rollfield}[2]{%
|
||||
{\heiti #1}:#2}
|
||||
|
||||
%======================================================================
|
||||
% 五、标题
|
||||
%======================================================================
|
||||
@@ -103,18 +99,50 @@
|
||||
%======================================================================
|
||||
% 六、课程信息区
|
||||
%
|
||||
% 两行,每行三项,用 \hfill 撑开
|
||||
% 两行 × 三栏,定宽对齐。
|
||||
%
|
||||
% ⚠️ 不能用 \hfill 均分:\hfill 只均分行内剩余空间,各栏起点会随
|
||||
% 标签与值的长短前后漂移,六项在两行里对不上。
|
||||
%
|
||||
% ⚠️ 值用 \parbox 显式限宽,不用 tabular 的 p 列。
|
||||
% p 列在 xeCJK 下遇到全角标点(如「(」)时断行判定不稳定,
|
||||
% 实测同样列宽,有的内容断、有的不断。\parbox 加 \raggedright
|
||||
% 断行行为可预期。
|
||||
%======================================================================
|
||||
\newlength{\rollcolw}
|
||||
\setlength{\rollcolw}{89.6667mm} % 269mm / 3
|
||||
|
||||
\newlength{\rolllabw}
|
||||
\setlength{\rolllabw}{18mm} % 标签宽,「学年学期」四字 × 10.5bp ≈ 14.8mm
|
||||
|
||||
\newlength{\rollvalw}
|
||||
\setlength{\rollvalw}{63.6667mm} % 值宽 = 89.6667 − 18 − 8(栏间余量)
|
||||
|
||||
% 一栏:标签(定宽黑体)+ 冒号 + 值(定宽,超长自动换行)
|
||||
%
|
||||
% ⚠️ 值必须加 \sloppy。xeCJK 对全角标点(如「(」)前后有断行禁则,
|
||||
% 正常断行惩罚下 TeX 宁可溢出也不在此处断,表现为文字压到下一栏。
|
||||
% \sloppy 放宽 \tolerance,让它在下一个汉字边界断掉。
|
||||
\newcommand{\rollfield}[2]{%
|
||||
\makebox[\rolllabw][l]{\heiti #1}%
|
||||
\parbox[t]{\rollvalw}{\raggedright\sloppy :#2}}
|
||||
|
||||
% 三栏一行
|
||||
\newcommand{\rollinforow}[6]{%
|
||||
\noindent
|
||||
\rollfield{#1}{#2}\hspace*{8mm}%
|
||||
\rollfield{#3}{#4}\hspace*{8mm}%
|
||||
\rollfield{#5}{#6}\par}
|
||||
|
||||
\newcommand{\rollinfo}{%
|
||||
\begingroup\rollinfofont
|
||||
\noindent
|
||||
\rollfield{课程名称}{\rollcourse}\hfill
|
||||
\rollfield{课程号}{\rollcno}\hfill
|
||||
\rollfield{选课号}{\rollsno}\par\vspace*{1.2mm}
|
||||
\noindent
|
||||
\rollfield{学分}{\rollcredit}\hfill
|
||||
\rollfield{任课教师}{\rollteacher}\hfill
|
||||
\rollfield{学年学期}{\rollterm}\par
|
||||
\rollinforow{课程名称}{\rollcourse}%
|
||||
{课程号}{\rollcno}%
|
||||
{选课号}{\rollsno}%
|
||||
\vspace*{1.2mm}%
|
||||
\rollinforow{学分}{\rollcredit}%
|
||||
{任课教师}{\rollteacher}%
|
||||
{学年学期}{\rollterm}%
|
||||
\endgroup\vspace*{2.5mm}}
|
||||
|
||||
%======================================================================
|
||||
|
||||
Reference in New Issue
Block a user