LaTeX教程(003)-LaTeX文档结构(03)

LaTeX教程(003)- LaTeX \LaTeX LATEX文档结构(03)

2.2 章节划分命令

在前面的内容中,我们讨论了文档的最顶层的区块划分,即front matter、main matter和back matter。这一节中,我们讨论如何在这些区块内部,使用章节划分命令对文档进行更进一步的划分。

标准的 LaTeX \LaTeX LATEX文档类(article、report和book)中,包含了若干划分命令,这些命令可以定义不同层次的结构单位,如章(chapter)、节(section)、子节(subsection)等。不同的命令定义了这个结构中不同的嵌套级别,在使用时应当正确地嵌套它们。

我们用下表展示这些命令以及它们在不同类型的文档中所处的级别:

命令级别注释
\part最高级部分,在book和report类中是-1级,在article类中是0级
\chapter0级章,只在book和report类中有定义
\section1级
\subsection2级子节
\subsubsection3级子子节
\paragraph4级
\subparagraph5级子段

并不是每一个命令都能在所有文档类中使用,例如\chapter命令不能在article类中使用,而letter类根本不支持章节划分。但是,使用一些包可以定义其它的划分命令,增加一些额外的级别,或者为已有的级别提供一些变体。

我们用一个例子演示一下它们的作用:

\documentclass{book}
\usepackage{ctex}
\usepackage[a5paper]{geometry} %可以调整页面的包,为了使演示效果更显著,我们将页面设置为A5大小。
\usepackage{kantlipsum}
\title{测试文档} %设置文档的标题
\author{方鸿渐} %设置文档的作者
\begin{document}
\maketitle	%输出标题页
\tableofcontents %输出目录
\chapter{这是第一章}
\section{这是第一章的第一节}
\subsection{这是第一章第一节的第一个子节}
\kant[1]
\section{这是第一章的第二节}
\kant[2]
\chapter{这是第二章}
\section{这是第二章的第一节}
\subsubsection{这是一个子子节}
\kant[3]
\kant[4]
\kant[5]
\end{document}

成功编译后,得到如下结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们前面讲过关与标题页面的内容,这里我们在导言区使用

\title{测试文档} %设置文档的标题
\author{方鸿渐} %设置文档的作者

来设置文档的标题页的信息,然后在正文中使用\maketitle命令将这些信息输出在文档中,在这个例子中是文档的第一页。

\tableofcontents用来输出文档的目录,目录不需要我们手动去排版,用了这个命令之后,系统会自动整理出目录。当然,我们也有很多的方法设置目录,这些方法在后面会讲。

需要注意的是,\maketitle\tableofcontents命令也可以放在正文中的其他位置,你将它放在什么位置,标题页或者目录就会输出在什么位置。但是任意放置的标题页和目录并不符合文档的排版规范,所以我们一般只将他们放在文档正文的最前面,并且标题页放在目录前面。

你可能会发现,一章的未尾与下一章的开头之间有时会有一个空白页,有时候又没有。这是因为,每一章都要从新的一页纸开始,基于这一特性,不管前面的内容在何处结束,下一章都要从下一个奇数页码开始。因为对于一本实体书来说,每一张纸有两面(两个页码),第一面都是奇数页码。不仅是章,标题页和目录等,都有这一特性。

另外,观察7、8、9页,一章开始的那一页没有页眉,偶数页显示章(chapter)标题的页眉,奇数页显示节(section)标题的页眉。

最后,在你编译的文件所在的同一文件夹中,会多出一个.toc文件,它是用来记录目录信息的,toc即是table of contents的缩写。对于我们前面编译的代码,生成的.toc文件打开后内容是:

