Flo*_*lli 3 html markdown flextable r-markdown
这个问题被问了几次,但令人惊讶的是,没有给出答案。
我希望数据框中的一些数字出现在上标中。函数compose和display不适合这里,因为我还不知道数据框中的哪些值将出现在上标中(我的表格是自动生成的)。
我尝试使用^8^like for kable、$$10^-3$$、paste(expression(10^2))、 "H\\textsubscript{123}"等。
没有任何效果!帮助 !我拔掉我的头发...
library(flextable)
bab = data.frame(c( "10\\textsubscript{-3}",
paste(as.expression(10^-3)), '10%-3%', '10^-2^' ))
flextable(bab)
Run Code Online (Sandbox Code Playgroud)
我正在编织Rhtml 。
在 HTML 中,您可以使用诸如 之类的东西来表示上标<sup>-3</sup>,并使用 来表示下标<sub>-3</sub>。但是,如果将它们放入表格的单元格中,您将看到显示的全文,它不会被解释为 HTML,因为flextable转义了尖括号。
该kable()函数有一个参数escape = FALSE可以关闭此功能,但flextable不能:请参阅https://github.com/davidgohel/flextable/issues/156。然而,有一种黑客方法可以绕过这个限制:用htmlEscape()一个不执行任何操作的函数替换该函数。
例如,
```{r}
library(flextable)
env <- parent.env(loadNamespace("flextable")) # The imports
unlockBinding("htmlEscape", env)
assign("htmlEscape", function(text, attribute = FALSE) text, envir=env)
lockBinding("htmlEscape", env)
bab = data.frame(x = "10<sup>-3</sup>")
flextable(bab)
```
Run Code Online (Sandbox Code Playgroud)
这会将表显示为
这样做时要小心:在实际表中可能存在您确实需要 HTML 转义的情况,并且此代码将在文档的其余部分禁用该转义。如果您在 R 会话中执行此代码,它将禁用会话其余部分的转义。
如果您正在考虑在提交给 CRAN 的包中使用这样的文档,那就算了。您不应该在您希望其他人使用的代码中弄乱这样的绑定。
编辑添加:
事实上,有一种方法可以做到这一点,而无需上面给出的技巧。本文对此进行了描述: https://davidgohel.github.io/flextable/articles/display.html#sugar-functions-for-complex-formatting。as_paragraph这个想法是用对、as_sup、as_sub等的调用替换需要上标或下标的条目:
```{r}
library(flextable)
bab <- data.frame(x = "dummy")
bab <- flextable(bab)
bab <- compose(bab, part = "body", i = 1, j = 1,
value = as_paragraph("10",
as_sup("-3")))
bab
```
Run Code Online (Sandbox Code Playgroud)
这绝对比我给出的方法更安全。
| 归档时间: |
|
| 查看次数: |
3242 次 |
| 最近记录: |