[英]Dynamic header/footer in R-Markdown knit to word?
我正在使用 RMarkdown 腳本生成大量報告。 我想使用參數(例如 client_name)向 word 文檔 output 添加自定義頁眉/頁腳。 當我從一個單獨的腳本渲染 RMarkdown 時,它循環遍歷客戶端列表並更改數據。 我也希望 header 也能更新。
我已經嘗試了這個問題的答案,但沒有成功,並且使用了word參考文檔來設置header。但是根據參考文檔,我只能設置參數更改時不會更新的static header。
Header 應顯示:
史蒂夫
2021 年 8 月 6 日
第 X 頁,共 3 頁
隨着“史蒂夫”在循環時更新為不同的名字。
這是我的 YAML 中的內容:
---
title: "test doc"
author:
- Author 1
- Author 2
date: "`r format(Sys.time(), '%B %d, %Y')`"
output:
word_document:
reference_docx: test1.docx
params:
client: "Steve"
header-includes:
- \usepackage{fancyhdr}
- \usepackage{lipsum}
- \pagestyle{fancy}
- \fancyhead[LE,L0]{"params$client <br> `r format(Sys.time(), '%B %d, %Y')` <br> Page \thepage of 3"}
always_allow_html: true
---
我已經分兩步實現了:
{officer}
庫將您的虛擬 header 替換為您想要的那個。 示例代碼(也替換了一個虛擬頁腳): library(magrittr)
library(officer)
rmarkdown::render("mytest.Rmd", output_format = "word_document",
output_file = "mytest.docx")
read_docx("mytest.docx") %>%
headers_replace_all_text("mydummyheader", "myrealheader") %>%
footers_replace_all_text("mydummyfooter", "myrealfooter") %>%
print(target = "mytest_updated.docx")
使用名為ClientName的自定義文檔屬性。 在文檔的 Header 中,有一個字段{ DocProperty ClientName}
。
使用您的代碼更改文檔屬性。
請參閱 Word MVP Astrid Zeeland如何使用單個 VBA 過程來讀取或寫入自定義和內置文檔屬性。 這給了 vba 來處理這個問題。
抱歉,我對 R-Markdown 一無所知,但希望您需要 vba 來更改 Word 文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.