我想使用\pageref
's 来表示一系列页面,例如,在我的文件中,有这样一段内容
See pages \pageref{ref1}--\pageref{ref1_end}.
其中ref1
指向某个部分,并且我想ref1_end
指向该部分的结尾:
\section{section 1}\label{ref1}
a lot of text.\label{ref1_end} % label does not work: Reference `ref1_end' on page X undefined on input line Y.
\section{section 2}\label{ref2}
more text \label{ref2_end}
\pageref{ref1}--\pageref{ref1_end}
如果两个部分之间有分页符,则使用将是错误的。
如何在文本末尾添加标签。有没有办法使用一些 0 大小环境或幻像部分来实现这一点?
答案1
您需要用标签标记该部分的结尾。我采用了您添加_end
最终标签的方案。
\documentclass{article}
\usepackage{refcount}
\usepackage{lipsum}
\newcommand{\pagerefrange}[1]{%
\ifnum\getpagerefnumber{#1}=\getpagerefnumber{#1_end}\relax
page~\pageref{#1}%
\else
pages~\pageref{#1}--\pageref{#1_end}%
\fi
}
\begin{document}
See \pagerefrange{ref1} and \pagerefrange{ref2}.
\section{A long section}\label{ref1}
\lipsum[1-10]
End.\label{ref1_end}
\section{A short section}\label{ref2}
\lipsum[1]
End.\label{ref2_end}
\end{document}
该宏比较两个页面引用,如果它们相等则发出“第 n 页”,否则发出“第 m-n 页”。