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

如何在Quarto HTML文档中阻止R输出被Markdown样式化?

解决Quarto中kable输出含下划线表格被样式化的问题

问题复现

在Quarto文件中使用knitr::kable()输出包含下划线(_)的表格时,HTML输出会将下划线解析为斜体样式,无法原样显示下划线。尝试使用#| output: asis会导致表格格式混乱,可通过以下代码复现:

blah <- data.frame(word = c("abcde", "a_c_e", "_b___", "__c__"))

blah |> 
  knitr::kable()

解决方案

方法1:直接输出HTML格式表格

指定format = "html"参数,让kable生成HTML表格而非Markdown表格,下划线会被原样保留:

blah <- data.frame(word = c("abcde", "a_c_e", "_b___", "__c__"))

blah |> 
  knitr::kable(format = "html")

方法2:将下划线转义为HTML实体

如果需要保留Markdown表格格式,先把数据中的下划线替换为HTML实体&#95;,再输出表格:

# 使用基础R实现
blah <- data.frame(word = c("abcde", "a_c_e", "_b___", "__c__"))
blah <- transform(blah, word = gsub("_", "&#95;", word))

blah |> 
  knitr::kable()

如果使用dplyr,可替换为:blah |> dplyr::mutate(word = gsub("_", "&#95;", word))

方法3:借助kableExtra确保转义

使用kableExtra包,默认的escape = TRUE参数会自动处理下划线的转义,同时保留表格样式:

library(kableExtra)

blah <- data.frame(word = c("abcde", "a_c_e", "_b___", "__c__"))

blah |> 
  kable() |>
  kable_styling()

内容的提问来源于stack exchange,提问作者itsMeInMiami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:25:10