将表格编织为 PDF 时出现错位错误

问题描述 投票:0回答:1

这是我的数据集:

structure(list(grp = c("Catalunya", "Catalunya", "Catalunya", 
"Catalunya", "Catalunya", "Catalunya", "Catalunya", "Espanya", 
"Espanya", "Espanya", "Espanya", "Espanya", "Espanya", "Espanya", 
"Zona euro", "Zona euro", "Zona euro"), ...1 = c("Població activa", 
"Població ocupada", "Població en atur", "Taxa d'ocupació (16-64 anys, %)", 
"Taxa d'atur (%)", "Afiliació a la Seguretat Social", "Atur registrat", 
"Població activa", "Població ocupada", "Població en atur", 
"Taxa d'ocupació (16-64 anys, %)", "Taxa d'atur (%)", "Afiliació a la Seguretat Social", 
"Atur registrat", "Ocupació", "Taxa d'ocupació (15-64 anys, %)", 
"Taxa d'atur (%)"), `2020` = c(-1.26839233534172, -3.04809376067197, 
13.0847696095673, 67.0925, 12.635, -2.56184474168086, 21.1826104693573, 
-1.27577940774132, -2.91655923111536, 8.71827635843001, 61.9475, 
15.5325, -2.19941425385114, 17.8188983021421, 1, 66.85, 7.875
), `2021` = c(1.94340042691949, 3.18739133041548, -6.67185069984448, 
68.9625, 11.565, 2.65857732877581, -5.2563187744479, 2.06678961392581, 
2.97449410686412, -2.87106069939181, 63.795, 14.785, 2.70215065508972, 
-3.89736496774028, -1.7, 67.875, 7.725), `2022` = c(-0.0301881944890559, 
2.09681519410247, -16.2861745264678, 70.225, 9.685, 3.83887864972354, 
-18.876581280129, 0.913452577071894, 3.12019561435448, -11.8084005190185, 
65.505, 12.9175, 3.79262159563356, -16.8978292575669, 1, 69.4, 
6.775), `1r 2023` = c(1.99922108269506, 1.85115552598849, 3.29781836631151, 
69.4, 10.37, 3.02181041714329, -5.7146162870376, 1.38051712425944, 
1.83273835307471, -1.47730494219925, 65.2, 13.26, 2.61666709067936, 
-7.08354716233971, 1.91225710479803, 69.5, 6.8), `2n 2023` = c(2.81592167976299, 
3.77733598409542, -6.57420249653259, 71.91, 8.44, 2.94860134018895, 
-4.39319912524291, 1.84629330323165, 2.87619699042407, -5.37439199835583, 
66.99, 11.6, 2.69191266607034, -6.90855143327568, 1.49541299041116, 
70.3, 6.3), `3r 2023` = c(3.4827138162085, 4.39619090423888, 
-5.42168674698795, 72.5, 8.5, 2.76585066636925, -3.91667160303214, 
2.52955253571594, 3.50535635193738, -4.19434937252533, 67.34, 
11.84, 2.85840068444791, -7.3934987898817, NA, NA, NA), `ag. 2023` = c(NA, 
NA, NA, NA, NA, 2.79186387198558, -3.44014019290773, NA, NA, 
NA, NA, NA, 2.84156691399289, -7.57598555522119, NA, NA, NA), 
    `set. 2023` = c(NA, NA, NA, NA, NA, 3.70204800089409, -5.33024006683261, 
    NA, NA, NA, NA, NA, 3.72703019423044, -7.4594507870543, NA, 
    NA, NA), `oct. 2023` = c(NA, NA, NA, NA, NA, 2.61365216182399, 
    -2.38594696490765, NA, NA, NA, NA, NA, 2.55953296962417, 
    -5.33426281316769, NA, NA, NA)), row.names = c(NA, -17L), class = c("tbl_df", 
"tbl", "data.frame"))

还有我在 RMarkdown 中做的表格:

p4_2 <- read_xlsx("G:/SUBDIRECCIO-ESTUDIS/CONJUNTURA/INDICADORS MENSUALS/Automatitzacio_IC/proves R/IC_fitxer_RECULL_Maria.xlsx",
                  range = "B19:M39", 2, col_types = c("text", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric")) [, -c(5,9)] 
#importem des de la línia dels anys

options(knitr.kable.NA = "-")

grp_nm <- c("Catalunya", "Espanya", "Zona euro")

p4_2 <- 
  p4_2 %>% 
  mutate(grp = ifelse(...1 %in% grp_nm, ...1, NA))%>%
  fill(grp) %>% 
  filter(!...1 %in% grp_nm) %>% 
  select(grp, everything())
  

kable(p4_2[, -1],
      align = "lrrrrrrrrr",
      col.names = c("", names(p4_2[-(1:2)])),
      booktabs=TRUE,
      digits=1,
      format.args = list(big.mark="."),
      caption="\\textbf{Comerç exterior} (\\% de variació interanual)", escape = FALSE,
      vline = "",
      toprule = "\\arrayrulecolor{black}\\toprule",
      bottomrule = "\\arrayrulecolor{orange}\\bottomrule[1.1pt]",
      linesep = "\\arrayrulecolor{lightgray}\\midrule[0.5pt]") %>%
  add_header_above(c("", "Any" = 3, "Trimestre" = 3, "Mes" = 3), bold=T) %>%
  kable_styling(latex_options=c("HOLD_position","scale_down"), position="center") %>% 
  column_spec(1, width="6cm") %>% 
  column_spec(2:10, width="1cm") %>% 
  row_spec(0, bold = T) %>% 
  pack_rows(index = table(p4_2$grp), background = "#E0E0E0", latex_gap_space = "0.5pt")

当我将其编织为 PDF 时,出现以下错误:

!错位 对齐。 \中规则-> 对齐 {\ifnum 0=`} i @aboverulesep = boverulesep \global @... l.321 nd{表格}}

错误:LaTeX 无法编译 provaM.tex。请参阅 https://yihui.org/tinytex/r/#debugging 了解调试技巧。有关更多信息,请参阅 provaM.log。 执行停止

我不明白这个错误是从哪里来的,因为我对其他表使用相同的代码......

r-markdown knitr kable
1个回答
0
投票

您不必显式地将 midrule 添加到 kable 的linesep 中,因为此包会自动执行此操作。你可以尝试:

{r, results='asis', echo=FALSE}
library(knitr)

# Assuming p4_2 is your data frame
kable(p4_2[, -1],
      align = "lrrrrrrrrr",
      col.names = c("", names(p4_2[-(1:2)])),
      booktabs = TRUE,
      digits = 1,
      format.args = list(big.mark = "."),
      caption = "\\textbf{Comerç exterior} (\\% de variació interanual)",
      escape = FALSE,
      vline = "",
      toprule = "\\arrayrulecolor{black}\\toprule",
      bottomrule = "\\arrayrulecolor{orange}\\bottomrule[1.1pt]",
      linesep = "\\arrayrulecolor{lightgray}")

如果要自定义中线,可以添加:

midrule = "\\arrayrulecolor{lightgray}\\midrule[0.5pt]")

© www.soinside.com 2019 - 2024. All rights reserved.