我有下图:
\begin{figure}[tb]
\centering
\subfloat[FS -- a]{%
\includegraphics[width=0.5\textwidth]{Images/Chapter4/RQ2/updated/a.pdf}%
\label{fig:fse}%
}
\subfloat[FS -- b]{%
\includegraphics[width=0.5\textwidth]{Images/Chapter4/RQ2/updated/b.pdf}%
\label{fig:fsp}%
}\par
\subfloat[FS -- c]{%
\includegraphics[width=0.5\textwidth]{Images/Chapter4/RQ2/updated/c.pdf}%
\label{fig:fsg}%
}\par
\subfloat[CL -- d]{%
\includegraphics[width=0.5\textwidth]{Images/Chapter4/RQ2/updated/d.pdf}%
\label{fig:cle}%
}
\subfloat[CL -- e]{%
\includegraphics[width=0.5\textwidth]{Images/Chapter4/RQ2/updated/e.pdf}%
\label{fig:clp}%
}\par
\subfloat[CL -- f]{%
\includegraphics[width=0.5\textwidth]{Images/Chapter4/RQ2/updated/f.pdf}%
\label{fig:clg}%
}
\label{fig:rub}
\end{figure}
我想将前三个子浮点数引用为4.5(a-c)
。为此,我使用了,~\ref{fig:fse},\ref{fig:fsp},\ref{fig:fsg}
但这给了我 4.5a,4.5b,4.5c
你知道该如何修复它吗?
答案1
这是使用包的尝试cleveref
。
- 定义了一个新的宏
\crefretainprefix
,模拟\crefstripprefix
。 - 设置
\crefrangelabelformat{subfigure}{...}
基于我之前的回答。 - 我也认为
\subfloat
这是由subcaption
包定义的。
在以下示例中,输入
\Cref{fig:rub} contain \cref{fig:fse,fig:fsp,fig:fsg} and \cref{fig:cle,fig:clp,fig:clg}.
给出
图 1 包含图 1(ac) 和图 1(df)。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{cleveref}
\makeatletter
\newcommand\crefretainprefix[2]{%
\begingroup%
\edef\@toksa{#1}%
\edef\@toksb{#2}%
\let\cref@acc\@empty%
\@crefretainprefix%
\cref@result%
\endgroup}%
\def\@crefretainprefix{%
\let\@iterate\relax%
\def\accum@flag{0}%
\let\@tempc\@tempb%
\cref@poptok{\@toksa}{\@tempa}%
\cref@poptok{\@toksb}{\@tempb}%
\ifx\@tempa\@tempb\relax%
\def\@iterate{\@crefretainprefix}%
\ifx\cref@acc\@empty\relax%
\let\cref@acc\@tempb%
\else%
\ifcat\@tempb\@tempc\relax%
\ifcat\@tempb a\relax%
\def\accum@flag{1}%
\else%
\expandafter\chardef\expandafter\@tempa%
\expandafter=\expandafter`\@tempb\relax%
\ifnum\@tempa>`/\relax%
\expandafter\ifnum\@tempb<`:\relax%
\def\accum@flag{1}%
\fi%
\fi%
\fi%
\fi%
\def\@tempa{1}%
\edef\cref@acc{\cref@acc\@tempb}%
\fi%
\else%
\ifcat\@tempb\@tempc\relax\else%
\edef\cref@acc{\cref@acc}%
\fi%
\edef\cref@result{\cref@acc}%
\fi%
\@iterate}%
\makeatother
\captionsetup[sub]{subrefformat=parens}
\crefrangelabelformat{subfigure}
{\crefretainprefix{#1}{#2}(#3\crefstripprefix{#2}{#1}#4--#5\crefstripprefix{#1}{#2}#6)}
\begin{document}
\Cref{fig:rub} contain \cref{fig:fse,fig:fsp,fig:fsg} and \cref{fig:cle,fig:clp,fig:clg}.
\begin{figure}[tb]
\centering
\subfloat[FS -- a]{%
\includegraphics[width=0.3\textwidth]{example-image-a}%
\label{fig:fse}%
}
\subfloat[FS -- b]{%
\includegraphics[width=0.3\textwidth]{example-image-b}%
\label{fig:fsp}%
}
\subfloat[FS -- c]{%
\includegraphics[width=0.3\textwidth]{example-image-c}%
\label{fig:fsg}%
}\par
\subfloat[CL -- d]{%
\includegraphics[width=0.3\textwidth]{example-image-a}%
\label{fig:cle}%
}
\subfloat[CL -- e]{%
\includegraphics[width=0.3\textwidth]{example-image-b}%
\label{fig:clp}%
}
\subfloat[CL -- f]{%
\includegraphics[width=0.3\textwidth]{example-image-c}%
\label{fig:clg}%
}
\caption{text}\label{fig:rub}
\end{figure}
\end{document}