You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RMarkdown Beamer演示中用fancybox加R代码块出现LaTeX报错

解决RMarkdown Beamer编译时fancybox与fancyvrb的加载顺序问题

问题根源

报错的核心是fancybox包必须在fancyvrb包之前加载,但RMarkdown编译Beamer演示文稿时,会自动在后台引入fancyvrb包;而通过常规header-includes添加的\usepackage{fancybox}默认会排在自动引入的包之后,触发命令冲突导致报错。

可行解决方案

方法1:用includes指定前置加载的TeX文件

这是最直接可靠的方法,能从根源控制包的加载顺序:

  1. 新建一个纯TeX文件(例如命名为preamble.tex),内容仅一行:
\usepackage{fancybox}
  1. 修改RMarkdown文档的YAML头部,通过includes参数将该文件设为前置头文件:
---
output: beamer_presentation
includes:
  in_header: preamble.tex
---

## Slide 1

\ovalbox{an oval box}
```{r}
print("x")
该方式会让fancybox在pandoc自动引入的fancyvrb之前加载,彻底避免顺序冲突。

### 方法2:利用LaTeX钩子调整加载时机(无需额外文件)
如果不想创建单独文件,可以通过LaTeX的`\AtBeginDocument`钩子强制提前加载fancybox:
```yaml
---
output:
  beamer_presentation:
    keep_tex: true
header-includes:
  - \AtBeginDocument{\usepackage{fancybox}}
---

## Slide 1

\ovalbox{an oval box}
```{r}
print("x")
不过这种方法的稳定性略逊于方法1,优先推荐使用方法1。

内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:05:31