Crate mathjax

source ·
Expand description

Render MathJax expressions into either SVG or PNG formats.

Crate Feature Flags

  • node - Enables the NodeJs backend, this will attempt to use a system installation of NodeJs at runtime as the renderer. This will be priotized over any other features if enabled.
  • browser - Enables the headless_chrome backend, this will create a headless Chrome instance to use as the renderer. If this is enabled in conjunction with the node feature flag, this will be used as a fall back when NodeJs is not available.
  • auto - This is equivelent to enabling all backends (currently just node and browser) see MathJax::new for what this specifically does.
  • image - Allows converting the rendered SVG into an image::DynamicImage via Render::into_image.

By default, the auto crate feature is enabled.

Usage

  1. Create an instance of MathJax through MathJax::new.
  2. Call MathJax::render with the expression you want to render.
  3. Call one of the conversion methods on Render to get the desired output format.

For example, if we wanted to render the expression y=\frac{1}{x} into the file test.svg:

use mathjax::MathJax;

let expression = r#"y=\frac{1}{x}"#;
let renderer = MathJax::new().unwrap();
let result = renderer.render(expression).unwrap();
let svg_string = result.into_raw(); // This is a `<svg></svg>` element.
std::fs::write("test.svg", svg_string).unwrap();

Which produces the following image:

If we had the image feature flag enabled, we could do the following to convert into an image::DynamicImage and save it into the file test.png:

use mathjax::MathJax;

let expression = r#"y=\frac{1}{x}"#;
let renderer = MathJax::new().unwrap();
let result = renderer.render(expression).unwrap();
let image = result.into_image(10.0).unwrap(); // This is an image::DynamicImage.
image.save("test.png").unwrap();

(see Render::into_image for what 10.0 means here)
Producing:

Structs

Enums

  • An error during the initialization of the renderer backend.
  • An error during a render.