我有一个 RMarkdown 文件和一个包含一堆乳胶\newcommand
调用的 LaTeX 片段,我想将它们放在单独的文件中(因为我想在多个 RMarkdown 文件中重用它们)。这是一个可重现的小例子:test.rmd
---
title: "Test"
---
# Test Document
## Math
$$
\begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{bmatrix}
$$
$$
\bmat
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\emat
$$
和 LaTeX 片段:
\newcommand{\bmat}{\begin{bmatrix}}
\newcommand{\emat}{\end{bmatrix}}
我希望在文档标题中添加 LaTeX 片段并编译test.rmd
为独立的 HTML 文档。你怎么做到这一点?
我做了两次尝试,尝试(1)编译器忽略header-includes
元数据,尝试(2)\newcommand{\bmat}{...
在浏览器中显示为纯文本。这两种尝试在编译为 PDF 时都有效(即替换rmarkdown::html_document
为rmarkdown::pdf_document
)。我怀疑这是因为 MathJax 与 LaTeX 编译器的工作方式非常不同,但我还没有在 StackOverflow 或关于此的文档上找到非常清晰的解释......
尝试 1
common.yaml
为 Pandoc定义YAML 元数据文件
---
urlcolor: blue
header-includes: |
\newcommand{\bmat}{\begin{bmatrix}}
\newcommand{\emat}{\end{bmatrix}}
---
test.rmd
然后我编译
Rscript -e "rmarkdown::render('test.rmd',quiet=TRUE,output_format=rmarkdown::html_document(pandoc_args=c('--metadata-file=/current/working/dir/common.yaml')))"
尝试 2
header.tex
为 Pandoc定义头文件
\newcommand{\bmat}{\begin{bmatrix}}
\newcommand{\emat}{\end{bmatrix}}
test.rmd
然后我编译
Rscript -e "rmarkdown::render('test.rmd',quiet=TRUE,output_format=rmarkdown::html_document(pandoc_args=c('--include-in-header=/current/working/dir/header.tex')))"