我在整个文档中使用 cleveref 进行交叉引用。只有在某些情况下,我才需要部分引用((a)而不是图 1a)。通常我在主图标题中遇到这种情况,用于引用 sibfigure(如 MWE 中所示)。
换句话说,我想使用“cleveref 多个引用参数”选项,这样我就可以获得 (a) 到 (d),而不是 1(a) 到 1(d)。
我实施了解决方案 结合 cleveref 和 subref ,但它们不适用于 \cref{ref1,ref2,ref3} 格式
平均能量损失
\documentclass{article}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{caption}
\usepackage{cleveref}
\begin{document}
\begin{figure} []
\centering
\subfloat[][first figure]{\includegraphics[width= 0.485\textwidth]{example-image-a} \label{CHP:fig:EC:1}}
\subfloat[][first figure]{\includegraphics[width= 0.485\textwidth]{example-image-b}\label{CHP:fig:EC:2}}
\subfloat[][first figure]{\includegraphics[width= 0.485\textwidth]{example-image-c}\label{CHP:fig:EC:3}}
\subfloat[][first figure]{\includegraphics[width= 0.485\textwidth]{example-image-a} \label{CHP:fig:EC:4}}
\caption{Need to override \cref{CHP:fig:EC:1,CHP:fig:EC:2,CHP:fig:EC:3,CHP:fig:EC:4}
to look like \protect\subref{CHP:fig:EC:1} to \protect\subref{CHP:fig:EC:4}
just for the main figure captions}
\label{CHP4:fig:EC}
\end{figure}
\end{document}
答案1
既然你正在使用该caption
软件包,那么你可能也应该使用该subcaption
软件包,不是包裹subfig
。
我认为一个简单的解决方案包括(a)发布指令
\makeatletter
\renewcommand\p@subfigure{}
\makeatother
紧接着\begin{figure}
(b) 使用\labelcref
而不是\cref
来生成交叉引用调用。顺便说一句,不需要指令\protect
。\labelcref
\documentclass{article}
\usepackage{graphicx,subcaption}
\usepackage{cleveref}
\crefname{subfigure}{subfig.}{subfigs.}
\begin{document}
\begin{figure}
\makeatletter
\renewcommand\p@subfigure{}
\makeatother
\begin{subfigure}{0.485\textwidth}
\includegraphics[width=\textwidth]{example-image-a}
\caption{first figure} \label{CHP:fig:EC:1}
\end{subfigure}\hfill
\begin{subfigure}{0.485\textwidth}
\includegraphics[width=\textwidth]{example-image-b}
\caption{second figure} \label{CHP:fig:EC:2}
\end{subfigure}
\medskip
\begin{subfigure}{0.485\textwidth}
\includegraphics[width=\textwidth]{example-image-c}
\caption{third figure} \label{CHP:fig:EC:3}
\end{subfigure}\hfill
\begin{subfigure}{0.485\textwidth}
\includegraphics[width=\textwidth]{example-image-a}
\caption{fourth figure} \label{CHP:fig:EC:4}
\end{subfigure}
\caption{Cross-references to \labelcref{CHP:fig:EC:1,CHP:fig:EC:2,CHP:fig:EC:3,CHP:fig:EC:4}}
\label{CHP4:fig:EC}
\end{figure}
\noindent
As illustrated by \cref{CHP:fig:EC:1,CHP:fig:EC:2,CHP:fig:EC:3,CHP:fig:EC:4} of \cref{CHP4:fig:EC}, \dots
\end{document}
附录:如果您需要将交叉引用的子图标记为(a)
、(b)
等,而不是a
、等,请在序言中(加载后)b
发出以下指令:subcaption
\captionsetup[subfigure]{labelformat=simple}
\renewcommand{\thesubfigure}{(\alph{subfigure})}