簡體   English   中英

如何使用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和/或pandoc轉義LaTeX字符串中的HTML實體有關。

有什么辦法解決嗎?

我也嘗試過

$$
M = `r I(bmatrix(diag(2)))`
$$

但無濟於事。

嘗試

$$
M = 
```{r, results='asis'} 
bmatrix(diag(2))
```
$$

R代碼塊

需要使用results ='asis'塊選項...以確保未通過knitr處理原始表的輸出。


微機

---
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))
```
$$

產生

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM