在具有 rmarkdown::word_document 输出格式的 Rmarkdown 文档中参数化 `reference_docx` 的路径
Parameterize path for `reference_docx` in a Rmarkdown document with `rmarkdown::word_document` output format
我正在尝试在具有 rmarkdown::word_document
输出格式的 Rmarkdown 文档中使用 reference_docx
的参数化路径,其方式类似于例如已完成 here 参考书目文件(第 参考书目和引文 YAML 选项 )。
但是,似乎此功能不适用于 reference_docx
选项,因为表达式传递给输出格式函数的参数(rmarkdown::word_document
,或 bookdown::word_document2
matter) 按字面解释而不是求值。参见例如这个最小的代表:
- 工作示例:
---
params:
ref: www/Template_doc.docx
output:
word_document:
reference_docx: www/Template_doc.docx
---
Some markdown stuff
- 等效的非工作示例:
---
params:
ref: www/Template_doc.docx
output:
word_document:
reference_docx: "`r params$ref`"
---
Some markdown stuff
此示例在尝试编织时出现以下错误:
pandoc.exe: `r params$ref`: openBinaryFile: does not exist (No such file or directory)
也就是说,它尝试使用 `r params$ref`
作为文件名,而不是评估 params$ref
我也尝试过(如 this answer 中所述):
!r params$ref
:它显然完全忽略了 !r
并认为 params$ref
是预期的文件名
!expr params$ref
:出现以下错误:
Error: object 'params' not found
Error in yaml::yaml.load(..., eval.expr = TRUE) :
Could not evaluate expression: params$ref
Calls: <Anonymous> ... parse_yaml_front_matter -> yaml_load -> <Anonymous>
Execution halted
关于如何解决这个问题有什么想法吗?非常感谢!!
显然,问题在于尝试从 yaml
header 本身内部访问 params
。如所述 here、
Finally, params
(the list of parameters provided within the knitting environment) is not available for yaml expressions.
除此之外,字段 reference_docx
可以使用与其他 yaml
header 字段相同的方式计算表达式,see e.g..
因此,我自己的(工作中的)例子,适用于此,将是:
---
params:
ref: www/Template_doc.docx
output:
word_document:
reference_docx: !expr file.path("www", "Template_doc.docx")
---
Some markdown stuff
我正在尝试在具有 rmarkdown::word_document
输出格式的 Rmarkdown 文档中使用 reference_docx
的参数化路径,其方式类似于例如已完成 here 参考书目文件(第 参考书目和引文 YAML 选项 )。
但是,似乎此功能不适用于 reference_docx
选项,因为表达式传递给输出格式函数的参数(rmarkdown::word_document
,或 bookdown::word_document2
matter) 按字面解释而不是求值。参见例如这个最小的代表:
- 工作示例:
---
params:
ref: www/Template_doc.docx
output:
word_document:
reference_docx: www/Template_doc.docx
---
Some markdown stuff
- 等效的非工作示例:
---
params:
ref: www/Template_doc.docx
output:
word_document:
reference_docx: "`r params$ref`"
---
Some markdown stuff
此示例在尝试编织时出现以下错误:
pandoc.exe: `r params$ref`: openBinaryFile: does not exist (No such file or directory)
也就是说,它尝试使用 `r params$ref`
作为文件名,而不是评估 params$ref
我也尝试过(如 this answer 中所述):
!r params$ref
:它显然完全忽略了!r
并认为params$ref
是预期的文件名!expr params$ref
:出现以下错误:
Error: object 'params' not found
Error in yaml::yaml.load(..., eval.expr = TRUE) :
Could not evaluate expression: params$ref
Calls: <Anonymous> ... parse_yaml_front_matter -> yaml_load -> <Anonymous>
Execution halted
关于如何解决这个问题有什么想法吗?非常感谢!!
显然,问题在于尝试从 yaml
header 本身内部访问 params
。如所述 here、
Finally,
params
(the list of parameters provided within the knitting environment) is not available for yaml expressions.
除此之外,字段 reference_docx
可以使用与其他 yaml
header 字段相同的方式计算表达式,see e.g..
因此,我自己的(工作中的)例子,适用于此,将是:
---
params:
ref: www/Template_doc.docx
output:
word_document:
reference_docx: !expr file.path("www", "Template_doc.docx")
---
Some markdown stuff