我喜欢编写可以拥有html输出和pdf输出的rmd文件。在我的大多数用例中都有效。只是对齐公式不起作用,因为我需要html中的exta美元符号:
以下适用于HTML:
---
title: "Test"
author: "RW"
date: "Monday, February 15, 2016"
output: html_document
---
Testing formulae
$$
\begin{align}
y &= x \\
z &= a
\end{align}
$$
我必须删除$
才能使其在pdf中运行(这很自然,因为这对乳胶而言太过分了):
---
title: "Test"
author: "RW"
date: "Monday, February 15, 2016"
output: pdf_document
---
Testing formulae
\begin{align}
y &= x \\
z &= a
\end{align}
有没有办法让它在html和pdf中运行?
答案 0 :(得分:1)
您可以使用自定义pandoc filter执行此操作。这个删除了乳胶输出的数学环境,只有它使用align
。将脚本保存为math.py
在路径中或与Rmd文件相同的目录中
#!/usr/bin/env python
from pandocfilters import toJSONFilter, RawInline, stringify
import re
align = re.compile("\\\\begin{align}")
def math(k, v, f, meta):
if k == 'Math' and f == 'latex' and re.search(align, v[1]):
return RawInline('latex', v[1])
if __name__ == "__main__":
toJSONFilter(math)
并将其添加到您的yaml前端:
---
title: "Test"
author: "RW"
date: "Monday, February 15, 2016"
output:
pdf_document:
pandoc_args:
- --filter
- definition_to_bold.py
---
Testing formulae
$$
\begin{align}
y &= x \\
z &= a
\end{align}
$$
现在,用$$
和align
环境编写的所有方程式都可用于乳胶。
您将需要python和pandocfilters
库(pip install pandocfilters
)。