![bundledoc 与子文件夹路径冲突(MiKTeX)](https://linux22.com/image/309397/bundledoc%20%E4%B8%8E%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E8%B7%AF%E5%BE%84%E5%86%B2%E7%AA%81%EF%BC%88MiKTeX%EF%BC%89.png)
我想在 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.