Git Product home page Git Product logo

pplatex's Introduction

General Info

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

into this

** 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).

Download

Source packages can be found on this project's releases page on Github.

https://github.com/stefanhepp/pplatex/releases

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.

Quick Start

In your latex project directory, just run

path/to/ppdflatex myfile.tex

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

Building

Requirements

You will need a copy of PCRE (not PCRE2). Any version >= 7.0 should work fine.

http://www.pcre.org/

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

scons

For a debug version, use

scons RELEASE=debug

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 src/CMakeLists.txt

add_definitions(-DPCRE_STATIC)

Create a build directory, ideally outside of your source checkout. Run either cmake or 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, ensure that CMAKE_BUILD_TYPE is the same as your PCRE library was compiled with (if you link statically), set PCRE_INCLUDE_DIR to the directory containing pcreposix.h, and set PCRE_PCRE_LIBRARY and PCRE_PCREPOSIX_LIBRARY to the full filename of pcre.lib and pcreposix.lib, respectively. Run Configure and Generate and select nmake or Makefiles as build type.

Run make (on Linux) or nmake on Windows in the build dir. This should generate pplatex.exe. You can then copy or rename it to ppdflatex.exe or 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.

Installation

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

/path/to/pplatex/ppdflatex <options>

Usage

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

pplatex myfile.tex

or

ppdflatex myfile.tex

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.

Open Tasks

  • 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.

pplatex's People

Contributors

stefanhepp avatar neingeist avatar dunn avatar raphinesse avatar renefritze avatar maleadt avatar

Stargazers

Oromion avatar

Watchers

James Cloos avatar Oromion avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.