diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/exframe/exfsermk.sh')
-rw-r--r-- | Master/texmf-dist/doc/latex/exframe/exfsermk.sh | 90 |
1 files changed, 46 insertions, 44 deletions
diff --git a/Master/texmf-dist/doc/latex/exframe/exfsermk.sh b/Master/texmf-dist/doc/latex/exframe/exfsermk.sh index 1003fa32522..a92683034a8 100644 --- a/Master/texmf-dist/doc/latex/exframe/exfsermk.sh +++ b/Master/texmf-dist/doc/latex/exframe/exfsermk.sh @@ -1,11 +1,17 @@ #!/bin/bash +srcmain="exfserm" +srcsec="exfser" +trglist=(Problems Solutions) +trgsol=(n y) +secnum="01 02 03 aa" + if [ -z $1 ] then echo "Usage: $0 number [version] number: number of sheet, 0 for combined document - version: 1 for problems, 2 for solutions + version: 0 for problems, 1 for solutions $0 filename filename: target file to be compiled" exit 1 @@ -13,16 +19,11 @@ fi num="$1" ver="$2" -main="exfserm" -source="exfser" -target1="Problems" -target2="Solutions" -sheets="01 02 03 aa" nl=$'\n' -sheetokay="" +secokay="" make=".pdf" -for v in $target1 $target2 +for v in "${trglist[@]}" do if [[ $num =~ ^$v ]] then @@ -36,66 +37,67 @@ done if [[ $num =~ ^[0-9]$ ]]; then num="0$num"; fi if [[ $num == "00" ]]; then num=""; fi -if [[ -z $num ]]; then sheetokay="okay"; fi -for v in $sheets +if [[ -z $num ]]; then secokay="okay"; fi +for v in $secnum do - if [[ "$num" == "$v" ]]; then sheetokay="okay"; fi + if [[ "$num" == "$v" ]]; then secokay="okay"; fi done -if [[ -z $sheetokay ]] +if [[ -z $secokay ]] then echo "error: unknown sheet" exit 1 fi +if [[ "$make" == ".pdf" ]]; then nl=""; fi + function docompile { - if [[ -z $num ]]; then job=$main; else job=$source$num; fi - for par in -draftmode "" + if [[ -z $num ]] + then + job="$srcmain" + fwd="\\childdocforward{$srcmain}" + else + job="$srcsec$num" + fwd="\\childdocforward[$srcmain]{$srcsec$num}" + fi + body="\\def\\jobname{$job}$optdef\\input{childdoc.def}$fwd" + for pass in first main do - body="\\def\\jobname{$job}\\def\\draftver{n}\\def\\printsol{$sol}" - body="$body\\input{childdoc.def}" - if [[ -z $num ]] - then - body="$body\\childdocforward{$main}" - else - body="$body\\childdocforward[$main]{$source$num}" - fi + par=""; + if [[ "$pass" == "first" ]]; then par="-draftmode"; fi drop="This is|entering extended mode|\\write18" drop="$drop|Preloading the plain mem file|mpost\.mp|plain\.mp" pdflatex -shell-escape -interaction=batchmode $par \ - -jobname "$target$num" "$body" | grep -vE "$drop" + -jobname "$trg" "$body" | grep -vE "$drop" + if [[ "$pass" != "main" ]]; then continue; fi + if ! (grep -E -q "may have changed|rerunfilecheck Warning" "$trg.log"); then break; fi done - grep -E "Warning|Error|Undefined|Overfull|Underfull" "$target$num.log" + grep -E "^! |Warning|Error|Undefined|Overfull|Underfull" "$trg.log" } function writesource { - body="\\def\\draftver{n}$nl\\def\\printsol{$sol}$nl" - body="$body\\input{childdoc.def}$nl" if [[ -z $num ]] then - body="$body\\childdocforward{$main}" + fwd="\\childdocforward{$srcmain}" else - body="$body\\childdocforwardprefix[$main]{$target}{$source}" + fwd="\\childdocforwardprefix[$srcmain]{$target}{$srcsec}" fi - echo "$body" > $target$num.tex -} - -function process -{ - target=$1 - sol=$2 - if [[ "$make" == ".pdf" ]]; then docompile; else writesource; fi + body="$optdef\\input{childdoc.def}$nl$fwd" + echo "$body" > $trg.tex } -if [[ -z $ver || "$ver" == "$target1" || $ver = 1 ]] -then - process $target1 n -fi -if [[ -z $ver || "$ver" == "$target2" || $ver = 2 ]] -then - process $target2 y -fi +for i in "${!trglist[@]}" +do + if [[ -z $ver || "$ver" == "${trglist[$i]}" || $ver = $i ]] + then + target="${trglist[$i]}" + sol="${trgsol[$i]}" + trg="$target$num" + optdef="\\def\\draftver{n}$nl\\def\\printsol{$sol}$nl" + if [[ "$make" == ".pdf" ]]; then docompile; else writesource; fi + fi +done echo |