修改交叉引用中的页码

修改交叉引用中的页码

我需要排版页面的交叉引用,使用\pageref,并且尽可能不超过两位数。例如:

pp. 1-23 
pp. 101-23   %(for 101-123)
pp. 101-105  %(not 101-05, because the second number starts with a zero)
pp. 101-222  %full range because 101-22 would be wrong

关键是:\pageref结果刚好是 101-123;我该如何修改它?

(抱歉,没有 MWE,因为我需要一个有数百页的...)我看了一些软件包,但似乎没有一个能提供我需要的东西。

答案1

这是一种方法。我假设页码小于 999。

参数\pagerange是指向所请求页面的标签。

\documentclass{article}
\usepackage{refcount}

\newcommand{\pagerange}[2]{pp.~%
  \edef\tempa{\getpagerefnumber{#1}}%
  \edef\tempb{\getpagerefnumber{#2}}%
  \ifnum\tempa<100
    \tempa--\tempb
  \else
    \comparerange
  \fi}
\def\comparerange{%
  \begingroup\edef\x{\endgroup
  \noexpand\workondigits\tempa\tempb....\relax}\x}
\def\workondigits#1#2#3#4#5#6#7\relax{%
  \if#1#4%
    \if#50%
      #1#2#3--#4#5#6%
    \else
      #1#2#3--#5#6%
    \fi
  \else
    #1#2#3--#4#5#6%
  \fi}

\begin{document}
a\label{a}
\newpage
\setcounter{page}{23}
b\label{b}
\newpage
\setcounter{page}{101}
c\label{c}
\newpage
\setcounter{page}{105}
d\label{d}
\newpage
\setcounter{page}{123}
e\label{e}
\newpage
\setcounter{page}{222}
f\label{f}

\newpage
\pagerange{a}{b}

\pagerange{c}{d}

\pagerange{c}{e}

\pagerange{c}{f}
\end{document}

在此处输入图片描述

相关内容