KableExtra表对象无法正确显示R笔记本格式的数学符号

时间:2020-06-01 07:35:56

标签: r r-markdown knitr mathjax kableextra

更新:KableExtra创建者haozhu233在软件包中添加了mathjax支持。请参阅我的原始问题以及他对Github的评论:https://github.com/haozhu233/kableExtra/issues/473#issuecomment-668224096

当我尝试使用kable和kableExtra创建表时,无法正确显示数学符号。我能够像预期的那样在普通的有线表中生成数学字符。我试过了选项Escape = FALSE和protect_latex = T的不同变化,但是没有任何运气。如果我编织为PDF或HTML,数学符号将正确显示,只是内联显示(和预览)和笔记本显示会显示原始字符。

据我从HTML输出中看到的,kable表和kableExtra表之间的唯一区别是后者包含有关类和样式的一些额外信息。 R对象也属于不同的类,这使我想知道问题是否出在不调用mathjax来渲染kableExtra对象吗?如果是这样,当从kableExtra对象渲染HTML时,有没有办法告诉Rstudio在mathjax上调用?

我已经在两台不同的计算机上并使用RStudio Cloud重现了此问题。

注意:我提交了Github Issue,但意识到在这里提问可能更合适。我还发布了Rstudio community,但没有得到回应,所以我想在这里试试运气。

代表:

---
title: "Kable Extra Math Symbols"
output: html_notebook
---

```{r}

math_symb <- c(1,2,3,4)

kable_table <- knitr::kable(math_symb, col.names = "$R^{2}$") 
styled_kable_table <- kableExtra::kable_styling(kable_table)

kable_table
styled_kable_table
```{}

从示例中,对象kable_table的列名称为"R2",这是我想要实现的,而styled_kable_table对象的列名称为{{ 3}}

会话信息:

R版本3.6.3(2020-02-29) 平台:x86_64-w64-mingw32 / x64(64位) 在以下环境下运行:Windows 10 x64(内部版本18363)

Matrix产品:默认

语言环境: "$R^2$" LC_COLLATE =挪威语Bokmål_Norway.1252LC_CTYPE =挪威语Bokmål_Norway.1252 [3] LC_MONETARY =挪威Bokmål_Norway。1252LC_NUMERIC = C [5] LC_TIME =挪威Bokmål_Norway.1252

附带的基本软件包: 2统计图形grDevices utils数据集方法基础

通过名称空间(未附加)加载: 2 Rcpp_1.0.4.6 rstudioapi_0.11 xml2_1.3.2 knitr_1.28 magrittr_1.5 hms_0.5.3 [7] munsell_0.5.0 rvest_0.3.5 viridisLite_0.3.0 colorspace_1.4-1 R6_2.4.1 rlang_0.4.6 [13] stringr_1.4.0 httr_1.4.1 highr_0.8 tools_3.6.3 webshot_0.5.2 xfun_0.14 [19] htmltools_0.4.0省略号_0.3.0 yaml_2.2.1摘要_0.6.25 tibble_3.0.1生命周期_0.2.0 [25] crayon_1.3.4 kableExtra_1.1.0 readr_1.3.1 vctrs_0.3.0胶水_1.4.1评估_0.14 [31] rmarkdown_2.1字符串i_1.4.6编译器3.6.3支柱_1.4.4缩放比例_1.1.1 pkgconfig_2.0.3

2 个答案:

答案 0 :(得分:2)

这有效:

```{r, results ='asis'}

math_symb <- c(1,2,3,4)

kable_table <- knitr::kable(math_symb, col.names = "$R^{2}$") 
styled_kable_table <- kableExtra::kable_styling(kable_table)

kable_table
cat(styled_kable_table)
```

enter image description here 但是,我必须调查它为什么起作用。

答案 1 :(得分:0)

您正在生成HTML文档,因此需要使用HTML格式化标题:

math_symb <- c(1,2,3,4)
math_symb %>%  kable(col.names = "R<sup>2</sup>")

给予

enter image description here