summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/isodoc/inst
blob: d605163b9c4f496e6e6670ff531655474c05f6b5 (plain)
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash

       NAME=isodoc
    DOCTYPE=class
        EXT=cls
    VERSION=`grep " v[0-9.]\+[a-z]\{,1\} $NAME $DOCTYPE" $NAME.dtx |sed 's/.* v\([0-9.]\+[a-z]\{,1\}\) .*/\1/' `
EXECUTABLES=(pdfseparate zip unzip getopt pdflatex xelatex)

function die {
   echo -e "$*"
   exit 1
}

function help {
   cat <<-EOD
	This is inst - install the $NAME LaTeX $DOCTYPE
	Options:
	-h, --help	print this help
	-c, --clean     remove all files created by the installation, except the zip file
	-z, --zip	Create zip for CTAN (no install, developer only)

        Without any options, inst installs $NAME in the first writable
        TEXMFMAIN, TEXMFLOCAL or TEXMFHOME tree.
	EOD
   exit
}

function setdir { # create installation directory
   for i in MAIN LOCAL HOME; do
      TREE=$(kpsewhich --expand-var \$TEXMF$i)
      test -w $TREE && break
      TREE=
   done
   test "$TREE" = "" && die "Could not find a writable TeX tree"
   INSTTEX=${TREE}/tex/latex/$NAME
   INSTSRC=$TREE/source/latex/$NAME
   INSTDOC=$TREE/doc/latex/$NAME
   mkdir -p $INSTTEX || die could not create $INSTTEX
   mkdir -p $INSTSRC || die could not create $INSTSRC
   mkdir -p $INSTDOC || die could not create $INSTDOC
}

function testexecs { # test presence of executables
   for i in ${EXECUTABLES[*]}; do
      type $i &> /dev/null || die executable $i not found
   done
}

function readme { # generate the README file
sed -n '/^%<\*readme>/,/^%<\/readme>/p
	/\\changes{v'$VERSION'}/,/^% }/p' $NAME.dtx  |
sed    's/^%//;s/\\\\$//
	/<.readme>/d
	/^ }/d
	s/ \\changes.*/Changes in version '$VERSION':/
	s/$\\Rightarrow\$/=>/g
	s/\\textbackslash/\\/g
	s/\\text\(sl\|it\){\([^}]\+\)}/\/\2\//g		# \textsl{...} -> /.../
	s/{\([^}]*\)}/\1/g 				# keep last, removes all {...}
       ' >README
}

function clean { # clean but keep what goes in the zip
   rm -f $NAME.{aux,fls,glo,gls,idx,ilg,ind,log,out,toc,$EXT}
   rm -f examples/*/{$NAME*,*.{pdf,aux,log,out}}
}

function Clean {
   clean
   rm -f $NAME.pdf README
}

function makeall {
   echo y |tex $NAME.ins >/dev/null
   # install any .ttf files
   mkdir -p ~/.fonts
   find examples -name '*.ttf' -exec cp {} ~/.fonts \;
   fc-cache ~/.fonts

   # create the README file
   readme

   # compile all examples
   cd examples
   for i in *; do
      cd $i
      for j in ../../{$NAME.cls,languages/isodoc*.ldf}; do ln -sf $j; done
      read TEX <$i.tex
      if [[ $TEX =~ ^%! ]]; then TEX=${TEX#%!}; else TEX=pdflatex;fi
      $TEX --interaction=batchmode $i >/dev/null || die error compiling $i
      $TEX --interaction=batchmode $i >/dev/null || die error compiling $i
      test -e logoletter.pdf && pdfseparate -l 2 logoletter.pdf logo%d.pdf
      cd ..
   done
   cd ..
   # make $NAME.pdf
   pdflatex --recorder --interaction=batchmode $NAME.dtx >/dev/null ||
      die "`texlog_extract $NAME.log`"
   test -f $NAME.glo && makeindex -q -s gglo.ist -o $NAME.gls $NAME.glo
   test -f $NAME.idx && makeindex -q -s gind.ist -o $NAME.ind $NAME.idx
   pdflatex --interaction=batchmode $NAME.dtx > /dev/null
   pdflatex --interaction=batchmode $NAME.dtx > /dev/null
}

function installall {
   # install and cleanup
   echo installing in $TREE

   rm -rf $INSTTEX/* $INSTSRC/* $INSTDOC/*
   cp -f $NAME.$EXT languages/iso* $INSTTEX
   cp -a $NAME.{ins,dtx} $INSTSRC
   cp -a README inst languages/template.ldf $NAME.pdf examples/* $INSTDOC
   mktexlsr $TREE 2>/dev/null
   clean
}

function mkzip {
   clean
   cd ..
   zipfile=$NAME/$NAME-$VERSION.zip
   rm -f $zipfile
   zip -Drq $zipfile $NAME/* -x $NAME/test/*
   cd $NAME
   Clean
}

testexecs
setdir

if ! options=$(getopt -o hcz \
                      -l help,clean,zip -- "$@"); then exit 1; fi
eval set -- "$options"

while [ $# -gt 0 ]; do
   case $1 in
   -c|--clean) Clean; exit;;
   -z|--zip)   makeall; mkzip; exit;;
   -h|--help)  help;;
   (--)        shift; break;;
   (*)         break;;
   esac
   shift
done
test "$1" = "" || die No arguments expected

makeall
installall