清理代码库中的开发过程内容
- 删除 WORKFLOW.md(开发流程文档,已移入记忆库) - build.sh 去掉 WSL 相关说明 - 33 个源文件的注释:去掉踩坑记录、实测推导、原文件对比、工单号引用 - 保留技术参数、约束说明、命令含义 净删 399 行。全库 16/16 编译通过。
This commit is contained in:
+18
-22
@@ -45,7 +45,7 @@
|
||||
\AtBeginDocument{\linespread{1}\Fivhao\selectfont}
|
||||
|
||||
%======================================================================
|
||||
% 2. 字体(#20:全部统一为思源宋体)
|
||||
% 2. 字体(全部统一为思源宋体)
|
||||
% 全部取自仓库公共字体包 ../fonts.tex(字体文件在 ../fonts/ 下)。
|
||||
%
|
||||
% ★ 本版把试卷的所有文字统一为**思源宋体(OUC Serif)**,中西文同一字族:
|
||||
@@ -55,7 +55,7 @@
|
||||
% 成绩表"题号/得分/一~八/总分" OUC Serif ✅ 原为霞鹜文楷
|
||||
%
|
||||
% ⚠️ 为什么西文也能用思源宋体
|
||||
% 已实测 OUCSerif-Regular.otf / -Bold.otf:13714 字形、cmap 7555 条,
|
||||
% 已实际OUCSerif-Regular.otf / -Bold.otf:13714 字形、cmap 7555 条,
|
||||
% ASCII 字母数字与常用标点 35/35 全部命中。它不是纯中文字体,
|
||||
% 西文字形是配套设计的,与汉字同灰度 —— 这正是要的效果。
|
||||
%
|
||||
@@ -69,14 +69,13 @@
|
||||
% 句点 . 0.327 vs 0.250 (+0.077)
|
||||
% 连字符 - 0.346 vs 0.333 (+0.013)
|
||||
% 影响:题号、分值、页码右移约 6%,题干里的英文单词变长。
|
||||
% 这是用户明确要求"全部用思源宋体"的必然代价,已确认接受。
|
||||
%
|
||||
% ⚠️ 装订线的 4 组连字符虚线已改为**用线画**(见第 6 节),
|
||||
% 不再受字体宽度影响。旧版是靠 18bp 连字符排出来的,
|
||||
% 换字体后每串会长 4~7bp,故锁定为几何坐标。
|
||||
%
|
||||
% ⚠️ 数学公式**不在统一范围内**(答案卷的 $x$、$\dfrac{}{}$ 等仍走
|
||||
% Computer Modern)。理由:思源宋体没有 MATH 表(实测只有
|
||||
% Computer Modern)。理由:思源宋体没有 MATH 表(实际只有
|
||||
% GSUB/GPOS),不能作数学字体;强行塞进正文字体会破坏斜体变量、
|
||||
% 正体数字、运算符间距这些数学排版规则。用户已确认保持不动。
|
||||
%======================================================================
|
||||
@@ -123,7 +122,6 @@
|
||||
%----------------------------------------------------------------------
|
||||
% 把**默认西文字体**也换成思源宋体(这是关键一步)
|
||||
%
|
||||
% ⚠️⚠️ 只重定向 \tnr / \tnrb 是**不够**的,这一点踩过:
|
||||
% 模板里有大量文字**根本没走 \tnr**,而是走 \setmainfont(默认西文族):
|
||||
% · \textbf{learning outcome} —— 裸加粗,西文走 \setmainfont
|
||||
% · 页脚的页码 / 总页数 —— \node{...\thepage} 裸排
|
||||
@@ -177,7 +175,7 @@
|
||||
\let\sunfont\OUCLatinSerif
|
||||
|
||||
% \kaiti 在试卷里只用于卷头填空与成绩表题号(见 \kh / \scoretable)。
|
||||
% #20 要求统一为思源宋体,故整个包内把 \kaiti 也指到思源宋体。
|
||||
%为思源宋体,故整个包内把 \kaiti 也指到思源宋体。
|
||||
% ⚠️ 用 \let 而不是改 \def\kaiti —— 后者会破坏 ../fonts.tex 的定义,
|
||||
% 而 \kaiti 在别的模板里还要用楷体。
|
||||
% ⚠️ 若将来要恢复楷体卷头,把下面这行注释掉即可,其余代码不用动。
|
||||
@@ -186,7 +184,7 @@
|
||||
%----------------------------------------------------------------------
|
||||
% ⚠️ xeCJK 陷阱:字体切换命令若紧邻 \par(或位于段落末尾),
|
||||
% 该段结束时的字体状态会"溢出"到后续段落,导致后面的 ASCII
|
||||
% 字符全部被排成 Times(实测:\tnr{ABC}\par 会让下一段的 "3" 变 Times)。
|
||||
% 字符全部被排成 Times(\tnr{ABC}\par 会让下一段的 "3" 变 Times)。
|
||||
% 故所有局部字体切换一律走下面两个包装:内部显式 \normalfont 收尾。
|
||||
% ⇒ 正文中请用 \TNR{...} / \TNRB{...} / \SUN{...},不要裸用 \tnr。
|
||||
%----------------------------------------------------------------------
|
||||
@@ -205,7 +203,7 @@
|
||||
\def\@spreadeach#1{%
|
||||
\ifx#1\@nil\else\hspace*{\spread@amt}#1\expandafter\@spreadeach\fi}
|
||||
|
||||
% 中文与西文间自动间距:原卷实测固定 2.70bp(不随字号缩放,
|
||||
% 中文与西文间自动间距:原卷实际固定 2.70bp(不随字号缩放,
|
||||
% 故用绝对 bp 而非 em;原卷 10.5bp 与 12bp 处均为 2.7bp)
|
||||
\xeCJKsetup{CJKecglue={\hskip 2.70bp\relax},PunctStyle=plain}
|
||||
|
||||
@@ -238,7 +236,7 @@
|
||||
%----------------------------------------------------------------------
|
||||
% 页脚是否印"试卷类型字母"(课程名之后那个 A / B)
|
||||
%
|
||||
% ★ 原卷实测:A 卷页脚【没有】字母(数字逻辑 + 一串短横线),
|
||||
% ★ 原卷A 卷页脚【没有】字母(数字逻辑 + 一串短横线),
|
||||
% B 卷页脚【有】B(392.48 处)。
|
||||
% 即:这是出卷人手工敲的,不是规则。故默认不印,需要时显式打开:
|
||||
% \examsetup{foottype = {B}} → 页脚印 B
|
||||
@@ -250,7 +248,7 @@
|
||||
%======================================================================
|
||||
% 5. 页脚:+…………………………课程名称 X……… 第 N 页 共 M 页 + 基线 713.33bp
|
||||
%
|
||||
% 本地实测(原卷字符级):
|
||||
% 本地(原卷字符级):
|
||||
% 82.20 '+' | 91.20~343.20 连续 29 个 '…'(每个步距 9.00)
|
||||
% 352.20 起课程名(长度不定)| 类型字母在 390.48
|
||||
% 396.48 起 3 个 '…' | 432.48 '第' | 443.64 页码 | 448.20 '页'
|
||||
@@ -361,7 +359,7 @@
|
||||
% \bindstrip[1.3,on] → 强制画 + 下移
|
||||
% 局部覆盖单页:\ouc@bindforce 置 1/0
|
||||
%
|
||||
% 本地实测(原卷 p1,x 坐标全部 bp):
|
||||
% 本地(原卷 p1,x 坐标全部 bp):
|
||||
% 竖虚线 x=33.8,5 段:101.1~148.5 / 222.4~290.8 / 359.4~427.9
|
||||
% 489.3~557.8 / 600.0~668.6
|
||||
% 18bp Times 连字符串 x=55.69("装/订/线"三字压在上面,白底遮断)
|
||||
@@ -398,7 +396,6 @@
|
||||
% #2 = 笔画个数
|
||||
% 相邻笔画顶端间隔 6.00bp,与原卷 18bp 连字符的步距一致。
|
||||
%
|
||||
% ⚠️⚠️ 方向别搞反(#20 返工过一次,记清楚):
|
||||
% 原卷的连字符是 rotate=90 排的,所以连字符的**横向长度转到了纵轴**、
|
||||
% **线粗转到了横轴**。也就是说每一笔是「竖着的短杠」,不是「横着的短杠」:
|
||||
% 竖:y 跨 4.30bp(这是连字符的字面长度)
|
||||
@@ -406,9 +403,8 @@
|
||||
% 中心 x = 51.60bp
|
||||
% 第一版按"水平线"画((49.40,y)--(53.70,y)),结果整条装订线变成
|
||||
% 一把**梯子**(一排横杠叠在竖线位置),与基线观感完全不同。
|
||||
% 用户反馈「这个装订线不行,需要跟之前的模板保持一致」即指此。
|
||||
%
|
||||
% ⚠️ x 中心 51.60bp 是原卷实测:连字符字符盒 x 41.60~59.60(18bp 宽),
|
||||
% ⚠️ x 中心 51.60bp 是原卷连字符字符盒 x 41.60~59.60(18bp 宽),
|
||||
% 但可见笔画只在 51.10~52.10,即字形在字符盒内偏右、
|
||||
% 中心 51.60 —— 这是 Times 连字符的字形位置,不是笔误。
|
||||
%
|
||||
@@ -433,7 +429,7 @@
|
||||
\coordinate (B) at ([yshift=-\ouc@bindshift]current page.north west);
|
||||
% ---- ★ 原卷此处【没有】外框 ----
|
||||
% 曾误把 PDF 里 x=17.4/18.12/60.15/60.87 那组线当成黑色外框,
|
||||
% 实测它们是 fill=(1,1,1) 的**白色遮挡块**(Word 里盖住页眉页脚
|
||||
% 实际它们是 fill=(1,1,1) 的**白色遮挡块**(Word 里盖住页眉页脚
|
||||
% 的底色块),可见黑线只有 x=33.80 那 6 段竖虚线。
|
||||
% 故此处不画任何竖线/封口线。
|
||||
% ---- 竖虚线:每段 = 对应栏目的"填写区"(紧接栏目名冒号之后,向上延伸)----
|
||||
@@ -449,17 +445,17 @@
|
||||
359.35/427.85, 489.30/557.80, 600.05/668.60}{%
|
||||
\draw[line width=0.48bp,line cap=butt]
|
||||
([xshift=33.8bp,yshift=-\a bp]B) -- ([xshift=33.8bp,yshift=-\b bp]B);}
|
||||
% ---- 虚线段(#20:由「18bp 连字符排成」改为「用线画」)----
|
||||
% 原卷这四段确实是 18bp Times 连字符排出来的,但 #20 把试卷字体
|
||||
% ---- 虚线段(由「18bp 连字符排成」改为「用线画」)----
|
||||
% 原卷这四段确实是 18bp Times 连字符排出来的,但本包把试卷字体
|
||||
% 统一到思源宋体之后,连字符每个宽 0.346 em(Termes 是 0.333),
|
||||
% 18bp 下每串会长出 4~7bp,正好破坏"复刻原卷长度"这个前提。
|
||||
% ⇒ 改为几何画的短横线段,长度锁死在 \ouc@dashseg 的坐标里,
|
||||
% 不受任何字体宽度影响。
|
||||
% 实测原卷(720dpi 渲染后逐笔画测量):
|
||||
% 实际原卷(720dpi 渲染后逐笔画测量):
|
||||
% 单个连字符笔画 长 4.40bp、粗 1.10bp、x 中心 51.60bp
|
||||
% → 左 49.40bp、右 53.80bp
|
||||
% 相邻笔画步距 6.00bp(= 18bp × 0.333 em)
|
||||
% 六段坐标与笔画数取自原卷逐笔画实测,见下方调用处。
|
||||
% 六段坐标与笔画数取自原卷逐笔画实际,见下方调用处。
|
||||
\ouc@dashseg{62.20}{24}% 最下一串(座号区)
|
||||
\ouc@dashseg{216.50}{24}% 考场教室号区
|
||||
\ouc@dashseg{364.80}{3}% 截断的短线(原卷被白底遮断,照抄)
|
||||
@@ -662,7 +658,7 @@
|
||||
\newcommand{\examfigcaption}[1]{%
|
||||
\par\nointerlineskip\centerline{\Xiaowu #1}\par\nointerlineskip}
|
||||
|
||||
% 图题(五号):原卷第 3 页 "图3" 实测 10.45bp
|
||||
% 图题(五号):原卷第 3 页 "图3" 实际10.45bp
|
||||
\newcommand{\examfigcaptioniii}[1]{%
|
||||
\par\nointerlineskip\centerline{\Fivhao #1}\par\nointerlineskip\vspace*{5.40bp}}
|
||||
|
||||
@@ -685,7 +681,7 @@
|
||||
\newcommand{\sumphisig}{\hbox{\sunfont ∑Φ}}
|
||||
|
||||
% 下标(原卷 M_L / M_S)
|
||||
% 实测:L/S 字号 5.30bp(SimSun),基线相对正文下移 1.56bp;
|
||||
% L/S 字号 5.30bp(SimSun),基线相对正文下移 1.56bp;
|
||||
% M(210.00) → L(215.16) 步距 5.16bp(M 的半角宽),
|
||||
% L → 和 3.96bp,故 M 起点到"和"共 9.12bp。
|
||||
% 用宽度 3.87bp 的盒接管下标宽度,使 5.25 + 3.87 = 9.12 对齐原卷。
|
||||
@@ -695,7 +691,7 @@
|
||||
%======================================================================
|
||||
% 10. 题型构件(通用)
|
||||
% 设计原则:不依赖任何具体课程,只提供"骨架",
|
||||
% 题目内容由正文填写。所有题型都沿用本卷实测的版面参数:
|
||||
% 题目内容由正文填写。所有题型都沿用本卷实际的版面参数:
|
||||
% · 正文 10.5bp / 行距 15.6bp
|
||||
% · 中英之间 2.70bp(ecglue)
|
||||
% · 题号栏 15.72bp(宋体题号,题号后空 5.28bp)
|
||||
|
||||
+18
-21
@@ -59,7 +59,7 @@
|
||||
\pagestyle{empty}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 字体(#20:与 oucexam.sty 同步,全部统一为思源宋体)
|
||||
% 字体(与 oucexam.sty 同步,全部统一为思源宋体)
|
||||
% 全部取自公共字体包 ../fonts.tex,再在包内重定向。
|
||||
%
|
||||
% ⚠️ 必须和 oucexam.sty 做**完全相同的处理**,否则两份文件观感不一致:
|
||||
@@ -70,7 +70,7 @@
|
||||
% · 「(4 分)」里的数字 → 走 \setmainfont
|
||||
% · \thepage / \pageref 页码 → 走 \setmainfont
|
||||
% ⇒ 必须连 \setmainfont 一起改,否则 PDF 里会残留 Termes span。
|
||||
% 实测第一轮只做 \let 时,答案卷残留 197 个 Termes span。
|
||||
% 实际第一轮只做 \let 时,答案卷残留 197 个 Termes span。
|
||||
%
|
||||
% ⚠️ 数学公式($x$ / $\dfrac{}{}$ / $\sum$)**不在统一范围内**,
|
||||
% 仍走 Computer Modern。原因见 oucexam.sty 的说明:思源宋体没有
|
||||
@@ -122,7 +122,7 @@
|
||||
\let\tnr\OUCLatinSerif
|
||||
\let\tnrb\OUCLatinSerifBold
|
||||
|
||||
% 答案卷里的黑体小标题(\heiti,共 37 处)一并换成思源宋体,#20 要求统一。
|
||||
% 答案卷里的黑体小标题(\heiti,共 37 处)一并换成思源宋体。
|
||||
% ⚠️ 用 \let 而非改 \def\heiti —— 后者会破坏 ../fonts.tex,影响别的模板。
|
||||
% ⚠️ 若将来要恢复黑体标题,注释掉下面这行即可。
|
||||
\let\heiti\songti
|
||||
@@ -132,17 +132,17 @@
|
||||
\newcommand{\TNRB}[1]{{\tnrb #1\normalfont}}
|
||||
\newcommand{\SUN}[1]{{\sunfont #1\normalfont}}
|
||||
|
||||
% 中西文间距 2.70bp(原卷实测值,不随字号缩放)。
|
||||
% 中西文间距 2.70bp(原卷取值,不随字号缩放)。
|
||||
\xeCJKsetup{CJKecglue={\hskip 2.70bp\relax},PunctStyle=plain}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 直引号 " (U+0022) 归入 CJK 字符类(#20 补充修正)
|
||||
% 直引号 " (U+0022) 归入 CJK 字符类(补充修正)
|
||||
%
|
||||
% ⚠️ 问题:本文件正文用 ASCII 直引号 "" 表示中文引号(共 32 处),
|
||||
% 而 xeCJK 按 Unicode 区段分类 —— U+0022 在 Basic Latin,被判成**西文**,
|
||||
% 于是引号走 \setmainfont(原为 Termes),与两侧汉字不同字体、不同宽度。
|
||||
% 换字体后表现为一行里出现 TeXGyreTermes-Regular 的 ",且因为西文引号
|
||||
% 比中文引号窄、字距算法不同,挤压出 Overfull(实测第 88 行 +8.07pt)。
|
||||
% 比中文引号窄、字距算法不同,挤压出 Overfull(实际第 88 行 +8.07pt)。
|
||||
%
|
||||
% ⚠️ 为什么不在 fonts.tex 里改:那里是**全库共用**的,把 U+0022 全局归 CJK
|
||||
% 会让正文里真正的英文引号(如 code 片段 "hello world")也变成全角,
|
||||
@@ -153,7 +153,7 @@
|
||||
\xeCJKDeclareCharClass{CJK}{"0022} % " 直引号(当中文引号用)
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 【#20 踩坑记录】换字体引起的 Overfull 怎么修(结论:改源码断行,别调参数)
|
||||
% 【技术说明】换字体引起的 Overfull 怎么修(结论:改源码断行,别调参数)
|
||||
%
|
||||
% 现象:字体统一为思源宋体后,参考答案与评分标准示例.tex 第 123-125 行
|
||||
% (\keyitem{3}{4})出现 Overfull 2.61pt,渲染后压出版心右边界
|
||||
@@ -169,7 +169,6 @@
|
||||
% 往前找更早的合法断点(句号「。」之后)的话,第一行只填 65%,
|
||||
% 欠宽 150bp 无处拉伸 ⇒ badness 爆掉 ⇒ TeX 宁可撑破 2.61bp。
|
||||
%
|
||||
% ⚠️⚠️ 试过且**全部无效**的方案(别再花时间重复,每种都实测过):
|
||||
% ① \emergencystretch 1.5em —— 无效。只追加"可拉伸量",
|
||||
% 本行没有胶可拉,给多少额度都无从施展。
|
||||
% ② \tolerance 3000 —— 无效。不是不满意断点,是没有更早的**合法**断点。
|
||||
@@ -188,7 +187,7 @@
|
||||
% \keyitem{3}{4}{%
|
||||
% \textbf{学习迁移}:指一种学习对另一种学习的影响\pt{2}。\\
|
||||
% 按方向分正迁移与负迁移\pt{1},其发生依赖于共同要素与概括水平\pt{1}。}
|
||||
% 已实测:Overfull 归零,三页最右墨迹均为 524.41bp,与版心严丝合缝。
|
||||
% 已Overfull 归零,三页最右墨迹均为 524.41bp,与版心严丝合缝。
|
||||
%
|
||||
% 为什么这是对的做法而不是"绕过问题":
|
||||
% 分项给分的答案本来就该一句一行,读者(阅卷人)靠句号扫分点。
|
||||
@@ -212,7 +211,7 @@
|
||||
\def\ouckey@total{}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% key 赋值:空值规范成空串(#22)
|
||||
% key 赋值:空值规范成空串
|
||||
%
|
||||
% ⚠️ 所有 key 一律走这里,不要退回 `\def\ouckey@xxx{#1}`。
|
||||
% 原因见文件下方「判空」一节的完整说明:那样 dept={} 会存成
|
||||
@@ -245,7 +244,7 @@
|
||||
\newcommand{\keysetup}[1]{\setkeys{ouckey}{#1}}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 判空(#22 修正:原实现有真 bug)
|
||||
% 判空(修正:原实现有真 bug)
|
||||
%
|
||||
% ⚠️⚠️ 旧实现的坑
|
||||
% 旧代码是
|
||||
@@ -255,7 +254,7 @@
|
||||
% **\detokenize 不展开参数** —— 它看到的是字符串 `\ouckey@dept`
|
||||
% (宏名本身),永远非空 ⇒ 判空永远失败。
|
||||
% 后果:`dept = {}` 时抬头仍印出孤立的「开课学院:」,后面没有值。
|
||||
% 这是旧版就有的 bug(三格布局下不明显),#22 改成一行一项后暴露。
|
||||
% 这是旧版就有的 bug(三格布局下不明显)。
|
||||
%
|
||||
% 为什么不在宏里修
|
||||
% 试过「先 \edef 展开再 \detokenize」的版本,会报
|
||||
@@ -277,7 +276,7 @@
|
||||
\fi}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% 一项信息:标签加粗 + 值,**独占一行**(#22)
|
||||
% 一项信息:标签加粗 + 值,**独占一行**
|
||||
%
|
||||
% ⚠️⚠️ 为什么从"一行三格"改成"一行一项"
|
||||
%
|
||||
@@ -289,9 +288,9 @@
|
||||
% · 盒内中文**不能换行**(LR 模式,不做段落断行)
|
||||
% 所以三格布局对短字段友好,对长字段必然重叠。
|
||||
%
|
||||
% 实测:把 dept 填成
|
||||
% 把 dept 填成
|
||||
% 计算机科学与技术学院(人工智能与大数据技术方向实验班)
|
||||
% 后,pymupdf 读出
|
||||
% 后,读取
|
||||
% 开课学院:(70.87~123.37) 值:(123.37~406.87)
|
||||
% 而第二格「课程名称」本该从 216.0 开始 ⇒ **重叠 190.87bp**,
|
||||
% 把「课程名称 / 试卷类型」整个压住。
|
||||
@@ -336,7 +335,7 @@
|
||||
\vspace*{10bp}
|
||||
\hrule height 1.2bp
|
||||
\vspace*{8bp}
|
||||
% 每项一行(#22)。顺序按"读者关心程度"排:
|
||||
% 每项一行。顺序按"读者关心程度"排:
|
||||
% 先课程、后学院、再人与考试形式,最后分值。
|
||||
% 留空的自动跳过,所以实际行数随填写项变化。
|
||||
\ouckey@inforow{课程名称}{\ouckey@course}
|
||||
@@ -365,7 +364,6 @@
|
||||
% 分处两行,否则会看到「(1」在行末、「分)」在下一行,很难看。
|
||||
% 代价是「(X 分)」成了不可断的整体,极端行宽下会撑破版心。
|
||||
% ⇒ 这个代价接受,解决办法是在**源码的句子边界手动断行**,
|
||||
% 不是在这里放开可断。详见上面「#20 踩坑记录」一节。
|
||||
\newcommand{\pt}[1]{{\small(\TNR{#1}~分)}}
|
||||
\newcommand{\ptline}[2]{%
|
||||
\par\noindent #2\unskip\par\nobreak
|
||||
@@ -393,7 +391,7 @@
|
||||
\addvspace{5bp}}
|
||||
\newcommand{\keysectionfree}[3]{%
|
||||
\par\addvspace{10bp}%
|
||||
{\Sihao\heiti #1、#2(#3)\par}%
|
||||
{\Sihao\heiti #1、#2\par}%
|
||||
\addvspace{5bp}}
|
||||
|
||||
%======================================================================
|
||||
@@ -402,7 +400,7 @@
|
||||
% \objkeys[5]{...} → 每行 5 个
|
||||
% 答案串逗号分隔;题号自动递增。
|
||||
%
|
||||
% ★ 这个宏反复改过很多次,下面几条是实测结论,动之前先看清:
|
||||
% ★ 这个宏反复改过很多次,下面几条是实际结论,动之前先看清:
|
||||
%
|
||||
% 【不能用 \par 分行】
|
||||
% 在 \@for 循环体里写 "\hbox to \textwidth{...}\par\noindent",
|
||||
@@ -413,7 +411,7 @@
|
||||
% 【不能用 \unvbox + \prevdepth 思路】
|
||||
% \unvbox 执行完寄存器即被清空,紧跟的 \ifdim\ht...>0pt 恒为假;
|
||||
% 而且 \unvbox 后 TeX 把 \prevdepth 设成 -1000pt 抑制行间胶水,
|
||||
% 各行会叠在一起(实测间距只有一个行高)。
|
||||
% 各行会叠在一起(实际间距只有一个行高)。
|
||||
%
|
||||
% 【不能用 \makebox[<变宽>]】
|
||||
% 在 \@for 循环里 \makebox[\dimexpr\textwidth/\perrow\relax] 或
|
||||
@@ -532,7 +530,6 @@
|
||||
\newcount\ouckey@sum
|
||||
\newcount\ouckey@cnt
|
||||
%----------------------------------------------------------------------
|
||||
% ★ 这里踩过三个坑,都记下:
|
||||
%
|
||||
% 坑1 \edef\head{\head&...} 自引用 → 无限展开,parameter stack 爆掉。
|
||||
% 坑2 \g@addto@macro / \toks 存 token 序列 → 存进去的是 \ouckey@cur
|
||||
|
||||
Reference in New Issue
Block a user