我目前正在使用 Windows 7、TeXLive2011 和 TeXworks 0.4.3。
我想将所有临时文件放在与tmp
文件位于同一工作目录中的目录中.tex
。但是,我希望最终.pdf
文件与文件位于同一目录中.tex
,而不是tmp
目录中。
我做了以下事情:
pdflatex -synctex=1 -output-directory=tmp foo.tex
它将所有临时文件放在tmp
目录中,但也有foo.pdf
。因此,我创建了一个批处理文件来foo.pdf
从tmp
目录复制到工作目录。
:: %1 = tex file basename (without extension)
:: %2 = working directory
:: remove quotes in the basename tossed by TeXworks
for /f "useback tokens=*" %%a in ('%1') do set basename=%%~a
:: remove spaces in the basename tossed by TeXworks
set basename=%basename: =%
:: change / to \ in the directory name tossed by TeXworks
set dirname=%2
set dirname=%dirname:/=\%
:: create tmp directory if not exist
IF NOT EXIST %dirname%\tmp mkdir %dirname%\tmp
pdflatex -synctex=1 -output-directory=tmp %basename%.tex
:: open pdf in tmp so that synctex works in TeXworks
texworks %dirname%\tmp\%basename%.pdf
copy %dirname%\tmp\%basename%.pdf %dirname%\%basename%.pdf
但我必须打开foo.pdf
才能tmp
在 TeXworks 中进行正向/反向搜索。除了一件事,这对我来说已经足够好了。
执行上述批处理文件后,TeXworks 打开两个窗口:一个用于foo.tex
,一个用于tmp\foo.pdf
。从 到 的反向搜索tmp\foo.pdf
工作foo.tex
正常,但如果我Ctrl+click
在 中执行foo.tex
,它会打开foo.pdf
,但与 同步tmp\foo.pdf
。当然,foo.tex
不会与 同步foo.pdf
,因为同步文件是为 编写的tmp\foo.pdf
。
如果我没有复制tmp\foo.pdf
到foo.pdf
原始工作目录,它可以正常工作,因为没有foo.pdf
TeXworks 可以打开。
有没有什么办法可以解决这个问题?
答案1
您可以使用-aux_directory=tmp
选项来代替-output-directory=tmp
。
这将使用tmp
辅助文件的目录,并将 PDF 保留在源目录中,因此您无需移动它。.synctex
源目录中仍会创建。在我的测试中,我能够删除它,并且仍能使功能synctex
正常运行,因此可以更改脚本以删除该文件。