A typesetting language is a language that requires the user to write code that is then 'translated' to a form that is 'human readable'.

A powerful typesetting language that is popular in scientific writing is \(\LaTeX\) (pronounced: lay-tech).

This resource gives an overview of \(\LaTeX\): you can either install \(\LaTeX\) on your own computer:

If you do not already have an installed version I recommend overleaf.com a cloud based service.

(Keywords: documentclass.) Video demo

In the editor type the following:

```
\documentclass{article}
\begin{document}
Hello, world!
\end{document}
```

The next step is to *compile* this `tex`

file. For the purposes of this
tutorial I recommend compiling with a modern compiler like `pdflatex`

or
`xelatex`

. **If you are using a cloud based service compilation usually happens
automatically.**

(Keywords: comments, quote.) Video demo

(Keywords: quotes, characters, comments.)

The following keys are used to type text in a source file:

```
a-z A-Z 0-9
+ = * / ( ) [ ]
```

The following punctuation marks:

```
' ? ! : ` ' -
```

Finally there are 13 special keys that are used in commands:

```
# $ % & ~ _ ^ \ { } @ " |
```

For example, `%`

sign is used to denote comments in LaTeX (like `#`

in Python).

```
\begin{document} % This line start the document
```

Note also that to include text in quotes a different character for the opening and closing quote needs to be used:

```
Here is how to use `single quotes' and here is how to use double ``quotes''.
```

A document showing these two things together is:

```
\documentclass{article} % There are various classes of documents, we will see a few later.
\begin{document} % This line start the document
Here is how to use `single quotes' and here is how to use double ``quotes''.
\end{document}
```

main.tex
main.pdf
(Keywords: preamble.) Video demo

In general all the code that comes before the `\begin{document}`

statement is
called the 'preamble' and is used to set a title for the document, call certain
packages as well as various other things. The following code (to be inserted in
the preamble of your document) sets a title:

```
\title{Choose a title}
\author{V Knight}
\date{\today}
```

If you compile your document this won't include the title in the output. To do so you need to include the following line (in the main body):

```
\maketitle
```

A full document with this is:

```
\documentclass{article} % There are various classes of documents, we will see a few later.
\title{The preamble}
\author{V Knight}
\date{\today}
\begin{document} % This line start the document
\maketitle
Hello, world!
\end{document}
```

main.tex
main.pdf
(Keywords: abstract.) Video demo

The following will add an abstract to your document:

```
\begin{abstract}
This document contains some basic LaTeX code that will be useful to me
in the future.
\end{abstract}
```

A full version of this is:

```
\documentclass{article} % There are various classes of documents, we will see a few later.
\title{An abstract}
\author{V Knight}
\date{\today}
\begin{document} % This line start the document
\begin{abstract}
This document contains some basic LaTeX code that will be useful to me
in the future.
\end{abstract}
\maketitle
Hello, world!
\end{document}
```

main.tex
main.pdf
(Keywords: lists, bullet points.) Video demo

There are various ways to obtain lists:

```
\begin{itemize}
\item Unordered item number 1
\item Unordered item number 2
\end{itemize}
```

```
\begin{enumerate}
\item Ordered item number 1
\item Ordered item number 2
\end{enumerate}
```

A full document with both these lists is:

```
\documentclass{article}
\title{Writing lists}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\begin{itemize}
\item Unordered item number 1
\item Unordered item number 2
\end{itemize}
\begin{enumerate}
\item Ordered item number 1
\item Ordered item number 2
\end{enumerate}
\end{document}
```

Note that in LaTeX indentation is not required it is just good practice. Unlike
Python where specific environments are delimited by indentation levels, in
LaTeX they are ended by specific end statements `\end{enumerate}`

.

(Keywords: tables, tabular, booktabs.) Video demo

The following code creates a simple table (note the `c`

, `r`

, and `l`

tags that
indicate text alignment, experiment by changing these):

