LaTeX教程(三)——文档格式排版
文章目录
- 1. 章节目录
- 1.1 生成章节
- 1.2 生成目录
- 2. 交叉引用和脚注
- 2.1 交叉引用
- 2.2 脚注
- 3. 特殊环境
- 3.1 列表
- 3.2 文本对齐
- 3.3 引用环境
- 3.4 代码环境
1. 章节目录
1.1 生成章节
写文章或者论文的时候,章节目录可谓是必不可少的,下面我们来聊聊LaTeX怎么处理章节。
LaTeX中的章节,从上到下一般由如下几个层级的划分:
其中 \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}输出如下
1.2 生成目录
LaTeX中生成目录的方法十分简单,只需要在合适的地方插入命令 \tableofcontents 即可。
默认会插入一页新页作为目录,如在上述代码的 \maketitle 后添加 \tableofcontents 后,可以得到下面的一页新页。不过这样添加后,目录会变成第一页,但是很多情况下目录是不要页码的,所以还需要在 \tableofcontents 后面添加下面三行代码。
\thispagestyle{empty} %去除目录的页码 \newpage %断页 \setcounter{page}{1}%新页从1开始编号显示的目录如下
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 提供了基本的有序和无序列表环境 enumerate 和 itemize,两者的用法很类似,都用\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 文本对齐
center、flushleft 和 flushright 环境分别用于生成居中、左对齐和右对齐的文本环境。除此之外,还可以用 \centering 、\raggedright 、\raggedleft 命令直接改变文字的对齐方式。正文区内容如下
\begin{center}Centered text using acenter environment.\end{center}\begin{flushleft}Left-aligned text using aflushleft environment.\end{flushleft}\begin{flushright}Right-aligned text using aflushright environment.\end{flushright}\centeringCentered text paragraph.\raggedrightLeft-aligned text paragraph.\raggedleftRight-aligned text paragraph.
从上述可以看出,center 等环境会在上下文产生一个额外间距,而 \centering 等命令不产生,只是改变对齐方式。
3.3 引用环境
LaTex常用的引用环境有三种, quote 、quotation 、verse。quote 用于引用较短的文字,首行不缩进;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 smilewhen she beholds her own face ina 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 functionint main() {printf("Hello World!");return 0;if (a == 1){c = 2}} \end{lstlisting} \end{document}显示如下
实际上,在使用\usepackage{listings} 宏包时,可以在导言中对所有的代码块进行全局设置,也可以在每一个环境引用中进行单独的设置,常用的设置如下:
| breaklines | 代码过长时是否自动换行 | true,false |
| numbers | 在哪里显示每行的编号 | left、right、none |
| 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; }总结
以上是生活随笔为你收集整理的LaTeX教程(三)——文档格式排版的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 浅谈基于SDL的2D纵版弹幕射击游戏相关
- 下一篇: 单片机中灯泡显示miss_基于单片机的交