Search code examples
rr-markdownxelatexpdfdocument

Knitting R-Markdown document causes "! Undefined control sequence." error


I'm creating an R Markdown document and keep getting errors when trying to print out a mathematical formula. I think the errors are somewhere in the header, but I can't quite pin it down. Here's a watered-down version of the document:

---
output: 
  pdf_document:
    keep_tex: yes
    latex_engine: xelatex
header-includes: |
  \usepackage{nath}
  \usepackage{amsmath}
title: "Test Report"
toc: true
number_sections: true
graphics: yes
toc_depth: 2
df_print: kable
fontsize: 13pt
editor_options: 
  chunk_output_type: console
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

```{r cars}
summary(cars)
```

**`r 5 * 20`** entries in the dataset; 


Testing mathematical symbols,  $\varepsilon _{u,i}$.  
The formula used for this is:
$$ Y_{u,i} = \mu  + \varepsilon _{u,i} $$
Where $\Y_{u,i}$ is the predicted rating per user, per movie and $\mu$ is the "true" rating for all movies. Mu-hat -> $\hat{mu}$ .

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
plot(pressure)
```

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

And here's the error messages:

output file: final_testing.knit.md

! Undefined control sequence.
\mathop ...\o@mathop {#1}} \else \def \mathop@arg 
                                                  {#1} \def \afterparse@ {\m...
l.112 \begin{document}

Error: LaTeX failed to compile final_testing.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See final_testing.log for more info.
Execution halted

Any input of what's making this happen greatly appreciated. TIA


Solution

  • I did the following:

    • commented out the latex engine (probably to let Rmarkdown make the choice for itself)
    • deleted | after header-includes:
    • inserted - before \usepackage{}
    • commented out package nath since it doesn't seem to load
    • changed fontsize: 12pt since there is no 13pt
    • deleted white-spaces and several backslashes in your formulas

    Works for me now, hope for you too?

    ---
    output: 
      pdf_document:
        keep_tex: yes
        # latex_engine: xelatex
    header-includes: 
    # - \usepackage{nath}
    - \usepackage{amsmath}
    title: "Test Report"
    toc: true
    number_sections: true
    graphics: yes
    toc_depth: 2
    df_print: kable
    fontsize: 12pt
    editor_options: 
      chunk_output_type: console
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```
    
    ## R Markdown
    
    This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
    
    When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
    
    ```{r cars}
    summary(cars)
    ```
    
    **`r 5 * 20`** entries in the dataset;
    
    
    Testing mathematical symbols,  $\varepsilon_{u,i}$.  
    The formula used for this is:
    $$Y_{u,i} = \mu  + \varepsilon_{u,i}$$
    Where $Y_{u,i}$ is the predicted rating per user, per movie and $\mu$ is the "true" rating for all movies. Mu-hat -> $\hat{mu}$.
    
    ## Including Plots
    
    You can also embed plots, for example:
    
    ```{r pressure, echo=FALSE}
    plot(pressure)
    ```
    
    Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.
    

    enter image description here