LaTeX教程(三)——文档格式排版

本文详细介绍了LaTeX中如何处理章节目录、交叉引用和脚注,以及如何使用特殊环境如列表、文本对齐、引用和代码展示。通过实例展示了如何生成章节、自定义目录、标签引用、脚注插入,以及列表、文本对齐、引用环境和代码块的设置。此外,还提到了伪代码的展示方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 章节目录

1.1 生成章节

写文章或者论文的时候,章节目录可谓是必不可少的,下面我们来聊聊LaTeX怎么处理章节。

LaTeX中的章节,从上到下一般由如下几个层级的划分:

  1. \chapter{⟨title⟩}
  2. \section{⟨title⟩}
  3. \subsection{⟨title⟩}
  4. \subsubsection{⟨title⟩}
  5. \paragraph{⟨title⟩}
  6. \subparagraph{⟨title⟩}

其中 \chapter 层级是 report、book 才有的,article 中并不存在。

LaTeX中的章节章节命令都是自动编号的,如果不需要自动编号,则可以使用 * 命令,如 \section*{⟨title⟩}

此外,对于一些比较大的文章,还可以使用 \part 命令将其分为几个独立的部分,每一个部分是相互独立的,每一个部分中的章节重新编号。示例如下

\documentclass[12pt, a4paper, oneside,titlepage]{report}
\usepackage{ctex, ulem} %导入中文包
\title{LaTex教程}
\author{Suppose}
\date{\today}
\begin{document}
	\maketitle
	\chapter{绪论}
	\section{引言}
	单单从字面上理解,知识图谱应该是一种更加结构化的知识库,将散乱的知识有效的组织起来,方便人们的查阅,而不是像普通的信息一样全部由文字组成。
	
	伴随着web技术的不断演进与发展,人类先后经历了以文档互联为主要特征的“web 1.0”时代,以数据互联为特征的“web 2.0”时代,正在迈向基于知识互联的崭新“Web 3.0”时代。
	
	\section{实验方法}
	\part{正文}
	\section{实验结果}
	\subsection{数据}
	\subsection{图表}
	\subsubsection{实验条件}
	\subsubsection{实验过程}
	\subsection{结果分析}
	\section{结论}
	\section{致谢}
\end{document}

输出如下

项目Value在这里插入图片描述

1.2 生成目录

LaTeX中生成目录的方法十分简单,只需要在合适的地方插入命令 \tableofcontents 即可。

默认会插入一页新页作为目录,如在上述代码的 \maketitle 后添加 \tableofcontents 后,可以得到下面的一页新页。不过这样添加后,目录会变成第一页,但是很多情况下目录是不要页码的,所以还需要在 \tableofcontents 后面添加下面三行代码。

\thispagestyle{empty} %去除目录的页码
\newpage %断页
\setcounter{page}{1}%新页从1开始编号

显示的目录如下
https://img-blog.csdnimg.cn/12a1e794277a404db19aefba23768178.png

2. 交叉引用和脚注

2.1 交叉引用

LaTeX一个很强大的功能就是交叉引用。

在行文过程中,我们可能需要引用自己前面写过的结果。比如“在第一章第5节我们提到……”“请参见我在第327页做的推导……”之类的。在这种情况下,自动化的需求是非常高的。如果说我手动输入了这些数字,那么一旦文档结构有变动,产生的工作量将非常可观。这些东西你还不能不改,因为你不改的话完全就是错的,本来想引用第3节结果写的是“见第2节”。但这在 LaTeX 中完全不是问题。我们可以用标签(label)和交叉引用来解决这个问题。

标签和交叉引用的基本思路是这样的。首先把我需要引用的章节用 \label{标签名称} 进行标记,然后在需要引用它的时候用 \ref{标签名称} 进行引用。这样一来,引擎在进行编译的时候就需要编译两次:第一次生成所有章节的编号,第二次再把这些编号填充到相应的位置。下面我们来看一个使用的例子:

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, ulem} %导入中文包
\begin{document}
	\section{引言}
	\section{实验方法}
	\section{实验结果}\label{sec:shi}
	\subsection{数据}
	我在第 \ref{sec:shi} 节中提到过
	\section{结论}
	\section{致谢}
