[Tex/LaTex] Latexmk fails on Windows when output directory is specified

biberlatexmkmiktexwindowsxetex

Latexmk does not generate the output PDF with XeLaTeX and biber when an output directory is specified.

I am using an output directory specified by -outdir called build to keep my root directory tidy.

I am running MikTeX on Windows 7 x64. Latexmk is version 4.54c.

Here is an MWE.

test.tex contains the following:

\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{publications.bib}
\begin{document}
\fullcite{InterestingArticle}
\end{document}

publications.bib contains the following:

@article{InterestingArticle,
  author    = {Andrew Bate},
  title     = {Interesting Article Title},
  journal   = {Interesting Journal},
  volume    = {999},
  year      = {1984}
}

When I run latexmk -xelatex -silent -outdir=build I get the following output, but no PDF in the build directory:

Use of uninitialized value $separator in regexp compilation at C:\Program Files\MiKTeX 2.9\scripts\latexmk\latexmk.pl line 8553.
Use of uninitialized value $separator in regexp compilation at C:\Program Files\MiKTeX 2.9\scripts\latexmk\latexmk.pl line 8554.
Use of uninitialized value $search_path_separator in concatenation (.) or string at C:\Program Files\MiKTeX 2.9\scripts\latexmk\latexmk.pl line 1882.
Use of uninitialized value $search_path_separator in concatenation (.) or string at C:\Program Files\MiKTeX 2.9\scripts\latexmk\latexmk.pl line 2173.
Use of uninitialized value $print_cmd in string at C:\Program Files\MiKTeX 2.9\scripts\latexmk\latexmk.pl line 2713.
Latexmk: Run number 1 of rule 'xelatex'
This is XeTeX, Version 3.14159265-2.6-0.99998 (MiKTeX 2.9.6500 64-bit)
entering extended mode
Latexmk: fls file doesn't appear to have been made
Latexmk: Non-existent bbl file 'build/test.bbl'
 No file test.bbl.
Latexmk: ===For rule 'xelatex', actual output 'I:/bug-report/build/test.xdv'
       ======appears not to match expected output 'build/test.xdv'
Latexmk: Summary of warnings:
  Latex failed to resolve 1 citation(s)
Latexmk: Run number 1 of rule 'biber build/test'
Latexmk: Run number 2 of rule 'xelatex'
This is XeTeX, Version 3.14159265-2.6-0.99998 (MiKTeX 2.9.6500 64-bit)
entering extended mode
Latexmk: fls file doesn't appear to have been made
Latexmk: ===For rule 'xelatex', actual output 'I:/bug-report/build/test.xdv'
       ======appears not to match expected output 'build/test.xdv'
Latexmk: Run number 1 of rule 'bibtex I:/bug-report/build/test'
For rule 'bibtex I:/bug-report/build/test', running '&run_bibtex(  )' ...
Latexmk: Directory in file name 'I:/bug-report/build/test.aux' for bibtex
   but it is not the output directory 'build'
I found no \citation commands---while reading file I:/bug-report/build/test.aux
I found no \bibdata command---while reading file I:/bug-report/build/test.aux
I found no \bibstyle command---while reading file I:/bug-report/build/test.aux
(There were 3 error messages)
Collected error summary (may duplicate other messages):
  bibtex I:/bug-report/build/test: Bibtex errors: See file 'I:/bug-report/build/test.blg'
Latexmk: Use the -f option to force complete processing,
 unless error was exceeding maximum runs of latex/pdflatex.

Removing the -silent flag makes no difference (but obviously the output is longer).

If the -outdir flag is removed, then the PDF is generated correctly (but I would like to use an output directory).

The above example works correctly running on Linux (Ubuntu 17.10) with TeX Live and with latexmk version 4.54c (the same version of latexmk I used on Windows). On Linux, it works both with and without -outdir specified.

I am not using a .latexmkrc file.

Note the 'Use of uninitialized value' warnings. These don't appear on Linux, but I do not know if this is related.

Any help to get this working is greatly appreciated.

Update 2018-01-14: The issue only occurs when the source files are located in a directory on another computer on the network (e.g., a Windows mapped network drive).

The PDF is successfully generated when the source files are in a directory on the local filesystem.

Upgrading from version 4.54c to 4.54d (released 10 January 2018) removes some of the 'Use of uninitialized value' warnings, but the PDF file is still not generated when the source files are located in a network directory. I have filed a bug with John Collins, the author of latexmk.

Best Answer

This bug is corrected in latexmk v. 4.55. So just upgrade to the latest version.