bundledoc 与子文件夹路径冲突(MiKTeX)

bundledoc 与子文件夹路径冲突(MiKTeX)

我想在 Windows 中主要使用带有 MiKTeX 的 bundledoc。但是,我遇到了一个令人烦恼的子文件夹路径问题。我按如下方式运行该程序:

bundledoc --config=miktex.cfg paper.dep

我收到一条错误消息:

bundledoc:“ksepwhich -progname=latex %BDINPUTS%”(BDINPUTS="figure/Fig1.pdf”)未能找到 figure/Fig1.pdf

因此,程序会查找 paper.dep 文件中列出的当前文件夹中的所有软件包和文件,但在尝试查找子文件夹中的第一个文件时会失败。问题是路径应该是“ figure\Fig1.pdf”而不是figure/Fig1.pdf快照写入的“ ”。快照应该将“ \”而不是“ /”作为文件夹分隔符,还是 bundledoc 应该能够解释这一点,我不知道。

我该如何解决这个问题?

编辑:我使用 knitr 包在 R 中从 paper.Rnw 生成 paper.tex。交替使用“ /”和“ \”并不能解决问题,但从 dep 文件中删除子文件夹文件行有助于 bundledoc 完成其工作。

答案1

问题不在于斜线/反斜线。也不在于

ksepwhich -progname=latex figure/Fig1.pdf

也不

ksepwhich -progname=latex figure\Fig1.pdf

将在 miktex 上工作。

如果您想在子文件夹中查找文件,必须./在开头添加:

ksepwhich -progname=latex ./figure/Fig1.pdf
ksepwhich -progname=latex .\figure\Fig1.pdf

都会输出./figure/Fig1.pdf

本机 miktex 应用程序 findtexmf 的工作原理类似

findtexmf -alias=pdflatex ./figure/Fig1.pdf
findtexmf -alias=pdflatex .\figure\Fig1.pdf

但输出带有反斜杠的路径:.\figure\Fig1.pdf

我认为快照包无法知道哪些情况下./需要路径前的内容(如果路径前的内容无处不在,则会导致 texmf 树中的搜索中断)。bundledoc 包可能可以尝试这两种变体:首先使用快照提供的值,如果失败,则再次使用./,这样您就可以提出功能请求。

但可能最好的方法是输入子文件夹路径

\includegraphics{./figure/Fig1.pdf}

答案2

我设法通过包括来解决问题

opts_chunk$set(fig.path = "./figure/")

在论文中.Rnw.

相关内容