Friday, February 11, 2011

Updated LaTeX document class for Ohio State University (OSU) graduate school dissertation and thesis documents

Back in 1996, The Ohio State University Electrical and Computer Engineering (ECE) department made available LaTeX2e support files including a document class that complied with the graduate school's format for dissertations (see samples pages, guidelines, templates, and other resources from the graduate school). The resulting osudissert96.cls and osudissert96-mods.sty from the ECE department was kept up to date through 1998, but it was left to lapse out of compliance after several format updates from the graduate school (including a recent one in 2009). Additionally, the graduate school only officially supports helping students with documents "typeset" in Microsoft Word (and even their Word templates may require a more recent version than they claim on the website).

So back when I put together my dissertation (which has source code available to review) in 2010, I updated those old ECE templates for the 2010 format. I tried to make them backward compatible with the old osudissert96 to make them nice drop-in replacements for anyone using the outdated versions. You can find them at:For the most part, the old osudissert96 documentation still applies. However, it might be better just browsing through the sample and/or using the sample as a template for your own document. To get the sample up and running,
  1. Unzip sample-osudissert10.zip.
  2. Unzip osudissert10.zip.
  3. Put the CLS and STY files from osudissert10.zip into the same directory as the files from sample-osudissert10.zip
  4. Build the sample dissertation with:
    1. pdflatex Thesis.tex
    2. bibtex Thesis.aux
    3. pdflatex Thesis.tex
    4. pdflatex Thesis.tex
  5. Review the resulting Thesis.pdf file, which also includes documentation on how to get your own dissertation up and running.
There is also a README file in sample-osudissert10.zip that basically says the same as above. Experts may just need the files in osudissert10.zip, but it will still be useful to see the quick reference in Appendix B of the sample dissertation. Note that the documentclass is still called osudissert96.cls even though the zip file is called osudissert10.zip; this choice was made for compatibility with old dissertations using the old files.

I hope that helps someone out there. I probably won't be monitoring the graduate school format policies now that I am not in graduate school anymore, but I am usually happy to help with "how-to-modify" questions over e-mail (if I have time). Good luck!

21 comments:

John said...

Thanks for these updates, Ted! I'd been dreading making these changes for my M.Sc.E.E. thesis and I appreciate you taking the time to share the updates you made.

Carrie LI said...

Ted, thank you so much for making this available. However, I was wondering that if I am not using the citation in the text part, but just type the authors' name and years, how can I make the compile of Bibfile work ? Thanks you so much for your helps.

Ted Pavlic said...

Carrie -- What you're asking is a little unconventional (I'm guessing you typed everything out, and are porting things to LaTeX after-the-fact rather than using LaTeX's citation support up front?). However, there are several ways to achieve what you want. I'll list two, which each have their own pros and cons. There are other options as well.

For simplicity of presentation, I'll list each option as a separate comment... so two more comments to follow this one!

Ted Pavlic said...

Carrie -- (continued...)

The first option is to use bibentry, which comes with the natbib package. You can find information about the natbib package here:

http://ctan.org/pkg/natbib

Here's the basic idea. In your preamble, you include both natbib and bibentry:

\usepackage{natbib}
\usepackage{bibentry}

You should also configure your desired bibliography style. Unfortunately, that means you should pick a bibliography style that is compatible with natbib. The standard LaTeX ones (e.g., plain and abbrv) have natbib-compatible versions (e.g., plainnat, and abbrvnat). In your case, you're probably using author-year (i.e., "Harvard style") citations. So you need to pick a natbib-compatible bibliography style that is compatible with author-year. So let's pick abbrvnat to start:

\bibliographystyle{abbrvnat}

If you don't like abbrvnat, you can generate your own customized natbib-compatible bibliography style file using "makebst" (i.e., you run "latex makebst" and go through a long set of questions, then you save a DBJ out, then you run latex on that DBJ (e.g., "latex blah.dbj") to create a BST (e.g., "blah.bst") that you can use in your bibliography style (e.g., "\bibliographystyle{blah}")).

Once you do all of that, then you're almost all done. Finally, go down where your references are supposed to be in your TeX source. That is, this is the place where you would normally put a:

\bibliography{FILE}

where "FILE" is the first part of your BIB's name. Change that line to:

\nobibliography{FILE}
\begin{thebibliography}{1}
\item \bibentry{FirstBibKeyToList}
\item \bibentry{SecondBibKeyToList}
%...
\item \bibentry{LastBibKeyToList}
\end{thebibliography}

where "FirstBibKeyToList" is the BibTeX key name corresponding to the entry you want first in your references list. "SecondBibKeyToList" is the second such key. etc. etc.

So in this method, sorting is up to you. The only thing LaTeX helps you with is formatting each line.

Ted Pavlic said...

Carrie -- (continued...)

Last but not least, here's the simpler solution, which you can also find summarized here:

http://aquaryus.wordpress.com/2009/04/09/latex-show-bibliography-references-without-citing/

Without using anything fancy like natbib or bibentry, you can use the standard "\nocite" command to add citations without actually adding anything in the text. That is, in your preamble you don't define anything special (although you could still use natbib) except for your bibliographystyle (which you can also place later near your \bibliography line). Then anywhere in your TeX source, put

\nocite{BibKeyIWantToCite}

where "BibKeyIWantToCite" is a BibTeX key from your BIB file that you want to include. Add as many \nocite's as you want. Then, at the appropriate place, use the standard

\bibliography{FILE}

line as usual (where "FILE" is the first part of your BIB file name). When you build your document (running latex once, then bibtex once, then latex twice), your reference list should be generated as if you had in-line citations.

If you just want to include EVERYTHING from your BST file into your references, then use:

\nocite{*}

somewhere in your document (e.g, just before the \bibliography line).

