FerroTeX

A high-performance, type-safe LaTeX language platform written in Rust. Industry-standard IDE features meet structured build observability and formal verification.

Rust LSP 3.17 Safe-TeX Sandbox License

Pillars of Technical Excellence

FerroTeX is built on four core aspirations that define its commitment to the research community:

⚑

Incremental Everything

Keystroke-level feedback with a sub-50ms aspiration for 500-page documents.

βͺ

Time-Travel Debugging

Reversible macro expansion. Step backward through the TeX stomach to understand state changes.

πŸ“

Formal Math Verification

Moving beyond rendering to logical soundness. Automated structural and dimensional checks for math.

πŸ›‘οΈ

Safe-TeX Sandbox

A capabilities-based security model with global VFS enforcement for sensitive research environments.


Why FerroTeX?

Modern LaTeX development deserves modern tooling. FerroTeX bridges the gap between LaTeX’s powerful typesetting and contemporary IDE experiences.

πŸ”

Smart Editing

Code completion, hover documentation, go-to-definition, find references, and intelligent rename refactoring.

πŸ“„

Integrated PDF Preview

Built-in PDF viewer with SyncTeX support. Click in the PDF to jump to source, or compile and scroll to your cursor.

πŸ”¨

Build Orchestration

Latexmk integration with real-time progress feedback, magic comment support, and intelligent build-on-save.

πŸ§ͺ

Smart Diagnostics

Real-time syntax errors, missing package detection with one-click installation, deprecated LaTeX 2.09 command warnings with quick-fix code actions, and structured log parsing.


Architecture

FerroTeX follows a thin client, thick server architecture. The Rust language server (ferrotexd) handles all analysis, while the VS Code extension provides a minimal UI layer.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        VS Code Extension                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ LSP Client  β”‚  β”‚ PDF Viewer  β”‚  β”‚  SyncTeX / Build UI     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                β”‚                      β”‚
          β–Ό                β–Ό                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      ferrotexd (Rust LSP)                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚   Parser    β”‚  β”‚    Index    β”‚  β”‚   Build Orchestrator    β”‚  β”‚
β”‚  β”‚  (rowan)    β”‚  β”‚  (symbols)  β”‚  β”‚      (latexmk)          β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Quick Start

# Clone the repository
git clone https://github.com/jxoesneon/FerroTeX.git
cd FerroTeX

# Build the language server
cargo build --release -p ferrotexd

# Install the VS Code extension
cd editors/vscode && npm install && npm run compile

Then open VS Code, press F5 to launch the Extension Development Host, and open any .tex file.


Documentation

Architecture

System design, data flow, and component responsibilities.

Specifications

LSP features, diagnostics, SyncTeX, and configuration.

Development

Local setup, testing, benchmarks, and release process.

Research

Evaluation methodology, datasets, and reproducibility.


License

FerroTeX is dual-licensed under Apache-2.0 or MIT at your option.

Made with πŸ¦€ by the FerroTeX Contributors