我有一张包含两个图的图。这两个图已在图中用 (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}
结果是:
如您所见,(a) 和 (b) 包含在超链接中。要修复“fig.”字符串之前的间距,只需删除换行符和注释,例如:
\crefformat{figure}{fig.~#2#1{(a)}#3}\cref{fig:main}\crefformat{figure}{fig.~#2#1#3}
此解决方案的缺点是格式是手动定义的。如果决定使用
\usepackage[capitalise]{cleveref}
您将得到错误的格式,例如“fig.”而不是“Fig.”。我不知道如何解决这个问题。