修复签字栏年月日重叠:年份改用定宽右对齐盒子 #8
This commit is contained in:
+53
-5
@@ -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 |
|
| 课程信息第 2 行 | 214.85 | 214.82 | −0.03 |
|
||||||
| 表格顶线 | 242.60 | 242.60 | **0.00** |
|
| 表格顶线 | 242.60 | 242.60 | **0.00** |
|
||||||
| 「院(系)负责人签字」x | 321.00 | 320.99 | −0.01 |
|
| 「院(系)负责人签字」x | 321.00 | 320.99 | −0.01 |
|
||||||
|
| 签字栏「年」字形 x | 355.08 | 355.53 | +0.45 |
|
||||||
| 签字栏「月」x | 376.08 | 376.08 | **0.00** |
|
| 签字栏「月」x | 376.08 | 376.08 | **0.00** |
|
||||||
| 签字栏「日」x | 397.08 | 396.04 | −1.04 |
|
| 签字栏「日」x | 397.08 | 397.14 | +0.06 |
|
||||||
|
|
||||||
### 行高(21 条横线,单位 pt)
|
### 行高(21 条横线,单位 pt)
|
||||||
|
|
||||||
@@ -320,11 +321,58 @@ Word 的 pt 是 PostScript point(1/72 英寸),TeX 默认的 pt 是 TeX poi
|
|||||||
视觉上表头显得醒目,但原 `.doc` 的表头格只有 `jc=center`,**没有 `<w:b/>`**。
|
视觉上表头显得醒目,但原 `.doc` 的表头格只有 `jc=center`,**没有 `<w:b/>`**。
|
||||||
本模板照抄,不加粗。`\calhead` 保留了 `\bfseries` 的能力,想加粗自己去打开。
|
本模板照抄,不加粗。`\calhead` 保留了 `\bfseries` 的能力,想加粗自己去打开。
|
||||||
|
|
||||||
### 5. 签字栏第二行用空格顶位,不是缩进
|
### 5. 签字栏的「年 月 日」必须给年份一个定宽盒子
|
||||||
|
|
||||||
「院(系)负责人签字:」有 `w:ind firstLine=4515`(79.64mm),而
|
原件第 2 页底部两段:
|
||||||
「××××年 月 日」**没有** `ind`,是靠空格顶到位置的。故两行起点不同
|
|
||||||
(321.00 与 352.50pt)。本模板按实测值分别给 `\hspace*`。
|
| 段落 | 定位方式 | 起点 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]` 仍然叠(盒太窄,年份溢出到盒外)。
|
||||||
|
正解是让**年份右对齐到「年」的左边界**,而不是让「月」去追年份。
|
||||||
|
|
||||||
## 真实数据零泄漏
|
## 真实数据零泄漏
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
+21
-2
@@ -35,7 +35,7 @@
|
|||||||
\newcommand{\calcredit}{×.×} % 课程学分
|
\newcommand{\calcredit}{×.×} % 课程学分
|
||||||
\newcommand{\calhour}{00} % 总学时
|
\newcommand{\calhour}{00} % 总学时
|
||||||
\newcommand{\calstudent}{000} % 学生人数
|
\newcommand{\calstudent}{000} % 学生人数
|
||||||
\newcommand{\calassess}{××考试} % 考核方式(开卷/闭卷考试等)
|
\newcommand{\calassess}{××考试} % 考核方式(填 ×××)
|
||||||
\newcommand{\calgrade}{20××} % 签字栏年份
|
\newcommand{\calgrade}{20××} % 签字栏年份
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
@@ -201,12 +201,31 @@
|
|||||||
% ⚠️ 两行的水平位置**不一样**:
|
% ⚠️ 两行的水平位置**不一样**:
|
||||||
% 「院(系)」x=321.00 年份 x=352.50
|
% 「院(系)」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}
|
\begin{caloutside}
|
||||||
\calskip{5.60mm}
|
\calskip{5.60mm}
|
||||||
\hspace*{81.49mm}\calfontC 院(系)负责人签字:\par
|
\hspace*{81.49mm}\calfontC 院(系)负责人签字:\par
|
||||||
\calskip{1.10mm}
|
\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{caloutside}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
Reference in New Issue
Block a user