Estoy tratando de averiguar si dos referencias tienen el mismo autor natbib
. Pero parece que no puedo hacer que funcionen las comparaciones básicas de cadenas. Sin una comprensión más profunda, he intentado todo lo que pude encontrar ( xstring
, \detokenize
, \expandafter\relax
, ...). Realmente nada funciona. Me alegraría mucho que alguien pudiera arreglar mi Test
función.
\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}
Respuesta1
Esto funciona:
% 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
}
Todavía agradezco respuestas más elegantes, pero esto resuelve mis problemas.