r - 更改 kableExtra 表格单元格中的文本规范/字体(粗体、斜体等)位

标签 r text formatting r-markdown kableextra

我正在尝试格式化 rmakrdown 中 kableExtra 表中的各个文本位,例如下面的示例:

---
output: pdf_document
---
```{r, echo=FALSE}
knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
             num = c(1,2,3)))
```

enter image description here

但是,如果我使用 kableExtra

```{r, echo=FALSE}
library(kableExtra)
knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
             num = c(1,2,3)))
```

我会得到:

enter image description here

我知道有cell_spec、row_spec和column_spec来格式化整个行列和单元格,但这不是我想要的。

我想仅格式化特定单元格中的部分文本,但保留 kableExtra 的所有函数用于设计我的表格。还有 text_spec(),但我没有找到任何有关如何在表中使用它的示例。

附注我不是那么先进,因此更喜欢工作示例。

最佳答案

解决此问题的方法是告诉 kable() 生成 Markdown 表:

---
output: pdf_document
---
```{r, echo=FALSE}
library(kableExtra)
knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
             num = c(1,2,3)), format="markdown")
```

format="pandoc" 也可以,但 format="latex" (我认为当 kableExtra 为涉及)不。

但是,正如评论中指出的,kableExtra 不支持 markdown,因此您无法添加该包中的所有优秀功能。如果您想要这样,唯一的解决方案可能是使用 LaTeX 标记而不是 Markdown 标记。也就是说,将输入更改为:

---
output: pdf_document
header-includes:  \usepackage{soul}
---
```{r, echo=FALSE}
library(kableExtra)
knitr::kable(data.frame(char = c('Hey \\textit{italics}','Hello \\textbf{bold}', 
                                 'Hi \\st{strikethrough}'),
             num = c(1,2,3)), escape = FALSE)
```

您需要 escape = FALSE 告诉 kable 不要将 LaTeX 标记显示为文本,而是将其留在那里供 LaTeX 解释。

关于r - 更改 kableExtra 表格单元格中的文本规范/字体(粗体、斜体等)位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58145601/

相关文章:

r - 根据用户输入在 R 中格式化表输出

r - 在 R 中按邮政编码计算不同的餐厅

r - ggplot中的混合线和散点图

jquery - 使用 jquery 获取跨度内的文本

html - 将表格列的宽度与固定宽度表格中的文本相匹配 (HTML/CSS)

C# 组合框未正确从列表中填充

r - dplyr 在列的子集上同时保留其余的 data.frame

c++ - QTextEdit中如何序列化和反序列化富文本?

swift - 如何为字符串中的每个字母设置 UIColor

javascript - toLocaleString 价格不带小数点零