【问题标题】:R markdown, trouble with \rowcolor in kable_styling()R 降价,在 kable_styling() 中出现 \rowcolor 问题
【发布时间】:2020-05-16 13:38:06
【问题描述】:

在 R markdown 中使用 kable_styling() 时遇到了一些问题。 https://haozhu233.github.io/kableExtra/awesome_table_in_pdf.pdf 在将 Rmd 文件中的表格样式设置为 pdf 时有一个很棒的小插图,但在使用 kable_styling(latex_options = "striped") 时仍然遇到问题,因为它会出现错误 !undefined control sequence. \rowcolor

R块中的代码是

kableExtra::kable(results,caption = "Results", "latex", booktabs = TRUE) %>% 
kable_styling(latex_options = "striped")

我尝试了\usepackage[table]{xcolor} 和其他一些打地鼠技术,但仍然出错。我将向您展示我正在使用的 YAML 以及附加的“in_header”文件。任何帮助将不胜感激。

--- title: "Water Yield" author: "Josh Erickson" date: "January 28, 2020" output: pdf_document: fig_caption: yes includes: in_header: my_header.tex bibliography: WaterYield.bib tables: true ---

“my_header.tex”在下面

\usepackage{float}
\let\origfigure\figure
\let\endorigfigure\endfigure
\renewenvironment{figure}[1][2] {
    \expandafter\origfigure\expandafter[H]
} {
    \endorigfigure
}

- \usepackage{booktabs}
- \usepackage{longtable}
- \usepackage{array}
- \usepackage{multirow}
- \usepackage{wrapfig}
- \usepackage{float}
- \usepackage{colortbl}
- \usepackage{pdflscape}
- \usepackage{tabu}
- \usepackage{threeparttable}
- \usepackage{threeparttablex}
- \usepackage[normalem]{ulem}
- \usepackage{makecell}
- \usepackage{xcolor}

【问题讨论】:

    标签: r r-markdown pdflatex kable kableextra


    【解决方案1】:

    由于没有 MWE,因此很难保证此修复程序会起作用。话虽如此,kableExtra 根据您提供的参考资料的 P.4 中的文档自动加载乳胶包 xtable。一种选择是遵循他们的建议:

    您可以通过将全局选项 kableExtra.latex.load_packages 设置为 FALSE 来抑制这种自动加载行为 在加载 kableExtra 之前。

    或者,我建议您执行以下操作:

    1. 从 .tex 文件中删除 \usepackage{xcolor}。您已经有了 \usepackage{colortbl},它定义了您需要的命令 \rowcolor(参见colortbl.pdf)。它不会与 kableExtra 冲突。
    2. 可能由于我对 YAML/R Markdown 中的某些功能一无所知,我更喜欢将 .tex 文件转换为 .txt 文件并删除 \usepackage 命令前面的所有“-”。

    这是一个适合你的 MWE 示例:

    ---
    title: "Water Yield"
    author: "Josh Erickson"
    date: "2/2/2020"
    output: 
      pdf_document:
        includes:
          in_header: my_header.txt
    tables: true  
    ---
    
    knitr::opts_chunk$set(echo = TRUE)
    
    if(!require(pacman)) install.packages("pacman")
    pacman::p_load(tidyverse, kableExtra)
    
    #using the cars dataset from base R
    results = summary(cars)
    
    kableExtra::kable(results,caption = "Results", "latex", booktabs = TRUE) %>% 
    kable_styling(latex_options = "striped")
    
    

    请注意,我只对您的 in_header 文件进行了三处编辑:

    • 将其更改为 .txt [这可能是不必要的步骤];
    • 删除 \usepackage 命令前的所有“-”;和
    • 删除 \usepackage{xcolor}

    因此,我的 my_header.txt 文件如下所示:

    \usepackage{float}
    \let\origfigure\figure
    \let\endorigfigure\endfigure
    \renewenvironment{figure}[1][2] {
      \expandafter\origfigure\expandafter[H]
    } {
      \endorigfigure
    }
    
    \usepackage{booktabs}
    \usepackage{longtable}
    \usepackage{array}
    \usepackage{multirow}
    \usepackage{wrapfig}
    \usepackage{float}
    \usepackage{colortbl}
    \usepackage{pdflscape}
    \usepackage{tabu}
    \usepackage{threeparttable}
    \usepackage{threeparttablex}
    \usepackage[normalem]{ulem}
    \usepackage{makecell}
    

    对应的pdf如下:

    【讨论】:

    • 无法让它与 .txt 一起使用,因此 .tex 也是如此,并使其更远;但是,仍然收到“乳胶错误:未定义颜色“灰色!6”......当我在乳胶中做所有事情时注意到这一点,不得不更改为“灰色”,但在 rmarkdown 中不知道解决方法?
    • 在 my_header.tex 中使用 \definecolor{ashgray}{rgb}{0.7,0.75,0.71} 并让它与 `kable_styling(latex_options = "striped", striped_color = "ashgray") 一起使用。
    【解决方案2】:

    参见tinytex:“LaTeX 失败的一个常见原因是缺少 LaTeX 包。”

    我在LaTeX 中编译时遇到了同样的问题,但之后一切正常

    install.packages('tinytex')
    

    编辑: @FadelMegahed 是正确的,应该删除 xcolor,现在你需要 colortbl。但是 yaml 标头中的 - 应该在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多