17

When I used titlesec in my markdown document as below:

---
header-includes:
    - \usepackage{titlesec}
---

when processing it by pandoc, I got the following error:

pandoc try.md -o try.pdf
! Argument of \paragraph has an extra }.
<inserted text> 
                \par 
l.1290 \ttl@extract\paragraph

pandoc: Error producing PDF

by searching, I found the following work-around for R-markdown: Can't knit to pdf with custom styles

I wonder how can I implement a similar work-around with markdown and YAML headers?

I also found and verified the following approach would work:

pandoc --variable=subparagraph try.md -o try.pdf

But it's harder for the user, as one might forget the work-around.

There are some discussion of the work-around https://www.bountysource.com/issues/40574981-latex-template-incompatible-with-titlesec, but it's beyond my knowledge

Thanks for your help

Community
  • 1
  • 1
Yu Shen
  • 2,770
  • 3
  • 33
  • 48

1 Answers1

23

This is because the default LaTeX template redefines \paragraph. To disable this behaviour, you can use the subparagraph variable in pandoc. You could supply this at the command-line:

pandoc --variable subparagraph -o file.pdf file.md

Or you could embed it in the document's YAML metadata, with any non-null value:

---
subparagraph: yes
---

From man pandoc (and the user's guide):

subparagraph

disables default behavior of LaTeX template that redefines (sub)paragraphs as sections, changing the appearance of nested headings in some classes

After this, titlesec.sty should work.

Community
  • 1
  • 1
bewilderex63
  • 387
  • 3
  • 10
  • When I build [this](https://i.imgur.com/IdyyPHz.png) document with `pandoc -o test.pdf test.md`, everything works fine for me with pandoc 2.2.3.2. – bewilderex63 Sep 13 '18 at 09:49