# HG changeset patch # User zegervdv # Date 1406994255 -7200 # Node ID 016c657f0c31253d277f14b6467476c075138322 # Parent d561c94bdefd96b7574db901b4ca97fbdede43fe Supercharge mkreport script diff -r d561c94bdefd -r 016c657f0c31 bin/mkreport --- a/bin/mkreport Sat Aug 02 11:08:43 2014 +0200 +++ b/bin/mkreport Sat Aug 02 17:44:15 2014 +0200 @@ -1,11 +1,46 @@ -#!/bin/sh -# Create a new latex report from template +#!/usr/bin/env ruby + +# 2014, Zeger Van de Vannet +# +# mkreport: Create a new latex report from template + +require 'optparse' +require 'ostruct' +require 'erb' + +TEMPLATE_DIR = File.expand_path(".templates", "~") +LANGS = { + "nl" => 'dutch', + "en" => 'english' +} -if [ $1 ]; then - name=$1 +options = OpenStruct.new +# defaults +options.title = "TITLE HERE" +options.lang = "english" +options.class_opts = ["a4paper"] + +OptionParser.new do |opts| + opts.banner = "Usage: mkreport [options] [filename]" + opts.on('-t', '--title TITLE', 'Set the title') { |opt| options.title = opt } + opts.on('-l','--language LANG', 'Set the language' ) { |opt| options.lang = LANGS[opt] || options.lang } + opts.on('--toc', 'Add Table of contents') { |opt| options.toc = true } + opts.on('-v', '--verbose', 'Show more (debugging) information') { |opt| options.verbose = true } + opts.on('--titlepage', 'Set a title page') { |opt| options.class_opts << 'titlepage' } +end.parse! + +if ARGV.empty? + options.filename = 'report.tex' else - name='report.tex' -fi + options.filename = "#{ARGV.first}.tex" +end + +puts options.inspect if options.verbose -cp $HOME/.templates/report.tex $name -echo "Created $name" +template = File.read(File.expand_path('report.tex.erb', TEMPLATE_DIR)) + +File.open(options.filename, 'w') do |report| + @options = options + report.puts ERB.new(template).result() + puts "Created #{options.filename}" +end diff -r d561c94bdefd -r 016c657f0c31 templates/report.tex --- a/templates/report.tex Sat Aug 02 11:08:43 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -\documentclass[a4paper]{article} % Standaard een kolom layout -\usepackage[english]{babel} % Stel woordafbrekingen en referentienamen in -\usepackage{graphicx} % Afbeeldingen weergeven -\usepackage{float} % Figuren op plaats waar ze gedefinieerd staan: [H] -\usepackage{lmodern} % Gebruik modern lettertype -\usepackage[T1]{fontenc} -\usepackage[hidelinks]{hyperref} % Referenties aanklikbaar in PDF, geen kaders rond weergeven -\usepackage{siunitx} % SI unit symbolen -\usepackage{amsmath} % Matrices en vergelijkingen -\usepackage{subcaption} % Subfiguren - -\DeclareSIUnit\dbm{\decibel{}m} % Voeg dBm toe als eenheid - -\title{} -\author{Zeger Van de Vannet} -\date{\today} - -\begin{document} -\maketitle - -% Inhoudstafel -% \newpage -% \tableofcontents -% \newpage - -\end{document} - diff -r d561c94bdefd -r 016c657f0c31 templates/report.tex.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/report.tex.erb Sat Aug 02 17:44:15 2014 +0200 @@ -0,0 +1,29 @@ +\documentclass[<%= @options.class_opts.join(',') %>]{article} % Standaard een kolom layout +\usepackage[<%= @options.lang %>]{babel} % Stel woordafbrekingen en referentienamen in +\usepackage{graphicx} % Afbeeldingen weergeven +\usepackage{float} % Figuren op plaats waar ze gedefinieerd staan: [H] +\usepackage{lmodern} % Gebruik modern lettertype +\usepackage[T1]{fontenc} +\usepackage[hidelinks]{hyperref} % Referenties aanklikbaar in PDF, geen kaders rond weergeven +\usepackage{siunitx} % SI unit symbolen +\usepackage{amsmath} % Matrices en vergelijkingen +\usepackage{subcaption} % Subfiguren + +\DeclareSIUnit\dbm{\decibel{}m} % Voeg dBm toe als eenheid + +\title{<%= @options.title %>} +\author{Zeger Van de Vannet} +\date{\today} + +\begin{document} +\maketitle + +<% if @options.toc %> + % Inhoudstafel + \newpage + \tableofcontents + \newpage +<% end %> + +\end{document} +