首先,要创建一个可重现的示例并不容易,因为我的问题与构建提供自定义编织格式的软件包有关。希望我能阐明我的问题,并对您的想法如何最好地解决这一问题感兴趣。
问题
我正在写一个包含自定义编织格式(准确地说是格式化的投影仪幻灯片)的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/
文件夹中有多个文件。
我考虑过将这些资源复制到中间体文件夹中,以便以后将其删除。但是我不确定这是否可能甚至是理想的。
我愿意就如何解决这个问题提出任何建议。
答案 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}}
结尾。