開き括弧を保持する `\crefstripprefix` の変形

開き括弧を保持する `\crefstripprefix` の変形

\crefrangeパッケージからのコマンドは、オブジェクトcleveref1a、1b、1c への同時相互参照を範囲 1a~1c に変換し、さらに\crefstripprefix共通のプレフィックス (ここでは 1 で、1a~c になります) を削除するように調整できます。

私は1(a)、1(b)、1(c)の形式でサブフロート参照を使用し、上記の機能を使用すると、1(a)~c); c の前の開き括弧は最初のラベルと共通なので削除されていることに注意してください。

回避策はありますか?1(a)~(c)? おそらく最善の方法は\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

いろいろ試してみたところ、少なくとも私のMWEのfloatrow/メカニズムでは、サブ図のラベルは実際には次のタイプであるようです。subcaptionサブ図これは、ラベルの形式を異なる方法で扱うことを示唆している。そしてサブ図しかし、

\crefrangelabelformat{subfigure}{%
    #3#1#4--#5(\crefstripprefix{#1}{#2}#6
} % note the additional opening parenthesis after #5

十分ではありません:私のラベルサブ図参照は依然としてラベルのように動作します参照。何らかの理由で、

\crefname{subfigure}{figure}{figures}

最後に、サブ図に独自のラベル形式を持たせます(これはどういうわけか「公式化」されますか?サブ図参照型ですか? 何が起こるかわかりません。

これは私が探していたものを実現しますが、\crefstripprefix開始区切り文字を削除しないようにパッチを適用する方が、より満足のいく解決策になると思われます。

関連情報