Hinzufügen einer Seitenzahl zum Querverweisbefehl

Hinzufügen einer Seitenzahl zum Querverweisbefehl

In "externe Referenzen hervorheben"

Ich fand den unten beschriebenen neuen Befehl sehr hilfreich. Allerdings möchte ich der externen Datei im Befehl \myautoref eine Seitenzahl hinzufügen, kann in den Foren aber keine Themen dazu finden.

Kann jemand beim Hinzufügen einer Seitenzahlreferenz behilflich sein?

\documentclass{article} 
\usepackage{xcolor}
\usepackage{xr-hyper}

\usepackage{hyperref} 

\externaldocument[A-]{extfile}  %(A)
\makeatletter

\newcommand{\myautoref}[2][A-]{%
  \@ifundefined{r@#1#2}{% Nope A-#2 isn't there
    \@ifundefined{r@#2}{%
    }{%
      \autoref{#2}%
    }%
  }{%
    {\pending{#1#2}}%
  }%
}
\newcommand{\pending}[1]{\color{red}\autoref{#1} from "file.tex"}

\makeatother


\begin{document}
Using \myautoref{sec:vis} and \myautoref{sec:vis}, but \myautoref{localsection}

\section{Local section}\label{localsection}
\end{document}

extfile.tex

\documentclass{article}

\begin{document}
\section{A section} \label{sec:vis}
\end{document}

Bildbeschreibung hier eingeben

Antwort1

Ich schlage vor, dass Sie das Makro \pagerefinnerhalb Ihrer Definition von verwenden \pending.

\autorefWenn Sie übrigens Querverweise zu Elementen in extern kompilierten Dateien erstellen möchten , müssen Sie hyperrefdiese externen Dateien laden. Das extfile.texsollte dann etwa so aussehen:

\documentclass{article}
\usepackage{hyperref}  % <- new
\begin{document}
\section{A section} \label{sec:vis}
\end{document}

Die Hauptdatei könnte dann folgendermaßen aussehen:

\documentclass{article} 

\usepackage{xr-hyper}
\externaldocument[A-]{extfile}

\usepackage{xcolor}
\usepackage[colorlinks,allcolors=red]{hyperref} 

\makeatletter
\newcommand{\myautoref}[2][A-]{%
  \@ifundefined{r@#1#2}{% Nope A-#2 isn't there
    \@ifundefined{r@#2}{}{\autoref{#2}}%
  }{{\pending{#1#2}}}}
\makeatother
\newcommand{\pending}[1]{\color{red}\autoref{#1} on page~\pageref{#1} of ``file.tex''}

\begin{document}
Using \myautoref{sec:vis}, but \autoref{localsection}.

\section{Local section} \label{localsection}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Wie bereits vorgeschlagen: \pagerefoder in einem erweiterbaren Kontext: \getpagerefnumber(erfordert refcount) Paket.

\documentclass{article} 
\usepackage{refcount}
\usepackage{xcolor}
\usepackage{xr-hyper}

\externaldocument[A-]{extfile}  %(A)

\usepackage{hyperref} 

\makeatletter

\newcommand{\myautoref}[2][A-]{%
  \@ifundefined{r@#1#2}{% Nope A-#2 isn't there
    \@ifundefined{r@#2}{%
    }{%
      \autoref{#2} on page \pageref{#2}%
    }%
  }{%
    {\pending{#1#2}}%
  }%
}
\newcommand{\pending}[1]{\color{red}\autoref{#1} from "file.tex" on page \getpagerefnumber{#1}}

\makeatother


\begin{document}
Using \myautoref{sec:vis} and \myautoref{sec:vis}, but \myautoref{localsection}

\section{Local section}\label{localsection}
\end{document}

Um autorefBeanstandungen vorzubeugen, \usepackage{hyperref}empfiehlt sich folgendes Hinzufügen zur externen Datei:

\documentclass{article}
\usepackage{hyperref}
\usepackage{blindtext}
\begin{document}
\blindtext[5]
\section{A section} \label{sec:vis}
\end{document}

verwandte Informationen