From 3b67659689a74c74e611934473f669fb0ee4ceb0 Mon Sep 17 00:00:00 2001 From: laoyang Date: Tue, 27 Oct 2026 08:48:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AD=BE=E5=AD=97=E6=A0=8F?= =?UTF-8?q?=E5=B9=B4=E6=9C=88=E6=97=A5=E9=87=8D=E5=8F=A0=EF=BC=9A=E5=B9=B4?= =?UTF-8?q?=E4=BB=BD=E6=94=B9=E7=94=A8=E5=AE=9A=E5=AE=BD=E5=8F=B3=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=E7=9B=92=E5=AD=90=20#8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 课程教学日历/README.md | 58 +++++++++++++++++++++++++++++++--- 课程教学日历/课程教学日历.pdf | Bin 54730 -> 54726 bytes 课程教学日历/课程教学日历.tex | 23 ++++++++++++-- 3 files changed, 74 insertions(+), 7 deletions(-) diff --git a/课程教学日历/README.md b/课程教学日历/README.md index 7a60789..c93ceab 100644 --- a/课程教学日历/README.md +++ b/课程教学日历/README.md @@ -179,8 +179,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 | 396.04 | −1.04 | +| 签字栏「日」x | 397.08 | 397.14 | +0.06 | ### 行高(21 条横线,单位 pt) @@ -320,11 +321,58 @@ Word 的 pt 是 PostScript point(1/72 英寸),TeX 默认的 pt 是 TeX poi 视觉上表头显得醒目,但原 `.doc` 的表头格只有 `jc=center`,**没有 ``**。 本模板照抄,不加粗。`\calhead` 保留了 `\bfseries` 的能力,想加粗自己去打开。 -### 5. 签字栏第二行用空格顶位,不是缩进 +### 5. 签字栏的「年 月 日」必须给年份一个定宽盒子 -「院(系)负责人签字:」有 `w:ind firstLine=4515`(79.64mm),而 -「××××年 月 日」**没有** `ind`,是靠空格顶到位置的。故两行起点不同 -(321.00 与 352.50pt)。本模板按实测值分别给 `\hspace*`。 +原件第 2 页底部两段: + +| 段落 | 定位方式 | 起点 x | +|---|---|---| +| 「院(系)负责人签字:」 | `w:ind firstLine=4515`(79.64mm) | 321.00 | +| 「 年 月 日」 | **无** `ind`,靠空格顶位 | 352.50 | + +⚠️ **原件里年份是空的**,就是「` 年`」加两个空格加「`月`」, +留白给老师手写签日期。三个字的实测锚点(10.45pt 宋体): + +| 字 | 原稿 x | 说明 | +|---|---|---| +| 年 | 355.08 | 字形左边界 | +| 月 | 376.08 | 距「年」10.55pt | +| 日 | 397.08 | 距「月」10.50pt | + +我们填了 `\calgrade` 之后,必须**先给年份一个定宽右对齐盒子**, +让「年」稳稳落在 355.08,再往后排「月」「日」: + +```latex +\hspace*{81.49mm}% +{\calfontC\makebox[34.16pt][r]{\calgrade}年}% ← 年份右对齐到「年」前面 +\hspace*{10.60pt}% +\calfontC 月\hspace*{10.60pt}日\par +``` + +盒宽 34.16pt = 355.53(「年」字形起点)− 321.37(盒左 = 与上行 +「院」对齐),装得下 `20××`(2 个半角数字 10.5pt + 2 个全角 `×` 21pt)。 + +#### ❌ 曾经踩的坑:负 `\hspace` 拽不回已经排出去的「年」 + +最初的写法是从原件「` 年`」前面的空格反推的: + +```latex +\hspace*{92.604mm}\calfontC \calgrade~年\hspace{-8.35mm}月\hspace{3.34mm}日 +``` + +实测结果:「月」确实落在 376.08(对),但 `20×× 年` 这段文字一直延伸到 +x=399.74,「月」正好压在「年」上 —— **三个字叠成一个墨团**。 + +原因两层: + +1. **原件没有年份文字**。`\hspace{92.604mm}` 是按「` 年`」的位置反解的, + 现在前面多插了 `\calgrade`(≈31.5pt),整串就被推后了。 +2. **负 `\hspace` 只能挪它后面的盒子**,不能把已经排出去的「年」收回来。 + 它减的是「年」和「月」之间的空隙,空隙减成负数就成了重叠。 + +排除过程:`\hspace{-8.35mm}` 时「月」= 376.08 但覆盖「年」; +改成 `\makebox[6.466mm][r]` 仍然叠(盒太窄,年份溢出到盒外)。 +正解是让**年份右对齐到「年」的左边界**,而不是让「月」去追年份。 ## 真实数据零泄漏 diff --git a/课程教学日历/课程教学日历.pdf b/课程教学日历/课程教学日历.pdf index 33c8fbaf70606f79b7b7c1eaa3bacbab82ae20dc..9b8691629a1b380aac0de1670dcf795201b7890b 100644 GIT binary patch delta 3722 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 Lva=&J6@mW*Ondv9 delta 3681 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 diff --git a/课程教学日历/课程教学日历.tex b/课程教学日历/课程教学日历.tex index 08c2c17..d4e1e6e 100644 --- a/课程教学日历/课程教学日历.tex +++ b/课程教学日历/课程教学日历.tex @@ -35,7 +35,7 @@ \newcommand{\calcredit}{×.×} % 课程学分 \newcommand{\calhour}{00} % 总学时 \newcommand{\calstudent}{000} % 学生人数 -\newcommand{\calassess}{××考试} % 考核方式(开卷/闭卷考试等) +\newcommand{\calassess}{××考试} % 考核方式(填 ×××) \newcommand{\calgrade}{20××} % 签字栏年份 \begin{document} @@ -201,12 +201,31 @@ % ⚠️ 两行的水平位置**不一样**: % 「院(系)」x=321.00 年份 x=352.50 % 原件第二行是用空格顶的(不是缩进),照抄即可。 +% +% ⚠️ 第二行的三个锚点(实测原件 PDF,10.45pt 宋体): +% 年字形 x = 355.08 月 x = 376.08 日 x = 397.08 +% 年→月 空档 10.55pt,月→日 空档 10.50pt(都是一个全角字的宽度) +% 原件里**年份是空的**(" 年 月 日"),留白给老师手写签日期。 +% +% 我们填了 \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 +% +% ❌ 出错过的写法:`\hspace*{92.604mm}\calgrade~年\hspace{-8.35mm}月` +% —— 年份文字把「年」推到了 x=399.74,直接用负 kern 去拽「月」, +% 结果「月」叠在「年」上,三个字变成一个墨团。 +% 负 \hspace 只能挪后面的盒子,不能把已经排出去的「年」收回来。 %====================================================================== \begin{caloutside} \calskip{5.60mm} \hspace*{81.49mm}\calfontC 院(系)负责人签字:\par \calskip{1.10mm} -\hspace*{92.604mm}\calfontC \calgrade~年\hspace{-8.35mm}月\hspace{3.34mm}日\par +\hspace*{81.49mm}% +{\calfontC\makebox[34.16pt][r]{\calgrade}年}% +\hspace*{10.60pt}% +\calfontC 月\hspace*{10.60pt}日\par \end{caloutside} \end{document} \ No newline at end of file