特殊字符(花括号)使用crash_rows()

时间:2019-02-18 14:11:26

标签: kableextra

当在R markdown程序中使用kable和kableExtra创建表时,我想对行进行分组并使用crash_rows()函数生成组头。这很好。但是,如果用于分组的变量中的值包含特殊字符,例如“(”和“)”,则渲染的pdf在标题行中的特殊字符之前插入了“ \”。 有什么办法可以解决这个问题?

我正在运行R版本3.4.3(2017-11-30)-在“风筝吃树”上 x86_64-pc-linux-gnu(64位)。 R Studio是1.1.442版。 Knitr是1.18版。 KableExtra是0.9.0版。 latex-engine默认为pdflatex,但我也尝试过xelatex。

我还尝试在kable()和column_spec()中设置escape = T,第一个无效,第二个在我的环境中导致错误消息。

---
output:
  pdf_document:
  fig_caption: yes
documentclass: article
fontsize: 11pt
geometry: "a4paper, portrait, left=3.00cm, right=1.98cm, bottom=3.81cm, top=2.01cm"
header-includes:
- \usepackage{booktabs}
- \usepackage{longtable}
- \usepackage{array}
- \usepackage{multirow}
- \usepackage{wrapfig}
- \usepackage{float}
- \usepackage{pdflscape}
- \usepackage[normalem]{ulem}

---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r prepcode, echo=FALSE, warning=FALSE, message=FALSE, include=FALSE}
rm(list=ls())
library(tidyverse)
options(kableExtra.latex.load_packages = FALSE)
library(kableExtra)
```

```{r tab, echo=FALSE, warning=FALSE, message=FALSE}
x <- rnorm(n=18)
t <- expand.grid(COL1=c("Stratum 1 (my first stratum)", "Stratum 2 (my second stratum)"),
                 COL2=c("A", "B", "C"),
                 COL3=c("x", "y", "z"))
xt <- cbind(t, COL4=x) %>% arrange(COL1, COL2, COL3)

knitr::kable(xt, format="latex", row.names=FALSE, booktabs=T) %>%
  kable_styling(font_size=8, latex_options = c("repeat_header")) %>%
  column_spec(1, bold=T) %>%
  collapse_rows(1:2, row_group_label_position = 'stack', latex_hline = "major")
```

例如,在pdf中,“第1层(我的第一个阶层)”显示为“第1层(我的第一个阶层)”。

1 个答案:

答案 0 :(得分:0)

通过将collapse_rows调用更改为

,可以防止kableExtra在堆叠行中转义特殊字符。
collapse_rows(1:2, row_group_label_position = 'stack', latex_hline = "major", 
              row_group_label_fonts = list (list (escape = FALSE)))