\end{document}

在这里插入图片描述

2.2 脚注

使用 \footnote 命令可以在页面底部生成一个脚注,实例如下

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, ulem} %导入中文包
\begin{document}
	\section{引言}
	\section{实验方法}
	\section{实验结果}\label{sec:shi}
	\subsection{数据}
	我在第 \ref{sec:shi} 节中提到过 \footnote{我根本没提到过}
	\section{结论}
	\section{致谢}
\end{document}

在这里插入图片描述

3. 特殊环境

3.1 列表

LATEX 提供了基本的有序和无序列表环境 enumerateitemize,两者的用法很类似,都用\item 标明每个列表项。enumerate 环境会自动对列表项编号。基本用法如下

\begin{enumerate}
\item . . .
\end{enumerate}

其中 \item 可带一个可选参数,将有序列表的计数或者无序列表的符号替换成自定义的符号。列表可以嵌套使用,最多嵌套四层。

关键字环境 description 的用法与以上两者类似,不同的是 \item 后的可选参数用来写关键字,以粗体显示,一般是必填的。示例如下

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, ulem} %导入中文包
\begin{document}
	
	\begin{enumerate}
		\item 第一
		\item[*] 第二
		\item 第三
	\end{enumerate}

	\begin{itemize}
		\item 第一
		\item[*] 第二
		\item 第三
	\end{itemize}

	\begin{description}
		\item[Enumerate] Numbered list.
		\item[Itemize] Non-numbered list.
	\end{description}
\end{document}

在这里插入图片描述

3.2 文本对齐

centerflushleftflushright 环境分别用于生成居中、左对齐和右对齐的文本环境。除此之外,还可以用 \centering\raggedright\raggedleft 命令直接改变文字的对齐方式。正文区内容如下

	\begin{center}
		Centered text using a
		center environment.
	\end{center}
	\begin{flushleft}
		Left-aligned text using a
		flushleft environment.
	\end{flushleft}
	\begin{flushright}
		Right-aligned text using a
		flushright environment.
	\end{flushright}

	\centering
	Centered text paragraph.
	
	\raggedright
	Left-aligned text paragraph.
	
	\raggedleft
	Right-aligned text paragraph.

在这里插入图片描述
从上述可以看出,center 等环境会在上下文产生一个额外间距,而 \centering 等命令不产生,只是改变对齐方式。

3.3 引用环境

LaTex常用的引用环境有三种, quotequotationversequote 用于引用较短的文字,首行不缩进;quotation 用于引用若干段文字,首行缩进。引用环境较一般文字有额外的左右缩进。verse 用于排版诗歌,与 quotation 恰好相反,verse 是首行悬挂缩进的。

	Francis Bacon says:
	\begin{quote}
		Knowledge is power.
	\end{quote}

	《木兰诗》:
	\begin{quotation}
		万里赴戎机,关山度若飞。
		朔气传金柝,寒光照铁衣。
		将军百战死,壮士十年归。
		归来见天子,天子坐明堂。
		策勋十二转,赏赐百千强。⋯⋯
	\end{quotation}

	Rabindranath Tagore’s short poem:
	\begin{verse}
		Beauty is truth’s smile
		when she beholds her own face in
		a perfect mirror.
	\end{verse}

在这里插入图片描述

3.4 代码环境

代码块
使用 \usepackage{listings} 宏包,并使用 \lstset{} 进行基础设置,然后使用 \begin{lstlisting}[language=xxx]\end{lstlisting} 插入代码块。

基础设置包括行号,不显示字符串空格,代码块边框,不包含颜色等设置,要设置颜色和字体请见下文的高级用法。

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, listings} %导入中文包

% 代码块基础设置
\lstset{
	numbers=left,                          	% 在左侧显示行号
	showstringspaces=false,        			% 不显示字符串中的空格
	frame=single,                         	% 设置代码块边框
	columns=flexible,%不随便添加空格,只在已经有空格的地方添加空格
	breaklines,%自动换行
}


