From 15dcadf739a63a0a06d65f6e819a66215f7eb15c Mon Sep 17 00:00:00 2001 From: southerntofu Date: Sat, 12 Sep 2020 20:07:31 +0200 Subject: [PATCH] Configurable lateX template --- src/generate.rs | 9 +++++---- src/main.rs | 12 ++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/generate.rs b/src/generate.rs index 81fed80..57332d2 100644 --- a/src/generate.rs +++ b/src/generate.rs @@ -4,19 +4,20 @@ use std::process::Command; use anyhow::{bail, Result}; use regex::Regex; -pub fn linear(content: &str, output: PathBuf, basesize: &u8, metadata: Vec<(String, String)>) -> Result { +pub fn linear(content: &str, output: PathBuf, basesize: &u8, metadata: Vec<(String, String)>, template: &Option) -> Result { let mut pandoc = pandoc::new(); pandoc.set_input(pandoc::InputKind::Pipe(content.to_string())); pandoc.set_input_format(pandoc::InputFormat::Commonmark, Vec::new()); pandoc.set_output_format(pandoc::OutputFormat::Latex, Vec::new()); pandoc.add_option(pandoc::PandocOption::PdfEngine("pdflatex".into())); - // TODO: configurable template - pandoc.set_latex_template("eisvogel"); - //pandoc.set_variable("links-as-notes", "true"); for (key, value) in metadata { pandoc.set_variable(&key, &value); } + if template.is_some() { + pandoc.set_latex_template(&template.as_ref().unwrap()); + } + let mut current_size = basesize.clone(); let mut sheets: Option = None; while current_size <= basesize + 10 { diff --git a/src/main.rs b/src/main.rs index a811fa7..84efe5e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,9 +37,13 @@ struct Cli { book: bool, #[structopt(short = "s", long = "size", default_value = "11")] - /// The smallest size + /// The smallest size to generate the PDF with size: u8, + #[structopt(short = "t", long = "template")] + /// The lateX template to use + template: Option, + } fn main() -> Result<()> { @@ -76,19 +80,19 @@ fn main() -> Result<()> { tmp.push(hasher.finish().to_string()); tmp.set_extension("pdf"); - let pages_count = generate::linear(&content, tmp.clone(), &cli.size, metadata)?; + let pages_count = generate::linear(&content, tmp.clone(), &cli.size, metadata, &cli.template)?; println!("Intermediary step: generated linear output to {:?} ({} pages)", &tmp, pages_count); generate::book(&tmp, &output)?; println!("Generated A5 booklet output to {:?}", output); }, (false, true) => { // Only linear output - let pages_count = generate::linear(&content, output.clone(), &cli.size, metadata)?; + let pages_count = generate::linear(&content, output.clone(), &cli.size, metadata, &cli.template)?; println!("Generated linear A4 output to {:?} ({} pages)", output, pages_count); }, (false, false) => { // Both outputs - let pages_count = generate::linear(&content, output.clone(), &cli.size, metadata)?; + let pages_count = generate::linear(&content, output.clone(), &cli.size, metadata, &cli.template)?; println!("Generated linear A4 output to {:?} ({} pages)", output, pages_count); let mut book_output = output.clone(); book_output.set_extension("book.pdf");