#!/bin/bash # A script to compile any (here defined) type of text file to a target format # Depends on: bash, basename, pdflatex # By David Penkowoj, 2021/08/02 # Function to compile .lp to .pdf files LP_TO_PDF() { lilypond "$1" --pdf -s -o "$2.pdf" && printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || printf "[ Error ] Couldn't compile %s\n" "$1" } # Function to compile .md to .pdf files MD_TO_PDF() { pandoc "$1" -o "$2.pdf" && printf "Successfully compiled %s to %s\n" "$1" "$2.pdf" || printf "[ Error ] Couldn't compile %s\n" "$1" } # Function to compile .tex to .pdf files without making a mess TEX_TO_PDF() { printf "If the script seems to hang, try pressing \n" pdflatex "$1" > /dev/null && pdflatex "$1" > /dev/null && # This is to ensure certain tex elements being drawn rm -rf "$2.toc" "$2.log" "$2.aux" && printf "Successfully compiled %s to %s\n" "$2.tex" "$2.pdf" || printf "[ Error ] Couldn't compile %s\n" "$2.tex" } # Check if file exists if [[ -e "$1" ]]; then # Determine filename and extension FILENAME="$(basename -- "$1")" EXTENSION="${FILENAME##*.}" # Check if there is a extension at all if [[ "$FILENAME" == "$EXTENSION" ]]; then printf "[ Error ] The specified file has no extension\n" exit 1 fi # Do the respective compile actions case "$EXTENSION" in "tex") TEX_TO_PDF "$1" "${FILENAME%.*}" ;; "md") MD_TO_PDF "$1" "${FILENAME%.*}" ;; "lp") LP_TO_PDF "$1" "${FILENAME%.*}" ;; "pov") povray "$1" ;; *) printf "[ Error ] There is no entry on how to handle '%s' files.\n" "$EXTENSION" exit 1 esac fi exit 0