Versión en español de esta publicación.
Some time ago I wanted to write this post and I didn’t had the opportunity. In general, one would like to have as much information as possible to be able to structure your thesis document in the desired way. This has not been my case, and in an attempt to make things easier for someone else in the same situation, I have decided to make this writing. Learning to write all kinds of documents is a true delight! However, its not easy, here I intend to reflect some tips that have been useful for me to write my doctoral thesis document that eventually became a book and can be found in the following url.
Practices
Probably these tips are not for all people. Remember that my passion and main occupation is to program. And as a programmer I have in mind some concepts that I can not easily get rid of. When using you are practically programming, the difference is that when you compile, instead of watching a program, page, component, app, robot or whatever you are creating, you will see a beatiful document in pdf format. Although in reality it can be another format, but at the end of the day in this article I refer to a document and specifically, a pdf.
When programming a system, I always like and as much as possible have organization in the code. I like to separate the pieces of the program into easily manageable logical entities. I applied this practices to the writing of my doctoral document. And, similar to any programming language, allows you to modulate files of multiple formats in the document itself, without the need to have everything embedded in a monolithic file. When talking about files I mean multiple formats, in my thesis, I have separated text content files in multiple levels, image files, code files, bibliography files, among which I can think for the moment.
Thesis Structure
I have always been used to reading books and a large part of the decisions made to write a thesis is based precisely on the format of the books I have read, taking into account the ease of reading, the quality of the content, the ease of finding conclusions and references about something quickly, and in general, the experience of the end user. Probably the suggested structure is more like a book than a thesis document.
- Cover
For the cover there is not much to say, there is no standard way to do it. Therefore, it becomes somewhat an art because of the design side. The only thing to emphasize is the fulfillment of including all the information required by the university. - Dedication
From my point of view, this is a brief but indispensable part of the document. Styles vary but more than seeking a recommendation is to find the inspiration that dictates the right words that reflect these feelings. - Abstract
Although this section is not strictly necessary as a rule, I have always liked to know what a document is about, especially when it is of a considerable size. In any case, some authors caution against extending this section too much because of the possibility of duplicating content or discouraging the reader. In my opinion and as it is done in science articles, it is always good to know what a document is about and its objectives before immersing yourself in its reading. - Preface
It should be mentioned that this section is not strictly necessary but it is my pleasure to include it in the structure. - Acknowledgment
Space for acknowledgments. - Table of Contents
The typical table that shows the content of the thesis. - List of figures
The common list of figures. - Code Listings
I have decided to include code listings for readability and ease. - Chapters
One of the important decisions of the structure of a thesis is the design in the writing of chapters. In recent dates, I have seen some theses and books that produce chapters as independent units in terms of bibliography, this has always been to my liking since it is easier to find the references that belong to the chapter that is being read and not have to go to the end of the book to locate a reference. In my case, I have gone further and have decided to include conclusions for each chapter since I consider that this content should be included in the same section of the content. - Conclusions, Results and Future Work
It was decided that both the conclusions and references be global, unlike the conclusions and references of each chapter. With this we have the opportunity to express in a global context the results and conclusions reached. - Appendices
List of Appendices.
Directories
Since it is intended to have all the content of the thesis separated, it has been decided to make a logical separation according to the defined structure, that is, each section will have its separate directory and each directory will contain a child directory for the figures and another one for the code files. Virtually all files will be separate and independent and only a document with this embedded information will be generated when the solution is compiled.
LaTeX
Once having the desired structure available. We proceed to capture the code to build our document. The main code file is listed below.
thesis.tex
\documentclass[12pt,letterpaper]{report} % the structure file contains all the packages that needs to be included to generate % the main structure of the document \include{structure/structure} % Define a new glossary types \newglossary[glg]{glossary}{gls}{glo}{Glosario} \newglossary[slg]{symbol}{sym}{sbl}{Lista de Símbolos} \newglossary[alg]{acronym}{acr}{acn}{Lista de Abreviaturas} \makeglossaries \include{acronyms/acronyms} % include acronyms \include{symbols/symbols} % include symbols \include{glossary/glossary} % include glossary \begin{document} % custom background image command \AddToShipoutPicture*{\BackgroundLogo} \showboxdepth=-1 \include{front/front} \thispagestyle{empty} \hbox{}\vfill\hbox{}\pagebreak \setcounter{page}{1} % with this we prevent the paragraph alignment issue \raggedbottom % first use roman numerals for page numbers \pagenumbering{roman} % adding custom headers/footers defined above \noneheads \nonechapterheads % including sections \include{dedication/dedication} \include{abstract/abstract} \include{preface/preface} \include{acknowledgments/acknowledgments} % table of contents \tableofcontents \newpage % Begins on a new page instead of on the same page as the table of contents % figure listings \renewcommand\listfigurename{Lista de Figuras} \listoffigures \newpage % code listings \addcontentsline{toc}{chapter}{\lstlistlistingname} \lstlistoflistings \newpage % set one blank space between paragraphs in empty line %\setlength{\parskip}{\baselineskip} % return page numbering to arabic \pagenumbering{arabic} \chapterheads \commonheads % including chapters \include{chapters/1/introduction} \include{chapters/2/theory} % including appendixes \begin{appendices} \include{appendixes/a/computer_programs} \end{appendices} % include glossaries \printglossaries \end{document}
As you can see in the code, the include latex command is used to include the other parts of the document from the main code file. The same technique is used for the chapters where the directory of the code files is added as well as the directory of the figures. Also, the bibliography files are added for each chapter including the directories. In this way constructs the document in parts according to the definitions in the code. Below is the example of a chapter with the definition of images, code and bibliography.
introduction.tex
\chapter{Introducción} % code and figures paths \graphicspath{{chapters/1/figures/}} \lstset{inputpath=chapters/1/code/} \lipsum. \cite{0071548297} \section{Sección} \lipsum % abreviatura \gls{fdtd} % glosario \glspl{debian} \subsection{Subsección} \lipsum \section{Conclusiones} \lipsum \bibliographystyle{unsrt} \bibliography{chapters/1/introduction}
Compiling
Has multiple commands to compile the code and generate a beautiful document. Some of these commands are pdflatex, makeindex, makeglossaries, bibtex, among others. Each of these commands has a specific mechanism to create a pdf and may require several passes to complete the construction of the entire document. For simple documents there are several popular IDEs that automatically build the document by selecting configuration options graphically. It is also possible to define the compilation flow graphically. A simple example of an IDE that I personally use and recommend is Kile, of course, open source and cross platform.
makefile
shell := /bin/bash curr_date := $(shell /bin/date '+%Y-%m-%d_%H.%M.%S') main_file = "./thesis" output_file = "./thesis" papers = "../papers" output_file_papers = "../build/thesis_papers_"$(curr_date) paper1_name = "ACES_Journal_20150117_v3.pdf" paper2_name = "APL_101_261902_2012.pdf" #chapters = "chapters/1/introduction" "chapters/2/conclusions" # main entry point all: aux glossary acronyms symbols bibliography pdf add_papers clean # PDFLaTeX - first pass to generate aux files aux: echo ">>>>> AUX" pdflatex -interaction=nonstopmode $(main_file).tex # MakeIndex - generate glossary files glossary: echo ">>>>> GLOSSARY" makeindex $(main_file).glo -s $(main_file).ist -t $(main_file).glg -o $(main_file).gls # MakeIndex - generate acronyms files acronyms: echo ">>>>> ACRONYMS" makeindex $(main_file).acn -s $(main_file).ist -t $(main_file).alg -o $(main_file).acr # MakeIndex - generate symbols files symbols: echo ">>>>> SYMBOLS" makeindex $(main_file).sbl -s $(main_file).ist -t $(main_file).slg -o $(main_file).sym # BibTex - generate chapters bibliography bibliography: echo ">>>>> BIBLIOGRAPHY" # find name of chapters .tex files, remove extension and execute bibtex on the result find ./chapters -type f -name '*.tex' | while read f; do bibtex "$${f%.*}"; done #for chapter in $(chapters); do \ # bibtex $$chapter; \ #done # PDFLaTeX - last pass to generate final pdf files pdf: echo ">>>>> PDF" pdflatex -interaction=nonstopmode $(main_file).tex makeglossaries $(main_file).glo makeglossaries $(main_file).acn makeglossaries $(main_file).sbl pdflatex -interaction=nonstopmode $(main_file).tex # Append papers pdf to generated thesis pdf add_papers: echo ">>>>> ADD_PAPERS" pdftk $(output_file).pdf $(papers)/$(paper1_name) $(papers)/$(paper2_name) cat output $(output_file_papers).pdf # cd -; returns to previous dir clean: echo ">>>>> CLEAN"; # find and remove unneded extension files find . -name "*.acn" -o -name "*.acr" -o -name "*.alg" -o -name "*.aux" -o -name "*.glg" -o -name "*.glo" -o -name "*.gls" -o -name "*.idx" -o -name "*.ist" -o -name "*.slg" -o -name "*.sym" -o -name "*.lof" -o -name "*.blg" -o -name "*.bbl" -o -name "*.toc" -o -name "*.sbl" -o -name "*.lol" -type f | xargs rm;
There are many other considerations to take into account when structuring a doctoral thesis document but the truth is that it is not my intention to go into detail about each problem that had to be solved in order to get to the desired document. Instead, I have prepared an example template type that you can easily explore and adapt to your needs and hopefully you can save a good percentage of the hours that I had to invest to reach this result. Next I attach the file of the example and a pdf as the resulting document. Of course these files are designed to work in Linux.
¡Enjoy! 😀
-Yohan