This library is to be a way to create Latex documents with Rust. This library will be used as the backend for texcreate, and can be used for any desires of your own as well.
Version 0.2 introduces
- Environments
- Lists
- Userdefined code
- Fixes to write which now uses loop_through
- Async and Split write options
- Uses loop_through_parallel
for async
- Uses loop_through
for split
- Class options
```rust use std::path::Path; use texrs::*; fn main() { let mut latex = Latex::new(); latex.setclass(Class::Book); latex.setclassoptions(11, "letterpaper"); latex.setmetadata(Metadata::new("A title", "An author", "What day is it?")); latex.addpackage("dramatist".tostring()); latex.addpackage("listings".to_string());
let mut part = Part::new("Part 1");
let mut chapter = Chapter::new("Chapter 1");
let mut section = Section::new("Section 1");
let mut text = Text::new("Some text", TextType::Underline);
section.attach(Element::from(text)).unwrap();
chapter.attach(Element::from(section)).unwrap();
part.attach(Element::from(chapter)).unwrap();
latex.set_elements(&vec![Element::from(part)]);
latex.write(Path::new("test.tex").to_path_buf()).unwrap();
} ```
```rust use std::path::Path; use tex_rs::*;
async fn main(){ let mut latex = Latex::new(); latex.setclass(Class::Article); latex.setmetadata(Metadata::default()); latex.addpackage("listings".tostring());
let mut equation = Environment::new("equation");
environment.attach_string("a^2 + b^2 = c^2");
/*
Let say you wanted some really long code and don't want
to do all of the attaching
*/
let cmd: &str = r#"\begin{equation*}
\begin{split}
k &= 90l + u78\\
% random math
&= 989696
\end{split}
\end{equation*}
"#;
let ud = UserDefined::new(cmd, Level::Body);
let mut section = Section::new("The Pythagorean Theorem");
section.attach(Element::from(equation));
latex.attach(Element::from(ud));
latex.set_elements(&vec![Element::from(section)]);
latex.async_write(Path::new("async_doc.tex").to_path_buf()).await.unwrap();
// If you want a split write like in texcreate
// latex.split_write(
// Path::new("main.tex").to_path_buf(),
// Path::new("structure.tex").to_path_buf(),
// ).await.unwrap()
} ```