Dan*_*ian 2 latex r pandoc knitr r-markdown
我有一个包含与号 ( &)的字符向量,在LaTeX 环境之外使用时可以正确显示,例如\begin{itemize}.
这有效:
---
output:
pdf_document
---
`r "Guns & Roses"`
Run Code Online (Sandbox Code Playgroud)
上面的代码运行而不会出现错误,这意味着要么knitr或rmarkdown自动逸出的符号。
现在,当在 LaTeX 环境中指定带有 & 符号的相同 R 字符向量时,会引发以下错误! Misplaced alignment tab character &.:
---
output:
pdf_document
---
\begin{itemize}
\item `r "Guns & Roses"`
\end{itemize}
Run Code Online (Sandbox Code Playgroud)
问题中的第一个片段运行没有错误但第二个没有错误的原因是&需要在 LaTeX 中pandoc转义并在第一种情况下对其进行转义,而不是在第二种情况下。
这是因为pandoc(使用扩展名raw_tex)不会转义“开始和结束标签之间的材料”。
knitr的输出钩子 inline可以用来解决这个问题。
根据评论,一种适用于 OP 的解决方案是将 R 内联表达式的输出包含在允许字符的verbatim环境中&。
---
output:
pdf_document
---
```{r, echo = FALSE}
knitr::knit_hooks$set(inline = function(x) {
return(paste("\\verb|", x, "|"))
})
```
\begin{itemize}
\item `r "Guns & Roses"`
\end{itemize}
Run Code Online (Sandbox Code Playgroud)
可替换地,内联表达式如下输出钩可以用来代替所有&由\&:
knitr::knit_hooks$set(inline = function(x) {
return(gsub(pattern = "&",
replacement = "\\&",
x = x,
fixed = TRUE))
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8289 次 |
| 最近记录: |