我有 2 个图,每个图又有 4 个图,我按照 MWE 中所示进行标记。我试图让图的标题显示为:
图 1:(a)-(d) XYZ 和 (e)-(h) PQR
在 MWE 中,我手动执行此操作。如何为所有图形提供子引用,以便获得上面显示的标题?我无法\subref{fig_top_1,fig_top_2,fig_top_3,fig_top_4}
生成所需的内容。如何让多个子引用作为标题中的范围出现(如上所示)?
平均能量损失
\documentclass[a4paper,twoside,12pt]{article}
\usepackage{graphicx,float}
\usepackage[subrefformat=parens,labelformat=parens]{subfig}
\usepackage{cleveref}
\begin{document}
\begin{figure}[H]
\centering
\subfloat{\label{fig_top_1}}
\subfloat{\label{fig_top_2}}
\subfloat{\label{fig_top_3}}
\subfloat{\label{fig_top_4}}
\includegraphics[width=70mm]{example-image-a}
\subfloat{\label{fig_bottom_1}}
\subfloat{\label{fig_bottom_2}}
\subfloat{\label{fig_bottom_3}}
\subfloat{\label{fig_bottom_4}}
\includegraphics[width=70mm]{example-image-b}
\caption{\protect\subref{fig_top_1,fig_top_2,fig_top_3,fig_top_4} XYZ
and \protect\subref{fig_bottom_1}--\subref{fig_bottom_4} PQR}
\label{fig_top_bottom}
\end{figure}
\end{document}
答案1
以下解决方案允许您同时使用\cref
和\crefrange
来创建交叉引用。请注意,\subref
未使用。
\documentclass{article}
\usepackage{graphicx}
\usepackage[subrefformat=parens,labelformat=parens]{subfig}
\makeatletter
\renewcommand\p@subfigure{} % no figure-number prefixes in cross-refs to subfigures
\makeatother
\usepackage{cleveref}
\crefformat{subfigure}{(#2#1#3)}
\crefrangeformat{subfigure}{(#3#1#4)--(#5#2#6)}
\begin{document}
\begin{figure}
\centering
\subfloat{\label{fig_top_1}}\subfloat{\label{fig_top_2}}
\subfloat{\label{fig_top_3}}\subfloat{\label{fig_top_4}}
\includegraphics[width=70mm,height=30mm]{example-image-a}
\subfloat{\label{fig_bot_1}}\subfloat{\label{fig_bot_2}}
\subfloat{\label{fig_bot_3}}\subfloat{\label{fig_bot_4}}
\includegraphics[width=70mm,height=30mm]{example-image-b}
\caption{\cref{fig_top_1,fig_top_2,fig_top_3,fig_top_4} XYZ and
\crefrange{fig_bot_1}{fig_bot_4} PQR}
\label{fig_top_bot}
\end{figure}
\end{document}