Download the zipped sources of my thesis here. There is a README file in there with some more information on how to use this format for your own thesis (please, please send me an email if you do that!), but here are some highlights of what I did...
Typographical and TeXnical features of my thesis
- I wrote my own nomenclature package, to deal with nomenclatures the way I wanted
- It responds correctly to \includeonly, unlike some packages on CTAN
- It shows its sort keys, in draft mode
- It separates definitions from references, and combines the references using the cleveref package
- I tweaked the list of figures so that it includes the chapter headings (only for chapters that contain figures)
- The generated PDF almost complies with the PDF/A-1b standard
- this is appropriate for archival, since it is more likely that it will be readable in many years' time
- also gets better metadata
- the main reason it fails to comply with PDF/A-1b is the code listings in the appendix that are generated from mathematica and acrobat distiller 7. Now that I have a more recent distiller I could probably fix this, if I took time to revisit it
- I don't actually assert PDF/A-1b compliance in the PDF, both because it doesn't completely conform and because if Adobe Reader sees a PDF/A document then it enters a special mode and disables some useful functionality (such as following hyperlinks).
- I had to hack around some bugs with the pdfx package to make this all work
- Multiple versions from the same source (see below)
- For the book versions, there is a thumb-index. I wrote my own code for this because the packages on CTAN didn't do what I wanted.
- Some useful features in draft mode (see below)
- I used some tricks to ensure that hyperlinks always point to the proper place (search for phantomsection, startappendices, tocbibind)
- I used the cleveref package for a couple of purposes (see nomenclature and copyright permissions)
- Various unusual aspects of the bibliography (see below)
- I am pretty fussy about making sure spaces are interword or inter-sentence, also about making sure no extra spaces slip in anywhere else (I corrected some of the packages I use to fix this)
- lots of subtle tweaks (eg., using ragged2e to get decent ragged-right setting in the bibliography, fixltx2e to fix some subtle vertical spacing problems)
- Body font is MinionPro (unfortunately this interferes with submitting to the arXiv, see below)
- Headings are in helvetica, mathcal is euler, latin modern for text sans-serif and tt, computer modern for maths sans-serif
- Minion Pro has Cyrillic characters (look in the bibliography at reference )
- I configured a semibold math version, for use in figure captions (eg caption to fig 5.4)
- I thought very carefully about which places to use each of the 4 figure versions available in Minion Pro (combinations of oldstyle/lining and proportional/tabular). You may not agree with my choices but rest assured that I did think hard about each one!
- I took a real \openone symbol taken from pazobb instead of the faked symbol made by revsymb4-1
- I prefer a 6-pointed asterisk for maths, so I override the 5-pointed asterisk from Minion Pro with one from Latin Modern.
I took care to make draft mode useful. Here is a version compiled with draftmode on.
- I combined the FiXme and todonotes packages, to get a nice list of corrections and nice margin notes
- I integrate svn-multi to get a list of revisions and a running footer with the rev number (useful when you get commented versions back from people)
- I tweaked the showkeys package, to put its annotations on a separate PDF layer (so they can be turned off without recompiling), unfortunately I could only get this to work for the \label and \bibitem annotations and not for \cite and \ref (see below), but these are the more useful cases anyway. I had to hack on the ocg package (not on CTAN) to make this all work.
- My nomenclature package shows its sort keys in draftmode
- Everything works properly with \includeonly (I locally hacked on bibunits) and took care with the nomenclature package
- Because the list of corrections and revisions only show up in draft mode, I take care to remove some pages from the draft mode, so the pagination doesn't change when switching between draft and final.
I include the generated figure files in the zip file (merged-pso.pdf, merged-pso-bwdk.pdf, figinput.tex), but if you want to see how they are produced, the raw files are there also...
- Workflow: most figures are assembled using an unholy combination of mathematica, matlab, igor pro and others, edited by hand in adobe illustrator and exported as eps. It's a big mess. I really wish I had a better system, but no tools seem to be capable of doing the types of figures I need in a cleaner way. See for example figure 4.12). I use Myriad Pro for numbering the axes. The eps files are run through psfrag to include mathematics set by tex, and then massaged via several other steps into a pdf with an appropriately tight bounding box. This is all done by a Makefile. A few figures are generated via a different process pgfplots
- The Makefile generates a precompiled header, to speed up generating the figures
- The individual figures are finally merged together into a big file (along with a list of their svn revisions, for tracking purposes) and compressed using a locally patched version of pdfsizeopt (the patches are on the pdfsizeopt bug tracker). This shrinks the pdf by a large fraction. It's slow, but I change the figures a lot less frequently than I edit the main text so it's a good tradeoff. I can also use the non-merged figures if I'm still actively editing them.
I heavily edited the bibliography style file I used, to support the features I wanted
- This is a thesis so no length crunch, so I wanted the full author list, full title, unabbreviated journal names, as much information as possible.
- I wanted proper hyperlinks from DOIs
- I wanted to deal properly with arXiv preprints
- I wanted to use the proper figure versions (lining, oldstyle) that looked right to me
- I also fixed some typos and bugs in the original bibstyle
- I integrated back-references to the pages where there are citations, using the backref package
- I hacked the natbib package to play nicely with backref
- I used a locally hacked version of the bibunits package, so I could have 3 bibliographies (one main bibliography, one for my own work that's included in the thesis, and one for copyright permissions
- I used the bibentry package so I could incorporate the exact details of the copyright permissions into the list of copyright permissions.
I used a few tricks to get pretty equations. I made use of the mathtools and amsmath packages. Search the sources for:
I use the same source to generate several versions of the document.
- All of the versions use the same width for the textblock and same font sizes, because life is too short to maintain multiple versions of multiline equations.
- There is a ugly version that complies with the letter of the grad school requirements for theses. In particular, it has true double spacing. I gave this one to the grad school office, but every other version uses 1.5 line spacing.
- The remaining versions all have the same textblock height, so if I make a tweak to remove a bad page break, I only have to do it once.
- There is a version for reading onscreen and a version for printing out single-sided for my readers. The only difference between these two is that the screen version uses colour for identifying hyperlinks (because I find the acrobat rectangles very distracting). Both these versions take take pains to override any page number resetting so that page n in the PDF reader is also printed as page n on the paper.
- There are also versions for printing duplex at lulu.com. There is a colour paperback version, a black and white paperback version and a colour hardback version. These versions are different because of wanting to control the conversion to black and white, and because the trim size is different on the hardback. These versions all share a handy thumb-index feature (coded by me) and have a different arrangement of their headers, consistent with the duplex layout. These ones do reset page numbers after the frontmatter, as is traditional for printed books.
- All of these versions can be compiled in draft mode as described above
- The version you can download from my thesis page is 60% smaller than the version for reading onscreen because I ran it through a locally patched version of pdfsizeopt (the patches are on the pdfsizeopt bug tracker). Make sure to use the --do-unify-fonts=false flag to avoid problems with missing glyphs in certain PDF viewers.
Packages with responsive authors
The authors of these packages released new versions of their packages with bugfixes, enhancements, or compatibility fixes, in response to issues I noticed while writing my thesis. I am very grateful to them....
There are some features I tried to include, but failed...
- \flushbottom (very hard for this type of document), with lots of figures, equations, subheadings
- on-grid typesetting (nearly impossible in latex, despite existence of the grid and gridset packages.
- I wanted to integrate the showkeys feature to show \ref and \cite labels, with a separate layer for these labels (incompatible with the combination of cleveref and hyperref)
- Would be nice to have an 'intermediate caps' font style, halfway between small caps and all caps, to use for acronyms
- I intended to only use constructs that would be legal for submitting to the arXiv, and made a number of choices on this basis. However, I got fooled by this page which until recently claimed that the arXiv would accept documents using Minion Pro, which they used to, but not any more.
Back to my thesis page