9

Is there some variant or option for \citet{} directive that will give me the author's full first name? But only when I need it?

In similar questions people have suggested editing the author field in the .bib file, but that brings more problems than help. We want:

@book{smith13,
Author = {Waldo Smith},
Title = {Real Given Names},
Publisher = {Foobar Press},
Address = {Erewhon},
Year = {2013}
}

And in the \bibliography{} section:

Smith, W. 1993. \emph{Real Given Names}. Erewhon: Foobar Press.

But some variant of \citet{} (or something) that will generate in the body text:

Waldo Smith (1993) demonstrated conclusively that it is possible to generate full names using BibTex.

Currently I'm typing in Waldo \citet{smith13} but it would be nice to get BibTeX to do this.

Note that we only do this the first time we refer to Waldo Smith; later on (even with different references), "Smith (1999)" is just fine. And, when we have multiple authors, we always use surnames only ("Brown and Miller (2013) showed, on the other hand, that…"). So anything heavy-handed that modifies the .bib file is not going to be The Answer.

moewe
  • 175,683
  • 4
    Is biblatex an option? There're many ways to do this... – jon Apr 03 '14 at 19:11
  • Something that might help: http://tex.stackexchange.com/questions/101689/natbib-cite-in-text-with-first-name-or-initial (bibtex hack which redefines \citet* to print full name) – remus Apr 03 '14 at 20:23
  • If biblatex is an option, see http://tex.stackexchange.com/questions/24979/citing-authors-full-name-in-biblatex?rq=1 – pst Apr 03 '14 at 21:00
  • Biblatex is currently not an option, although that may change in future (and this point is one reason to make the change).

    The \citet* hack would be brilliant, except we currently need long-form citations for their original purpose.

    – Peter Castine Apr 16 '14 at 20:44
  • 1
    If you're willing to add a field to your entries, you can use the usebib package and its \newbibfield command. But what is the benefit? If you are already going to need to know the entries well enough to know whether to use regular commnds for multiple author entries or some special command for single-author entries, you probably know the entries well enough to just type the first names in the first place. – jon Jul 18 '15 at 21:34
  • It has been some time. But, if any answer was useful for you, could you accept an answer? Best – Andre Sep 04 '23 at 15:39
  • At the end of the day we have simply stuck with manually typing author's given name "Waldo \citet{smith2013}"; it's really the easiest approach in our workflow. We can't redefine the asterisk versions because we need cite/citet/citep* for their original purpose; and since we only give full name once in a document, defining a \citealias is more effort. Back in 2014 I was very new to LaTeX/bibtex and hoping there might be something built-in that I wasn't aware of.

    Thanks for all the suggestions, but we've not actually used any of the answers. Should I have accepted them anyway?

    – Peter Castine Nov 02 '23 at 18:58

2 Answers2

3

Bibtex in combination with natbib does the trick.

\usepackage[natbibapa]{apacite}
% or you can also use
% \usepackage{natbib}   

\citet*{smith13} demonstrated conclusively that it is possible to generate full names using BibTex.

The example above results in:

Waldo Smith (1993) demonstrated conclusively that it is possible to generate full names using BibTex.
rvaneijk
  • 330
3

If you want to do it for a few cases, a simpler solution is to define an alias and use \citealias.

For your example, in the preamble, define:

\defcitealias{smith13}{Waldo Smith (2013)}

And in the text use:

\citetalias{smith13}

The result will be Waldo Smith (2013) in the text, with the reference added in the same way as the other references. If you use \citet{smith13}, you return to the usual Smith (2013).

The command \citetalias is available with the package natbib. So, you have to include \usepackage{natbib} in the preamble.

Note: this question is related to Natbib: cite in text with first name or initial

Andre
  • 969