单个图形的子图形标签

单个图形的子图形标签

我有一张包含两个图的图。这两个图已在图中用 (a)、(b) 标记。

我的单身形象

到目前为止,我一直使用该cleveref包引用这些数字

\cref{fig:img1}(a)

然而这(a)不是参考链接的一部分。

我尝试使用subfigure环境

\documentclass{article}
%\usepackage{jheppub}
\usepackage{subcaption}
\usepackage{cleveref}
\usepackage{graphicx}

\begin{document}

\begin{figure}
    \centering
    \begin{subfigure}[t]{0.47\textwidth} % contains the two plots in a single figure
        \includegraphics[width=\textwidth]{./img.pdf}
        \caption{}
        \label{fig:imga}
    \end{subfigure}
    \begin{subfigure}[t]{0\textwidth} % the hidden unwanted image
         \includegraphics[width=\textwidth]{./img.pdf}
         \caption{}
         \label{fig:imgb}   
    \end{subfigure}
\caption{Main caption here}
\label{fig:main}
\end{figure}

\end{document}

所以现在当我引用\cref{fig:imga}它时,它会返回图 1a 等。除了图形和标题之间的间距之外,唯一的问题是我在第一个图形下有图形标签,在第二个不需要的图像下(a)有浮动。(b)

使用\caption*{}导致标签不被计算,因此引用仅返回章节编号。

理想情况下,我想隐藏这些标签,但不会禁用它们,因为我想在参考文献中使用它们。

编辑。

\phantomcaption代替两个子图的使用\caption{}效果很好。

答案1

subcaption 包提供了一个方便的\phantomcaption命令来抑制子浮点数上的标签生成。

\documentclass{article}
\usepackage{subcaption}
\usepackage{cleveref}
\usepackage{mwe} %<- For dummy images

\begin{document}

\begin{figure}
    \centering
    \begin{subfigure}[t]{0.47\textwidth} % contains the two plots in a single figure
        \includegraphics[width=\textwidth]{example-image-a}
        \phantomcaption
        \label{fig:imga}
    \end{subfigure}
    \begin{subfigure}[t]{0\textwidth} % the hidden unwanted image
         \includegraphics[width=\textwidth]{example-image-b}
         \phantomcaption
         \label{fig:imgb}   
    \end{subfigure}
\caption{Main caption here}
\label{fig:main}
\end{figure}

We can use \Cref{fig:imga} but we won't use \Cref{fig:imgb}

\end{document}

那么结果就如我们所期望的了。

在此处输入图片描述

答案2

要避免此解决方法,请参阅 有没有办法划分一个图形来引用该图形的子部分?!它也在使用\phantomsubcaption,但没有添加两次图像!!!

答案3

我找到了另一个解决方案。关键点是动态更改 \cref 的格式。

\documentclass{article}
\usepackage{cleveref}
\usepackage{mwe} %<- For dummy images

\begin{document}

\begin{figure}
    \centering
    \includegraphics[width=\textwidth]{example-image-a}
    \caption{Main caption here}
    \label{fig:main}
\end{figure}

The default format of \texttt{cref} looks like this \cref{fig:main}.
The format of the figure reference is now changed on the fly to be 
\crefformat{figure}{fig.~#2#1{(a)}#3} % change the format to include (a)
\cref{fig:main} or
\crefformat{figure}{fig.~#2#1{(b)}#3} % change the format to include (b)
\cref{fig:main}
\crefformat{figure}{fig.~#2#1#3} % restore the default format
instead of \cref{fig:main}.

\end{document}

结果是:

X

如您所见,(a) 和 (b) 包含在超链接中。要修复“fig.”字符串之前的间距,只需删除换行符和注释,例如:

\crefformat{figure}{fig.~#2#1{(a)}#3}\cref{fig:main}\crefformat{figure}{fig.~#2#1#3}

此解决方案的缺点是格式是手动定义的。如果决定使用

\usepackage[capitalise]{cleveref}

您将得到错误的格式,例如“fig.”而不是“Fig.”。我不知道如何解决这个问题。

相关内容