Wie kann man Hyperref zwingen, nur auf \cite und nicht auf \citeauthor oder \citeyear zu verweisen?

Wie kann man Hyperref zwingen, nur auf \cite und nicht auf \citeauthor oder \citeyear zu verweisen?

Ich möchte hyperrefLinks nur erstellen, wenn ich \citeund verwende, nicht mit \citeyearund \citeauthor. Hier ist ein Beispiel:

\documentclass{article}
\usepackage[numbers]{natbib}
\usepackage{hyperref}

\begin{document}

\citeauthor{Wysocki1960} has shown something interesting in \citeyear{Wysocki1960} \cite{Wysocki1960}.

\bibliographystyle{plainnat}
\bibliography{test}
\end{document}

Mit der .bib-Datei:

@article{Wysocki1960,
annote = {cited By (since 1996) 27},
author = {Wysocki, J.J.},
journal = {Journal of Applied Physics},
number = {3},
pages = {571--578},
title = {{Effect of temperature on photovoltaic solar energy conversion}},
volume = {31},
year = {1960}
}

In der Ausgabe soll nur die [1] als Link erscheinen.

Antwort1

Die Hyperlinks werden durch das \NAT@hyper@#1in definierte Makro gesetzt natbib.sty. Mithilfe von etoolboxkönnen Sie sich in den Low-Level-Zitationsbefehl einklinken, \NAT@citexnumum \NAT@hyper@bei nicht numerischen Zitaten nichts zu tun. Hier ist ein Beispiel.

\documentclass{article}
\usepackage[numbers]{natbib}
\usepackage[colorlinks]{hyperref}
\usepackage{etoolbox}

\makeatletter
\pretocmd{\NAT@citexnum}{\@ifnum{\NAT@ctype>\z@}{\let\NAT@hyper@\relax}{}}{}{}
\makeatother

\begin{filecontents}{\jobname.bib}
@Book{companion,
  author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander},
  title = {The LaTeX Companion},
  edition = {1},
  publisher = {Addison-Wesley},
  location = {Reading, Mass.},
  year = {1994}}
@Book{adams,
  title = {The Restaurant at the End of the Universe},
  author = {Douglas Adams},
  series = {The Hitchhiker's Guide to the Galaxy},
  publisher = {Pan Macmillan},
  year = {1980}}
\end{filecontents}

\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}

\begin{document}
\noindent
\cmd{citeauthor}: \citeauthor{adams}, \citeauthor{companion} \\
\cmd{cite}: \cite{adams}, \cite{companion} \\
\cmd{citeyear}: \citeyear{adams}, \citeyear{companion} \\
\cmd{citet}: \citet{adams}, \citet[see][p. 20]{adams} \\
multi-\cmd{citet}: \citet{companion,adams} \\
\cmd{citep}: \citep{adams}, \citep[see][p. 20]{companion} \\
multi-\cmd{citep}: \citep{companion,adams} \\
\cmd{citetext}, \cmd{citealp}: \citetext{see \citealp{companion}, or even better \citealp{adams}}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen