【问题标题】:Make R Markdown table borders visible after kniting to .doc编织到 .doc 后使 R Markdown 表格边框可见
【发布时间】:2015-08-04 18:09:12
【问题描述】:

我有这样定义的表

```{r results='asis'}
library(Ryacas)
library(pander)
m<-rbind(c("x","x^2"),c("y","y^2"))
Apycs<-function(m){
  library(Ryacas)
  m1<-m 
  for (k in 1:nrow(m)){ for (l in 1:ncol(m)){
    m.2<-yacas(TeXForm(m[k,l]))[[2]]
    m1[k,l]<-substr(m.2,2,nchar(m.2)-2)}}
  return(m1)}
m<-Apycs(m)
pandoc.table(m, style="grid")

```

如何使分隔表格单元格的行可见(.doc 中的打印预览)
文件而不手动执行?

【问题讨论】:

  • 字体、段落的样式取决于提供的--reference-docx 样式参考,这可能也会对生成的表格产生影响——但我对此表示怀疑:@ 987654321@
  • 2012 年 pandoc 邮件列表上有一个feature request,但从未实施过。请参阅 pandoc 的release notes

标签: r r-markdown pandoc


【解决方案1】:

这将涉及两个步骤,都需要kableExtra 包,没有一个需要pander 包。保持一切不变,直到下面的代码:

pandoc.table(m, style="grid")

第一步:创建一个带有边框的 LaTeX 表格,保持 booktabs FALSE 并使用 kable_styling 形式的 kableExtra。将 LaTeX 表格转换为具有 kable_as_image 形式的图像 kableExtra 以在第二步中用于 rmarkdown 文档。然后把它编织成pdf。如kableExtra 包所示,这是在 rmarkdown Word 文档中打印高质量表格的“总比没有好”的解决方案。

```{r results='asis'}
library(kableExtra)
library(Ryacas)

m<-rbind(c("x","x^2"),c("y","y^2"))
Apycs<-function(m){
m1<-m
for (k in 1:nrow(m)){ for (l in 1:ncol(m)){
m.2<-yacas(TeXForm(m[k,l]))[[2]]
m1[k,l]<-substr(m.2,2,nchar(m.2)-2)}}
return(m1)}
m<-Apycs(m)

knitr::kable(m, "latex", booktabs = F) %>%
       column_spec(1, border_left = T) %>%
       column_spec(2, border_right = T) %>%
       kable_as_image("my_latex_table")

```

请注意,kable_as_image 是一个仅限 LaTeX 的功能,并且此功能需要您安装 magick (install.packages("magick"))。除此之外,如果您打算在 Windows 计算机上使用它,则需要安装 Ghostscript。

我们所追求的输出名为 my_latex_table.png,可以在您的工作目录所在的位置找到。

在第二步中:我们只需将 my_latex_table.png 包含在 .Rmd 文件中以编织成 .doc

![Bordered Table](my_latex_table.png)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多