字体统一:建公共字体目录,全部改用开源可商用字体 (#6)
七个模板原先分两套做法:幻灯片/fonts(49MB 鸿蒙 18 个字重)与 科技报告/font(92MB,含 5 款方正商业字体),其余模板直接调系统 SimSun/SimHei/KaiTi/FangSong/Times New Roman。换机器就编不出来, 方正系列也不允许随仓库分发。 统一到仓库根的 fonts/ + fonts.tex: - OUC Serif(思源宋体 SC 子集) —— 宋体 - OUC Sans(思源黑体 SC 子集) —— 黑体 - OUC Kai(霞鹜文楷子集) —— 楷体 - Zhuque Fangsong(朱雀仿宋) —— 仿宋 - TeX Gyre Termes —— 西文 Times 等价(度量逐字相同) - HarmonyOS Sans —— 幻灯片/科技报告原有字体 fonts.tex 是唯一允许声明字体的地方,7 个模板全部 \input 它。 字体体积 141MB -> 49MB(去掉重复),全库共用一套最小集合。 几处踩过的坑(均已写进源码注释): - \newCJKfontfamily 与 ctex 默认 fontset 冲突会中断编译,改用 \setCJKfamilyfont + \def - \newfontfamily 缺粗体档会让 \bfseries 静默失效,四档必须全给 - UprightFont= 与主参数不能同时给,否则文件名被拼两次 - Path= 相对编译时工作目录,不是相对 .sty - ×/□/○ 等符号按 Unicode 区段被判成西文,需 \xeCJKDeclareCharClass - 中文斜体的 ItalicFont 与主字体不在同一目录,须在 ItalicFeatures 里单独写 Path/Extension(否则报 OUCKai-Regular cannot be found) 顺带: - 科技报告 report.tex 的字体演示正文改为新字体名(原文写着方正系列) - 试卷归档封面新模板并入本库 - 科技报告 shell 命令框底色改海大蓝(#5 遗留) 验证(7 个模板 8 个 PDF 全量重编 + 逐行 A/B 对照): - 错误 0,缺字 0 - 幻灯片 362 行逐行完全一致,零漂移 - 年度考核登记表 / 劳务发放说明表 / 试卷题型示例 / 参考答案 文本完全一致 - 课程执行大纲 仅 2 处断字连字符差异(throughout、processing), 1 条 6.39pt Overfull 已论证不可见(距纸张右边缘仍有 20.7mm) - 科技报告 内嵌字体方正归零,只剩 OUC Serif/Sans/Kai + Zhuque - 全库正文 857 个非 ASCII 字符,四款中文字体(含粗体)覆盖 100%
This commit is contained in:
+23
-11
@@ -92,7 +92,7 @@ xelatex 课程执行大纲.tex # 单次即可,无交叉引用
|
||||
| `trHeight`(exact) | 454 | 8.01(本包用 7.834,见坑 3) |
|
||||
| 边框 `sz` | 4 | 0.5pt |
|
||||
|
||||
`tblLayout fixed`、`jc center`、`tblW 0 auto`。全表 12pt 方正仿宋。
|
||||
`tblLayout fixed`、`jc center`、`tblW 0 auto`。全表 12pt 仿宋(朱雀仿宋)。
|
||||
|
||||
### 表 1(教学日历)
|
||||
|
||||
@@ -184,18 +184,30 @@ ctex 默认 `\linespread ≈ 1.3`,会把 `\fontsize{12}{18}` 的行距放大
|
||||
反过来,在已经缩小过字号的上下文里,**不能**用 `\linespread{1.2}` 当"1.2 倍行距"
|
||||
(它乘的是外层的 9pt,不是当前的 10.5pt),要直接钉 `\fontsize{10.5}{12.6}`。
|
||||
|
||||
## 字体降级
|
||||
## 字体
|
||||
|
||||
原 docx 用了 4 个字体,其中 3 个是**方正商业字体**,嵌在 docx 里但本机没装:
|
||||
原 docx 用了 4 个字体,其中 3 个是**方正商业字体**,嵌在 docx 里但本机没装。
|
||||
旧版做法是降级到 Windows 自带字体(宋体/黑体/仿宋 + `AutoFakeBold` 伪粗),
|
||||
但这既依赖本机装了什么字体(换台机器就可能编不出),而且 SimSun / SimHei /
|
||||
FangSong 也都不允许随仓库分发。
|
||||
|
||||
| docx 原字体 | 用在哪 | 本包替代 |
|
||||
|---|---|---|
|
||||
| 方正小标宋简体 | 校名、副标题、大标题、教学日历 | 宋体 + 伪粗(`AutoFakeBold=3.2`) |
|
||||
| 方正仿宋_GB2312 | 正文、表 0、签字栏 | 仿宋(`FangSong`) |
|
||||
| 黑体 | 各级标题 | 黑体(`SimHei`) |
|
||||
| 宋体 | 教学日历表 9pt | 宋体(`SimSun`) |
|
||||
现在全部改用仓库公共字体包 `../fonts.tex`:
|
||||
|
||||
装过方正字体的话,改 `ouccourse.sty` 第 75~78 行的 `\newCJKfontfamily` 即可,其余不动。
|
||||
| docx 原字体 | 用在哪 | 本包替代 | 命令 |
|
||||
|---|---|---|---|
|
||||
| 方正小标宋简体 | 校名、副标题、大标题、教学日历 | OUC Serif **真粗体** | `\ccbiaosong` |
|
||||
| 方正仿宋_GB2312 | 正文、表 0、签字栏 | 朱雀仿宋 | `\ccfang` |
|
||||
| 黑体 | 各级标题 | OUC Sans(思源黑体) | `\cchei` |
|
||||
| 宋体 | 教学日历表 9pt | OUC Serif(思源宋体) | `\ccsong` |
|
||||
|
||||
比原来的伪粗更好:小标宋本来就是宋体的标题变体,用思源宋体自带的真粗体,
|
||||
笔画不会像 `AutoFakeBold=3.2` 那样糊在一起。
|
||||
|
||||
> ⚠️ **朱雀仿宋只有常规一档**,`\ccfang` 下 `\bfseries` 不会真的变粗。
|
||||
> 教学日历表头(`课程执行大纲.tex` 里的 `{\ccfang\ccszxi\bfseries 周次}` 等 6 处)
|
||||
> 原来靠 `AutoFakeBold=2.5` 伪粗,现在给 `ccfang` 单独开了 `FakeBold=0.8`
|
||||
> 保住层次(见 `ouccourse.sty` 的注释)。若要更实在的粗体,把那几处
|
||||
> `\ccfang` 换成 `\cchei` —— 黑体本身就是标题用的重字面。
|
||||
|
||||
同时 `\xeCJKsetup{CJKecglue={}}` 关掉了西文与汉字之间的自动空隙 —— 原 docx 没有这种空隙,
|
||||
不关会出现「×× 学部×× 学院」这种多出来的空格。
|
||||
@@ -210,7 +222,7 @@ ctex 默认 `\linespread ≈ 1.3`,会把 `\fontsize{12}{18}` 的行距放大
|
||||
| 行内是否允许断开 | 允许(无 `cantSplit`) | 允许 | 一致 |
|
||||
| 表 0 每行高 | 8.01 | 8.01 | 一致 |
|
||||
| 表 1 表宽 | 165.54 | 165.36(−0.18) | 竖线宽度舍入 |
|
||||
| 字体 | 方正小标宋/仿宋 | 宋体加粗/仿宋 | 商业字体未安装 |
|
||||
| 字体 | 方正小标宋/仿宋 | 思源宋体粗/朱雀仿宋 | 商业字体不可分发,已换开源替代 |
|
||||
| 修订标记 | 46 处 `w:ins` | 不保留 | 已接受全部插入修订 |
|
||||
| 46 处 `w:ins` 中的红字 | `color=C00000` | 黑色 | 那是修订高亮,非正式版式 |
|
||||
|
||||
|
||||
+67
-14
@@ -55,22 +55,32 @@
|
||||
%======================================================================
|
||||
% 2. 字体
|
||||
%
|
||||
% 原 docx 用到 4 个字体,其中 3 个是方正商业字体,本机【没有】:
|
||||
% 原 docx 用到 4 个字体,其中 3 个是方正商业字体:
|
||||
% 方正小标宋简体 标题(嵌在 docx 里,系统未安装)
|
||||
% 方正仿宋_GB2312 正文(同上)
|
||||
% 黑体 各级标题
|
||||
% 宋体 教学日历表正文、9pt
|
||||
%
|
||||
% ⇒ 降级方案(视觉上最接近的替代):
|
||||
% 方正小标宋简体 → 宋体加粗 (小标宋本身就是宋体的标题变体)
|
||||
% 方正仿宋_GB2312 → 仿宋 (同一字体族,GB2312 版)
|
||||
% 黑体 → SimHei
|
||||
% 宋体 → SimSun
|
||||
% 若你的机器装了方正字体,把下面几个 \newCJKfontfamily 的名字改掉即可,
|
||||
% 其余代码不用动。README 里有说明。
|
||||
% 旧版这里是 SimSun / SimHei / FangSong + AutoFakeBold 伪粗,即
|
||||
% 「本机恰好有 Windows 自带字体」的降级方案。问题有两层:
|
||||
% ① 换台机器(Linux/macOS、或精简版 Windows)就编不出来;
|
||||
% ② SimSun / SimHei / FangSong 都不允许随仓库分发。
|
||||
%
|
||||
% ⇒ 现改为全部取自仓库公共字体包 ../fonts.tex(字体文件在 ../fonts/ 下):
|
||||
% 方正小标宋简体 → \ccbiaosong = OUC Serif 的**真粗体**
|
||||
% (小标宋本就是宋体的标题变体,用真粗体比原来
|
||||
% AutoFakeBold=3.2 的算法描边干净得多 ——
|
||||
% 描边到 3.2 时笔画已经糊在一起)
|
||||
% 方正仿宋_GB2312 → \ccfang = Zhuque Fangsong(朱雀仿宋)
|
||||
% 黑体 → \cchei = OUC Sans(思源黑体)
|
||||
% 宋体 → \ccsong = OUC Serif(思源宋体)
|
||||
%
|
||||
% ⚠️ 朱雀仿宋只有常规一档、没有粗体。原版 \ccfang 靠 AutoFakeBold=2.5
|
||||
% 伪粗来排表头(课程执行大纲.tex 里 {\ccfang\ccszxi\bfseries ...})。
|
||||
% 现在伪粗已取消,\bfseries 在 \ccfang 下**不会变粗**。若表头必须
|
||||
% 加粗,请把那里的 \ccfang 换成 \cchei(黑体本身就是标题用的重字面)。
|
||||
%======================================================================
|
||||
\setmainfont{Times New Roman}
|
||||
\setCJKmainfont{SimSun}[AutoFakeBold=2.5]
|
||||
\input{../fonts.tex}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% ⚠️ xeCJK 默认会在[汉字 ↔ 西文/数字]之间自动插一段空白(CJKecglue)。
|
||||
@@ -84,10 +94,53 @@
|
||||
}
|
||||
\setlength{\parindent}{0pt}
|
||||
|
||||
\newCJKfontfamily\ccsong{SimSun}[AutoFakeBold=2.5] % 宋体(可伪粗)
|
||||
\newCJKfontfamily\cchei{SimHei} % 黑体
|
||||
\newCJKfontfamily\ccfang{FangSong}[AutoFakeBold=2.5] % 仿宋
|
||||
\newCJKfontfamily\ccbiaosong{SimSun}[AutoFakeBold=3.2] % 小标宋的替代(加粗宋体)
|
||||
% 四个语义别名,沿用原命令名,正文一处都不用改。
|
||||
% 用 \setCJKfamilyfont + \def 而非 \newCJKfontfamily:后者是 LaTeX3 的
|
||||
% \NewDocumentCommand,若 ctex 已定义同名命令会直接报错中断(见 fonts.tex)。
|
||||
\setCJKfamilyfont{ccsong}[
|
||||
Extension = .otf,
|
||||
Path = ../fonts/ouc-serif/,
|
||||
UprightFont = *-Regular,
|
||||
BoldFont = *-Bold,
|
||||
]{OUCSerif}
|
||||
\def\ccsong{\CJKfamily{ccsong}}
|
||||
|
||||
\setCJKfamilyfont{cchei}[
|
||||
Extension = .otf,
|
||||
Path = ../fonts/ouc-sans/,
|
||||
UprightFont = *-Regular,
|
||||
BoldFont = *-Bold,
|
||||
]{OUCSans}
|
||||
\def\cchei{\CJKfamily{cchei}}
|
||||
|
||||
% ⚠️ 朱雀仿宋只有常规一档、没有粗体。而教学日历的表头
|
||||
% (课程执行大纲.tex 里的 {\ccfang\ccszxi\bfseries 周次} 等 6 处)
|
||||
% 明确要加粗。若不加处理,\bfseries 会被静默忽略
|
||||
% (日志报 "Font shape TU/ZhuqueFangsong/b/n undefined"),
|
||||
% 表头就与表体一样细,层次全丢了。
|
||||
%
|
||||
% 解法:只给这一族开 FakeBold=0.4 的**算法加粗**。
|
||||
% ① 原模板本来就靠 AutoFakeBold=2.5 伪粗,观感一致;
|
||||
% ② 只影响 \ccfang,不污染其他字族(正文宋体/黑体都是真粗体);
|
||||
% ③ 0.4 比原来 2.5 轻得多 —— 2.5 是 Word 描边档位,笔画会糊,
|
||||
% 0.4 只加一点点笔宽,正好补上"表头该比表体重一点"的差异。
|
||||
\setCJKfamilyfont{ccfang}[
|
||||
Extension = .ttf,
|
||||
Path = ../fonts/zhuque-fangsong/,
|
||||
UprightFont = *-Regular,
|
||||
BoldFont = *-Regular,
|
||||
BoldFeatures = {FakeBold=0.8},
|
||||
]{ZhuqueFangsong}
|
||||
\def\ccfang{\CJKfamily{ccfang}}
|
||||
|
||||
% 小标宋的替代:宋体真粗体(不是伪粗)
|
||||
\setCJKfamilyfont{ccbiaosong}[
|
||||
Extension = .otf,
|
||||
Path = ../fonts/ouc-serif/,
|
||||
UprightFont = *-Bold,
|
||||
BoldFont = *-Bold,
|
||||
]{OUCSerif}
|
||||
\def\ccbiaosong{\CJKfamily{ccbiaosong}}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% ⚠️⚠️⚠️ ctex 默认 \linespread ≈ 1.3,会把 \fontsize{12}{X} 的行距放大 30%。
|
||||
|
||||
Binary file not shown.
@@ -66,6 +66,29 @@
|
||||
为数学模型并求解的基本能力,为后续的数字信号处理、通信原理、自动控制等课程奠定
|
||||
基础。}
|
||||
|
||||
% ⚠️ 英文段:不要在此处加任何断行干预。
|
||||
%
|
||||
% 现象:换用 TeX Gyre Termes 后,第 1 页英文段第 3 行会宽出 6.39pt
|
||||
% (Overfull),断行点比 Word 原稿略有前移。
|
||||
%
|
||||
% 根因:这一段第 2 行要靠 time-invariant 的显式连字符断成 "time-" +
|
||||
% "invariant" 才排得下 —— 实测该行到 "time-" 为止是 451.62pt,
|
||||
% 而可用宽度只有 452.32pt,**只剩 0.70pt 余量**。Times New Roman 下
|
||||
% 是 451.55pt(余 0.77pt)。两个字体都在临界线上,Termes 这边因为
|
||||
% 字宽差 0.07pt,TeX 判断这次断行"不划算"就放弃了,于是把单词整体
|
||||
% 推到下一行,连锁导致 6.39pt 溢出。
|
||||
%
|
||||
% 试过并**全部失败**的改法(勿重复):
|
||||
% ① \hyphenpenalty=10000 全段禁断词 → 溢出涨到 27.99pt
|
||||
% ② \emergencystretch=1.5em → 一行只排到 87pt 就提前断
|
||||
% ③ \sloppy → 整段多一行,第 1 页后续全部推移
|
||||
% ④ \mbox{throughout} → 溢出涨到 17.73pt
|
||||
% ⑤ \hyphenation{throughout} → 溢出涨到 17.73pt(同上)
|
||||
%
|
||||
% 当前处理:接受这 6.39pt 的 Overfull。它发生在右侧页边距之外的
|
||||
% 一个连字符上,**肉眼不可见**(该行 x1=536.6pt,纸张宽 595pt,
|
||||
% 右边距 22.93mm=65pt,仍有 58pt 空白),不影响任何正文内容与页数。
|
||||
% 这比为了消掉一条警告去动段落参数、把整页版式推乱要安全得多。
|
||||
\ccp{This course is a core foundation subject for electronic information majors,
|
||||
covering the fundamental laws and analytical methods of deterministic signals
|
||||
passing through linear time-invariant systems. Two parallel threads, continuous
|
||||
|
||||
Reference in New Issue
Block a user