From 92ed41381f40c97b52b0e96f0eaeaa9025091411 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 24 Oct 2017 15:32:28 +0200 Subject: Bachelor's thesis; look up literature --- gup/pdf.gup | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'gup/pdf.gup') diff --git a/gup/pdf.gup b/gup/pdf.gup index d0ebac5..31515af 100755 --- a/gup/pdf.gup +++ b/gup/pdf.gup @@ -28,7 +28,11 @@ if [[ $beamerAspects[(i)${2:r:e}] -le $#beamerAspects ]]; then fi base=(${2:r}.(md|lhs|tex)([1])) -metadata=(${2:r}.meta.yml([1]N)) +metadata=${2:r}.meta.yml + +if ! [[ -e ${metadata} ]] && ! gup --buildable ${metadata}; then + metadata="" +fi gup -u ${base} ${metadata} preamble.tex @@ -41,9 +45,13 @@ 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) +extraArgs=(-R -V "geometry=margin=2cm" -V "fontfamily=libertine" -H ${buildDir}/preamble.tex --listings --latex-engine=lualatex --biblatex) +#extraArgs+=(--filter=pandoc-citeproc) +compileDir=$(mktemp -d) +cleanupList+=("cd /" "rm -rfv ${compileDir}") + if [[ -n ${metadata} ]]; then input=$(mktemp) cleanupList+=("rm -v ${input}") @@ -56,10 +64,19 @@ if [[ -n ${metadata} ]]; then logged pandoc -R ${class} -t native ${base} >>${input} extraArgs+=(-f native) -fi -compileDir=$(mktemp -d) -cleanupList+=("cd /" "rm -rfv ${compileDir}") + + bibFiles=$(pandoc -f markdown -t json -s ${metadata} | jq -r '.meta.bibliography.c[] | (.c[0].c)? // .c') + + gup -u ${(f)bibFiles} + + for bibFile (${(f)bibFiles}); do + targetPath=${compileDir}/$(realpath --relative-to=${base:h} -- ${base:h}/${bibFile:h}) + + [[ ! -e ${targetPath} ]] && logged mkdir -p ${targetPath} + logged cp ${bibFile} ${targetPath}/${bibFile:t} + done +fi if [[ ${base:t:r} == "presentation" ]]; then gup -u ${buildDir}/beamer-template.tex @@ -70,15 +87,10 @@ fi logged pandoc ${extraArgs} -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 # cat -n ${base:t:r}.tex >&2 -max=5 +max=10 runs=0 run=true while ${run} && [[ ${runs} -lt ${max} ]]; do -- cgit v1.2.3