科技报告配色统一为幻灯片同一套海大标准色 #5

改前用的是 xcolor 通用色,跟海大无关:notebox 用 NavyBlue、importantbox
用 Orange、代码关键字纯蓝 rgb(0,0,1)、注释纯绿、代码标题 violet、水印纯灰。
同一个学校两个模板的「蓝」和「红」不是一回事。

新增 cls/color.cls 作为唯一配色入口:
- 10 个基色与 幻灯片/theme/beamercolorthemeOUCSlide.sty 逐值相同
  (前 7 个是官方 2021 版 VI 标准色,后 3 个是幻灯片补充的第三色)
- 8 个语义词别名(oucprimary / oucaccent / oucinfo / oucalert /
  ouccaption / oucrule / ouclink / oucmuted),按语义引用而非色名,
  将来调色只改一行
- 代码配色从标准色派生:关键字→海大蓝、注释→苍松绿、
  字符串→海大红、类型→海大天蓝、边框→专银

各文件改为引用语义色,不再硬写 RGB:
- boxes.cls:notebox NavyBlue→oucinfo,importantbox Orange→oucalert
- code.cls:删掉本地 5 个 definecolor;bashstyle NavyBlue→oucblue;
  bashoutputstyle black!10→codecolorbg + 专银线;行号 gray→oucmuted;
  代码标题 violet→ouccaption
- hyperref.cls:硬写 black→ouclink
- setting.tex:水印纯灰→海大蓝 4%(原 Lightness 会强制切 gray 模型覆盖颜色,已去掉)
- report.cls:加 \input{cls/color.cls},必须有在 boxes/code 之前

有意保持中性的两处(已在注释里说明理由):
- shellbox / invertedshellbox:终端反白块语义就该是黑底,
  换成蓝会变成「强调块」抢正文注意力
- 页眉线:彩色页眉线会跟正文海大蓝标题抢视觉层级,仍 0.5pt 黑

