![使用 `cleveref` 进行范围格式化](https://linux22.com/image/423803/%E4%BD%BF%E7%94%A8%20%60cleveref%60%20%E8%BF%9B%E8%A1%8C%E8%8C%83%E5%9B%B4%E6%A0%BC%E5%BC%8F%E5%8C%96.png)
我想自定义包中处理多个引用的方式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
不知道这不是一个完整的范围\nt
。也许这与cleveref
查看环境,而不是柜台?
编辑。
Mico 似乎建议使用\refstepcounter
并放置\nt
在 之前\label
。他们没有提供进一步的细节,但我还是做了上述更改。