Files
ouc_latex_template/科技报告/README.md
T
laoyang 8aa979739a 字体统一:建公共字体目录,全部改用开源可商用字体 (#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%
2026-10-27 00:43:14 +08:00

85 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 中国海洋大学科技报告 LaTeX 模板
一个基于 `ctexart` 的科技报告模板,可用于撰写科技报告、实验讲义、教程、说明文档等。
> 本目录原为独立仓库 `ouc-report-latex-template`,2026-10 起并入 `ouc_latex_template` 统一维护,旧仓库不再更新。
## 特性
- **中英文字体一体化**:英文默认使用鸿蒙字体(HarmonyOS Sans),中文使用仓库公共字体包(宋体 / 宋体粗 / 楷体 / 仿宋 / 黑体),字体文件在仓库根 `../fonts/` 目录,编译时自动调用,**无须安装任何字体**;
- **模块化文档类**:`report.cls` 按功能拆分为 `cls/` 下的多个模块(全局设定、字体、页面布局、标题、页眉页脚、信息框、代码块等),便于按需修改;
- **三种信息框**:`titledbox`(带标题)、`notebox`(提示)、`importantbox`(重要),基于 tcolorbox 实现;
- **代码排版**:基于 listings 预设了多种样式,支持行内命令 `shellbox` / `invertedshellbox` 展示 shell 命令及输出;
- **自动水印**:默认以「单位 + 部门」作为全页水印,可在 `input/setting.tex` 中调整文字、透明度与大小;
- **图表与引用**:tabularx 表格、图片插入、自动编号与交叉引用、目录 / 图目录 / 表目录;
- **图标支持**:通过 fontawesome 可直接使用 `\faHeart` 等图标命令(详见根目录 `fontawesome.pdf`)。
## 环境要求
- **TeX 发行版**:TeX Live 2022 及以上(必须使用 **XeLaTeX** 编译);
- 无需额外安装字体或其他依赖,使用 `scheme-full` 或包含常用宏包的发行版即可。
## 使用方法
1. 本目录是 `ouc_latex_template` 仓库的 `科技报告/` 子目录,克隆主仓库即可:
```bash
git clone https://code.yangyq.net/laoyang/ouc_latex_template.git
cd ouc_latex_template/科技报告
```
2. 在 `input/info.tex` 中填写标题、副标题、作者、单位、部门等信息;
3. 在 `report.tex` 中撰写正文(或按 `\input` 方式组织章节文件);
4. 使用 XeLaTeX 编译**两遍**(第一遍生成目录与交叉引用信息,第二遍写入正文):
```bash
xelatex report.tex
xelatex report.tex
```
5. 临时切换字体可使用命令:`\fzss`(宋体)、`\fzxbs`(宋体粗)、`\fzkai`(楷体)、`\fzfs`(仿宋)、`\fzzdx`(黑体)、`\hm`(鸿蒙字体)。命令名沿用旧版(fz 取自原方正系列),实际用的是随仓库分发的开源字体,对应关系见 `cls/font.cls` 的注释。
## 署名与联系方式(二次分发前请修改)
模板里有两处「作者 / 联系方式」信息,**性质不同,别改错地方**:
| 想改什么 | 改哪个文件的哪里 | 说明 |
|---|---|---|
| **模板维护者**的联系方式 | `report.cls` 顶部的 `Maintainer:` 一行 | 目前是占位符 `someone@example.com`。它只出现在注释里,**不参与排版**,改成什么都不会影响编译结果 —— 你要把这份模板再分发出去,就换成你自己的。 |
| **报告本身**的作者 / 单位 / 部门 | `input/info.tex` 里的 `\theauthor`、`\theaffiliation`、`\thedept` | 会印在**封面**上;单位与部门还会成为全页**水印**(水印的文字、透明度、大小在 `input/setting.tex` 里调)。 |
> 也就是说:`report.cls` 顶部那行与你的报告内容无关;报告里显示的作者信息一律在 `input/info.tex`。
## TeX Live 版本兼容性
同一份源码在下列 TeX Live 版本下均可直接编译(XeLaTeX),**不需要切分支、不需要改代码**:
| TeX Live | 状态 |
|------|------|
| 2022 | 已验证通过(基线) |
| 2023 | 已验证通过 |
| 2024 | 已验证通过 |
| 2025 | 已验证通过 |
| 2026 | 已验证通过 |
> 本目录原为独立仓库 `ouc-report-latex-template`,曾按 TeX Live 年份维护多套分支。
> 2026-10 并入 `ouc_latex_template` 后**只保留 `main` 一份源码**(已实测各年份通用),
> 旧仓库的分支不再更新。
## 目录结构
```
.
├── report.cls # 文档类(模块化加载 cls/ 下各子模块)
├── cls/ # 功能模块:全局设定、字体、页面、标题、信息框、代码块等
├── input/ # 文档内容:封面、目录、摘要、信息与整体设置
├── figs/ # 图片资源
├── (字体在仓库根 fonts/) # 不再自备字体,详见 ../fonts/README.md
├── fontawesome.pdf # fontawesome 图标使用手册
└── report.tex # 主文件(XeLaTeX 编译入口)
```
## 关于 `report.pdf`
仓库内的 `report.pdf` 是成品样张,用于预览效果。封面的日期取自 `\today`,
所以**每次编译都会变**;用不同年份的 TeX Live 编译,PDF 体积也可能略有差异,
但**页面渲染内容一致**。以 `report.tex` 源码为准。