Verzeichnis macros/latex2e/contrib/jouthesis/doc
项目简介
本项目依据《江苏海洋大学2026届毕业实习与设计(论文)工作手册》整理出一套可编译、可测试、可跨平台复现的 LaTeX 模板。
当前仓库包含:
- 1 份论文主模板
main.tex - 18 份工作手册配套模板
- 1 套基于 WPS 导出 PDF 的 E2E 对齐测试
- 1 套内置开源字体方案,保证 Linux、macOS、Windows 一致编译
- 1 套三系统 CI 矩阵,持续校验 Windows / macOS / Linux 的论文构建与字体契约
项目的默认字体策略现在收敛为“学术规范四字体优先”:
楷体_GB2312宋体黑体Times New Roman
仓库通过 fonts/opensource/ 提供可再分发的开源兜底字体,并允许在 fonts/proprietary/ 中放入用户自备、已获授权的标准字体文件。WPS 字体仍被支持,但只作为兼容兜底,不再作为默认优先路径。
核心特性
学术规范优先:封面和正文优先命中楷体_GB2312 / 宋体 / 黑体 / Times New Roman,更适合真实论文写作与交付。手册基线校验:以工作手册导出 PDF 为基线,校验分页锚点、表格网格、页面方向和产物页数。跨平台一致编译:默认使用仓库内置字体,不要求用户先手动安装楷体_GB2312、仿宋_GB2312或Times New Roman。模板全量覆盖:论文正文之外,补齐了手册中的 18 份表单/报告/评分模板。可选标准字体覆盖:若本机已有合法字体授权,可把字体文件放入fonts/proprietary/,模板会自动优先使用。E2E 可执行标准:源码契约、PDF 产物、论文专项检查都写进测试,不再靠人工口头确认。
预览
README 的展示面按“先看质感,再看完整度,再看覆盖面”来组织。所有预览图都可通过 make readme-images 重新生成。
论文封面:参考样页 vs 当前模板

论文主模板画廊
下面这张图展示当前模板的核心论文页面:封面、中文摘要、英文摘要、目录、正文首页、参考文献。
关键版式细节:摘要与正文对比
README 不只放“成品图”,也保留关键页的横向对比,方便快速判断版式是否贴近手册。正文这里使用独立的 body-sample.pdf 与手册样页做一对一对比,避免拿真实论文内容去硬比手册说明页。 摘要对比图使用“标题 + 外框 + 摘要正文”的内容区裁剪,不把手册页底部的说明性注释一起放进 README 演示图。

