原来用 \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。
154 lines
3.6 KiB
Markdown
154 lines
3.6 KiB
Markdown
# 点名册
|
||
|
||
中国海洋大学课程点名册,A4 横向,20 列考勤表。
|
||
|
||
## 编译
|
||
|
||
```bash
|
||
cd 点名册
|
||
xelatex 点名册.tex
|
||
```
|
||
|
||
或仓库根:`bash build.sh 点名册`
|
||
|
||
## 文件
|
||
|
||
| 文件 | 说明 |
|
||
|---|---|
|
||
| `点名册.tex` | 主文件,课程信息与学生名单改这里 |
|
||
| `oucroll.sty` | 版式包,一般不改 |
|
||
|
||
## 课程信息
|
||
|
||
```latex
|
||
\rollsetcourse{数字逻辑} % 课程名称
|
||
\rollsetcno{080502101231} % 课程号
|
||
\rollsetsno{25252029} % 选课号
|
||
\rollsetcredit{2.5} % 学分
|
||
\rollsetteacher{张远航} % 任课教师
|
||
\rollsetterm{2025 学年 秋 季学期} % 学年学期
|
||
```
|
||
|
||
| 命令 | 说明 |
|
||
|---|---|
|
||
| `\rollsetcourse{}` | 课程名称 |
|
||
| `\rollsetcno{}` | 课程号 |
|
||
| `\rollsetsno{}` | 选课号 |
|
||
| `\rollsetcredit{}` | 学分 |
|
||
| `\rollsetteacher{}` | 任课教师 |
|
||
| `\rollsetterm{}` | 学年学期 |
|
||
|
||
设完后调 `\rollinfo` 印出信息区:
|
||
|
||
```latex
|
||
\rolltitle{中国海洋大学点名册}
|
||
\rollsetcourse{数字逻辑}
|
||
...
|
||
\rollinfo
|
||
```
|
||
|
||
## 学生名单
|
||
|
||
每人一行,三列:序号、学号、姓名。后面 17 周留空手填。
|
||
|
||
```latex
|
||
\begin{rolltable}
|
||
\rollrow{1}{2525201001}{陈嘉禾}
|
||
\rollrow{2}{2525201002}{丁若彤}
|
||
...
|
||
\end{rolltable}
|
||
```
|
||
|
||
| 参数 | 说明 |
|
||
|---|---|
|
||
| 第 1 个 | 序号 |
|
||
| 第 2 个 | 学号 |
|
||
| 第 3 个 | 姓名 |
|
||
|
||
增删学生就增删 `\rollrow` 行。
|
||
|
||
## 一页能放多少行
|
||
|
||
A4 横向(297 × 210mm),上下边距 14/16mm,扣掉标题、课程信息、表头:
|
||
|
||
| 行高 | 一页行数 |
|
||
|---|---|
|
||
| 5.0mm | 27 行 |
|
||
| 4.5mm(默认) | 30 行 |
|
||
| 4.2mm | 33 行 |
|
||
|
||
超过这个数会溢出到第二页。要放更多学生,两个办法:
|
||
|
||
1. 改 `oucroll.sty` 里 `row{2-Z}={ht=4.5mm}` 的行高
|
||
2. 分两页,每页 30 人,第二页重复表头
|
||
|
||
## 表头
|
||
|
||
20 列表头依次是:序号、学号、姓名、1、2、3 …… 17。
|
||
|
||
周次列只写数字,不写「第 N 周」,因为横向空间有限。
|
||
|
||
改列宽或改周数,编辑 `oucroll.sty`:
|
||
|
||
```latex
|
||
\newcommand{\rollwno}{9mm} % 序号
|
||
\newcommand{\rollwid}{26mm} % 学号
|
||
\newcommand{\rollwname}{20mm} % 姓名
|
||
\newcommand{\rollwweek}{11.4734mm} % 每周
|
||
```
|
||
|
||
**改列宽时必须重算**,让总和恰好等于版心宽:
|
||
|
||
```
|
||
版心 = 297 − 14×2 = 269mm
|
||
表宽 = Σwd + 2×0.4×20(colsep)+ 0.4pt×20(竖线) = Σwd + 18.82mm
|
||
∴ Σwd = 269 − 18.82 = 250.18mm
|
||
```
|
||
|
||
## 表尾说明
|
||
|
||
```latex
|
||
\rollfoot{标记方式自行约定(如「√」出席、「缺」缺席、「假」请假)。}
|
||
```
|
||
|
||
不要就删掉这一行。
|
||
|
||
## 版式
|
||
|
||
```
|
||
A4 横向 297 × 210 mm
|
||
边距 左右 14mm,上 12mm,下 16mm
|
||
标题 20pt 黑体居中
|
||
课程信息 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 是栏间余量)。
|
||
|
||
## 注意
|
||
|
||
示例学生名单是虚构数据,使用时全部替换。 |