tex-fmt

Crates.iotex-fmt
lib.rstex-fmt
version0.2.2
sourcesrc
created_at2024-04-27 18:47:11.770883
updated_at2024-06-15 11:05:20.142888
descriptionLaTeX formatter written in Rust
homepage
repositoryhttps://github.com/WGUNDERWOOD/tex-fmt
max_upload_size
id1222809
size44,102
William Underwood (WGUNDERWOOD)

documentation

README

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.

Commit count: 207

cargo fmt