【发布时间】:2020-06-23 16:06:58
【问题描述】:
在 R 中,我有包含 LaTeX 宏定义的字符对象。这 挑战是在 R Markdown 文档中使用这些对象,以便 将 .Rmd 文件转换为 LaTeX(然后是 PDF)。这是一个挑战,因为 Pandoc(v2.9.1 和 2.9.2) 无法正确呈现某些宏生成代码,即使那样 代码是有效的 LaTeX。
这是一个最小的例子。首先,考虑这个 Rmd 文件:
---
title: "Rendering LaTeX Macros from R Objects"
output:
pdf_document:
keep_md: true
keep_tex: true
---
```{r}
withoutBraces <- "\\newcommand\\withoutBraces{This is a sentence.}"
withBraces <- "\\newcommand{withBraces}{This is a sentence.}"
```
```{r, results = "asis"}
writeLines(withoutBraces)
writeLines(withBraces)
```
从 RStudio 编织这个 .Rmd 文件会生成一个 .tex 文件,其中包含 以下输出:
\newcommand\withoutBraces{This is a sentence.}
但是
\textbackslash newcommand\{withBraces\}\{This is a sentence.\}
换句话说,\withoutBraces 命令在 .tex 中正确呈现
文档,但\withBraces 命令不是。检查
显示编织过程的rmarkdown::render() 部分很好,在
它产生一个没有问题的 .md 文件的感觉。问题在于
pandoc:当它将 .md 文件转换为 .tex 文件时,\withBraces
命令无法正确呈现。
如果我写的是 .md 文件而不是 .Rmd 文件,我可以使用“generic raw
属性”在我的代码块中获取\withoutBraces 宏定义
正确渲染,如this example from
@mb21。但我没有办法
在使用 R Markdown 文件时这样做。有什么我可以做的吗
让\withoutBraces 定义在我编织时正确呈现
将 .Rmd 文件转换为 LaTeX 和 PDF?
【问题讨论】:
标签: latex r-markdown markdown knitr pandoc