Search code examples
rr-markdownbookdown

Author affiliations in Rmarkdown YAML header, using rticles


I would like to add author affiliations to my YAML header, and as recommended here (Authors and affiliations in the YAML of RMarkdown), using the rticles::elsevier_article output format does it very nicely, and also omits the page number on the first page, which is also desirable. The problem is that 1) text reference definitions are displayed upon rendering to pdf (they should not), 2) text references do not work - calling them results only in the text of the call (not the referenced text) being displayed, and 3) references to table and figures does not work as it does with bookdown::pdf_document2 output. How can I either get the author and page numbers in bookdown::pdf_document2 output or else get the references to work in rticles::elsevier_article?

Below is an example that illustrates the issue. I'm using RStudio 1.2.1335.

---
title: Problems with `rticles::elsevier_article` output 
author:
  - name: Alice Anonymous
    email: alice@example.com
    affiliation: Some Institute of Technology
    footnote: Corresponding Author
  - name: Bob Security
    email: bob@example.com
    affiliation: Another University
address:
  - code: Some Institute of Technology
    address: Department, Street, City, State, Zip
  - code: Another University
    address: Department, Street, City, State, Zip
abstract: |
  This is the abstract.

journal: "Ecological Monographs"
date: "`r Sys.Date()`"
csl: elsevier-harvard.csl
output: rticles::elsevier_article
#output:bookdown::pdf_document2
geometry: margin=2.54cm
---

The Problems I have
==========================

I would like to use the `rticles::elsevier_article` output because it 1) handles authors and affiliations the way I want, and 2) it nicely omits the page number from the firat page. Both of these things I can't seem to easily (if at all) accomplish using `bookdown::pdf_document2` output. 

However, when I specify `rticles::elsevier_article` output, I run into several problems: 1) text reference definitions are displayed upon rendering to pdf (they should not), 2) text references do not work - calling them results only in the text of the call (not the referenced text) being displayed, and 3) references to table and figures does not work as it does with `bookdown::pdf_document2` output. There is one more issue too - in one test case I inserted a table (using `kableExtra`), and knitting failed because of some latex `tabu` environment error, even though it looks to me like the `rticles::elsevier_article` output does indeed load the `tabu` package (but I had to load it in the YAML header to get the knitting to work). 

For example, lets define a text reference so I can use a super script 2 to specify square kilometers in a figure caption. The reference definition should not show in the rendered pdf (and it does not when I use the `bookdown::pdf_document2` output, but it frustratingly does so when I use the `rticles::elsevier_article` output).

<!-- text references for use in tables and captions (must be separated by empty line)-->
(ref:km2) km^2^

Now lets make a figure (below) and reference it here (Figure \@ref(fig:testfig)). The figure includes the text reference in the caption, but it does not display the referenced text, but only the exact text that is suppose to call the reference text. And my inline reference to the figure does not work.

```{r,testfig, echo=FALSE, fig.height = 2.5, fig.width = 3, fig.align = "center",fig.cap=paste0("This is a classic quadratic plot - it could represent ","(ref:km2)",".")}

x=-5:5

plot(x,x**2,xlab="my assets", ylab="my joy", main="Not true")

```

Solution

  • As detailed in the documentation you can combine the bookdown features with other formats. In your case, you have to replace

    output: rticles::elsevier_article
    

    with

    output:
      bookdown::pdf_book:
          base_format: rticles::elsevier_article