Getting the first author in a pandoc template (Rmarkdown)

I am currently creating my own pandoc template for Rmarkdown (outputting html). I want my report to show a footer containing the title and first author's name.

Reading the pandoc manual, I saw that it is possible to use a pipe to get the first element of an array (var/first). So having the header:

title: "My Report"
author:
- "Jane Doe"
- "John Doe"

I tried to do the following in the template:

<div class="footer">
  <div class="footer-content">
    <div class="footer-title">
      <h3>$title$</h3>
    </div>
    <div class="footer-author">
      <h3>$author/first$</h3>
    </div>
  </div>
</div>

Then I got as error in the author line:

"template" (line 96, column 24):
unexpected "/"
expecting "." or "$"

Please note that the pandoc version used by rmarkdown is 2.3.1.

Is there a different way to accomplish that?

Upvotes: 1

Views: 236

Answers (1)

tarleb
tarleb

Reputation: 22659

You could write a small Lua filter to get just the first author:

function Meta (meta)
  local firstauthor = meta.author.t == 'MetaList'
    and meta.author[1]
    or meta.author
  meta.firstauthor = firstauthor
  return meta
end

You can then use $firstauthor$ in your template. See here for a brief discussion of Lua filters and how to use them.

Upvotes: 1

Related Questions