在这个问题,Martin H 的评论说:人们应该忘记subfigure
和subfig
包并使用subcaption
。作为subfig
替代subfigure
,没有争论。
我目前使用subfig
来显示我的子图,并且对它很满意。所以我想知道,使用 的优势subcaption
是什么,或者是否为什么一般情况下,使用subcaption
比 更可取subfig
。
答案1
subfig
无法正常工作hyperref
。 caption 包的作者写道这里:
请注意,subfig 包中的 hyperref 支持已损坏。您可以尝试使用我的 subcaption 包。
在 Internet 或 Usenet 上搜索 subfig+hyperref 会显示兼容性和功能问题,我想我们不需要在这里为其创建示例。
答案2
专业副标题:
- subfig 的 hyperref 支持包含错误(这显然是 subfig 的问题而不是 hyperref 的问题),而 subcaption 包(希望 ;-))可以与 hyperref 配合良好。
- 子标题包提供增强的超链接支持,
\subref*
其行为类似于\ref*
(由超链接包提供),\autoref
可开箱即用,并且标题选项hypcap=
也hypcapspace=
适用于子标题。 - subfig 包破坏了 caption 包提供的星号版本,
\ContinuedFloat
而 subcaption 包则没有。 - subcaption 包与 caption 包更加“紧密相连”,支持更多常见选项,如
list=on
etc.,并提供与\caption
、\captionbox
和figure
环境类似的命令:\subcaption
、\subcaptionbox
和subfigure
环境。(请注意,\captionbox
目前尚不可用,但将在 caption 包的下一个 3.2 版本中提供。) - 提供更多放置和对齐子标题的方法,例如,
\subcaption
可用于在图形旁边放置子标题(左或右)。 \subcaptionbox
提供比更多的可选参数\subfloat
,例如为框指定特定的宽度。- 提供
\phantomsubcaption
不带标题的引用。(自子标题包 1.1 版起) - 由 bicaption 包支持,用于排版双语子字幕。(自 subcaption 包 1.1 版起)
专业子图:
- subcaption 包需要 caption 包,而 caption 包的使用在 subfig 中是可选的。(subfig 包提供了选项
caption=false
。)因此,subfig 包也可以与与 caption 包不兼容的文档类一起使用。 - subcaption 包尚未提供顶部和底部边距,而 subfig 包则提供。因此,在使用 subcaption 包时,必须使用命令
\vspace
、、、\smallskip
或类似命令\medskip
手动设置子图之间的垂直间距。\bigskip
请注意,我是标题和子标题包的作者,因此此列表远非客观;-)
但是使用 subcaption 通常比使用 subfig 更好吗?依我之见,不是,因为 subfig 包很好(并且文档齐全),如果对 subfig 包满意,就没有必要切换。
答案3
仅供参考:在最新的 TeXlive 2011 安装中,如果标题位于子浮点数上方 ( position=top
),则对子浮点数的引用会减少一。在下面的示例中,这涉及对子表的引用,而不是对子图的引用。
\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{subfig}
\captionsetup*[table]{position=top}
\captionsetup*[subtable]{position=top}
\captionsetup*[figure]{position=bottom}
\captionsetup*[subfigure]{position=bottom}
\begin{document}
\begin{figure}
\subfloat[1]{11111\label{fig:1}} \subfloat[2]{22222\label{fig:2}}
\caption{fig}\label{fig}
\end{figure}
\begin{table}
\caption{tbl}\label{tbl}
\subfloat[A]{aaaaa\label{tbl:a}} \subfloat[B]{bbbbb\label{tbl:b}}
\end{table}
Figure~\ref{fig} (\ref{fig:1}, \ref{fig:2}) and Table~\ref{tbl} (\ref{tbl:a}, \ref{tbl:b}).
\end{document}
切换到subcaption
已经解决了问题,但我希望有一个“兼容性”选项,以便以前用于 的代码subfig
也可以用于subcaption
。(或者至少有一个包含对 的引用的 HOWTO \subcaptionbox
。)