\begin{document}
	\maketitle
\begin{lstlisting}[   % 进行参数设置
		language=c,gobble = 4,tabsize=4]  
	#include <stdio.h>
	
	// main function
	int main() {
		printf("Hello World!");
		return 0;
		if (a == 1){
			c = 2
		}
	}
\end{lstlisting}
\end{document}

显示如下
在这里插入图片描述
实际上,在使用\usepackage{listings} 宏包时,可以在导言中对所有的代码块进行全局设置,也可以在每一个环境引用中进行单独的设置,常用的设置如下:

设置含义可选值
breaklines代码过长时是否自动换行true,false
numbers在哪里显示每行的编号leftrightnone
stepnumber每隔多少行显示行号整数即可
firstnumber行号起始数字整数或 last:起始行数为上一段lstlisting环境结尾的行数
tabsize缩进的空格数整数
showstringspaces是否显示程序中的空格true,false

此外还可以设置字符串颜色、关键字颜色、背景色、边框样式等等,这里提供一个比较好的设置模板,大家可以直接拿来用。

\usepackage[dvipsnames]{xcolor}  % 更全的色系

% 代码块基础设置
\lstset{
	backgroundcolor = \color{yellow!10},    % 背景色:淡黄
	basicstyle = \small\ttfamily,           % 基本样式 + 小号字体
	rulesepcolor= \color{gray},             % 代码块边框颜色
	breaklines = true,                  % 代码过长则换行
	numbers = left,                     % 行号在左侧显示
	numberstyle = \small,               % 行号字体
	keywordstyle = \color{blue},            % 关键字颜色
	commentstyle =\color{green!100},        % 注释颜色
	stringstyle = \color{red!100},          % 字符串颜色
	frame = shadowbox,                  % 用(带影子效果)方框框住代码块
	showspaces = false,                 % 不显示空格
	columns = fixed,                    % 字间距固定
	morekeywords = {as},                % 自己添加新的关键字
	tabsize=4,
}

将其加入导言后,正文引用环境时只需要设置 language 参数即可。

伪代码

需要使用 \usepackage{algorithm2e} 宏包,其一个例子如下

\documentclass[12pt, a4paper, oneside,titlepage]{article}
\usepackage{ctex, listings} %导入中文包
\title{LaTex教程}
\author{Suppose}
\date{\today}
\usepackage[ruled,linesnumbered]{algorithm2e}

\begin{document}
	\maketitle
	\begin{algorithm}
		\caption{Simulation-optimization heuristic}\label{algorithm}
		\KwData{current period $t$, initial inventory $I_{t-1}$, initial capital $B_{t-1}$, demand samples}
		\KwResult{Optimal order quantity $Q^{\ast}_{t}$}
		$r\leftarrow t$\;
		$\Delta B^{\ast}\leftarrow -\infty$\;
		\While{$\Delta B\leq \Delta B^{\ast}$ and $r\leq T$}{$Q\leftarrow\arg\max_{Q\geq 0}\Delta B^{Q}_{t,r}(I_{t-1},B_{t-1})$\;
			$\Delta B\leftarrow \Delta B^{Q}_{t,r}(I_{t-1},B_{t-1})/(r-t+1)$\;
			\If{$\Delta B\geq \Delta B^{\ast}$}{$Q^{\ast}\leftarrow Q$\;
				$\Delta B^{\ast}\leftarrow \Delta B$\;}
			$r\leftarrow r+1$\;}
	\end{algorithm}
\end{document}

输出为
在这里插入图片描述
在导言区引用的时候,可以进行一些设置,参数如下

参数含义
linesnumbered显示行号
ruled标题显示在上方,不加就默认显示在下方
vlined代码段中用线连接
boxed将算法插入在一个盒子里

其使用规则如下

在这里插入图片描述

如果需要使用if-elseif-elseif-else这样的形式,可以使用如下的格式

\uIf {condition 1} {
    code 1;
} \ElseIf {condition 2} {
    code 2;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值