Команда \crefrange
из cleveref
пакета преобразует одновременные перекрестные ссылки на объекты 1a, 1b и 1c в диапазон 1a–1c и может быть дополнительно настроена с \crefstripprefix
целью удаления общего префикса (в данном случае 1, что дает 1a–c).
Я использую ссылки на подэлементы в формате 1(a), 1(b), 1(c), и использование вышеуказанной функции дает1(а)–в); обратите внимание, что открывающая скобка перед буквой c была удалена, поскольку она совпадает с первой меткой.
Есть ли обходной путь, чтобы получить1(а)–(в)? Я думаю, лучшим вариантом будет модификация \crefstripprefix
, так чтобы он не удалял открывающие разделители; мои знания TeX слишком слабы, чтобы написать это самому. В качестве побочного обсуждения, видит ли кто-нибудь недостаток в том, чтобы сделать это поведением по умолчанию?
\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}
решение1
После некоторых экспериментов выяснилось, что, по крайней мере с механизмом floatrow
/ subcaption
моего MWE, метки для подрисунков на самом деле имеют типподрисунок. Это предполагает, что формат этикетки следует рассматривать по-разному дляфигураиподрисунок. Однако, просто добавив
\crefrangelabelformat{subfigure}{%
#3#1#4--#5(\crefstripprefix{#1}{#2}#6
} % note the additional opening parenthesis after #5
недостаточно: метки моегоподрисунокссылки по-прежнему ведут себя как меткифигурассылки. По какой-то причине, добавив также
\crefname{subfigure}{figure}{figures}
наконец-то делает так, чтобы у подрисунков был собственный формат меток (это как-то «официализирует»подрисунокссылочный тип? понятия не имею, что происходит).
Хотя это и позволяет достичь того, чего я искал, все равно кажется, что исправление \crefstripprefix
, при котором не удаляются открывающие разделители, было бы более удовлетворительным решением.