如何获取有关标签相对于其他文本的位置的信息?
- 标签是否位于上一页还是当前页(即出现在前面的几行中,但在同一页上)。
- 如果标签位于前一页,那么前几页是几页?例如,前 1 页,前 5 页。
获取一些值会很有帮助,例如 0 表示当前页,1 表示上一页,2 表示前两页,因为这些值可以放入 if-then 中。
答案1
这也许也是一个部分答案,因为它解决了您的第一个问题。
这varioref
包裹提供\vref
并\vpageref
“修饰”页面引用,具体取决于其相对于引用的位置。以下是示例:
\documentclass{article}
\usepackage{varioref}% http://ctan.org/pkg/varioref
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\section{First section} \lipsum[1] \label{sec:first} \lipsum[2-3]
\section{Second section} \lipsum[4-5] \label{sec:second} \lipsum[6-8]
\section{Third section} \lipsum[9-12] \label{sec:third} \lipsum[13]
\section{Fourth section} \label{sec:fourth} \lipsum[14]
\section{Last section} \label{sec:last} \lipsum[15-17] \label{doc:end}
See the reference \vpageref{sec:last} or \vpageref{sec:second}.
\end{document}
答案2
这是一个部分解决方案:用来\pageref
获取定义的页码\label
。
\documentclass{book}
\usepackage{lipsum}
\newcounter{pagedelta}
\newcommand{\pagerefdelta}[1]{%
\setcounter{pagedelta}{\the\value{page}}%
\addtocounter{pagedelta}{-\pageref{#1}}%
\the\value{pagedelta}%
}%
\newcommand{\ShowRef}[1]{Section #1 is on Page~\pageref{#1}\par}%
\begin{document}
\chapter{One}
\section{One-One}\label{One-One}
\lipsum[1-4]\label{One-Two}
\chapter{Two}
\section{Two-One}\label{Two-One}
\section{Two-Two}\label{Two-Two}
\section{Two-Three}\label{Two-Three}
\chapter{Three}
\section{Three-One}\label{Three-One}
\lipsum[1-9]
\newpage
\ShowRef{One-One}
\ShowRef{One-Two}
\ShowRef{Two-One}
\ShowRef{Two-Two}
\ShowRef{Two-Three}
\ShowRef{Three-One}
\end{document}