두 natbib 참조의 저자 비교

두 natbib 참조의 저자 비교

두 참고문헌의 저자가 동일한지 확인하려고 합니다 natbib. 하지만 기본 문자열 비교가 작동하지 않는 것 같습니다. 더 깊은 이해 없이, 찾을 수 있는 모든 것을 시도했습니다( xstring, \detokenize, \expandafter\relax, ...). 실제로 작동하는 것은 없습니다. 누군가가 내 기능을 고칠 수 있다면 정말 기쁠 것입니다 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}

답변1

이것은 작동합니다:

% 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
}

나는 여전히 더 우아한 답변을 환영하지만 이것이 내 문제를 해결합니다.

관련 정보