texcore 0.5.0

Write latex in rust, and either compile it to pdf or output the tex code
Documentation

TexCore

This project is under the MIT License

TexCore is a library that allows a developer to write LaTeX using native Rust types. We also provide functions to compile the code using a Rust built LaTeX compiler, tectonic.

To add to your project:

[dependencies]
texcore = "0.5"

The Compile Feature

To allow this library to be able to run on Windows systems, I have made the tectonic dependency optional and only available under the compile feature. This means that the function, texcore::compile() and ElementList::compile() are hidden under this feature.

[dependencies]
texcore = { version = "0.5", features = ["compile"] }

The TexCreate Template Feature

To allow easier development with the TexCreate project, I have decided to add the texcreate-templates portion under the texcreate_template feature.

texcore = { version = "0.5", features = ["texcreate_template"] }

The Async Feature

This feature provides asynchronous options using the type, TexAsync which isn't a trait but a generic struct that requires T to implement Tex. The reason of not using a trait is that asynchronous methods in a trait isn't stable yet. Most importantly we get the following functions from the future module:

  • async_latex_string<T: Tex>(t: &T) -> impl Future<Output=String> + Send
  • Element<Any>::async_latex_string()
  • ElementList::async_latex_string()
  • ElementList::async_latex_split_string()
  • ElementList::async_write()
  • ElementList::async_split_write()

Advantages of using the asynchronous writing operations is because they are done so concurrently, and in terms of async_split_write(), the task of writing to each file is done in parallel.

texcore = { version = "0.5", features = ["async"] }

The Full Feature

To enable all features seen above , you may use the full feature.

texcore = { version = "0.5", features = ["full"] }

Read documentation here