【问题标题】:Pandoc fails to render valid LaTeX macro definitions from markdown (and R markdown)Pandoc 无法从 markdown(和 R markdown)呈现有效的 LaTeX 宏定义
【发布时间】: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


    【解决方案1】:

    问题在于我的 LaTeX 格式错误,而不是 pandoc 的任何问题。我写过

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

    我应该写的时候

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多