Windows 端本机编译失败,原因是 TeX Live 写字体缓存
(C:\texlive\2022\texmf-var)被安全策略拦截 —— 环境限制,不是模板问题。
模板只依赖 TeX Live 标准宏包与发行版自带字体;原教材本身就是在
Windows + TeX Live 2022 上编出来的。
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
新增《教材》LaTeX 模板(从 sre 教材抽取版式骨架)
用户诉求
原话:「D:\Yongquan\code\sre,这里面是一本教材,抽取出来,形成一个模板,
就叫教材吧。注意字体的共用性。」
关键约束:字体的共用性 —— 模板不能依赖商业字体,必须与其他模板共用
仓库的 fonts.tex。
源文件
D:\Yongquan\code\sre= 《软件需求工程导论》完整教材(13 章 + 5 附录,正文约 78 万字节,已编译出 2.2MB PDF)
elegantbook(51851 字节,随仓库自带)Introduction_to_Software_Requirements_Engineering.texreference.bib(41KB)+ biblateximage/、case-library/核心问题:字体不通用
elegantbook 的
chinesefont选项只有三种,全都不可跨机器用:founder(默认)ctexfontnofontelegantbook.cls 第 196~206 行的方正分支:
解决方案
用
chinesefont=nofont选项,再\input{../fonts.tex}接入仓库公共字体。⚠️ 但
nofont分支里 elegantbook 会执行\xeCJKsetup{AutoFakeBold=true},而 fonts.tex 已提供真粗体,这个自动描边必须关掉,否则粗体糊。
要抽取的版式要素
1. 文档类骨架
\frontmatter/\mainmatter/\appendix的分节2. 标题层级(主文件自定义)
⚠️ 这段逻辑很实用,必须保留。
3. 封面色彩
4. 章节结构模式
每章:
\chapter{标题}→ 导语(3~5 段,概述本章内容)→
\section正文 →\section{本章小结}→\section{习题}5. 必需宏包
6. 参考文献
biblatex +
\addbibresource[location=local]{reference.bib}\printbibliography[heading=bibintoc, title=\ebibname]实现方案
目录
教材/:ouctextbook.sty—— 版式包(封装 elegantbook 配置 + 公共字体接入)教材.tex—— 示例(1 章骨架 + 附录 + 参考文献,正文为占位内容)README.md—— 用法 + 字体说明字体接入方式(关键)
⚠️ 要实测
\input{../fonts.tex}与 elegantbook 的加载顺序是否冲突。fonts.tex 里有
\RequirePackage{fontspec}和\RequirePackage{xeCJK},elegantbook 也加载了这两个,需要确认不重复报错(fontspec/xeCJK 本身
可重复加载,但要验证)。
不抽取的内容
case-library/、image/、cover.jpg—— 示例图用占位reference.bib—— 示例给 2~3 条假条目验收标准
xelatex编译通过,error 0../fonts/ouc-serif/ 等目录下的字体)
不做
已完成,提交
a4bfcac源文件
D:\Yongquan\code\sre= 《软件需求工程导论》完整教材(13 章 + 5 附录,78 万字节,265 页 PDF,elegantbook 文档类)
新增
教材/关于「字体的共用性」
原教材用
chinesefont=founder,加载方正四大字体(FZShuSong-Z01 / FZHei-B01 / FZKai-Z03 / FZFangSong-Z02)。
商业字体,不能随仓库分发(#17 的规矩),这是必须解决的问题。
elegantbook 三档中文字体全都不通用:
founderctexfontnofont但只写
nofont还不够 —— cls 自身第 176/184 行还硬编码了这两款在精简 TeX Live 上都没有,报 9 个错误连发:
我实测过:在
\documentclass之后用\setsansfont覆盖无效,因为类加载时字体族已注册失败,后面的重新指定救不回来。
⇒ 所以本模板必须带一份本地化的 cls,改三处(都留了「本地化」注释):
TeXGyreTermesX→texgyretermes+Path=../fonts/tex-gyre-termes/texgyreheros→OUCSans+Path=../fonts/ouc-sans/\maketitleexample-image→\ouc@coverblank这是本模板与仓库其他模板的唯一结构性差异:别的模板只要
\input{../fonts.tex},本模板还要那份改过字体的 cls。三个坑
① 封面不写
\cover{}会插一张 "Image" 占位图cls 里
\else \includegraphics[width=\linewidth]{example-image},是 mwe 宏包的灰底占位图。首页顶着「Image」两个大字。已换成空盒子。
② 占位盒宽度不能是 0 —— 这个坑耗了最久
第一版写
\rule{0pt}{0pt}(0 宽),立刻冒出:以下全部试过,全部无效,溢出量死钉在 5.00002pt 不动:
\hspace{2em}/\hspace{2.5em}0.67/0.27\textwidth@{}l@{}\colorbox的\makebox[\hsize]根因:0 宽空盒让
\linewidth在 titlepage 里与\textwidth差 5pt,后续并排的
\parbox{0.8\textwidth}+ 两个 minipage 整体超宽。✅ 正解是给占位盒满宽:
实测 0 Overfull。
③ 封面色带改不动
cls 第 345 行
\colorlet{coverlinecolor}{second}在类加载末尾执行,把颜色绑到 second 色(
black模式下就是黑)。导言区写
\colorlet会被它覆盖 —— 实测色带仍是纯黑。必须用
\AtBeginDocument排到它后面。build.sh 补了 bibtex 支持
原来只跑两遍 xelatex,教材的参考文献出不来。新增:目录下有
.bib(排除
*-blx.bib中间产物)就插一次 bibtex,再补一遍 xelatex。验证
字体(PDF 内嵌实测,全部来自仓库):
无方正、无 SimSun/SimHei、无 Times New Roman。
全库 16/16 通过(新增第 16 项,已加入
verify_all.sh)。⚠️ 一处未能验证
Windows 端本机编译失败,原因是 TeX Live 写字体缓存
(
C:\texlive\2022\texmf-var)被安全策略拦截 —— 环境限制,不是模板问题。模板只依赖 TeX Live 标准宏包与发行版自带字体;原教材本身就是在
Windows + TeX Live 2022 上编出来的。
版式参数
第 5 级的特殊处理和「本章小结 / 习题」的固定收尾都做成了命令
(
\oucsummary、\oucexercises),避免各章写法不一致。