Varioref、cleveref 和 autonum 结合使用

Varioref、cleveref 和 autonum 结合使用

我正在尝试混合 varioref、cleveref 和 autonum 以实现以下行为:

  • 自动添加引用类型(即引用某个部分时添加“section”)。-> cleveref;
  • 添加“下一页” -> varioref;
  • 不对未引用的方程式进行编号 -> autonum。

三者中的任意两个组合都可以正常工作,但是这三个组合会因未定义的引用而失败。

一个简单的例子:

\documentclass{article}

\usepackage{amsmath}

\usepackage{varioref}
%\usepackage{hyperref}
\usepackage{cleveref}

\usepackage{autonum}

\begin{document}

\begin{align} x \label{eqnx} \end{align} % referenced, must have number (1)
\begin{align} y \label{eqny} \end{align} % referenced, must have number (2)
\begin{align} z \label{eqnz} \end{align} % not referenced, must not have any number

\pagebreak

\vref{eqnx,eqny} %% Solution 1: What I'm looking for, does not work

% \cref{eqnx,eqny} \vpageref{eqnx,eqny} %% Solution 2: A different way of writing Solution 1. Works. Note that this is not really equal to Solution 1.

%\vref{eqnx,eqny} \ref{eqnx} \ref{eqny} %% Solution 3: WORKS, use vref as solution1, but there is also references using standard \ref

\end{document}

编辑:已经提供了一个解决方案,但最终我认为不给公式编号(即使没有引用)是一种不好的做法,因为审阅者无法轻松引用它们。因此,除了特殊用例外,我不鼓励使用autonum

答案1

因为看起来你想\vref使用命令C奥玛年代分开大号ists,您应该\autonum@generatePatchedReferenceCSL{vref}按如下所示使用。

\documentclass{article}
\usepackage[%
  paperwidth=3in,
  paperheight=2in,
  margin=0.1in,
  bottom=0.3in,
  footskip=0pt]{geometry} % Only to get smaller pages for MWE

\usepackage{amsmath}

\usepackage{varioref}
\usepackage{cleveref}

\usepackage{autonum}

\makeatletter
\autonum@generatePatchedReferenceCSL{vref}
\makeatother

\begin{document}

\begin{align} x \label{eqnx} \end{align} % referenced, must have number (1)
\begin{align} y \label{eqny} \end{align} % referenced, must have number (2)
\begin{align} z \label{eqnz} \end{align} % not referenced, must not have any number

\pagebreak

\vref{eqnx,eqny}

\end{document}

第 1 页

第2页

来自第 3.3 节“参考命令”文档

对于需要以逗号分隔的标签名称列表作为参数的参考命令,您可以使用 \autonum@generatePatchedReferenceCSL{NewReferenceCommand}

答案2

根据文档,可以用来\autonum@generatePatchedReference{NewReferenceCommand}使“期望单个标签名称作为参数的正常参考命令”与 autonum 一起工作。

添加以下内容应该可以使事情正常进行:

\makeatletter
\autonum@generatePatchedReference{vref}
\makeatother

相关内容