\contentsline {chapter}{\numberline {1}这是第一章}{5}{}%
\contentsline {section}{\numberline {1.1}这是第一章的第一节}{5}{}%
\contentsline {subsection}{\numberline {1.1.1}这是第一章第一节的第一个子节}{5}{}%
\contentsline {section}{\numberline {1.2}这是第一章的第二节}{6}{}%
\contentsline {chapter}{\numberline {2}这是第二章}{7}{}%
\contentsline {section}{\numberline {2.1}这是第二章的第一节}{7}{}%
\contentsline {subsubsection}{这是一个子子节}{7}{}%

仔细观察第7页的一个子子节(subsubsection),它没有被编号(事实上,比它更低级的结构单元,如paragraph等,默认也都不编号),也没有出现在目录中,但是在.toc文件中有记录。因此我们可以通过一些方法让它出现在目录中,并且给它编号。这些会在后面的内容中讲解。

所有标准的章节划分命令都有同样的语法,正如我们在前面的例子中演示的那样。当我们使用一个划分命令后,系统会自动执行以下过程:

  • 生成各级别的标题编号;
  • 将标题存储到目录条目中(.toc文件中);
  • 保存标题内容以备在页眉/页脚中使用;
  • 格式化标题。

章节划分命令还有一个选项(可选参数),我们以section为例,带有选项的命令形式是\section[toc-entry]{title}

如果不设置这个选项,那么正文中的标题,与页眉以及目录中的条目都是相同的,这也是我们通常想要的。但有时候我们想要它们不同,就需要用到这个选项,它可以将页眉和目录条目设置成toc-entry,而正文中的标题不变。例如,我们将上面的例子中的16、17行改成:

\chapter[这是为第二章定制的页眉和目录条目]{这是第二章}
\section[这是为第二章的第一节定制的页眉和目录条目]{这是第二章的第一节}

再次编译(注意要编译两遍,先不要管为什么),观察输出内容:

  • 观察第7页,可以发现第二章和2.1节的标题都没有变化。
  • 观察目录:
    在这里插入图片描述

可以发现第2章和2.1节的目录条目都变成了我们输入的可选参数。

  • 再观察.toc文件,可以发现关于这两个目录条目的记录也发生了变化,变成了:
\contentsline {chapter}{\numberline {2}这是为第二章定制的页眉和目录条目}{7}{}%
\contentsline {section}{\numberline {2.1}这是为第二章的第一节定制的页眉和目录条目}{7}{}%
  • 最后,观察第8、9页的页眉,第8页的页眉变成了"CHAPTER 2. 这是为第二章定制的页眉和目录条目",第9页的页眉变成了"2.1. 这是为第二章的第一节定制的页眉和目录条目"。

这就是这个选项的作用。

划分命令还有一个变体,我们以section为例,它的形式是\section*{title}。这种形式的划分命令会生成一个没有编号的标题,并且也不会出现在目录和页眉中。例如,我们将上面的例子中的

\chapter{这是第二章}
\section{这是第二章的第一节}

改成

\chapter*{这是第二章}
\section*{这是第二章的第一节}

那么输出结果又会有几处不同(注意编译两遍):

  • 首先是目录,关于这它们的目录条目消失了:

在这里插入图片描述

  • 其次,.toc文件也没有记录关于这它们的信息。因此,它们并不是被目录隐藏了,而是根本没有记录。
  • 正文中的标题没有了编号:

在这里插入图片描述

  • 最后,第8页的页眉是"CHAPTER 1. 这是第一章",第9页的页眉是"1.2. 这是第一章的第二节",也就是说,这两个命令并不生成页眉,页眉依旧沿用第一章的标题。

另外需要注意的是,如果我们在这段代码的后面在加一个划分命令,如\chapter{这是第三章},那么会生成一个新章,它的标题是

在这里插入图片描述
可以发现,计数器依旧是从前面有编号的标题(基于第1章)延续的,这说明,划分命令的星号形式变体生成的标题并不参与计数器的递进。

那么,如果我们输入

\chapter*{这是第二章}
\section{这是第二张的第一节}

会发生什么?实际上会输出:

在这里插入图片描述

这和标题命令的计数器的定义结构有关,我们将在后面的内容中讲解。

