我有一个包,可以将 data.frames 保存为 Word 文件中的格式化表格,但我在使用除默认的 Word 模板之外的任何内容时遇到问题。在我的函数中,我使用如下方式调用
rmarkdown::render
:
rmarkdown::render(system.file("rmarkdown/templates/savemytable/skeleton/skeleton.Rmd",
package="mypackage")
quiet = TRUE)
这是调用的 sculpture.Rmd 文件的 YAML 标头:
---
date: "Compiled on `r format(Sys.time(), '%B %d, %Y')`"
output: word_document
---
我想在我的包中包含一个模板 Word 文件,以便人们可以横向保存它,因此我在
inst
文件夹中保存了一个模板 Word 文件,其路径如下:
inst/Word/landscape_report_template.dotx
如果我运行这个:
system.file("Word/landscape_report_template.dotx",
package="mypackage")
这让我获得了 Landscape_report_template.dotx 的文件路径,所以看起来这部分工作正常。但是,我不知道如何调整 YAML 标头的输出部分以获取除硬编码文件路径之外的任何内容。这有效:
output:
word_document:
reference_docx: "C:/Users/myname/mypackage/inst/Word/landscape_report_template.dotx"
但这显然对其他用户不起作用。我尝试了以下方法,结果都是
"Error: pandoc document conversion failed with error 99".
output:
word_document:
reference_docx: !r system.file("Word/landscape_report_template.dotx",
package="mypackage")
output:
word_document:
reference_docx: "`r system.file("Word/landscape_report_template.dotx",
package="mypackage")`"
以及插入“或`的位置的一些其他变体,以尝试获得我想要的内容。如何动态指定reference_docx文件的路径?
据我所知,这个过程需要的是word文档,而不是word模板。请尝试使用word文档(docx)而不是word模板(dotx)作为参考文档。
output:
word_document:
reference_docx: "C:/Users/myname/mypackage/inst/Word/landscape_report_template.docx"
应该适合你的情况。
但是有两个要求:
(A) 您必须仅通过 pandoc 生成此文档。这意味着您必须首先将一些虚拟内容放入一个 RMarkdown 文档中,然后将其呈现为 Word 文档。该文档可以作为您的reference_docx。
(B) 您必须使用 Microsoft Word 中的内置样式。在上述步骤中渲染文档后,您可以更改渲染文档中的内置样式(例如,标题 1、标题 2 等)。
如果您仍然遇到任何问题,请提出新问题。