该varioref
包还可以通过用 定义对 2 个不同标签的引用来引用页面范围\vpagerefrange
。我没有找到有关允许排版的选项的信息
- “5-6” 为 “5f”
- 并且每个跨度超过 2 页的范围都到“5ff”
是否有一个包或选项可以自动执行此操作?
答案1
该varioref
软件包提供了\vrefpagenum{<macro>}{<ref>}
将给定参考文献的页码存储在宏中,以便用户可以定义自己的可变样式宏。手册第 2f 页 ;-) 有一个示例。
这是一个示例实现。测试可以进一步优化。
\documentclass{article}
\usepackage{varioref}
\makeatletter
\newcommand*{\vrefff}[2]{%
\begingroup
\vrefpagenum\@tempa{#1}%
\vrefpagenum\@tempb{#2}%
\if ?\@tempa\else
\if ?\@tempb\else
\ifx\@tempa\@tempb
\@tempa%
\else
\ifnum\@tempa>\@tempb\relax
\let\@tempc\@tempb
\let\@tempb\@tempa
\let\@tempa\@tempc
\fi
\ifnum\@tempb=\numexpr\@tempa+1\relax\relax
\@tempa f%
\else
\@tempa ff%
\fi
\fi
\fi
\fi
\endgroup
}
\makeatother
\begin{document}
i-vi: \vrefff{i}{vi}
i-ii: \vrefff{i}{ii}
ii-iii: \vrefff{ii}{iii}
iii-ii: \vrefff{iii}{ii}
i-i: \vrefff{i}{i}
iii-vi: \vrefff{iii}{vi}
\section{}\label{i}\newpage
\section{}\label{ii}\newpage
\section{}\label{iii}\newpage
\section{}\label{iv}\newpage
\section{}\label{v}\newpage
\section{}\label{vi}\newpage
\end{document}
结果是:
i-vi: 1ff
i-ii: 1f
ii-iii: 2f
iii-ii: 2f
i-i: 1
iii-vi: 3ff