使用latex中的条件颜色将表渲染为行名= TRUE的PDF文档(rmarkdown、kable和kableExtra)

yc0p9oo0  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(136)

我尝试使用r markdown,kable和kableExtra输出一个latex表。当我使用选项row. names=FALSE而不是row.names=TRUE时,latex代码生成\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")

错误是:
!扫描使用\check@nocorr@时发现禁止的控制序列。\par l.105... color{red} \textbf{21.0 &\vphantom{1} 6} & \textbf{160} & \textbf{...
这是怎么回事?

waxmsbnn

waxmsbnn1#

这是由 Dataframe 中的重复行引起的,因为第1行和第2行是相同的。
回顾一下row_spec_latex的代码,当kableExtra用于一个可扩展表时,它会检查是否有重复的行。如果找到了,它会在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]
# 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")
# 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")

![](https://i.stack.imgur.com/OvY7Y.png)

相关问题