LaTeX/浮动体、图形和标题
之前的章节介绍了导入图形。 然而,仅仅将一张图片粘贴在段落之间看起来并不专业。 首先,我们需要一种添加标题的方法,并能够进行交叉引用。 我们需要一种定义图形的方法。 如果 LaTeX 可以应用类似于它排列文本以使其看起来最好的原理来排列图片,那就太好了。 这就是浮动体发挥作用的地方。
浮动体是文档中无法在页面上断开的对象的容器。 LaTeX 默认情况下识别“表格”和“图形”浮动体,但您可以定义自己的新浮动体(参见下面的自定义浮动体)。 浮动体用于解决无法放在当前页面上的对象问题,以及在您确实不想现在就将对象放在这里的情况下的帮助。
浮动体不是正常文本流的一部分,而是独立的实体,放置在页面上的一个独立区域(顶部、中间、底部、左边、右边或设计者指定的位置)。 它们始终带有描述它们的标题,并且始终编号,以便可以从文本中的其他地方引用它们。 LaTeX 会自动浮动表格和图形,具体取决于在处理它们时页面上剩余的空间量。 如果当前页面上没有足够的空间,则浮动体将移动到下一页的顶部。 可以通过将表格或图形定义移动到文本中的更早或更晚的位置,或调整控制自动浮动的某些参数来更改此行为。
作者有时会在紧密相邻的文本中放置许多浮动体,这会导致一个问题,即它们应该如何放在页面上,并且仍然为文本留出空间。 在这种情况下,LaTeX 会将它们全部堆叠在一起,并尽可能地将它们一起打印,或者在抗议中将它们留到章节的末尾。 诀窍是在文本中将它们间隔开,这样它们既不会干扰您的论点或讨论的思路,也不会影响排版页面的视觉平衡。
与其他各种实体一样,在行中未处理(放置)的浮动体数量存在限制。 LaTeX 默认情况下可以处理最多 18 个浮动体,一个典型的错误是
! LaTeX Error: Too many unprocessed floats.
morefloats 包会解除此限制。
要创建浮动图形,请使用figure 环境。
\begin{figure}[placement specifier]
... figure contents ...
\end{figure}
|
上一节提到了如何使用浮动体让 LaTeX 在保持最佳演示效果的同时处理图形。 但是,有时您可能不同意,而一个典型的例子是它对图形定位。 位置说明符参数作为一种折衷方案存在,它的目的是让作者能够更好地控制某些浮动体放置的位置。
说明符 | 权限 |
---|---|
h
|
将浮动体放在这里,即大约在源文本中出现的位置(但是,不是完全在该位置) |
t
|
放置在页面顶部。 |
b
|
放置在页面底部。 |
p
|
放在专门用于浮动体的页面上。 |
!
|
覆盖 LaTeX 用于确定“良好”浮动体位置的内部参数。 |
H
|
将浮动体精确地放置在 LaTeX 代码中的位置。 需要float 包,[1] 例如,\usepackage{float} 。 |
您对这些位置权限所做的事情是列出您希望提供给 LaTeX 的选项。 这些只是可能性,LaTeX 在排版您的文档时会决定它认为哪一个最适合您提供的说明符。 Frank Mittelbach 描述了该算法[2]
- 如果遇到浮动体,LaTeX 会尝试根据其规则(稍后详细介绍)立即将其放置
- 如果成功,则浮动体将被放置,并且该决定永远不会改变;
- 如果失败,则 LaTeX 会将浮动体放入一个保存队列中,以便在开始下一页时重新考虑(但不会更早)。
- 页面完成之后,LaTeX 会检查这个保存队列,并尽可能地将其清空。 为此,它首先会尝试生成尽可能多的浮动体页面(希望能够从队列中删除浮动体)。 一旦此可能性耗尽,它接下来会尝试将剩余的浮动体放置在顶部和底部区域。 它会查看所有剩余的浮动体,并将其放置或推迟到下一页(即,再次将它们添加到保存队列中)。
- 之后,它会开始处理此页面的文档内容。 在此过程中,它可能会遇到更多浮动体。
- 如果文档结尾已到达,或者遇到 \clearpage,LaTeX 会开始一个新页面,放宽所有限制性浮动体条件,并通过将它们放在浮动体页面上输出保存队列中的所有浮动体。
在某些特殊情况下,LaTeX 不会遵循这些定位参数,并且需要额外的命令,例如,如果需要为单独位于一个页面上的浮动体指定除居中以外的对齐方式[3]。
使用\listoffigures
在文档开头添加图形列表。 要将标题中使用的名称从图形更改为示例,请在图形内容中使用\renewcommand{\figurename}{示例}
。 有关此内容的更多信息,请参见新建命令部分。
可以在所有图形周围添加一个细边框。你只需要在文档开头写一次以下代码
\usepackage{float}
\floatstyle{boxed}
\restylefloat{figure}
|
边框不包括标题。
浮动表格在另一章中进行了介绍。在这里我们快速提醒一下。默认情况下,用于构造表格的tabular环境不是浮动环境。因此,对于你想让其浮动的表格,将tabular环境包裹在table环境中,如下所示
\begin{table}
\begin{tabular}{...}
... table data ...
\end{tabular}
\end{table}
|
你可能会觉得这种方法有些繁琐,但这种区别是必要的,因为你可能不希望所有表格都被视为浮动环境。
使用\listoftables
在文档开头添加一个表格列表。
placeins[1] 包提供了命令\FloatBarrier
,它可以用于防止浮动元素被移动到它之上。例如,这在每个部分的开头很有用。该包甚至提供了一个选项来更改\section
的定义,以便自动包含一个\FloatBarrier
。这可以通过使用选项[section]
(\usepackage[section]{placeins}
) 加载包来设置。 \FloatBarrier
也可以用于防止浮动元素侵入使用itemize或enumerate创建的列表。
flafter 包可以用于强制浮动元素在定义后出现,而endfloat[2] 包可以用于将所有浮动元素放置在文档末尾。
float[3] 包提供了H
选项给浮动环境,这将完全阻止它们浮动。
包caption[4]提供了命令\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}
|
请注意,如果你使用 sidecap 包中的某个环境定义你自己的浮动元素放置位置(默认值为tbp),则需要提供额外的relwidth参数,例如: \{SCfigure}[1][!h] 。 |
在某些类型的文档(如演示文稿)中,可能不希望图形标题以图形:开头。只需将标题文本放在figure环境中,而不将其包含在caption中,就可以轻松地禁止这种行为。但是,这意味着没有标题可用於包含在图形列表中。
如果你想将表格标题从“表格”重命名为其他内容,可以使用\captionsetup
命令。例如,
\usepackage{caption}
\captionsetup[table]{name=New Table Name}
|
\usepackage{caption} \captionsetup[table] {name=New Table Name}
可以通过使用\listoftables
或\listoffigures
命令,分别在论文或报告的开头列出标题,以创建一个“表格列表”或“图形列表”部分。每个图形的标题将出现在这些列表中,以及图形编号和它们所在的页码。
\caption
命令还有一个可选参数,\caption[''short'']{''long''}
,它用于表格列表或图形列表。通常,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 the genus of the gecko family. It is the second most speciose genus in the family.}
\end{figure}
\end{document}
|
标签和交叉引用与一般情况非常相似 - 有关更多信息,请参见标签和交叉引用部分。
如果你想标记一个图形,以便稍后引用它,你必须在标题之后添加标签(在 LaTeX 2e 中,在里面似乎可以工作),但在浮动环境中。如果它在外部声明,它将给出节号。 |
如果标签获取了节号或列表号而不是图形号,请将标签放在标题内以确保编号正确。如果你在标签位于标题内时遇到了错误,请在\label
命令前面使用\protect
。
将文本包裹在图形周围
[edit | edit source]作者可能希望某些浮动对象不打断文本流,而是允许文本环绕它。(显然,这种效果只有在所讨论的图形明显比文本宽度窄时才看起来不错。)
警告:在 LaTeX 中环绕图形需要大量手动调整文档。有几个包可用于此任务,但没有一个能完美运行。在决定在文档中包含带有文本环绕的图形之前,请确保您已考虑所有选项。例如,您可以使用带两列的布局来制作您的文档,并且根本不使用文本环绕。
无论如何,我们将看一下 wrapfig 包。请注意,wrapfig 可能不会随 LaTeX 的默认安装一起提供;您可能需要 安装额外的包。另外要注意,wrapfig 与 enumerate 和 itemize 环境不兼容。
要使用 wrapfig,您必须先在序言中添加以下内容
\usepackage{wrapfig}
|
然后,您可以使用
\begin{wrapfigure}[lineheight]{position}[overhang]{width}
|
行高表示图形所跨文本行的数量。如果省略此选项,LaTeX 将自动计算该值,但这会导致图形看起来难看(间距过大)。通过输入您希望图形跨越的行数,可以手动覆盖 LaTeX 的计算。此选项不能以 pt、mm 等表示…
总共有八个可能的定位目标
r | R | 文本的右侧 |
l | L | 文本的左侧 |
i | I | 内边缘 - 靠近装订线(在 twoside 文档中) |
o | O | 外边缘 - 远离装订线 |
大写字母允许图形浮动,而小写字母表示“精确此处”。[4]
图形的悬垂可以使用 overhang 选项以 pt、cm 等手动设置…
当然,宽度 是图形的宽度。一个例子
\begin{wrapfigure}{r}{0.5\textwidth}
\begin{center}
\includegraphics[width=0.48\textwidth]{gull}
\end{center}
\caption{A gull}
\end{wrapfigure}
|
您还可以让 LaTeX 为环绕分配宽度,方法是将宽度设置为 0pt:\{wrapfigure}{l}{0pt}
请注意,我们已经为 wrapfigure 环境和我们包含的图像指定了大小。我们以文本宽度来表示:在 LaTeX 中始终最好使用相对大小,让 LaTeX 为您做工作!“环绕”比图片略大,因此编译器不会返回任何奇怪的警告,您将在图像和周围文本之间有一个小的白色边框。您可以更改它以获得更好的结果,但是,如果您不将图像保持在“环绕”的范围内,您将看到图像覆盖文本。
wrapfig 包也可以与使用 float 包的用户定义浮动对象一起使用。请参见下文 关于自定义浮动对象的章节。
带有太多空白的图形的技巧
[edit | edit source]您可以使用 intextsep
参数控制图形上方和下方的额外间距:\setlength\intextsep{0pt}
要控制图像和文本之间的水平间距,请使用 columnsep
参数。
您可能会生成图形,这些图形在顶部或底部有太多(或太少)空白。在这种情况下,您只需使用可选参数 [lineheight]
即可。它指定图形以文本行数表示的高度。还要记住,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 完成格式化工作!
(在这种情况下,问题是使用 \{center}
来居中图像。 center 环境会添加额外的间距,如果使用 \centering
代替,则可以避免这些间距。)
或者,您可以使用 picins 包而不是 wrapfig 包,该包会在没有任何手动调整的情况下生成没有多余空白的正确版本。
wrapfig 也有一个替代方案:floatflt 包 [5]。
要永久删除图形中的空白,应该参考 pdfcrop 程序,该程序包含在大多数 TeX 安装中。
子浮动对象
[edit | edit source]一个有用的扩展是 subcaption[6] 包,它在单个浮动对象中使用子浮动对象。 subfig 包(subfigure 包已弃用[5])是与 LaTeX 模板(即 来自 Springer 和 IOP、IEEETran 和 ACM SIG 的期刊模板)一起使用时的一个有用替代方案,这些模板与 subcaption 不兼容。这些包使作者能够在图形中包含子图形,或者在表格浮动对象中包含子表格。子浮动对象有自己的标题,以及一个可选的全局标题。以下示例将最好地说明 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.
%(or a blank line to force the subfigure onto a new line)
\begin{subfigure}[b]{0.3\textwidth}
\includegraphics[width=\textwidth]{tiger}
\caption{A tiger}
\label{fig:tiger}
\end{subfigure}
~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc.
%(or a blank line to force the subfigure onto a new line)
\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}
|
您会注意到,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
在 subfigure 环境之外将提供全局标题。
subcaption 将并排排列图形或表格,前提是它们可以容纳,否则,它将自动将子浮动对象移到下面。可以通过在您希望移动到新行的图形之前添加换行符命令(\\
)来手动添加此效果。
图形之间的水平间距由几个命令之一控制,这些命令放置在 \{subfigure}
和 \end{subfigure}
之间
- 可以用一个不间断空格(如上面的示例中使用 ~ 表示)在子图形之间插入空格。
- 数学空格:
\qquad
、\quad
、\;
和\,
- 通用空格:
\hspace{''长度''}
- 自动扩展/收缩空格:
\hfill
多部分图形
[edit | edit source]有时您需要将图形分成多个浮动对象,例如,因为图形太大而无法容纳在一个页面上。在这种情况下,您可以使用续接图形,方法是使用 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}
的内容开始),您可能会注意到无法使用比一列宽度更宽的浮动元素(使用 LaTeX 表示法,比 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 将标题写入此文件。
- outer counter - 此参数的存在表明与该新浮动元素关联的计数器应取决于外部计数器,例如 'chapter'。
- 标题开头显示的默认名称是类型。如果您想更改此名称,请使用
\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 包,该包专门为此而设计。
虽然这很有用,但在将浮动元素嵌入另一个浮动元素时应小心。特别是,错误
not in outer par mode
可能会出现。一个可能的解决方案是在内部浮动元素上使用 [H] 选项(而不是其他任何选项),因为此选项会将内部浮动元素“固定”到外部浮动元素。
使用 \newfloat
创建的新浮动元素也可以与上面的 wrapfig 包组合使用。例如,以下代码创建了一个浮动文本框,该文本框在页面右侧的文本中浮动,并且包含标题、编号、扩展名为 .lob 的索引文件以及浮动元素视觉布局的自定义
\documentclass{article}
% have hyperref package before float in order to get strange errors with .\theHfloatbox
\usepackage{hyperref}
\usepackage{float}
% allows use of "@" in control sequence names
\makeatletter
% this creates a custom and simpler ruled box style
\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}
% this code block defines the new and custom floatbox float environment
\floatstyle{simplerule}
\newfloat{floatbox}{thp}{lob}[section]
\floatname{floatbox}{Text Box}
\begin{document}
\begin{floatbox}{r}{}
\textit{Bootstrapping} is a resampling technique used
for robustly estimating statistical quantities, such as
the model fit $R^2$. It offers some protection against
the sampling bias.
\caption{Bootstrapping}
\end{floatbox}
\end{document}
|
要更改标题的外观,请使用 caption [7] 包。例如,要使所有标题标签变小且加粗
\usepackage[font=small,labelfont=bf]{caption}
|
KOMA 脚本包 [8] 有自己的标题自定义功能,例如 \captionabove
、\captionformat
和 \setcapwidth
。但是,这些定义对使用 wrapfig 包新创建的浮动环境的影响有限。
或者,您可以重新定义 \thefigure
命令
\renewcommand{\thefigure}{\arabic{section}.\arabic{figure}}
|
有关计数器的更多信息,请参阅 此页面。最后,请注意 caption2 包已长期弃用。
有一个 LaTeX 包 lpic [9] 用于在包含的图形顶部放置 LaTeX,从而允许在导入的图形中添加 TeX 注释。它定义了一个方便的接口,用于将 TeX 放置在包含的图形之上,并允许在排版材料下方绘制白色背景以遮盖图形。它是图形内标签的更好替代方案;您不必在调整图片大小后更改文本大小,并且所有 LaTeX 功能都可用于标签。
一个非常类似的包,语法略有不同,是 pinlabel [10]。给出的链接也指向 psfrag 和 overpic 包。
一个更复杂的包,可以用相同的方式使用,是 TikZ。TikZ 是一个名为 pgf 的绘图库的前端(例如,用于制作 beamer)。它可用于通过在图像节点顶部添加文本节点来标记图形。
这涵盖了浮动元素的所有基本内容。您希望能够了解让 LaTeX 完成所有繁重工作并调整页面布局以将您的图形放置在最佳位置有多么容易。与往常一样,LaTeX 处理所有标题和参考编号的事实可以节省大量时间。
- ↑ http://www.ctan.org/tex-archive/macros/latex/contrib/float/
- ↑ Float environment positioning, by Frank Mittelbach
- ↑ http://tex.stackexchange.com/questions/28556/how-to-place-a-float-at-the-top-of-a-floats-only-page
- ↑ http://ftp.univie.ac.at/packages/tex/macros/latex/contrib/wrapfig/wrapfig-doc.pdf
- ↑ http://ctan.org/pkg/subfigure
此页面使用了 Andy Roberts 的 LaTeX 入门 材料,经作者许可。