2

Consider the code

\documentclass[12pt]{book}
\begin{document}
\thispagestyle{empty}
\begin{enumerate}
\itemsep3.0em
\item Item 1

Please see pp. \pageref{R1}

\newpage \item Item 4 \label{R1} \item Item 5 \item Item 6 \item Item 7

\newpage \item Item 8 \label{R1} \item Item 9 \item Item 10

\newpage \item Item 11 \label{R1} \item Item 12 \item Item 13 \end{enumerate} \end{document}

which produces

enter image description here

However, in the code, I've referenced three consecutive pages; specifically, pages 2, 3, and 4.

QUESTION: How may I obtain something like Please see pp. 2--4?

Thank you.

DDS
  • 8,816
  • 4
  • 9
  • 36

1 Answers1

2

First of all, to reference three different labels you have to use three different label names.

You can use cleveref to automatic convert page references to ranges. But due to a bug, you also need a patch:

\documentclass[12pt]{book}
\usepackage[english]{babel}
\usepackage{cleveref}
\makeatletter
\newcommand*{\@setcpagerefrange}[3]{%
  \@@setcpagerefrange{#1}{#2}{cref}{#3}}
\newcommand*{\@setCpagerefrange}[3]{%
  \@@setcpagerefrange{#1}{#2}{Cref}{#3}}
\newcommand*{\@setlabelcpagerefrange}[3]{%
  \@@setcpagerefrange{#1}{#2}{labelcref}{#3}}
\makeatother
\begin{document}
\thispagestyle{empty}
\begin{enumerate}
\itemsep3.0em
\item Item 1

Please see \cpageref{R1,R2,R3}.

\newpage \item Item 4 \label{R1} \item Item 5 \item Item 6 \item Item 7

\newpage \item Item 8 \label{R2} \item Item 9 \item Item 10

\newpage \item Item 11 \label{R3} \item Item 12 \item Item 13 \end{enumerate} \end{document}

Please see pages 2 to 4

To get instead pp. 2–4 you can add

\crefname{page}{p.}{pp.}
\newcommand*{\crefrangeconjunction}{--}

to the document preamble. But note, the definition of \crefrangeconjunction will also change the output of other ranges, e.g., of \cref{R1,R2,R3}.

cabohah
  • 11,455