开始

要使用本文中的例子, 你需要标题和子标题工具包(如果你要用subfigures 或subtables环境的话):

\usepackage{caption}
\usepackage{subcaption}

上一节中插图格式的代码如下:

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{Caption 1}\label{fig:1a}		
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{Caption 2}\label{fig:1b}
	\end{subfigure}
	\caption{Main figure caption}\label{fig:1}
\end{figure}

命令``label"让你在文章中产生一个对该图的交叉引用。 它分配了一个你可以引用的字段, 当你引用该图时,会自动在引用处产生图或子图的数字或字母。 详细可以参考交叉引用章节。 如果要建立一个包含两个子表的表格, 我们可以写出类似的代码。只不过,你需要将 figure(subfigure) 环境替换成 table(subtable) 环境。

\begin{table}	
	\centering
	\begin{subtable}[t]{2in}
		\centering
		\begin{tabular}{|l|l|l|}
		\hline
		100 & 200 & 300\\
		\hline
		400 & 500 & 600\\
		\hline
		\end{tabular}
		\caption{标题1}\label{table:1a}
	\end{subtable}
	\quad
	\begin{subtable}[t]{2in}
		\centering
		\begin{tabular}{|l|l|l|}
		\hline
		100 & 200 & 300\\
		\hline
		400 & 500 & 600\\
		\hline
		\end{tabular}
		\caption{标题2}\label{table:1b}
	\end{subtable}
	\caption{主表标题}\label{table:1}
\end{table}

subfiure  和 subtable 环境都能允许你设置宽度。 它可以根据表格的内容来预留相应的空间。 你可以用 columnwidth  代替 width  来调整文章的宽度。 设置数字型的标题标签 你可以列改标题标签的数字格式或字母格式,通过使用下列命令:

% change the style of the caption numbering.
\renewcommand{\thetable}{\alph{table}}
\renewcommand{\thefigure}{\Alph{table}}
\renewcommand{\thesubtable}{\Roman{subtable}}
\renewcommand{\thesubfigure}{\arabic{subfigure}}

每个命令指定了一个你要更改的标签(如: \thetable )以及你希望显示的标签类型(如:alph{table} ), 也就是说要将表格的序列号显示为小写字母,如a, b, c等). 每种浮体的有属于自己的标签(\thetable )和序列变量(表格). 当你使用这些命令后, 显示的任何东西将有新的标签数字或字母样式。 以下总共有五种显示序号的方式(用实际你要显示的数字代替序号)

计数器类型实现代码示例
阿拉伯数字\arabic{counter}1, 2
小写字母\alph{counter}a, b
大写字母\Alph{counter}A, B
小写罗马数字\roman{counter}i, ii
大写罗马数字\Roman{counter}I, II

下面是一个改变图和子图标题的标签样式:

\renewcommand{\thefigure}{\Roman{figure}}
\renewcommand{\thesubfigure}{\arabic{subfigure}}

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{阿拉伯数字}\label{fig:1a}		
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{阿拉伯数字}\label{fig:1b}
	\end{subfigure}
	\caption{大写罗马数字}\label{fig:1}
\end{figure}

上面的子图标题中是阿拉伯数字,图标题用的是大写罗马数字。如果文章中有章节,那么标题标签将是1.1, 1.2, 2.1等。 你可以设置数字和字母的样式。

\renewcommand{\thefigure}{\thechapter.\Alph{figure}} % set caption label style to 1.A
\renewcommand{\thesubfigure}{\arabic{subfigure}}

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{阿拉伯数字}\label{fig:1a}		
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{阿拉伯数字}\label{fig:1b}
	\end{subfigure}
	\caption{章节序号.图字母序号}\label{fig:1}
\end{figure}

代码效果如下:与标准标题样式不同,标签是小写字母而不是数字。子图标题也使用了阿拉伯数字。thechapter  命令设定章节编号,就像 thefigure  设定图的编号。 在命令 thefigure  中加入 thechapter , 就可以在图中引入章节编号。 如果你要更改章节编号的样式,你可以覆盖 thechapter  命令,就如同覆盖命令 thefigure  一样。如果你只想改变章节标号的样式,你可以参考下面例子“

\renewcommand{\thefigure}{\Alph{chapter}.\Alph{figure}}

上例是设置所有的图和子图, 类似地也能用于表和子表。 只是使用 thetable  和 thesubtable  而不是 thefigure 和thesubfigure 。

Caption 工具包选项和设置

