diff --git a/点名册/README.md b/点名册/README.md index 5e4f908..8f4682a 100644 --- a/点名册/README.md +++ b/点名册/README.md @@ -119,13 +119,36 @@ A4 横向(297 × 210mm),上下边距 14/16mm,扣掉标题、课程信息 A4 横向 297 × 210 mm 边距 左右 14mm,上 12mm,下 16mm 标题 20pt 黑体居中 -课程信息 10.5pt,两行三项 +课程信息 10.5pt,两行三项,三栏定宽对齐 表格 20 列 × (1 表头 + N 数据行) 表头行高 7.0mm,数据行高 4.5mm 正文 10.5pt,表头 8pt,表体 10pt 不排页码 ``` +### 课程信息的对齐 + +六项按两行三栏排,栏位固定: + +``` +课程名称:xxx 课程号:xxx 选课号:xxx +学分:xxx 任课教师:xxx 学年学期:xxx +``` + +每栏宽 89.67mm(版心 269mm 三等分),标签占 18mm,值占 63.67mm。 +上下两行的冒号位置严格对齐。 + +值超过 17 个汉字会自动折行,不会压到下一栏。要调整栏宽或标签宽度, +改 `oucroll.sty`: + +```latex +\setlength{\rollcolw}{89.6667mm} % 每栏宽 +\setlength{\rolllabw}{18mm} % 标签宽 +\setlength{\rollvalw}{63.6667mm} % 值宽 +``` + +三者关系:`rollvalw = rollcolw − rolllabw − 8mm`(8mm 是栏间余量)。 + ## 注意 示例学生名单是虚构数据,使用时全部替换。 \ No newline at end of file diff --git a/点名册/oucroll.sty b/点名册/oucroll.sty index 7fff70b..87d5a4b 100644 --- a/点名册/oucroll.sty +++ b/点名册/oucroll.sty @@ -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}} %====================================================================== diff --git a/点名册/点名册.pdf b/点名册/点名册.pdf index b5338d9..2988e97 100644 Binary files a/点名册/点名册.pdf and b/点名册/点名册.pdf differ