Correct problem that in calculation of md5 checksum, an error
sometimes occurs about malformed utf8 characters. This can happen
if the environment variable PERL_UNICODE is set.
Add configuration variable $bibtex_fudge to allow to choose
whether to use the fudge that made bibtex run correctly when
an output directory (or aux directory) is specified. (A
planned future version of bibtex in TeXLive will not need
Better handling and diagnostics when names of expected and
actual names of .log disagree.
In particular, some automatic reconfiguration when .log file
is not in expected place (e.g., because $aux_dir is different to
$out_dir, but TeXLive is used, so -aux-directory option for TeX
engines isn't supported).
Fix problem of .bib files sometimes not being found by bibtex
when latexmk runs under msys and -outputdirectory is specified.
Add use of environment variable LATEXMKRCSYS to specify
system rc file.
Deal with problem that in the fls file the names of INPUT and
OUTPUT files sometimes correspond to non-existent files.
Latexmk no longer considers these as true dependencies.
This situation can happen because of a bug in the TeX engine
(e.g., lualatex in TeXLive 2017) or because the files are
temporary files created and deleted during a run (e.g., by the
(This is the third version of this fix, now without a sometimes
misleading warning message.)
Correct bug that some variables wern't defined under msys.
Compensate for problems caused by time offset between system time on
system running latexmk and file times on remote file system.
(These caused trouble for documents that both are compiled under
MiKTeX and use biber.)
Allow optional timeout in pvc mode after a period of
inactivity. (See documentation for -pvctimeout option.)
In deps_list, correct bug in identifying generated files.
Otherwise, generated files could have been identified as true
Remove insertion of name of deps file in list of targets in deps file.
Don't send to screen deps info in deps mode (unless diagnostics on).
Correct ordering of list of options given by -help.
Fix incorrect deletion of non-generated aux files.
Optimize away current directory string in $out_dir and $aux_dir.
Make latexmk compatible with future versions of Perl where
File::Glob's glob function won't exist.
Add extra value 1.5 for $bibtex_use, with corresponding option
-bibtex-cond1; this treats bbl files as conditionally precious in
cleanup operations, depending on the existence or non-exisitence
of bib files.
When running bibtex, ensure that the change in search paths is made to work
around deficiencies in bibtex is local and does not affect other
Collection of timing information now works in silent mode.
Set better default previewers for MSys.
Restore default of $analyze_input_log_always to 1.
This restores the default detection of certain constructs for dependencies
for input files in the .log file. See the comments on this variable in
latexmk.pl for details. This works around a problem caused by a change in
the behavior of lualatex in TeXLive 2017; it no longer lists all input
files in the .fls file. Note that latexmk.pl always examines the .log
file for relevant information. The variable $analyze_input_log_always
only concerns whether it looks for <...> and (...) constructs.
Add item to @file_not_found for the particular format of generic package
warning about "No file", that is produced by glossaries-extra, and
probably other packages.
Documentation improvements, especially on methods of implementing
custom dependencies for multiple kinds of index.
Document $kpsewhich_show variable.
Add a sample latexmkrc file for use with bib2gls and glossaries-extra.
(Sorry, there are still some requested/planned changes that I
haven't yet made.)
For xelatex, detection that graphics file is missing and can
be made by a custom dependency now works just it does
for other latex engines.
Optimize number of calls to kpsewhich. This often gives a
considerable savings of run time when a document includes
many graphics files that are in a texmf tree.
Fix bug that if an .aux file is deleted and latexmk is run, the
wrong number of runs of (pdf)latex is made.
Fix related problem that latexmk sometimes does too few runs
of (pdf)latex because of the incorrect detection that a file
is only read after being written.
Implement direct support for xelatex and lualatex.
Previously these programs were used by configuring the
$pdflatex so that the desired program is run instead of
pdflatex. There are now configuration variables $xelatex and
$lualatex to specify the commands used, and extra command
line options -pdfxe and -pdflua.
In the case of xelatex, considerable improvement in run time is
given for documents containing large graphics files. This is
because compilation is made first to an xdv file instead of
direct to a pdf file. Only when this file is finalized is a
single conversion to a pdf file made. (This last step can be
especially time-consuming for documents that bring in large
Work around LuaTeX line-wrapping bug.
Minor improvements in code and diagnostics.
(Fix bug introduced in initial release, as 4.52, that use of bibtex wasn't
always detected when recorder mode is on. The detection now
appears to be correct.)
Correct creation of output and aux directories to correctly handle
relative paths when -cd is used.
Add routines rdb_list_source, rdb_set_source for manipulating
dependency lists of a rule. Add these to the documentated
interface, in addition to the already documented rdb_ensure_file,
Correct documention: default value of $recorder is 1.
Fix failure to clean up correctly when root filename
contains certain special characters in it (notably '[').
[Technical issue: these characters had special meaning when
previously interpreted as metacharacters in a glob operation.]
V. 4.39 dated 10 November 2013,
with documentation update on 3 December 2013.
Automatic creation of necessary subdirectories of auxdir when
needed for writing aux files.
Add error diagnostics to if_source
Allow $print_type = 'auto', and make this the default, so that
when the -p option to latexmk is used to print the file, the
default is to determine the type of file to be printed, rather
than always requiring postscript.
Fix the failures when dealing with directories whose names
contained certain special characters in them (notably '[', ']' and
[Technical issue: these characters had special meaning when
previously interpreted as metacharacters in a glob operation.]
This gives dependency on Perl's File::Glob module, which is a
standard module in normal installations of Perl.
When an output directory is a subdirectory of a directory, ensure
that it is correctly created, if it has to be created.
Previously, the creation of the output directory when it does not
exist only worked for one level.
This gives dependency on Perl's File::Path module with v. >= 2.08,
which is a standard module in normal installations of Perl.
In output of dependencies, include pathname of target file(s) in the
In -pvc mode, writing of deps file (caused by the -M and related
options) is per make not per overall run.
Correct failure that happens when name of current directory
contains characters with special meaning in regular expression.
-rules option now works with -pvc
Add -lualatex option, like -xelatex.
File specifications in $clean_ext and $clean_full_ext are allowed
to contain wildcards.
Warning is given when rc file is a directory instead of a file.
Correct bug that if revtex4-1.cls is used, footnotes are set to
be in the bibliography, and latexmk's aux_dir or out_dir is set,
then latexmk fails to run bibtex when needed, because the
relevant bib file is not found.
Improve operation under MSWindows: substitute "\" for "/" for
directory separator in command lines, deal consistently with
directory separator, which can be both "\" and "/".
Correct some bugs that interfered with use of auxiliary directory
and output directory for files generated by (pdf)latex,
especially with MiKTeX.
Fix problems caused because in the log and fls files MiKTeX writes
absolute path for many filenames at and below current directory,
and is inconsistent in its use of "/" vs. "\" as directory
Add $dvipdf_silent_switch configuration variable.
Improve handling of errors in (pdf)latex; previously latexmk would
give up processing in some situations continuing is correct.
Implement most options allowed by latex and pdflatex.
Add -M -MP and -MF options, like gcc.
Recorder option is now on by default.
Add -latexoption=... option to latexmk.
Add -xelatex option for use of xelatex.
Change OS-X default for pdf previewer command to open.
Command specification string can start with "include routine" to
invoke a Perl subroutine instead of an external cmd.
Viewers are detached by default. (The start keyword is now normally
superfluous in command specifications.)
Keyword nostart added in command specification.
Add configuration variables $compiling_cmd, $success_cmd,
$failure_cmd. These specify external commands (if any) to be
executed during latexmk's continuous preview mode at the
following points: $compiling_cmd at the start of compilation,
$success_cmd at the end of a successful compilation, and
$failure_cmd at the end of an unsuccessful compilation. They
can be used, for example, to show the progress of compilation by
setting the titles of editor and/or previewer windows.
If aux and/or output directories are specified but don't exist,
Remove excessive repetition of tests for changes of source files
(improves performance of latexmk in some situations).
Latexmk now works with the feynmp package and mpost,
provided a suitable custom dependency is defined. (See the
example latexmkrc fragment mpost_latexmkrc in the
example_rcfiles directory in the latexmk distribution.)
If output directory is set, arrange that dvips can find files
In searching for cus-deps that can make a missing file, look in
Deal with problem that making of ps or pdf file via a temporary
file fails if the command making it has no %D placeholder
Add png to list of graphics extensions for pdflatex
Add -norc option that prevents auto reading of rc files.
Options -aux-directory -output-directory like those of (pdf)latex,
to set the output directories of (pdf)latex. (-aux-directory
is MiKTeX only). Corresponding configuration variables, and
placeholders for command specification.
Fix problem that when bibtex finds no citations, this is treated
by bibtex as an error. Previously latexmk respected this and
did not continue processing. Now if the only bibtex error is
the finding of no citations, then latexmk now treats it as
only a warning and continues processing (by latex/pdflatex) as
Get .bst file in source file list for bibtex. (So an update to
the bst file provokes a rerun of the relevant programs.)
Allow clean-up to delete destination files of custom-dependencies
Configuration variable $cleanup_includes_cusdep_generated to
configure whether this is done. (Default is off, for backward
Remove use of --width option on $pscmd on linux. It's no longer
Remove double quotes (if any) surrounding output filename read
from .log file, to avoid wrong diagnostic message.
Allow a more general pattern for files to clean up (when the -c,
or -C option is used). For details, see the explanation of
the $clean_ext variable in the latexmk documentation.
Options to set commands used for latex and pdflatex, as in
Corrects a long-standing bug that when the main file uses
bibtex, and uses \include for subdocuments and the set of included
files changes, latexmk did not update the list of source files for
bibtex. Then changes in bibliography citations did not always
trigger a rerun of bibtex.
Fixed a problem that latexmk did not detect changed aux files
and the like on a small document when the run of (pdf)latex was
within the 1-second granularity of filetimes.
Improved start-up times on some large documents by avoiding
unnecessary recalculations of md5 checksums.
V. 4.10d dated 10 September 2009.
Attempt to deal better with conversions reported by epstopdf, when
the converted file appears not to exist. (Do a kpsewhich search.)
When view files are make via a temporary file (not-yet-documented
feature), delete old view file before moving the temporary file.
(To avoid reported bug in kpdf and okular.)
V. 4.10b dated 4 September 2009.
The -silent option now causes certain non-existent-file messages
to be suppressed.
V. 4.10a dated 1 September 2009.
Corrects a problem that with an error introduced at v. 4.08 that
on finding an error in processing one file latexmk exits rather
than continuing processing other requested files. The exit code
returned by latexmk was also incorrect in this situation.
V. 4.09a dated 19 August 2009.
Small update to v. 4.09a, which should not affect anything.
V. 4.09 dated 18 August 2009.
Appropriate treatment of graphics files converted by current
version of epstopdf package. Plus minor bug fixes.
This version has not been tested thoroughly.
V. 4.08 dated 23 June 2009.
Corrects problem caused by MikTeX 2.7 writing log files containing
binary characters, including ctrl/Z. When latexmk reads the log
file to get dependency information, a ctrl/Z causes a premature
end-of-file condition. On MS-Win, latexmk now reads the log file in binary
V. 4.07 dated 27 May 2009.
Corrects problem that ctrl/C used to exit from preview-continuous
mode always killed any script used to call latexmk.
Deals better with situation that a run of (pdf)latex does not
produce the expected dvi or pdf file.
V. 4.04 dated 25 February 2009.
Corrects problems when latexmk is used to run both latex and
pdflatex on the same source file. The problems were particularly
noticeable when different choices were used on different runs.
V. 4.03 dated 22 December 2008.
Corrects issue in parsing the log file. Sometimes lines were
treated as wrapped when they shouldn't have been; this
occasionally resulted in latexmk not detecting source files.
V. 4.02b dated 1 December 2008.
Corrects issue with clean-up options -c and -C. They now delete
the database file of source file information.
V. 4.02a dated 26 November 2008.
Corrects problem with using start command under MSWin in default
commands for viewing files: MSWin took quoted filenames to mean
window title instead of filename.
V. 4.02 dated 15 November 2008.
Corrects problem with misreading of log files generated by current
MikTeX (v. 2.7) that puts double quotes around space-containing