返回ConTeXt 标题样式的修改SECTION 样式上的修改,都会用\setuphead。第一组参数 SECTION 可以用名字比如 part, chapter, section, subsection 等,或者使用数字等级 section-1(part), section-2(chapter)…… ,也可以使用我们自定义的标题名字。
以下的例子为了使 chapter 不从新的一页开始,使用了 page=no。 page 的可用参数值可参考\pagebreak, 其他可用的比如 right 可以在双面排版的情况下让 SECTION 在右边的页(也就是奇数页 1,3,5,7……)开始新的 SECTION。
内置编号形式
conversion 可以更改编号形式, 可用的选项有:
• n, N, numbers: 阿拉伯数字
• I, R: 大写罗马
• i, r: 小写罗马
• A: 大写字母
• A: 小写字母
• Words: 首字母大写英文全拼:比如One,Two,Three
• words: 全小写英文全拼,比如 one, two, three
• 内置层级符号:
如果只有个别标题层需要修改编号形式,可以通过\setuphead[SECTION][conversion=?]来更改某一层级的编号。
\setuphead[chapter][page=no,conversion=Words]
\setuphead[section][page=no,conversion=set 0]
\setuphead[subsection][page=no,conversion=i]
也可以通过\definestructureconversionset自定义一套编号组,再把编号组应用在 SECTION 上。\definestructureconversionset接收 3 组参数,[set名称][conversion样式][默认样式或缺失没有被定义的层级样式]。第二组的 conversion 样式具体设置了从 part,chapter,section,subsection 等依次层级的编号形式。
\definestructureconversionset[mySet][n,A,a,i,n,a,r][n]
\setuphead[part,chapter,section,subsection,subsubsection,subsubsubsection][page=no,sectionconversionset=mySet]
编号的显示层级
sectionsegments 可以决定标题前的编号显示多少层,比如条标题层显示:1.2.1 标题, 2.1 标题,1 标题。使用“数字1:数字2”的形式时,标题数字会显示数字区间的层级。
\setuphead[subsection][page=no,conversion=i,sectionsegments=section:subsection]
% % % 或者
\setuphead[subsection][page=no,conversion=i,sectionsegments=3:4]
使用层级名称或数字指定层级时(1-part, 2-chapter,3-section……),标题数字会显示名称/数字对应的层级编号。
完整代码见Gitee - structure/section/style_4.tex
颜色样式
% % chapter的编号和标题颜色=绿色
\setuphead[chapter][page=no,color=green]
% % % 编号颜色=蓝色,文字颜色=橘色
\setuphead[section][page=no,numbercolor=blue,textcolor=orange]
文字样式
% % 整个chapter文字加粗
\setuphead[chapter][page=no,style=\bf]
% % % 编号部分斜体
\setuphead[section][page=no,numberstyle=\it]
更灵活的样式更改
在命令语句参数中,提供了 command 可以让我们定义方法来更灵活的更改标题样式。
command 接收2个参数,#1 是编号,#2 是标题。
以下例子定义了一个叫 HeadTitle 的方法,借助 frame 包装编号和标题。并使用command=\HeadTitle把方法内的样式应用在 chapter 标题上。
\define[2]\HeadTitle
{\framed[frame=off,bottomframe=on,rulethickness=2pt,framecolor=darkgray,width=broad,align=flushleft]{#1\\\quad#2}}
\setuphead[chapter][page=no,command=\HeadTitle]
Before & after
before 和 after 分别是防止标题前/后执行的命令语句。以下例子中 before 使用了\blank[2cm,force], 强制在 chapter 前加 2 cm 的空白。after 使用了\hairline,在 section 后面加了一条横线。
% % chapter 标题前2cm的空白
\setuphead[chapter][page=no,before=\blank[2cm,force]]
% % section 标题后加长横线
\setuphead[section][page=no,after={\hairline}]
标题的位置
标题的位置通过alternative设置,并有如下选项:
alternative = text paragraph normal margin inmargin top middle bottom reverse margintext NAME
\setuphead[chapter][page=no,alternative=reverse] % % 对换编号和标题的位置
\setuphead[section][alternative=middle]
\setuphead[subsection][alternative=margin]