子图参考索引关闭,但仅当标题位于图上方时

子图参考索引关闭,但仅当标题位于图上方时

我想引用一个子图,但我发现如果标题位于大图上方,则索引引用是一次性的。 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,但subfigsubcaption需要不同的解决方案。

\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}

演示

相关内容