我正在构建一个投影仪演示模板,我想在幻灯片的正面添加一个徽标。虽然这可以通过在演示文稿的目录中包含图像来实现,但我不希望为每个新演示文稿创建一个新目录,仅针对该图像。
有没有办法可以从包resources
文件夹中检索相关文件路径并让它在LaTeX beamer模板中引用该位置?
我尝试将图片与.tex
模板一起放在资源文件夹中,但当我尝试编织时,我收到file not found
错误。
答案 0 :(得分:3)
我设法通过一种解决方法来实现这一目标:
我使用R函数导出yaml头中资源文件夹的绝对路径:
---
output:
myPackage::myCustomFunction
resource-folder: '`r system.file("rmarkdown/templates/myPackage/resources/", package="myPackage")`'
---
在我的tex模板中,我使用:
\includegraphics[]{$resource-folder$myImage.png}
这样我可以将我的图像与tex模板一起放在资源文件夹中,而不必将它们与文档的每个新实例一起复制。
答案 1 :(得分:1)
这个问题有两个关键问题:
由于此问题需要一个软件包才能正确解决,因此我整理了一个really basic repository here,您可能希望分叉。另外,您也可以在这里下载:
devtools::install_github("mikey-harper/rmarkdown-image")
创建您自己的R Markdown输出非常有用,其原因有两个:
可以同时使用这两点,将徽标文件(存储在程序包中)直接提供给模板titlegraphic
YAML选项。这是包装中的基本功能。
beamer_custom <- function(...){
# Define filepaths
logo <- system.file(package = "template", "logo.png")
template <- system.file(package = "template", "template.tex")
# supply files to your custom format
rmarkdown::beamer_presentation(...,
template = template,
pandoc_args = rmarkdown::pandoc_variable_arg("titlegraphic", logo))
}
请注意,函数中的...
意味着我们可以为新函数提供任何参数,这些参数将直接传递给beamer_presentation
函数。
这里并不需要完全定义自己的模板,因为default template包含了许多关于Beamer的自定义选项。我仅对模板进行了一次更改,这是为了将徽标大小强制为2cm高。因此,我在第338行中添加了[height=2cm]
:
\titlegraphic{\includegraphics[height=2cm]{$titlegraphic$}}
在模板中使用它。一些附加选项已添加到输出中(theme
,colortheme
,fonttheme
),以突出显示将其他参数传递给我们的新函数仍然很容易。
---
title: "R Markdown"
date: \today
author: Michael Harper
subtitle: How to make awesome R Markdown presentation
output:
template::beamer_custom:
theme: "AnnArbor"
colortheme: "dolphin"
fonttheme: "structurebold"
---
# Text
Beautiful text
如果使“自定义”格式的概念听起来令人生畏的话,您可能想阅读R Markdown book的第17和18章!