Howto Write a Thesis using LaTeX: Generate Resolution Independent Figures Using Inkscape

When you are about to write your thesis, you have probably spend the last years working on a topic that has twisted your brain plenty of times and now your finally made it, you understand what your Professor was talking about the last years and you can be really proud. With a huge amount of self-confidence, you start writing down your hard work and you proofread every sentence and every word you are writing carefully. But at the end, the first thing anyone reading your thesis sees, is a figure like that:

Golum Figure

Do you really want to have that Golum of a figure in your thesis? Of course not!
Any figure you create for your thesis should be a vector graphic. Remind from part 1 of this tutorial, that there is a general difference between vector graphics and “common” images. Vector graphics do not save pixel values, but generate a description of the image, like you would say: “There is a circle in the left part of the image and another one in the right part. Both have a black border and gray background. The circles are further connected by an arrow.” Well, the real description might be a bit more accurate and fortunately, LaTeX can understand that description if we provide it in the correct format.

Sorry friends, but this is not going to be a tutorial in Inkscape, you will find many of them in the web. This is more a guide on how to use a vector graphic in LaTeX. Let’s assume we have drawn an image in Inkscape that may look like:


First, we have to resize the document to the content to avoid extra spacing around the image. From the top menu, select File->Document Properties. A new dialog will pop up. Notice that there is an area called Resize page to content:


I usually use margins of 10.00 at each side. Then, simple press the “Resize page …” button and you will see that your document has been resized to your content. Be aware not to select a specific object while resizing, otherwise the document will be resized to the object size.

Once the image is ready, you can save the image as PDF by selecting File->Save As and choosing “Save as type” to be “Portable Document Format (*.pdf)”. You can simply use the default PDF setting and click OK in the dialog shown next. And that’s it! Inkscape is automatically generating a vector graphic based PDF. Please note that the default format for vector graphics is SVG, but as we want to use the graphic with LaTeX, we prefer to have a PDF file.

Let’s save the PDF image to the images subfolder (called fig) of our thesis project folder and name it image.pdf. All we have to do now, is to display the image in the thesis. For example, lets show the image in our “Boring Stuff” chapter. We are including figures by LaTeX command:

\chapter{Boring Stuff}
An example figure is shown in Figure ??.
    \caption[Short caption]{Detailed caption}

To get this working, we need to import the graphicx package in the preamble of the Thesis.tex file:


Once we translated the file to pdf (twice to update also the reference), we will see the figure in the Thesis.pdf file.


Please note, that also the list of figures at the end of the document has been updated and now includes an entry with the short description of the figure. To see the benefit of the vector graphic, here is a part of the image within the document, rescaled to 500%:


As you see, the figure can be scaled to any dimension without loosing resolution.

Howto write a thesis using LaTeX, Part 2: Create the document structure

In part 1 of this tutorial, we managed to set up software that helps us creating our thesis with LaTeX. It’s time to get started with the real LaTeX stuff. This is not going to be an introduction to LaTeX as there are plenty of very good LaTeX tutorials; you can easily find them using google. This tutorial is rather a guide on which packages are helpful to be used, how you can organize your files, how to insert graphics, create tables and write algorithms in LaTeX. To understand the commands provided in this tutorial, I strongly recommend doing some general introduction to LaTeX first!

1. Folder structure

We start with creating a new folder (our project directory), preferably directly using our cloud service. I use Dropbox and hence create a new folder in my Dropbox folder called Thesis. Within this folder, let’s add some additional folders:

  • fig (will contain all figure)
  • tex (will contain LaTeX files)
  • bib (will contain bibliography files)

Separating your source files will help you keeping the overview about your files.

2. Creating the main LaTeX document 

First, open Texmaker and click New icon to create a new file. Each Latex document has to define a document class, indicating what kind of document we are about to create, this may be a book, a thesis or even a presentation. We are using document class report and define it by writing

Hello World!

to the very top of the file. We defined the document to be a report and added some additional parameters. As I am European, I use A4 paper size and a default font size of 12pt. If you prefer using the letter paper size, just replace a4paper with letterpaper. Next, save the document into your projects root directory as Thesis.tex. The directory should now look like


Please note that the little green check mark is indicating that the files are in sync with my Dropbox account.

