
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}
Antwort1
Ich schlage vor, dass Sie das Makro \pageref
innerhalb Ihrer Definition von verwenden \pending
.
\autoref
Wenn Sie übrigens Querverweise zu Elementen in extern kompilierten Dateien erstellen möchten , müssen Sie hyperref
diese externen Dateien laden. Das extfile.tex
sollte 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}
Antwort2
Wie bereits vorgeschlagen: \pageref
oder 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 autoref
Beanstandungen 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}