我正在创建一个R包“ mytemplate”,其中包含rmarkdown::pdf_document
派生的RMarkdown格式(作为R脚本函数,以报告为输出,它调用header.tex文件):
report <- function() {
## location of resource files in the package
header <- system.file("resources/header.tex", package = "mytemplate")
## derives the style from default PDF template
rmarkdown::pdf_document(
latex_engine = "xelatex", fig_caption = FALSE,
includes = rmarkdown::includes(in_header = header)
)
}
在header.tex中,我使用了system.file()
检测到的图像文件,该文件位于inst /软件包目录的resources /文件夹中:
\usepackage{fancyhdr}
\thispagestyle{fancy}
\fancyhead[LC]{
\includegraphics{`r system.file("resources/cover.png", package = "mytemplate")`}
}
在我的软件包之外,并在.Rmd文件中提供完整的YAML部分,pdf呈现为OK:
---
title: ""
output:
pdf_document:
latex_engine: xelatex
fig_caption: false
header-includes:
\usepackage{fancyhdr}
\thispagestyle{fancy}
\fancyhead[LC]{
\includegraphics{`r system.file("resources/cover.png", package = "mytemplate")`}
}
---
text
但是在安装后,当我使用mytemplate::report
作为RMarkdown输出时,返回了错误:
! LaTeX错误:文件“ r system.file(“ resources / cover.png”,程序包=“ mytemp 找不到”)。
是在导致错误的R脚本中调用header.tex,还是应该修改header.tex代码以及如何修改?
答案 0 :(得分:2)
您正在tex文档中使用内联R块。那行不通。
相反,请使用pandoc_args
的参数pdf_document()
将变量传递给pandoc。然后,您可以在header.tex
内部使用pandoc变量:
args <- pandoc_variable_arg("cover", system.file("resources/cover.png", package = "mytemplate"))
report <- function() {
## location of resource files in the package
header <- system.file("resources/header.tex", package = "mytemplate")
## derives the style from default PDF template
rmarkdown::pdf_document(
latex_engine = "xelatex", fig_caption = FALSE,
includes = rmarkdown::includes(in_header = header),
pandoc_args = args # pass to pandoc
)
}
还有header.tex
:
\usepackage{fancyhdr}
\thispagestyle{fancy}
\fancyhead[LC]{
\includegraphics{$cover$}
}