导入外部图形

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}

包文档列出了 widthheight 等选项,此外还有其他选项。

使用 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 也可以用来防止浮动对象干扰使用 itemizeenumerate 创建的列表。

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 的默认安装中,你可能需要安装额外的包。同时要注意,wrapfigenumerateitemize 环境不兼容。

要使用 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*}。这些“星号”版本与标准版本相似,但它们的宽度将扩展到整页,因此不会发生重叠。

这些环境的一个缺点是它们只能放置在页面顶部或单独的页面上。如果你尝试使用诸如 bh 的修饰符来指定位置,它们将被忽略。为了缓解这个问题,可以在导言区添加 \usepackage{dblfloatfix},使用可选的修饰符 [b] 将这些浮动元素放置在页面底部。默认值为 [tbp]。然而,h 仍然不起作用。

自定义浮动

如果表格和图形不足以满足你的需求,你可以选择创建自己的浮动类型!例如,源代码示例或地图。对于程序浮动类型的示例,你可能希望创建一个名为 program 的浮动类型。float 包就是为这个任务而设计的。设置新的浮动类型的所有命令必须放在文档的导言区,而不是文档的正文中。

在文档的导言区添加:

\usepackage{float}

使用以下命令声明你的新浮动:

\newfloat{type}{placement}{ext}[outer counter]

其中:

  • type - 你希望为浮动对象指定的新名称,在这个示例中为 "program"。

  • placement - tbph(如前所述的放置位置),表示允许的位置。

  • ext - 用于图形列表的辅助文件的文件扩展名。LaTeX 会将标题写入此文件。

  • outer counter - 这个参数表示与这个新浮动相关的计数器应该依赖于外部计数器,例如“chapter”。

标题的默认名称是 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。链接也指向了 psfragoverpic 包。

一个更加复杂的包是 TikZ。TikZ 是一个前端库,基于 pgf(例如用于制作 Beamer)。它可以通过在图像节点上添加文本节点来标记图形。

总结

这就是浮动对象的基本概念。希望你能看到,让 LaTeX 处理所有复杂的布局工作,自动调整页面布局,使图形能够以最佳方式显示是多么简单。正如我们所见,LaTeX 会自动处理所有标题和引用编号,这为你节省了大量时间。

备注和参考


最后修改: 2025年04月20日 星期日 13:49