科技报告配色统一:全部改用幻灯片同一套海大标准色 #5

Closed
opened 2026-10-26 14:48:40 +00:00 by laoyang · 1 comment
Owner

现象 / 诉求

科技报告模板(科技报告/)里的配色跟幻灯片模板(幻灯片/)不是一套。同一个学校、同一个项目的两个模板,"蓝"和"红"看起来不一样,放在一起明显不协调。

要求:文档中用到的颜色,除代码高亮的语义色外,一律从海大蓝、海大红等幻灯片里已有的标准色中选,保持两个模板配色完全一致。

改前的实际问题

排查后发现,科技报告用的是 xcolor 自带的通用色,与海大无关:

位置 改前用的色 性质
boxes.cls notebox NavyBlue(#000080 海军蓝) LaTeX 通用色
boxes.cls importantbox Orange(#FFA500) LaTeX 通用色
code.cls 关键字 rgb(0,0,1) 纯蓝 硬写 RGB
code.cls 注释 rgb(0,0.5,0) 纯绿 硬写 RGB
code.cls 字符串 rgb(0.64,0.08,0.08) 暗红 硬写 RGB
code.cls 类型 rgb(0.17,0.57,0.68) 青 硬写 RGB
code.cls bash 块 NavyBlue!10!white LaTeX 通用色
code.cls 代码标题 violet 紫 LaTeX 通用色
code.cls 行号 gray 灰阶
setting.tex 水印 纯灰 Lightness 0.95 灰阶

方案:单一配色入口

新建 cls/color.cls,所有颜色集中定义在这里,其他文件一律不许出现 RGB 值或直接色名,只引用语义别名。这样将来调色只改一处。

report.cls 里的引入顺序必须靠前(boxes.cls / code.cls 都要用这里定义的颜色):

\input{cls/global.cls}%全局设定
\input{cls/color.cls}%海大标准色(必须在 boxes/code 之前)

10 个基色(与 幻灯片/theme/beamercolorthemeOUCSlide.sty 逐值相同)

色名 值 用途
oucblue 海大蓝 #004098 主色
ouclightblue 海大天蓝 #00A0E9 次色
oucred 海大红 #C81528 警示、强调
ouccherry 樱缤粉 #F9D2D4 浅底、点缀
oucbrown 文脉棕 #794F2F 沉稳,少用
oucgolden 专金 #CCAD69 正式
oucsilver 专银 #CFD0D0 分隔线、外框
oucpine 苍松绿 #1E5640 补充第三色
oucdusk 暮山紫 #5C3A76 补充第三色
oucamber 琥珀橙 #C45210 补充第三色

语义词别名

按语义引用,而不是按色名——将来"笔记框"想从海大蓝换成苍松绿,只改一行:

oucprimary / oucaccent / oucinfo / oucalert / ouccaption / oucrule / ouclink / oucmuted

代码配色的处理(用户明确允许的例外)

代码高亮的语义色(关键字 / 注释 / 字符串 / 类型)必须彼此区分得开,全部套同一个海大色会看不清。所以做法是从标准色派生,不另造一套:

  • 关键字 → 海大蓝 注释 → 苍松绿 字符串 → 海大红 类型 → 海大天蓝
  • 边框 → 专银 底色 → 极浅中性 #F7F8FA(唯一非海大色,仅作纸白微差)

有意保持中性的两处

  • shellbox / invertedshellbox:终端反白块语义上就该是黑底,换成蓝会变成"强调块",反而抢正文注意力。保持黑。
  • 页眉线:彩色页眉线会跟正文的海大蓝标题抢视觉层级。保持 0.5pt 黑,注释里留了改用 oucrule 的写法。

验收标准

  • 编译零错误,页数仍为 10 页
  • Overfull 0,Underfull 保持既有的 2 条(非本次引入)
  • PDF 逐 span 提取文字色:只剩 #004098 / #C81528 / #000000,无 NavyBlue / Orange / violet 残留
  • PDF 矢量填充与描边色:全部落在 #004098 / #C81528 / #CFD0D0 / #F7F8FA 内
  • 版式零变化:文字位置与改前逐页一致

为什么单独建单

#4 只涉及封面图元素(logo 尺寸与定位),本单只涉及配色定义(cls/color.cls 与各 cls 的颜色引用),改动文件不重叠、可各自独立验收

## 现象 / 诉求 科技报告模板(`科技报告/`)里的配色跟幻灯片模板(`幻灯片/`)**不是一套**。同一个学校、同一个项目的两个模板,"蓝"和"红"看起来不一样,放在一起明显不协调。 要求:文档中用到的颜色,**除代码高亮的语义色外**,一律从海大蓝、海大红等幻灯片里已有的标准色中选,保持两个模板配色完全一致。 ## 改前的实际问题 排查后发现,科技报告用的是 xcolor 自带的通用色,与海大无关: | 位置 | 改前用的色 | 性质 | |---|---|---| | `boxes.cls` notebox | `NavyBlue`(#000080 海军蓝) | LaTeX 通用色 | | `boxes.cls` importantbox | `Orange`(#FFA500) | LaTeX 通用色 | | `code.cls` 关键字 | `rgb(0,0,1)` 纯蓝 | 硬写 RGB | | `code.cls` 注释 | `rgb(0,0.5,0)` 纯绿 | 硬写 RGB | | `code.cls` 字符串 | `rgb(0.64,0.08,0.08)` 暗红 | 硬写 RGB | | `code.cls` 类型 | `rgb(0.17,0.57,0.68)` 青 | 硬写 RGB | | `code.cls` bash 块 | `NavyBlue!10!white` | LaTeX 通用色 | | `code.cls` 代码标题 | `violet` 紫 | LaTeX 通用色 | | `code.cls` 行号 | `gray` | 灰阶 | | `setting.tex` 水印 | 纯灰 Lightness 0.95 | 灰阶 | ## 方案:单一配色入口 新建 `cls/color.cls`,所有颜色集中定义在这里,**其他文件一律不许出现 RGB 值或直接色名**,只引用语义别名。这样将来调色只改一处。 `report.cls` 里的引入顺序必须靠前(`boxes.cls` / `code.cls` 都要用这里定义的颜色): ```latex \input{cls/global.cls}%全局设定 \input{cls/color.cls}%海大标准色(必须在 boxes/code 之前) ``` ### 10 个基色(与 `幻灯片/theme/beamercolorthemeOUCSlide.sty` 逐值相同) | 色名 | 值 | 用途 | |---|---|---| | `oucblue` 海大蓝 | #004098 | 主色 | | `ouclightblue` 海大天蓝 | #00A0E9 | 次色 | | `oucred` 海大红 | #C81528 | 警示、强调 | | `ouccherry` 樱缤粉 | #F9D2D4 | 浅底、点缀 | | `oucbrown` 文脉棕 | #794F2F | 沉稳,少用 | | `oucgolden` 专金 | #CCAD69 | 正式 | | `oucsilver` 专银 | #CFD0D0 | 分隔线、外框 | | `oucpine` 苍松绿 | #1E5640 | 补充第三色 | | `oucdusk` 暮山紫 | #5C3A76 | 补充第三色 | | `oucamber` 琥珀橙 | #C45210 | 补充第三色 | ### 语义词别名 按语义引用,而不是按色名——将来"笔记框"想从海大蓝换成苍松绿,只改一行: `oucprimary` / `oucaccent` / `oucinfo` / `oucalert` / `ouccaption` / `oucrule` / `ouclink` / `oucmuted` ### 代码配色的处理(用户明确允许的例外) 代码高亮的语义色(关键字 / 注释 / 字符串 / 类型)必须彼此区分得开,全部套同一个海大色会看不清。所以做法是**从标准色派生**,不另造一套: - 关键字 → 海大蓝 注释 → 苍松绿 字符串 → 海大红 类型 → 海大天蓝 - 边框 → 专银 底色 → 极浅中性 #F7F8FA(唯一非海大色,仅作纸白微差) ### 有意保持中性的两处 - `shellbox` / `invertedshellbox`:终端反白块语义上就该是黑底,换成蓝会变成"强调块",反而抢正文注意力。**保持黑。** - 页眉线:彩色页眉线会跟正文的海大蓝标题抢视觉层级。**保持 0.5pt 黑**,注释里留了改用 `oucrule` 的写法。 ## 验收标准 - [x] 编译零错误,页数仍为 10 页 - [x] Overfull 0,Underfull 保持既有的 2 条(非本次引入) - [x] PDF 逐 span 提取文字色:只剩 `#004098` / `#C81528` / `#000000`,无 NavyBlue / Orange / violet 残留 - [x] PDF 矢量填充与描边色:全部落在 `#004098` / `#C81528` / `#CFD0D0` / `#F7F8FA` 内 - [x] 版式零变化:文字位置与改前逐页一致 --- ### 为什么单独建单 #4 只涉及封面图元素(logo 尺寸与定位),本单只涉及配色定义(cls/color.cls 与各 cls 的颜色引用),改动文件不重叠、可各自独立验收
Author
Owner

完成情况

配色已统一并推送(提交 c69f446)。

改法:单一配色入口

新建 科技报告/cls/color.cls,所有颜色集中定义在这里,其他文件一律不许出现
RGB 值或直接色名,只引用语义别名。以后调色只改一处。

report.cls 里的引入顺序已调整到 boxes.cls / code.cls 之前(那两者要用这里的颜色)。

10 个基色与幻灯片逐值相同

色名 值
oucblue 海大蓝 #004098
ouclightblue 海大天蓝 #00A0E9
oucred 海大红 #C81528
ouccherry 樱缤粉 #F9D2D4
oucbrown 文脉棕 #794F2F
oucgolden 专金 #CCAD69
oucsilver 专银 #CFD0D0
oucpine 苍松绿 #1E5640
oucdusk 暮山紫 #5C3A76
oucamber 琥珀橙 #C45210

含 8 个语义词别名,正文与各 cls 按语义引用(oucinfo / oucalert 等),不写色名。

逐处改动

位置 改前 改后
notebox NavyBlue #000080 海大蓝 #004098
importantbox Orange #FFA500 海大红 #C81528
代码关键字 rgb(0,0,1) 纯蓝 海大蓝
代码注释 rgb(0,0.5,0) 纯绿 苍松绿
代码字符串 rgb(.64,.08,.08) 暗红 海大红
代码类型 rgb(.17,.57,.68) 青 海大天蓝
bash 块 NavyBlue!10 海大蓝 10% + 实线边
代码标题 violet 紫 海大蓝(与图题一致)
行号 / 输出块 gray / black!10 专银 / 极浅中性
链接色 硬写 black ouclink(语义别名)
水印 纯灰 Lightness 0.95 海大蓝 4%

刻意保留的两处中性色(已在代码注释里写明理由)

  1. shellbox / invertedshellbox 保持黑底
    终端反白块的语义就是「黑底终端」。换成海大蓝会让它变成"强调块",
    跟 notebox 撞语义,反而抢正文注意力。
  2. 页眉线保持 0.5pt 黑
    彩色页眉线会跟正文的海大蓝标题抢视觉层级。注释里留了改用 oucrule 的写法,
    想开随时打开。

验证

从远端全新克隆后编译(6 个模板全测):

试卷/参考答案与评分标准示例.tex   错误=0   3页
试卷/试卷题型示例.tex             错误=0   6页
年度考核登记表/年度考核登记表.tex  错误=0   2页
劳务发放说明表/劳务发放说明表.tex  错误=0   1页
课程执行大纲/课程执行大纲.tex      错误=0   5页
幻灯片/slides.tex                 错误=0   30页
科技报告/report.tex               错误=0   10页   Overfull=0

PDF 逐 span 提取实际渲染色:

文字色:{'#000000': 1013, '#004098': 29, '#C81528': 18, '#FFFFFF': 1, '#F5F7FB': 10}
非标准色残留:无

改前存在的 NavyBlue / Orange / violet / 硬写 RGB 已全部消失,
矢量填充与描边色也全部落在 #004098 / #C81528 / #CFD0D0 / #F7F8FA 内。

页数、文字位置与改前完全一致,版式零变化。

## 完成情况 配色已统一并推送(提交 `c69f446`)。 ### 改法:单一配色入口 新建 `科技报告/cls/color.cls`,**所有颜色集中定义在这里**,其他文件一律不许出现 RGB 值或直接色名,只引用语义别名。以后调色只改一处。 `report.cls` 里的引入顺序已调整到 `boxes.cls` / `code.cls` 之前(那两者要用这里的颜色)。 ### 10 个基色与幻灯片逐值相同 | 色名 | 值 | |---|---| | oucblue 海大蓝 | #004098 | | ouclightblue 海大天蓝 | #00A0E9 | | oucred 海大红 | #C81528 | | ouccherry 樱缤粉 | #F9D2D4 | | oucbrown 文脉棕 | #794F2F | | oucgolden 专金 | #CCAD69 | | oucsilver 专银 | #CFD0D0 | | oucpine 苍松绿 | #1E5640 | | oucdusk 暮山紫 | #5C3A76 | | oucamber 琥珀橙 | #C45210 | 含 8 个语义词别名,正文与各 cls 按语义引用(`oucinfo` / `oucalert` 等),不写色名。 ### 逐处改动 | 位置 | 改前 | 改后 | |---|---|---| | notebox | NavyBlue #000080 | 海大蓝 #004098 | | importantbox | Orange #FFA500 | 海大红 #C81528 | | 代码关键字 | rgb(0,0,1) 纯蓝 | 海大蓝 | | 代码注释 | rgb(0,0.5,0) 纯绿 | 苍松绿 | | 代码字符串 | rgb(.64,.08,.08) 暗红 | 海大红 | | 代码类型 | rgb(.17,.57,.68) 青 | 海大天蓝 | | bash 块 | NavyBlue!10 | 海大蓝 10% + 实线边 | | 代码标题 | violet 紫 | 海大蓝(与图题一致)| | 行号 / 输出块 | gray / black!10 | 专银 / 极浅中性 | | 链接色 | 硬写 black | ouclink(语义别名)| | 水印 | 纯灰 Lightness 0.95 | 海大蓝 4% | ### 刻意保留的两处中性色(已在代码注释里写明理由) 1. **`shellbox` / `invertedshellbox` 保持黑底** 终端反白块的语义就是「黑底终端」。换成海大蓝会让它变成"强调块", 跟 notebox 撞语义,反而抢正文注意力。 2. **页眉线保持 0.5pt 黑** 彩色页眉线会跟正文的海大蓝标题抢视觉层级。注释里留了改用 `oucrule` 的写法, 想开随时打开。 ### 验证 从远端全新克隆后编译(6 个模板全测): ``` 试卷/参考答案与评分标准示例.tex 错误=0 3页 试卷/试卷题型示例.tex 错误=0 6页 年度考核登记表/年度考核登记表.tex 错误=0 2页 劳务发放说明表/劳务发放说明表.tex 错误=0 1页 课程执行大纲/课程执行大纲.tex 错误=0 5页 幻灯片/slides.tex 错误=0 30页 科技报告/report.tex 错误=0 10页 Overfull=0 ``` PDF 逐 span 提取实际渲染色: ``` 文字色:{'#000000': 1013, '#004098': 29, '#C81528': 18, '#FFFFFF': 1, '#F5F7FB': 10} 非标准色残留:无 ``` 改前存在的 `NavyBlue` / `Orange` / `violet` / 硬写 RGB 已全部消失, 矢量填充与描边色也全部落在 `#004098` / `#C81528` / `#CFD0D0` / `#F7F8FA` 内。 页数、文字位置与改前完全一致,版式零变化。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/ouc_latex_template#5