如何向自定义beamer模板提供资源文件

问题描述 投票:0回答:1

首先,创建可重现的示例并不容易,因为我的问题与构建提供自定义编织格式的包有关。我希望我可以清楚地解决问题,并对你的想法感兴趣如何解决这个问题。

问题

我正在写一个包含自定义knitr格式的R包(准确地说是格式化的beamer幻灯片)。在这些beamer幻灯片中,我使用命令包含一个*.sty tex文件

\input{$resource$/thefile.sty}

其中$resources$是一个pandoc变量,我通过自定义格式函数提供。这将解决

\input{/path/to/packagelibrary/package/resources/thefile.sty}

安装软件包时,从我的模板创建一个新的RMD文档并编织它,确实可以在已安装的软件包目录中找到*.sty。但是LaTeX发出了警告

创建的输出:Untitled.pdf警告消息:LaTeX警告: 你已经请求包'',但是包提供了`thefile.sty'

我知道这只是一个警告,但如果可能的话我也想消除这些。我说这些,因为最后我有多个文件位于inst/rmarkdown/templates/mytemplate/resources/文件夹中。

我想过将这些资源复制到intermediates文件夹中,以便以后删除它们。但我不确定这是否可行或甚至是可取的。

我愿意就如何解决这个问题提出任何建议。

r latex r-markdown knitr r-package
1个回答
2
投票

有办法做到这一点,但看起来有点脆弱。

正如https://tex.stackexchange.com/a/124013的回答所示,包括\usepackage{}调用中的路径基本上利用了错误检查中的失败。您在日志中看到的警告是设计使然。

这是解决这个问题的方法,可能对你有用。在调用LaTeX之前将此代码放入.tex文件中,它会在正确的位置查找您的样式文件,而不会发出警告:

\makeatletter
\def\input@path{{$resource$/}}
\makeatother
\usepackage{thefile}

thefile.sty包括

\ProvidesPackage{thefile}

(请注意,您不会在任何一处包含.sty扩展名。)

我说这有点脆弱,因为代码的其他部分可能正在玩\input@path。你可以在那里拥有多条路径,但我的TeX知识还不够深入,无法知道如何为现有路径添加额外路径。我只能说,如果你从定义{{a}}开始,你想最终定义{{$resource$/}{a}}

© www.soinside.com 2019 - 2024. All rights reserved.