From e7b84f8b87da8ea1add3cda9ba3a07cf1f86e7b6 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 7 Jun 2017 02:14:31 +0200 Subject: Much more extensive pdf compiling --- gup/pdf.gup | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 4 deletions(-) (limited to 'gup/pdf.gup') diff --git a/gup/pdf.gup b/gup/pdf.gup index 3b3aa3a..96f46ca 100755 --- a/gup/pdf.gup +++ b/gup/pdf.gup @@ -1,9 +1,77 @@ #!/usr/bin/env zsh -base=(${2%.pdf}.(md|lhs)([1])) +ret=0 -gup -u ${base} preamble.tex +logged() { + printf ">>> ā€˜%sā€™ in %s\n" "$*" $(pwd) >&2 + ${@} + ret=$? + printf ">>> %d\n" $ret >&2 +} -for i ({0..1}); do - pandoc -t latex -o $1 -V "geometry=margin=2cm" -V "fontfamily=libertine" -H preamble.tex --listings --latex-engine=lualatex ${base} >&2 +typeset -a cleanupList +cleanupList=() +cleanup() { + for cmd in ${cleanupList}; do + eval $cmd + done +} +trap cleanup EXIT + +base=(${2%.pdf}.(md|lhs|tex)([1])) +metadata=(${2%.pdf}.meta.yml([1]N)) + +gup -u ${base} ${metadata} preamble.tex + +buildDir=$(pwd) + +base=${base:A} +metadata=${metadata:A} +cd ${base:h} + +input=${base} + +typeset -a extraArgs +extraArgs=(-R -V "geometry=margin=2cm" -V "fontfamily=libertine" -H ${buildDir}/preamble.tex --listings --latex-engine=lualatex --filter=pandoc-citeproc --biblatex) + + +if [[ -n ${metadata} ]]; then + input=$(mktemp) + cleanupList+=("rm -v ${input}") + + logged pandoc -f markdown -t native -s ${metadata} | head -n -1 >>${input} + logged pandoc -R -t native ${base} >>${input} + + extraArgs+=(-f native) +fi + +# logged pandoc ${extraArgs} -t latex ${base} | cat -n >&2 + +compileDir=$(mktemp -d) +cleanupList+=("cd /" "rm -rfv ${compileDir}") + +logged pandoc ${extraArgs} -t latex -o ${compileDir}/${base:t:r}.tex ${input} >&2 + +cd ${compileDir} +for f (bib); do + printf "Checking for ā€˜%sā€™\n" ${base:h}/${f} >&2 + [[ -e ${base:h}/${f} ]] || continue + logged rsync -av ${base:h}/${f} . +done + +max=5 +runs=0 +run=true +while ${run} && [[ ${runs} -lt ${max} ]]; do + output=$(mktemp) + cleanupList+=("rm -v ${output}") + logged lualatex ${base:t:r}.tex >${output}