无法使用包含 UTF 字符的 kableExtra table 在 PDF 中编织 rmarkdown 文件
Cannot knit rmarkdown file in PDF with kableExtra table including UTF characters
在 Windows 10 上全新安装 R、Rtools、Rstudio 时,我无法在 PDF(pdflatex 或 xelatex)中编制以下包含 kableExtra table 的 rmarkdown 文件,其中包括“ é" 单元格中的字符。
---
title: "test"
output:
pdf_document:
keep_tex: yes
latex_engine: pdflatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(kableExtra)
```
```{r reglementation-eu}
reglementation_table_eu <- data.frame(
polluant = c(rep("PM10", 2), rep("PM25", 3), rep("O3", 4), rep("NO2", 3), rep("SO2", 3), "CO"),
moyenne = c("1 jour", "Année calendrier", rep("Annee calendrier", 3), rep("Maximum journalier de la moyenne glissante sur 8 heures", 2), rep("1 heure", 2), rep("1 heure", 2), "Annee calendrier", rep("1 heure", 2), "1 jour", "Maximum journalier de la moyenne glissante sur 8 heures"),
limite = c(rep("CO", 16)),
comment = c(rep("CO", 16))
)
validUTF8(reglementation_table_eu$moyenne)
kable(reglementation_table_eu, col.names = c("Polluant", "Période de moyenne", "Concentration légale", "Commentaires"), booktabs = T, align = "l", caption = "Europese kwaliteitsnormen voor de omgevingslucht ter bescherming van de menselijke gezondheid.") %>%
column_spec(2, width = "2.5cm") %>%
column_spec(3, width = "4.5cm") %>%
column_spec(4, width = "4.5cm") %>%
row_spec(0, bold = T) %>%
collapse_rows(columns = 1, latex_hline = "full", valign = "top")
```
在 PDF 中编织时的错误消息是
Error in temp_sub(target_row, new_row, out, perl = T) : 'pattern' is invalid UTF-8 Calls: <Anonymous> ... column_spec -> column_spec -> column_spec_latex -> temp_sub
在 HTML 中编织完美,除了函数 validUTF8
returns
## [1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [13] TRUE TRUE TRUE TRUE
这可能是 PDF 问题的线索。
我错过了什么吗?谢谢!
> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19043)
Matrix products: default
locale:
[1] LC_COLLATE=English_Belgium.1252 LC_CTYPE=English_Belgium.1252 LC_MONETARY=English_Belgium.1252 LC_NUMERIC=C
[5] LC_TIME=English_Belgium.1252
system code page: 65001
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] kableExtra_1.3.4 rmarkdown_2.8
loaded via a namespace (and not attached):
[1] rstudioapi_0.13 knitr_1.33 xml2_1.3.2 magrittr_2.0.1 rvest_1.0.0 munsell_0.5.0 colorspace_2.0-1 viridisLite_0.4.0
[9] R6_2.5.0 rlang_0.4.11 stringr_1.4.0 httr_1.4.2 tools_4.1.0 webshot_0.5.2 xfun_0.23 htmltools_0.5.1.1
[17] systemfonts_1.0.2 yaml_2.2.1 digest_0.6.27 lifecycle_1.0.0 glue_1.4.2 evaluate_0.14 stringi_1.6.2 compiler_4.1.0
[25] scales_1.1.1 svglite_2.0.0
我终于找到了原因,几乎是偶然...
我想使用 Rstudio 的新笔记本电脑安装了全新的 Windows 10 Pro。我似乎默认情况下在“区域设置”window 中激活了测试版功能“使用 Unicode UTF-8 以获得全球语言支持”。这会导致在 PDF 中编译带有 UTF-8 字符的 kable(Extra) 时出现之前的错误消息。
取消选择它解决了问题。
在 Windows 10 上全新安装 R、Rtools、Rstudio 时,我无法在 PDF(pdflatex 或 xelatex)中编制以下包含 kableExtra table 的 rmarkdown 文件,其中包括“ é" 单元格中的字符。
---
title: "test"
output:
pdf_document:
keep_tex: yes
latex_engine: pdflatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(kableExtra)
```
```{r reglementation-eu}
reglementation_table_eu <- data.frame(
polluant = c(rep("PM10", 2), rep("PM25", 3), rep("O3", 4), rep("NO2", 3), rep("SO2", 3), "CO"),
moyenne = c("1 jour", "Année calendrier", rep("Annee calendrier", 3), rep("Maximum journalier de la moyenne glissante sur 8 heures", 2), rep("1 heure", 2), rep("1 heure", 2), "Annee calendrier", rep("1 heure", 2), "1 jour", "Maximum journalier de la moyenne glissante sur 8 heures"),
limite = c(rep("CO", 16)),
comment = c(rep("CO", 16))
)
validUTF8(reglementation_table_eu$moyenne)
kable(reglementation_table_eu, col.names = c("Polluant", "Période de moyenne", "Concentration légale", "Commentaires"), booktabs = T, align = "l", caption = "Europese kwaliteitsnormen voor de omgevingslucht ter bescherming van de menselijke gezondheid.") %>%
column_spec(2, width = "2.5cm") %>%
column_spec(3, width = "4.5cm") %>%
column_spec(4, width = "4.5cm") %>%
row_spec(0, bold = T) %>%
collapse_rows(columns = 1, latex_hline = "full", valign = "top")
```
在 PDF 中编织时的错误消息是
Error in temp_sub(target_row, new_row, out, perl = T) : 'pattern' is invalid UTF-8 Calls: <Anonymous> ... column_spec -> column_spec -> column_spec_latex -> temp_sub
在 HTML 中编织完美,除了函数 validUTF8
returns
## [1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [13] TRUE TRUE TRUE TRUE
这可能是 PDF 问题的线索。
我错过了什么吗?谢谢!
> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19043)
Matrix products: default
locale:
[1] LC_COLLATE=English_Belgium.1252 LC_CTYPE=English_Belgium.1252 LC_MONETARY=English_Belgium.1252 LC_NUMERIC=C
[5] LC_TIME=English_Belgium.1252
system code page: 65001
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] kableExtra_1.3.4 rmarkdown_2.8
loaded via a namespace (and not attached):
[1] rstudioapi_0.13 knitr_1.33 xml2_1.3.2 magrittr_2.0.1 rvest_1.0.0 munsell_0.5.0 colorspace_2.0-1 viridisLite_0.4.0
[9] R6_2.5.0 rlang_0.4.11 stringr_1.4.0 httr_1.4.2 tools_4.1.0 webshot_0.5.2 xfun_0.23 htmltools_0.5.1.1
[17] systemfonts_1.0.2 yaml_2.2.1 digest_0.6.27 lifecycle_1.0.0 glue_1.4.2 evaluate_0.14 stringi_1.6.2 compiler_4.1.0
[25] scales_1.1.1 svglite_2.0.0
我终于找到了原因,几乎是偶然...
我想使用 Rstudio 的新笔记本电脑安装了全新的 Windows 10 Pro。我似乎默认情况下在“区域设置”window 中激活了测试版功能“使用 Unicode UTF-8 以获得全球语言支持”。这会导致在 PDF 中编译带有 UTF-8 字符的 kable(Extra) 时出现之前的错误消息。