An open API service indexing awesome lists of open source software.

https://github.com/lunastev/late2htm

A Rust library for converting LaTeX-formatted text into HTML with minimal styling.
https://github.com/lunastev/late2htm

arxiv arxiv-latex arxiv-latex-html html latex latex-html latextohtml library parser rust rust-library

Last synced: 2 months ago
JSON representation

A Rust library for converting LaTeX-formatted text into HTML with minimal styling.

Awesome Lists containing this project

README

          

# LaTeX to HTML

**LaTeX to HTML** is a Rust library that converts LaTeX-formatted text into equivalent HTML.

This crate is designed to help developers transform LaTeX documents or fragments into structured HTML. Styling is intentionally kept minimalβ€”developers are encouraged to apply custom CSS or integrate this library into a broader styling pipeline.

---

## ✨ Features

* βœ… Lightweight LaTeX parsing and conversion to HTML
* βœ… Supports the following LaTeX commands:

* Document structure: `\section`, `\subsection`, `\subsubsection`, `\paragraph`, `\subparagraph`
* Text formatting: `\textbf`, `\textit`, `\underline`, `\emph`
* Extended commands: `\textcolor`, `\fontsize` *(planned)*
* Math mode: `$...$`, `\[...\]`, `\begin{equation}` *(planned)*
* Lists: `itemize`, `enumerate`, `description` *(planned)*
* Tables: `tabular` *(planned)*
* Figures: `figure`, `\includegraphics` *(planned)*
* References and citations: `\label`, `\ref`, `\cite`, `\footnote` *(planned)*
* Bibliography: `thebibliography`, `\bibitem` *(planned)*
* Custom macros: `\newcommand`, `\renewcommand` *(planned)*
* Fallback handler for unknown LaTeX commands: `RawLatex`

> Note: Features marked *(planned)* are on the roadmap but not yet implemented.

---

## πŸš€ Usage

```rust
use late2htm::convert_latex_to_html;

fn main() {
let latex_code = r"\\section{Hello}This is \\textbf{bold}.";
let html = convert_latex_to_html(latex_code);
println!("{}", html);
}
```

### Additional Test Example

```rust
use late2htm::convert_latex_to_html;

fn main() {
let input = r"\section{Main}\subsection{Sub}\subsubsection{SubSub}\paragraph{Para}\subparagraph{SubPara}Text \textbf{bold} and \textit{italic} and \underline{under} and \emph{emph}.";
let html = convert_latex_to_html(input);
println!("{}", html);
}
```

---

## πŸŽ–οΈ Crate Structure

* `parser` β€” Parses LaTeX code into an AST (`LatexNode` enum).
* `htmlgen` β€” Converts AST into HTML.
* `ast` β€” Defines the LaTeX abstract syntax tree (`LatexNode`).

---

## 🎯 Project Goals

* 🧠 Simple and intuitive API for converting LaTeX to HTML
* 🧩 Clean and semantic HTML output, ready for custom CSS
* πŸ”Œ Modular architecture for easy feature extension
* πŸ” Fallback support for unknown LaTeX commands (raw output)

---

## πŸ“œ License

This project is licensed under the **MPL-2.0 License**.

---

## 🀝 Contributing

Contributions, issues, and feature requests are welcome!
Feel free to fork and submit pull requests.