Now we are going to translate the document by Tools->PDFLaTeX from the top menu or by simply pressing [F6] on the keyboard. If you have activated the messages and log window in Texmaker, you see some output written there. For sure, you will need the outputs later if you note that you have some errors in your LaTeX code and the messages window is presenting shiny red error messages. If we have a look at our project directory, we note that some additional files have been created by LaTeX. Don’t care what they mean at all! The only thing to note is that there is a PDF document called Thesis.pdf which can be displayed directly in Texmaker on the most right column. The PDF view is refreshed by selecting Tools->View PDF from the menu or by clicking [F7]. Doing so, Texmaker shows a PDF file containing only the text Hello World!

Let’s create the main document structure for our thesis. Many universities do provide LaTeX templates, but unfortunately, mine did not. So I created by own structure to be:

  • Title page
  • Abstract
  • Table of contents
  • Introduction
  • Material
  • Some real boring stuff for at least 99.9% of people
  • Discussion
  • Conclusion
  • Acknowledgment
  • Appendices
  • List of Algorithms
  • List of Figures
  • List of Tables
  • Bibliography

Let’s model this structure in our main Thesis.tex file. First we create the table of contents which is easily done by putting the command


inside the begin and end document tags. After translating the document and refreshing the PDF file, a headline with Content appeared. Not surprisingly, the table of contents is empty as we did not yet insert any content. Thus, lets add some by adding an introduction. I organized my files by creating a new .tex file for each chapter of my thesis. You would be able to write all your stuff into only a single file (directly to Thesis.tex), but will pretty sure end in smashing your head against the keyboard if your document gets very large. Not only that you have real trouble in navigating through your document, but also Texmaker is getting slow if the files are getting too big. Hence, I recommend to distribute the document over several files. Lets create a new file and save it as Introduction.tex into the SUBFOLDER tex we created previously. Add

I was motivated to write a Phd thesis because I did not want to work directly after finishing my study
This thesis is organized as follows, ...

to Introduction.tex and save the file. As you note, we have just created a new chapter containing two sections. All we have to do know is to import the file into our main document. Thus, write


after \tableofcontents to Thesis.tex file. The command tells LaTeX that there is another file that we want to put into exactly that place where we wrote the command to and the file to be injected can be found in the sub directory tex and is called introduction. Note that no file extension is given! The command is followed by \newpage which tells LaTeX that we want to have a new page started after this chapter and \cleardoublepage telling that all figures, tables etc. that belong to that chapter are inserted to a new page before the next chapter starts. Press [F6] and [F7] again to translate and update and you will see that there is a new page containing the Introduction. But, are you kidding me LaTeX! Why is my table of contents still empty? Cool down, this is because LaTeX is creating references while compiling but at the moment the table of contents is created, the references have not been added yet. You do not have to understand that, you only need to know, that if you add anything that is reference at any other position in the document, you have to translate twice. So simply press [F6] wait until it finished, press [F6] and then [F7] and your table of contents will be fine.

Great, we just started creating our document structure. Lets put all the other chapters in there as well


and don’t forget to create the files, add \chapter{Some Name} and save them. Translate again. By the way, there is a nice trick that you can translate the master document by pressing [F6] even if there is another document open. Just open the Thesis.tex file and click Options->Define Current Document as ‘Master Document’ in Texmaker:


Now, our document is already 7 pages long and contains a table of contents. But I don’t like how the headlines and chapters look like. Thus, I want to change the style of my document and I prefer to use a package called fncychap. The package comes with a bunch of styles where I like Sonny the most. A package is used in LaTeX by calling the \usepackage{} command. In Texmaker, simply write


in the preamble of your document, that is before \begin{document}. The command tells to use the fncychap package with parameter Sonny. If you try to translate, you might note one of the biggest benefits with using Texmaker and MiKTeX. As you are attempting to use a package that is not yet installed, you are asked if MiKTeX should do that for you.install_package_promt

Click install and wait until installation and translation has finished. Updating the PDF will show a newly designed document. Another useful package is loaded by


and leads to the usage more wider page width.

Next we are adding the additional lists to the end of the document:


where the list of algorithms needs package


Obviously, the lists are empty for now.

3. Adding Bibliography

