LaTeX教程(005)-LaTeX文档结构(05)

LaTeX教程(005)- LaTeX \LaTeX LATEX文档结构(05)

2.2.2 修改标头文本

我们使用标准的标题命令会产生预定义的文本。例如,我们使用\chapter命令时,会生成一个"Chapter X"格式的标头,X是编号,它由计数器的格式化输出命令打印。而Chapter并不是我们输入的,它由定义在\chapter中的某个命令生成。同样,使用\tableofcontents时,会生成一个"目录"标题。这些预定义的文本由定义在标题命令中的某个命令生成,我们可以通过重定义这样的命令来更改标头中的预定义文本。

如,Chapter是由命令\chaptername生成的,我们只需要重定义这个命令,就可以修改它:

\documentclass{book}
\usepackage{ctex}
\usepackage[a5paper]{geometry}
\begin{document}

\renewcommand{\chaptername}{定制的章的标头}

\chapter{这是第一章}

\end{document}

编译:

在这里插入图片描述

当然,我们最想要的可能是"第X章"这样的标头,要达到这个目的,只重定义预定义文本的命令是不够的,还要对标头的定义结构稍作修改,我们后面讲解。

除此之外,一些环境也会生成带有预定义文本的标题,如abstract环境,会生成"摘要":

\documentclass{article} 
% 注意abstract是定义在article类中的命令
\usepackage{ctex}
\usepackage[a5paper]{geometry}
\begin{document}
\begin{abstract}
    这是一个abstract的测试
\end{abstract}
\end{document}

编译:

在这里插入图片描述

注意,如果我们没有引入ctex包,那么在使用\tableofcontents命令时标题就不是"目录",而是"Contents",这是因为ctex包在支持中文的同时,还重定义了某些命令,其中就包括一些预定义的文本,如目录(原本是Contents),附录(原本是Appendix)和摘要(原本是Abstract )等。

在标准文档类的默认设置下,这些预定义的文本与命令的对应关系如下表:

命令默认文本命令默认文本
\abstractnameAbstract\indexnameIndex
\appendixnameAppendix\listfigurenameList of Figures
\bibnameBibliography\listtablenameList of Tables
\chapternameChapter\partnamePart
\contentsnameContents\refnameReferences

其中\bibname在report类中使用,\refname在article类中使用。

有一些命令我们在前面的内容中并没有见到过,但是没有关系,它们都是根据含义命名的,后面遇到时很容易识别出来。

2.2.3 标题设计简介

标题可以分为两大类,一类是陈列标题(display headings),一类是内嵌标题(run-in headings)。陈列标题独占若干行,与前后文本之间都有垂直空间分隔,如\chapter\section等。内嵌标题与前文有垂直分隔,但标题后的文本并不会另起一行,而是紧跟标题之后。我们做一个演示:

\documentclass{article}
\usepackage{ctex}
\usepackage[a5paper]{geometry}
\begin{document}
\section{这是一个陈列标题}
陈列标题独占若干行,与前后文本之间都有垂直空间分隔
\paragraph{这是一个内嵌标题}
内嵌标题与前文有垂直分隔,但标题后的文本并不会另起一行,而是紧跟标题之后。
\end{document}

编译:

在这里插入图片描述

本节的剩余部分,我们将讨论如何设计标题,以及如何调整默认的设计。

2.2.4 quotchapepigraph-给章节标题增加引言

我们可以用quotchap包(由Karsten Tinnefeld创建,由Jan Klever升级)来增强章(\chapter)的标题。这个包允许我们在章标题的左上角添加一个引言。每一个章标题的引言要在它所对应的\chapter命令之前,使用savequote环境来指定。我们先用一个最简示例来做一个演示:

\documentclass{book}
\usepackage{ctex}
\usepackage[a5paper]{geometry}
\usepackage{kantlipsum}
\usepackage{quotchap} % 引用quotchap包
\begin{document}
\begin{savequote}[80pt] 
	% 使用savequote环境指定引言的内容
	% 选项80pt指定引言的宽度,默认是10cm,引言会在到达边界时自动换行
    我觉得张三说得对!%引言内容
    \qauthor{李四} %\qauthor命令指定引言的作者
