环境配置

Live 的安装教程可以在 A short introduction to installation written in Chinese 获取。

如果觉得配置麻烦可以使用 Overleaf, 在线 LaTeX 编辑器 在线编辑。

基础指令

导言区

在所有的文档开头,需要编写导言区,作用是规定文档基础格式和调用宏包,可以对应地理解为 Python 中的 import 和 C 语言中的 #include 或者 #define

文章基础格式定义

一般导言区的开头是 \documentclass 定义文章基础类型格式。

1
\documentclass[12pt,a4paper]{article}

的所有指令都由 \ 作为起始。

这里的参数 article 提供的一种基础的文档类型,此外还有 book (出版书籍)、beammer (幻灯片) 等类型。本文档主要介绍 article (文章) 类型。同时 [] 中的参数分别定义了正文字体大小 12pt 和纸张大小 a4paper,读者可以根据需要自行调整。

宏包调用及常用宏包介绍

类似于 Python 的各种库, 社区也同样提供了多种多样可以直接调用的宏包,可以用来丰富我们的排版格式。如果我们需要使用某个宏包,只需要在导言区调用该宏包即可。

1
\usepackage[heading = true]{ctex}

上面这条指令便是调用宏包的基础命令格式,其中 [] 中的内容是宏包支持的调整参数,例中 heading = true 是宏包 ctex 的一个可调整参数,作用是使文章的默认标题格式为中文排版格式。而 {} 中的便是具体的宏包名称。从这里我们可以窥见 指令的基础格式,即 [] 中为可调整参数,{} 中为主要命令。

接下来介绍一些比较常用的宏包:

1
2
3
4
5
6
7
8
9
10
11
12
13
\usepackage{ctex} % 中文输入支持
\usepackage{amsmath,amsfonts,amssymb}% 为公式输入创造条件
\usepackage{graphicx}% 图片插入
\usepackage{subfig}% 图片并列排版——子图支持
\usepackage{bibentry,natbib}% 参考文献
\usepackage{enumerate}% 短编号
\usepackage{fancyhdr} % 设置全文页眉、页脚的格式
\usepackage{geometry}% 页边距设置
\usepackage{multicol} % 合并单元格——列
\usepackage{multirow} % 合并单元格——行
\usepackage{listings} % 代码块
\usepackage{xcolor} % 颜色调整
\usepackage{hyperref} % 超链接

宏包调用具体参数本比较繁多复杂,为简洁文档不做详细介绍,读者若需要可以自行翻阅官方文档。

页边距、页眉页脚设计基础

文章页面布局的设计中最为基础的便是页边距和页眉页脚的设计,需要调用上面提到的 fancyhdrgeometry 宏包。下面提供一个基础的设置。

1
2
3
4
5
6
7
\geometry{left=3cm,right=3cm,top=2.5cm,bottom=2.5cm} % 文章左侧边距、右侧边距、顶部留白、底部留白
\fancyhead[l]{左页眉}
\fancyhead[c]{中页眉}
\fancyhead[r]{右页眉}
\fancyfoot[l]{左页脚}
\fancyfoot[r]{中页脚}
\fancyfoot[c]{右页脚}

的排版非常灵活,有些默认情况下没有提供的样式可以自己利用代码的组合来创建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
\documentclass[article]
\usepackage{geometry}
\geometry{left=3cm,right=3cm,top=2.5cm,bottom=2.5cm}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[l]{
\begin{tabular}{c}
{USTC}\vspace{0.1cm}\\
\qquad
\end{tabular}}
\fancyhead[r]{
\begin{tabular}{c}
{ICS.A}\vspace{0.1cm}\\
\qquad
\end{tabular}}
\fancyhead[C]{
\begin{tabular}{cccc}
& \multicolumn{2}{c}{\large{\textbf{Home Work}}\vspace{0.1cm}} & \\
& & PB12345 SanZhang &
\end{tabular}} %在此处插入作者信息,类似于实验报告纸
\fancyfoot[C]{ Page {\thepage} }
\renewcommand{\headrulewidth}{0.1pt}

\begin{document}
\section{Hello World}
\end{document}