caption  工具包可以修改标题的很多方面。既可以通过 captionsetup  命令也可以在工具包选项中修改。 这些选项包括了编号分离 (如: ``图1: 标题" 的颜色), 编号的格式 (是数字还是字母,是否有括号等), 编号和标题的字体、样式,等。 要使用这些选项, 你可以在引用工具包的时候先设置它们。

% options apply to all captions
\usepackage[OPTIONS]{caption}

% applies to all subfigure and subtable captions
\usepackage[OPTIONS]{subcaption}

一旦你在命令usepackage 中设定了选项, 它们将适用于所有的标题和子标题。 或者,你也可以使用命令captionsetup 以至于所有后来的标题都具有设置的样式:

\captionsetup[FLOAT_TYPE]{OPTIONS}

FLOAT_TYPE 可以是表、图、子表和子图。它指定了标题的类型,尤其可以使用命令\captionsetup 。 你可对每个图、表、子图和子表设置不同的选项。 当你使用命令\captionsetup,所有后面的标题将使用你设置的选项。或者,你可以把命令\captionsetup放在图、表、子图和子表环境中。那么该设置只在该图有效。 以下是几个例子,在这些例子中既在工具包选项中设置样式,也可以在命令\captionsetup中设置。 类似的例子还有很多, 详情可以参阅工具包文档。

标题调整和字体

下面几个例子展示了命令\captionsetup的用法。它可以设置图(子图)标题编号的字体和标题文本的字体。同时,它也展示了如何 对应子标题。

% for figures: caption label is italic, the caption text is bold / italic
\captionsetup[figure]{labelfont=it,textfont={bf,it}}
% for subfigures: caption label is bold, the caption text normal.
% justification is raggedright (i.e. left aligned)
% singlelinecheck=off means that the justification setting is used even when the caption is only a single line long.
% if singlelinecheck=on, then caption is always centered when the caption is only one line.
\captionsetup[subfigure]{labelfont=bf,textfont=normalfont,singlelinecheck=off,justification=raggedright}

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{标题}\label{fig:1a}
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{标题}\label{fig:1b}
	\end{subfigure}
	\caption{主图标题.}\label{fig:1}
\end{figure}

排版效果如下图所示:注意, 子标题是左对齐,字体样式都改变了。 图标题编号是斜体。子图编号是粗体,文本是正体且左对齐。 如代码注释解释, singlelinecheck 设置关闭,使得单行标题使用校正设置。否则,它将居中。 当你使用caption 和 subcaption  工具包, 你也可以所有的标题和子标题设置选项,通过使用合适的选项。

% will apply to all captions
\usepackage[labelfont=it,textfont={bf,it}]{caption}

% will apply to all subcaptions
\usepackage[labelfont=bf,textfont=normalfont,singlelinecheck=off,
justification=raggedright]{subcaption}

标签格式和标签分离

如果你看标题,你将看到子图的编号在括号中,它与``Figure 1"用冒号分开。编号格式和编号分离都是可以通过设置caption工具包里的选项来设置。编号格式控制编号如何显示: 是否完全可见, 是否加括号。 编号分离则是编号后面文字样式。 这是命令\captionsetup 中labelformat 和 labelsep 的选项

\captionsetup[FLOAT_TYPE]{labelformat=simple, labelsep=colon}

FLOAT_TYPE 可以是表、图、子表和子图。 labelformat 选项可以设置为:

标签格式结果
labelformat = empty 没有标签,即没有数字或字母
labelformat = simple标题中显示数字或字母
labelformat = parens数字或字母在括号中,即(1), (A)

labelsep  选项可以被设置成:

标签分隔
labelsep = none
labelsep = colon
labelsep = period
labelsep = space
labelsep = quad
labelsep = newline

在下面例子中,labelformat 和 labelsep用于单独设置图和子图标题样式:

% set up labelformat and labelsep for figure
\captionsetup[figure]{labelformat=parens, labelsep=newline}
% set up labelformat and labelsep for subfigure
\captionsetup[subfigure]{labelformat=simple, labelsep=colon}

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{简易}\label{fig:1a}		
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{简易}\label{fig:1b}
	\end{subfigure}
	\caption{括号,新行分离器.}\label{fig:1}
\end{figure}

排版效果如下:子图的labelformat被设置为simple, 则标题的字母没有括号。 labelsep对应子图标题的冒号和图中的newline样式。

无数字和字母的子图子表标题

在命令 \captionsetup 或者在\subcaption 工具包中,通过设置labelformat  选项为``empty ", 你将不显示浮体编号。这里有一个例子,其中标题没有编号。

% no subfigure caption label.
\captionsetup[subfigure]{labelformat=empty}

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{无标签}\label{fig:1a}		
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\includegraphics[width=1in]{placeholder}
		\caption{无标签}\label{fig:1b}
	\end{subfigure}
	\caption{主图标题}\label{fig:1}
\end{figure}

排版效果如下:如上所示,没有 A, B, C 或 D! 同样的命令可以用于子表,表和图(对 命令\captionsetup 做相应的替换)。 对于那些显示在图表列表中的图和表,设置编号格式为空将不显示图或表标题中的编号。字母 或数字将出现在列表中。

无序号的标题和表格

你可以不显示标题的序号通过使用命令\caption*

\begin{figure}[tbp]
	\centering	
	\includegraphics[width=1in]{placeholder}
	\caption*{Unnumbered figure caption.}
\end{figure}

排版效果如下:命令\caption* 使得标题不带编号也不在图清单中显示。

设置子图和子表标题的位置

对于正规的浮体,如图和表, 标题的位置可以设置在浮体上方或下方。 通过简单的将命令\caption 置于图或表的上方或下方即可。

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\centering
		\caption{Caption 1}\label{fig:2a}
		\includegraphics[width=1in]{placeholder}				
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\centering
		\caption{Caption 2}\label{fig:2b}
		\includegraphics[width=1in]{placeholder}		
	\end{subfigure}
	\caption{Main figure caption.}\label{fig:2}
\end{figure}

代码效果如下:

表和子表的例子

这是关于表和子表的例子。

% set numbering style
\renewcommand{\thetable}{\Roman{table}}
\renewcommand{\thesubtable}{\arabic{subtable}}

% set up labelformat and labelsep for table
\captionsetup[table]{labelformat=simple, labelsep=period}
% set up labelformat and labelsep for subtable
\captionsetup[subtable]{labelformat=simple, labelsep=colon}

\begin{table}	
	\centering
	\begin{subtable}[t]{1in}
		\centering
		\begin{tabular}{|l|l|}
			\hline
			100 & 200\\
			\hline
		\end{tabular}
		\caption{Caption 1}\label{table:1a}
	\end{subtable}
	\quad
	\begin{subtable}[t]{1in}
		\centering
		\begin{tabular}{|l|l|}
			\hline
			100 & 200\\
			\hline
		\end{tabular}
		\caption{Caption 2}\label{table:1b}
	\end{subtable}
	\caption{Table caption text}\label{table:1}
\end{table}

代码效果如下:

交叉引用

你可以通过使用\ref{LABEL} 来引用标题的编号,其中 LABEL是你用命令\label 给一个图或表分配的字段名。这将会产生编号对应的数字或字母。子标题相应的可以参考\subref{LABEL} 。例如要在文中产生``Figure 1(a)":

Figure \ref{fig:1}(\subref{fig:1a})

注意,使用命令 \label 分配的名字是任意的, 因此你不必按照图的顺序是否为图1. 我可以通过调用fig:1 and fig:1a 来达到引用的目的。 你也可以直接引用一个子图,无需要将它分成ref和subref。

\ref{fig:1a})

