【问题标题】:RMarkdown Kable width issuesRMarkdown Kable 宽度问题
【发布时间】:2015-03-25 22:17:16
【问题描述】:

我正在尝试使用 RMarkdown 中的 Kable 创建一个表格来保存一些基本信息,这些信息将在 HTML、PDF 和 Word 中生成。这是我的代码

---
title: "test"
author: ''
date: "2015/03/24"
output:
 pdf_document:
 keep_tex: yes  
---

```{r kable1, echo=FALSE}
Variable <- c("VAR1", "VAR2", "VAR3", "VAR4")
Label <- c("LABEL", "A very       loooooooooooooooooooooooooooooooooooooooooooo     ooooooooooooooooooooooooooooooooooooooo nnnnnnngggggggg label yall", "LAB3", "LAB4")
Classification <- c("Type1", "Type2", "Type1", "Type1")
data <- data.frame(Variable, Label, Classification)
library(knitr)
kable(data)
```

```{r kable2, echo=FALSE}
Variable <- c("VAR1", "VAR2", "VAR3", "VAR4")
Label <- c("LABEL", "LabLE", "LAB3", "LAB4")
Classification <- c("Type1", "Type2", "Type1", "Type1")
data <- data.frame(Variable, Label, Classification)
library(knitr)
kable(data)
```

HTML 输出如下。 这就是我要的。我喜欢表格如何填写 html。但是,当我生成 PDF 时,我得到以下信息。

我们可以看到 PDF 存在问题,第一个表格超出了页面,第二个表格没有填满整个宽度。不幸的是,当谈到 R、Kable 和 RMarkdown 时,我是一个 n00b。有没有办法在 kable 表上设置选项,以便 PDF 在页面位置和宽度方面看起来与 HTML 一样好?谢谢!

【问题讨论】:

    标签: r-markdown


    【解决方案1】:

    LaTeX 不会为您破坏表格单元格内的长行——或者您应该为此使用自定义环境,这在编写要由 Pandoc 处理的降价时有时会非常令人沮丧。这就是为什么我想出在通过pander package 转换为降价之前打破单元格内的长线的想法。快速示例:

    > pander(data, split.cells = 30, split.table = Inf)
    
    -------------------------------------------------------------------------
     Variable                      Label                      Classification 
    ---------- --------------------------------------------- ----------------
       VAR1                        LABEL                          Type1      
    
       VAR2                       A very                          Type2      
               loooooooooooooooooooooooooooooooooooooooooooo                 
                  ooooooooooooooooooooooooooooooooooooooo                    
                        nnnnnnngggggggg label yall                           
    
       VAR3                        LAB3                           Type1      
    
       VAR4                        LAB4                           Type1      
    -------------------------------------------------------------------------
    

    或者,如果您有多个表存在相同问题,请指定一次 split 值:

    > panderOptions('table.split.table', Inf)
    > pander(data)
    
    -------------------------------------------------------------------------
     Variable                      Label                      Classification 
    ---------- --------------------------------------------- ----------------
       VAR1                        LABEL                          Type1      
    
       VAR2                       A very                          Type2      
               loooooooooooooooooooooooooooooooooooooooooooo                 
                  ooooooooooooooooooooooooooooooooooooooo                    
                        nnnnnnngggggggg label yall                           
    
       VAR3                        LAB3                           Type1      
    
       VAR4                        LAB4                           Type1      
    -------------------------------------------------------------------------
    

    简而言之,寻找table.split.table 和table.split.cells global options,尽管还有许多其他有用的调整。

    【讨论】:

    • 非常感谢您的建议。这适用于超大的表格,但是较小的表格呢,关于如何将其扩展到页面宽度的任何想法?我查看了您发送给我的链接(非常有帮助),但找不到太多关于如何扩展小表格宽度的信息。
    • @decal 这不是kable,甚至与markdown 无关。 PDF 表格由 Pandoc/pdflatex 呈现,它使用 LaTeX 模板,而 HTLM 文件也使用另一个 (CSS) 样式表。如果您想获得相似或完全相同的输出,那么您必须调整这些和call Pandoc accordingly。有关详细信息,请参阅related docs of Pandoc。我希望它有所帮助。
    猜你喜欢
    • 2016-10-11
    • 2017-06-13
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2015-09-09
    相关资源
    最近更新 更多