01-05-2021



To create PDF, a program called LaTeX (see below) has to be installed on your computer. Other output formats may be available. See help (render) in the rmarkdown package. There are many, many other formatting options which can be given in the header; see the main R Markdown help files online. An R Markdown Template for Academic Manuscripts. Posted on February 10, 2016 by steve in R Markdown The frontmatter to an R Markdown document. You should consider no longer using LaTeX as a front-end for your manuscripts. Use a wrapper for LaTeX instead, like R Markdown.

I often need to write short reports which are not full blown manuscripts, e.g. annual grant progress reports. Though such documents don’t need to adhere to a strict template, I still want them to look nice. I’ve accomplished this for years by writing directly in LaTeX, but I want to align my process with my recent transition to composing most docs in RStudio/Rmd. Ultimately though, I don’t want to abandon the LaTeX look in the compiled document. Thankfully, RStudio will render a LaTeX pdf, but formatting beyond the defaults (which are still nice!) can be a bit mysterious. This repository holds my working template for such purposes.

Here’s a minimal example of what the defaults within a .Rmd will give you:

Now, two specific things I’d like to change are:

Latex In R Markdown
  • Left-justify the title/author/date section
  • Modify the font specs used in section titles

A solution to these two problems easily generalizes to the broader question of “How do I format the title and H1-H6 specs in the context of LaTeX rendering from .Rmd files?”

Write Latex In R Markdown

To start, we will borrow the LaTeX template R Markdown is currently using (h/t SO). The relevant remote repo is here, and you can copy the local version you’re using into your working directory with this line:

If you look past the pandoc nastiness in this template file (I at least find it nasty, being that I was mostly unfamiliar with pandoc scripting!), you’ll see familiar LaTeX commands that are often surrounded by $if(X)$ statements that are triggered if X appears in your .Rmd YAML. Here’s a straightforward example where, if you have title: in your .Rmd YAML header, the maketitle command will be executed in your LaTeX render:

Now the problem feels more tractable: all we have to do is modify the maketitle defaults in the usual LaTeX manner within the template.tex document. Let’s start with the following:

And don’t forget to include template.tex in your .Rmd YAML header like so:

R Markdown Tex

Rendering gives the below, nice!

Bohemian rhapsody sax quartet pdf creator. Next, we clearly need to fix the fact that section titles are now larger than the document title! Let’s do this with the LaTeX sectsty package – you can basically stuff this code anywhere in the preamble, like so:

Let’s also reduce the overall margins a touch via the geometry argument in the YAML while we’re at it. Here’s the full .Rmd:

Mission accomplished!

Here’s a bonus I learned along the way. You can send custom arguments to your .tex doc by simply defining new variables in the YAML header (relevant info in the pandoc docs here). Suppose I want an optional subtitle parameter. This is accomplished like so:

With this trick, you can start to do even fancier things (literally), such as include fancyhdr options. This option is ultimately included in the template.tex provided in the repository, and here’s the relevant YAML and output:

Use Latex In Markdown

Happy R Markdowning!