1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
initial_pwd=$(pwd)
filename=""
dirname=""
mupdf_pid="0"
input_suffix=".tex"
probe_suffix="tex"
output_suffix=".pdf"
function get_filename()
{
local base=$(basename ${1})
filename="${base%.*}"
}
function get_dirname()
{
dirname="$(dirname ${1})"
}
function probe_extension()
{
local extension="${1##*.}"
if [ ${extension} != ${probe_suffix} ]; then
echo "File extension (${extension}) is not ${probe_suffix}. Exiting..."
exit 1
fi
return 0
}
function probe_tools()
{
if [ ! -x /usr/bin/pdflatex ]; then
echo "/usr/bin/pdflatex not available. Exiting..."
exit 1
fi
if [ ! -x /usr/bin/bibtex ]; then
echo "/usr/bin/bibtex not available. Exiting..."
exit 1
fi
if [ ! -x /usr/bin/mupdf ]; then
echo "/usr/bin/mupdf not available. Exiting..."
exit 1
fi
return 0
}
function create_pdf()
{
cd ${dirname}
set +e
pdflatex \
-interaction=nonstopmode \
-shell-escape \
${filename}${input_suffix} > /dev/null
bibtex ${filename}.aux
makeglossaries ${filename}
pdflatex \
-interaction=nonstopmode \
-shell-escape \
${filename}${input_suffix} > /dev/null
pdflatex \
-interaction=nonstopmode \
-shell-escape \
${filename}${input_suffix}
set -e
cd ${initial_pwd}
return 0
}
function check_mupdf_pid()
{
set +e
mupdf_pid=$(ps aux | grep "mupdf ${dirname}/${filename}${output_suffix}" | grep -v "grep" | awk '{print $2}')
set -e
}
function show_pdf()
{
check_mupdf_pid
echo "mupdf: ${dirname}/${filename}${output_suffix}."
if [ ! -z $mupdf_pid ]; then
kill -SIGHUP ${mupdf_pid}
else
mupdf ${dirname}/${filename}${output_suffix} &
fi
}
function cleanup()
{
rm -f ${dirname}/*.{acn,acr,alg,aux,bbl,bcf,blg,dvi,glg,glo,gls,glsdefs,idx,ist,lof,log,lol,lot,nav,out,run.xml,snm,toc,upa,upb,vrb,xdy} \
${dirname}/*/*.{acn,acr,alg,aux,bbl,bcf,blg,dvi,glg,glo,gls,glsdefs,idx,ist,lof,log,lol,lot,nav,out,run.xml,snm,toc,upa,upb,vrb,xdy} \
*.{acn,acr,alg,aux,bbl,bcf,blg,dvi,glg,glo,gls,glsdefs,idx,ist,lof,log,lol,lot,nav,out,run.xml,snm,toc,upa,upb,vrb,xdy} \
*/*.{acn,acr,alg,aux,bbl,bcf,blg,dvi,glg,glo,gls,glsdefs,idx,ist,lof,log,lot,nav,out,run.xml,snm,toc,upa,upb,vrb,xdy}
}
render_diags() {
echo "Rendering diagrams to pdfs."
if [ -d "${dirname}/diag/" ] && [ -x /usr/bin/seqdiag ] ; then
for _diag in "${dirname}/diag/"*.diag; do
seqdiag -T 'PDF' "${_diag}"
done
fi
}
render_svgs() {
echo "Rendering SVGs to pdfs."
for dir in "${dirname}/images" "${dirname}/../images"; do
if [ -d "${dir}" ]; then
for svg in "${dir}/"*; do
inkscape -D -z -A "${svg%\.svg}".pdf "${svg}"
done
fi
done
}
probe_extension $1
get_filename $1
get_dirname $1
render_diags
render_svgs
echo "tex2pdf: Converting $filename$input_suffix to $filename$output_suffix."
probe_tools
create_pdf
cleanup
show_pdf
exit 0
|