【问题标题】:Flextable seems to be incompatible with multicol LaTex packageFlextable 似乎与 multicol LaTex 包不兼容
【发布时间】:2021-09-07 07:05:22
【问题描述】:

当运行以下 rmardown 代码时

```{r echo=FALSE}
secondc <- c("X.*","X",NA,"X",NA,NA)
thrirdc <- c("Y","Y",NA,"X",'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 并在 multicol 环境中使用该 pdf。

标签: flextable


【解决方案1】:

Flextable 在输出为 PDF 文档时似乎有几个弱点。我现在要回答的问题就是其中一个弱点的一个例子。

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

由于Pagedown包生成的PDF是基于矢量的,所以不会损失图形质量。

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

很遗憾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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2012-04-20
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多