如何将资源文件提供给自定义的投影仪模板

时间:2019-02-26 13:35:25

标签: r latex r-markdown knitr r-package

首先,要创建一个可重现的示例并不容易,因为我的问题与构建提供自定义编织格式的软件包有关。希望我能阐明我的问题,并对您的想法如何最好地解决这一问题感兴趣。

问题

我正在写一个包含自定义编织格式(准确地说是格式化的投影仪幻灯片)的R包。 在这些投影机幻灯片中,我使用命令包括了一个*.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/文件夹中有多个文件。

我考虑过将这些资源复制到中间体文件夹中,以便以后将其删除。但是我不确定这是否可能甚至是理想的。

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

1 个答案:

答案 0 :(得分: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}}结尾。