# LaTeX-rs
[](https://travis-ci.org/Michael-F-Bryan/latex-rs)
[](https://crates.io/crates/latex)
[](https://docs.rs/latex/)
[](https://crates.io/crates/latex)
[](https://ci.appveyor.com/project/Michael-F-Bryan/latex-rs)
An ergonomic library for programatically generating LaTeX documents and reports.
This originally came from a desire to create an alternate renderer for [mdbook]
which saves to PDF. I quickly found that I needed a library for programatically
generating LaTeX documents from an AST and because there wasn't anything out
there which suited my use case, I made my own.
## Getting Started
Most of the types used to construct a `Document` have examples showing how they
can be used and roughly what they'll generate, however for a more in-depth
example check out the [complex example] in the `examples/` directory.
This is what your typical "Hello World" would look like:
```rust
use latex::{Document, DocumentClass, Element};
let mut doc = Document::new(DocumentClass::Article);
doc.push("Hello World");
```
## Features
The crate is still incomplete, but the following features are available when
generating your `LaTeX` documents:
- [x] Preamble
- [x] Sections
- [x] Paragraphs
- [x] Align environment and Equations
- [x] Lists (both numbered and not)
- [x] Table of contents, title page, and the `\clearpage` command
- [ ] Figures
- [ ] Tables
- [ ] Appendices
- [ ] Included PDF files
- [ ] `\include{...}`
- [x] `\input{...}`
- [x] Partial documents
- [ ] References and Bibliography
- [ ] labels, plus `\ref{...}` for referencing them
## Contributing
This crate is still very young so pull requests and issues are welcome! If
you there's something you want then create an [issue] and I'll try to implement
it.
[issue]: https://github.com/Michael-F-Bryan/latex-rs/issues/new
[mdbook]: https://github.com/azerupi/mdBook
[complex example]: https://github.com/Michael-F-Bryan/latex-rs/blob/master/examples/complex.rs