如何让多个子引用作为标题中的一个范围出现并保留其他子引用?

如何让多个子引用作为标题中的一个范围出现并保留其他子引用?

我有 2 个地块,每个地块又有 4 个地块,我按照 MWE 中所示进行标记。代码已修改(关联),使得图题为:

图 1:(a)-(d) XYZ 和 (e)-(h) PQR

但这样做会使正文中的子图引用混乱。我只得到子图标签(即 a、b、...h),而没有图号。如何获取多个子引用而不影响其他子引用?

平均能量损失

\documentclass{article}
\usepackage{lipsum}

\usepackage{graphicx}
\usepackage[subrefformat=parens,labelformat=parens]{subfig}
\usepackage{cleveref}

\makeatletter 
\renewcommand\p@subfigure{} % no figure-number prefixes in cross-refs to subfigures
\makeatother
\crefformat{subfigure}{(#2#1#3)}
\crefrangeformat{subfigure}{(#3#1#4)--(#5#2#6)}

\begin{document}
\lipsum[1]

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

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris \cref{fig_bot_3}. Nam arcu libero, nonummy eget, consectetuer id,
vulputate a, magna. Donec vehicula augue eu neque Fig.~\ref{fig_bot_3}. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas
Fig.~\subref*{fig_bot_3}.
\end{document}

如果我注释以下语句,它就可以正常工作。但我需要该图的多个子引用才能正常工作。

\makeatletter 
\renewcommand\p@subfigure{} % no figure-number prefixes in cross-refs to subfigures
\makeatother
\crefformat{subfigure}{(#2#1#3)}
\crefrangeformat{subfigure}{(#3#1#4)--(#5#2#6)}

输出

在此处输入图片描述

输出(注释语句)

在此处输入图片描述

答案1

我可以做到这一点,但不能使用 cleveref。

\subref{name}AUX 文件显示和使用的替代定义 \subref*{name}也可以通过\ref{sub@name}和 来访问\pageref{sub@name}。也许更熟悉 cleveref 的人可以让它与这些引用一起工作。

\documentclass{article}
\usepackage{lipsum}

\usepackage{graphicx}
%\usepackage{cleveref}
\usepackage{hyperref}
\usepackage[subrefformat=parens,labelformat=parens]{subfig}

\begin{document}
\listoffigures

\begin{figure}
    \centering
    \subfloat{\label{fig_top_1}\strut}\subfloat{\label{fig_top_2}\strut}
    \subfloat{\label{fig_top_3}\strut}\subfloat{\label{fig_top_4}\strut}    
    \includegraphics[width=70mm,height=30mm]{example-image-a}

    \subfloat{\label{fig_bot_1}\strut}\subfloat{\label{fig_bot_2}\strut}
    \subfloat{\label{fig_bot_3}\strut}\subfloat{\label{fig_bot_4}\strut}    
    \includegraphics[width=70mm,height=30mm]{example-image-b}

    \caption[\ref*{sub@fig_top_1}--\ref*{sub@fig_top_4} XYZ and 
             \ref*{sub@fig_bot_1}--\ref*{sub@fig_bot_4} PQR]%
            {\subref{fig_top_1}--\subref{fig_top_4} XYZ and 
             \subref{fig_bot_1}--\subref{fig_bot_4} PQR}
    \label{fig_top_bot}
\end{figure}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris \subref{fig_bot_3}. Nam arcu libero, nonummy eget, consectetuer id,
vulputate a, magna. Donec vehicula augue eu neque Fig.~\ref{fig_bot_3}. Pellentesque
habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas
Fig.~\subref*{fig_bot_3}.
\end{document}

相关内容