无法在Markdown和Pandoc中使用titlesec?

18
当我在我的Markdown文档中使用titlesec时,如下所示:
---
header-includes:
    - \usepackage{titlesec}
---

在使用Pandoc处理时,我遇到了以下错误:

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

pandoc: Error producing PDF

通过搜索,我找到了以下针对R-markdown的解决方法:Can't knit to pdf with custom styles 我想知道如何使用markdown和YAML头文件实现类似的解决方法?
我还发现并验证了以下方法可行:
pandoc --variable=subparagraph try.md -o try.pdf

但对于用户来说,这可能更难,因为用户可能会忘记这个解决方法。

有一些关于这个解决方法的讨论:https://www.bountysource.com/issues/40574981-latex-template-incompatible-with-titlesec, 但这已经超出了我的知识范围。

感谢您的帮助。

1个回答

24

这是因为默认的LaTeX模板重新定义了\paragraph。要禁用此行为,您可以在pandoc中使用subparagraph变量。您可以在命令行上提供它:

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

或者您可以将它嵌入到文档的YAML元数据中,赋任何非空值:

---
subparagraph: yes
---

根据 man pandoc(以及用户指南)的说明:

subparagraph

禁用 LaTeX 模板的默认行为,该模板将 (sub)paragraph 重新定义为段落,从而更改某些类中嵌套标题的外观。

此后,titlesec.sty 应该可以工作了。


1
当我使用pandoc 2.2.3.2构建此文档时,一切都正常。 - bewilderex63

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接