
Wenn ich natbibapa mit apacite verwende und Backrefs einfüge, verdoppelt sich der benutzerdefinierte Text im Backref wie in diesem Bild.
Irgendwelche Ideen, wie man das Problem lösen kann? Danke!
Hier ist ein MWE:
\documentclass[11pt,a4paper]{article}
\usepackage[pagebackref=true]{hyperref}
%OR \usepackage{backref}
\renewcommand*{\backref}[1]{Zitiert auf S.{\,}#1.}
\usepackage[natbibapa]{apacite}
%\usepackage{natbib}
\RequirePackage{filecontents}
\begin{filecontents}{jobname.bib}
@book{aaas1990,
author = {{American Association for the Advancement of Science [AAAS]}},
year = {1990},
title = {{Science for all Americans}},
address = {New York},
publisher = {{Oxford University Press}},
key = {AAAS}
}
\end{filecontents}
\begin{document}
I cite \citep{aaas1990}. %Problem occurs independent of the use of \cite{}, \citep{} or anything else.
\bibliography{jobname}
\bibliographystyle{apacite}
\end{document}
- Das Problem tritt sowohl bei der Backref-Option des Hyperref als auch beim Backref-Paket auf.
- Das Problem tritt sowohl bei der Natbibapa-Option des Apacite- als auch beim Natbib-Paket auf.
Antwort1
Ersetzen \renewcommand*{\backref}[1]{Zitiert auf S.{\,}#1.}
mit \renewcommand*{\backrefxxx}[3]{Zitiert auf S.{\,}#1.}
.
Sie können der Präambel auch die folgenden Zeilen hinzufügen, um zu sehen, dass der Befehl backref
zweimal aufgerufen wird (ich weiß nicht, warum), aber beim ersten Mal ist sein Parameter leer; beim zweiten Mal enthält der Parameter die Ausgabe von \backrefxxx
:
\usepackage{xcolor}
\renewcommand*{\backref}[1]{\textcolor{red}{BACKREF[1=#1]ENDOFBACKREF}}
\renewcommand*{\backrefxxx}[3]{\textcolor{blue}{XXX[1=#1][2=#2][3=#3]ENDOFXXX}}
Ein ausführlicherer Ersatz für \backref
heißt \backrefalt
:
\usepackage{xcolor}
\renewcommand*{\backref}[1]{} %% documentation says: use this when backref package version < 1.33
%% I have 1.38 and when \backrefalt is defined, it replaces \backref
\renewcommand*{\backrefxxx}[3]{\textcolor{blue}{XXX[1=#1][2=#2][3=#3]ENDOFXXX}}
\renewcommand*{\backrefalt}[4]{\textcolor{green}{ALT[1=#1][2=#2][3=#3][4=#4]ENDOFALT}}
Beachten Sie, dass das 1. und 3. Argument, die an übergeben werden, \backrefalt
die Anzahl der Zitate sind (#1 ist die Anzahl der verschiedenen Seiten mit Rückverweisen, #3 die Gesamtzahl der Zitate). Beachten Sie, dass bei der folgenden Definition nichts ausgegeben wird, wenn #1=0 (der erste Aufruf von \backrefalt
oben):
\renewcommand*{\backrefalt}[4]{%
\ifcase #1 {}% %% do not output anything if the first argument is 0!!!
\or page #2% %% first argument=1 => was cited on a single page
\else pages #2% %% first argument>1 => was cited on multiple pages
\fi
}