使用 Pageref 和 Label 命令交叉引用多个页面

使用 Pageref 和 Label 命令交叉引用多个页面

考虑一下代码

\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}

产生

在此处输入图片描述

然而,在代码中我引用了连续的页面;具体来说,第 2、3 和 4 页。

问题:我如何才能获得类似请参阅第 2-4 页

谢谢。

答案1

首先,要引用三个不同的标签,您必须使用三个不同的标签名称。

您可以使用cleveref自动将页面引用转换为范围。但由于错误,你还需要一个补丁

\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}

请参阅第 2 至 4 页

为了得到pp. 2–4你可以添加

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

到文档前言。但请注意,的定义\crefrangeconjunction也会改变其他范围的输出,例如\cref{R1,R2,R3}

相关内容