11

I am editing a document to be submitted to an Elsevier journal. The Elsevier document class uses natbib to handle references. I am encountering a problem with the appearance of references that have an institution or organization as the author. For example, if the author is "US Department of Energy", I know I can force the output to appear as I've specified using double braces:

Author = {{US Department of Energy}}

The trouble I'm having is that while this achieves the desired effect, bibtex is treating the author name as a last name, so it gets formatted in the references list as:

US Department of Energy, .

Using \usepackage[nodots]{numcompress} gets rid of the comma, but there will still be a space between the end of the author and the period. Looking at the bbl file reveals that bibtex is adding \xfnm[] after the author name. If I remove this element in the author name in the bbl file, the extra comma and space go away. I know that the problem is created in part because of the bst file I'm using, but I'm not supposed to substitute another format. Is there anything I can do to prevent this extra element from being added to the bbl file by bibtex in the first place?

MWE: tex markup

\documentclass[11pt]{article}
\usepackage[numbers,sort&compress]{natbib}
\usepackage{hyperref}

\begin{document}

Here I am going to use a reference with an institutional author~\cite{BTS2012}.

\bibliographystyle{model3-num-names}
\bibliography{sources}

\end{document}  

MWE: bibtex file (sources.bib)

@misc{BTS2012,
  Author= {{Bureau of Transportation Statistics}},
  Howpublished = {\url{http://www.bts.gov/programs/national_household_travel_survey/daily_travel.html}},
  Publisher = {{Department of Transportation}},
  Title = {{National Household Travel Survey: Daily Travel Quick Facts}},
  Year = {2012}}

Download link for model3-num-names.bst if needed.

New MWE (demonstrating author name double period formatting problem)

\begin{filecontents*}{\jobname.bib}
@misc{BTS2012,
  Author= {{Bureau of Transportation Statistics}},
  Howpublished = {\url{http://www.bts.gov/programs/national_household_travel_survey/daily_travel.html}},
  Publisher = {{Department of Transportation}},
  Title = {{National Household Travel Survey: Daily Travel Quick Facts}},
  Year = {2012}}
@article{Shaw1985,
  Author = {Shaw, John J and Gendron, Robert F and Bertsekas, Dimitri P},
  Journal = {IEEE Transactions on Power Apparatus and Systems},
  Number = {2},
  Pages = {286--294},
  Title = {{Optimal Scheduling of Large Hydrothermal Power Systems}},
  Volume = {104},
  Year = {1985}}
}
\end{filecontents*}

\documentclass[11pt]{article}
\usepackage[numbers,sort&compress]{natbib}
\usepackage{hyperref}
\usepackage[nodots]{numcompress}

\begin{document}

Here's a reference with an institutional author~\cite{BTS2012}. Here's a journal reference~\cite{Shaw1985}. Notice how the periods terminating the authors' first and middle initials have been removed, and thus only a final period terminates the list of author names, rather than a terminating double period (which would appear as Bertsekas, D.P..).

\bibliographystyle{model3-num-names}
\bibliography{\jobname}

\end{document}

Download link for the modified version of the numcompress package (see line 167).

10

The first name is recorded in the .bbl file as an argument to the \xfnm command that's defined in the thebibliography environment only if it hasn't been defined before. So you can define it in your preamble in such a way that it does the usual thing when the argument is not empty, but nothing if it's empty.

In the example I added an (incomplete) entry just to show that the first name is picked up correctly. The filecontents* trick is just to make the example self contained.

\begin{filecontents*}{\jobname.bib}
@misc{BTS2012,
  Author= {{Bureau of Transportation Statistics}},
  Howpublished = {\url{http://www.bts.gov/programs/national_household_travel_survey/daily_travel.html}},
  Publisher = {{Department of Transportation}},
  Title = {{National Household Travel Survey: Daily Travel Quick Facts}},
  Year = {2012}}
@article{x,
  author={Adam. Uthor},
  journal={Journal},
  title={Title},
  year={2013},
}
\end{filecontents*}

\documentclass[11pt]{article}
\usepackage[numbers,sort&compress]{natbib}
\usepackage{hyperref}

\newcommand{\xfnm}[1][]{\ifx!#1!\else\unskip,\space#1\fi}

\begin{document}

Here I am going to use a reference with an institutional author~\cite{BTS2012}.

And \cite{x}

\bibliographystyle{model3-num-names}
\bibliography{\jobname}

\end{document}  

It won't work in case the first name starts with ! (but this shouldn't be a concern).

enter image description here


If you load the numcompress package, don't modify it. Here's the code you should use, based on your new MWE:

\begin{filecontents*}{\jobname.bib}
@misc{BTS2012,
  Author= {{Bureau of Transportation Statistics}},
  Howpublished = {\url{http://www.bts.gov/programs/national_household_travel_survey/daily_travel.html}},
  Publisher = {{Department of Transportation}},
  Title = {{National Household Travel Survey: Daily Travel Quick Facts}},
  Year = {2012}}
@article{Shaw1985,
  Author = {Shaw, John J and Gendron, Robert F and Bertsekas, Dimitri P},
  Journal = {IEEE Transactions on Power Apparatus and Systems},
  Number = {2},
  Pages = {286--294},
  Title = {{Optimal Scheduling of Large Hydrothermal Power Systems}},
  Volume = {104},
  Year = {1985}}
}
\end{filecontents*}

\documentclass[11pt]{article}
\usepackage[numbers,sort&compress]{natbib}
\usepackage{hyperref}
\usepackage[nodots]{numcompress}

\renewcommand{\xfnm}[1][]{\ifx!#1!\else\unskip\space\removeDot{#1}\fi}

\begin{document}

Here's a reference with an institutional author~\cite{BTS2012}. Here's a journal 
reference~\cite{Shaw1985}. Notice how the periods terminating the authors' first and middle 
initials have been removed, and thus only a final period terminates the list of author 
names, rather than a terminating double period (which would appear as Bertsekas, D.P..).

\bibliographystyle{model3-num-names}
\bibliography{\jobname}

\end{document}

enter image description here

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.