我的项目根目录位于名为的目录中tex
。此目录包含几个用于不同章节的子目录:
$ tree
.
└── tex
├── root.tex
└── sub
├── chapter.tex
└── image.png
这些文件包含:
根目录
\documentclass[a4paper,10pt]{scrartcl}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\begin{document}
\graphicspath{{sub/}}
\input{sub/chapter.tex}
\end{document}
子/章节.tex
\includegraphics{image.png}
当我cd tex
通过构建项目时pdflatex root.tex
,一切都正常。但是,当我想通过选项从其他地方构建项目时,-output-directory
它不起作用。当我在父目录中tex
运行时pdflatex -output-directory tex root.tex
,它似乎找不到图像:
! Package pdftex.def Error: File `sub/image.png' not found.
然而man pdflatex
我读到的是:
-output-directory 目录 将输出文件写入目录而不是当前目录。首先在目录中查找输入文件,然后沿着正常搜索路径。
第二部分建议directory
也用于搜索与其相关的输入文件。sub/image.png
存在于tex
所以我不明白为什么它找不到图像。
答案1
尝试使用 包含文件\input{../tex/sub/chapter.tex}
,这样可以向上移动一个目录,然后向下移动同一个目录。这应该可以确保文件是相对于主 tex 文件而不是pdflatex
运行命令的目录来查找的,谁知道那是在哪里……
一定要包含.tex
扩展名!在我的例子中,这是一个断点,没有扩展名(通常包含文件的方式),它就无法工作。
有关此主题的更多信息,请访问输入文件夹。
PS 如果您在像 Travis 这样的持续集成服务器上工作,您可以先更改工作目录,然后文件包含即可正常工作。