[Tex/LaTex] Citing the initials of one author and the full names of other authors

bibtexcitingnatbibpowerdot

In some academic circles, such as theoretical physics, during a presentation it is customary for the talking author to cite himself using only his initials, while leaving the remaining author names unchanged as per the citation style.

For instance, if my initials are DCG and I cite a paper that has me as an author, it should show up as:

[Lima, DCG, Horvath, 2010]

Is there any way to make this automatic in LaTeX? I use powerdot for presentations and natbib for references, and I have found nothing of the sort in their documentations. Maybe there is a way to replace the strings generated by BibTeX in the second LaTeX run, but I have no idea how to do it.

Best Answer

In relation to the comments I want to provide an approach using biblatex.

First of all I changed the definition of the output of authors and replace the name stored in \highlightname with the initials saved in the macro \shortform.

The main idea is inspired by P. Lehmann.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{test1,
  author          = {Goossens, Michel and Mittelbach, Frank
                     and Samarin, Alexander},
  title           = {The LaTeX Companion},
  publisher       = {Addison-Wesley},
  location        = {Reading, Mass.},
  year            = {1994},

}

@Book{test2,
  author          = {Mittelbach, Frank and Goossens, Michel
                     and Samarin, Alexander},
  title           = {The LaTeX Companion},
  publisher       = {Addison-Wesley},
  location        = {Reading, Mass.},
  year            = {1994},

}

@Book{test3,
  author          = {Mittelbach, Frank and Samarin, Alexander
                     and Goossens, Michel},
  title           = {The LaTeX Companion},
  publisher       = {Addison-Wesley},
  location        = {Reading, Mass.},
  year            = {1994},
} 
\end{filecontents}
\usepackage[style=authoryear,minnames=8,maxnames=10]{biblatex}

\addbibresource{\jobname.bib}
\newcommand*{\mknamesignature}[5]{\def#1{#2|#3|#4|#5}}
\mknamesignature{\highlightname}{Goossens}{Michel}{}{}
\def\shortform{MG}
\makeatletter
\DeclareNameFormat{labelname}{%
  \begingroup
  \mknamesignature{\currentsignature}{#1}{#3}{#5}{#7}%
  \ifdefequal{\highlightname}{\currentsignature}%
    {\let\mkbibnamefirst=\@gobble%
     \def\mkbibnamelast{\shortform\@gobble}%
     \let\mkbibnameprefix=\@gobble%
     \let\mkbibnameaffix=\@gobble}%
    {}%
  \ifnum\value{listcount}=1\relax
    \usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
    \ifblank{#3#5}
      {}
      {\usebibmacro{name:revsdelim}}%
  \else
    \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}%
  \fi
  % Ende der Gruppe
  \endgroup
  \usebibmacro{name:andothers}}
\makeatother
\begin{document}
Test

\cite{test1}

\cite{test2}

\cite{test3}

\printbibliography
\end{document}

enter image description here

EDIT 1: Fixed spacing problem

Related Question