LaTeX is able to produce really nice document layouts. But it is also able to
produce a lot of noise on the command line.
pplatex is a command-line tool
that parses the logs of latex and pdflatex and prints warnings and errors in an
human readable format.
pplatex will transform something like this
] \openout2 = `chapter.aux'. No file chapter.tex. ! Undefined control sequence. l.9 Something \unknown
** Warning in ./test.tex: No file chapter.tex. ** Error in ./test.tex, Line 9: Undefined control sequence Something \unknown Result: o) Errors: 1, Warnings: 1, BadBoxes: 0
The code is based on the LaTeX output parser of Kile (also used by TexMakerX), with some modifications and bugfixes. Be aware that since the log output of the LaTeX tools is not well defined (in any sense of the word), parsing is done by a heuristic that tries its best but still might fail in some cases (e.g., having very long directory names with spaces or special characters might cause issues).
In contrast to rubber, pplatex does not run your latex tools multiple times
when references change or compile your images or the like. This remains the task
of you / your makefile. The git repository however does contain SCons extensions
to compile LaTeX documents, images and lots of other stuff using SCons (see the
SConstruct file for an example).
Source packages can be found on this project's releases page on Github.
Precompiled binaries are also available for Windows and Linux:
For the Windows binaries to work, you will need to download and install the Visual C++ Redistributable for Visual Studio 2015 (x86) if you do not have it already.
In your latex project directory, just run
Use pplatex instead to run latex instead of pdflatex.
If your latex tools are not in your PATH, use
path/to/pplatex -c path/to/pdflatex -- myfile.tex
You can also use pplatex to parse an existing log file.
# run pdflatex normally pdflatex myfile.tex # Process the logfile and print warnings and errors. pplatex -i myfile.log
You will need a copy of PCRE (not PCRE2). Any version >= 7.0 should work fine.
On Ubuntu/Debian, you can get it with
sudo apt-get install libpcre3-dev
On Windows, either download the source package and build it with cmake, or download and unpack a precompiled binary package.
You can build either with SCons or CMake.
Building with SCons
If the pcre headers are not in a standard path (or if you are on Windows), create a './config.py' or './config-windows.py' (p.e. by copying if from ./build/), and set PCREPATH to your PCRE installation path.
If you are linking against a static version of PCRE on Windows (e.g., when you
did compile it yourself), then you need to uncomment the following line in
SConstruct (I have not tested this yet though!):
env.Append( CPPDEFINES=['PCRE_STATIC'] )
To compile a release version of pplatex, simply use
For a debug version, use
Building with CMake
If you are linking against a dynamic version of PCRE on Windows (e.g., when
you downloaded a precompiled package), comment out or remove this line in
Create a build directory, ideally outside of your source checkout. Run either
cmake-gui inside the build directory and pass the source directory
as option the first time you run it.
# Assuming your source directory is called 'pplatex' cd .. mkdir build cd build cmake-gui ../pplatex
On Linux, cmake without any further configuration should work fine. On Windows,
CMAKE_BUILD_TYPE is the same as your PCRE library was compiled
with (if you link statically), set
PCRE_INCLUDE_DIR to the directory
pcreposix.h, and set
PCRE_PCREPOSIX_LIBRARY to the full filename of
Generate and select nmake or Makefiles as
make (on Linux) or
nmake on Windows in the build dir. This should
pplatex.exe. You can then copy or rename it to
ppluatex.exe and copy it to your install directory. Do not forget to copy
pcre.dll and pcreposix.dll into the same directory if you linked dynamically.
Place the files from the './bin' directory into any directory you like. Make sure that that directory is in your PATH variable, or start the tools using the installation path like
If the pdflatex and latex tools are in your PATH (try running 'latex' on your commandline), you can simply use ppdflatex if you want to run pdflatex, and pplatex for latex, like
Warnings and badbox messages can be hidden like this
pplatex -q -- latexfile.tex
In order to parse an existing log file, use
pplatex -i somefile.log
To specify which latex program should be used (p.e. when latex is not in PATH), use the --cmd option, like
pplatex -c /path/to/latex.exe -- <latex options> myfile
Make sure you do not use an interaction mode where latex waits for user input on errors. pplatex uses -interaction=nonstopmode by default if no interaction mode is specified.
The binaries are actually the same, pplatex detects the tool to run based on its filename. You can also call it ppluatex to run lualatex. Note that at the moment, pplatex will default to lualatex if it is renamed to anything else. This might change in the future.
On Linux, ppluatex is a script that calls pplatex. It allows configuration of
the location of pplatex and latex/pdflatex in
~/.ppluatex.conf. Obviously, you
can also rename and use that script for pdflatex.
- Support warnings and error messages of PGF / TikZ
- Add option to SCons and CMake to choose whether to link PCRE statically or dynamically.
- Check for bugfixes in updates in Kile's parser and integrate them. Submit bugfixes in pplatex to Kile.