我希望有一种简单的方法来引用标签,如果该标签不在当前页面上,则应在引用中打印其页面,如“参见示例 2.3 (p.4)”。我尝试了和varioref
包,但它们使用或cleveref
的文本输出对我来说太冗长了。我在文档中找不到任何可以只打印(p.4)的内容。或者还有其他选择吗?\vref
\cref
答案1
如果您使用 babel,您可以使用包更改打印的参考,varioref
如下面的德语 MWE 所示。
\documentclass[ngerman]{scrartcl}% article
\usepackage{babel}
\usepackage{varioref}
\usepackage{blindtext}
\usepackage[colorlinks]{hyperref}
\addto{\extrasngerman}{% addto only with babel <===============
\renewcommand{\reftextfaceafter}[1]{(Seite~\pageref{#1})}
\renewcommand{\reftextfacebefore}[1]{(Seite~\pageref{#1})}
\renewcommand{\reftextafter}[1]{(Seite~\pageref{#1})}
\renewcommand{\reftextbefore}[1]{(Seite~\pageref{#1})}
\renewcommand{\reftextcurrent}[1]{(Seite~\pageref{#1})}
\renewcommand{\reftextfaraway}[1]{(Seite~\pageref{#1})}
}
\begin{document}
\section{Abschnitt 1}
\label{sec:Test}
Und der erste Verweis auf Abschnitt~\vref{sec:Test}. % <===============
\Blinddocument
Und der Verweis auf Abschnitt~\vref{sec:Test}. % <===============
\end{document}
宏\addto{\extrasngerman}
为语言添加了新的含义ngerman
。如果您使用其他语言,请更改ngerman
为您的语言。
(Seite~\pageref{#1})
例如,更改为您需要的(p.~\pageref{#1})
。
编辑:
KOMA-Script 宏\newcaptionname{ngerman}{...}
无法处理第三个参数(for \pageref{#1}
),因此您不能在这里使用它。
答案2
如果你使用 varioref,所有固定文本都在易于更改的宏中,例如包中有
\def\reftextfaraway#1{on page~\pageref{#1}}%
所以你可以
\renewcommand\reftextfaraway[1]{p.~\pageref{#1}}%
它所生成的任何其他文本也同样如此。