bake_format/
bake_format.rs1use std::path::PathBuf;
4use std::process::ExitCode;
5
6use mathtex_engine::{FormatBuilder, ResourceFontLoader, TexmfResources};
7
8const PREAMBLE: &str = r"\nonstopmode\documentclass{article}\usepackage{amsmath}\usepackage{unicode-math}\setmathfont{latinmodern-math.otf}\begin{document}";
10
11fn main() -> ExitCode {
12 let mut args = std::env::args_os().skip(1);
13 let (Some(output), None) = (args.next().map(PathBuf::from), args.next()) else {
14 eprintln!("usage: bake_format <output.pkg>");
15 return ExitCode::FAILURE;
16 };
17 let texmf = match TexmfResources::discover() {
18 Ok(texmf) => texmf,
19 Err(error) => {
20 eprintln!("bake_format: {error}");
21 return ExitCode::FAILURE;
22 }
23 };
24 let fonts = ResourceFontLoader::new(&texmf);
25 let format = match FormatBuilder::new(PREAMBLE)
26 .kernel("latex.ltx")
27 .build(&texmf, &fonts)
28 {
29 Ok(format) => format,
30 Err(error) => {
31 eprintln!("bake_format: {error}");
32 return ExitCode::FAILURE;
33 }
34 };
35 if let Err(error) = std::fs::write(&output, &format) {
36 eprintln!("bake_format: cannot write {}: {error}", output.display());
37 return ExitCode::FAILURE;
38 }
39 eprintln!(
40 "bake_format: wrote {} bytes to {}",
41 format.len(),
42 output.display()
43 );
44 ExitCode::SUCCESS
45}