8

I need to achieve a bibliographic style that is extremely common in the Finance/Econ literature: the Journal of Finance bibliographic style.

Using natbib has proven to be a nightmare when one needs a bit more flexibility.

biblatex seems to be the ideal solution (more modern, more flexible), but I have been unable to match the desired output.

Here is a sample bib. file:

@article{graham2005economic,
  title={The economic implications of corporate financial reporting},
  author={Graham, John R and Harvey, Campbell R and Rajgopal, Shiva},
  journal={Journal of Accounting and Economics},
  volume={40},
  number={1},
  pages={3--73},
  year={2005},
  publisher={Elsevier}
}

Citations should appear in the bibliography as:

  • Graham, J. R., Harvey, C. R., and Rajgopal, S. (2005) The economic implications of corporate financial reporting, Journal of Accounting and Economics 40, 3–73.

As you can see, there are some important details about the bibliographic style.

  • Use initials rather than first name of authors. If the author has two initials, a space goes between them (e.g. Denis, D. J. rather than Denis, D.J.). For all authors (not just the first author), the initials come after the last name.
  • A comma separates all authors’ names. An “and” comes before the name of the last author.
  • There is no comma after the final initial of the final author. The year, in parentheses, immediately follows.
  • There is no period after the year. Then follows the title of the paper, which is not in quotation marks. Only the first word is capitalized (except for any words that follow a colon)
  • The title is followed by a comma, and then the journal name in italics
  • There is no comma after the journal name. Then there is the journal volume (in BOLD), then a comma, and then the page numbers. The page numbers are separated by an “en” dash (–), not a hyphen (-). The full page numbers are given. For example, rather than 256–89, it should be 256–289. A period is after the page numbers.

Last, in the main text

  • For any paper which contains four authors or more, cite them as “Brown et al.” where Brown is the first author
  • For any papers that are cited within a phrase in parentheses, the year of the paper does not go in parentheses, a comma comes between the authors’ names and the year, and a semi-colon separates each paper, e.g. “Mergers and acquisitions are often motivated by non-value-maximizing reasons (e.g., Jensen, 1993; Grinstein and Hribar, 2004; Harford and Li, 2007).”

It it possible to replicate this bibliographic style with biblatex? Thanks!!

  • 2
    What is JF style? Is that for some journal? Note that biblatex is not accepted by many publishers. What did you try so far? If you use the standard style=authoryear what do you miss? – moewe Jul 09 '17 at 16:29
  • 2
    Please note that normally questions on this site revolve around a particular issue (i.e. 'how can I obtain initials of author names') rather than 'please make that style for me'. Implementing a full bibliography style can be beyond the scope of this site. And in order to do it properly we need to know much more details than what you have shown us. How are books, chapters in collections, online sources ... formatted? What about if a journal also has a number and not only a volume? What about DOIs? – moewe Jul 09 '17 at 16:32
  • 1
    thanks @moewe, at this point only the appearance of the bibiography matters. I am using natbib but for some reasons I am unable to use the jf bibliography style that is available here https://academic.oup.com/DocumentLibrary/ROF/ROFFIN.zip – ℕʘʘḆḽḘ Jul 09 '17 at 16:36
  • 2
    Do you want to continue using natbib? You have tagged your question with biblatex, biblatex is incompatible with natbib, so maybe you should re-tag your question. – moewe Jul 09 '17 at 16:38

1 Answers1

14

This should give you something to start from

\documentclass{article}
\usepackage[style=authoryear, 
backend=biber, 
giveninits=true,
uniquelist = false, 
uniquename=init,
isbn=false, 
maxcitenames=3,
dashed=false, 
maxbibnames=999,
doi=false,
url=false]{biblatex}
\addbibresource{biblatex-examples.bib}

\DeclareDelimFormat{nameyeardelim}{\addcomma\space}

%\setlength{\bibhang}{0pt}

\DeclareNameAlias{sortname}{family-given}

\renewcommand*{\labelnamepunct}{\addspace}

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1}

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {\setunit{\addcomma\space}}
    {\printtext{\bibstring{in}\intitlepunct}}}

\DeclareFieldFormat{journaltitlecase}{#1}

\renewbibmacro*{journal}{%
  \ifboolexpr{
    test {\iffieldundef{journaltitle}}
    and
    test {\iffieldundef{journalsubtitle}}
  }
    {}
    {\printtext[journaltitle]{%
       \printfield[journaltitlecase]{journaltitle}%
       \setunit{\subtitlepunct}%
       \printfield[journaltitlecase]{journalsubtitle}}}}

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit{\addcomma\space}%
  \printfield{eid}}

