Pandoc 无法从降价(和 R 降价)中呈现有效的 LaTeX 宏定义

Pandoc fails to render valid LaTeX macro definitions from markdown (and R markdown)

在 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 attributes" 在我的代码块中获取 \withoutBraces 宏定义 正确呈现,如 这个来自 @mb21。但我没有办法 在处理 R Markdown 文件时这样做。有什么我可以做的吗 让 \withoutBraces 定义在我编织时正确呈现 .Rmd 文件到 LaTeX 和 PDF?

问题出在我的 LaTeX 格式错误上,与 pandoc 无关。我写了

withBraces    <- "\newcommand{withBraces}{This is a sentence.}"

我应该写的时候

withBraces    <- "\newcommand{\withBraces}{This is a sentence.}"

当我使用第二个字符串而不是第一个字符串时,转换为 LaTeX 没有问题。