星号形式的标题,我们通常在front matter中或者back matter中使用。当然,也可以在任何其他的地方使用,但不建议这样做,除非你明白自己在做什么。

在标准的文档类中,\tableofcontents\listoftables\listoffigures命令,以及theindex thebibliography环境,都在系统底层调用了划分命令(\chapter\section)的星号变体。比如前面的例子中,目录页的标题"目录"就是如此生成的。

关注【年轻人 你渴望力量么】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Pandas 简易速速上手小册》第6章:Pandas 时间序列分析(2024 最新版)

文章目录 6.1 时间序列数据基础6.1.1 基础知识6.1.2 重点案例:股票市场分析6.1.3 拓展案例一:温度变化分析6.1.4 拓展案例二:电商平台日销售额分析 6.2 日期与时间功能6.2.1 基础知识6.2.2 重点案例:活动日志分析6.2.3 拓展案例一…

Nodejs基于Vue.js的网上团购系统86593

该系统将采用B/S结构模式,使用Vue和ElementUI框架搭建前端页面,后端使用Nodejs来搭建服务器,并使用MySQL,通过axios完成前后端的交互 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架:Express/koa 前端:V…

工厂方法入门

#include <iostream>// 定义抽象交通工具的基类 // 产品的接口 class Transport { public:virtual~Transport() {}; // 虚的析构函数virtual void deliver() const 0; // 纯虚函数 };// 定义卡车交通工具&#xff0c;继承交通工具 // 产品 A class Truck :public Trans…

mysql8.0-cnf文件

一、my.cnf 文件 注意&#xff1a;根据自己环境进行参数的调整。 [client] port 3307 socket /data/mysql8.0.35/3307/tmp/mysql.sock[mysqldump] quick max_allowed_packet 64M[mysql] prompt"\u\h: \R:\m:\s [\d]> " no-auto-rehash[mysqld] ###### BASIC…

移动机器人激光SLAM导航(文章链接汇总)

移动机器人激光SLAM导航&#xff08;一&#xff09;&#xff1a;理论基础篇 移动机器人激光SLAM导航&#xff08;二&#xff09;&#xff1a;运动控制与传感器篇 移动机器人激光SLAM导航&#xff08;三&#xff09;&#xff1a;Hector & GMapping SLAM 篇 持续更新中…

JVM性能分析工具——Arthas及火焰图的使用

Arthas的使用 Arthas常用命令Arthas的安装Linux压测工具Apache Bench安装火焰图的使用火焰图如何分析火焰图的互动 Arthas常用命令 help &#xff1a;查看所有命令dashboard &#xff1a;仪表板&#xff0c;查看线程的CPU信息等heapdump &#xff1a;不同类对象占用内存比重&a…

Springboot 校验工具类

校验工具类 这个实现逻辑很简单,就是调用string的正则表达式 我这里的代码要导入糊涂工具包 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.17</version> </dependency>import…

MySQL数据库基础第三篇(约束)

文章目录 一、约束概述二、约束演示1.演示代码2.读出结果 三、外键约束1.创建外键2.删除更新外键 作为软件工程师和数据库管理员&#xff0c;我们经常需要操作和管理数据库。对于数据库中的信息完整性和准确性的确保&#xff0c;以及对数据质量的提升&#xff0c;数据库中的约束…

2023年09月CCF-GESP编程能力等级认证Python编程二级真题解析

一、单选题(共15题,共30分) 第1题 我国第一台大型通用电子计算机使用的逻辑部件是 ( )。 A:集成电路 B:大规模集成电路 C:晶体管 D:电子管 答案:D 第2题 下列流程图的输出结果是( )? A:5 12 B:12 5 C:5 5 D:12 12 答案:B 第3题 如果要找出整数 a …

2024/1/31 备战蓝桥杯 3-2 栈

目录 后缀表达式 P1449 后缀表达式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 栈 P1044 [NOIP2003 普及组] 栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 后缀表达式 P1449 后缀表达式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a;模拟stl的…