\end{savequote}
\chapter{这是第一章的标题}
\kant[1]
\end{document}

编译:

在这里插入图片描述

如果你的文档中也有中文,并且使用XeLaTeX编译,那么可能会出现一些和字体有关的警告,这是因为很多包的默认字体设置并没有考虑多种语言,在当前字体与当前语言不匹配时,系统为了让文字依然能显示出来,只能找到一种替代字体。我们将来也会讲到字体的设置,但在这之前,为了使演示效果更显著,我们需要将更多的字体显示出来。因此,今后我们在必要的时候,会使用全英文,并且使用PDFLaTeX来编译。现在,我们将上面的文档稍作修改:

\documentclass{book}
\usepackage[a5paper]{geometry}
\usepackage{kantlipsum}
\usepackage{quotchap}
\begin{document}
\begin{savequote}
    Cookies! Give me some cookies!
    \qauthor{Cookie Monster}
\end{savequote}
\chapter{this is a title of chapter one}
\kant[1]
\end{document}

再次编译:

在这里插入图片描述

在我们不进行更多的设置的情况下,增强后的章标题默认就如上图所示。观察上图,引言从左上角开始,其区域的总宽度默认是10cm,其中引言内容靠左,作者名字靠右。我们可以通过在savequote环境中使用选项去修改它。引言的默认字体是\slshape。然后是一段放置在引言与标题编号之间的垂直距离,这段距离存储在命令\chapterheadstartvskip中,我们可以通过重定义这个命令来调整这段距离(甚至可以调整为负距离,就像我们接下来要演示的那样)。然后是一个非常大的标题编号,它并不是黑色的,而是灰度为60%的灰色。编号靠右。编号的下面是标题文本,标题文本也靠右。然后是一段垂直距离,它将标题与后面的内容隔开,这段距离存储在命令\chapterheadendvskip中,我们可以通过重定义这个命令来调整它。通过前面的英文文档可以看出,章标题后的第一段首行默认是不缩进的。

LaTeX \LaTeX LATEX有一些命令可以放置一段水平距离或者一段垂直距离,如\vspace命令(垂直),\hspace命令(水平)等。当距离为负数时,后面的内容会往相反的方向移动。我们做个演示:

\documentclass{book}
\usepackage[a5paper]{geometry}
\begin{document}
ABCD\hspace*{2cm}EFG % ABCD后面放置一段2cm的水平距离

\vspace*{1cm} % 放置一段1cm的垂直距离

HIJK\hspace*{-10pt}LMN
% 在HIJK后面一段-10pt的水平距离,这意味着LMN会向前移动10pt

OPQ
% 此处放置一段-8pt的垂直距离,这意味着RST会向上移动8pt
\vspace*{-8pt}

RST

\end{document}

编译:

在这里插入图片描述

了解了这个原理,我们就可以更灵活地调整这些间隔了。

如果我们不想要灰色的编号,可以在调用quotchap包的时候加上nogrey选项,这样编号就会变成黑色的。也可以通过添加选项来更换编号的字体,可以使用的免费字体选项如charter,times,avantgarde 等。或者也可以将一些基本字体族作为\qsetcnfont命令的参数指定,又或者,可以通过重定义\chapnumfont命令来实现它。该命令负责章的编号的字体和字号。

命令\quotefont定义了引言的字体(包括作者名字),而我们可以通过重定义\qauthorfont命令来局部地改变作者名字的体。即,\quotefont的定义对整个引言有效,而\qauthorfont的定义仅对作者名字有效。最后,重定义\sectfont命令可以影响章的标题文本的字体。将来我们会详细地讲解与字体有关的内容,现在我们仅用它做一些简单的演示。

