参考文献自动在括号中打印相应的页码

参考文献自动在括号中打印相应的页码

我希望引用能够自动打印引用部分(标题)/表格/图表... 所在的页码(括号中),以及引用的其余部分。输出应如下所示:

As we can see in \autoref{table}, ...-> 正如我们所见表 3 (第 15 条),...

“S” 代表德语中的“Seite”,即“页面”,最佳解决方案是让“S.”自动出现,因为包选项babelngerman,因此允许它适用于每种语言。我hyperref已经因为 而使用该包了\autoref。这是一个最小的工作示例:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{hyperref}

\begin{document}

\section{Section}
\label{Section}

\blindtext

\newpage
\section{Another Section}

As mentioned in \autoref{Section}, ...

\end{document}

答案1

您可以重新定义\autoref以包含\autopageref。由于ngerman定义page页面并不是年代。您需要重新定义它并babel以常规方式添加它:

\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{blindtext}
\usepackage{hyperref}
\addto\extrasngerman{%
\def\pageautorefname{S.~}}
\let\oldautoref\autoref
\renewcommand{\autoref}[1]{\oldautoref{#1} (\autopageref{#1})}
\begin{document}

\section{Section}
\label{Section}
\begin{table}
\caption{A table\label{Table}}
\end{table}

\blindtext

\newpage
\section{Another Section}

As mentioned in \autoref{Section} and in \autoref{Table} ...

\end{document}

代码输出

避免引用相同的页面

由于在引用的项目的同一页上添加页码来引用有点烦人,因此您可以使用改编自这个答案使页面引用仅在所引用的元素不在当前页面上时才出现:

\usepackage{ifthen}
\newcounter{cPage}

\renewcommand{\autoref}[1]{\oldautoref{#1}%
\refstepcounter{cPage}\label{current\thecPage}%
 \ifthenelse{\equal{\pageref{#1}}{\pageref{current\thecPage}}}%
  {}{~(\autopageref{#1})}}

相关内容