cgal/Packages/Manual/scripts/to_pdf

129 lines
3.4 KiB
Bash
Executable File

#!/bin/sh
#
# Script for converting the CGAL manuals to PDF with bookmarks.
# Have to do a separate run of latex to generate this because otherwise
# the things that are linked via the hyperref package are colored in the
# PostScript manual as well.
#
# N.B. gs version 6.51 works best for the basic library conversion.
# version 6.50 gives up or segmentation faults or does other nasty
# things.
if [ $# -ne 0 ] ; then
DOCDIRS="$*"
elif [ -f wrapper.tex ]; then
DOCDIRS="."
elif [ -f docdirs ]; then
DOCDIRS=`cat docdirs`
else
DOCDIRS=""
fi
DISTILL="/opt/adobe/AcroDist_2.1/bin/distill"
origTEXINPUTS=$TEXINPUTS
TEXINPUTS=../../examples/:../../demo:$TEXINPUTS
for DIR in $DOCDIRS; do
TEXINPUTS=$DIR:$TEXINPUTS
cd $DIR
echo "now in directory $DIR..."
CURR_DIR=`pwd`
sed -e '
s/\\setboolean{usehyperref}{false}/\\setboolean{usehyperref}{true}/
s/\\setboolean{useminitoc}{true}/\\setboolean{useminitoc}{false}/
' wrapper.tex > pdf_wrapper.tex
if [ -f docdirs_passed_tex ] ; then
DOC_SUBDIRS=`cat docdirs_passed_tex`
elif [ -f docdirs ] ; then
DOC_SUBDIRS=`cat docdirs`
else
DOC_SUBDIRS=""
fi
IONLY="\includeonly{"
for SUBDIR in ${DOC_SUBDIRS}; do
TEXINPUTS=${SUBDIR}:${SUBDIR}_ref:$TEXINPUTS
IONLY="$IONLY,${SUBDIR}/main,${SUBDIR}_ref/main"
done
IONLY="$IONLY}"
echo $IONLY > ionly
export TEXINPUTS
# must get rid of the .aux files as they may contain table of contents
# commands from minitoc that should not be used with the hyperref package
if [ -f docdirs ] ; then
\rm -f */*.aux
fi
echo
echo " ...$DIR's first LaTeX pass"
echo
latex pdf_wrapper
echo
echo " ...$DIR's bibtex "
echo
bibtex pdf_wrapper
# add table of contents line for bibliography
if [ -f pdf_wrapper.bbl ]; then
sed 's/\\begin{thebibliography}{.*}/&\\lcTex{\\addcontentsline{toc}{chapter}{Bibliography}}/' pdf_wrapper.bbl > new_pdf_wrapper.bbl
\mv new_pdf_wrapper.bbl pdf_wrapper.bbl
fi
if [ -f pdf_wrapper.idx ]; then
echo
echo " ...making $DIR's index"
echo
makeindex pdf_wrapper
index_fix pdf_wrapper.ind
fi
echo
echo " ...$DIR's second LaTeX pass "
echo
latex pdf_wrapper
if [ -f pdf_wrapper.ref ]; then
echo
echo " ... sorting reference pages "
echo
sort -f +2 -3 pdf_wrapper.ref > pdf_wrapper.ref_sorted
cp pdf_wrapper.ref_sorted pdf_wrapper.ref
fi
echo
echo " ... $DIR's final LaTeX pass"
echo
latex pdf_wrapper
echo
echo " ... creating $DIR's PostScript"
echo
dvips -t letter -o pdf_wrapper.ps pdf_wrapper
echo
echo " ... creating $DIR's PDF"
echo
ps2pdf pdf_wrapper.ps
case $CURR_DIR in
*installation) \mv pdf_wrapper.pdf installation.pdf;;
*general) \mv pdf_wrapper.pdf general_intro.pdf;;
*kernel) \mv pdf_wrapper.pdf kernel.pdf;;
*kernel_d) \mv pdf_wrapper.pdf kernel_d.pdf;;
*basic) \mv pdf_wrapper.pdf basic_lib.pdf;;
*support) \mv pdf_wrapper.pdf support_lib.pdf;;
*use_of_stl) \mv pdf_wrapper.pdf use_of_stl.pdf;;
*)
echo "UNKNOWN manual part $CURR_DIR; creating ref-manual.pdf";
\mv pdf_wrapper.pdf ref-manual.pdf
esac
echo "...leaving directory $DIR"
cd ..
done
TEXINPUTS=$origTEXINPUTS
export TEXINPUTS