How to justify (to both sides) text in R Markdown when knitting in pdf output

10,409

R Markdown should default to using justified text. However, if you only want to export to PDF, we can directly use LaTeX commands within the document.using the standard arguments \centering \raggedright and \raggedleft, as explained here.

Here is a minimal example:

---
output: pdf_document
---

```{r, include = FALSE}
devtools::install_github("coolbutuseless/lipsum")
library(lipsum)
```

**Default**

`r lipsum[1]`

\centering

**Centered Text**

`r lipsum[1]`

\raggedright

**Ragged Right**

`r lipsum[1]`

\raggedleft

**Ragged Left**

`r lipsum[1]`

enter image description here

If you want to revert to justified text, you can use the ragged2e LaTeX package. You will need to load this within the YAML by adding:

---
output: pdf_document
header-includes:
  - \usepackage[document]{ragged2e}
---

\raggedleft

**Ragged Left**

`r lipsum[1]`



\justify

**Revert to Justified**

`r lipsum[1]`

Edit

If you are using the papaja template you need to include all the YAML. Not providing an author, shorttitle or another other field will cause it to crash.

---
title             : "The title"
shorttitle        : "Title"

author: 
  - name          : "First Author"
    affiliation   : "1"
    corresponding : yes    # Define only one corresponding author
    address       : "Postal address"
    email         : "[email protected]"
  - name          : "Ernst-August Doelle"
    affiliation   : "1,2"

affiliation:
  - id            : "1"
    institution   : "Wilhelm-Wundt-University"
  - id            : "2"
    institution   : "Konstanz Business School"

author_note: |
  Add complete departmental affiliations for each author here. Each new line herein must be indented, like this line.

  Enter author note here.

abstract: |
  Enter abstract here. Each new line herein must be indented, like this line.

keywords          : "keywords"
wordcount         : "X"

bibliography      : ["r-references.bib"]

figsintext        : no
figurelist        : no
tablelist         : no
footnotelist      : no
lineno            : yes
mask              : no

class             : "man"
output            : papaja::apa6_pdf
header-includes:
  - \usepackage[document]{ragged2e}
---

```{r load_packages, include = FALSE}

library(lipsum)
```
\justify

**Default**

`r lipsum[1]`

enter image description here

Share:
10,409

Related videos on Youtube

Adela Iliescu
Author by

Adela Iliescu

Updated on October 17, 2022

Comments

  • Adela Iliescu
    Adela Iliescu over 1 year

    I have looked for ways to control the alignment of the text, however I could not find anything for PDF outputs.

    There is an existing answer, but related to HTML output only: How to justify the text to both sides when knitting html in rmarkdown.

  • ForEverNewbie
    ForEverNewbie over 3 years
    Is it possible to justify only chunks and outputs, but not text?
  • Michael Harper
    Michael Harper over 3 years
    I'm not immediately sure @ForEverNewbie. You may want to open a new question this :)