如何防止在 RMarkdown 中使用内联 R 代码在 LaTeX 块中转义字符串?
How to prevent string escaping in a LaTeX block with inline R code in RMarkdown?
我正在尝试格式化矩阵以在 RMarkdown 文档中显示为 LaTeX,方法如下:
具有将 R matrix
转换为 LaTeX 字符串的函数:
bmatrix = function(x, digits=NULL, ...) {
library(xtable)
default_args = list(include.colnames=FALSE, only.contents=TRUE,
include.rownames=FALSE, hline.after=NULL,
comment=FALSE,
print.results=FALSE)
passed_args = list(...)
calling_args = c(list(x=xtable(x, digits=digits)),
c(passed_args,
default_args[setdiff(names(default_args),
names(passed_args))]))
cat("\begin{bmatrix}\n",
do.call(print.xtable, calling_args),
"\end{bmatrix}\n")
}
这样:
bmatrix(diag(2))
给予
\begin{bmatrix}
1.00 & 0.00 \
0.00 & 1.00 \
\end{bmatrix}
问题是当我在 LaTeX 块中内联它时:
$$
M = `r bmatrix(diag(2))`
$$
矩阵部分为空(我只得到"M=")。
我怀疑这与 RMarkdown and/or pandoc 转义 LaTeX 字符串中的 HTML 实体有关。
有什么解决办法吗?
我也试过了
$$
M = `r I(bmatrix(diag(2)))`
$$
但无济于事。
尝试
$$
M =
```{r, results='asis'}
bmatrix(diag(2))
```
$$
the use of the results='asis' chunk option... is required to ensure that the raw table output isn’t processed furthur by knitr.
MWE
---
title: "Untitled"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
bmatrix = function(x, digits=NULL, ...) {
library(xtable)
default_args = list(include.colnames=FALSE, only.contents=TRUE,
include.rownames=FALSE, hline.after=NULL,
comment=FALSE,
print.results=FALSE)
passed_args = list(...)
calling_args = c(list(x=xtable(x, digits=digits)),
c(passed_args,
default_args[setdiff(names(default_args),
names(passed_args))]))
cat("\begin{bmatrix}\n",
do.call(print.xtable, calling_args),
"\end{bmatrix}\n")
}
```
# Foo
$$
M =
```{r, results='asis'}
bmatrix(diag(2))
```
$$
生产
我正在尝试格式化矩阵以在 RMarkdown 文档中显示为 LaTeX,方法如下:
具有将 R matrix
转换为 LaTeX 字符串的函数:
bmatrix = function(x, digits=NULL, ...) {
library(xtable)
default_args = list(include.colnames=FALSE, only.contents=TRUE,
include.rownames=FALSE, hline.after=NULL,
comment=FALSE,
print.results=FALSE)
passed_args = list(...)
calling_args = c(list(x=xtable(x, digits=digits)),
c(passed_args,
default_args[setdiff(names(default_args),
names(passed_args))]))
cat("\begin{bmatrix}\n",
do.call(print.xtable, calling_args),
"\end{bmatrix}\n")
}
这样:
bmatrix(diag(2))
给予
\begin{bmatrix}
1.00 & 0.00 \
0.00 & 1.00 \
\end{bmatrix}
问题是当我在 LaTeX 块中内联它时:
$$
M = `r bmatrix(diag(2))`
$$
矩阵部分为空(我只得到"M=")。
我怀疑这与 RMarkdown and/or pandoc 转义 LaTeX 字符串中的 HTML 实体有关。
有什么解决办法吗?
我也试过了
$$
M = `r I(bmatrix(diag(2)))`
$$
但无济于事。
尝试
$$
M =
```{r, results='asis'}
bmatrix(diag(2))
```
$$
the use of the results='asis' chunk option... is required to ensure that the raw table output isn’t processed furthur by knitr.
MWE
---
title: "Untitled"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
bmatrix = function(x, digits=NULL, ...) {
library(xtable)
default_args = list(include.colnames=FALSE, only.contents=TRUE,
include.rownames=FALSE, hline.after=NULL,
comment=FALSE,
print.results=FALSE)
passed_args = list(...)
calling_args = c(list(x=xtable(x, digits=digits)),
c(passed_args,
default_args[setdiff(names(default_args),
names(passed_args))]))
cat("\begin{bmatrix}\n",
do.call(print.xtable, calling_args),
"\end{bmatrix}\n")
}
```
# Foo
$$
M =
```{r, results='asis'}
bmatrix(diag(2))
```
$$
生产