我正在尝试格式化 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)))
```
但是,如果我使用 kableExtra
```{r, echo=FALSE}
library(kableExtra)
knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
num = c(1,2,3)))
```
我会得到:
我知道有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/