LaTeX
导入外部图形
LaTeX
你可以使用 graphicx
包来导入外部图形。最重要的命令是 \includegraphics
。LaTeX 将图像视为正常文本,即作为具有一定高度和宽度的框。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
The following image does not show any wombats
\includegraphics[height=\baselineskip]{example-image}.
\includegraphics[height=3cm]{example-image-a}\includegraphics[width=5cm]{example-image-b}
\includegraphics[height=3cm]{example-image-a} \includegraphics[width=5cm]{example-image-b}
\end{document}
包文档列出了 width
和 height
等选项,此外还有其他选项。
使用 pdflatex
时支持多种图形格式:pdf、png 和 jpg。现代的 LaTeX 安装也支持 EPS 文件,但间接支持。
在 dvi 模式下,LaTeX 只支持 EPS 文件。
对齐图像
你可以将图像放入矩阵中,只需要为图像指定一个合适的宽度。
\documentclass{article}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\begin{center}
\includegraphics[width=.3\linewidth]{example-image}\quad\includegraphics[width=.3\linewidth]{example-image-a}\quad\includegraphics[width=.3\linewidth]{example-image-b}
\\[\baselineskip]% adds vertical line spacing
\includegraphics[width=.3\linewidth]{example-image}\quad\includegraphics[width=.3\linewidth]{example-image-a}\quad\includegraphics[width=.3\linewidth]{example-image-b}
\end{center}
\end{document}
三个图像在同一行,每个图像的宽度为可用行宽的 30%,并且相对于下面的文本居中。
不同的图像也可以轻松地对齐成矩阵形状。
添加标题和交叉引用
如果你想添加图像的标题,并让 LaTeX 跟踪编号,可以参考浮动部分。
图形转换
epstopdf
你可以使用 epstopdf
工具将 EPS 转换为 PDF,epstopdf
工具在加载 graphicx
包时会在后台自动被 pdflatex
调用。这个过程对用户是完全不可见的。
你可以使用命令行批量转换文件。在 Bourne Shell(Unix)中,可以通过以下命令完成:
$ for i in *.eps; do epstopdf "$i"; done
在 Windows 中,可以通过在与图像同一目录中的批处理文件(带有 .bat
扩展名的文本文件)中加入以下行来批量转换文件:
for %%f in (*.eps) do epstopdf %%f
然后可以从命令行运行此批处理文件。
如果 epstopdf
将你的小图形放到一个大的页面中,可以使用以下命令来裁剪最终的 PDF:
$ epstopdf --gsopt=-dEPSCrop foo.eps
或者尝试使用 ps2pdf
工具,它应该与 Ghostscript 一起安装(Ghostscript 是任何 TeX 分发所需的)。
$ ps2pdf -dEPSCrop foo.eps
图像格式转换
eps2eps
当上述方法都失败时,你可以通过使用 eps2eps
工具简化 EPS 文件,然后再尝试其他转换方法。
$ eps2eps input.eps input-e2.eps
这将把所有字体转换为预绘制的图像,这在提交手稿时有时是需要的。然而,缺点是字体不会被转换为线条,而是转换为位图,从而降低了字体的质量。
imgtops
imgtops
是一个轻量级的图形工具,用于转换栅格图形(JPG、PNG 等)与 EPS/PS 文件之间的格式。
Inkscape
Inkscape 也可以在多个平台上运行,支持从图形界面或命令行进行文件格式转换。例如,你可以通过以下命令将 SVG 图像转换为 PDF:
$ inkscape -z -D --file=input.svg --export-pdf=output.pdf
可以从 LaTeX 文件内运行此命令,使用 LaTeX 的 pdf+tex
导出选项,或者使用简单的宏来完成转换。查看如何在 LaTeX 中包含 SVG 图表。
pstoedit
要正确编辑 EPS 文件,可以使用 pstoedit
将其转换为可编辑格式。例如,要将 EPS 文件转换为 Xfig 可编辑文件,可以使用以下命令:
$ pstoedit -f fig input.eps output.fig
要将 EPS 文件转换为 SVG 文件(可以使用任何矢量图形工具编辑,如 Inkscape),可以使用以下命令:
$ pstoedit -f plot-svg input.eps output.svg
有时,pstoedit
无法创建目标格式(例如当 EPS 文件包含裁剪信息时)。
PDFCreator
在 Windows 下,PDFCreator 是一个开源软件,可以创建 PDF 和 EPS 文件。它安装了一个虚拟打印机,可以通过其他软件访问。
栅格图形转换工具
-
Sam2p 或
-
ImageMagick 或
-
GraphicsMagick(gm convert)。
这三种程序的操作方式非常相似,可以在大多数图形格式之间进行转换。Sam2p
是这三者中最新的,似乎提供了最佳质量并生成最小的文件。
PNG alpha 通道问题
Acrobat Reader 有时在显示包含 alpha 通道的 PNG 格式图形时,可能会遇到颜色显示不正确的问题。你可以通过去除 alpha 通道来解决这个问题。在 Linux 上,可以使用 ImageMagick 的 convert
命令来去除 alpha 通道:
convert -alpha off input.png output.png
将彩色 EPS 转换为灰度图
有时,为了满足出版要求,需要将彩色 EPS 图形转换为黑白或灰度图。这可以通过 eps2eps
和 Ghostscript 包中的程序实现:
$ eps2eps input.eps input-e2.eps
$ pscol -0gray input-e2.eps input-gray.eps
第三方图形工具
我们在此不讨论从 LaTeX 代码中生成的程序化图形(TikZ、PSTricks、MetaPost 等)。有关此内容,请参见介绍程序化图形。
你应该偏向使用矢量图形而不是栅格图形,因为矢量图形的质量更好。只有在处理照片时才应使用栅格图形。任何形式的图表都应使用矢量图形。
如前所述,LaTeX 处理:
-
EPS 和 PDF 用于矢量图形;
-
PNG 和 JPG 用于栅格图形。
如果某些工具无法保存为这些格式,你可能需要在导入之前进行格式转换。
保持浮动对象的位置
placeins
包提供了命令 \FloatBarrier
,它可以用来防止浮动对象被移到它之上。例如,这对于每个章节的开头非常有用。该包还提供了一个选项,可以改变 \section
命令的定义,使其自动包含 \FloatBarrier
。你可以通过加载带有选项 [section]
的包来实现这一点(\usepackage[section]{placeins}
)。FloatBarrier
也可以用来防止浮动对象干扰使用 itemize
或 enumerate
创建的列表。
flafter
包可以用于强制浮动对象在定义之后才出现,而 endfloat
包可以将所有浮动对象放在文档的末尾。
float
包提供了浮动环境的 H
选项,完全禁止它们浮动。
caption
包提供了命令 \captionof{<type>}{<caption text>}
,它允许你在没有浮动环境的情况下为图像设置标题。你可以完全控制图形和标题的位置。
标题
为任何图形或表格添加标题总是一个良好的做法。幸运的是,在 LaTeX 中,这非常简单。你只需在浮动环境内使用命令 \caption{“text”}
。LaTeX 会自动跟踪图形的编号,因此你无需在标题文本中包含编号。
标题的位置通常在浮动对象的下方。然而,位置是由你决定的,因此你应在浮动对象的实际内容之后插入标题命令(但仍在环境内)。如果你把它放在之前,标题将显示在浮动对象上方。试试以下示例来演示这一效果:
\documentclass[a4paper,12pt]{article}
\usepackage[english]{babel}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\caption{A picture of a gull.}
\centering
\includegraphics[width=0.5\textwidth]{gull}
\end{figure}
\begin{figure}
\centering
\reflectbox{%
\includegraphics[width=0.5\textwidth]{gull}}
\caption{A picture of the same gull
looking the other way!}
\end{figure}
\begin{table}
\centering
\begin{tabular}{| l c r |}
\hline
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\hline
\end{tabular}
\caption{A simple table}
\end{table}
Notice how the tables and figures
have independent counters.
\end{document}
注意,命令 \reflectbox{...}
会水平翻转它的内容。
侧边标题
有时我们希望标题出现在浮动对象的侧边,而不是上方或下方。sidecap
包可以用来将标题放在图形或表格旁边。以下示例演示了如何通过使用 SCfigure
环境替代 figure
环境来为图形设置侧边标题。floatrow
包是较新的并且具有更多功能。
\documentclass{article}
\usepackage{graphicx}
\usepackage{sidecap}
\begin{document}
\begin{SCfigure}
\centering
\caption{ ... caption text ... }
\includegraphics[width=0.3\textwidth]%
{Giraffe_picture}% picture filename
\end{SCfigure}
\end{document}
注意,如果你定义了自己的浮动对象位置(默认是 tbp
),并且使用了 sidecap
包中的环境,你需要提供额外的 relwidth
参数,像这样:\begin{SCfigure}[1][!h]
。
无编号标题
在某些类型的文档(如演示文稿)中,可能不希望图形标题以 "Figure" 开头。通过仅将标题文本放入图形环境,而不加以标题命令,你可以轻松抑制这个功能。但这意味着该图形将没有可供列出在图形列表中的标题。
标题设置重命名
如果你想将表格标题从 "Table" 更改为其他名称,可以使用命令 \captionsetup
。例如:
\usepackage{caption}
\captionsetup[table]{name=New Table Name}
这个命令将会将所有表格的标题从默认的 "Table" 更改为 "New Table Name"。
图形和表格的列表
可以使用 \listoftables
或 \listoffigures
命令,在文档的开头或报告中列出图形或表格的标题。每个图形的标题以及图形编号和所在的页码都会出现在这些列表中。
\caption
命令还具有一个可选参数 \caption[“short”]{“long”}
,该参数用于图形或表格的列表。通常,短描述用于列表中的标题,而长描述将放置在图形或表格旁边。如果标题较长,而你只希望在图形/表格列表中显示简短的一行,这个功能非常有用。以下是这种用法的示例:
\documentclass[12pt,]{article}
\usepackage{graphicx}
\newcommand{\species}[1]{\textit{#1} sp.}
\begin{document}
\listoffigures
\section{Introduction}
\begin{figure}
\centering
\includegraphics[width=4in]{gecko}
\caption[Close up of \species{Hemidactylus}]
{Close up of \species{Hemidactylus}, which is part of the genus of the gecko family. It is the second most speciose genus in the family.}
\end{figure}
\end{document}
标签和交叉引用
标签和交叉引用的工作方式与一般情况非常相似 —— 详见标签和交叉引用部分。
如果你想给一个图形加上标签以便后续引用,你需要将标签命令添加在标题之后(在 LaTeX 2e 中,放在内部似乎可以正常工作),但必须放在浮动环境内。如果标签命令放在外部,它会获取章节号。如果标签获取了章节或列表号,而不是图形编号,请将标签放在标题内部以确保正确编号。如果标签放在标题内部时出现错误,请在 \label
命令前使用 \protect
。
让文本环绕图形
有时作者希望某些浮动对象不打断文本的流,而是让文本环绕在它周围。(显然,只有当图形比文本宽度显著窄时,这种效果才好看。)
需要提醒的是:在 LaTeX 中让图形环绕文本将需要手动调整文档。尽管有几个包可以实现这一任务,但没有一个是完美的。在你决定是否在文档中包含带文本环绕的图形之前,请确保你已经考虑了所有的选项。例如,你可以使用两列的布局来排版文档,完全不使用文本环绕。
我们来看一下 wrapfig
包。请注意,wrapfig
可能不包含在 LaTeX 的默认安装中,你可能需要安装额外的包。同时要注意,wrapfig
与 enumerate
和 itemize
环境不兼容。
要使用 wrapfig
,首先需要在导言中添加以下内容:
\usepackage{wrapfig}
然后你可以使用以下命令:
\begin{wrapfigure}[lineheight]{position}[overhang]{width}
lineheight
是图形所跨越的文本行数。如果留空,LaTeX 会自动计算此值,但这可能会导致图形看起来不太美观(间距太大)。你可以手动覆盖 LaTeX 的计算,输入你希望图形跨越的行数。此选项不能以 pt、mm 等单位输入。
图形的定位有八个可能的目标:
-
r
(R): 位于文本的右侧 -
l
(L): 位于文本的左侧 -
i
(I): 内边缘 — 在双面文档中,靠近绑定处 -
o
(O): 外边缘 — 远离绑定处
大写字母允许图形浮动,而小写字母则表示“就在这里”。[4]
图形的外偏移量可以通过 overhang
选项手动设置,单位可以是 pt、cm 等。
width
表示图形的宽度。示例如下:
\begin{wrapfigure}{r}{0.5\textwidth}
\begin{center}
\includegraphics[width=0.48\textwidth]{gull}
\end{center}
\caption{A gull}
\end{wrapfigure}
你也可以通过将宽度设置为 0pt 来让 LaTeX 自动为图形分配宽度:\begin{wrapfigure}{l}{0pt}
。
请注意,我们已经为 wrapfigure
环境和我们包含的图像指定了大小。我们是以文本宽度为单位的:在 LaTeX 中最好使用相对大小,让 LaTeX 为你处理!“wrap”比图片稍微大一些,因此编译器不会发出任何奇怪的警告,并且图像和周围的文本之间会有一个小的空白框。你可以调整它以获得更好的效果,但如果不保持图像小于“wrap”,你会看到图像覆盖在文本上。
wrapfig
包还可以与用户定义的浮动对象一起使用,结合 float
包。有关自定义浮动对象的更多信息,请参见下文。
处理图形上的多余空白
你可以使用 intextsep
参数来控制图形上下的额外空白:\setlength\intextsep{0pt}
要控制图像与文本之间的水平空白,使用 columnsep
参数。
有时,图形的上下可能会有过多(或过少)的空白。在这种情况下,你可以简单地使用可选参数 [lineheight]
,它指定图形所占的文本行数。如果此选项为空,LaTeX 会自动计算该值,但这可能会导致图形间距不合适。你可以手动覆盖此计算,输入希望图形跨越的行数。此选项不能用 pt、mm 等单位指定。
注意,center
环境会在图形上下添加额外的空白;考虑使用 \centering
命令来替代。
另一种方法是在浮动对象中使用 \vspace{...}
命令添加空白。参数是你想要添加的空间大小,你可以使用任意单位,如 pt、mm、in 等。如果你提供负值参数,它将添加负空间,从而去除一些空白。使用 \vspace
会使标题相对于浮动对象移动,而 [lineheight]
参数则不会。以下是使用 \vspace
命令的示例,代码与之前的示例相同,我们只是添加了一些负的垂直空白来压缩整个图形:
\begin{wrapfigure}{r}{0.5\textwidth}
\vspace{-20pt}
\begin{center}
\includegraphics[width=0.48\textwidth]{gull}
\end{center}
\vspace{-20pt}
\caption{A gull}
\vspace{-10pt}
\end{wrapfigure}
在这种情况下,图形可能会显得过于紧凑,但你可以根据需要调整空间。通常最好不要添加任何额外的空间,让 LaTeX 完成排版工作!
(此时问题出在使用 \begin{center}
来居中图像。center
环境添加了额外的空间,如果使用 \centering
,可以避免这个问题。)
另外,你可以使用 picins
包来替代 wrapfig
包,它在没有额外空白的情况下自动创建正确的版本。
也可以考虑使用 floatflt
包来替代 wrapfig
。[5]
如果你想完全移除图形的空白,可以使用程序 pdfcrop
,大多数 TeX 安装中都包含此程序。
子浮动对象
一个有用的扩展是 subcaption
包,它允许在一个浮动环境内使用子浮动对象。subfig
包(subfigure
包已弃用[5])是一个有用的替代方案,特别是在与不兼容 subcaption
包的 LaTeX 模板(如 Springer 和 IOP 期刊模板,IEEETran 和 ACM SIG)结合使用时。这些包使得作者可以在图形或表格浮动内创建子图或子表格。每个子浮动对象都有自己的标题,还可以有一个可选的全局标题。以下是使用 subcaption
包的示例:
\usepackage{graphicx}
\usepackage{subcaption}
\begin{figure}
\centering
\begin{subfigure}[b]{0.3\textwidth}
\includegraphics[width=\textwidth]{gull}
\caption{A gull}
\label{fig:gull}
\end{subfigure}
~ % Add desired spacing between images, e.g. ~, \quad, \qquad, \hfill etc.
\begin{subfigure}[b]{0.3\textwidth}
\includegraphics[width=\textwidth]{tiger}
\caption{A tiger}
\label{fig:tiger}
\end{subfigure}
~ % Add desired spacing between images
\begin{subfigure}[b]{0.3\textwidth}
\includegraphics[width=\textwidth]{mouse}
\caption{A mouse}
\label{fig:mouse}
\end{subfigure}
\caption{Pictures of animals}\label{fig:animals}
\end{figure}

你会注意到,图形环境设置与常规图形相同。你也可以使用 table
环境来表示子表格。对于每个子浮动对象,你需要使用:
\begin{table}[<placement specifier>]
\begin{subtable}[<placement specifier>]{<width>}
\centering
... table 1 ...
\caption{<sub caption>}
\end{subtable}
~
\begin{subtable}[<placement specifier>]{<width>}
\centering
... table 2 ...
\caption{<sub caption>}
\end{subtable}
\end{table}
跨引用子浮动
如果你打算跨引用任何子浮动,查看标签插入的位置;如果 \caption
放在子图环境之外,将提供全局标题。
subcaption
会将图形或表格并排排列,只要它们能适应页面,否则,它将自动将子浮动移到下方。这个效果可以手动添加,通过在你希望移到新行的图形前面加上换行命令(\\
)。
图形之间的水平间距 由多个命令控制,这些命令放置在 \begin{subfigure}
和 \end{subfigure}
之间:
-
非断开空格(如上例中的
~
)可以用来在子图之间插入空间。 -
数学空间:
\qquad
,\quad
,\;
, 和\
。 -
通用空间:
\hspace{''length''}
。 -
自动扩展/收缩空间:
\hfill
。
多个部分的图形
有时你需要将一个图形分成多个浮动对象,例如因为图形太大,不能在一页中显示。在这种情况下,你可以使用 caption
包来实现连续图形。
在你的导言区中加入:
\usepackage{caption}
\DeclareCaptionLabelFormat{cont}{#1~#2\alph{ContinuedFloat}}
\captionsetup[ContinuedFloat]{labelformat=cont}
然后可以使用连续浮动,如下所示:
\begin{figure}
\ContinuedFloat*
\[ e^{i \pi} + 1 = 0 \]
\caption{Euler's identity, first form.}
\end{figure}
\begin{figure}
\ContinuedFloat
\[ e^{i \pi} = -1 \]
\caption{Euler's identity, second form.}
\end{figure}
两栏文档中的宽图
如果你正在编写一个使用两栏(例如,你的文档开头是 \documentclass[twocolumn]{article}
)的文档,你可能会注意到,无法使用比一栏宽的浮动元素(即,宽度超过 0.5\textwidth),否则图像会与文本重叠。如果你真的需要使用如此宽的元素,唯一的解决方案是使用浮动环境的“星号”变体,分别是 {figure*}
和 {table*}
。这些“星号”版本与标准版本相似,但它们的宽度将扩展到整页,因此不会发生重叠。
这些环境的一个缺点是它们只能放置在页面顶部或单独的页面上。如果你尝试使用诸如 b
或 h
的修饰符来指定位置,它们将被忽略。为了缓解这个问题,可以在导言区添加 \usepackage{dblfloatfix}
,使用可选的修饰符 [b]
将这些浮动元素放置在页面底部。默认值为 [tbp]
。然而,h
仍然不起作用。
自定义浮动
如果表格和图形不足以满足你的需求,你可以选择创建自己的浮动类型!例如,源代码示例或地图。对于程序浮动类型的示例,你可能希望创建一个名为 program
的浮动类型。float
包就是为这个任务而设计的。设置新的浮动类型的所有命令必须放在文档的导言区,而不是文档的正文中。
在文档的导言区添加:
\usepackage{float}
使用以下命令声明你的新浮动:
\newfloat{type}{placement}{ext}[outer counter]
其中:
-
type
- 你希望为浮动对象指定的新名称,在这个示例中为 "program"。 -
placement
-t
、b
、p
或h
(如前所述的放置位置),表示允许的位置。 -
ext
- 用于图形列表的辅助文件的文件扩展名。LaTeX 会将标题写入此文件。
标题的默认名称是 type
。如果你想更改它,可以使用:
\floatname{type}{floatname}
可以通过 \floatstyle{style}
命令更改浮动样式(对所有后续的 \newfloat
命令有效,因此必须在 \newfloat
之前插入)。
-
plain
- LaTeX 浮动的常规样式,但标题总是在内容下方。 -
plaintop
- LaTeX 浮动的常规样式,但标题总是在内容上方。 -
boxed
- 绘制一个框围绕浮动,标题打印在下面。 -
ruled
- 标题出现在浮动上方,带有上下规则。然后是浮动内容,最后是水平规则。
浮动样式也可以根据需要进行自定义,第二个示例如下。
使用新的 program
浮动类型的示例文档:
\documentclass{article}
\usepackage{float}
\floatstyle{ruled}
\newfloat{program}{thp}{lop}
\floatname{program}{Program}
\begin{document}
\begin{program}
\begin{verbatim}
class HelloWorldApp {
public static void main(String[] args) {
//Display the string
System.out.println("Hello World!");
}
}
\end{verbatim}
\caption{The Hello World! program in Java.}
\end{program}
\end{document}
代码块和浮动环境
verbatim
环境已在特别段落中介绍过。它适用于源代码,但如果你要插入大量代码,可能需要使用 listings
包,它是专门为此设计的。
虽然 verbatim
环境非常有用,但在将浮动元素嵌套在另一个浮动元素内时要小心。特别是,可能会遇到以下错误:
not in outer par mode
一种解决方法是对内部浮动使用 [H]
选项(不要使用其他选项),因为这个选项会将内部浮动“固定”在外部浮动内。
新创建的浮动环境使用 \newfloat
也可以与上面提到的 wrapfig
包结合使用。例如,以下代码创建了一个浮动的文本框,文本框浮动在页面右侧,带有标题、编号、扩展名为 .lob
的索引文件,并自定义了浮动的视觉布局:
\documentclass{article}
% 在使用 float 时,确保 hyperref 包在前
\usepackage{hyperref}
\usepackage{float}
% 允许在控制序列名称中使用 "@"
\makeatletter
% 创建一个简单的带规则的框样式
\newcommand\floatc@simplerule[2]{{\@fs@cfont #1 #2}\par}
\newcommand\fs@simplerule{\def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@simplerule
\def\@fs@pre{\hrule height.8pt depth0pt \kern4pt}%
\def\@fs@post{\kern4pt\hrule height.8pt depth0pt \kern4pt \relax}%
\def\@fs@mid{\kern8pt}%
\let\@fs@iftopcapt\iftrue}
% 这段代码定义了新的自定义浮动框环境
\floatstyle{simplerule}
\newfloat{floatbox}{thp}{lob}[section]
\floatname{floatbox}{Text Box}
\begin{document}
\begin{floatbox}{r}{}
\textit{Bootstrapping} 是一种重采样技术,用于稳健地估计统计量,例如模型拟合度 $R^2$。它提供了一定程度的抗抽样偏差保护。
\caption{Bootstrapping}
\end{floatbox}
\end{document}
标题样式
要更改标题的外观,可以使用 caption
包。例如,要使所有标题标签变小且加粗:
\usepackage[font=small,labelfont=bf]{caption}
KOMA-script 包提供了自定义标题的功能,例如 \captionabove
、\captionformat
和 \setcapwidth
。然而,这些定义对使用 wrapfig
包创建的新浮动环境的效果有限。
另外,你可以重新定义 \thefigure
命令:
\renewcommand{\thefigure}{\arabic{section}.\arabic{figure}}
有关计数器的更多信息,请参见本页面。最后,请注意,caption2
包已被弃用。
图形中的标签
LaTeX 包 lpic
用于在已导入的图形上方放置 LaTeX,从而允许为导入的图形添加 TeX 注释。它定义了一个方便的接口,可以在图形上绘制 LaTeX,允许在类型化的材料下方绘制白色背景,以遮盖图形。这是图形中标签的更好替代方法;你不必在调整图像大小时改变文本大小,所有 LaTeX 功能都可以用于标签。
一个非常相似的包,语法略有不同,是 pinlabel
。链接也指向了 psfrag
和 overpic
包。
一个更加复杂的包是 TikZ。TikZ 是一个前端库,基于 pgf(例如用于制作 Beamer)。它可以通过在图像节点上添加文本节点来标记图形。
总结
这就是浮动对象的基本概念。希望你能看到,让 LaTeX 处理所有复杂的布局工作,自动调整页面布局,使图形能够以最佳方式显示是多么简单。正如我们所见,LaTeX 会自动处理所有标题和引用编号,这为你节省了大量时间。
备注和参考
-
浮动环境定位,Frank Mittelbach