How to make PDFs with Vulgar and

Vulgar outputs your dictionary in a LaTeX file, which can be uploaded to Overleaf to generate a PDF download.

What's LaTeX?

LaTeX is a typesetting code for creating professional documents, frequently used for typesetting books and academic papers. Overleaf is a free online compiler for LaTeX files (i.e. it reads your LaTeX and outputs the PDF). Overleaf also allows you to edit the dictionary that Vulgar generates.

Quick steps:

1. Make an account at
2. Go to the Vulgarlang PDF Template (note: the default template will throw a "Compile error". Don't worry about this!)
3. Click Menu

4. Copy Project to your profile (name it whatever you want)

5. Using Vulgar, generate your langauge
6. Go to Saving Options and Download this language as PDF (.tex file)

7. Back in Overleaf, click Upload

8. Select and upload the .tex file from your computer
9. Click into the .tex file that you just uploaded on the side panel (not the Preamble.tex file!)
10. Click Recompile and wait for the PDF to be generated
11. Click Download PDF

How to Edit your Overleaf Project

Lines of code that start with the percentage sign % are comments, which are ignored by the computer when compiling. You can read the comments in the Dictionary Template to get an idea of what each line does.

Editing entries

If you scroll down to around line 32 you will start to see the entry code. This code matches the beginning of your dictionary at the letter A. The following code

\con {a} {/a/} {\pos{n}{flight}}
\con {aa} {/aˈa/} {\pos{adv}{together}}
\con {afa} {/ˈafa/} {\pos{adj}{serial} \pos{adv}{much}}


The code \con stands for "conlang entry". This command has three sections which are enclosed by {curly brackets}, called "arguments". Whatever is in the first argument (curly bracket) applies the bold blue Noto-Sans font. This is the conlang word. The next argument is the pronunciation, and applies the IPA font (Charis SIL by default). The third argument is the translation information, which contains one or more "part of speech" commands \pos, which have their own arguments. Each \pos command automatically adds a new line and slightly indents to translation. The first argument is for the abbreviated part of speech, and the second argument is the translation.

Feel free to alter any of the content inside these curly brackets, and even insert a whole new conlang entry (\con) in the dictionary. Be aware the template will not automatically alphabetise your entry, nor will it translate your word in the English to Conlang section. You have to do that yourself. In the English to Conlang section, the commands are basically exactly the same but with slightly different names:

\eng {abandon} {} {\pos{n}{nopax}}

Note that the English entries has an empty IPA section by default.

Changing fonts styles

The document configurations are located in the Preamble.tex file (on the left hand side panel). The font styling begins on line 15. The first few lines call some packages that are required for working with Unicode symbols and imported fonts. You can ignore this. On line 18, the document sets the main font of the document:


The PDF will default to this font if no other font is specified in the code. Note that the font file NotoSans-Regular.ttf has already been uploaded to the project. (Without this uploaded, the PDF will not compile properly.) If you have a different font that you want to use in the project, you first need to upload it to your Overleaf project under the Menu heading, then change the font command on line 18 to the file name of the font.

Let's examine the font style for the English translation:


This creates a new font command called \engTrans, and gives it the font file CharisSILR.ttf. This font will only apply if the \engTrans command is written before the text you want it to apply to.

The conlang word command, \conWord, takes NotoSans-Bold.ttf font file, and also has some color information.


This sets the color to "wordColor", which is a custom color name defined on line 10:


This translates to: Define a new color called wordColor, and give it an RGB color value of 29, 119, 168. You can use this page to pick RGB colors.

(Be aware that this style of LaTeX formatting is using the fontspec package, which is a little different from the default way of changing font colors, and well as font sizes and some other specs. So if you ever want to Google "how to change LaTeX font size", try instead "how to change fontspec font size").

Custom conlang fonts

If you have a custom conlang font (something like Tolkien's Tengwar) you'll first need to upload it to the project. Next you'll need to change the fonts for conlang word (\conWord) and conlang translation (\conTrans) to your font.

Your custom font may not match the size of the other fonts. To change the font size you add SizeFeatures={Size=20} to the style settings inside the square brackets, changing the size number appropriately. If the font doesn't have any extra style settings, you must type in the square brackets.


If it already has color settings, add inside the brackets, comma separated.


Chapter headings and sections

In your language's .tex file you'll see comments that say CONLANG to ENGLISH, followed by a chapter heading, and a section heading (probably for A).


\chapter{Tatsian - English}




You can add a new chapter by writing \chapter{My new chapter}. LaTeX will automatically add this chapter and page number to the table of contents.

You can add a new section by writing \section*{My new section}. The asterisks stops LaTeX from numbering the section and adding it to the table of contents.

Writing paragraphs

Writing basic paragraphs in LaTeX is normally straight forward: you simply separate your paragraphs by two lines and LaTeX automatically does paragraph indenting. However, the Vulgar template has paragraph indenting turned off (this is so that the word entries stay flush against the left side of the columns). Therefore, I recommend using quadruple backslash \\\\ to create two new lines for your paragraph separation:


This is paragraph. This is paragraph. This is paragraph. This is paragraph. This is paragraph. This is paragraph. This is paragraph.

This technically creates a new paragraph, but does not indent.

\\Double backslash creates a new line.
\\\\Quadruple backslash may create a more desired paragraph.

\forceindent This is paragraph with a forced indent. This is paragraph with a forced indent. This is paragraph with a forced indent. This is paragraph with a forced indent. This is paragraph with a forced indent.


Note that \forceindent is a custom command that creates a new paragraph with small indent.

Another way to achieve paragraph spacing is to manually set the paragraph spaces to 1 line using \setlength{\parskip}{1em}. However you will want to set the paragraph space back to zero before the actual dictionary starts with \setlength{\parskip}{0em}.

Bold text

To make some text bold, wrap it in curly brackets and use \bold, eg: {\bold Here is my bold text}


Be aware that Vulgar does not put any grammar tables into the .tex file because the tables are often to large to fit on an A4 page. Making them automatically resize and/or split in half in LaTeX (and in a way that is visually appealing) is quite challenging, and can produce disappointing results. This means you have to do the table layout yourself. LaTeX tables can be a little bit fiddly, so we recommend using the LaTex Tables Editor

Here is a quick rundown of how the code works:

\caption*{Spanish definite article}
         & Masculine & Feminine \\ \hline
Singular & el & la \\ \hline
Plural & los & las \\ \hline

creates this:

& signs separate the cells. Double backslash \\ is used to force rows onto new lines, and \hline is used to add a horizontal line separating the rows.

In the \begin{tabular}{|l|l|l|} line, the {|l|l|l|} defines more of the layout. The pipe symbols | create vertical lines separating the cells, and l stands for align column left. This can be changed to r for right and c for center.