Vergleichen Sie die Autoren zweier NatBib-Referenzen

Vergleichen Sie die Autoren zweier NatBib-Referenzen

Ich versuche herauszufinden, ob zwei Referenzen denselben Autor haben natbib. Aber ich scheine grundlegende Stringvergleiche nicht zum Laufen zu bringen. Ohne tieferes Verständnis habe ich alles versucht, was ich finden konnte ( xstring, \detokenize, , ...). Nichts funktioniert wirklich. Ich wäre so froh, wenn jemand meine Funktion \expandafter\relaxreparieren könnte .Test

\documentclass{article}
\usepackage{natbib}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
    @article{ArticleX, author = "AuthorA", year = "2000"}
    @article{ArticleY, author = "AuthorA", year = "2010"}
    @article{ArticleZ, author = "AuthorB", year = "2010"}
\end{filecontents}
\newcommand{\Test}[2]{
    \ifx\citeauthor{#1}\citeauthor{#2}
        Yes!
    \else
        No!
    \fi
}
\begin{document}
    Oh, \cite{ArticleX} and \cite{ArticleZ} don't have the same author? \Test{ArticleX}{ArticleZ} Ok!

    But \cite{ArticleX} and \cite{ArticleY} surely have! \Test{ArticleX}{ArticleY} No, either??

    \bibliographystyle{unsrtnat}
    \bibliography{\jobname}
\end{document}

Antwort1

Das funktioniert:

% https://tex.stackexchange.com/questions/8981/
\newcommand{\ignoreoutput}[1]{\setbox0\vbox{\everypar{}#1}}
\makeatletter
\newcommand{\Test}[2]{
    \ignoreoutput{\citeauthor{#1}}
    \edef\NumberOne{\NAT@name}
    \ignoreoutput{\citeauthor{#2}}
    \edef\NumberTwo{\NAT@name}
    \ifx\NumberOne\NumberTwo
        Yes!
    \else
        No!
    \fi
}

Ich freue mich immer noch über elegantere Antworten, aber das löst meine Probleme.

verwandte Informationen