在目录中/user/
,我有一个文件header.tex
。
在文件中/user/dir/main.tex
,我使用\input{../header.tex}
。
当我pdflatex main.tex
从运行时/user/dir
,一切都正常。但如果我pdflatex dir/main.tex
从运行/user
,就会出现File ../header.tex not found
错误。
是否可以input
根据pdflatex
运行的文件进行定义(此处/user/dir/main.tex
),以便pdflatex
无论从哪个文件夹运行它都可以工作?
答案1
这个答案是根据 David Carlisle 的评论阐述的,希望对某人有所帮助。由于\input
无法以这种方式进行更改,因此基本上有两种策略:
现在让 latex 全局了解文件,最好通过添加到
header.tex
或~/texmf/tex/latex/<username>
添加到变量TEXINPUTS
。有关更多详细信息,请参阅这个答案就我而言,我希望我的文件独立于一个目录中(对于git
),因此我选择了第二个选项。编写一个脚本,进入每个目录,然后运行
pdflatex
等等。这是我使用的选项。
首先,我生成所有文件的列表tex
并将其存储在listOfTeX.txt
(从父目录运行):
find . -type f \( -iname "$.tex" \) >> listOfTeX.txt
然后,
while read FILE; do
printf "\n ----> $FILE\n"; # prints the file path and name
DIR=$(dirname "$FILE"); # extracts the directory
cd $DIR; # goes to that directory
texfot pdflatex $(basename "$FILE") | grep "error"; # run pdflatex
cd ../; # goes back to the parent directory (in my case)
done < listOfTeX.txt
该行的解释texfot pdflatex $(basename "$FILE") | grep "error";
:texfot
用于减少输出pdflatex
,请参阅egreg 的回答。然后我使用grep "error"
仅显示错误。这样可以直接找到有问题的文件和路径。当然要根据您的需要进行调整( 也一样cd ../
)。