переопределить \ref так, чтобы он также показывал номер страницы?

переопределить \ref так, чтобы он также показывал номер страницы?

я праздно размышлял вместо того, чтобы see Section \ref{labelname}производить

см. раздел 4.1.1

я мог бы сделать так, чтобы see Section \ref{labelname}производил

см. раздел 4.1.1(стр. 65)

возможно ли это? Не hyperrefиспортит ли это использование?

решение1

Вы можете определить команду, например \myref

\newcommand{\myref}[1]{\ref{#1} (p\pageref{#1})}

Тогда вы можете использовать\myref{xxx}

решение2

Более чистым способом был бы новый макрос, как в ответе goodluck. Но его также \refможно переопределить. Это следует сделать как можно позже, потому что многие пакеты переопределяют его. В решении это сделано в \AtBeginDocumentконце преамбулы, особенно после hyperrefзагрузки пакета.

Также пакет hyperrefподдерживает форму звезды, которая генерирует ссылку без ссылки. Например, это полезно, если ссылка является частью другой ссылки, чтобы избежать вложенных ссылок.

\documentclass{article}
\usepackage{hyperref}

\makeatletter
\AtBeginDocument{%
  \newcommand*{\original@ref}{}%
  \let\original@ref\ref
  \@ifpackageloaded{hyperref}{%
    \renewcommand*{\ref}{%
      \@ifstar\newrefstar\newref
    }%
    \newcommand*{\newrefstar}[1]{%
      \original@ref*{#1} \textbf{(p\pageref*{#1})}%
    }%
    \newcommand*{\newref}[1]{%
      \hyperref[#1]{\newrefstar{#1}}%
    }%
  }{%
    \renewcommand*{\ref}[1]{%
      \original@ref{#1} \textbf{(p\pageref{#1})}%
    }%
  }%
}
\makeatother

\begin{document}
\section{Introduction}
\section{Foo bar}
\subsection{Hello World}
\label{sec:hello}
This is subsection \ref{sec:hello}.
\end{document}

Ссылка на страницу

решение3

Может быть, вы хотели бы взглянуть наvariorefpackage с его командой \vref. Это сгенерирует требуемый вам вывод. Кроме того, это не повлияет на ваши hyperrefнастройки.

Связанный контент