签字栏去掉年份占位符,只保留手写填空位「年 月 日」 #8
This commit is contained in:
+49
-35
@@ -53,9 +53,11 @@ xelatex 课程教学日历.tex
|
||||
\newcommand{\calhour}{00} % 总学时
|
||||
\newcommand{\calstudent}{000} % 学生人数
|
||||
\newcommand{\calassess}{××考试} % 考核方式
|
||||
\newcommand{\calgrade}{20××} % 签字栏年份
|
||||
```
|
||||
|
||||
签字栏的「年 月 日」**没有对应的宏**,因为那是手写填写的空位,
|
||||
模板中保持印刷好的「年」「月」「日」三个字,中间留白给老师签日期。
|
||||
|
||||
### 教学日历表
|
||||
|
||||
每行格式:
|
||||
@@ -179,9 +181,9 @@ print([round(rows[i] - rows[i-1], 2) for i in range(1, len(rows))])
|
||||
| 课程信息第 2 行 | 214.85 | 214.82 | −0.03 |
|
||||
| 表格顶线 | 242.60 | 242.60 | **0.00** |
|
||||
| 「院(系)负责人签字」x | 321.00 | 320.99 | −0.01 |
|
||||
| 签字栏「年」字形 x | 355.08 | 355.53 | +0.45 |
|
||||
| 签字栏「月」x | 376.08 | 376.08 | **0.00** |
|
||||
| 签字栏「日」x | 397.08 | 397.14 | +0.06 |
|
||||
| 签字栏「年」x | 355.08 | 355.09 | +0.01 |
|
||||
| 签字栏「月」x | 376.08 | 376.09 | +0.01 |
|
||||
| 签字栏「日」x | 397.08 | 397.10 | +0.02 |
|
||||
|
||||
### 行高(21 条横线,单位 pt)
|
||||
|
||||
@@ -321,58 +323,70 @@ Word 的 pt 是 PostScript point(1/72 英寸),TeX 默认的 pt 是 TeX poi
|
||||
视觉上表头显得醒目,但原 `.doc` 的表头格只有 `jc=center`,**没有 `<w:b/>`**。
|
||||
本模板照抄,不加粗。`\calhead` 保留了 `\bfseries` 的能力,想加粗自己去打开。
|
||||
|
||||
### 5. 签字栏的「年 月 日」必须给年份一个定宽盒子
|
||||
### 5. 签字栏的「年 月 日」是手写填空位,不要填年份
|
||||
|
||||
原件第 2 页底部两段:
|
||||
|
||||
| 段落 | 定位方式 | 起点 x |
|
||||
|---|---|---|
|
||||
| 「院(系)负责人签字:」 | `w:ind firstLine=4515`(79.64mm) | 321.00 |
|
||||
| 「 年 月 日」 | **无** `ind`,靠空格顶位 | 352.50 |
|
||||
| 「×××× 年 月 日」 | **无** `ind`,靠空格顶位 | 331.44 |
|
||||
|
||||
⚠️ **原件里年份是空的**,就是「` 年`」加两个空格加「`月`」,
|
||||
留白给老师手写签日期。三个字的实测锚点(10.45pt 宋体):
|
||||
|
||||
| 字 | 原稿 x | 说明 |
|
||||
|---|---|---|
|
||||
| 年 | 355.08 | 字形左边界 |
|
||||
| 月 | 376.08 | 距「年」10.55pt |
|
||||
| 日 | 397.08 | 距「月」10.50pt |
|
||||
|
||||
我们填了 `\calgrade` 之后,必须**先给年份一个定宽右对齐盒子**,
|
||||
让「年」稳稳落在 355.08,再往后排「月」「日」:
|
||||
原件是被填过的实例,年份位印着 4 个半角数字(x=331.44~352.50)。
|
||||
**本模板不写年份** —— 空白模板应该留白给老师手写。所以直接从「年」开始排:
|
||||
|
||||
```latex
|
||||
\hspace*{81.49mm}%
|
||||
{\calfontC\makebox[34.16pt][r]{\calgrade}年}% ← 年份右对齐到「年」前面
|
||||
\hspace*{10.60pt}%
|
||||
\calfontC 月\hspace*{10.60pt}日\par
|
||||
\hspace*{93.517mm}\calfontC 年\hspace*{10.55pt}月\hspace*{10.55pt}日\par
|
||||
```
|
||||
|
||||
盒宽 34.16pt = 355.53(「年」字形起点)− 321.37(盒左 = 与上行
|
||||
「院」对齐),装得下 `20××`(2 个半角数字 10.5pt + 2 个全角 `×` 21pt)。
|
||||
三个字的实测锚点(10.45pt 宋体),本模板与原件逐字对齐:
|
||||
|
||||
#### ❌ 曾经踩的坑:负 `\hspace` 拽不回已经排出去的「年」
|
||||
| 字 | 原件 x | 本模板 x | Δ |
|
||||
|---|---|---|---|
|
||||
| 年 | 355.08 | 355.09 | +0.01 |
|
||||
| 月 | 376.08 | 376.09 | +0.01 |
|
||||
| 日 | 397.08 | 397.10 | +0.02 |
|
||||
|
||||
最初的写法是从原件「` 年`」前面的空格反推的:
|
||||
`\hspace*{93.517mm}` 的来历:目标 x = 355.09pt = 125.23mm,
|
||||
`caloutside` 环境的 `\leftskip` 是 15.963mm,geometry 左边距 15.787mm,
|
||||
两者叠加后排版起点在 31.75mm 处,故
|
||||
`125.23 − 31.75 = 93.48mm`。取 93.48mm 实测落在 354.98(偏左 0.10pt),
|
||||
加 0.037mm 微调到 **93.517mm**,实测 355.09(偏右 0.01pt)。
|
||||
|
||||
⚠️ 三字之间的空档是 **10.55pt**,不是 21pt。因为中文字形本身占 10.5pt,
|
||||
「年」起点到「月」起点 = 字形宽 10.5 + 空档 10.55 ≈ 21.0pt。
|
||||
|
||||
#### ❌ 曾经踩的坑:用负 `\hspace` 塞年份占位符 → 三字重叠
|
||||
|
||||
第一版模板里有 `\calgrade`(`20××`)占位,写法是:
|
||||
|
||||
```latex
|
||||
\hspace*{92.604mm}\calfontC \calgrade~年\hspace{-8.35mm}月\hspace{3.34mm}日
|
||||
```
|
||||
|
||||
实测结果:「月」确实落在 376.08(对),但 `20×× 年` 这段文字一直延伸到
|
||||
x=399.74,「月」正好压在「年」上 —— **三个字叠成一个墨团**。
|
||||
实测:「月」落在 376.08,但 `20×× 年` 一直延伸到 x=399.74,
|
||||
「月」正好压在「年」上 —— **三个字叠成一个墨团**。
|
||||
|
||||
原因两层:
|
||||
原因:**负 `\hspace` 只能压缩它后面盒子之间的间距,不能把已经排出去的
|
||||
字符收回来**。减少间距减到负数 = 重叠,而不是"往回挪"。
|
||||
|
||||
1. **原件没有年份文字**。`\hspace{92.604mm}` 是按「` 年`」的位置反解的,
|
||||
现在前面多插了 `\calgrade`(≈31.5pt),整串就被推后了。
|
||||
2. **负 `\hspace` 只能挪它后面的盒子**,不能把已经排出去的「年」收回来。
|
||||
它减的是「年」和「月」之间的空隙,空隙减成负数就成了重叠。
|
||||
最终解法不是修排版技巧,而是**去掉年份占位符** —— 那本来就不该有。
|
||||
现在这一行只有三个中文字,不存在宽度变化,位置永远稳定。
|
||||
|
||||
排除过程:`\hspace{-8.35mm}` 时「月」= 376.08 但覆盖「年」;
|
||||
改成 `\makebox[6.466mm][r]` 仍然叠(盒太窄,年份溢出到盒外)。
|
||||
正解是让**年份右对齐到「年」的左边界**,而不是让「月」去追年份。
|
||||
### 6. `\calgrade` 已删除
|
||||
|
||||
曾经有过 `\newcommand{\calgrade}{20××}`,后因「签字栏不该印年份」而删除。
|
||||
如果你需要**预填**年份(比如批量生成带年份的表),自己加回来:
|
||||
|
||||
```latex
|
||||
\hspace*{81.52mm}{\calfontC\makebox[34.0pt][r]{2026}年}%
|
||||
\hspace*{10.55pt}\calfontC 月\hspace*{10.55pt}日\par
|
||||
```
|
||||
|
||||
要点:年份必须放进**定宽 `\makebox`**,让盒宽吸收内容长度变化,
|
||||
否则换 `2026` 与 `20××` 时「月」「日」会跟着漂移。
|
||||
|
||||
实测该写法落到:年 354.95 / 月 375.96 / 日 396.97(目标 355.08 / 376.08 / 397.08)。
|
||||
|
||||
## 真实数据零泄漏
|
||||
|
||||
|
||||
Reference in New Issue
Block a user