The bibliography is handled a bit different. LaTeX uses so called BibTeX files that contain entries for papers, books and other published stuff. The idea behind is that you have only one big BibTeX file (.bib) with all your publications in it. LaTeX is calling BibTeX with references to the entries using a unique key and BibTeX is creating a file containing only the referenced entries. LaTeX further uses the created file and inserts the entries into the document. Although, it is possible to add several bib files. You can edit the bib files using software or insert entries manually to the bib file. I prefer doing it manually this saves me the time of importing and exporting all the time. Thus, I open the bib file in Notepad++ and copy the references by hand. Let’s create a simply scientific article reference. The BibTeX code might look like

    author  = {Torsten Schoen and Co Author},
    title   = {Ten things you better not say to your wife},
    journal = {Optimizing Husbands},
    volume  = {21},
    year    = {2013},
    pages   = {85--91},

We simply open Notepad++, create a new file, put the code above in there and save it in the Thesis\bib folder by name Literature.bib. Below our lists, we add the bibliography:


Further, we have to define a bibliography style in the preamble


where I prefer the plain style. We can cite entries of the bibliography using the \cite{} command and providing the unique key. For example, write in any of you chapter files:

We refer to Sch\"on \cite{schoen2013} for things you ...

On translating the document, a warning is shown in the message console as the key schoen2013 cannot be found. This is because we have to run BibTeX first by pressing [F11] in Texmaker. Again, as there are references you have to press [F6] and [F11] in turn again and again until the citation finally works. Updating the PDF after persistent pressing of [F6] and [F11] until all warnings disappeared, we can see that a bibliography with one entry has been added at the end of the document and in the text part, \cite{schoen2013} has been replaced with its related number.

A nice source to find papers and get them directly in BibTex format is to search at Google’s scientific search engine called Scholar. If you do a search, you can click on “cite”


and a export citation window appears where you can export the entry as BibTeX code to simply copy and paste it into your bib file.


4. The title page

Next step is to add a title page. Most universities require to use a predefined title page so as my one did. The title page actually consists of two page, the real title page and a page with some formalities. Of course, the title page is nothing else than a normal LaTeX file. Hence, we simply create a new file in our tex folder and name it Title.tex. The only difference is that we should define the title page as title page by inserting:

This is my thesis!

Anything that should be part of the title page is written between the tags. Further we have to input the file into Thesis.tex by writing


right after \begin{document}. Next, we gonna add some empty pages between the title, abstract and table of contents and change the numbering to be roman. The real Arabic page numbering of the thesis therefore start just with the first page of the introduction.
This is a bit more complicated and I will simply provide the code without any explanations. The complete Thesis.tex file is hence defined as:













This is the end of the second part of this tutorial. You can download related source as zip file here:
TS thesis template Part 2

In the next part, I will give you some useful tips and tricks that helped me a lot:

==> Continue with Part 3

Howto write a thesis using LaTeX, Part 1: Setting up software components

In this tutorial, I will explain howto write a thesis (which may be a master, PhD or any other thesis) using the document markup language LaTeX. I assume that most of you are using Windows as operating system, thus I did a fresh installation of Windows 8 and I will use it throughout this tutorial. Nevertheless, I think if you are using an older version of Windows, there might be no difference. For you guys using Mac Os X or Linux based systems, you may use the tutorial as well, but figure out howto install software components on your system by yourself. I am using Ubuntu and a MacBook, too, and will probably add some more tutorials for these systems soon. Ok, so we have a fresh raw installation of Windows 8, no additional software installed. Of course, before start writing anything for your thesis, you will have to get some fancy and helpful software. Here is an overview of software component that will be used throughout this tutorial where installation will be explained in the following sections.

  • MikTex (includes everything you need to run Latex)
  • Texmaker (Helpful editor to write Latex code)
  • Inkscape (Vector graphic program)
  • Dropbox (Save your work in the cloud)
  • Notepad++ (A great text editor)
  • Excel2Latex (Plugin to export tables from Excel to Latex)

Source files generated within this tutorial can be download here:
Thesis Template

If you are a student of the faculty “Biologie und Vorklinische Medizin der Universität Regensburg” in Germany, you can also download the predefined title page:
Thesis Template with UR title page included

1. Install Software

1.1 Download and install MikTex

