Search code examples
rlatexr-markdowntufte

How to change the font used inside the chunks when knitting as tuffte_handout pdf?


I am working in a book, using R and the Tufte library. I am using the following YAML for each .Rmd Chapter:

---
title: "Chapter 2: A First Linear Program"
header-includes:
 \usepackage{longtable}
 \usepackage{caption}
output:
  tufte::tufte_handout:
    citation_package: natbib
    latex_engine: xelatex
  highlight: monochrome
  tufte::tufte_html: default
  tufte::tufte_book:
    citation_package: natbib
    latex_engine: xelatex
---

\pagestyle{headings}


```{r setup, include=FALSE}
library(tufte)
library(tint)
library(knitr)
library(gridExtra)
knitr::opts_chunk$set(echo = TRUE)
knitr::opts_chunk$set(tidy = F)
knitr::opts_chunk$set(cache = TRUE)
knitr::opts_chunk$set(width = 30)
```

And the following one is the YAML for the index .Rmd file:

---
title: "Operations Research Using R<br />"
author: "Timothy R. Anderson"
date: "`r Sys.Date()`"
site: bookdown::bookdown_site
documentclass: book
bibliography: ["Master4Bookdowns.bib"]
---

# Preface {-}

I have tried different options like adding the sansfont and mainfont in YAML:

output:
  tufte::tufte_handout:
    citation_package: natbib
    latex_engine: xelatex
  highlight: monochrome
  sansfont: Calibri Light
  mainfont: Calibri Light

But it didn't change the font inside the chunk, only the text outside.


Here a simpler example document showing my attempt to change monofont as suggested in the comments:

---
title: "Chapter 2: A First Linear Program"
header-includes:
\usepackage{longtable}
 \usepackage{caption}
output:
  tufte::tufte_handout:
    citation_package: natbib
    latex_engine: xelatex
    toc: TRUE
    number_sections: true
  highlight: monochrome
  monofont: Times New Roman
  tufte::tufte_html: default
  tufte::tufte_book:
    citation_package: natbib
    latex_engine: xelatex
---

\pagestyle{headings}


```{r setup, include=FALSE}
library(tufte)
library(tint)
library(knitr)
library(gridExtra)
knitr::opts_chunk$set(echo = TRUE)
knitr::opts_chunk$set(tidy = F)
knitr::opts_chunk$set(cache = TRUE)
knitr::opts_chunk$set(width = 30)
```

This is an example, where we can see that text in the book is affected by the use of command
monofont: Times New Roman in the YAML. However, we can see that next chunk, the oucome when generating the tuffte_handout pdf is using a different font and also using multiple colors (no only black as in the main body).


```{r base_case_no_pipes_step_4}

model0d <- c("example", 6 + 2 <= 2000) 
#fabrication
model0e <- c("example", 8 + 6 <= 2000)  
#assembly    
```

Solution

  • You have to bring the YAML headers to the right level:

    • monofont et al. are top-level headers
    • highlight is below the output format, not below output

    The following example uses "Times New Roman" for the code block and XeLaTeX's default font (Latin Modern) for the main text. You can change that with mainfont. In addition, there is no syntax highlighting:

    ---
    title: "Chapter 2: A First Linear Program"
    header-includes:
    - \usepackage{longtable}
    - \usepackage{caption}
    monofont: Times New Roman
    output:
      tufte::tufte_handout:
        citation_package: natbib
        latex_engine: xelatex
        toc: TRUE
        number_sections: true
        highlight: monochrome
      tufte::tufte_html: default
      tufte::tufte_book:
        citation_package: natbib
        latex_engine: xelatex
    ---
    
    \pagestyle{headings}
    
    
    ```{r setup, include=FALSE}
    library(tufte)
    library(tint)
    library(knitr)
    library(gridExtra)
    knitr::opts_chunk$set(echo = TRUE)
    knitr::opts_chunk$set(tidy = F)
    knitr::opts_chunk$set(cache = TRUE)
    knitr::opts_chunk$set(width = 30)
    ```
    
    This is an example, where we can see that text in the book is affected by the use of command
    monofont: Times New Roman in the YAML. However, we can see that next chunk, the oucome when generating the tuffte_handout pdf is using a different font and also using multiple colors (no only black as in the main body).
    
    
    ```{r base_case_no_pipes_step_4}
    
    model0d <- c("example", 6 + 2 <= 2000) 
    #fabrication
    model0e <- c("example", 8 + 6 <= 2000)  
    #assembly
    
    ```
    

    Result:

    enter image description here