From 88b3e088d6e453df49d17187362f8962ffd33b96 Mon Sep 17 00:00:00 2001 From: laoyang Date: Tue, 27 Oct 2026 08:55:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=AD=97=E6=A0=8F=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=B9=B4=E4=BB=BD=E5=8D=A0=E4=BD=8D=E7=AC=A6=EF=BC=8C=E5=8F=AA?= =?UTF-8?q?=E4=BF=9D=E7=95=99=E6=89=8B=E5=86=99=E5=A1=AB=E7=A9=BA=E4=BD=8D?= =?UTF-8?q?=E3=80=8C=E5=B9=B4=20=E6=9C=88=20=E6=97=A5=E3=80=8D=20#8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 课程教学日历/README.md | 84 ++++++++++++++++++++-------------- 课程教学日历/课程教学日历.pdf | Bin 54726 -> 54606 bytes 课程教学日历/课程教学日历.tex | 30 ++++++------ 3 files changed, 62 insertions(+), 52 deletions(-) diff --git a/课程教学日历/README.md b/课程教学日历/README.md index c93ceab..f862c30 100644 --- a/课程教学日历/README.md +++ b/课程教学日历/README.md @@ -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`,**没有 ``**。 本模板照抄,不加粗。`\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)。 ## 真实数据零泄漏 diff --git a/课程教学日历/课程教学日历.pdf b/课程教学日历/课程教学日历.pdf index 9b8691629a1b380aac0de1670dcf795201b7890b..f4171563e336cdd1c105c7ecce4f2d70aee45b00 100644 GIT binary patch delta 6081 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 Swm^-=C&Yur$SAL=fb~B&JhdzU delta 6199 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 diff --git a/课程教学日历/课程教学日历.tex b/课程教学日历/课程教学日历.tex index d4e1e6e..2ba5e68 100644 --- a/课程教学日历/课程教学日历.tex +++ b/课程教学日历/课程教学日历.tex @@ -36,7 +36,7 @@ \newcommand{\calhour}{00} % 总学时 \newcommand{\calstudent}{000} % 学生人数 \newcommand{\calassess}{××考试} % 考核方式(填 ×××) -\newcommand{\calgrade}{20××} % 签字栏年份 +% 注:签字栏的「年 月 日」不设宏 —— 那是**手写**填空位,模板里保持空白。 \begin{document} @@ -202,30 +202,26 @@ % 「院(系)」x=321.00 年份 x=352.50 % 原件第二行是用空格顶的(不是缩进),照抄即可。 % -% ⚠️ 第二行的三个锚点(实测原件 PDF,10.45pt 宋体): +% ⚠️ 第二行的三个锚点(逐字符实测原件 PDF,10.45pt 宋体): % 年字形 x = 355.08 月 x = 376.08 日 x = 397.08 -% 年→月 空档 10.55pt,月→日 空档 10.50pt(都是一个全角字的宽度) -% 原件里**年份是空的**(" 年 月 日"),留白给老师手写签日期。 +% 年→月 21.00pt,月→日 21.00pt(都是一个全角字 + 10.55pt 空档) % -% 我们填了 \calgrade,所以必须给年份一个**定宽右对齐盒子**: -% 盒右边界 = 年字形起点 355.08 -% 盒起点 = 355.08 − 34.16 = 320.92 ← 与上行「院(系)」321.00 对齐 -% 盒宽 34.16pt 放得下 "20××"(2 半角 10.5 + 2 全角 21 ⇒ 约 31.5pt) -% 实测落到:年 355.53 月 376.08 日 397.14 +% 原件被填过,年份位印着 4 个半角数字(x=331.44~352.50), +% 后面跟一个空格,再是「年」。**本模板不写年份**,那一段留白给 +% 老师手写签日期 —— 这是空白模板该有的样子。 % -% ❌ 出错过的写法:`\hspace*{92.604mm}\calgrade~年\hspace{-8.35mm}月` -% —— 年份文字把「年」推到了 x=399.74,直接用负 kern 去拽「月」, -% 结果「月」叠在「年」上,三个字变成一个墨团。 -% 负 \hspace 只能挪后面的盒子,不能把已经排出去的「年」收回来。 +% 但「年 月 日」三个字仍留在原件的印刷位置上(355.08 起), +% 这样打出来的表格与学校原表逐字对齐,手写填空处一目了然。 +% +% ⚠️ 不要用负 \hspace 去挪:它只能压缩后续间距,减到负数就是重叠。 +% (曾经为了塞进 \calgrade 占位符,用 \hspace{-8.35mm} 拽「月」, +% 结果三个字叠成一个墨团。现已彻底去掉年份占位符,问题不存在了。) %====================================================================== \begin{caloutside} \calskip{5.60mm} \hspace*{81.49mm}\calfontC 院(系)负责人签字:\par \calskip{1.10mm} -\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 \end{caloutside} \end{document} \ No newline at end of file