| 1 | #!/bin/sh
|
|---|
| 2 |
|
|---|
| 3 | # Simple little checker for individual libref manual sections
|
|---|
| 4 | #
|
|---|
| 5 | # usage: makesec.sh section
|
|---|
| 6 | #
|
|---|
| 7 |
|
|---|
| 8 | # This script builds the minimal file necessary to run a single section
|
|---|
| 9 | # through latex, does so, then converts the resulting dvi file to ps or pdf
|
|---|
| 10 | # and feeds the result into a viewer. It's by no means foolproof, but seems
|
|---|
| 11 | # to work okay for me (knock wood). It sure beats manually commenting out
|
|---|
| 12 | # most of the man lib.tex file and running everything manually.
|
|---|
| 13 |
|
|---|
| 14 | # It attempts to locate an appropriate dvi converter and viewer for the
|
|---|
| 15 | # selected output format. It understands the following environment
|
|---|
| 16 | # variables:
|
|---|
| 17 | #
|
|---|
| 18 | # PYSRC - refers to the root of your build tree (dir containing Doc)
|
|---|
| 19 | # DVICVT - refers to a dvi converter like dvips or dvipdf
|
|---|
| 20 | # VIEWER - refers to an appropriate viewer for the ps/pdf file
|
|---|
| 21 | #
|
|---|
| 22 | # Of the three, only PYSRC is currently required. The other two can be set
|
|---|
| 23 | # to specify unusual tools which perform those tasks.
|
|---|
| 24 |
|
|---|
| 25 | # Known issues:
|
|---|
| 26 | # - It would be nice if the script could determine PYSRC on its own.
|
|---|
| 27 | # - Something about \seealso{}s blows the latex stack, so they need
|
|---|
| 28 | # to be commented out for now.
|
|---|
| 29 |
|
|---|
| 30 | if [ x$PYSRC = x ] ; then
|
|---|
| 31 | echo "PYSRC must refer to the Python source tree" 1>&2
|
|---|
| 32 | exit 1
|
|---|
| 33 | fi
|
|---|
| 34 |
|
|---|
| 35 | if [ ! -d $PYSRC/Doc ] ; then
|
|---|
| 36 | echo "Can't find a Doc subdirectory in $PYSRC" 1>&2
|
|---|
| 37 | exit 1
|
|---|
| 38 | fi
|
|---|
| 39 |
|
|---|
| 40 | if [ "$#" -ne 1 ] ; then
|
|---|
| 41 | echo "Must specify a single libref manual section on cmd line" 1>&2
|
|---|
| 42 | exit 1
|
|---|
| 43 | fi
|
|---|
| 44 |
|
|---|
| 45 | # settle on a dvi converter
|
|---|
| 46 | if [ x$DVICVT != x ] ; then
|
|---|
| 47 | converter=$DVICVT
|
|---|
| 48 | ext=`echo $DVICVT | sed -e 's/^dvi//'`
|
|---|
| 49 | result=lib.$ext
|
|---|
| 50 | elif [ x`which dvipdf` != x ] ; then
|
|---|
| 51 | converter=`which dvipdf`
|
|---|
| 52 | ext=.pdf
|
|---|
| 53 | elif [ x`which dvips` != x ] ; then
|
|---|
| 54 | converter=`which dvips`
|
|---|
| 55 | ext=.ps
|
|---|
| 56 | else
|
|---|
| 57 | echo "Can't find a reasonable dvi converter" 1>&2
|
|---|
| 58 | echo "Set DVICVT to refer to one" 1>&2
|
|---|
| 59 | exit 1
|
|---|
| 60 | fi
|
|---|
| 61 |
|
|---|
| 62 | # how about a viewer?
|
|---|
| 63 | if [ x$VIEWER != x ] ; then
|
|---|
| 64 | viewer=$VIEWER
|
|---|
| 65 | elif [ $ext = ".ps" -a x`which gv` != x ] ; then
|
|---|
| 66 | viewer=gv
|
|---|
| 67 | elif [ $ext = ".ps" -a x`which gs` != x ] ; then
|
|---|
| 68 | viewer=gs
|
|---|
| 69 | elif [ $ext = ".pdf" -a x`which acroread` != x ] ; then
|
|---|
| 70 | viewer=acroread
|
|---|
| 71 | elif [ $ext = ".pdf" -a "`uname`" = "Darwin" -a x`which open` != x ] ; then
|
|---|
| 72 | viewer=open
|
|---|
| 73 | elif [ $ext = ".pdf" -a x`which acroread` != x ] ; then
|
|---|
| 74 | viewer=acroread
|
|---|
| 75 | else
|
|---|
| 76 | echo "Can't find a reasonable viewer" 1>&2
|
|---|
| 77 | echo "Set VIEWER to refer to one" 1>&2
|
|---|
| 78 | exit 1
|
|---|
| 79 | fi
|
|---|
| 80 |
|
|---|
| 81 | # make sure necessary links are in place
|
|---|
| 82 | for f in howto.cls pypaper.sty ; do
|
|---|
| 83 | rm -f $f
|
|---|
| 84 | ln -s $PYSRC/Doc/$f
|
|---|
| 85 | done
|
|---|
| 86 |
|
|---|
| 87 | export TEXINPUTS=.:$PYSRC/Doc/texinputs:
|
|---|
| 88 |
|
|---|
| 89 | # strip extension in case they gave full filename
|
|---|
| 90 | inp=`basename $1 .tex`
|
|---|
| 91 |
|
|---|
| 92 | # create the minimal framework necessary to run section through latex
|
|---|
| 93 | tmpf=lib.tex
|
|---|
| 94 | cat > $tmpf <<EOF
|
|---|
| 95 | \documentclass{manual}
|
|---|
| 96 |
|
|---|
| 97 | % NOTE: this file controls which chapters/sections of the library
|
|---|
| 98 | % manual are actually printed. It is easy to customize your manual
|
|---|
| 99 | % by commenting out sections that you are not interested in.
|
|---|
| 100 |
|
|---|
| 101 | \title{Python Library Reference}
|
|---|
| 102 |
|
|---|
| 103 | \input{boilerplate}
|
|---|
| 104 |
|
|---|
| 105 | \makeindex % tell \index to actually write the
|
|---|
| 106 | % .idx file
|
|---|
| 107 | \makemodindex % ... and the module index as well.
|
|---|
| 108 |
|
|---|
| 109 |
|
|---|
| 110 | \begin{document}
|
|---|
| 111 |
|
|---|
| 112 | \maketitle
|
|---|
| 113 |
|
|---|
| 114 | \ifhtml
|
|---|
| 115 | \chapter*{Front Matter\label{front}}
|
|---|
| 116 | \fi
|
|---|
| 117 |
|
|---|
| 118 | \input{$inp}
|
|---|
| 119 | \end{document}
|
|---|
| 120 | EOF
|
|---|
| 121 |
|
|---|
| 122 | latex $tmpf
|
|---|
| 123 |
|
|---|
| 124 | $converter lib
|
|---|
| 125 |
|
|---|
| 126 | $viewer lib.pdf
|
|---|
| 127 |
|
|---|
| 128 | rm -f $tmpf howto.cls pypaper.sty *.idx *.syn
|
|---|
| 129 | rm -f lib.aux lib.log
|
|---|