我正在尝试使用r markdown,kable和kableExtra输出一个乳胶表。当我使用选项row.names = FALSE而不是row.names = TRUE时,乳胶代码生成\ vphantom代码,产生错误以创建pdf。 似乎问题与row_spec选项有关。
这是Rmarkdown代码(.Rmd文件):
---
title: "Test"
output:
pdf_document:
fig_caption: true
keep_tex: true
---
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
{r}
library(knitr)
library(kableExtra)
temp <- mtcars[1:5,1:5]
kable(temp, format = "latex", booktabs = F,row.names=F) %>%
kable_styling(position = "center") %>%
row_spec(1, bold = T, background = "red")
错误是:
!扫描使用时发现禁止的控制序列 \检查@ nocorr @。 \ par l.105 ... color {red} \ textbf {21.0&amp; \ vphantom {1} 6} &安培; \ textbf {160}&amp; \ textbf {...
你对发生的事情有任何疑问吗?
答案 0 :(得分:3)
这是由数据框中的重复行引起的,因为第1行和第2行都是相同的。
查看row_spec_latex的代码,当kableExtra用于kable表时,它会检查重复的行。如果找到一个,它会在fix_duplicated_rows_latex内部函数中插入vphantom
参数。然后,这个vphantom插入会搞乱textbf
函数的格式化。
这似乎是一个小错误,所以在kableExtra:https://github.com/haozhu233/kableExtra中将其作为一个问题报告可能是值得的。我确信添加vphantom
有充分的理由,但怀疑这是预期的后果。
支持代码:
---
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(knitr)
library(kableExtra)
temp <- mtcars[1:5,1:5]
```
```{r}
# Keeping the row names (means all rows are unique)
kable(temp, format = "latex", booktabs = F) %>%
kable_styling(position = "center") %>%
row_spec(1, bold = T, color = "red")
```
```{r}
# Highlighting second row (which doesn't have the vphantom statement)
kable(temp, format = "latex", booktabs = F, row.names=F) %>%
kable_styling(position = "center") %>%
row_spec(2, bold = T, color = "red")
```