LaTeX技巧884:如何用caption宏包格式化图表标题和子标题 |
您所在的位置:网站首页 › 怎样改图片格式和大小 › LaTeX技巧884:如何用caption宏包格式化图表标题和子标题 |
要使用本文中的例子, 你需要标题和子标题工具包(如果你要用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}上面的子图标题中是阿拉伯数字,图标题用的是大写罗马数字。 代码效果如下: 上例是设置所有的图和子图, 类似地也能用于表和子表。 只是使用 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}排版效果如下图所示: 如果你看标题,你将看到子图的编号在括号中,它与``Figure 1"用冒号分开。 FLOAT_TYPE 可以是表、图、子表和子图。 labelformat 选项可以设置为: 标签格式结果labelformat = empty 没有标签,即没有数字或字母labelformat = simple标题中显示数字或字母labelformat = parens数字或字母在括号中,即(1), (A)labelsep 选项可以被设置成: 标签分隔labelsep = nonelabelsep = colonlabelsep = periodlabelsep = spacelabelsep = quadlabelsep = 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}排版效果如下: 在命令 \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}排版效果如下: 你可以不显示标题的序号通过使用命令\caption* \begin{figure}[tbp] \centering \includegraphics[width=1in]{placeholder} \caption*{Unnumbered figure caption.} \end{figure}排版效果如下: 对于正规的浮体,如图和表, 标题的位置可以设置在浮体上方或下方。 通过简单的将命令\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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |