Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Horizontal rule in R Markdown / Bookdown causing errors

Suddenly, I run into an error when knitting to PDF in Markdown/Bookdown. Nothing about my system has changed.

The error is being caused by a 'horzontal rule' i.e. --- or *** anywhere in markdown, despite line spaces either side.

I include a simplistic exmaple of the offending --- that will not knit to PDF.

Incidentally, knitting to another format does not cause problems and knitting to PDF without a horizontal rule does not generate an error. Also, swapped --- for *** to explore if this stapped the error. It did not.

Can anyone offer any insight, please?

Using TinyTex and MikteX separately (not installed together). Neither solve the problem. Only just encountered this problem. Files that previously knitted without issue now fail when they encounter --- or ***.


## R Markdown

Some text, then I want horizontal rule

---

Some text after the horizonatal rule.



! Missing number, treated as zero.
<to be read again> 
                   \protect 
l.146 ...nter}\rule{0.5\linewidth}{\linethickness}
                                                  \end{center} 

Error: Failed to compile K.tex. See https://yihui.name/tinytex/r/#debugging for debugging tips. See K.log for more info.
Execution halted
like image 575
stats4ever Avatar asked Feb 03 '23 16:02

stats4ever


1 Answers

Update: this issue has been fixed in rmarkdown v2.1, and should disappear if you (re)install the latest version of rmarkdown from CRAN.


This is a known and fixed bug now in pandoc. https://github.com/jgm/pandoc/issues/5801

it happened with newer version of TexLive.

This will be fixed in next pandoc version. You'll have to wait or use the nightly build.

you can also use a trick for now by adding this in the header of tex document.

\renewcommand{\linethickness}{0.05em}

With rmarkdown you can do

---
title: "Untitled"
output: 
  pdf_document:
    keep_tex: true
    includes:
      in_header: header.tex
---

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


```{cat, engine.opts = list(file = "header.tex")}
\renewcommand{\linethickness}{0.05em}
```


lalalala

---

lilili

you can also write the header.tex file manually, or add it to your template.

This works for me.

like image 74
cderv Avatar answered Feb 07 '23 00:02

cderv