【分布式技术专题】Guava RateLimiter 针对于限流器的入门到实战(含源码分析介绍)

Guava RateLimiter 针对于限流器的入门到实战 限流器的思路和算法漏桶算法令牌算法 RateLimiter限流器RateLimiter的作用create方法acquire方法tryAcquire方法 详细分析参数抛出异常参数抛出异常实践案例第1次获取10个令牌第2次获取1个令牌第3次获取10个令牌 资料参考 限流器的…

maven: 使用profiles进行多环境配置

文章目录 一、背景二、如何配置 一、背景 在项目开发的过程中会用到多个环境比如&#xff1a;本地环境&#xff08;开发自测&#xff09;、开发环境&#xff08;环境部署自测&#xff09;、生产环境等&#xff0c;由于不同的环境需要不同的配置信息&#xff0c;为了便于开发使…

python-自动化篇-运维-监控-简单实例-道出如何使⽤Python⾃动化数据库备份?

使⽤Python⾃动化数据库备份是⼀种有效的⽅式&#xff0c;可以确保数据库数据的安全性和可恢复性。 以下是⼀般步骤&#xff0c;说明如何使⽤Python⾃动化数据库备份&#xff1a; 选择数据库备份⼯具&#xff1a;⾸先&#xff0c;选择适合数据库类型的备份⼯具。不同的数据库系…

opencv——将2张图片合并

效果演示: 带有绿幕的图片的狮子提取出来,放到另一种风景图片里! 1. 首先我们要先口出绿色绿幕,比如: 这里将绿色绿色绿幕先转为HSV,通过修改颜色的明暗度,抠出狮子的轮廓。 代码 : import cv2 as cv import numpy as np import matplotlib.pyplot as plt def showI…

C++模板判断类中是否存在某个名称的成员函数

由一道C面试题引发的思考 - 知乎 //判断是否存在指定的成员函数名 template <typename T, typename void> struct HasMemF_Fun : public std::false_type {};template <typename T> struct HasMemF_Fun<T, std::void_t<decltype(&T::Fun123)>>: s…

Unity MonoBehaviour 单例和标准单例的区别

共同特点 单一实例&#xff1a;无论是 MonoBehaviour 单例还是标准单例模式&#xff0c;它们都保证类只有一个实例存在。 全局访问点&#xff1a;两种单例模式都提供一个全局访问点&#xff0c;允许从应用程序的任何地方访问单例实例。这通常是通过一个公共的静态方法或属性实…

spring-boot-admin的介绍和使用

概述 Spring Boot 有一个非常好用的监控和管理的源软件&#xff0c;这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供实时警报功能。 主要的功能点有&#xff1a; 显…

tcpdump 抓包无法落盘

文章目录 问题背景解决办法 问题背景 在嵌入式设备中(Linux系统)&#xff0c;为了分析两个网络节点的通讯问题&#xff0c;往往需要用到tcpdump&#xff0c;抓一个.pcap的包在PC端进行分析。博主在实际操作中发现&#xff0c;抓包无法实时落盘。 解决办法 # 下面的命令是写在…

面试八股文(2)

文章目录 1.ArrayList和LinkedList区别2.HashMap和HashTable区别3.线程的创建方式4.Java中异常处理5.Java序列化中某些字段不想进行序列化&#xff1f;6.Java序列化7.静态方法和实例方法8.List、Set、Map三者区别9.ArrayList和Vector区别10.HashMap和HashSet区别 1.ArrayList和…

还在用findViewById,不来了解下其它方式?

众所周知&#xff0c;都2225年了&#xff0c;如果你还在用Java敲安卓代码&#xff0c;findViewById已经是一种非常繁琐的操作&#xff0c;如果要去获取的id数量多&#xff0c;则对开发更加不友好。如果一个页面id过多&#xff0c;经常会有如下场景&#xff1a; TextView title…