knitr kable 将单元格文本格式化为有序列表

knitr kable formatting cell text as ordered list

我正在 rmarkdown/html 文档中创建一个 table,它无意中将单元格值更改为一个有序列表,例如格式为 (123)。下面是一个例子。欢迎任何帮助。

---
output: html_document
---

df <-
  data.frame(
    col1 = c("a", "b"),
    col2 = c("(123)", "(61)"),
    stringsAsFactors = FALSE
    )

knitr::kable(
  df,
  format = "html",
  align = c('lr')
)

值被识别为 markdown 并且 pandoc 认为 (123)(61) 是列表项。尝试

df <- data.frame(col1 = c("a", "b"),
                 col2 = c("(123)", "(61)"),
                 stringsAsFactors = F)

df$col2 <- gsub("\(", "&lpar;", df$col2)
df$col2 <- gsub("\)", "&rpar;", df$col2)

用他们的 HTML entity code.

替换括号

注意: stringsAsFactors = F 是 R > 4.0

中的新默认值

另一种方法是禁用 fancy_lists 扩展。这将全局应用于文档,因此您可能更喜欢@MartinSchmelzer 的解决方案。

只需将其放入您的 YAML 中即可:

output: 
  html_document:
    md_extensions: "-fancy_lists"

完成此操作后,您只会得到带数字的有序列表(无字母或罗马数字),并且它们的格式必须为 1.,而不是 (1)1),等等