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

如何在Rmarkdown bookdown的asis输出HTML中正确渲染@ref交叉引用

问题原因

  • Pandoc 默认不会解析 HTML 标签内部的 Markdown 语法,你放在 <div> 标签内的 @ref() 会被识别为普通文本,不会被 bookdown 处理成交叉引用链接。
  • cat() 输出异常的问题是因为写法不符合 asis 块的输出要求,调整语法即可正常工作。

解决方案

给需要解析 Markdown 内容的 HTML 块级标签添加 markdown="1" 属性,明确告知 Pandoc 解析标签内部的 Markdown 语法,正确写法如下:

```{r results='asis', echo=FALSE}
cat("
<h2>An html title</h2>
<div markdown='1'>
@ref(titi22)
</div>
")
如果需要处理更复杂的动态生成内容,也可以主动调用 knit 工具处理 Markdown 内容后再输出:
```r
```{r results='asis', echo=FALSE}
# 定义带Markdown语法的内容模板
md_tpl <- "
<h2>An html title</h2>
<div>
@ref(titi22)
</div>
"
# 解析模板中的Markdown语法
parsed_content <- knitr::knit(text = md_tpl, quiet = TRUE)
# 输出处理完成的内容
cat(parsed_content)
## 注意事项
- 确保被引用的代码块ID `titi22` 真实存在,没有配置禁用交叉引用的相关参数。
- `results='asis'` 块中输出内容时不需要对 `@` 符号做额外转义。

内容的提问来源于stack exchange,提问作者jérémy Gelb
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:04