配套表单画廊
下图展示 6 个代表性配套模板:选题审题表、任务书、开题报告(理工农医类)、中期检查表、评语表、答辩记录。
技术验证产物
用于排查残余字体或几何偏差的 overlay / diff / checker 产物保留在 docs/assets/,可通过 make cover-diff 重生成,不作为 README 首屏展示图。
docs/assets/thesis-cover-overlay-focus.pngdocs/assets/thesis-cover-diff-focus.pngdocs/assets/thesis-cover-checker-focus.png
模板清单
论文正文
| 文档 | 文件 |
|---|---|
| 毕业设计(论文)说明书 | main.tex |
配套模板(18 个)
| 类别 | 数量 | 文件 |
|---|---|---|
| 表格类 | 10 | preliminary-materials-cover.tex、topic-selection.tex、internship-registration.tex、task-book-science.tex、task-book-humanities.tex、proposal-defense-record.tex、midterm-check.tex、defense-record.tex、topic-summary.tex、handbook-statistics.tex |
| 报告类 | 5 | internship-diary.tex、internship-report.tex、proposal-science.tex、proposal-humanities.tex、translation.tex |
| 评价类 | 3 | thesis-evaluation.tex、grading-science.tex、grading-humanities.tex |
更多说明见 templates/README.md。
快速开始
环境要求
- TeX 发行版:TeX Live 2020+ 或 MikTeX 2.9+
- 编译器:
xelatex - 测试工具:
pdfinfo、pdftotext、pdffonts(Poppler) - Python:3.9+
安装 TeX 环境
macOS
brew install --cask mactex brew install poppler
Windows
- 安装 TeX Live 或 MikTeX
- 安装 Poppler for Windows
Linux
# Ubuntu / Debian
sudo apt-get install texlive-xetex texlive-lang-chinese poppler-utils
下载仓库字体
make fonts
该命令会拉取仓库默认使用的开源字体到 fonts/opensource/。这是默认编译模式,不需要额外安装系统字体。
编译论文
make
或手动执行:
python3 scripts/download_fonts.py latexmk -xelatex main.tex
编译单个表单
cd templates/forms
latexmk -xelatex topic-selection.tex
运行测试
make test
生成 README 预览图
make readme-images
等价于:
python3 tests/test_pixel_perfect_alignment.py python3 tests/test_thesis_alignment.py
字体策略
毕业论文优先使用标准学术字体,模板自动按以下优先级加载:
字体加载优先级
- 📁 本地标准字体 (
fonts/proprietary/)- 手动放入的正式字体文件
- 最适合最终提交与本机高保真交付
- 💻 系统标准学术字体
- Windows: 直接探测
C:/Windows/Fonts中的times/simsun/simhei/simkai/simfang - macOS: 优先探测系统
STSong/STHeiti/STKaiti/STFangsong - Linux: 优先探测系统已安装的
Times New Roman / SimSun / SimHei / KaiTi / FangSong
- Windows: 直接探测
- 🧩 WPS 兼容字体
- 仅在标准学术字体不完整时使用
- 包括 WPS 安装目录和系统中的
HY... / FZ...字体
- 🆓 开源字体兜底 (
fonts/opensource/)- 仅在前三者都不可用时使用
- Tinos, Noto CJK, LXGW WenKai, FandolFang
检查字体状态
python3 scripts/check_fonts.py
该脚本会自动检测你的系统字体配置,并给出改进建议。
对 Windows 用户,脚本会额外检查:
C:/Windows/FontsProgram Files/Program Files (x86)下的 WPS 安装目录LOCALAPPDATA下的 WPS 字体目录
若客户机器使用了非标准安装路径,可使用 styles/joufontspaths.local.example.tex 定义本地覆盖文件。
编译输出示例
有标准学术字体时(最佳):
=============================================== Font Mode: system-licensed Status: Using system academic standard fonts (Excellent) ===============================================
无标准字体时(开源字体 fallback):
===============================================
Font Mode: oss
Status: Using open source academic fallback fonts (Preview)
===============================================
TIP: For best academic output, prefer KaiTi_GB2312,
SimSun, SimHei, and Times New Roman.
Check: python3 scripts/check_fonts.py
模板会自动选择最佳可用字体,开源字体完全可用于日常预览和开发。
最终提交检查(可选):
如需确保使用标准正式字体,可启用严格模式:
\documentclass[strictfonts]{jouthesis} % 最终提交前检查
字体映射表
| 学术标准字体 | 优先使用 | 开源兜底 |
|---|---|---|
| Times New Roman | 系统 / 本地 Times New Roman | Tinos |
| Courier New | 系统 / 本地 Courier New | Courier Prime |
| 宋体 | SimSun / STSong | Noto Serif CJK SC |
| 黑体 | SimHei / STHeiti | Noto Sans CJK SC |
| 楷体 / 楷体GB2312 | KaiTiGB2312 / KaiTi / STKaiti | LXGW WenKai GB |
| 仿宋 / 仿宋GB2312 | FangSong / STFangsong | FandolFang |
| 方正小标宋简体 | FZXiaoBiaoSong-B05 | Noto Serif CJK SC Black |
| 华文行楷 | STXingkai | LXGW WenKai GB Medium |
注意:仓库不会分发商业字体文件。完整说明见 fonts/README.md。
质量保证
tests/test_pixel_perfect_alignment.py
校验工作手册模板的基线契约:
- 参考
docx/pdf是否存在 - 18 个模板的
tex/pdf是否完整 - LaTeX 表格列宽与 Word XML 表格网格是否一致
- 产物 PDF 的页数、方向、分页锚点是否匹配
- 字体资源和嵌入字体是否符合仓库约定
tests/test_thesis_alignment.py
专项校验论文主模板:
- 封面、声明、摘要、目录、正文、参考文献等关键页顺序
- 目录和正文标题体例
- 页眉关键字与分页关系
- 嵌入字体是否符合当前字体模式
项目结构
JOU-Undergraduate-Thesis-LaTeX-Template/ ├── main.tex ├── Makefile ├── contents/ ├── docs/ ├── figures/ ├── fonts/ │ ├── opensource/ │ └── proprietary/ ├── references/ ├── scripts/ ├── styles/ │ ├── joufonts.sty │ ├── jouhandbook.sty │ └── jouthesis.cls ├── templates/ └── tests/
常见问题
编译时报“字体未找到”
先执行 make fonts。默认模式不要求系统预装标准正式字体。
想用本机的方正或微软字体
把字体文件放入 fonts/proprietary/,文件名需与 fonts/README.md 中的约定一致。
为什么 README 不再直接承诺“绝对像素级一致”
当前仓库对齐标准已经写进 E2E,但公开可复现的是“WPS 渲染基线 + 版式/分页/字体契约”。如果你要进一步做逐像素叠图,需要在同一字体资源和同一渲染器环境下再增加图像 diff 流程。
文档
| 文件 | 内容 |
|---|---|
| docs/README.md | 文档索引 |
| docs/guides/usage.md | 论文正文使用说明 |
| docs/guides/table-examples.md | 表格示例 |
| docs/guides/assets.md | 图片资源说明 |
| templates/README.md | 配套模板说明 |
| fonts/README.md | 字体策略与覆盖方式 |
| slides/README.md | 演示文稿生成说明 |
开源许可
项目代码采用 LaTeX Project Public License v1.3c。
仓库中的开源字体分别遵循其各自许可证,许可证副本位于 fonts/opensource/licenses/。