Advertisement
cmhughes

/usr/local/bin/compileMainfile.sh

Mar 21st, 2012
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.48 KB | None | 0 0
  1. #! /bin/bash
  2. #
  3. # compileMainfile.sh
  4. #
  5. #   December 2011
  6. #
  7. #   Purpose: compile a .tex file either using latex, pdflatex, or
  8. #               latex=> dvips=> ps2pdf, in silent mode or verbose mode
  9. #   examples
  10. #           compileMainfile myfile.tex          # just latex myfile
  11. #           compileMainfile -d myfile.tex       # latex => dvips => ps2pdf
  12. #           compileMainfile -p myfile.tex       # pdflatex myfile
  13. #
  14. #           add the -q flag for SILENT (or quiet) mode
  15. #           compileMainfile -q myfile.tex
  16. #           compileMainfile -qd myfile.tex
  17. #           compileMainfile -qp myfile.tex
  18. #
  19. # See pgs 249 & 250 of BASH COOKBOOK for examples of getopts- really useful!
  20.  
  21.  
  22. # argument check
  23. ERROR="Too few arguments : no file name specified"
  24. [[ $# -eq 0 ]] && echo $ERROR && exit  # no args? ... print error and exit
  25.  
  26. # define functions
  27. function makepdf ()
  28. {
  29.     echo "======================================="
  30.     echo "Main file is $mainFile.tex"
  31.     echo "======================================="
  32.     if [ $quiet -eq 0 ]
  33.     then
  34.         echo "VERBOSE mode on"
  35.         # latex mainFile.tex
  36.         [[ $uselatex -eq 1 ]] && [[ $convertdvips -ne 1 ]] && latex $mainFile
  37.         # latex => dvips => ps2pdf mainFile.tex
  38.         [[ $convertdvips -eq 1 ]] && makepdf.sh $mainFile 1 && echo "DVIPS"
  39.         # pdflatex
  40.         [[ $usepdflatex -eq 1 ]] && pdflatex $mainFile && echo "PDFLATEX"
  41.         egrep 'undefined' $mainFile.log
  42.         egrep 'multiply-defined' $mainFile.log
  43.         egrep '\\end occurred when \\iftrue' $mainFile.log
  44.     else
  45.         echo "SILENT mode on"
  46.         if [ $convertdvips -eq 1 ]
  47.         then
  48.             # latex => dvips => ps2pdf mainFile.tex
  49.             echo "DVIPS"
  50.             nohup makepdf.sh $mainFile 1 &
  51.         elif [ $uselatex -eq 1  ]
  52.         then
  53.             # latex mainFile.tex
  54.             echo "just LaTeX"
  55.             nohup latex $mainFile &
  56.         elif [ $usepdflatex -eq 1 ]
  57.         then
  58.             # pdflatex
  59.             echo "PDFlatex"
  60.             nohup pdflatex $mainFile &
  61.         fi
  62.         ## latex mainFile.tex
  63.         #[[ $uselatex -eq 1 ]] && [[ $convertdvips -ne 1 ]] &&  nohup latex $mainFile &
  64.         ## latex => dvips => ps2pdf mainFile.tex
  65.         #[[ $convertdvips -eq 1 ]] && echo "DVIPS" && nohup makepdf.sh $mainFile 1 &
  66.         ## pdflatex
  67.         #[[ $usepdflatex -eq 1 ]] && echo "PDFLATEX" & nohup pdflatex $mainFile &
  68.     fi
  69. }
  70.  
  71.  
  72. # set default values of flags
  73. quiet=0
  74. uselatex=1
  75. usepdflatex=0
  76. convertdvips=0
  77.  
  78. # check flags, and change defaults appropriately
  79. while getopts 'abpqd' OPTION
  80. do
  81.  case $OPTION in
  82.   q)    quiet=1
  83.    echo "Silent mode ON"
  84.    ;;
  85.   p)    usepdflatex=1
  86.         uselatex=0
  87.    ;;
  88.   d)    convertdvips=1
  89.    ;;
  90.   ?)    printf "Usage: %s: [-a] [-b value] args\n" $(basename $0) >&2
  91.         exit 2
  92.         ;;
  93.  esac
  94. done
  95.  
  96. shift $(($OPTIND - 1))
  97.  
  98. # check we haven't called with -dp
  99. # which would mean dvips and pdflatex
  100. [[ $usepdflatex -eq 1 ]] && [[ $convertdvips -eq 1 ]] && echo "Option clash: cannot be called with -dp" && exit
  101.  
  102. # name of MAINFILE
  103. mainFile=$1
  104.  
  105. # incase we're compiling from within the CHAPTER file
  106. set `grep -F %*** $1 | tr -d "%*" `""
  107. dummy=$1
  108.  
  109. # delete the file extension
  110. mainFile=${mainFile/%.tex/}
  111. dummy=${dummy/\.*/}
  112.  
  113. # check the length of the dummy string, if it's 0 then latex the current file
  114. # otherwise latex the referenced latex file
  115. if [ $dummy ]
  116. then
  117.  mainFile=$dummy
  118. fi
  119.  
  120. # call the makepdf function
  121. makepdf
  122. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement