TeXLive 中 -output-directory 的 synctex 问题

TeXLive 中 -output-directory 的 synctex 问题

我目前正在使用 Windows 7、TeXLive2011 和 TeXworks 0.4.3。

我想将所有临时文件放在与tmp文件位于同一工作目录中的目录中.tex。但是,我希望最终.pdf文件与文件位于同一目录中.tex,而不是tmp目录中。

我做了以下事情:

pdflatex -synctex=1 -output-directory=tmp foo.tex

它将所有临时文件放在tmp目录中,但也有foo.pdf。因此,我创建了一个批处理文件来foo.pdftmp目录复制到工作目录。

:: %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.pdffoo.pdf原始工作目录,它可以正常工作,因为没有foo.pdfTeXworks 可以打开。

有没有什么办法可以解决这个问题?

答案1

您可以使用-aux_directory=tmp选项来代替-output-directory=tmp

这将使用tmp辅助文件的目录,并将 PDF 保留在源目录中,因此您无需移动它。.synctex源目录中仍会创建。在我的测试中,我能够删除它,并且仍能使功能synctex正常运行,因此可以更改脚本以删除该文件。

答案2

我总是将.synctex(或.synctex.gz) 文件与 PDF 一起复制。这是 SyncTeX 工作所需的一切,但它必须与 PDF 文件位于同一目录中。

也可以看看这个答案相关问题

相关内容