如何告诉 cleveref 本地不对引用进行排序

如何告诉 cleveref 本地不对引用进行排序

cleveref 手册声明如下:

当 cleveref 排版多个交叉引用或页面引用的列表时,默认行为是自动对列表进行排序,并将连续的交叉引用或页码序列压缩到引用范围中。您可以通过提供以下包选项之一来更改此行为:

种类对交叉引用列表进行排序,但不要压缩连续的引用。

压缩将连续引用序列压缩到引用范围内,但不对交叉引用列表进行排序。

不排序既不对交叉引用列表进行排序,也不压缩连续引用。sort&compress 对交叉引用列表进行排序,并将连续引用序列压缩到引用范围中(这是默认设置)。

有时,您可能希望防止特定序列的连续交叉引用被压缩到参考范围,而无需全局禁用此功能。

但是,它没有说明如何本地禁用对引用的排序。可以这样做吗?

MWE 输出:

\documentclass{article}

\usepackage{cleveref}

\begin{document}
First equation:
\begin{equation}
\label{equation:first}
    a=2
\end{equation}
Second equation:
\begin{equation}
\label{equation:second}
    b=1
\end{equation}

As seen in \Cref{equation:second,equation:first}

\end{document}

在此处输入图片描述

目标是获得“如公式 (2) 和 (1) 所示”的结果,但不停止更全局范围的排序。

答案1

您可以在本地停用排序功能:

\documentclass{article}
\usepackage{cleveref}

\makeatletter
\newcommand*{\Crefns}[1]{{\@cref@sortfalse\Cref{#1}}}
\makeatother

\begin{document}
First equation:
\begin{equation}
\label{equation:first}
    a=2
\end{equation}
Second equation:
\begin{equation}
\label{equation:second}
    b=1
\end{equation}

As seen in \Crefns{equation:second,equation:first}

\end{document}

也许您还想停用压缩功能:

\documentclass{article}
\usepackage{cleveref}

\makeatletter
\newcommand*{\Crefns}[1]{{\@cref@sortfalse\@cref@compressfalse\Cref{#1}}}
\makeatother

\begin{document}
First equation:
\begin{equation}
\label{equation:first}
    a=2
\end{equation}
Second equation:
\begin{equation}
\label{equation:second}
    b=1
\end{equation}

As seen in \Crefns{equation:second,equation:first}

\end{document}

在此处输入图片描述

但是,请注意,此建议使用了 的内部结构cleveref。因此,当内部结构发生变化时,它可能会在未来失败。

相关内容