整理一下关于LaTeX关于列表,图片和表格的内容。

列表

直接提供例子即可,包括三种列表:

  • 无序列表 itemize
  • 有序列表 enumerate
  • 描述列表 description,通常用于对一组关键词加粗并解释。
1
2
3
4
5
6
7
8
9
10
11
12
\begin{enumerate}
\item 第一层是有序号的列表。
\begin{itemize}
\item 第二层是无序号列表,
\item[记住] 用方括号括起来的内容可以是“小标题”
\end{itemize}
\item 你必须记住:
\begin{description}
\item[列表不会] 让所有事情都看起来很漂亮有序
\item[但是它能够] 让一些东西以非常美丽的方式展现出来
\end{description}
\end{enumerate}

注意在定制enumerate的各种细节时,通常有两个宏包:enumerate和enumitem,建议使用后者:\usepackage{enumitem}

图片

插入图片需要graphicx宏包支持(或者还有与之类似的graphics宏包),并且不同的编译器支持的图片格式不同:

  • pdflatex支持pdf,jpg和png。如果需要支持eps格式,需要导入epstopdf宏包,不支持bmp格式。
  • xelatex支持pdf,eps,jpg,png和bmp格式

graphicx宏包提供的基本命令如下(graphicx宏包支持键值对形式来设置选项)

1
2
3
\includegraphics{<filename>}

\includegraphics[width=,height=,scale=,angle=]{<filename>}

其中的可选参数包括指定宽度,高度,缩放倍数,旋转角度。通常需求为指定宽度即可,例如width=0.8\textwidth

可以在导言区预先指定图片查找的路径,此时文件名就不需要包含路径部分了,否则可能需要指定图片文件的绝对或相对路径

1
2
3
4
5
6
7
8
\graphicspath{{image/}{figure/}{fig/}{img/}}

\graphicspath{
{./figure/}{./figures/}{./fig/}
{./image/}{./images/}{./img/}
{./graphics/}{./graphic/}
{./pictures/}{./picture/}
}

图片(以及表格)通常会放置在浮动体中,分别对应两种预设环境:figure和table。例如

1
2
3
\begin{figure}[htbp]
...
\end{figure}

浮动体的核心在如下的浮动规则参数:

  1. h(here),优先放置在当前上下文位置
  2. t(top),优先放置在当前页或后续页面的顶部
  3. b(bottom),优先放置在当前页或后续页面的底部
  4. p(page),优先放置在一个独立页面中

这几种规则的优先级是锁定为htbp的,但是我们可以选择开启其中的部分规则,例如[hbp]就指定可以基于三种规则来放置,选项的具体顺序没有意义,不会影响规则的优先级。还可以在选项中任意位置加上!来忽略LaTeX对浮动体的默认排版限制,默认限制包括: 浮动体个数(除单独成页外,默认每页不超过 3 个浮动体,其中顶部不超过 2 个,底部不超过 1 个)以及浮动体空间占页面的百分比(默认顶部不超过 70%,底部不超过 30%)。

通常图片的浮动体会加上一个命令来居中放置图片,例如

1
2
3
4
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{demo.png}
\end{figure}

图片可以使用\caption加上标题,在\caption之后可以紧跟\label命令添加引用

1
2
3
4
5
6
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{demo.png}
\caption{Results}
\label{fig:result1}
\end{figure}

常见的需求还有插入子图,有很多种具体方式都可以实现。

有两个不依赖其它宏包的直接方案如下:

  • 第一种方案如下,直接指定间距

    1
    2
    3
    4
    5
    6
    7
    \begin{figure}
    \centering
    \includegraphics[scale=0.5]{a.jpg}
    \hspace{1in} % or \qquad
    \includegraphics[scale=0.5]{b.jpg}
    \caption{Demo}
    \end{figure}

  • 第二种方案如下,创建两个minipage

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    \begin{figure}
    \begin{minipage}[t]{0.5\linewidth}
    \centering
    \includegraphics[scale=0.5]{a.jpg}
    \caption{Demo 1}
    \label{fig:a}
    \end{minipage}
    \begin{minipage}[t]{0.5\linewidth}
    \centering
    \includegraphics[scale=0.5]{b.jpg}
    \caption{Demo 2}
    \label{fig:b}
    \end{minipage}
    \end{figure}

除此之外,还可以依赖其它宏包来实现,常见的相同功能的宏包至少有subfigure(版本过旧,被弃用),subfig(提供\subfloat命令)和subcaption。 这些宏包相互之间是冲突的,有的版本过旧已经被舍弃,建议使用subcaption

1
\usepackage{subcaption} % 加载 subcaption 宏包