The first step is to download and install MiKTeX containing everything you need for working with LaTeX. Go to and download the last available version. At the time of writing this post, the latest version is 2.9.4813. Fortunately, MiKTeX provides a nice installer. After downloading, simply start the installer and follow instructions. During installation, you will be asked for selecting your preferred paper size and for package installation: Miktex_install_1

If you live in Europe, you may select A4 as preferred paper size, Americans are using Letter as far as I know. So I usually choose A4. LaTeX is a software that has many additional stuff that can be added for specific things. For example, if you are a software developer, you might want to display source code of algorithms in your thesis. Therefore you want some additional functionality for LaTeX. Fortunately, there is a huge community providing stuff for anything you might imagine. These additional things are stored in so called packages. We will see later on how we can install and use them. MiKTeX is very nice to us by providing a package manager that is searching and installing packages for us. In the second option of the screenshot above, we can define if MiKTeX is allowed to install them on the fly, meaning if we are referencing a package in our code that is not yet installed, MiKTeX is recognizing it and installs it automatically. I prefer to be asked before, as I want to know which packages are being installed on my system. Remaining installation is just straight forward.

1.2 Download and install Texmaker

After we have successfully set up MiKTeX, we would be able to write some LaTeX code in any text editor and compile it using the command line. As not everyone writing in LaTeX is a nerd, we are about to use a special text editor (also called IDE for integrated development environment) that does some helpful things for us like syntax highlighting, auto completion and creating the final PDF file by only a mouse click. I prefer using Texmaker, which is freely available for all operation systems, but there are plenty of other excellent programs. If you are one of the Linux guys, you might also have a look at Kile. Go to and download the latest version of Texmaker, I downloaded Texmaker 4.0.1 for Windows (texmakerwin32_install.exe). After downloading, start the installer and follow the instructions, it is straight forward. Next, start Texmaker, it should look like:

Texmaker_plain We immediately see that the program is built of three columns. Once we have started writing, the most left one will show the structure of our document, namely headings etc. The middle one is going to be our text editor where we put the LaTeX code in and the right one will show the translated PDF document. At this point I need to say, that we are going to translate our document into PDF. Originally, LaTeX is going to produce DVI files which is not used very often nowadays. Good, lets try if LaTeX already works by creating a new file by clicking the icon Texmaker_add_new in the top left corner of Texmaker. Now, in the middle column, a new file has been opened. Type in the following and press save:


Please don’t worry what that means, we will revisit that later.
If you are using Windows 8 as I do, you might wonder that you can’t save the file due to permission errors (Really Windows? Managed to have a new version that is even more silly than the old one?). The trick is that you have to provide a file extension on your own. So save the file as Test.tex not only Test. Note that .tex is the file extension indicating that this is a LaTeX file like .docx is used for Microsoft Word files.

On the bottom left of Texmaker, there are some buttons, press the Messages/Log button and you may note that at the bottom of the middle text editor column, something appeared called output window. This is a console that is providing output information of translating the text to the PDF file. Next, select from the top menu Tools->PDFLaTex and you will see that some messages are shown in the output window. Select  Tools->PDFLaTex again. Next, select Tools->View PDF and a PDF file should be displayed in the right column of Texmaker:


Congratulations, you just created your first LaTeX document and successfully translated it  to a PDF file. Please don’t worry about anything we’ve done so far, this was just to check whether our installation works or not. If you run into any trouble and you could not produce a PDF file, please check if your Texmaker has automatically identified LaTeX installation correctly. You may check that in Options->Configure Texmaker where Commands should look like:


Of course, some paths might be different.

Great, we are able to use LaTeX and can produce a PDF document from LaTeX code. But to write a fancy thesis, we need to install some more helpers.

1.3 Get Inkscape

