4 releases

0.2.2 Jun 15, 2024
0.2.1 Jun 7, 2024
0.2.0 May 25, 2024
0.1.0 Apr 27, 2024

#33 in Value formatting

Download history 181/week @ 2024-04-27 3/week @ 2024-05-04 181/week @ 2024-05-25 141/week @ 2024-06-01 26/week @ 2024-06-08 119/week @ 2024-06-15 3/week @ 2024-06-22

283 downloads per month

MIT license

32KB
928 lines

tex-fmt

CI crates.io license: MIT

An extremely fast LaTeX formatter written in Rust.

Input Output
\documentclass{article}

\begin{document}

\begin{itemize}
\item Lists with items
over multiple lines
\end{itemize}

\begin{equation}
E = m c^2
\end{equation}

\end{document}
\documentclass{article}

\begin{document}

\begin{itemize}
  \item Lists with items
    over multiple lines
\end{itemize}

\begin{equation}
  E = m c^2
\end{equation}

\end{document}
  • ⚡ Extremely fast run-time performance
  • 🔧 No configuration necessary
  • 📟 Command-line interface
  • 📜 Handles LaTeX file types .tex, .bib, .cls, and .sty
  • 🦀 Written entirely in safe Rust

Installation

Cargo

# install stable release
cargo install tex-fmt

# install from github
cargo install --git "https://github.com/wgunderwood/tex-fmt"

Nix

nix build "github:wgunderwood/tex-fmt"

Performance

When formatting all of the test cases, tex-fmt is hundreds of times faster than latexindent.

Files Lines Size tex-fmt latexindent latexindent -m
47 93k 3.5M 0.186s 96.0s [x516] 124.3s [x667]

Limitations

  • Semantic parsing of LaTeX code not conducted
  • No linting or correction of syntax errors
  • Customization via configuration files not supported
  • Compliance with existing formatting guidelines not guaranteed
  • Editor integration not currently provided
  • No spelling or grammar checking

Existing tools

  • latexindent. Perl script, many configuration options, slow on large files.

  • LaTeXTidy. Perl script, download links seem to be broken.

  • latex-pretty. Browser-based, uses latexindent as the backend.

  • latexformat.com. Browser-based.

  • texpretty. C program which works sometimes and appears to be fast. Fails with certain keywords inside brackets.

  • latex-editor. Browser-based.

  • LaTeXFmt. Vim plugin, does not apply indentation.

  • latex-formatter. Visual Studio plugin, uses latexindent as the backend.

Dependencies

~3.5–5.5MB
~96K SLoC