此文仅作学习使用
使用 titlesec 宏包设置标题格式
在 xelatex 中使用 \usepackage 指令使用 titlesec 宏包时,可以指定一些格式选项,如下: \usepackage[center]{titlesec} 其中 center 可使标题居中,还可设为 raggedleft (居左,默认), raggedright (居右)。 标题由标签与标题内容构成,其格式通常在 xelatex 文档导言区通过 titlesec 宏包提供的指令 \titleformat 进行设定。
\titleformat 指令用法如下:
\titleformat{command}[shape]{format}{label}{sep}{before}[after]
各参数含义如下:
command 是要重新定义的各种标题命令,比如 \part,\chapter,\section,\subsection,\subsubsection,\paragraph,\subparagraph等;
shape 是用来设定段落形状的,可选的参数有 hang 、 block 、 display 等,详见 titlesec 文档,位于:
T
E
X
L
I
V
E
/
TEXLIVE/
TEXLIVE/VERSION/texmf-dist/doc/latex/titlesec format
用于定义标题外观,比如使标题居中、字体加粗等;
label 用于定义定义标题的标签,就是标题内容前面的标号;
sep 定义标题的标签与标题内容之间的间隔距离。
before 用于在标题内容前再加些内容;
after 用于在标题内容后再加些内容。
这个指令看似很复杂,但在实际应用中,通常只使用它的几个参数而已。比如,要把文档中的章标题格式由默认的 “Chapter xxx 标题内容” 修改为 “第 xxx 章 标题内容” 格式,如此这般即可:
\titleformat{\chapter}{\centering\Huge\bfseries}{第,\thechapter,章}{1em}{}
其 中, shape 、 before 、 after 参 数 都 被 省 略 掉 了。 format 参 数 将章标题设置为居中( \centering )显示、字号为 \Huge,字体被加粗显示 \bfseries ;在设置 subsection 格式,未采用居中,而是采用默认的居左,另外将标题的字号也降了一级( \large )。 label 参数将标题的标签设置为 “第 xxx 章”格式。 sep 参数设置标签与标题内容之间以一个字(1em)的宽度为间隔。以上设置的章标题效果如下图所示:
如果为上面设置章标题的命令添加一个 shape 参数 “display”,如下:
\titleformat{\chapter}[display]{\Huge\bfseries}{第,\thechapter,章}{1em}{}
这样设置后的章标题效果如下图所示
只要弄明白了 \titleformat 用法,基本上可以实现 xelatex 排版时将文档的章节标题修改为符合中文阅读习惯的格式。
使用 fancyhdr 设置页眉页脚
在 xelatex 文档导言区使用以下指令可载入宏包 fancyhdr,并将页眉页脚风格设置为 fancy:
\usepackage{fancyhdr}
\pagestyle{fancy}
fancyhdr 宏包将页面分为奇数页(Odd page)和偶数页(Even page),将页眉与页脚各分为三个区域,分别称为左区(Left field)、中区(Center field)和右区(Right field)。这三个区域之间没有分界线,左区中的内容会左对齐在页眉或页脚的左边界,放在右区的内容会对齐在页眉或页脚的右边界,中区内容在整个页眉或 页脚区域内居中放置。各区之中的内容不可过长,以避免各区之间发生重叠现象。另外,在默认情况下会显示页眉线,宽度为 0.4pt;页脚线宽都为 0pt,意即不显示。
设置页眉的命令为 \fancyhead,设置页脚的命令为 \fancyfoot,其用法在这里插入代码片
如下:
\fancyhead[选项参数] {内容}
\fancyfoot[选项参数] {内容}
\fancyhead 的选项参数页眉或页脚的区域与奇(偶)数页标记的组合,其中页眉(脚)区域用 L (左),C (中),R( 右) 表示,奇数页与偶数页分别用字母 O,E 表示。
下面来做一个例子,对于 book 格式的 xelatex 文档,让偶数右区域显示章标题,其左区域显示页码,中间区域为空;让奇数页的页眉左区域显示节标题,其右区域显示页码,其中间区域为空;页脚为空。这个可以在文档导言区中采用以下指令实现:
\renewcommand{\chaptermark}[1]{\markboth{\small 第,\thechapter,章\quad #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\small\thesection\quad #1}{}}
\fancyhf{}
\fancyhead[ER]{\leftmark}
\fancyhead[OL]{\rightmark}
\fancyhead[EL,OR]{$\cdot$\ \thepage\ $\cdot$}
\renewcommand{\headrulewidth}{0.4pt}
\fancyhf{} 命令可将已设或页眉页脚的默认设置清空。
重新定义了 \chaptermark 与 \sectionmark,这两个重定义一定要记住放在 \pagestyle{fancy}之后,因为在 fancyhdr 宏包中对这两个命令重新进行了定义,在 \pagestyle{fancy} 之后重定义它们就可将 fancyhdr 中的相应命令覆盖掉。
还 需要解释的是 \leftmark 与 \rightmark,它们分别表示页眉左区域内容与右区域内容。在 book 格式文档中,\leftmark 默认为当前的章标题,\rightmakr 默认为当前的节标题;对于 article 格式文档而言,\leftmark 表示当前节标题,\rightmark 表示当前小节标题。
\makeatletter
\renewcommand\section{\@startsection{section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\normalsize\CJKfamily{hei}}}
\makeatother
说明:
1、\makeatletter,是因为renewcommand中使用了带@的命令,此类命令只能用于package/class中,如果用于正文中,要用\makeatletter和\makeatother引起来;
2、@startsection命令参数可见
@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}
NAME 表示所定义的节标题的名称(不要带反斜杠),比如section和subsection。
LEVEL 是一个数字,可以定义节标题的命令层次。这个数决定了定义的节标题是否编号(若是小于等于 secnumdepth则被编号)也决定了标题是否会被编进目录(若是小于等于tocdepth则被编号)。
INDENT : 定义节标题到版心左边的距离。此度量若是负数则标题进入边空。
BEFORESKIP: 是一个长度,其绝对值表示标题到上文之间的距离。若是此距离为负数,则标题后面的第一个段落不缩进。此度量最好是一个可以被伸长和缩短的长度。另外标题总是另起一段的。因而parskip已被加入到标题与上下文的距离。
AFTERSKIP :是一个长度,其绝对值表示独立显示的标题到下文之间的垂直间距或者是段内显示的标题到下文之间的距离。此度量若是负的,则定义的标题是段内显示的。对于独立显示的标题,parskip也已被加进标题与下文的距离。 STYLE :决定标题的内容形式。可以是任意影响文本排版结构的命令如加入尺寸\huge \large \bfseries 对齐命令等
beforeskip/afterskip弹性距离默认为:
以section为例, beforeskip {-3.5ex plus -1ex minus -.2ex} 表示最大-4.5ex, 最小-3.7ex.
通常我们的不习惯修改内部命令。