使用示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{a.png}
\caption{Demo a}
\label{fig:subfig-a}
\end{subfigure}
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{b.png}
\caption{Demo b}
\label{fig:subfig-b}
\end{subfigure}
\caption{Demo}
\label{fig:example}
\end{figure}

虽然subfigure宏包已经被弃用了,但是鉴于我之前一直在使用,还是记录一下常用示例,导入宏包

1
\usepackage{subfigure}

插入两个并列图片

1
2
3
4
5
6
7
8
9
10
11
\begin{figure}[htbp]
\centering
\subfigure[Demo a]{
\includegraphics[width=7.25cm]{a.png}
}
\subfigure[Demo b]{
\includegraphics[width=7.25cm]{b.png}
}
\caption{Demo}
\label{fig:1}
\end{figure}

插入多行多列图片

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
27
\begin{figure}[htbp]
\centering
\subfigure[第一个]{
\includegraphics[width=.45\linewidth]{img/1.png}
}
\quad
\subfigure[第二个]{
\includegraphics[width=.45\linewidth]{img/2.png}
}
\quad
\subfigure[第三个]{
\includegraphics[width=.45\linewidth]{img/3.png}
}
\quad
\subfigure[第四个]{
\includegraphics[width=.45\linewidth]{img/4.png}
}
\quad
\subfigure[第五个]{
\includegraphics[width=.45\linewidth]{img/5.png}
}
\quad
\subfigure[第六个]{
\includegraphics[width=.45\linewidth]{img/6.png}
}
\caption{Demo}\label{p1}
\end{figure}

表格 TODO

常用代码片段

图片

插入单个图片

1
2
3
4
5
6
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{img/demo.png}
\caption{Results}
\label{fig:result1}
\end{figure}

插入两个并列的图片(基于subcaption宏包,推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.4\textwidth}
\centering
\includegraphics[width=\textwidth]{a.png}
\caption{Demo a}
\label{fig:subfig-a}
\end{subfigure}

\hfill % 插入弹性的水平间距,比固定的\qquad更合适

\begin{subfigure}[b]{0.4\textwidth}
\centering
\includegraphics[width=\textwidth]{b.png}
\caption{Demo b}
\label{fig:subfig-b}
\end{subfigure}

\caption{Demo}
\label{fig:example}
\end{figure}

插入两个并列的图片(基于subfigure宏包)

1
2
3
4
5
6
7
8
9
10
11
\begin{figure}[htbp]
\centering
\subfigure[Demo a]{
\includegraphics[width=7.25cm]{a.png}
}
\subfigure[Demo b]{
\includegraphics[width=7.25cm]{b.png}
}
\caption{Demo}
\label{fig:1}
\end{figure}

表格

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
27
28
\begin{table}[ht]
\centering
\begin{tabular}{c|cccccccc}
\hline
$\delta$ & N & $L^1$ error & order & $L^2$ error & order & $L^\infty$ error & order \\
\hline
\multirow{4}{*}{0.01h} & 20 & 1.65e-01 & - & 8.47e-02 & - & 1.12e-01 & - \\
& 40 & 8.31e-02 & 0.99 & 4.28e-02 & 0.99 & 5.65e-02 & 0.99 \\
& 80 & 4.18e-02 & 0.99 & 2.15e-02 & 0.99 & 2.82e-02 & 1.00 \\
& 160 & 2.09e-02 & 1.00 & 1.08e-02 & 1.00 & 1.41e-02 & 1.00 \\
\hline
$\delta$ & N & $L^1$ error & order & $L^2$ error & order & $L^\infty$ error & order \\
\hline
\multirow{4}{*}{0.5h} & 20 & 1.71e-01 & - & 8.61e-02 & - & 1.09e-01 & - \\
& 40 & 8.93e-02 & 0.94 & 4.45e-02 & 0.95 & 5.58e-02 & 0.97 \\
& 80 & 4.56e-02 & 0.97 & 2.26e-02 & 0.98 & 2.81e-02 & 0.99 \\
& 160 & 2.30e-02 & 0.99 & 1.14e-02 & 0.99 & 1.41e-02 & 1.00 \\
\hline
$\delta$ & N & $L^1$ error & order & $L^2$ error & order & $L^\infty$ error & order \\
\hline
\multirow{4}{*}{0.99h} & 20 & 1.95e-01 & - & 9.50e-02 & - & 1.07e-01 & - \\
& 40 & 1.04e-01 & 0.90 & 5.04e-02 & 0.92 & 5.51e-02 & 0.95 \\
& 80 & 5.39e-02 & 0.95 & 2.59e-02 & 0.96 & 2.79e-02 & 0.98 \\
& 160 & 2.74e-02 & 0.98 & 1.31e-02 & 0.98 & 1.40e-02 & 0.99 \\
\hline
\end{tabular}
\caption{$k=0$}\label{tab:0}
\end{table}