编译效果如下:

header

我在页眉页脚的设置利用表格环境搭建了类似试验报告纸的格式。这里可以窥见 排版的一大特点,即类似手写逻辑一样,只需要知道自己想在某个部分写什么,就可以组合出各种样式,有些类似 html 语言的特点。

文章标题

文章的标题和作者信息等内容也可以在导言区定义。

1
2
3
4
5
6
7
8
\documentclass[article]
\title{Hello World}
\author{SanZhang}
\date{2088.8.8}

\begin{document}
\maketitle
\end{document}

如此在导言区定义好基本信息之后,只需要在正文中引入命令 \maketilte 便会自动生成标题。这里的 \date{} 命令如果删去则会自动添加编译时的日期,如果调用参数 \date{\today} 则同样会引入编译当天的日期。

编译效果如下:

title

其他应用

总而言之导言区就是需要定义在整个文档之前的,大部分情况下适用于整篇文档的一些基础设置,除了上述的应用外,还可能有对代码环境的定义、自定义指令、自定义标题格式等等,这里不再赘述。

正文

定义好导言区的格式之后我们就可以进入正文的编写了。

正文环境

代码的一个比较有特色的应用是环境。开始于 \being{env} 结束于 \end{env}。这两条语句之间的部分便会被应用于对应的环境,正文环境为 document,因此我们需要在 \being{document}\end{document} 之间编写正文内容。

1
2
3
\begin{document}
Content...
\end{document}

标题

提供了七种默认的标题等级:

1
2
3
4
5
6
7
\part % 
\chapter % 章标题
\section % 节标题
\subsection % 次级节标题
\subsubsection % 末级节标题
\paragraph{paragraph} % 段落
\subparagraph{subparagraph} % 次段落

其中 Chapter 不支持 article 类型的文档,多用于 book 类型中。在中英文环境中的编译结果如下:

其中直接使用 \section 等命令默认会有编号,若在命令后加上一个 * 符号如 \section*{ABC} 则不会编号。

除了默认的标题格式,我们还可以根据需要自定义标题格式。

1
2
3
4
5
6
7
8
\usepackage{titlesec} % 自定义多级标题格式的宏包
\titleformat{command} % \seciton 等
- [shape] % 定义标题类型和标题样式,字体
- {format} % 定义标题格式:字号(大小),加粗,斜体
- {label} % 定义标题的标签,即标题的标号等
- {sep} % 定义标题和标号之间的水平距离
- {before-code} % 定义标题前的内容
- [after-code] % 定义标题后的内容

以上参数具体如何设计可以自行参考相关文档,这里不再赘述,只给出一些例子:

1
2
3
4
5
6
\titleformat{\section}[block]{\LARGE\bfseries}{Sec.\arabic{section}}{1em}{Hello: }[]
\titleformat{\subsection}[block]{\Large\itshape\mdseries}{\arabic{section}.\arabic{subsection}}{1em}{}[]

\titleformat{\subsubsection}[block]{\normalsize\bfseries}{\arabic{subsection}-\alph{subsubsection}}{1em}{}[]

\titleformat{\paragraph}[block]{\small\bfseries}{[\arabic{paragraph}]}{1em}{}[]

定义的部分应当如前文所说,放在导言区。

编译效果如下:

内容

内容的编辑没有太多可以讲的,只有一些常用的操作需要遵循 的语法要求,其他的诸如缩进行间距之类的内容并不需宗门特别在意, 会自己调整。

  • 空格:在文档中直接写空格默认不会被编译,以下是空格相关的代码以及编译效果;

    代码 编译效果 空格
    ab 无空格
    a\,b 小空格
    a\; b 中等空格
    a \ b 大空格
    a\quad b 一个空格
    a\qquad b 两个空格
    a\!b 紧贴
  • 回车:在文档中回车也不会被编译,可以用 \\ 或者 \newline 命令另起一行,新的一行没有缩进,段落之间的正常换行则需要在两段之间保留一个空行:

    1
    2
    3
    4
    这是
    第一段

    这是第二段 \\ 换行 \newline 再换行。

  • 令起一页,可以用 \newpage 或者 \clearpage 命令;

  • 文字加粗,可以用命令 \textbf{文本} 实现;

  • 文字居中,利用 center 环境实现:

    1
    2
    3
    \begin{center}
    居中文本
    \end{center}