\DeclareFieldFormat[article,periodical]{volume}{\mkbibbold{#1}}% volume of a journal

\DeclareFieldFormat{pages}{#1}

\begin{document}
\textcite{sigfridsson,worman,geer,maron}

\parencite[e.g.,][]{nussbaum,companion}

\printbibliography
\end{document}

enter image description here

moewe
  • 175,683
  • 1
    thanks that is amazing. Is there a way to fulfill the requirements for the in-text citations? that is, For any papers that are cited within a phrase in parentheses, the year of the paper does not go in parentheses, a comma comes between the authors’ names and the year, and a semi-colon separates each paper, e.g. “Mergers and acquisitions are often motivated by non-value-maximizing reasons (e.g., Jensen, 1993; Grinstein and Hribar, 2004; Harford and Li, 2007).” – ℕʘʘḆḽḘ Jul 09 '17 at 16:51
  • 2
    @Noobie Done. I also changed a few other things according to the example document you linked to. – moewe Jul 09 '17 at 16:55
  • 1
    I am using the \documentclass[12pt,captions=nooneline,DIV=14, parskip=half]{scrartcl} document class. When I use \usepackage[backend=biber,citestyle=authoryear,isbn=false,backref=false,maxcitenames=3,maxbibnames=99,doi=false,url=false,uniquename=false,firstinits=true,bibstyle=authoryear]{biblatex} I get Undefined control sequence \DeclareDelimFormat and when I use your syntax \usepackage[style=authoryear, backend=biber, giveninits=true, uniquename=init]{biblatex} I get package xkeyval error: giveninits undefined in families blx@opt@pre. What is the problem here? – ℕʘʘḆḽḘ Jul 09 '17 at 17:09
  • yes, definitely getting this weird xkeyval error with your biblatex package call. I dont know what to do.. thanks again @moewe, your help is really appreciated – ℕʘʘḆḽḘ Jul 09 '17 at 17:29
  • tried on another computer (with likely more recent versions of all the miktex install) and I get the undefined control sequence \DeclareDelimFormat{nameyeardelim}{\addcomma\space} – ℕʘʘḆḽḘ Jul 09 '17 at 17:42
  • 3
    @Noobie Your version of biblatex is outdated. A few versions ago some options were renamed. My code uses the new names and a few new commands that are only available with a reasonably recently version of biblatex. (I run 3.7.) – moewe Jul 09 '17 at 17:42
  • 2
    Note further that citestyle=authoryear, ... ,bibst‌​yle=authoryear is equivalent to style=authoryear. Furthermore, maxcitenames=3 is the default. backref=false is also standard. – moewe Jul 09 '17 at 17:44
  • thanks moewe. I have v3.3 I will try with a more recent one ASAP. Be sure that I will award a bounty to your super nice answer. I am pretty sure many people will find this solution super helpful. – ℕʘʘḆḽḘ Jul 09 '17 at 17:44
  • Dear moewe, thanks again for this amazing answer. I have update all my tex distro, and now it works, except for three important points. i) journal names must be capitalized, e.g. Journal of Computational Chemistry. ii) ref. with more than 4 names should be et al. in the text as in the current code, but must appear with all the names in the bibliography (like any other entry), iii) volume number should appear in bold 19, and not volume-issue 19.4 (as in your example). Do you know how to fix that? Thanks again for this amazing answer! – ℕʘʘḆḽḘ Jul 09 '17 at 23:35
  • after some research, it appears I can make the journal name keep letter case by manually enclosing the journal names with {}. Kind of painful, but if there is no other choice then fine. The et. al in the bibliography seems to be solved with maxbibnames=99. so there only remain the volume issue (assuming the journal names have to lose their case with biblatex?) – ℕʘʘḆḽḘ Jul 10 '17 at 02:35
  • 1
    @Noobie Have a look at the edited answer. With that you should not have to add braces to protect the case for journal names. – moewe Jul 10 '17 at 06:14
  • we are close to perfection. let me do a few more tests. also, tomorrow I get add a well deserved bounty to these question. Im pretty sure there will be hundreds of upvotes in the near future on your answer. SO USEFUL!!!!! – ℕʘʘḆḽḘ Jul 10 '17 at 15:41
  • moewe all is good, EXCEPT that with your last version we lost the journal titles in italic! :( do you see a fix for that? What we had before was just fine. Also, for some reason the bibliography is not indented anymore? have you changed that setting? lets fix this and I ll accept finally this wonderful answer!!! – ℕʘʘḆḽḘ Jul 10 '17 at 17:35
  • OK found the \setlength{\bibhang}{10pt}. Only issue left: italic titles that preserve letter case!! – ℕʘʘḆḽḘ Jul 10 '17 at 17:44
  • 1
    @Noobie The missing indent comes from \setlength{\bibhang}{0pt}, I added that because in the example doc you linked to there was no indent. I changed that back in the answer, I also added a missing line to get back italic journal titles. – moewe Jul 10 '17 at 18:24
  • 1
    @Noobie The code is updated, the image not. – moewe Jul 10 '17 at 18:25
  • need to wait about 20h for the bounty ;-) – ℕʘʘḆḽḘ Jul 10 '17 at 19:13