ztable 包中的 R 百分比符号在编织到 pdf 时抛出 \hline 错误

R Percentage symbol in ztable package throws \hline error when knitting to pdf

我使用 ztable 包已经有一段时间了,并通过 RStudio 编织成 pdf。添加包含百分比符号的子列名称 (addSubColumnNames) 后,出现 \hline 错误。如果我不使用百分比符号,一切运行正常。我一直在尝试查看是否有必要的包裹,但没有运气。像往常一样欢迎任何帮助。

下面是一个可重现的例子:

 ---
 output: pdf_document
 header-includes: 
 - \usepackage{colortbl}
 - \usepackage{multirow}
 - \usepackage{graphicx}
 - \usepackage{array}
 - \usepackage{booktabs}
 - \usepackage{tabularx}
 - \usepackage{wrapfig}
 - \usepackage{amsmath}
 graphics: yes
 ---

 ```{r, message = F, results = 'asis', echo = F} 
 # will throw out Error 
 library(ztable)
 data(iris)
 options(ztable.type="latex") 
 zt = ztable(iris[1:5,], caption = "ztable", align = "cccccc", size = 3)
 zt = addcgroup(zt,
                 cgroup = c("group 1", "group 2"),
                 n.cgroup = c(2,3))
 zt = addSubColNames(zt, rep("f3 (C%)", 5))
 zt
 ```

 ```{r, message = F, results = 'asis', echo = F} 
 # will be OK
 library(ztable)
 data(iris)
 options(ztable.type="latex") 
 zt = ztable(iris[1:5,], caption = "ztable", align = "cccccc", size = 3)
 zt = addcgroup(zt,
                 cgroup = c("group 1", "group 2"),
                 n.cgroup = c(2,3))
 zt = addSubColNames(zt, rep("f3 (C)", 5))
 zt
 ```  

错误消息是这样的,正如我所提到的,它仅在我将 % 添加为 ztable 中的子列名称时出现。任何帮助都会很棒:

 ! Misplaced \noalign.
 \hline ->\noalign 
                   {\ifnum 0=`}\fi \let \hskip \vskip \let \vrule \hrule \let...
 l.104 \hline
 pandoc.exe: Error producing PDF from TeX source
 Error: pandoc document conversion failed with error 43

恭喜!可重现的例子没问题,很清楚。

我在输出中有这个

! LaTeX Error: File `titling.sty' not found.

请检查您的 RMD 中的第 26 行。这就是有效的方法

---
output: 
  pdf_document: 
    keep_tex: yes
header-includes: 
 - \usepackage{colortbl}
 - \usepackage{multirow}
 - \usepackage{graphicx}
 - \usepackage{array}
 - \usepackage{booktabs}
 - \usepackage{tabularx}
 - \usepackage{wrapfig}
 - \usepackage{amsmath}
graphics: yes
---

 ```{r, message = F, results = 'asis', echo = F} 
 # will throw out Error 
 library(ztable)
 data(iris)
 options(ztable.type="latex") 
 zt = ztable(iris[1:5,], caption = "ztable", align = "cccccc", size = 3)
 zt = addcgroup(zt,
                 cgroup = c("group 1", "group 2"),
                 n.cgroup = c(2,3))
 zt = addSubColNames(zt, rep("f3 (C\%)", 5))
 zt
 ```

 ```{r, message = F, results = 'asis', echo = F} 
 # will be OK
 library(ztable)
 data(iris)
 options(ztable.type="latex") 
 zt = ztable(iris[1:5,], caption = "ztable", align = "cccccc", size = 3)
 zt = addcgroup(zt,
                 cgroup = c("group 1", "group 2"),
                 n.cgroup = c(2,3))
 zt = addSubColNames(zt, rep("f3 (C)", 5))
 zt
 ```  

魔术是通过使用 zt = addSubColNames(zt, rep("f3 (C\%)", 5)) 来实现的,因为在 LaTeX 中 '\%' 是 %

此致