```
\begin{tabular}{|l|c|r|}
\hline
Name & Gender & Start Time\\
\hline
Angelico & Male & 1100\\
\hline
Leanne & Female & 0830\\
\hline
Lisa & Female & 0730\\
\hline
\end{tabular}
```

The above makes use of the basic tables available in \(\LaTeX\). The
`booktabs`

packages allows for improved aesthetics. To use this requires
`\usepackage{booktabs}`

in the preamble:

```
\begin{tabular}{l|c|r|}
\toprule
Name & Gender & Start Time\\
\midrule
Angelico & Male & 1100\\
Leanne & Female & 0830\\
Lisa & Female & 0730\\
\bottomrule
\end{tabular}
```

A full document with this table is:

```
\documentclass{article}
\usepackage{booktabs}
\title{Tables}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
A normal table:
\begin{tabular}{|l|c|r|}
\hline
Name & Gender & Start Time\\
\hline
Angelico & Male & 1100\\
\hline
Leanne & Female & 0830\\
\hline
Lisa & Female & 0730\\
\hline
\end{tabular}
A table with the booktabs package:
\begin{tabular}{l|c|r|}
\toprule
Name & Gender & Start Time\\
\midrule
Angelico & Male & 1100\\
Leanne & Female & 0830\\
Lisa & Female & 0730\\
\bottomrule
\end{tabular}
\end{document}
```

In general in LaTeX `\\`

is used to denote a 'new line'.

(Keywords: pictures, jpg, png, graphicx.) Video demo

To include a picture is straightforward in LaTeX. We make use of the `graphicx`

package. In LaTeX packages are included in the preamble using `usepackage`

.
Include the following in the preamble:

```
\usepackage{graphicx}
```

The following code (somewhere in the body) will include a picture:

```
\includegraphics{path_to_picture}
```

We can put this in the `center`

environment to centre the picture:

```
\begin{center}
\includegraphics{path_to_picture}
\end{center}
```

We can also pass options to `includegraphics`

to specify the width. For example,
this ensures the picture will be 60% of the width of the page:

```
\begin{center}
\includegraphics[width=.6\textwidth]{path_to_picture}
\end{center}
```

Here is an example image:

Images can be in jpg, png and pdf format when using a modern compiler, here is a picture as an example: dog.jpg.

A full document with that images is:

```
\documentclass{article}
\usepackage{graphicx}
\title{Including images}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\begin{center}
\includegraphics[width=.6\textwidth]{dog.jpg}
\end{center}
\end{document}
```

main.tex
main.pdf
(Keywords: tikz, diagrams.) Video demo

Graphs, pictures and diagrams can thus be created in any software of choice
(Python, inkscape, etc...) and then included as required **but** it
is often easier to draw a picture in LaTeX itself using code. A great package
to do this with is `tikz`

. Include the following in the preamble:

```
\usepackage{tikz}
```

Using this package we start a picture by setting up a tikzpicture environment.

```
\begin{tikzpicture}
\end{tikzpicture}
```

We then draw various shapes and connectors using the `\draw`

command including
coordinates:

```
\begin{tikzpicture}
\draw (0,0) -- (0,2); % This draws a line from (0,0) to (0,2)
\draw (-1,1) -- (1,1); % This draws a line from (-1,1) to (1,1)
\draw (0,0) -- (1,-1); % This draws a line from (0,0) to (1,-1)
\draw (0,0) -- (-1,-1); % This draws a line from (0,0) to (-1,-1)
\draw (0,2.5) circle(.5); % This draws a circle at (0,2.5) with radius .5
\end{tikzpicture}
```

This is very much touching the surface of what can be down with tikz. The simplest next step is to include various color and thickness options (we can also center the drawing):

