参考页码范围:LaTeX 可以将“3-4”转换为第 4f 页,或者将“3-5”转换为第 3ff 页吗?

参考页码范围:LaTeX 可以将“3-4”转换为第 4f 页,或者将“3-5”转换为第 3ff 页吗?

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

相关内容