Skip to main content

A Python module to speed up TeX compilation.

Project description

tex-fast-recompile

A Python module to speed up TeX compilation.

This is similar to mylatexformat TeX package that it works by "speed up" some "preamble", but unlike using "precompiled preamble" i.e. custom TeX format, this package works with every package including package that executes some Lua code, or load OpenType font.

Installation

It can be installed from PyPI or GitHub:

You also need to install the helper TeX package fastrecompile.sty, which can be found in the tex/ directory. Refer to https://tex.stackexchange.com/q/1137/250119 for installation instruction.

(currently the TeX package is not available on CTAN)

Usage

If installed properly, an executable tex_fast_recompile should be available on your command-line.

Run tex_fast_recompile --help to view the available options.

For example you can use it as follows:

tex_fast_recompile pdflatex a.tex

to compile a.tex to a.pdf and automatically watch it on changes.

Before that, you need to modify your TeX file as follows:

\documentclass{article}
\usepackage{fastrecompile}  % add the package here
% other preamble lines...
\begin{document}

% put the line below where the preamble ends:
\fastrecompileendpreamble

...

\end{document}

Limitations

  • \fastrecompileendpreamble must appear exactly once in the main file.
  • There must be nothing else on the line that contains \fastrecompileendpreamble.
  • SyncTeX features of the text part in the "preamble" may not be correct. (if you're not sure what this mean, you should be safe. But see the "Extra note" section below)
  • The preamble must not be changed. Furthermore, any file \input in the preamble must not be changed. (obviously)
  • You must not read from the terminal anywhere in the preamble, such as with functions \read -1 to ... or \ior_get_term:nN .... (if you're not sure what this mean, you should be safe)

Extra note

If you want to read the log file, refer to the help of --copy-log option.

It's possible to print out some content in the "preamble" part, but if you do so...

\documentclass{article}
\usepackage{fastrecompile}  % add the package here
% other preamble lines...
\begin{document}

123
\clearpage
\fastrecompileendpreamble
456

\end{document}

you must also use the --copy-output option if you want to view the resulting PDF.

How does it work?

The principle is very simple. Notice that while the user want fast refresh, the file does not change very frequently.

As such, we start the compiler before the file has changed to process the "preamble", then when the file changed we continue processing the rest of the file.

A graph for illustration:

Before:

(each * represents a file change, |--.--| represents a compilation where the . marks where the preamble processing is done)

+----------------------------------------------------> Time
     *          *                *           *
     |--.--|    |--.--|          |--.--|     |--.--|

After:

+----------------------------------------------------> Time
     *          *                *           *
     |--.--|--. --|--.           --|--.      --|

It can be easily seen that after the change, it only takes 2 instead of 5 time unit from when the file is saved to when the change is reflected in the PDF.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tex-fast-recompile-0.1.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

tex_fast_recompile-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file tex-fast-recompile-0.1.0.tar.gz.

File metadata

  • Download URL: tex-fast-recompile-0.1.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for tex-fast-recompile-0.1.0.tar.gz
Algorithm Hash digest
SHA256 86d121619ac3703e42aad090e0a3c8c8f1b9689a293e9666882831eb03267646
MD5 79bf54448b0f5a54e8e4948152975257
BLAKE2b-256 884b789a3e0355403fddbb65bf3c2355e9f9d1feb8f2bd0ae60620315c3dfcbd

See more details on using hashes here.

File details

Details for the file tex_fast_recompile-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tex_fast_recompile-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 988de152f4c2a172616f6aced02156c79a6bb8ab9c93a9d2fb4fd5d7d6395c86
MD5 cffd4f6bc4f25e38a757e3f4851499a7
BLAKE2b-256 37e9900bd5d4abfef87ebb0189c9a58aed663950b31a95045d4ec1493b1cad0c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page