```
\begin{center}
\begin{tikzpicture}
\draw [ultra thick] (0,0) -- (0,2); % This draws a line from (0,0) to (0,2)
\draw [thin, color=blue] (-1,1) -- (1,1); % This draws a line from (-1,1) to (1,1)
\draw [thick] (0,0) -- (1,-1); % This draws a line from (0,0) to (1,-1)
\draw [thick] (0,0) -- (-1,-1); % This draws a line from (0,0) to (-1,-1)
\draw [color=red, fill=green] (0,2.5) circle(.5); % This draws a circle at (0,2.5) with radius .5
\end{tikzpicture}
\end{center}
```

A lot more can be done with tikz and there are a variety of great examples, tutorials online.

A full document with that images is:

```
\documentclass{article}
\usepackage{tikz}
\title{Drawing with tikz}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\begin{center}
\begin{tikzpicture}
\draw [ultra thick] (0,0) -- (0,2); % This draws a line from (0,0) to (0,2)
\draw [thin, color=blue] (-1,1) -- (1,1); % This draws a line from (-1,1) to (1,1)
\draw [thick] (0,0) -- (1,-1); % This draws a line from (0,0) to (1,-1)
\draw [thick] (0,0) -- (-1,-1); % This draws a line from (0,0) to (-1,-1)
\draw [color=red, fill=green] (0,2.5) circle(.5); % This draws a circle at (0,2.5) with radius .5
\end{tikzpicture}
\end{center}
\end{document}
```

main.tex
main.pdf
(Keywords: floats, moving figures, moving tables, label.) Video demo

When including images, pictures and tables it is beneficial to make them standalone objects that can be referred to throughout the text. This is done in \(\LaTeX\) using the concepts of "floats".

Pictures and diagrams are figures:

```
Figure~\ref{my_picture} shows a picture.
\begin{figure}
\begin{center}
\includegraphics{path_to_picture}
\end{center}
\caption{A picture}
\label{my_picture}
\end{figure}
```

Tables are tables:

```
Table~\ref{my_table} shows a table.
\begin{table}
\begin{center}
\begin{tabular}{l|c|r|}
\toprule
Name & Gender & Start Time\\
\midule
Angelico & Male & 1100\\
Leanne & Female & 0830\\
Lisa & Female & 0730\\
\bottomrule
\end{tabular}
\end{center}
\caption{A table}
\label{my_table}
\end{table}
```

Note that these are called "floats" because they are designed to move in the
document to ensure the best use of space. As a result of this it is good
practice to not refer to floats by relative position. For example do not use:
`in the picture below`

but `in Figure~\ref{my_picture}`

.

\(LaTeX\) will aim to place floats in an efficient manner however some of the rules it follows can be broken by passing the following options:

`h`

: try to place the float where it is indicated by the code.`t`

: the float can be allowed in the top of the page.`b`

: the float can be allowed in the bottom of the page.`p`

: the float can be allowed on a page or column by itself.`!`

: some further restrictions should be ignored.

A full document with a figure and a table, using all those options is (this uses this image: cat.jpg):

```
\documentclass{article}
\usepackage{graphicx}
\usepackage{booktabs}
\title{Captions and floats}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
Figure~\ref{my_picture} shows a cat.
\begin{figure}[!htbp]
\begin{center}
\includegraphics[width=.6\textwidth]{cat.jpg}
\end{center}
\caption{A cat}
\label{my_picture}
\end{figure}
Table~\ref{my_table} shows a table.
\begin{table}[!hbtp]
\begin{center}
\begin{tabular}{|l|c|}
\toprule
Name & Animal \\
\midrule
Auraya & dog \\
Chick & cat \\
Duck & cat \\
Riggins & dog \\
\bottomrule
\end{tabular}
\end{center}
\caption{A table of pets}
\label{my_table}
\end{table}
\end{document}
```

main.tex
main.pdf
(Keywords: sections, subsections, label.) Video demo

It is possible to organise parts of a document using 'sections':

```
\section{My first section}
This is a section with a few subsections.
\subsection{A part of my first section}
Here I could write about the problem I'm trying to solve.
\subsection{Another part of my first section}
In this subsection I could solve the problem.
\subsubsection{Further fragmentation...}
\section{My second section}
etc...
```

