如何向自定义 beamer 模板提供资源文件
How to provide resource files to a custom beamer template
首先,创建一个可重现的示例并不容易,因为我的问题与构建提供自定义 knitr 格式的包有关。我希望我能把我的问题说清楚,并且对你如何最好地解决这个问题的想法很感兴趣。
问题
我正在编写一个包含自定义 knitr 格式的 R 包(准确地说是格式化的 beamer 幻灯片)。
在这些 beamer 幻灯片中,我使用命令
包含了一个 *.sty
tex 文件
\input{$resource$/thefile.sty}
其中 $resources$
是我通过自定义格式函数提供的 pandoc 变量。这将解析为
\input{/path/to/packagelibrary/package/resources/thefile.sty}
安装包时,从我的模板创建一个新的 RMD 文档并编织它,*.sty
确实在安装包目录中找到。但是 LaTeX 抛出警告
Output created: Untitled.pdf Warning message: LaTeX Warning(s):
You have requested package `', but the package provides `thefile.sty'
我知道这只是一个警告,但如果可能的话我也想消除这些。我说 这些,因为最后我有多个文件位于 inst/rmarkdown/templates/mytemplate/resources/
文件夹中。
我考虑过将这些资源复制到 intermediates 文件夹中,以便之后删除它们。但我不确定这是否可能,甚至是可取的。
我愿意就如何解决这个问题提出任何建议。
有一种方法可以做到,但它看起来有点脆弱。
正如这个答案 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}}
.
结束
首先,创建一个可重现的示例并不容易,因为我的问题与构建提供自定义 knitr 格式的包有关。我希望我能把我的问题说清楚,并且对你如何最好地解决这个问题的想法很感兴趣。
问题
我正在编写一个包含自定义 knitr 格式的 R 包(准确地说是格式化的 beamer 幻灯片)。 在这些 beamer 幻灯片中,我使用命令
包含了一个*.sty
tex 文件
\input{$resource$/thefile.sty}
其中 $resources$
是我通过自定义格式函数提供的 pandoc 变量。这将解析为
\input{/path/to/packagelibrary/package/resources/thefile.sty}
安装包时,从我的模板创建一个新的 RMD 文档并编织它,*.sty
确实在安装包目录中找到。但是 LaTeX 抛出警告
Output created: Untitled.pdf Warning message: LaTeX Warning(s):
You have requested package `', but the package provides `thefile.sty'
我知道这只是一个警告,但如果可能的话我也想消除这些。我说 这些,因为最后我有多个文件位于 inst/rmarkdown/templates/mytemplate/resources/
文件夹中。
我考虑过将这些资源复制到 intermediates 文件夹中,以便之后删除它们。但我不确定这是否可能,甚至是可取的。
我愿意就如何解决这个问题提出任何建议。
有一种方法可以做到,但它看起来有点脆弱。
正如这个答案 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}}
.