渲染下面的 R Markdown 返回一个包含两页且页码为 1 和 2 的 docx。我希望页码为 0 和 1。有没有办法以编程方式实现此目的?这没有触及渲染使用的reference_docx。
---
output: officedown::rdocx_document
---
```{r setup, include=FALSE}
library(officedown) # 0.3.0
```
# A simple header on page 1
\newpage
# A simple header on page 2
一种选择是首先渲染 R Markdown 文档,然后针对输出运行 VBScript。此方法改编自 officerWinTools 包中的代码。
将此代码块复制到 R Markdown 文档并运行它以呈现文档,然后根据需要重置页码。
```{r, eval=FALSE, include=FALSE}
set_pagenumbers_startingnumber <- function(x) {
if(Sys.info()['sysname'] != "Windows"){
stop('The this function requires Windows operating system.')
}
vbs_file <- tempfile(fileext = ".vbs")
writeLines(
c(
'Set objWord = CreateObject("Word.Application")',
'objWord.Visible = False',
'objWord.DisplayAlerts = False',
sprintf('Set doc = objWord.Documents.Open("%s")', normalizePath(x)),
'doc.Sections(1).Footers(2).PageNumbers.RestartNumberingAtSection = True',
'doc.Sections(1).Footers(2).PageNumbers.StartingNumber = 0',
'doc.Saved = False',
'doc.Save',
'doc.Close (TRUE)',
'objWord.Quit'
),
con = vbs_file,
sep = "\n",
useBytes = FALSE
)
shell(shQuote(vbs_file), "cscript", flag = "//nologo")
invisible(x)
}
rstudioapi::getSourceEditorContext()$path |>
rmarkdown::render() |>
set_pagenumbers_startingnumber()
```