
Ich möchte zwischen zwei Dateien verweisen, beispielsweise Paper1 und Paper2. Ich verwende hyperref
in jedem der Dokumente interne Referenzen. Um deutlich zu machen, welche Referenzen intern und welche extern sind, möchte ich die Farbe der xr
Referenzen ändern.
In hypersetup
habe ich gewählt linkcolor={blue}
. Im Wesentlichen möchte ich sagen können
if reference is external, then set linkcolor={red}
if reference is internal, then set linkcolor={blue}
Ich habe ein Beispiel in Overleaf eingerichtet, das Sie hier finden:https://www.overleaf.com/4688282852jxtxcsdmnrhs. Unten finden Sie eine Kopie der Dateien (entschuldigen Sie, dass sie so lang sind!)
(Es gibt zusätzlichen „Hilfscode“ in Overleaf, der meines Erachtens nicht erforderlich ist, wenn lokal kompiliert wird; siehehttps://www.overleaf.com/learn/how-to/Cross_referencing_with_the_xr_package_in_Overleaf.)
%%File1.tex
\documentclass{article}
\usepackage{hyperref}
\hypersetup{
colorlinks,
linkcolor={blue},
citecolor={blue},
urlcolor={blue}
}
%%% HELPER CODE FOR DEALING WITH EXTERNAL REFERENCES
\usepackage{xr-hyper}
\makeatletter
\newcommand*{\addFileDependency}[1]{
\typeout{(#1)}
\@addtofilelist{#1}
\IfFileExists{#1}{}{\typeout{No file #1.}}
}
\makeatother
\newcommand*{\myexternaldocument}[1]{
\externaldocument{#1}
\addFileDependency{#1.tex}
\addFileDependency{#1.aux}
}
%%% END HELPER CODE
% put all the external documents here!
\myexternaldocument{File2}
\title{\texttt{xr} package example}
\author{Overleaf team}
\begin{document}
\maketitle
We would like to reference section \ref{label1} of file2.tex
\end{document}
%%%%%%%%%%%%%
%%File2.tex
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{Label1}
\label{label1}
This section is referenced by File1.
\end{document}
%%%%%%%%%%%%%
%%latexmkrc
add_cus_dep( 'tex', 'aux', 0, 'makeexternaldocument' );
sub makeexternaldocument {
# if the dependency isn't one of the files that this latexmk run will consider, process it
# without this test, we would get an infinite loop!
if (!($root_filename eq $_[0]))
{ # PLEASE ENABLE ONLY ONE OF THE FOLLOWING
# DEPENDING ON THE ENGINE YOU'RE USING
# FOR PDFLATEX
system( "latexmk -pdf \"$_[0]\"" );
# FOR LATEX+DVIPDF
# system( "latexmk \"$_[0]\"" );
# FOR XELATEX
# system( "latexmk -xelatex \"$_[0]\"" );
# FOR LUALATEX
# system( "latexmk -lualatex \"$_[0]\"" );
}
}
Antwort1
Sie sollten xr-hyper vor hyperref laden. Außerdem: mit xr-hyper sind die Farben standardmäßig anders, Sie sehen es nur nicht, weil Sie in linkcolor
Blau und damit in eine Farbe geändert haben, die ziemlich ähnlich ist filecolor
.
\documentclass{article}
\usepackage{xr-hyper}
\usepackage[colorlinks]{hyperref}
\hypersetup{
colorlinks,
linkcolor={blue},
filecolor={red}, %<----
urlcolor={blue},
citecolor={blue}
}
\externaldocument[ex:]{external}
\begin{document}
\section{My section}\label{sec:mysection}
Local ref: \ref{sec:mysection}, external ref: \ref{ex:sec:mytitle}
\end{document}
%external.tex
\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\begin{document}
\section{MyTitle}\label{sec:mytitle}
\end{document}