The \crefrange command from the cleveref package transforms simultaneous cross-references to objects 1a, 1b and 1c as a range 1a–1c, and can be tuned further with \crefstripprefix to remove the common prefix (here, 1, yielding 1a–c).
I use subfloats references in the format 1(a), 1(b), 1(c), and using the above feature yields 1(a)–c); note the opening parenthesis before the c has been stripped because it is in common with the first label.
Is there a workaround to get 1(a)–(c)? I guess the best would be a modification of \crefstripprefix, so that it does not strip opening delimiters; my knowledge of TeX is too poor to write it myself. As a side discussion, would anyone see a drawback in making this the default behavior?
\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{floatrow}
\usepackage{subcaption}
% define subfigure label
\captionsetup[subfloat]{labelformat=simple}
\renewcommand\thesubfigure{(\alph{subfigure})}
\usepackage{cleveref}
\crefrangelabelformat{figure}{#3#1#4--#5\crefstripprefix{#1}{#2}#6}
\begin{document}
\begin{figure}
\ffigbox[\textwidth]{
\begin{subfloatrow}[3]
\ffigbox[\FBwidth]{\includegraphics[height=2cm,width=2cm]{}}{\caption{subcap}\label{sfig:a}}
\ffigbox[\FBwidth]{\includegraphics[height=2cm,width=2cm]{}}{\caption{subcap}\label{sfig:b}}
\ffigbox[\FBwidth]{\includegraphics[height=2cm,width=2cm]{}}{\caption{subcap}\label{sfig:c}}
\end{subfloatrow}
}{\caption{cap}\label{fig:1}}
\end{figure}
%
\begin{figure}[h]
\includegraphics[height=2cm,width=2cm]{}
\caption{cap}\label{fig:2}
\end{figure}
%
\begin{figure}[h]
\includegraphics[height=2cm,width=2cm]{}
\caption{cap}\label{fig:3}
\end{figure}
\crefrange{fig:1}{fig:3}
\crefrange{sfig:a}{sfig:c}
\end{document}
\labeled. – Mico Feb 20 '18 at 15:15\arabic{\thefigure}(\alph{\thesubfigure})would behave the same here. – Hugo Raguet Feb 20 '18 at 15:53