验证:错误 0,10 页,Overfull 0,Underfull 保持既有 2 条;
PDF 逐 span 提取文字色只剩 #004098 / #C81528 / #000000,
矢量填充与描边全部落在标准色内,无 NavyBlue / Orange / violet 残留。
This commit is contained in:
2026-10-26 22:50:19 +08:00
parent 62649ef6d6
commit c69f4461dc
8 changed files with 137 additions and 51 deletions
+22 -14
View File
@@ -2,8 +2,14 @@
%% boxes
%% 信息框
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 颜色一律引用 cls/color.cls 里的语义名(oucinfo / oucalert ...),
% 不在这里写具体色名,更不写 RGB 值。
%
%% 带标题的文本框
% 这个框走的是"极简"路线:框线和标题栏都是白色,靠黑字 + 细边分界。
% 属于结构而非强调,不参与配色体系。
\newtcolorbox{titledbox}[1]{%
tikznode boxed title,
enhanced,
@@ -21,34 +27,34 @@
fontupper=\fzkai
}
%% Note
%% Note —— 提示框,海大蓝
\newtcolorbox{notebox}{%
enhanced,
arc=2pt,
boxrule=.5pt,
left=5pt, right=5pt, top=0pt, bottom=0pt,
boxsep=5pt,
colframe=NavyBlue,
colback=NavyBlue!5!White,
colbacktitle=NavyBlue!5!White,
coltext=NavyBlue,
title={\textcolor{NavyBlue}{\faStickyNoteO\hspace{.5em}\bfseries{\hm{笔记}}}},
colframe=oucinfo,
colback=oucinfo!5!White,
colbacktitle=oucinfo!5!White,
coltext=oucinfo,
title={\textcolor{oucinfo}{\faStickyNoteO\hspace{.5em}\bfseries{\hm{笔记}}}},
halign=left,
fontupper=\fzkai
}
%% Important
%% Important —— 重要框,海大红
\newtcolorbox{importantbox}{%
enhanced,
arc=2pt,
boxrule=.5pt,
left=5pt, right=5pt, top=0pt, bottom=0pt,
boxsep=5pt,
colframe=Orange,
colback=Orange!5!White,
colbacktitle=Orange!5!White,
coltext=Orange,
title={\textcolor{Orange}{\faExclamationCircle\hspace{.5em}\bfseries{\hm{重要}}}},
colframe=oucalert,
colback=oucalert!5!White,
colbacktitle=oucalert!5!White,
coltext=oucalert,
title={\textcolor{oucalert}{\faExclamationCircle\hspace{.5em}\bfseries{\hm{重要}}}},
halign=left,
fontupper=\fzkai
}
@@ -57,7 +63,7 @@
%% 换用 \VerbatimEnvironment \begin{Verbatim}
\RequirePackage{fancyvrb}
%% 命令行
%% 命令行(浅底黑字)——中性,不参与配色体系
\newenvironment{shellbox}
{%
\VerbatimEnvironment
@@ -80,7 +86,9 @@
\end{tcolorbox}
}
%% 命令行
%% 命令行(深底白字)——中性反白,不参与配色体系
% 说明:反白块的用途是"终端里的黑底",语义上就该是黑的;
% 换成海大蓝会变成强调块,反而抢正文的注意力,所以保留黑。
\newenvironment{invertedshellbox}
{%
\VerbatimEnvironment
+16 -15
View File
@@ -4,11 +4,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{listings,verbatim}
\definecolor{codecolorkeywords}{rgb}{0,0,1}
\definecolor{codecolorcomments}{rgb}{0,0.5,0}
\definecolor{codecolorxmlcomments}{rgb}{0.5,0.5,0.5}
\definecolor{codecolorstrings}{rgb}{0.64,0.08,0.08}
\definecolor{codecolortypes}{rgb}{0.17,0.57,0.68}
% 代码配色不在这里定义,统一来自 cls/color.cls:
% codecolorkeywords = 海大蓝 codecolorcomments = 苍松绿
% codecolorstrings = 海大红 codecolortypes = 海大天蓝
% codecolorframe = 专银 codecolorbg = 极浅中性底
\lstdefinelanguage{JavaScript}{
keywords={do, if, in, for, let, new, try, var, case, else, enum, eval, null, this, true, void, with, await, break, catch, class, const, false, super, throw, while, yield, delete, export, import, public, return, static, switch, typeof, default, extends, finally, package, private, continue, debugger, function, arguments, interface, protected, implements, instanceof},
@@ -44,16 +43,16 @@
framesep=5pt,
framerule=.5pt,
framexleftmargin=10pt,
rulecolor=\color{black},
rulecolor=\color{codecolorframe},
abovecaptionskip=0pt,
belowcaptionskip=5pt,
aboveskip=5pt,
backgroundcolor=\color{black!5!white},
backgroundcolor=\color{codecolorbg},
% Code design
keywordstyle=\color{codecolorkeywords},
commentstyle=\color{codecolorcomments},
stringstyle=\color{codecolorstrings},
numberstyle=\small\color{gray},
numberstyle=\small\color{oucmuted},
breakatwhitespace=false,
breaklines=true,
captionpos=t,
@@ -74,9 +73,9 @@
}
\lstset{style=mystyle}
%% 命令行
%% 命令行(bash 示例):浅海大蓝底 + 粗左侧海大蓝竖线
\lstdefinestyle{bashstyle}{
backgroundcolor=\color{NavyBlue!10!white},
backgroundcolor=\color{oucblue!10!white},
basicstyle=\linespread{1.2}\ttfamily,
keepspaces=true,
numbers=none,
@@ -87,7 +86,7 @@
framexleftmargin=3pt,
framextopmargin=-5pt,
xleftmargin=10pt,
rulecolor=\color{NavyBlue},
rulecolor=\color{oucblue},
% Code
tabsize=4,
showspaces=false,
@@ -96,9 +95,11 @@
breaklines=true,
}
%% 命令行输出
%% 命令行输出:中性极浅底 + 专银左侧竖线
% 说明:输出是"机器吐出来的东西",语义上不该比命令更醒目,
% 所以颜色比 bashstyle 退一档,用专银而不是海大蓝。
\lstdefinestyle{bashoutputstyle}{
backgroundcolor=\color{black!10!white},
backgroundcolor=\color{codecolorbg},
basicstyle=\linespread{1.2}\ttfamily,
keepspaces=true,
numbers=none,
@@ -109,7 +110,7 @@
framexleftmargin=3pt,
framextopmargin=-5pt,
xleftmargin=10pt,
rulecolor=\color{black!70!white},
rulecolor=\color{codecolorframe},
% Code
tabsize=4,
showspaces=false,
@@ -124,6 +125,6 @@
%%\colorbox{black!20}{
%% \parbox{\textwidth}{#1#2\ttfamily#3}
%%}
\parbox{\textwidth}{\textcolor{violet}\faCode~\textcolor{violet}{#1#2}\hspace{.5em}\fzkai#3}
\parbox{\textwidth}{\textcolor{ouccaption}\faCode~\textcolor{ouccaption}{#1#2}\hspace{.5em}\fzkai#3}
}
\captionsetup[lstlisting]{format=codecaptionformat}
+74
View File
@@ -0,0 +1,74 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% color
%% 海大标准色(与幻灯片模板完全一致)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 【本文件是本模板唯一的配色入口】
%
% 规矩:除本文件外,任何地方都不要出现 \definecolor 或直接的 RGB / html
% 色值。需要颜色就引用这里的名字,需要档位(浅一点/深一点)就用
% xcolor 的混合语法,例如 oucblue!30!white。
% 这样将来调整配色只改一处,全文同步。
%
% 色值来源与同步要求:
% 10 个基色与 ../幻灯片/theme/beamercolorthemeOUCSlide.sty 逐值相同。
% 改色时两个模板必须同步改,否则两个模板的"海大红"会不一样。
% 其中前 7 个是官方 2021 版形象识别系统(VI)公布的标准色,
% 后 3 个(苍松绿 / 暮山紫 / 琥珀橙)是幻灯片模板补充的第三色。
%
% 语法提示:
% 浅化 oucblue!30!white (30% 海大蓝 + 70% 白)
% 加深 oucblue!80!black
% 半透明 oucblue!30 (tcolorbox 的 opacity 另有参数)
%
\RequirePackage[dvipsnames]{xcolor}
%======================================================================
% 一、官方标准色(基色)
%======================================================================
\definecolor{oucblue}{RGB}{0, 64, 152} % 海大蓝 主色:标题、强调、外框
\definecolor{ouclightblue}{RGB}{0, 160, 233} % 海大天蓝 次色:与海大蓝搭配
\definecolor{oucred}{RGB}{200, 21, 40} % 海大红 警示、强调
\definecolor{ouccherry}{RGB}{249, 210, 212} % 樱缤粉 浅底、点缀
\definecolor{oucbrown}{RGB}{121, 79, 47} % 文脉棕 沉稳,少用
\definecolor{oucgolden}{RGB}{204, 173, 105} % 专金 正式、有分量
\definecolor{oucsilver}{RGB}{207, 208, 208} % 专银 浅灰,分隔线、外框
%======================================================================
% 二、幻灯片补充色(非官方 VI,但两个模板共用同一套)
%======================================================================
\definecolor{oucpine}{RGB}{30, 86, 64} % 苍松绿 冷色系深绿
\definecolor{oucdusk}{RGB}{92, 58, 118} % 暮山紫 第三色
\definecolor{oucamber}{RGB}{196, 82, 16} % 琥珀橙 暖色强调
%======================================================================
% 三、语义别名(正文与各 cls 文件里请按语义引用,不要写色名)
%======================================================================
% 好处:将来"笔记框"想从海大蓝换成苍松绿,只改下面一行,
% 不用去翻 boxes.cls。
\colorlet{oucprimary}{oucblue} % 主色
\colorlet{oucaccent}{oucred} % 强调色
\colorlet{oucinfo}{oucblue} % 提示(笔记框)
\colorlet{oucalert}{oucred} % 警示(重要框)
\colorlet{ouccaption}{oucblue} % 图表标题
\colorlet{oucrule}{oucsilver} % 分隔线、表格线
\colorlet{ouclink}{black} % 正文超链接:学术惯例用黑,想改海大红就把这行换成 oucred
\colorlet{oucmuted}{oucsilver} % 弱化文字(行号、辅助说明)
%======================================================================
% 四、代码 / 等宽环境配色
%======================================================================
% 说明:代码高亮的语义色(关键字 / 注释 / 字符串)必须彼此区分得开,
% 强行全部套同一个海大色会看不清。所以做法是——从标准色里派生,
% 而不是另造一套色:
% 关键字 → 海大蓝 注释 → 苍松绿
% 字符串 → 海大红 类型 → 海大天蓝
% 边框 → 专银 底色 → 极浅中性
% 这样代码块整体仍在海大色系内,同时保持可读性。
\colorlet{codecolorkeywords}{oucblue}
\colorlet{codecolorcomments}{oucpine}
\colorlet{codecolorstrings}{oucred}
\colorlet{codecolortypes}{ouclightblue}
\colorlet{codecolorxmlcomments}{oucsilver}
\colorlet{codecolorframe}{oucsilver}
\definecolor{codecolorbg}{RGB}{247, 248, 250} % 极浅中性底(唯一非海大色,仅作纸白微差)
+7 -17
View File
@@ -2,28 +2,18 @@
%% head and foot
%% 页眉页脚
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \RequirePackage{fancyhdr}
% \RequirePackage{zhnumber}
% \pagestyle{fancy}
% \fancyhf{}
% \renewcommand\headrulewidth{.5pt}
% \renewcommand\footrulewidth{0pt}
% %\futurelet\TMPheadrule\def\headrule{{\color{violet}\TMPheadrule}}
% \renewcommand{\sectionmark}[1]{\markright{#1}}
% \fancyhead[C]{\fzkai{\rightmark}}
% %\fancyhead[R]{\thepage}
% \fancyfoot[L]{\fzkai{\author}}
% \fancyfoot[R]{\thepage}
%
% 页眉线当前保持中性黑(0.5pt 细线),不用彩色:
% 彩色页眉线会跟正文的海大蓝标题抢视觉层级。
% 若确实想上色,把下面 headrule 那行的注释打开,
% 颜色用 cls/color.cls 里的 oucrule(专银)或 oucprimary(海大蓝)。
%
\pagestyle{fancy}
\fancyhf{}
\renewcommand\headrulewidth{.5pt}
\renewcommand\footrulewidth{0pt}
%\futurelet\TMPheadrule\def\headrule{{\color{violet}\TMPheadrule}}
%\futurelet\TMPheadrule\def\headrule{{\color{oucrule}\TMPheadrule}}
%\renewcommand{\sectionmark}[1]{\markright{#1}}
\fancyhead[C]{\fzkai{\themaintitle}}
%\fancyhead[C]{\@title}
+8 -4
View File
@@ -2,11 +2,15 @@
%% hyperref settings
%% 超链接设定
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 颜色用 cls/color.cls 里的 ouclink(当前 = 黑)。
% 学术文档的正文超链接按惯例保持黑色,避免满页彩字干扰阅读;
% 想改成海大红,只改 color.cls 里 ouclink 那一行即可,不必动这里。
%
\hypersetup{
bookmarksnumbered,
colorlinks,
linkcolor={black},
citecolor={black},
urlcolor={black}
linkcolor={ouclink},
citecolor={ouclink},
urlcolor={ouclink}
}
+9 -1
View File
@@ -13,6 +13,14 @@
% \usepackage[firstpage]{draftwatermark} % 只有第一页加水印
\SetWatermarkText{\theaffiliation\thedept} % 设置水印文字内容
% \SetWatermarkText{\includegraphics{fig/ZJDX-WaterMark.eps}} % 设置水印LOGO
\SetWatermarkLightness{0.95} % 设置水印透明度 0-1
% 水印颜色:用海大蓝的极浅档(4% 海大蓝 + 96% 白)。
% 原来是纯灰(Lightness 0.95),换成带蓝的浅色后,整页会隐约透出本校色,
% 比中性灰更有整体感,同时淡到完全不干扰阅读。
% 想更淡 → oucblue!3!white 想略明显 → oucblue!8!white
% 注意:这里必须是【颜色名】而非灰度值;draftwatermark 的
% \SetWatermarkLightness 会强制切到 gray 模型,一旦调用就把这个颜色覆盖掉,
% 所以下面那行 Lightness 只能保留一个,二者不要同时用。
\SetWatermarkColor{oucblue!4!white} % 水印颜色(海大蓝极浅)
\SetWatermarkScale{0.2} % 设置水印大小 0-1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+1
View File
@@ -33,6 +33,7 @@
%引入模块
\input{cls/global.cls}%全局设定
\input{cls/color.cls}%海大标准色(必须在 boxes/code 之前,那两个要用这里定义的颜色)
\input{cls/hyperref.cls}%超链接
\input{cls/figs.cls}%图片
\input{cls/geometry.cls}%页面布局
Binary file not shown.