\documentclass{book}
\usepackage[a5paper]{geometry}
\usepackage{kantlipsum}
\usepackage[nogrey,avantgarde]{quotchap}
% 命令将编号设置为黑色,avantgarde设置编号的字体
\renewcommand\chapterheadstartvskip{\vspace*{-5\baselineskip}}
% 重定义\chapterheadstartvskip命令,将标题编号向上平移一段距离,\baselineskip是一个变量
\usepackage{tgheros}
% 这是一个调用某个字体族所使用的包,这里不细讲
\renewcommand\sectfont{\sffamily\bfseries}
% 重定义\sectfont,设置标题文本的字体,\sffamily,\bfseries都是字体设置命令,下面两行也一样
\renewcommand\quotefont{\sffamily\slshape}
\renewcommand\qauthorfont{\scshape}
\begin{document}
\begin{savequote}[10pc] % 设置引言的宽度,pc,pt,cm等,都是可用的单位
    Cookies! Give me some cookies!
    \qauthor{Cookie Monster}
\end{savequote}
\chapter{A Package Test}
\kant[1]
\end{document}

编译:

在这里插入图片描述

quotchap包将引言直接集成到章的标题设计中,而epigraph包(作者是Peter Wilson)则不同,它将引言排版在标题之后(使用\epigraph或者使用epigraphs环境)。这些功能极少用到,我们在这里做一个简单的演示,若想了解更多的配置,请阅读epigraph的包文档。

\documentclass{article}
\usepackage[a5paper]{geometry}
\usepackage{kantlipsum}
\usepackage{epigraph}
\setlength\epigraphwidth{.4\textwidth}
\renewcommand\epigraphsize {\small}
\renewcommand\epigraphflush{flushright}
\renewcommand\sourceflush {flushright}
\begin{document}
\section{A Package Test}
\epigraph{Cookies! Give me some cookies!}{Cookie Monster}
\kant[1]
\end{document}

编译:

在这里插入图片描述

可以看出,使用该包,引言之后的第一个段落首行默认有缩进。如果不想要缩进,可以在第一个单词面使用命令\noindent

使用\epigraphhead命令可以将引言放置在章节标题上,详情见包文档。

2.2.5 indentfirst-标题后第一个段落缩进

标准 LaTeX \LaTeX LATEX(默认情况下)遵循英文的排版传统,标题后的第一个段落不进行首行缩进。我们可以改变这一点,使得每一个段落的首行都缩进。方法之一是如下文(2.2.7)所示使用titlesec包的选项。但不论你是否调用了titlesec包,你都可以通过调用indentfirst包(作者David Carlisle)来实现:

\documentclass{article}
\usepackage[a5paper]{geometry}
\usepackage{kantlipsum}
\usepackage{indentfirst} % 调用即生效,不需要任何配置
\begin{document}
\section{section one}
\kant[1]
\end{document}

编译:

在这里插入图片描述

2.2.6 nonumonpart-part标题所在的那一页不显示页码

有时候我们想要part标题页不显示页码。在chapter标题上,实现这一点很容易,在\chapter命令后手动使用\thispagestyle{empty},这一章的标题所在页就不会再显示页码。但part标题占了一整页,没有可以放置这种声明的地方。解决这个问题,可以使用nonumonpart包(作者Yvon Henel)。它适用于标准类report和book,以及它们的派生类。你所需要做的就是调用这个包,不用进行任何配置。这个相当简单,我们不再演示。

有时候我们想要part标题页不显示页码。在chapter标题上,实现这一点很容易,在\chapter命令后手动使用\thispagestyle{empty},这一章的标题所在页就不会再显示页码。但part标题占了一整页,没有可以放置这种声明的地方。解决这个问题,可以使用nonumonpart包(作者Yvon Henel)。它适用于标准类report和book,以及它们的派生类。你所需要做的就是调用这个包,不用进行任何配置。这个相当简单,我们不再演示。

(2.2.7关于titlesec包的使用内容相当长,我们放在下一篇讲)

  • 31
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值