我想编写一个宏,其工作原理类似于\ref
附加功能:如果参数与引用(实际页面)位于同一页面上,则会添加page \pageref
。
我尝试过,但我认为我的方法不对。这是我的代码:
\documentclass{article}
\usepackage{ifthen}
\newcommand{reff}[1]{%
\ifthenelse{\thepage = \pageref{#1}}%
{\ref{#1}}%
{\ref{#1} page \pageref{#1}}%
}
\begin{document}
\section{References}
The first test section \reff{test1} and the second test section \reff{test2}.
\section{\label{test1## Heading ##} Test section}
\newpage
\section{\label{test2} Second test section}
\end{document}
我收到以下错误:
! LaTeX Error: Missing \begin{document}.
它应该显示:
The first test section 2 and the second test section 3 page 2.
感谢您的帮助。
答案1
在重新发明轮子之前,先看一下varioref
包(即运行 texdoc varioref
):
\documentclass{article}
\usepackage[colorlinks,linkcolor=blue]{hyperref}
\usepackage{varioref}
\begin{document}
\section{References}
The first test section \vref{test1}
and the second test section \vref{test2}.
\section{\label{test1} Test section}
\newpage
\section{\label{test2} Second test section}
\end{document}