【问题标题】:Is there a way to make a kable without lines/borders for pdf?有没有办法为pdf制作没有线条/边框的kable?
【发布时间】:2019-05-20 23:01:34
【问题描述】:

我正在开发一个闪亮的应用程序,该应用程序会生成并发送包含经过处理的数据的 pdf 报告。问题是我无法让表格布局看起来像客户想要的那样。

客户希望表格除了最后一行之外没有线条/边框,这在 kable 和/或 kableExtra 中是否可行?请不要包含其他软件包的答案,因为我知道 xtable。

table.tbl <- tibble(var1 = c("entry 1", "entry 2", "entry 3", "entry 4"),
                var2 = c(2000, 1000, 3000, 200),
                var3 = c(3000, 2000, 4000, 100))

table.tbl %>% 
  kable("latex", 
        booktabs = T) %>% 
  row_spec((table.tbl %>% 
             nrow()-1), hline_after = T)

【问题讨论】:

    标签: r r-markdown kable kableextra


    【解决方案1】:

    我认为kable 旨在超级简单,因此在设计上缺乏这样的功能。也就是说,我想出了一个荒谬的痛苦解决方案。要点是我将边框颜色设置为白色(我假设您的页面是白色的),然后在需要时将线条颜色切换为非白色(在我的示例中为红色),然后再返回白色。

    首先,将以下内容添加到您的 YAML 标头中:

    header-includes:
      - \usepackage{colortbl}
    

    接下来,在您的文档中添加:

    \arrayrulecolor{white}
    

    渲染表格使用:

    library(tidyverse)
    library(knitr)
    library(kableExtra)
    
    table.tbl <- tibble(var1 = c("entry 1", "entry 2", "entry 3", "entry 4"),
                    var2 = c(2000, 1000, 3000, 200),
                    var3 = c(3000, 2000, 4000, 100))
    table.tbl %>% 
      kable(format = "latex") %>%
      row_spec((table.tbl %>% 
                 nrow()-1), extra_latex_after = "\\arrayrulecolor{red}") %>% 
      row_spec((table.tbl %>% 
                 nrow()), extra_latex_after = "\\arrayrulecolor{white}")
    

    给予,

    【讨论】:

    • 非常感谢@Lyngbakr!这正是我所需要的。
    • 这可以控制线条,但不幸的是,如果format="latex",它会在表格的行条纹中放置一条白线。如果booktabs=TRUE,它不会通过条带化一条线,但是您会失去对这些线的控制。也许我们把这个踢到楼上的 github 上来获取 kableExtra?
    • @MarkNeal 是的,kableExtra 的功能请求是个好主意。
    【解决方案2】:

    这个技巧也适用于原生降价表,例如

    \arrayrulecolor{white}
    
        ||
        |--:| 
        |Cool left aligned quote | 
        | | 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      相关资源
      最近更新 更多