From d93ceec760ae306fb0de8d1be0da99f8682da059 Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Wed, 20 Nov 2013 00:55:21 +0000 Subject: [PATCH] Nomenclature Working :) --- .gitignore | 3 +- Chapter1/chapter1.tex | 14 ++ Classes/PhDThesisPSnPDF.cls | 47 ++-- Makefile | 459 ++++++++++++++++++++++++++++-------- Preamble/preamble.tex | 6 +- compile-thesis.sh | 83 +++++-- thesis.pdf | Bin 244009 -> 262848 bytes thesis.tex | 7 +- 8 files changed, 472 insertions(+), 147 deletions(-) mode change 100644 => 100755 Makefile diff --git a/.gitignore b/.gitignore index b48dc9b..1827598 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ *.ind *cookie* thesis.ps -*# +*#* +*.nls diff --git a/Chapter1/chapter1.tex b/Chapter1/chapter1.tex index ae7cfa7..9378d24 100644 --- a/Chapter1/chapter1.tex +++ b/Chapter1/chapter1.tex @@ -12,6 +12,20 @@ Lorem Ipsum is simply dummy text of the printing and typesetting industry~\cref{ The most famous equation in the world: $E^2 = (m_0c^2)^2 + (pc)^2$, which is known as the \textbf{energy-mass-momentum} relation as an in-line equation. A {\em \LaTeX{} class file}\index{\LaTeX{} class file@LaTeX class file} is a file, which holds style information for a particular \LaTeX{}. + +\begin{eqnarray} +CIF: \hspace*{5mm}F_0^j(a) &=& \frac{1}{2\pi \iota} \oint_{\gamma} \frac{F_0^j(z)}{z - a} dz +\end{eqnarray} + +\nomenclature[zcif]{$CIF$}{Cauchy's Integral Formula} % first letter Z is for Acronyms +\nomenclature[aF]{$F$}{complex function} % first letter A is for Roman symbols +\nomenclature[gp]{$\pi$}{ $\simeq 3.14\ldots$} % first letter G is for Greek Symbols +\nomenclature[gi]{$\iota$}{unit imaginary number $\sqrt{-1}$} % first letter G is for Greek Symbols +\nomenclature[gg]{$\gamma$}{a simply closed curve on a complex plane} % first letter G is for Greek Symbols +\nomenclature[xi]{$\oint_\gamma$}{integration around a curve $\gamma$} % first letter X is for Other Symbols +\nomenclature[rj]{$j$}{superscript index} % first letter R is for superscripts +\nomenclature[s0]{$0$}{subscript index} % first letter S is for subscripts + %********************************** %Second Section ************************************* \section{Why do we use Loren Ipsum?} %Section - 1.2 diff --git a/Classes/PhDThesisPSnPDF.cls b/Classes/PhDThesisPSnPDF.cls index 0221e06..501a93d 100644 --- a/Classes/PhDThesisPSnPDF.cls +++ b/Classes/PhDThesisPSnPDF.cls @@ -78,7 +78,7 @@ \fi - +% **************************** Print / Online *************************** % Defines a print / online version to define page-layout and hyperrefering \if@print @@ -454,22 +454,39 @@ % ******************************** Nomenclature ********************************* +%\usepackage{nomencl} +%\makenomenclature +%\renewcommand\nomgroup[1]{% +%\ifthenelse{\equal{#1}{A}}{\item[\textbf{Roman Symbols}]}{% A - Roman +%\ifthenelse{\equal{#1}{G}}{\item[\textbf{Greek Symbols}]}{% G - Greek +%\ifthenelse{\equal{#1}{R}}{\item[\textbf{Superscripts}]}{% R - Superscripts +%\ifthenelse{\equal{#1}{S}}{\item[\textbf{Subscripts}]}{{% S - Subscripts +%\ifthenelse{\equal{#1}{X}}{\item[\textbf{Other Symbols}]}{{% X - Other Symbols +%\ifthenelse{\equal{#1}{Z}}{\item[\textbf{Acronyms}]}% Z - Acronyms +% {{}}}}}}}}}} + \usepackage{nomencl} \makenomenclature -\renewcommand\nomgroup[1]{% - \ifthenelse{\equal{#1}{A}}{% - \item[\textbf{Roman Symbols}] }{% A - Roman - \ifthenelse{\equal{#1}{G}}{% - \item[\textbf{Greek Symbols}]}{% G - Greek - \ifthenelse{\equal{#1}{R}}{% - \item[\textbf{Superscripts}]}{% R - Superscripts - \ifthenelse{\equal{#1}{S}}{% - \item[\textbf{Subscripts}]}{{% S - Subscripts - \ifthenelse{\equal{#1}{X}}{% - \item[\textbf{Other Symbols}]}{{% X - Other Symbols - \ifthenelse{\equal{#1}{Z}}{% - \item[\textbf{Acronyms}]}% Z - Acronyms - {{}}}}}}}}}} +\renewcommand{\nomgroup}[1]{% +\ifthenelse{\equal{#1}{A}}{\item[\textbf{Roman Symbols}]}{% +\ifthenelse{\equal{#1}{G}}{\item[\textbf{Greek Symbols}]}{% +\ifthenelse{\equal{#1}{Z}}{\item[\textbf{Acronyms / Abbreviations}]}{% +\ifthenelse{\equal{#1}{R}}{\item[\textbf{Superscripts}]}{% +\ifthenelse{\equal{#1}{S}}{\item[\textbf{Subscripts}]}{% +\ifthenelse{\equal{#1}{X}}{\item[\textbf{Other Symbols}]} +{} +}% matches mathematical symbols > X +}% matches Subscripts > S +}% matches Superscripts > R +}% matches Abbreviations > Z +}% matches Greek Symbols > G +}% matches Roman Symbols > A + +% Add nomenclature to contents and print out nomenclature +\newcommand{\printnomencl}{ +\printnomenclature +\addcontentsline{toc}{chapter}{\nomname} +} % ******************************* Create the index ****************************** diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 index 62951f3..fe48e92 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ # fileinfo := LaTeX Makefile author := Chris Monson -version := 2.2.0 +version := 2.2.1-alpha9 # .DEFAULT_GOAL := all # Note that the user-global version is imported *after* the source directory, @@ -46,6 +46,8 @@ version := 2.2.0 # This can be pdflatex or latex - you can change this by adding the following line to your Makefile.ini: # BUILD_STRATEGY := latex BUILD_STRATEGY ?= pdflatex +# This can be used to pass extra options to latex. +LATEX_OPTS ?= # # Sets LC_ALL=C, by default, so that the locale-aware tools, like sort, be # # immune to changes to the locale in the user environment. @@ -55,10 +57,12 @@ export LC_ALL ?= C # If you specify sources here, all other files with the same suffix # will be treated as if they were _include_ files. #onlysources.tex ?= main.tex +#onlysources.lhs ?= #onlysources.tex.sh ?= #onlysources.tex.pl ?= #onlysources.tex.py ?= #onlysources.rst ?= +#onlysources.mp ?= #onlysources.fig ?= #onlysources.gpi ?= #onlysources.dot ?= @@ -69,10 +73,12 @@ export LC_ALL ?= C # # If you list files here, they will be treated as _include_ files #includes.tex ?= file1.tex file2.tex +#includes.lhs ?= #includes.tex.sh ?= #includes.tex.pl ?= #includes.tex.py ?= #includes.rst ?= +#includes.mp ?= #includes.fig ?= #includes.gpi ?= #includes.dot ?= @@ -111,9 +117,61 @@ export LC_ALL ?= C # # # CHANGES: -# Chris Monson (2011-05-20): +# Chris Monson (2012-06-25): +# * Bumped version to 2.2.1-alpha9 +# * Built with Holger Dell's changes to fix multiple unnecessary compilations. +# Chris Monson (2011-11-10): +# * Issue 144: Help patch from girard.nicolas applied +# Andrew McNabb (2011-09-30): +# * Bumped version to 2.2.1-alpha8 +# * Issue 141: No font embedding for gnuplot when not doing pdf +# * Syntax error fixed for gpi handling code +# Chris Monson (2011-09-06): +# * Issue 140: clean mlt*, mlf*, and mtc* files +# * Issue 136: initial support for metapost files +# Chris Monson (2011-08-09): +# * Bumped version to 2.2.1-alpha7 +# * Issue 138: existing .eps files now included correctly +# * Issue 139: added missing backslash to ps build rule +# Chris Monson (2011-07-20): +# * Added LATEX_OPTS +# Chris Monson (2011-06-23): +# * Bumped version to 2.2.1-alpha6 +# * Issue 133: Set jobname to fix .fls generation to always have the source name +# * Removed unnecessary (?) double-invocation of cygpath +# Chris Monson (2011-06-16): +# * Added support for keeping .rst and .lhs tex intermediates around. +# * Separated scripts from source generation files (rst and lhs) +# * Fixed run-script problem for lhs2tex (was invoked incorrectly) +# * Issue 133: Fixed typo from literate Haskell support +# Chris Monson (2011-06-13): +# * Bumped version to 2.2.1-alpha5 +# * Fixed problems with detecting graphics for very long source names. +# Chris Monson (2011-06-13): +# * Issue 134: name of self corrected for dependency graph +# * Issue 133: Added literate Haskell support (lhs2tex) +# Chris Monson (2011-05-31): +# * Rewrote specials (%%COMMENTS) to be easier to extend and parse. +# Chris Monson (2011-05-11): +# * Bumped version to 2.2.1-alpha4 +# * Issue 129: nomenclature dependency fix +# Chris Monson (2011-05-09): +# * Bumped version to 2.2.1-alpha3 +# * Issue 112: Cygpath fixes +# Chris Monson (2011-04-27): +# * Bumped version to 2.2.1-alpha2 +# * Issue 126: Broken log parsing for latex pipeline +# * Fixed month in recent changes (had May, should be April) +# * Noticed problems with some existing parsing (colorizing errors, notably) and +# fixed them. +# * New test case for specified graphic extensions. +# * Added .bb generation for .eps files (when extensionless in latex pipeline) +# Chris Monson (2011-04-22): +# * Bumped version to 2.2.1-alpha1 +# * Issue 105: add support for format file detection and compilation +# Chris Monson (2011-04-20): # * Bumped version to 2.2.0 (release!) -# Chris Monson (2011-05-19): +# Chris Monson (2011-04-19): # * Bumped version to 2.2.0-rc15 # * Issue 125: infinite recursion with nomenclature files # * Issue 125: removed .d as a target for .nls in get-log-index @@ -701,10 +759,12 @@ TPUT ?= tput PERL ?= perl PYTHON ?= python RST2LATEX ?= rst2latex.py +LHS2TEX ?= lhs2tex # == EPS Generation == CONVERT ?= convert # ImageMagick DOT ?= dot # GraphViz DOT2TEX ?= dot2tex # dot2tex - add options (not -o) as needed +MPOST ?= mpost # MetaPost FIG2DEV ?= fig2dev # XFig GNUPLOT ?= gnuplot # GNUplot INKSCAPE ?= inkscape # Inkscape (svg support) @@ -728,13 +788,8 @@ XINDYENC ?= utf8 # otherwise the function is just a no-op. Issue 112 has details. USE_CYGPATH := $(if $(shell $(WHICH) $(CYGPATH) 2>/dev/null),yes,) -# $(call get-cygpath,) -define get-cygpath -$(shell $(CYGPATH) -u "$(shell $(CYGPATH) -s -w $1)") -endef - define path-norm -$(if $(USE_CYGPATH),$(call get-cygpath,$1),$1) +$(if $(USE_CYGPATH),$(shell $(CYGPATH) -u "$1"),$1) endef # Command options for embedding fonts and postscript->pdf conversion @@ -856,6 +911,25 @@ GRAY ?= $(call get-default,$(GREY),) # # Utility Functions and Definitions # +# +# Transcript +# For debug/testing purposes: writes a message to +# filename.transcript.make for each command that was run, including +# some human-readable justification for why it had to be run. +# For example: "Running latex (log-file indicated that this is necessary)" +# Set WRITE_TRANSCRIPT to something to activate +WRITE_TRANSCRIPT ?= +# Set reason for the next run call +# $(call set-run-reason,message) +set-run-reason = export run_reason="$1" +# Log command to the transcript file +# $(call set-run-reason,command,job_name) +define transcript +$(if $(WRITE_TRANSCRIPT), \ + $(ECHO) "Running $1 ($$run_reason)" >> $2.transcript.make; \ + export run_reason="", \ + $(sh_true)) +endef # Don't call this directly - it is here to avoid calling wildcard more than # once in remove-files. @@ -909,6 +983,8 @@ escape-fname-regex = $(subst /,\\/,$(subst .,\\.,$1)) # Test that a file exists # $(call test-exists,file) test-exists = [ -e '$1' ] +# $(call test-not-exists,file) +test-not-exists = [ ! -e '$1' ] # $(call move-files,source,destination) move-if-exists = $(call test-exists,$1) && $(MV) '$1' '$2' @@ -989,7 +1065,7 @@ endif # Get the name of this makefile (always right in 3.80, often right in 3.79) # This is only really used for documentation, so it isn't too serious. ifdef MAKEFILE_LIST -this_file := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) +this_file := $(firstword $(MAKEFILE_LIST)) else this_file := $(wildcard GNUmakefile makefile Makefile) endif @@ -1103,6 +1179,8 @@ all_files.tex.sh ?= $(wildcard *.tex.sh) all_files.tex.pl ?= $(wildcard *.tex.pl) all_files.tex.py ?= $(wildcard *.tex.py) all_files.rst ?= $(wildcard *.rst) +all_files.lhs ?= $(wildcard *.lhs) +all_files.mp ?= $(wildcard *.mp) all_files.fig ?= $(wildcard *.fig) all_files.gpi ?= $(wildcard *.gpi) all_files.dot ?= $(wildcard *.dot) @@ -1150,8 +1228,10 @@ files.tex.sh := $(call filter-buildable,tex.sh) files.tex.pl := $(call filter-buildable,tex.pl) files.tex.py := $(call filter-buildable,tex.py) files.rst := $(call filter-buildable,rst) +files.lhs := $(call filter-buildable,lhs) files.gpi := $(call filter-buildable,gpi) files.dot := $(call filter-buildable,dot) +files.mp := $(call filter-buildable,mp) files.fig := $(call filter-buildable,fig) files.xvg := $(call filter-buildable,xvg) files.svg := $(call filter-buildable,svg) @@ -1168,14 +1248,20 @@ files.eps := $(call filter-buildable,eps) # files in the end. .SECONDARY: $(patsubst %.fig,%.pstex,$(files.fig)) +# Make all .tex targets secondary that result .rst and .lhs: +.SECONDARY: $(patsubst %.rst,%.tex,$(files.rst)) +.SECONDARY: $(patsubst %.lhs,%.tex,$(files.lhs)) + # Top level sources that are built by default targets default_files.tex := $(call filter-default,tex) default_files.tex.sh := $(call filter-default,tex.sh) default_files.tex.pl := $(call filter-default,tex.pl) default_files.tex.py := $(call filter-default,tex.py) default_files.rst := $(call filter-default,rst) +default_files.lhs := $(call filter-default,lhs) default_files.gpi := $(call filter-default,gpi) default_files.dot := $(call filter-default,dot) +default_files.mp := $(call filter-default,mp) default_files.fig := $(call filter-default,fig) default_files.xvg := $(call filter-default,xvg) default_files.svg := $(call filter-default,svg) @@ -1191,15 +1277,18 @@ concat-files = $(foreach s,$1,$($(if $2,$2_,)files.$s)) # Useful file groupings all_files_source := $(call concat-files,tex,all) -all_files_scripts := $(call concat-files,tex.sh tex.pl tex.py rst,all) +all_files_source_gen := $(call concat-files,rst rhs,all) +all_files_scripts := $(call concat-files,tex.sh tex.pl tex.py,all) .PHONY: $(all_files_scripts) -default_files_source := $(call concat-files,tex,default) -default_files_scripts := $(call concat-files,tex.sh tex.pl tex.py rst,default) +default_files_source := $(call concat-files,tex,default) +default_files_source_gen := $(call concat-files,rhs lhs,default) +default_files_scripts := $(call concat-files,tex.sh tex.pl tex.py,default) -files_source := $(call concat-files,tex) -files_scripts := $(call concat-files,tex.sh tex.pl tex.py rst) +files_source := $(call concat-files,tex) +files_source_gen := $(call concat-files,rst lhs) +files_scripts := $(call concat-files,tex.sh tex.pl tex.py) # Utility function for obtaining stems # $(call get-stems,suffix,[prefix]) @@ -1211,6 +1300,8 @@ all_stems.tex.sh := $(call get-stems,tex.sh,all) all_stems.tex.pl := $(call get-stems,tex.pl,all) all_stems.tex.py := $(call get-stems,tex.py,all) all_stems.rst := $(call get-stems,rst,all) +all_stems.lhs := $(call get-stems,lhs,all) +all_stems.mp := $(call get-stems,mp,all) all_stems.fig := $(call get-stems,fig,all) all_stems.gpi := $(call get-stems,gpi,all) all_stems.dot := $(call get-stems,dot,all) @@ -1228,6 +1319,8 @@ default_stems.tex.sh := $(call get-stems,tex.sh,default) default_stems.tex.pl := $(call get-stems,tex.pl,default) default_stems.tex.py := $(call get-stems,tex.py,default) default_stems.rst := $(call get-stems,rst,default) +default_stems.lhs := $(call get-stems,lhs,default) +default_stems.mp := $(call get-stems,mp,default) default_stems.fig := $(call get-stems,fig,default) default_stems.gpi := $(call get-stems,gpi,default) default_stems.dot := $(call get-stems,dot,default) @@ -1245,6 +1338,8 @@ stems.tex.sh := $(call get-stems,tex.sh) stems.tex.pl := $(call get-stems,tex.pl) stems.tex.py := $(call get-stems,tex.py) stems.rst := $(call get-stems,rst) +stems.lhs := $(call get-stems,lhs) +stems.mp := $(call get-stems,mp) stems.fig := $(call get-stems,fig) stems.gpi := $(call get-stems,gpi) stems.dot := $(call get-stems,dot) @@ -1261,7 +1356,8 @@ stems.eps := $(call get-stems,eps) concat-stems = $(sort $(foreach s,$1,$($(if $2,$2_,)stems.$s))) # The most likely to be source but not finished product go first -graphic_source_extensions := fig \ +graphic_source_extensions := mp \ + fig \ gpi \ xvg \ svg \ @@ -1269,7 +1365,7 @@ graphic_source_extensions := fig \ eps.gz ifeq "$(strip $(BUILD_STRATEGY))" "latex" -graphic_source_extensions += png jpg jpeg +graphic_source_extensions += png jpg jpeg eps graphic_target_extensions := eps ps endif @@ -1284,24 +1380,27 @@ graphic_target_extensions := pdf png jpg jpeg mps tif endif all_stems_source := $(call concat-stems,tex,all) -all_stems_script := $(call concat-stems,tex.sh tex.pl tex.py rst,all) +all_stems_source_gen := $(call concat-stems,rst lhs,all) +all_stems_script := $(call concat-stems,tex.sh tex.pl tex.py,all) all_stems_graphic := $(call concat-stems,$(graphic_source_extensions),all) -all_stems_ss := $(sort $(all_stems_source) $(all_stems_script)) -all_stems_sg := $(sort $(all_stems_script)) +all_stems_ss := $(sort $(all_stems_source) $(all_stems_source_gen) $(all_stems_script)) +all_stems_sg := $(sort $(all_stems_script) $(all_stems_source_gen)) all_stems_ssg := $(sort $(all_stems_ss)) -default_stems_source := $(call concat-stems,tex,default) -default_stems_script := $(call concat-stems,tex.sh tex.pl tex.py rst,default) -default_stems_ss := $(sort $(default_stems_source) $(default_stems_script)) -default_stems_sg := $(sort $(default_stems_script)) +default_stems_source := $(call concat-stems,tex,default) +default_stems_source_gen := $(call concat-stems,rst lhs,default) +default_stems_script := $(call concat-stems,tex.sh tex.pl tex.py,default) +default_stems_ss := $(sort $(default_stems_source) $(default_stems_source_gen) $(default_stems_script)) +default_stems_sg := $(sort $(default_stems_script) $(default_stems_source_gen)) default_stems_ssg := $(sort $(default_stems_ss)) stems_source := $(call concat-stems,tex) -stems_script := $(call concat-stems,tex.sh tex.pl tex.py rst) +stems_source_gen := $(call concat-stems,rst lhs) +stems_script := $(call concat-stems,tex.sh tex.pl tex.py) stems_graphic := $(call concat-stems,$(graphic_source_extensions)) stems_gg := $(sort $(stems_graphic)) -stems_ss := $(sort $(stems_source) $(stems_script)) -stems_sg := $(sort $(stems_script)) +stems_ss := $(sort $(stems_source) $(stems_source_gen) $(stems_script)) +stems_sg := $(sort $(stems_script) $(stems_source_gen)) stems_ssg := $(sort $(stems_ss)) # Calculate names that can generate the need for an include file. We can't @@ -1434,7 +1533,7 @@ endif # Extensions generated by LaTeX invocation that can be removed when complete rm_ext := \ log *.log aux $(pre_pdf_extensions) pdf blg bbl out nav snm toc lof lot lol pfg \ - fls vrb idx ind ilg glg glo gls lox nls nlo nlg brf mtc maf brf ist + fls vrb idx ind ilg glg glo gls lox nls nlo nlg brf mtc* mlf* mlt* maf brf ist fmt backup_patterns := *~ *.bak *.backup body.tmp head.tmp graph_stem := _graph @@ -1484,6 +1583,23 @@ $(SED) \ '$1' | $(SORT) | $(UNIQ) endef +# $(call get-format,,) +define get-format +$(SED) \ +-e '1!d' \ +-e '/^%&\([[:alnum:]]\{1,\}\)\( .*\)*$$/{' \ +-e ' s!!\1!' \ +-e ' h' \ +-e ' s/.*/# MISSING format "&.fmt" (comment forces rebuild of target file)/' \ +-e ' p' \ +-e ' g' \ +-e ' s!.*!$2: $$(call path-norm,&.fmt)!' \ +-e ' p' \ +-e '}' \ +-e 'd' \ +'$1' +endef + # $(call get-missing-inputs,,) define get-missing-inputs $(SED) \ @@ -1592,11 +1708,11 @@ endef # extensions (a sign that it's graphicx complaining). # # $(call get-graphics,) -#.log,$(addprefix $*.,d $(build_target_extension) _graphics) define get-graphics $(SED) \ -e '/^File: \(.*\) Graphic file (type [^)]*)/{' \ -e ' s//\1/' \ +-e ' s/\.e\{0,1\}ps$$//' \ -e ' b addtargets' \ -e '}' \ -e '$${' \ @@ -1640,7 +1756,7 @@ $(SED) \ -e 'h' \ -e 'd' \ -e ':start' \ --e '/^[^[:cntrl:]:]*:[[:digit:]]\{1,\}: LaTeX Error: File `/{' \ +-e '/^[^[:cntrl:]:]*:[[:digit:]]\{1,\}:[[:space:][:cntrl:]]*LaTeX[[:space:][:cntrl:]]*Error:[[:space:][:cntrl:]]*File `/{' \ -e ' s/\n//g' \ -e ' b needonemore' \ -e '}' \ @@ -1652,7 +1768,13 @@ $(SED) \ -e ' s/\n\{1,\}/ /g' \ -e ' s/[[:space:]]\{1,\}/ /g' \ -e ' s/^.*File `//' \ --e ' s/'"'"' not found\..*extensions: \([^[:space:]]*\).*/::::\1/' \ +-e ' /extensions: /{' \ +-e ' s/'"'"' not found\..*extensions: \([^[:space:]]*\).*/::::\1/' \ +-e ' b fileparsed' \ +-e ' }' \ +-e ' s/'"'"' not found\..*/::::/' \ +-e ' :fileparsed' \ +-e ' s/\.e\{0,1\}ps::::$$/::::/' \ -e ' h' \ -e ' s/\(.*\)::::\(.*\)/# MISSING stem "\1" - allowed extensions are "\2" - leave comment here - it affects the build/' \ -e ' p' \ @@ -1677,6 +1799,58 @@ $(SED) \ $1.log endef +# Get some special comments out of the source file (e.g., paper size, beamer +# usage, etc.) +# +# $(call get-source-specials,,) +define get-source-specials +$(SED) \ +-e '/^%%[[:space:]]*\([^%].*\)[[:space:]]*$$/{' \ +-e ' s//\1/' \ +-e ' s/[[:space:]]//g' \ +-e ' /BEAMER/{' \ +-e ' /BEAMERLARGE/!d' \ +-e ' s/.*/BEAMER/' \ +-e ' }' \ +-e ' p' \ +-e ' d' \ +-e '}' \ +-e '/\\documentclass[^{]*{.*}/b procclass' \ +-e '/\\documentclass/,/}/{' \ +-e ' s/%.*//' \ +-e ' H' \ +-e ' /}/{' \ +-e ' s/.*//' \ +-e ' x' \ +-e ' b procclass' \ +-e ' }' \ +-e ' d' \ +-e '}' \ +-e 'd' \ +-e ':procclass' \ +-e 's/\\documentclass//' \ +-e 's/[][]//g' \ +-e 's/{.*}//' \ +-e 's/[[:cntrl:][:space:]]*//g' \ +-e 's/,/ /g' \ +-e 's/^/ /' \ +-e 's/$$/ /' \ +-e '/.* \([[:alnum:]]\{1,\}\)paper .*/{' \ +-e ' h' \ +-e ' s//PAPERSIZE=\1/' \ +-e ' p' \ +-e ' g' \ +-e '}' \ +-e '/.* landscape .*/{' \ +-e ' h' \ +-e ' s//ORIENTATION=landscape/' \ +-e ' p' \ +-e ' g' \ +-e '}' \ +-e 'd' \ +$1 > '$2' +endef + # Checks for build failure due to pstex inclusion, and gives instructions. # # $(call die-on-pstexs,) @@ -1720,7 +1894,7 @@ endef # # $(call die-on-no-aux,) define die-on-no-aux -if [ ! -e '$1.aux' ]; then \ +if $(call test-not-exists,$1.aux); then \ $(call colorize-latex-errors,$1.log); \ $(ECHO) "$(C_ERROR)Error: failed to create $1.aux$(C_RESET)"; \ exit 1; \ @@ -1770,9 +1944,9 @@ $(SED) \ -e 's/[[:space:]]/\\&/g' \ -e 's/,/.bib /g' \ -e 's/ \{1,\}$$//' \ -$1 | $(XARGS) $(KPSEWHICH) '#######' | \ +'$1' | $(XARGS) $(KPSEWHICH) '#######' | \ $(SED) \ --e 's!^!$2: !' | \ +-e 's!.*!$2: $$(call path-norm,&)!' | \ $(SORT) | $(UNIQ) endef @@ -1899,7 +2073,7 @@ $(SED) \ -e '}' \ -e 's/^[^[:cntrl:]:]*:[[:digit:]]\{1,\}:/!!! &/' \ -e 's/^\(.*\n\)\([^[:cntrl:]:]*:[[:digit:]]\{1,\}: .*\)/\1!!! \2/' \ --e '/^!!! .* LaTeX Error: File /{' \ +-e '/^!!! .*[[:space:][:cntrl:]]LaTeX[[:space:][:cntrl:]]Error:[[:space:][:cntrl:]]*File /{' \ -e ' s/\n//g' \ -e ' b needonemore' \ -e '}' \ @@ -1918,10 +2092,12 @@ $(SED) \ -e ' b needonemore' \ -e ' }' \ -e ' s/::0::!!! //' \ +-e ' /File .*\.e\{0,1\}ps'"'"' not found/b skip' \ -e ' /could not locate.*any of these extensions:/{' \ --e ' d' \ +-e ' b skip' \ -e ' }' \ -e ' s/\(not found\.\).*/\1/' \ +-e ' s/^/!!! /' \ -e ' b error' \ -e '}' \ -e '/^\(.* LaTeX Error: Missing .begin.document.\.\).*/{' \ @@ -1940,8 +2116,10 @@ $(SED) \ -e ' s//\1/' \ -e ' s/[[:cntrl:]]//' \ -e ' s/[[:cntrl:]]$$//' \ +-e ' /Cannot determine size of graphic .*(no BoundingBox)/b skip' \ -e ' b error' \ -e '}' \ +-e ':skip' \ -e 'd' \ -e ':error' \ -e 's/^!\(!! \)\{0,1\}\(.*\)/$(C_ERROR)\2$(C_RESET)/' \ @@ -2033,22 +2211,26 @@ endef # Get all important .aux files from the top-level .aux file and merges them all # into a single file, which it outputs to stdout. +# It does this by finding all \input commands and creating a new sed script +# that reads those files inline when it encounters one. +# It then runs that sed script, generating a flattened aux file, and +# then it cleans up the flattened file by removing some crufty things. # # $(call flatten-aux,,) define flatten-aux $(SED) \ -e '/\\@input{\(.*\)}/{' \ --e 's//\1/' \ --e 's![.:]!\\&!g' \ --e 'h' \ --e 's!.*!\\:\\\\@input{&}:{!' \ --e 'p' \ --e 'x' \ --e 's/\\././g' \ --e 's/.*/r &/p' \ --e 's/.*/d/p' \ --e 's/.*/}/p' \ --e 'd' \ +-e ' s//\1/' \ +-e ' s![.:]!\\&!g' \ +-e ' h' \ +-e ' s!.*!\\:\\\\@input{&}:{!' \ +-e ' p' \ +-e ' x' \ +-e ' s/\\././g' \ +-e ' s/.*/r &/p' \ +-e ' s/.*/d/p' \ +-e ' s/.*/}/p' \ +-e ' d' \ -e '}' \ -e 'd' \ '$1' > "$1.$$$$.sed.make"; \ @@ -2105,9 +2287,10 @@ $(SED) \ -e ' b end' \ -e ' }' \ -e ' / *LaTeX Error:.*/{' \ --e ' s/.*\( *LaTeX Error:.*\)/$(C_ERROR)\1$(C_RESET)/' \ --e ' b end' \ +-e ' s/.*\( *LaTeX Error:.*\)/\1/' \ +-e ' b error' \ -e ' }' \ +-e ' /^[^[:cntrl:]:]*:[[:digit:]]\{1,\}:/b error' \ -e ' /.*Warning:.*/{' \ -e ' s//$(C_WARNING)&$(C_RESET)/' \ -e ' b end' \ @@ -2121,6 +2304,9 @@ $(SED) \ -e ' b end' \ -e ' }' \ -e ' d' \ +-e ' :error' \ +-e ' s/.*/$(C_ERROR)&$(C_RESET)/' \ +-e ' b end' \ -e ' :end' \ -e ' G' \ -e '}' @@ -2150,7 +2336,10 @@ $(SED) \ enlarge_beamer = $(PSNUP) -l -1 -W128mm -H96mm -pletter # $(call test-run-again,) -test-run-again = $(EGREP) -q '^(.*Rerun .*|No file $1\.[^.]+\.)$$' $1.log +define test-run-again +$(EGREP) '^(.*Rerun .*|No file $1\.[^.]+\.)$$' $1.log \ +| $(EGREP) -q -v '^(Package: rerunfilecheck.*Rerun checks for auxiliary files.*)$$' +endef # This tests whether the build target commands should be run at all, from # viewing the log file. @@ -2159,13 +2348,24 @@ define test-log-for-need-to-run $(SED) \ -e '/^No file $(call escape-fname-regex,$1)\.aux\./d' \ $1.log \ -| $(EGREP) -q '^(.*Rerun .*|No file $1\.[^.]+\.|No file .+\.tex\.|LaTeX Warning: File.*)$$' +| $(EGREP) '^(.*Rerun .*|No file $1\.[^.]+\.|No file .+\.tex\.|LaTeX Warning: File.*)$$' \ +| $(EGREP) -q -v '^(Package: rerunfilecheck.*Rerun checks for auxiliary files.*)$$' endef # LaTeX invocations # -# $(call latex,,[]) -run-latex = $(latex_build_program) -interaction=batchmode -file-line-error $(if $2,$2,) $1 > /dev/null +# Note that we use +# +# -recorder: generates .fls files for things that are input and output +# -jobname: to make sure that .fls files are named after the source that created them +# -file-line-error: to make sure that we have good line information for error output +# -interaction=batchmode: so that we don't stop on errors (we'll parse logs for that) +# +# $(call latex,,[extra LaTeX args]) +define run-latex +$(latex_build_program) -jobname='$1' -interaction=batchmode -file-line-error $(LATEX_OPTS) $(if $2,$2,) $1 > /dev/null; \ +$(call transcript,latex,$1) +endef # $(call latex-color-log,) latex-color-log = $(color_tex) $1.log @@ -2178,11 +2378,11 @@ then \ $(call colorize-makeindex-errors,$3); \ $(RM) -f '$2'; \ success=0; \ + $(call transcript,makeindex,$1); \ fi; \ [ "$$success" = "1" ] && $(sh_true) || $(sh_false); endef - # $(call run-xindy,,,,) define run-xindy success=1; \ @@ -2190,6 +2390,7 @@ if ! $(XINDY) -q -o $2 -L $(XINDYLANG) -C $(XINDYENC) -I xindy -M $3 -t $4 $1 > $(call colorize-xindy-errors,$4); \ $(RM) -f '$2'; \ success=0; \ + $(call transcript,xindy,$1); \ fi; \ [ "$$success" = "1" ] && $(sh_true) || $(sh_false); endef @@ -2200,7 +2401,8 @@ endef # # $(call run-script,,,) define run-script -[ ! -e '$2.cookie' ] && $(ECHO) "restarts=$(RESTARTS)" > $2.cookie && $(ECHO) "level=$(MAKELEVEL)" >> $2.cookie; \ +$(call test-not-exists,$2.cookie) && $(ECHO) "restarts=$(RESTARTS)" \ + > $2.cookie && $(ECHO) "level=$(MAKELEVEL)" >> $2.cookie; \ restarts=`$(SED) -n -e 's/^restarts=//p' $2.cookie`; \ level=`$(SED) -n -e 's/^level=//p' $2.cookie`; \ if $(EXPR) $(MAKELEVEL) '<=' $$level '&' $(RESTARTS) '<=' $$restarts >/dev/null; then \ @@ -2214,8 +2416,7 @@ endef # BibTeX invocations # # $(call run-bibtex,) -run-bibtex = $(BIBTEX) $1 | $(color_bib) - +run-bibtex = $(BIBTEX) $1 | $(color_bib); $(call transcript,bibtex,$1) # $(call convert-eps-to-pdf,,,[gray]) # Note that we don't use the --filter flag because it has trouble with bounding boxes that way. @@ -2295,11 +2496,11 @@ success=1; \ if ! $(GNUPLOT) $$fnames 2>$1.log; then \ $(call colorize-gnuplot-errors,$1.log); \ success=0; \ -else \ - if ! $(call gpi-embed-pdf-fonts,$2,$2.embed.make); then \ - success = 0; \ +elif [ x"$(suffix $2)" = x".pdf" ]; then \ + if ! $(call gpi-embed-pdf-fonts,$2,$2.embed.tmp.make); then \ + success=0; \ else \ - $(call move-if-exists,$2.embed.make,$2); \ + $(call move-if-exists,$2.embed.tmp.make,$2); \ fi; \ fi; \ $(if $(gpi_sed),$(call remove-temporary-files,$1.temp.make);,) \ @@ -2365,6 +2566,23 @@ convert-xvg = $(XMGRACE) '$1' -printfile - -hardcopy -hdevice $(if $3,-mono,) EP # $(call convert-epsgz,,,[gray]) convert-epsgz = $(GUNZIP) -c '$1' $(if $3,| $(call kill-ps-color)) > '$2' +# Generates a .bb file from a .eps file (sometimes latex really wants this) +# +# $(call eps-bb,,) +define eps-bb +$(SED) \ +-e '/^%%Title:/p' \ +-e '/^%%Creator:/p' \ +-e '/^%%BoundingBox:/p' \ +-e '/^%%CreationDate:/p' \ +-e '/^%%EndComments/{' \ +-e ' d' \ +-e ' q' \ +-e '}' \ +-e 'd' \ +$1 > "$2" +endef + # Converts .eps files into .eps files (usually a no-op, but can make grayscale) # # $(call convert-eps,,,[gray]) @@ -2493,10 +2711,10 @@ $(call colorize-dot-errors,$3) endef # Convert DVI to Postscript -# $(call make-ps,,,,[]) +# $(call make-ps,,,,[],[]) make-ps = \ - $(DVIPS) -z -o '$2' $(if $(filter-out BEAMER,$4),-t$(firstword $4),) '$1' \ - $(if $(filter BEAMER,$4),| $(enlarge_beamer)) > $3 2>&1 + $(DVIPS) -z -o '$2' $(if $(strip $4),-t$(strip $4),) '$1' \ + $(if $5,| $(enlarge_beamer)) > $3 2>&1 # Convert Postscript to PDF # $(call make-pdf,,,,) @@ -2598,10 +2816,11 @@ ifeq "$(strip $(BUILD_STRATEGY))" "latex" fi .SECONDARY: $(all_ps_targets) -%.ps: %.dvi %.paper.make +%.ps: %.dvi %.paper.make %.beamer.make $(QUIET)$(call echo-build,$<,$@) $(QUIET)$(call make-ps,$<,$@.temp,$@.log,\ - $(firstword $(shell $(CAT) $*.paper.make))); \ + $(strip $(shell $(CAT) $*.paper.make)),\ + $(strip $(shell $(CAT) $*.beamer.make))); \ if [ x"$$?" = x"0" ]; then \ $(if $(VERBOSE),$(CAT) $@.log,:); \ $(RM) -f '$@'; \ @@ -2670,24 +2889,29 @@ endif run=0; \ for i in 1; do \ if $(call test-exists,$*.bbl.cookie); then \ + $(call set-run-reason,$*.bbl.cookie is present); \ run=1; \ break; \ fi; \ if $(call test-exists,$*.run.cookie); then \ + $(call set-run-reason,$*.run.cookie is present); \ run=1; \ break; \ fi; \ if $(call \ test-exists-and-different,$*.auxtarget.cookie,$*.auxtarget.make);\ then \ + $(call set-run-reason,$*.auxtarget.cookie differs from $*.auxtarget.make); \ run=1; \ break; \ fi; \ if $(call test-log-for-need-to-run,$*); then \ + $(call set-run-reason,$*.log indicated that this is necessary); \ run=1; \ break; \ fi; \ - if [ ! -e $*.1st.*.make ]; then \ + if $(call test-not-exists,$@.1st.make); then \ + $(call set-run-reason,$@.1st.make does not exist); \ run=1; \ break; \ fi; \ @@ -2703,7 +2927,11 @@ endif ); \ $(call run-latex,$*); \ $(CP) '$*.log' '$*.'$(RESTARTS)-$$i'.log'; \ - $(call test-run-again,$*) || break; \ + if $(call test-run-again,$*); then \ + $(call set-run-reason,rerun requested by $*.log); \ + else \ + break; \ + fi; \ done; \ else \ $(MV) '$@.1st.make' '$@'; \ @@ -2727,6 +2955,7 @@ endif $(QUIET)\ $(if $(filter %.bib,$^),\ $(call echo-build,$(filter %.bib,$?) $*.aux,$@); \ + $(call set-run-reason,dependencies of $@ changed); \ $(call run-bibtex,$*); \ $(TOUCH) $@.cookie; \ ) \ @@ -2765,15 +2994,26 @@ endif $(QUIET)$(call run-xindy,$<,$@,$*,$*.glg) # Create the glossary file from a nomenclature file -%.gls: %.glo %.tex nomencl.ist +%.gls: %.glo %.tex $(call path-norm,$(shell $(KPSEWHICH) nomencl.ist || $(ECHO) nomencl.ist)) $(QUIET)$(call echo-build,$<,$@) $(QUIET)$(call run-makeindex,$<,$@,$*.glg,nomencl.ist) # Create the nomenclature file -%.nls: %.nlo %.tex nomencl.ist +%.nls: %.nlo %.tex $(call path-norm,$(shell $(KPSEWHICH) nomencl.ist || $(ECHO) nomencl.ist)) $(QUIET)$(call echo-build,$<,$@) $(QUIET)$(call run-makeindex,$<,$@,$*.nlg,nomencl.ist) +# Precompile the format file +%.fmt: %.tex + $(QUIET)$(call echo-build,$<,$@) + $(QUIET)\ + $(call run-latex,$*,-ini "&$(latex_build_program) $*.tex\dump"); \ + fatal=`$(call colorize-latex-errors,$*.log)`; \ + if [ x"$$fatal" != x"" ]; then \ + $(ECHO) "$$fatal"; \ + exit 1; \ + fi; + # SCRIPTED LaTeX TARGETS # # Keep the generated .tex files around for debugging if needed. @@ -2794,6 +3034,11 @@ endif --documentoptions=letterpaper\ $(if $(RST_STYLE_FILE),--stylesheet=$(RST_STYLE_FILE),),$<,$@) +%.tex:: %.lhs + $(QUIET)\ + function run_lhs2tex() { $(LHS2TEX) -o "$$2" "$$1"; }; \ + $(call run-script,run_lhs2tex,$<,$@) + # # GRAPHICS TARGETS # @@ -2854,6 +3099,15 @@ endif endif +# TODO: capture mpost output and display errors +# TODO: figure out why pdf generation is erroring out (but working anyway) +%.eps %.mps %.mpx %.log: %.mp + $(QUIET)$(call echo-graphic,$^,$@) + $(QUIET)$(MPOST) $* + $(QUIET)$(call move-if-exists,$*.mps,$*.eps) + $(QUIET)$(call move-if-exists,$*.log,$*.log.make) + $(QUIET)$(call move-if-exists,$*.mpx,$*.mpx.make) + %.eps: %.gpi %.gpi.d $(gpi_sed) $(gpi_global) $(QUIET)$(call echo-graphic,$^,$@) $(QUIET)$(call convert-gpi,$<,$@,$(GRAY)) @@ -2892,6 +3146,10 @@ ifneq "$(default_graphic_extension)" "pdf" $(QUIET)$(call convert-png,$<,$@,$(GRAY)) endif +%.eps.bb: %.eps + $(QUIET)$(call echo-graphic,$^,$@) + $(QUIET)$(call eps-bb,$<,$@) + %.eps: %.eps.gz $(if $(GRAY),$(gray_eps_file)) $(QUIET)$(call echo-graphic,$^,$@) $(QUIET)$(call convert-epsgz,$<,$@,$(GRAY)) @@ -2950,7 +3208,8 @@ endif %.$(build_target_extension).1st.make %.d %.aux %.aux.make %.fls: %.tex $(QUIET)$(call echo-build,$<,$*.d $*.$(build_target_extension).1st.make,$(RESTARTS)-1) $(QUIET)\ - $(call run-latex,$<,-recorder) || $(sh_true); \ + $(call set-run-reason,need to build .d and .$(build_target_extension).1st.make); \ + $(call run-latex,$*,-recorder) || $(sh_true); \ $(CP) '$*.log' '$*.$(RESTARTS)-1.log'; \ $(call die-on-import-sty,$*.log); \ $(call die-on-dot2tex,$*.log); \ @@ -2959,12 +3218,14 @@ endif $(ECHO) "# vim: ft=make" > $*.d; \ $(ECHO) ".PHONY: $*._graphics" >> $*.d; \ $(call get-inputs,$*.fls,$(addprefix $*.,aux aux.make d $(build_target_extension))) >> $*.d; \ + $(call get-format,$<,$(addprefix $*.,fls aux aux.make d $(build_target_extension) $(build_target_extension).1st.make)) >> $*.d; \ $(call get-missing-inputs,$*.log,$(addprefix $*.,aux aux.make d $(build_target_extension))) >> $*.d; \ $(ECHO) ".SECONDEXPANSION:" >> $*.d; \ $(call get-graphics,$*) >> $*.d; \ $(call get-log-index,$*,$(addprefix $*.,aux aux.make)) >> $*.d; \ $(call get-bibs,$*.aux.make,$(addprefix $*.,bbl aux aux.make)) >> $*.d; \ - $(EGREP) -q "# MISSING" $*.d && $(SLEEP) 1 && $(RM) $*.pdf; \ + $(EGREP) -q "# MISSING stem" $*.d && $(SLEEP) 1 && $(RM) $*.pdf; \ + $(EGREP) -q "# MISSING format" $*.d && $(RM) $*.pdf; \ $(call move-if-exists,$*.$(build_target_extension),$*.$(build_target_extension).1st.make); \ for s in toc out lot lof lol nav; do \ if [ -e "$*.$$s" ]; then \ @@ -2991,42 +3252,27 @@ endif $(QUIET)$(call echo-build,$<,$@) $(QUIET)$(call make-gpi-d,$<,$@) +# Get source specials, e.g., paper size and special %% comments. +%.specials.make: %.tex + $(QUIET)$(call get-source-specials,$<,$@) + +# Get info about whether to enlarge beamer postscript files (for use with +# dvips, and requires a special comment in the source file). +.SECONDARY: $(addsuffix .specials.make,$(all_stems_ss)) +%.beamer.make: %.specials.make + $(QUIET)$(SED) -e 's/^BEAMER.*/BEAMER/p' -e 'd' '$<' > '$@' + # Store the paper size for this document -- note that if beamer is used we set # it to the special BEAMER paper size. We only do this, however, if the # special comment exists, in which case we enlarge the output with psnup. # # The paper size is extracted from a documentclass attribute. -%.paper.make: %.tex - $(QUIET)$(SED) \ - -e '/\\documentclass/,/}/{' \ - -e ' s/%.*//' \ - -e ' H' \ - -e ' /}/{' \ - -e ' s/.*//' \ - -e ' x' \ - -e ' /\\documentclass/!d' \ - -e ' s/[\n[:space:]]*//g' \ - -e ' s/\([,{[]\)\([[:alnum:]]\{1,\}\)paper\([],}]\)/\1%-\2-%\3/g' \ - -e ' s/\([,{[]\)\(landscape\)\([],}]\)/\1%-\2-%\3/g' \ - -e ' s/^[^%]*%-//' \ - -e ' s/-%[^%]*$$//' \ - -e ' s/-%[^%]%-/ /g' \ - -e ' p' \ - -e ' }' \ - -e ' d' \ - -e '}' \ - -e 'd' \ - $< > $@; \ - $(EGREP) -q '^[^%]*\\documentclass[^{]*{beamer}' $< && \ - (\ - $(EGREP) -q '^%%[[:space:]]*BEAMER[[:space:]]*LARGE$$' $< && \ - $(ECHO) "BEAMER" > $@ || \ - : > $@ \ - ) || $(sh_true) +%.paper.make: %.specials.make + $(QUIET)$(SED) -e 's/^PAPERSIZE=//p' -e 'd' '$<' > '$@' # Store embedding instructions for this document using a special comment -%.embed.make: %.tex - $(QUIET)$(EGREP) '^%%[[:space:]]*NO[[:space:]]*EMBED[[:space:]]*$$' $< \ +%.embed.make: %.specials.make + $(QUIET)$(EGREP) '^NOEMBED$$' $< \ && $(ECHO) '' > $@ \ || $(ECHO) '1' > $@; @@ -3120,6 +3366,11 @@ _sources: $(QUIET)$(ECHO) "== Sources ==" $(QUIET)$(call echo-list,$(sort $(files.tex))) +.PHONY: _source_gens +_source_gens: + $(QUIET)$(ECHO) "== Generated Sources ==" + $(QUIET)$(call echo-list,$(sort $(files_source_gen))) + .PHONY: _scripts _scripts: $(QUIET)$(ECHO) "== Scripts ==" @@ -3277,7 +3528,7 @@ define help_text # ./generating_script.weird_lang > $$@ # # In this file, you have access to all of the variables that the -# makefile creates, like $(onlysources.tex). While accessing those can +# makefile creates, like $$(onlysources.tex). While accessing those can # be somewhat brittle (they are implementation details and may change), # it is a great way to test your ideas when submitting feature requests. # @@ -3626,6 +3877,10 @@ define help_text # assumes that the top-level rst file will change if you want a # rebuild. # +# literate Haskell: %.lhs +# +# Runs the lhs2tex program to generate a .tex file. +# # Dependencies: # # In general, dependencies are extracted directly from LaTeX output on diff --git a/Preamble/preamble.tex b/Preamble/preamble.tex index 37660cf..5aa7074 100644 --- a/Preamble/preamble.tex +++ b/Preamble/preamble.tex @@ -64,7 +64,6 @@ \onehalfspace - % ********************** Adding TOC and List of Figures ************************ % To hide sections from appearing in TOC add \tochide\section{Section name} \setcounter{secnumdepth}{2} @@ -72,3 +71,8 @@ % To restrict the length of the figure caption in List of figures use: % \caption[Caption that you want to appear in TOC]{Actual caption of the figure} % \section[short]{title} + + +% ******************************* Nomenclature ********************************* +% To change the name of the Nomenclature section, uncomment the following line +% \renewcommand\nomname{Symbols} diff --git a/compile-thesis.sh b/compile-thesis.sh index 5712858..4e3c9a3 100644 --- a/compile-thesis.sh +++ b/compile-thesis.sh @@ -5,47 +5,82 @@ compile="compile"; clean="clean"; -if test -z "$1" +if test -z "$2" then +if [ $1 = $clean ]; then + echo "Cleaning please wait ..." + rm -f *~ + rm -rf *.aux + rm -rf *.bbl + rm -rf *.blg + rm -rf *.d + rm -rf *.fls + rm -rf *.ilg + rm -rf *.ind + rm -rf *.toc* + rm -rf *.lot* + rm -rf *.lof* + rm -rf *.log + rm -rf *.idx + rm -rf *.out* + rm -rf *.nlo + rm -rf *.nls + rm -rf $filename.pdf + rm -rf $filename.ps + rm -rf $filename.dvi + rm -rf *#* + echo "Cleaning complete!" + exit +else echo "Shell scrip for compiling the PhD Thesis" - echo "Usage: sh ./compile-thesis.sh [OPTIONS]" - echo " compile: Compiles the PhD Thesis" - echo " clean: removes temporary files" + echo "Usage: sh ./compile-thesis.sh [OPTIONS] [filename]" + echo "[option] compile: Compiles the PhD Thesis" + echo "[option] clean: removes temporary files no filename required" exit fi +fi + +filename=$2; if [ $1 = $clean ]; then echo "Cleaning please wait ..." rm -f *~ - rm -f *.aux* - rm -f *.bbl - rm -f *.blg - rm -f *.d - rm -f *.fls - rm -f *.ilg - rm -f *.ind - rm -f *.toc* - rm -f *.lot* - rm -f *.lof* - rm -f *.log - rm -f *.idx - rm -f *.out* - rm -f *.pdf - rm -f *.nlo - rm -f *.dvi + rm -rf *.aux + rm -rf *.bbl + rm -rf *.blg + rm -rf *.d + rm -rf *.fls + rm -rf *.ilg + rm -rf *.ind + rm -rf *.toc* + rm -rf *.lot* + rm -rf *.lof* + rm -rf *.log + rm -rf *.idx + rm -rf *.out* + rm -rf *.nlo + rm -rf *.nls + rm -rf $filename.pdf + rm -rf $filename.ps + rm -rf $filename.dvi + rm -rf *#* echo "Cleaning complete!" exit elif [ $1 = $compile ]; then echo "Compiling your PhD Thesis...please wait...!" - pdflatex -interaction=nonstopmode thesis.tex - bibtex thesis.aux - pdflatex -interaction=nonstopmode thesis.tex + pdflatex -interaction=nonstopmode $filename.tex + bibtex $filename.aux + pdflatex -interaction=nonstopmode $filename.tex + makeindex $filename.nlo -s nomencl.ist -o $filename.nls + pdflatex -interaction=nonstopmode $filename.tex + makeindex $filename.nlo -s nomencl.ist -o $filename.nls + pdflatex -interaction=nonstopmode $filename.tex echo "Success!" exit fi -if test -z "$2" +if test -z "$3" then exit fi diff --git a/thesis.pdf b/thesis.pdf index 14c9c26e99883819e48d5e4fec6a506f86c325c1..1af4512c586117da1d23bf14cbd3b1b01c48fa3e 100644 GIT binary patch delta 83744 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