We can include labels to sections so that we can refer to them:

```
\section{My first section}\label{first_section}
\section{My second section}\label{second_section}
In Section \ref{first_section} we saw that...
```

When compiling one needs to compile twice:

- The first time to find all the labels;
- The second time to match the labels to the references.

If you are using a web service (like overleaf) then this usually happens automatically.

Note, labels can be using in conjunction with `tabular`

(for tables) and
`figure`

(for images) environments, these are called "floats" and are a very
useful feature of LaTeX but are not covered here.

A full document with sections is:

```
\documentclass{article}
\title{Sections}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\section{My first section}\label{first_section}
This is a section with a few subsections.
\subsection{A part of my first section}
Here I could write about the problem I'm trying to solve.
\subsection{Another part of my first section}
In this subsection I could solve the problem.
\subsubsection{Further fragmentation...}
\section{My second section}\label{second_section}
In Section \ref{first_section} we saw that...
\end{document}
```

main.tex
main.pdf
(Keywords: bibtex, bibliography, cite.) Video demo

To create a bibliography we need to store the bibliographic information in a separate 'bibtex' file. In this file you include bibliographic information for the various references you might have.

The following is the code for a book on LaTeX. Save the following in a
separate file: `bibliography.bib`

:

```
@book{Gratzer2007,
author = {Gr\"{a}tzer, George},
publisher = {Springer},
title = {{More Math Into LaTeX: A Guide for Documentation and Presentation}},
year = {2007}
}
```

We can then reference the 'key' (for the above it is Gratzer2007) for any document in the bibliography file using the following:

A very helpful reference for LaTeX is \cite{Gratzer2007}.

Note that there are a variety of tools that will give you bibtex code for any given reference (Google Scholar, JabRef, Zotero, Mendeley etc...).

We need to however include a pointer towards the bibliography, at the end of the document include:

```
\bibliographystyle{plain}
\bibliography{bibliography.bib}
```

We now need to compile a document twice (as above to find all internal
references for sections, figure etc...) **and then** we compile the
bibliography with `bibtex`

and then we need to compile one last time to match
the bibliography items with the citations.

If you are using overleaf then this happens automatically.

A full document with sections is:

```
\documentclass{article}
\title{Bibliographies}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
A very helpful reference for LaTeX is \cite{Gratzer2007}.
\bibliographystyle{plain}
\bibliography{bibliography.bib}
\end{document}
```

main.tex
main.pdf
bibliography.bib
(Keywords: mathematics, inline.) Video demo

Typesetting mathematics is \(\LaTeX\)'s strength. Here is an example of including some "inline" mathematics:

```
Mathematics can be typed in to \LaTeX\ as $x^2$ and/or
\((a+b)^2=a^2+2ab+b^2\).
```

Note that using `\(`

and `\)`

is preferred over `$`

. One of the reasons is that
it is easier for humans (and machines) to find the start and end of some
mathematics.

A full document making use of inline mathematics is:

```
\documentclass{article}
\title{Inline mathematics}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
Mathematics can be typed in to \LaTeX\ as $x^2$ and/or \((a+b)^2=a^2+2ab+b^2\).
\end{document}
```

main.tex
main.pdf
(Keywords: mathematics, display.) Video demo

To include mathematics in a "displayed" style use the following:

```
Here is an integral:
\[
\int_{0}^{5}x ^ 2dx
\]
Here is a summation:
$$
\sum_{i=1}^{n}i=\frac{n(n+1)}{2}
$$
```

Note that using `\[`

and `\]`

is preferred over `$$`

. One of the reasons is that
it is easier for humans (and machines) to find the start and end of some
mathematics.

A full document making use of displayed mathematics is:

```
\documentclass{article}
\title{Displayed mathematics}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
Here is an integral:
\[
\int_{0}^{5}x ^ 2dx
\]
Here is a summation:
$$
\sum_{i=1}^{n}i=\frac{n(n+1)}{2}
$$
\end{document}
```

