在 Rmarkdown 中插入 R 代码块时出错

在 Rmarkdown 中插入 R 代码块时出错

我的小演示代码借鉴了这里如下所示(测试文件):

---
documentclass: article
output:
  pdf_document:
    number_sections: yes
    keep_tex: no
geometry: "left = 2.5cm, right = 2cm, top = 2cm, bottom = 2cm"
fontsize: 11pt
header-includes:
- \newtheorem{ex}{Exercise}
- \usepackage[nosolutionfiles]{answers} 
- \Newassociation{sol}{Solution}{ans}
- \renewcommand{\Solutionlabel}[1]{\textbf{Answer.}}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  error = TRUE,
  message = FALSE,
  warning = FALSE
)
```

\section{Problems}

\begin{ex}
First exercise
\begin{sol}
First solution.
\end{sol}
\end{ex}

它运行良好。但是,当我在其中插入一些 R 代码块时,例如

\begin{ex}
Second exercise
\begin{sol}
Second solution.
```{r}
1+2
```
\end{sol}
\end{ex}

它显示错误

! You can't use `macro parameter character #' in horizontal mode. 

奇怪的是,我们可以在环境之外使用 R 代码\begin{ex}...\end{ex}\begin{sol}...\end{sol}

如何解决这个问题?

答案1

总和的输出是## [1] 3并将其包含在 LaTeX 环境中,它作为 markdown 文本传递给 LateX 引擎:

```r
1+2
```

```
## [1] 3
```

结果与在 LaTeX 中输入未转义的“#”时出现相同的致命错误:

\documentclass{article}
\begin{document}
hello #  
\end{document}

一个解决方案是不仅指定什么是 R 代码,还要在 markdown 中指定什么是 LaTeX,但是排除里面的 R 块,即:

```{=tex}
\begin{ex}
Second exercise
\begin{sol}
Second solution.
```

```{r}
1+2
```

```{=tex}
\end{sol}
\end{ex}
```

然后处理 R 块并将其传递给 LaTeX 导出:

姆韦

相关内容