但是,这将产生1a, 如果你要产生1(a), 你需要使用:

% put these at the beginning of your document.
\captionsetup[subfigure]{labelformat=simple}
\renewcommand\thesubfigure{(\alph{subfigure})}

\begin{figure}	
	\centering
	\begin{subfigure}[t]{1in}
		\includegraphics[width=1in]{placeholder}
		\caption{Caption 1}\label{fig:1a}		
	\end{subfigure}
	\quad
	\begin{subfigure}[t]{1in}
		\includegraphics[width=1in]{placeholder}
		\caption{Caption 2}\label{fig:1b}
	\end{subfigure}
	\caption{Main figure caption}\label{fig:1}
\end{figure}

Figure \ref{fig:1a}

第一个\captionsetup[subfigure]{labelformat=simple} 将防止图中出现双括号。如前所述,类似方法可以用于表,子图,子表。

重置标题记数器

如果你需要重置标题序号,(下图从1开始), 你可以使用下面的方法

\setcounter{figure}{0} % reset figure counter to 0.

你也可以使用其它的名字,而不是只是figure.

改变标题名

如果你要改变图和表的名字,比如将``Fig." 改成 ``Figure" 或 ``Table" 改成 ``Tab." 或其它你希望的名字,你可以使用\renewcommand 以及 \figurename  或 \tablename :

\renewcommand{\tablename}{Tbl}

\renewcommand{\figurename}{Image}

以上将改变所有表的标题,引用为``Tbl [表的序号]" 或 ``Image [图序号]". 另外 ,在使用\figurename  或\tablename 还有一个问题。 例如, 论文类文档中使用\figureshortname 或 \tableshortname 。 在这些情况下,更新对应的命令。 找到命令是什么,你可以查询.cls文件或你的文档类。你可以找到具体的字符串(如:``Fig") 以及找到定义它的命令。 你可以覆盖它。你也可以在原来.cls文件 建立一个新的文档类。 选自:http://www.peteryu.ca/tutorials/publishing/latex_captions

点赞(52)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部