我想引用一个子图,但我发现如果标题位于大图上方,则索引引用是一次性的。 MWE:
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{subfig}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
\begin{figure}%
\centering
\caption{Example of powerset transformation}%
\label{fig:powerset_ex}
\subfloat[NFA] {
\label{subfig:powerset_nfa}
Some NFA%
}
~ $\rightarrow$ ~
\subfloat[DFA] {
\label{subfig:powerset_dfa}
Some DFA%
}
\end{figure}
In \Cref{fig:powerset_ex} we turn the NFA \Cref{subfig:powerset_nfa} into the DFA \Cref{subfig:powerset_dfa}
\end{document}
输出结果如下:
在图 1 中我们将 NFA 图 2a 转变为 DFA 2b。
而它应该分别读取 1a 和 1b。我发现,如果我将整个图的标题和标签移到两个子图下方,标签引用正确。但我想要上面的图标题。我该如何实现?
答案1
一开始我以为这是图形特有的,但其实表格也有这个问题。我猜这是 subfig 的一个 bug,保存在 subcaption 中。
一个解决方案是使用图形计数器,但我更喜欢使用保存盒。
顺便说一句, 没有对齐选项\includegraphics
。相反,可以使用\raisebox
,但subfig
和subcaption
需要不同的解决方案。
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
\begin{figure}%
\sbox0{\subfloat[DFA\label{subfig:powerset_nfa}] {%
\includegraphics[width=0.4\textwidth]{example-image-a}%
}}%
\sbox1{\subfloat[NFA] {% works either way
\label{subfig:powerset_dfa}
\includegraphics[width=0.4\textwidth]{example-image-b}%
}}%
\centering
\captionsetup[figure]{position=top}%
\caption{Example of powerset transformation}%
\label{fig:powerset_ex}
\raisebox{-0.5\height}{\usebox0}
~ $\rightarrow$ ~
\raisebox{-0.5\height}{\usebox1}
\end{figure}
In \Cref{fig:powerset_ex} we turn the NFA \Cref{subfig:powerset_nfa} into the DFA \Cref{subfig:powerset_dfa}
\end{document}