我对YAML数据块有问题。给定以下pandoc文档:
---
papersize: a4
geometry: "left=1.5cm,right=1.5cm,top=3cm,bottom=3cm"
fontsize: 12pt
# https://stackoverflow.com/a/43659664/2069099
subparagraph: yes
#documentclass: extarticle
header-includes:
- \usepackage[explicit]{titlesec}
- \titleformat{\section}[hang] {\filleft\huge\sc} {label}{20pt}{#1}
---
Hello World
===========
Lorem ipsum
我正确地将标题对齐在右侧。现在,假设我需要标题下方的全角标尺,如https://tex.stackexchange.com/a/84062中所述,需要将\titleformat
语句修改为:
---
papersize: a4
geometry: "left=1.5cm,right=1.5cm,top=3cm,bottom=3cm"
fontsize: 12pt
# https://stackoverflow.com/a/43659664/2069099
subparagraph: yes
#documentclass: extarticle
header-includes:
- \usepackage[explicit]{titlesec}
- \titleformat{\section}[hang] {\filleft\huge\sc} {label}{20pt}{#1}[\titlerule\vspace*{4pt}]
---
Hello World
===========
Lorem ipsum
但这会导致以下错误:
Error producing PDF.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.49 {[
,实际上,tex
文件显示了奇怪的代码:
...
\usepackage[explicit]{titlesec}
\titleformat{\section}[hang] {\filleft\huge\sc} {label}{20pt}{#1}
{[}\titlerule\vspace*{4pt}{]}
\date{}
\begin{document}
...
Pandoc将该行的一部分解析为Markdown。因此,当该行写为LaTeX时,会转义特殊字符以确保它产生与输入相同的文本。这是不需要的,最好的解决方案是将行明确标记为LaTeX:
header-includes:
- \usepackage[explicit]{titlesec}
- `\titleformat{\section}[hang] {\filleft\huge\sc} {label}{20pt}{#1}`{=latex}
也可以这样标记整个标头:
header-includes: |
```{=latex}
\usepackage[explicit]{titlesec}
\titleformat{\section}[hang] {\filleft\huge\sc} {label}{20pt}{#1}
```
[确定,在YAML块中传递普通的Latex解决了问题:
--
papersize: a4
geometry: "left=1.5cm,right=1.5cm,top=3cm,bottom=3cm"
fontsize: 12pt
# https://stackoverflow.com/a/43659664/2069099
subparagraph: yes
#documentclass: extarticle
header-includes:
- \usepackage[explicit]{titlesec}
- |
```{=latex}
\titleformat{\section}[hang] {\filleft\huge\sc} {label}{20pt}{#1}[\titlerule\vspace*{4pt}]
```
---
Hello World
===========
Lorem ipsum