Search code examples
r-markdownknitrbibtexbibliographycsl

References in Rmarkdown: use title capitalization as is in the .bib file


I'm writing a manuscript using Rmarkdown with RStudio and knitr. To format the references, I'm using the .csl file for the journal Global Ecology and Biogeography, which I got from https://www.zotero.org/styles.

My problem is that the titles are automatically transformed to sentence case. This is especially problematic for species names, which become lower case.

For example,

Two types of morphophysiological dormancy in seeds of two genera (Osmorhiza and Erythronium) with an Arcto-Tertiary distribution pattern

becomes

Two types of morphophysiological dormancy in seeds of two genera (osmorhiza and erythronium) with an arcto-tertiary distribution pattern

According to this question: How to set references to 'sentence case'?, I should remove from the .csl file all lines like text-case=. The problem is that there are no such lines, and still my titles are transformed.

For a bonus, I would also like to know how to keep species names in italics.

Rmarkdown file

---
title: "Untitled"
output: html_document
bibliography: refs.bib
csl: global-ecology-and-biogeography.csl
link-citations: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

[@RN1045]

# References

refs.bib file with the bibliography

@article{RN1045,
   author = {Baskin, Carol C.; Meyer, Susan E.; Baskin, Jerry M.},
   title = {Two types of morphophysiological dormancy in seeds of two genera (Osmorhiza and Erythronium) with an Arcto-Tertiary distribution pattern},
   journal = {American Journal of Botany},
   volume = {82},
   number = {3},
   pages = {293-298},
   ISSN = {00029122},
   DOI = {10.1002/j.1537-2197.1995.tb12633.x},
   url = {<Go to ISI>://WOS:A1995QM77500001; https://bsapubs.onlinelibrary.wiley.com/doi/abs/10.1002/j.1537-2197.1995.tb12633.x},
   year = {1995},
   type = {Journal Article}
}

global-ecology-and-biogeography.csl file with the style

<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-US">
  <info>
    <title>Global Ecology and Biogeography</title>
    <id>http://www.zotero.org/styles/global-ecology-and-biogeography</id>
    <link href="http://www.zotero.org/styles/global-ecology-and-biogeography" rel="self"/>
    <link href="http://www.zotero.org/styles/bioinformatics" rel="template"/>
    <link href="http://onlinelibrary.wiley.com/journal/10.1111/%28ISSN%291466-8238/homepage/ForAuthors.html" rel="documentation"/>
    <author>
      <name>Bernhard Hoiß</name>
      <email>[email protected]</email>
    </author>
    <category citation-format="author-date"/>
    <category field="biology"/>
    <issn>1466-822X</issn>
    <eissn>1466-8238</eissn>
    <summary>The Global Ecology and Biogeography style</summary>
    <updated>2016-09-10T14:32:31+00:00</updated>
    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
  </info>
  <locale>
    <terms>
      <term name="edition" form="short">edn.</term>
      <term name="editor" form="verb-short">ed. by</term>
      <term name="translator" form="verb-short">trans.</term>
    </terms>
  </locale>
  <macro name="editor">
    <names variable="editor" delimiter=",">
      <label form="verb-short" prefix=" (" suffix=" "/>
      <name sort-separator=", " and="text" initialize-with="." delimiter=", " suffix=")"/>
    </names>
  </macro>
  <macro name="author">
    <names variable="author">
      <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with="." delimiter=", " delimiter-precedes-last="never"/>
      <label form="short" prefix=" "/>
      <substitute>
        <names variable="editor"/>
        <text variable="title"/>
      </substitute>
    </names>
  </macro>
  <macro name="author-short">
    <names variable="author">
      <name form="short" and="symbol" delimiter=", " initialize-with=". "/>
      <et-al term="et-al" font-style="italic"/>
      <substitute>
        <names variable="editor"/>
        <names variable="translator"/>
        <text variable="title"/>
      </substitute>
    </names>
  </macro>
  <macro name="title">
    <text variable="title"/>
  </macro>
  <macro name="publisher">
    <group delimiter=", ">
      <text variable="publisher"/>
      <text variable="publisher-place"/>
    </group>
  </macro>
  <macro name="year-date">
    <date variable="issued">
      <date-part name="year"/>
    </date>
  </macro>
  <macro name="edition">
    <choose>
      <if is-numeric="edition">
        <group delimiter=" ">
          <number variable="edition" form="ordinal"/>
          <text term="edition" form="short"/>
        </group>
      </if>
      <else>
        <text variable="edition" suffix="."/>
      </else>
    </choose>
  </macro>
  <citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true" collapse="year-suffix" year-suffix-delimiter=",">
    <sort>
      <key macro="year-date"/>
      <key macro="author-short"/>
    </sort>
    <layout prefix="(" suffix=")" delimiter="; ">
      <group delimiter=", ">
        <text macro="author-short"/>
        <text macro="year-date"/>
        <text variable="locator"/>
      </group>
    </layout>
  </citation>
  <bibliography hanging-indent="true" entry-spacing="0">
    <sort>
      <key macro="author"/>
      <key variable="title"/>
    </sort>
    <layout suffix=".">
      <text macro="author"/>
      <date variable="issued" prefix=" (" suffix=")">
        <date-part name="year"/>
      </date>
      <choose>
        <if type="bill book graphic legal_case legislation motion_picture report song" match="any">
          <group delimiter=" " prefix=" ">
            <text macro="title" font-style="italic" suffix=","/>
            <text macro="edition"/>
            <text macro="editor"/>
            <text macro="publisher"/>
          </group>
        </if>
        <else-if type="chapter paper-conference" match="any">
          <text macro="title" prefix=" " suffix="." font-style="italic"/>
          <group prefix=" " suffix=",">
            <text variable="container-title" font-style="italic"/>
            <text variable="collection-title" prefix=" " suffix="."/>
            <text macro="editor"/>
          </group>
          <group suffix=".">
            <group prefix=" " suffix=".">
              <label variable="page" suffix=" " form="short"/>
              <text variable="page"/>
            </group>
            <text macro="publisher" prefix=" "/>
          </group>
        </else-if>
        <else>
          <text macro="title" prefix=" " suffix="."/>
          <group delimiter=", " prefix=" " suffix=".">
            <text variable="container-title" form="long" font-style="italic"/>
            <text variable="volume" font-weight="bold"/>
            <text variable="page"/>
          </group>
        </else>
      </choose>
    </layout>
  </bibliography>
</style>

Solution

  • It looks like knitr uses pandoc-citeproc for citation rendering, and that you can preserve casing by using another set of brackets around the title. See https://github.com/jgm/pandoc-citeproc/issues/269.

    So instead of

    title = {Two types of morphophysiological dormancy in seeds of two genera (Osmorhiza and Erythronium) with an Arcto-Tertiary distribution pattern}
    

    you'd use

    title = {{Two types of morphophysiological dormancy in seeds of two genera (Osmorhiza and Erythronium) with an Arcto-Tertiary distribution pattern}}
    

    See also https://github.com/jgm/pandoc-citeproc/blob/master/man/pandoc-citeproc.1.md#titles-title-vs-sentence-case,

    For species names, try \textit{Osmorhiza}. (per https://latex.org/forum/viewtopic.php?t=21255)