main.tex
main.pdf
(Keywords: mathematics, equations, label.) Video demo

Mathematics can also be included in equations and referred to as for sections:

```
\begin{equation}\label{my_first_equation}
e=mc^2
\end{equation}
In equation (\ref{my_first_equation}) we have a very well known relationship!
```

A full document making use of equations is:

```
\documentclass{article}
\title{Equations}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\begin{equation}\label{my_first_equation}
e=mc^2
\end{equation}
In equation (\ref{my_first_equation}) we have a very well known relationship.
\end{document}
```

main.tex
main.pdf
(Keywords: text, mbox, mathematics.) Video demo

To include text within mathematics we can use the `text`

command from the `amsmath`

package:

```
\[
x^2 = 1 \text{ implies} x=\pm 1
\]
```

Be sure to include `usepackage{amsmath}`

in the preamble.

Another command that does this is `mbox`

which does not require the amsmath package.

A full document making use of `\text`

is:

```
\documentclass{article}
\usepackage{amsmath}
\title{Text within mathematics}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\[
x^2 = 1 \text{ implies} x=\pm 1
\]
\end{document}
```

main.tex
main.pdf
(Keywords: arithmetic, mathematics.) Video demo

Arithmetic operators are available in \(\LaTeX\):

```
\begin{itemize}
\item \(a+b\)
\item \(a-b\)
\item \(-a\)
\item \(ab\)
\item \(a\cdot b\)
\item \(a\times b\)
\item \(a/b\)
\item \({a\over b}\)
\item \(\frac{a}{b}\)
\end{itemize}
```

A full document showing these is:

```
\documentclass{article}
\title{Arithmetic operators}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\begin{itemize}
\item \(a+b\)
\item \(a-b\)
\item \(-a\)
\item \(ab\)
\item \(a\cdot b\)
\item \(a\times b\)
\item \(a/b\)
\item \({a\over b}\)
\item \(\frac{a}{b}\)
\end{itemize}
\end{document}
```

main.tex
main.pdf
(Keywords: matrices, linear algebra, mathematics.) Video demo

The following code gives a 3 by 2 matrix:

```
\[
\begin{pmatrix}
a&b\\
c&d\\
e&f\\
\end{pmatrix}
\]
```

Note that this requires the `amsmath`

package.

Other types of matrices can be obtained used `\begin{matrix}`

and
`begin{vmatrix}`

.

A full document showing these is:

```
\documentclass{article}
\usepackage{amsmath}
\title{Matrices}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\[
\begin{pmatrix}
a&b\\
c&d\\
e&f\\
\end{pmatrix}
\]
\[
\begin{matrix}
a&b\\
c&d\\
e&f\\
\end{matrix}
\]
\[
\begin{vmatrix}
a&b\\
c&d\\
e&f\\
\end{vmatrix}
\]
\end{document}
```

main.tex
main.pdf
(Keywords: aligned, label, mathematics.) Video demo

It is possible to create aligned mathematics using:

```
\begin{align}
(x+h)^2-x^2 & =x^2+2xh+h^2-x^2 \nonumber\\
& =2xh+h^2 \nonumber\\
& =h(2x+h) \nonumber
\end{align}
```

Note that this requires the `amsmath`

package.

Annotated text can also be added:

```
\begin{align}
(x+h)^2-x^2 & = x^2+2xh+h^2-x^2 && \text{(by distributivity)}\\
& = 2xh+h^2 && \text{(by subtraction)}\\
& = h(2x+h) && \text{(by factorisation)}
\end{align}
```

A full document showing these is:

```
\documentclass{article}
\usepackage{amsmath}
\title{Aligned mathematics}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
Some examples of aligned mathematics:
\begin{align}
(x+h)^2-x^2 & =x^2+2xh+h^2-x^2 \nonumber\\
& =2xh+h^2 \nonumber\\
& =h(2x+h) \nonumber
\end{align}
Some explanatory text:
\begin{align}
(x+h)^2-x^2 & = x^2+2xh+h^2-x^2 && \text{(by distributivity)}\\
& = 2xh+h^2 && \text{(by subtraction)}\\
& = h(2x+h) && \text{(by factorisation)}
\end{align}
\end{document}
```

