1

I use \bibliographystyle{apalike} and \usepackage{natbib} together. I need One, Two, and Three (1234) rather than One et al. (1234) by default for \citet and \citep—not \citet* or \citep*. I tried to use \usepackage{biblatex} following this post, but it caused a problem similar to the bibhang already defined problem. How can I do this using the following MWE?

\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike}
\begin{document}
\citet{asdf}
\bibliography{asdf}
\end{document}
@article{asdf,
    title={asdf},
    author={One, One and Two, Two and Three, Three},
    journal={asdf},
    volume={1},
    number={1},
    pages={1--2},
    year={1234}
}
4
  • 1
    If you're using apalike and natbib you're not using biblatex. If you're making this many changes (as in your previous question) you may want to switch to biblatex since it's generally easier to modify (no .bst files). I would recommend ext-authoryear style as a beginning (not the biblatex apa, style which is not designed to be modified since it implements the exact APA style). – Alan Munn Aug 21 '20 at 22:34
  • Switching to biblatex seems to be a bit costly—is this kind of apalike-natbib combination deprecated? – Junyong Kim Aug 21 '20 at 22:58
  • No, but making lots of changes isn't ideal. Maybe you should use makebst to generate your own .bst file instead. – Alan Munn Aug 21 '20 at 22:59
  • My apologies to bother you, but may I ask your help again if this problem can also be solved by changing apalike too? I am checking biblatex now, but it seems quite different from what I am using. – Junyong Kim Aug 21 '20 at 23:25
2

apalike is not one of the 'native' natbib styles. It is much older than natbib and does not support all of natbib's features (for example it does not support the starred commands \citet* and \citep*).

The desired output can be achieved by editing the .bst file.

  1. Locate apalike.bst on your machine. You can do this by typing kpsewhich apalike.bst into the command line/terminal. Alternatively, obtain a copy of the file from CTAN http://mirrors.ctan.org/biblio/bibtex/base/apalike.bst

  2. Copy the file to a location where TeX can find it. The document directory will do fine. See also https://texfaq.org/FAQ-inst-wlcf

  3. Rename the file to apalike-three.bst, say (the license of apalike.bst requires you to change the name if you modify the file)

  4. Find FUNCTION {format.lab.names} (ll. 841-587) and replace the complete function definition with

     FUNCTION {format.lab.names}
     { 's :=
       s #1 "{vv~}{ll}" format.name$
       s num.names$ duplicate$ duplicate$
       #3 >
         { pop$ pop$ " et~al." * }
         { #2 <
             'pop$
             { #2 =
               { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                   { " et~al." * }
                   { " and " * s #2 "{vv~}{ll}" format.name$ * }
                 if$ }
               { ", " * s #2 "{vv~}{ll}" format.name$ *
                 s #3 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                   { " et~al." * }
                   { ", and " * s #3 "{vv~}{ll}" format.name$ * }
                 if$}
               if$
             }
           if$
         }
       if$
     }
    
  5. Find FUNCTION {calc.label} (ll. 896-912) and replace the complete function definition with

     FUNCTION {calc.label}
     { type$ "book" =
       type$ "inbook" =
       or
         'author.editor.key.label
         { type$ "proceedings" =
             'editor.key.label                       % apalike ignores organization
             'author.key.label                       % for labeling and sorting
           if$
         }
       if$
       "("                                                  % these three lines are
       *                                                     % for apalike, which
       year field.or.null purify$ #-1 #4 substring$          % uses all four digits
       *
       ")" *
       'label :=
     }
    

    This change is necessary to avoid natbib misparsing the name list.

  6. Add a comment with your name, the current date and a short description of the changes to the top of the file.

  7. Use \bibliographystyle{apalike-three} instead of \bibliographystyle{apalike} in your document.

As alternative for steps 1 to 5 you can obtain the patched version of the file at https://gist.github.com/moewew/e3d3ed6ebc93b5e05d6394813f5ad3e5

Then

\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike-three}

\begin{filecontents}{\jobname.bib}
@article{asdf3,
  title   = {asdf},
  author  = {One, One and Two, Two and Three, Three},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
@article{asdf2,
  title   = {asdf},
  author  = {One, One and Two, Two},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
@article{asdf1,
  title   = {asdf},
  author  = {One, One},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
@article{asdf4,
  title   = {asdf},
  author  = {One, One and Two, Two and Three, Three and Four, Four},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
\end{filecontents}


\begin{document}
\citet{asdf1}

\citet{asdf2}

\citet{asdf3}

\citet{asdf4}

\bibliography{\jobname}
\end{document}

gives

One (1234)//One and Two (1234)//One, Two, and Three (1234)//One et al. (1234)

1
  • Thanks a lot—this was why \citet* and \citep* don't work for my case. – Junyong Kim Aug 22 '20 at 10:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.