Files

78 lines
4.1 KiB
OpenEdge ABL
Raw Permalink Normal View History

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 标题、目录等设定
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%----------------------------------------------------------------------
2026-11-01 09:29:00 +08:00
% 各级标题字体
%
% 目标:编号和标题文字**都是鸿蒙**。
%
% 踩的坑:原来只写 format=\hm\bfseries,以为 \hm 就够了。实际 \hm 在旧版
% 是纯 xeCJK 中文字族切换,管不到阿拉伯数字 —— 编号 "1." "3.1" 被判成
% 西文,仍走 \setmainfont,于是同一个标题里中文鸿蒙、编号衬线。
%
% 修法:本次在 cls/font.cls 里把 \hm 重定义为「中西文一起切鸿蒙」,
% 所以这里维持 format=\hm\bfseries 即可,不需要再写 \hmlatin。
% 换个说法:问题统一在 \hm 的定义处解决,而不是在每一处调用点逐个补 ——
% 后者必然漏(封面、摘要、目录标题、页眉都会各自漏一次)。
%----------------------------------------------------------------------
\ctexset{
% 修改 section文字样式,
section={
name={,.},%编号和文字中间用.。
number={\arabic{section}},%编号形式:\arabic设置为阿拉伯数字,\chinese设置为中文,\roman设置为小写罗马字母,\Roman设置为大写罗马字母,\alph设置为小写英文,\Alph设置为大写英文。
format=\hm\bfseries\raggedright\zihao{4},%鸿蒙字体(中西文都用鸿蒙),小四号字,右对齐。
aftername=\hspace{5pt},%编号和标题的距离
% beforeskip=1ex,%标题与前文的距离
% afterskip=1ex,%标题与后文的距离
},
%修改subsection文字样式
subsection={
format=\hm\bfseries\raggedright\zihao{-4},
aftername=\hspace{5pt},%编号和标题的距离
},
%修改subsubsection文字样式
subsubsection={
format=\hm\bfseries\raggedright\zihao{5},
aftername=\hspace{5pt},%编号和标题的距离
}
}
%设置目录的显示样式
\renewcommand{\contentsname}{\begin{center} \normalsize \hm\zihao{4}\textbf{目录} \end{center}}
\renewcommand{\listfigurename}{\begin{center} \normalsize \hm\zihao{4}\textbf{插图目录} \end{center}}
\renewcommand{\listtablename}{{\begin{center} \normalsize \hm\zihao{4}\textbf{表格目录} \end{center}}}
%给目录加上点
\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} % 给 parts 加点
%\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}} % 给 chapters 加点
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} % 给 sections加点
%----------------------------------------------------------------------
2026-11-01 09:29:00 +08:00
% 目录条目的字族统一
%
% 问题:一条目录里能出现两种字体。编号 "1." 是阿拉伯数字 → 被 xeCJK
% 判成西文 → 走 \setmainfont;条目标题是中文 → 走 \setCJKmainfont。
% 旧版 \setmainfont 是鸿蒙、\setCJKmainfont 是思源宋体,于是同一条里
% 「编号鸿蒙粗 + 标题宋体粗」,看着就是标题字体一会儿一个样。
%
% 把西文改回衬线(Cochineal)之后这个分裂本身已经消失,但这里仍然显式
% 声明一次,理由有二:
% ① 不依赖 \setmainfont 的间接效果 —— 将来若有人改了 font.cls 的
% 西文设置,目录不会跟着又裂开;
% ② tocloft 的 \cftsecfont 是"只管目录条目"的开关,改它比调全局安全。
%
% ⚠️ 只设 \cftsecfont / \cftsubsecfont / \cftsubsubsecfont,不动
% \cftsecpagefont —— 页码那列保持默认,不用跟着正文加粗。
% ⚠️ \cftsecfont 里不要塞 \bfseries:加粗与否是各条目录自己的事
% (正文章节标题本就 \bfseries),在这里硬加会让二级三级也变粗。
%----------------------------------------------------------------------
\renewcommand{\cftsecfont}{\normalfont}
\renewcommand{\cftsubsecfont}{\normalfont}
\renewcommand{\cftsubsubsecfont}{\normalfont}
% 页码列单独归零。上面三条只管条目文字,页码走的是 \cft*pagefont,
% 默认继承条目的粗体设置 —— 不显式清掉的话,目录里页码会比标题还粗,
% 一眼看过去页码最抢眼。
\renewcommand{\cftsecpagefont}{\normalfont}
\renewcommand{\cftsubsecpagefont}{\normalfont}
\renewcommand{\cftsubsubsecpagefont}{\normalfont}