[ FYI, for more information about getting author-year style citations working in LaTeX WITHOUT the use of natbib, you might look at the harvard package:

http://ctan.org/pkg/harvard

And try things (in your preamble) like:

\usepackage{harvard}
\bibliographystyle{kluwer}

Then do the same \nocite stuff as described above. ]

Carrie LI said...

Ted, Thank you so much for your answering about the bibliography. Yes, I follow your suggestions, and it worked really well. (So sorry for my delaying reply.)

I got another weird questions. I have two computers, both using windows. When I compile using computer A, it compiles correctly; however when I compile using computer B, the margin of the document turns out really narrow on the top and on the right. (I used the same files of my dissertation, and it only happened with the dissertation, but not other latex files.)

I've tried to figure out why the computer B could compile normally, but I couldn't find why. Do you have any clues on this ? Thank you again for your prompt helps and answers.

Ted Pavlic said...

Carrie -- most likely one computer is configured to for letter paper (US convention) by default and the other one is configured for A4 paper (European convention) by default.

Do you know what TeX distributions are installed on the two machines? For example, are they both TeXLive 2010 or 2011?

Most likely they're running TeXLive. In that case, you need to find the "tlmgr" or "TeXLive Manager" program. It's most likely available in Start->Programs (or Start->All Programs) somewhere. Otherwise, you can try running (Start->Run or just by typing this into the search box in the start menu on Windows 7) tlmgr. Inside tlmgr, you will have the option to change the default paper size.

If you're using MicTeX (instead of TeXLive), I think you can go to Start->Programs (or Start->All Programs) and then find the "MicTeX" folder and then find the "Settings" program. The default paper size is under the "General" tab.

There are some other possibilities. If you are using LaTeX (as opposed to PDFLaTeX) to build your document, then there are some dvips options that could cause problems like these.

An alternative to all of this is to make sure you're running an up-to-date LaTeX distribution on both machines. The osudissert document class tries to manage papersize, but a very old LaTeX distribution may not properly incorporate those cues.

Carrie LI said...

Many thanks!!!! problem solved!!! Thank you sooooo much!!

Unknown said...

Hi Ted,

Thanks for your contributions to osudissert96-mods.sty. The web site of the OSU statistics department includes a link to this page that I am posting to. So I thought I would start by asking you if there is a way to make updates to osudissert96-mods.sty available to others. I added support for a list of algorithms, which was fairly trivial to do, but I thought that perhaps others might benefit from it too.

Kyle

Ted Pavlic said...

@Kyle -- The osudissert10 mods I have here are not formally endorsed by OSU. I just had to make these changes to my own thesis and dissertation, and so it made sense to export them to whoever would be interested. It's great that other people are linking to them.

Personally, I would be afraid of adding such specialized capabilities to a dissertation format that is used by a broad audience, many who will not need those capabilities (for example, I receive e-mails asking for LaTeX dissertation help from people in the humanities). So, at least as far as the package I'm distributing here, I'd want to leave it as it is. That is, I want it to be as minimal as possible and as closely following from osudissert96 as it can (with backward compatibility).

In the case of publicizing algorithms in general, I did include an instantiation of the listings package in my LaTeX homework templates that are distributed elsewhere. For example, in this old template:

http://links.tedpavlic.com/tex/homework_new.tex

I use the \lstset macro of the listings package to build a MATLAB-specific listing environment which I use in other examples to include code in publications. IIRC, listings comes pre-loaded with several pseudo-code languages that can be used for general algorithm work. And, of course, there are algorithm-specific packages on CTAN that come bundled with most LaTeX distributions.

So in the special case of algorithms, I think most people can augment their own work with code from non-dissertation examples they can find elsewhere. Given that so many people use dissertation templates without the need for algorithm support, it seems (to me) like a better idea to keep them separate (unlike in my homework examples, where I was assuming the reason people were using LaTeX for homework was to do technical presentation).

Ted Pavlic said...

@Kyle -- Of course, you could post your code elsewhere (on pastebin.org, even), and I'd be happy to link to it.

Siddharth Singh said...

Thank you for making this template available!

Jason said...

Thanks Ted. You are a wonderful resource :)

Jeevan Baretto said...

Thank you so much! I really didn't want to use Word for my thesis and was looking for a latex template specific to OSU grad school guidelines. You saved my life :-)

Raghu said...

it is sad how the grad school wouldn't provide cls files which adhere to their guidelines, given that over 75% of the dissertations will be written using LaTex. Thanks for this!

Ninju said...

Thanks for making this document available. It solves a lot of hassle.

Anonymous said...

Thank you so much. Your template helps a lot.

Anonymous said...

Ted, this has been a wonderful resource in putting together my thesis. Thank you very much for making this available.

In submitting my copy for certification through the grade school they have flagged the Appendices line in the TOC as needing leading dots to the page number column. What might be the best way of going about adding leading dots to the current style page?

Unknown said...

Hi Ted!

Many thanks for this awesome package! I`ve been working on this for my proposal, so later I can update it for final dissertation. However, I want it to be single-line spacing for now, but I could never make it to work. No commands or tricks do not override its double-line spacing. I`m wondering if you can help me through this. Thanks a lot.

비글 said...

For anyone who wants to know how to get rid of the "Appendices" on the TOC, that does not have the leading dots:

1. Open [osudissert96-mods.sty]
2. Comment out line 234, which should be [\addcontentsline{toc}{part}{\appendicesname}%]

Unknown said...

Hi Ted,

Many thanks for uploading this package. It's a real life saver.

I have a question about its compatibility with the hyperref package. It seems to have trouble recognizing the bookmark level for "front" and defaults it to 0 with a warning.

Do you have an idea on how to deal with this issue?

Thanks again!