[Tex/LaTex] synctex problem with -output-directory in TeXLive

forward-inverse-searchtexlivetexworks

I am currently using Windows 7, TeXLive2011, and TeXworks 0.4.3.

I want to put all temporary files in tmp directory located in the same working directory as the .tex file. But, I want the final .pdf file in the same directory as the .tex file, not in tmp directory.

I did the following:

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

It put all temporary files in tmp directory, but also foo.pdf. So, I created a batch file to copy foo.pdf from tmpdirectory to the working directory.

:: %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

But I have to open foo.pdf in tmp to make the forward/inverse search work in TeXworks. This works good enough to me, except one thing.

After executing the above batch file, TeXworks opens two windows: one for foo.tex, one for tmp\foo.pdf. Inverse search from tmp\foo.pdf to foo.tex works good, but if I do Ctrl+click in foo.tex, it opens foo.pdf, but synchronizes with tmp\foo.pdf. Of course, foo.tex does not synchronize with foo.pdf, because sync file is written for tmp\foo.pdf.

If I do not copy tmp\foo.pdf to foo.pdf in the original working directory, it works well, because there is no foo.pdf that TeXworks can open.

Would there be any workaround for this?

Best Answer

You could use the -aux_directory=tmp option instead of -output-directory=tmp.

This will use the tmp directory for the auxillary files, and leave your PDF in the source directory so you don't need to move it. There is still the .synctex that gets created in the source directory. In my tests, I was able to remove that and still get the synctex features to work so could change your script to delete that file too.