`cleveref` による範囲フォーマット

`cleveref` による範囲フォーマット

パッケージ内で複数の参照を処理する方法をカスタマイズしたいと思います。カンマ区切りのcleveref形式にしたいのですが、(eq0, eq1, eq3, eq4)ない限り(eq0--eq3)参照のセットが完全な範囲を形成する場合、たとえばの代わりにダッシュを使用します(eq0, eq1, eq2, eq3)

ただし、私は環境を使用しません\begin{equation} ... \end{equation}。次のマクロを使用します:\newcommand{\nt}{\addtocounter{equation}{1}\tag{\theequation}}および\begin{equation*} ... \nt \end{equation*}。方程式だけであれば、非*-d バージョンに切り替えることができます。ただし、そのマクロを使い続けたい理由は他にもあります\nt

以下は最小限の動作例です。(かなり長くて申し訳ありませんが、できるだけ短くしました。)

\documentclass[]{article}

\usepackage{amsmath,cleveref}

\newcommand{\nt}{\refstepcounter{equation}\tag{\theequation}}

\crefformat{equation}{(#2#1#3)}
\crefmultiformat{equation}{(#2#1#3}{, #2#1#3)}{, #2#1#3}{, #2#1#3)}
\crefrangeformat{equation}{(#3#1#4--#5#2#6)}

\begin{document}
\setcounter{equation}{-1}

\begin{equation}\label{0} 0\end{equation}
\begin{equation}\label{1} 1\end{equation}
\begin{equation}\label{2} 2\end{equation}
\begin{equation}\label{3} 3\end{equation}
\begin{equation}\label{4} 4\end{equation}
\begin{equation*}\nt\label{5} 5\end{equation*}
\begin{equation*}\nt\label{6} 6\end{equation*}
\begin{equation*}\nt\label{7} 7\end{equation*}
\begin{equation*}\nt\label{8} 8\end{equation*}
\begin{equation*}\nt\label{9} 9\end{equation*}

\texttt{\textbackslash cref\{0,1,3,4\}}: \cref{0,1,3,4}
%this prints the desired `(0, 1, 3, 4)`

\texttt{\textbackslash cref\{5,6,8,9\}}: \cref{5,6,8,9}
%this prints the undesired `(5--9)`

\end{document}

どうやら、マクロcleverefを使用すると、これがフルレンジではないことが分からないようです\ntcleveref環境ではなく、カウンター?


編集。\refstepcounterMico は、 を使用し、\ntの前に配置すること を提案しているようです\label。詳細は提供されていませんが、とにかく上記の変更を加えました。

関連情報