微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flextable 似乎与 multicol LaTex 包不兼容

如何解决Flextable 似乎与 multicol LaTex 包不兼容

运行以下rmardown代码

```{r echo=FALSE}
secondc <- c("X.*","X",NA,NA)
thrirdc <- c("Y","Y",'Y',NA)

tabela <- data.frame(firstc,secondc,thrirdc)
ft <- flextable(tabela)
ft <- access(ft)
ft <- hline_top(ft)

ft <- fit_to_width(ft,max_width = 2.2)
ft <- align(ft,i = 4,j=2:ncol(tabela),align = "center")
ft <- set_table_properties(ft,layout = "autofit",width = 1)
```

\begin{enumerate}
\item My first line.
\begin{multicols}{2}
\begin{enumerate}
\item `r ft`
\item `r ft`
\item `r ft`
\item `r ft`
\end{enumerate}
\end{multicols}
\end{enumerate}

我收到以下错误

输出文件:flextable.knit.md

!包 longtable 错误:longtable 不是 1 列模式。

错误:LaTeX 无法编译 flextable.tex。有关调试提示,请参阅 https://yihui.org/tinytex/r/#debugging。有关更多信息,请参阅 flextable.log。 执行停止

解决方法

当输出是 PDF 文档时,

Flextable 似乎有几个弱点。我现在正在回答的问题就是这些弱点之一的一个例子。

解决这些先天性 Flextable 弱点的一个想法是始终使用 HTML 作为输出,然后使用 Pagedown 包将表格转换为 PDF,随后将表格作为图像插入到文档中。

由于 Pagedown 包生成的 PDF 是基于矢量的,因此不会丢失任何图形质量。

以下是如何将 Flextable 创建的表格转换为高质量 PDF 的示例。最后3行代码可以封装在一个Flextable包的函数中(类似quick_pdf包的Huxtable函数)。

遗憾的是,Flextable 对 PDF 的作用如此有限,同时又具有极好的语法!

library(flextable)
library(pagedown)

m <- rbind(
  c("A","B","C"),c("D","E","F")
)

dados <- as.data.frame(m)

ft <- flextable(dados)
ft <- theme_box(ft)

save_as_html(ft,path = "/tmp/lixo.html")
chrome_print("/tmp/lixo.html","/tmp/lixo.pdf")

system("cd /tmp; pdfcrop lixo.pdf")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。