Justifiably, you may ask: “Why do I need to install a graphics program? I just want to write my thesis and I already have plenty of graphic programs installed” OK, you do not necessarily need Inkscape, but you should use a software that can save images as vector graphics. Now, I may have finally confused you and you are angrily pressing your browsers back button know. I will clarify, there are generally speaking two kinds of images used on computers, the one and normally used ones are pixel based graphics, these are for example PNG or BMP or JPEG images like the screenshots provided in this tutorial. So, the image is built of a matrix of pixel values (squares) that do have one single color. You will have noticed that in the past while zooming an image too far. Further, there is the resolution, saying how many of these pixels exist in the image. The biggest disadvantage of this file formats is that if you are zooming the image, there are too less pixel values available and the image gets cloudy or you are seeing these pixel squares. Of course, we do not want to have cloudy images in our thesis, especially if we are providing graphs or similar stuff. The other option is to use vector graphics. A vector graphic image is simple a text file where the image is described in the sense of: “There is a black line of thickness 3 from the top left corner to the middle of the image”. The real painting of the image is done by the program that displays the image and if you zoom in, the lines, circles and whatever you may draw are still correctly defined. The end of this too long story is that we use vector graphics to get sharp images even if we zoom in extremely into the PDF file. Please note, that of course you cannot transform a pixel image or a photo into a vector graphic.

One of these programs you can create vector graphics with is Inkscape and it can be downloaded for free at I have chosen the latest version 0.48.4. Once downloaded, just open the installer and click yourself through without any changes. We will revisit Inkscape later to learn how it is being used.

1.4 Even more software

Lastly, lets take some notes about other helpful software that you may use for writing your thesis.

First, I strongly recommend using any cloud drive service like Dropbox for saving your files into! Once you wrote the first 100 pages which took you probably a few month in real time and about 5 years of you age and your computer crashed for any weird reason you may be enormously happy to have a backup of your LaTeX code on a save place at the internet and you might even send me some flowers (I would prefer chocolate by the way) for giving you that hint. Further, I saved a version at the end of each day separately to be able to go back to any status of the thesis. A note for security and privacy folks, I agree with your complaints, but you can save your stuff encrypted or packed in a password saved zip file. Think about what is more critical, loosing all your work or having the risk of somebody hacking a cloud service seeing your LaTeX code?. Or make sure to save your stuff at least regularly on any independent hard drive.

Another helpful software, not only for your thesis, is called Notepad++ and is a text editor that serves anything you will need when editing text files. We will be using it later for managing our bibliography file.

Last but not least, I use Microsoft Excel to generate graphs, plots and tables as there is a nice wizard for changing styles etc. A huge advantage which I will also explain in one of the next parts of this tutorial is that you can export graphics from Excel to PDF as vector graphics. As you remember, this leads to graphs that can be scaled to any extreme.
An excellent plug-in for Excel is Excel2Latex. You will only have to download the file from the website and open it with Excel to get two additional buttons in your Excel Add-Ins menu. You can find additional information on installation at the project website.


In Part 1 of this tutorial, we managed to set up our system to be able to start writing our thesis and we already produced a little PDF document using LaTeX. Part 2 is going to quickly introduce LaTeX. There are plenty of more extended and better introductions to really learn how to deal with LaTeX. But I want to give a short overview of what it is and why it makes sense to use it. But you will learn how to organize your folders, files and how to build the general structure of your thesis

The most interesting part will probably be Part 3, where I gonna show you some of the hacks and tricks that I have used to make life easier and to produce a nice looking thesis (at least in my opinion).

==> Continue with Part 2

Sample instances from a BIF XML file using WEKA

The WEKA machine learning library (version 3.7.3) offers the class BayesNetGenerator to generate Bayesian networks artificially. The class provides a method called generateInstances; to sample instances from a randomly generated network. However, for me it was not clear how to use this code to sample instances from a given Bayesian network stored in a BIF XML file.
Assume that your network file is stored at path filename and your generated instances should be saved in ARFF format to target, you can use the following code:

public void generateDataFromXmlFile(String filename, String taget) throws Exception
    // create a weka BayesNetGenerator
    BayesNetGenerator generator = new BayesNetGenerator();

    // clear stack

    // set the bif xml file

    // define the number of instances to be sampled

    // generate a "random" network
    // is internally generated with the bif xml file

    // generates the instances

    // write the instances to a ARFF file
    StringBuffer text = new StringBuffer();
    FileWriter outfile = new FileWriter(taget);

First, the BayesNetGenerator object is created and the stack is cleared (not sure if this is needed?).
A BIF XML file can be set as template to the generator by calling


where filename is the path to the BIF XML file. After setting the number of samples to be created to 1000, the generator is asked to create a random network. Note that the network is NOT generated randomly, but read form the BIF XML file as we defined the file before.
Lastly, the instances are written to a ARFF file and we’re done :-)