![使用 Pageref 和 Label 命令交叉引用多个页面](https://linux22.com/image/465384/%E4%BD%BF%E7%94%A8%20Pageref%20%E5%92%8C%20Label%20%E5%91%BD%E4%BB%A4%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E5%A4%9A%E4%B8%AA%E9%A1%B5%E9%9D%A2.png)
考虑一下代码
\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}
为了得到pp. 2–4
你可以添加
\crefname{page}{p.}{pp.}
\newcommand*{\crefrangeconjunction}{--}
到文档前言。但请注意,的定义\crefrangeconjunction
也会改变其他范围的输出,例如\cref{R1,R2,R3}
。