main.tex
main.pdf
(Keywords: partitioned, mathematics.) Video demo

It is possible to create partitioned statements for case dependent expressions:

```
\[
1 + (-1) ^ n =
\begin{cases}
0, & \text{if \(n\) odd}\\
2, & \text{if \(n\) even}
\end{cases}
\]
```

Note that this requires the `amsmath`

package.

A full document showing this is:

```
\documentclass{article}
\usepackage{amsmath}
\title{Partitioned statements}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\[
1 + (-1) ^ n =
\begin{cases}
0, & \text{if \(n\) odd}\\
2, & \text{if \(n\) even}
\end{cases}
\]
\end{document}
```

main.tex
main.pdf
(Keywords: header, margin, footer, page, geometry.) Video demo

It is possible to modify margins, footer and header size of \(\LaTeX\) pages.

This is done using the geometry package.

```
\usepackage[margin=1.5cm, includefoot, footskip=30pt]{geometry}
```

This sets a margin size, include a footer and sets the distance between the text and the footer.

There are numerous other options that can be passed to the geometry package. Some of these are:

`textwidth`

: The width of the text`headheight`

: Height of the header`top`

: Distance from text to top

A full document showing this is:

```
\documentclass{article}
\usepackage[margin=1.5cm, includefoot, footskip=30pt]{geometry}
\title{Page formatting}
\author{V Knight}
\date{\today}
\begin{document}
\maketitle
\end{document}
```

main.tex
main.pdf
(Keywords: beamer, presentations.) Video demo

It is possible to create high quality presentations in \(LaTeX\). To do this
we use the `beamer`

document class:

```
\documentclass{beamer}
\begin{document}
\frame{This is my first slide.}
\frame{This is my second slide.}
\end{document}
```

It is possible to select from a number of different themes (and make your own):

```
\usetheme{default}
\usetheme{Boadilla}
\usetheme{Madrid}
\usetheme{Montpellier}
\usetheme{Warsaw}
\usetheme{Copenhagen}
\usetheme{Goettingen}
\usetheme{Hannover}
\usetheme{Berkeley}
```

A full document showing this is:

```
\documentclass{beamer}
\usetheme{Boadilla}
\begin{document}
\frame{This is my first slide.}
\frame{This is my second slide.}
\end{document}
```

main.tex
main.pdf
(Keywords: beamer, presentations, titlepage.) Video demo

Most of the LaTeX code you have learnt so far an be used without much change in
a beamer presentation within the `frame`

environment. There are however a few
particularities:

To make a title, you need to use the `\titlepage`

instead of the `\maketitle`

command:

```
\frame{
\titlepage
}
```

We can also have frame titles and sections as before in a Beamer document:

```
\frame{\frametitle{Overview}
\tableofcontents
}
\section{Simple Beamer}
\frame{\frametitle{My first slide}}
```

There are various other commands and tools that can be used in Beamer. In
particular take a look at the `pause`

, `only`

and `onslide`

commands.

A full document showing this is:

```
\documentclass{beamer}
\usetheme{Boadilla}
\title{Beamer with sections and titles}
\author{V Knight}
\date{\today}
\begin{document}
\frame{
\titlepage
}
\frame{\frametitle{Overview}
\tableofcontents
}
\section{Simple Beamer}
\frame{\frametitle{My first slide}}
\end{document}
```

main.tex
main.pdf
- YouTube playlist with all videos
- Tutorial by Geraint Palmer
- Welsh language tutorial by Geraint Palmer
- Overleaf introduction to \(\LaTeX\)
- A blog post about moving floats
- Small Guide to Making Nice Tables
- Writing Science with \(LaTeX\)

Source code: @drvinceknight Powered by: Python Prism.js Mathjax Github pages Skeleton css