带有条件页面信息的引用标签

带有条件页面信息的引用标签

我希望有一种简单的方法来引用标签,如果该标签不在当前页面上,则应在引用中打印其页面,如“参见示例 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}}%

它所生成的任何其他文本也同样如此。

相关内容