其他操作可以在需要使用的时候可以查阅相关文档,这里不再赘述。

公式环境

最强大的部分就是它的公式编辑,接下来我会介绍一些常用的公式编辑语言和方法。

  • 基础公式块;基础公式块分为行间公式 \(a + b\) 和行内公式 \[a + b\] ,编译出来的公式

    接下来的内容大部分都需要在公式块中编写;

  • 上下标:a^n 编译为 a_b 编译为

  • 分数:\frac{a}{b} 编译为 ;

  • 求和、极限:\sum_{i = 1}^{n}x_i 编译为 \lim_{n \rightarrow \infty}\frac{1}{n} 编译为

  • 根号:\sqrt{a} 编译为 ​;

  • 不等号:大于号 \geq、小于号 \leq 以及不等号 \neq,编译为:;这里如果觉得默认的符号不好看,需要调用 amssymb 宏包以支持 \leqslant\geqslant 编译为: 使得符号更美观;

  • 公式环境:除了基础公式块,还可以用 align 环境编译公式,如此编译的公式默认为行间公式:

    1
    2
    3
    \begin{align}
    a+b
    \enb{align}

    如此编译出来的公式会自动编号,如果不想要编号则可以用 algn* 环境。

    此外,align 环境于基础公式块不同的地方在于该环境中支持公式换行书写,这样就可以写出类似托式的格式了:

    1
    2
    3
    4
    \begin{align*}
    P\{X\} &= P\left\{x \leqslant X\right\} \\
    &= \int_{-\infty}^{x} f(x)\,dx
    \end{align*}

    注意,align 环境和基础公式环境 \[\] 二者选其一,不可同时调用;

  • 自适应括号:在公式环境下写括号可以直接用 () 但是这样的括号不能根据公式的形式自适应大小:

    若想要自适应大小,则可以利用 \left(\rihgt)

    出自之外,像中括号 []、绝对值符号 || 和 大括号 \{\} 等都可以用这样的方法。

    这里要注意由于大括号是 指令中的符号,因此为了如果需要打出来这个符号,则需要在它前面加一个反斜杠 \ 转义,其他的一些特殊符号如百分号,井号之类的也需要加转义符

  • 方程组环境:方程组环境 cases 是一个非常使用的环境,可以用来输入方程组或者分段函数等:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    \usepackage{cases} % 导言区导入宏包

    ...

    % 方程组
    \begin{align}
    \begin{cases}
    a + b = c \\
    c + d = g
    \end{cases}
    \end{align}

    % 分段函数
    \begin{align*}
    f\left(x\right) =
    \begin{cases}
    a + b = c & a > 0 \\
    c + d = g & others.
    \end{cases}
    \end{align*}

  • 矩阵行列式:对于矩阵行列式,可以用 array 环境:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    % 矩阵
    \begin{align*}
    \left(
    \begin{array}{ccc}
    a & a & a \\
    b & b & b \\
    c & c & c
    \end{array}
    \right)
    \end{align*}

    % 行列式
    \begin{align*}
    \left|
    \begin{array}{ccc}
    a & a & a \\
    b & b & b \\
    c & c & c
    \end{array}
    \right|
    \end{align*}

    观察代码逻辑,可以发现它其实就是手写的逻辑,首先引入公式环境,然后写左边右边的括号,再在括号中写相应的内容,这里写这种规律排列的语法和 ​ 表格的语法是相同的。

  • 希腊字母:数学公式怎么能少了希腊字母呢!在 中只需要用每个字母对应的英文作为代码就可以调用希腊字母啦!例如:\alpha \beta 等,同时,大写首字母可以得到字母的大写形式:\Gamma \Omega 等。

到此就基本介绍完了 的基本公式环境,当然这里所述的并不完全,一些没有介绍到的部分请读者自己查阅相关文档。

图片插入

未完待续……

表格插入

未完待续……