使用R,如何创建包含具有合并单元格的表的.RTF文件?

时间:2018-02-11 11:27:50

标签: r markdown r-markdown rtf

我需要使用" complexe"创建一个rtf文件。 table inside(实际上我只需要水平合并单元格)。

我尝试了{RTF}包,但是addTable函数接受了一个data.frame或table对象,没有像colspan这样的参数..

我尝试使用带有rtf_document输出的Rmarkdown,但Rmarkdown不支持合并单元格(kableExtra,创建一个html对象来执行此操作)

我知道如何使用此类表创建docx(使用{officer}{flextable})所以也许这可能是转换.docx文件的好方法进入.RTF ..任何想法如何做到这一点? (或者乳胶 - > RTF?)

此致

1 个答案:

答案 0 :(得分:0)

pandoc不支持跨越表格的多个列或行的单元格(请参阅herethis thread)。

rtf包中,有一个内部函数rtf:::.add.merged.table.row()。它为水平合并的行生成rtf代码。但也许你想写自己的功能。

下面是一行表的rtf代码示例:

{\rtf1\ansi\deff0
\trowd
\cellx1000
\cellx2000
\cellx3000
\intbl cell 1\cell
\intbl cell 2\cell
\intbl cell 3\cell
\row
}

您可以将这些行保存到rtfdoc文件,以查看呈现的表格。

rtf spec之后,使用\clmgf\clmrg定义了水平合并的单元格。这是同一个表,第二行合并了前两个单元格:

{\rtf1\ansi\deff0
\trowd
\cellx1000
\cellx2000
\cellx3000
\intbl cell 1\cell
\intbl cell 2\cell
\intbl cell 3\cell
\row
\trowd
\clmgf\cellx1000
\clmrg\cellx2000
\cellx3000
\intbl cell 1\cell
\cell
\intbl cell 3\cell
\row
} 

然而,制作原生rtf是一项艰巨的任务。

因此,我认为您最好的选择是(按照您的建议)生成docxlatex文件并将其后处理到rtf。有一个latex2rtf库,但它附带了一个很好的免责声明:

  

事实上,不要指望任何LaTeX文件可以按照您的意愿进行转换,不要指望它在没有错误或警告的情况下进行转换,并且在根本不进行转换时也不会特别惊讶。众所周知,LaTeX2RTF存在许多错误和许多缺失的功能。矛盾的是,这个数字似乎每天都在增长。但是,我们可以明确说明LaTeX2RTF有一些特殊情况可以令人满意地将LaTeX文件转换为RTF