Latex
Typeset all of your papers using latex.
Installation
No Install
Use Overleaf to create latex documents in a web browser.
Partial Install
Download MikTex. It includes the TeXworks editor and will download packages as you use them. This will not take up as much disk space as a full install.
Full Install
Windows
Download TexLive. This is several gigabytes since it includes all the popular LaTex packages and takes a while to install. You'll also need an editor. I recommend installing Atom with the following packages:
latex
for calling the TexLive compilerlanguage-latex
for syntax highlightingpdf-view
for viewing the compiled pdf.
Linux
sudo apt install texlive-full
Compile tex documents with
pdflatex [mydocument.tex]
Usage
Fancy Math Font
See this answer.
% Use mathbb for the set of reals R or the set of complex numbers C
% Requires amsfonts
\mathbb{R}
Spaces
See Reference
Spaces in mathematical mode.
\begin{align*}
f(x) =& x^2\! +3x\! +2 \\
f(x) =& x^2+3x+2 \\
f(x) =& x^2\, +3x\, +2 \\
f(x) =& x^2\: +3x\: +2 \\
f(x) =& x^2\; +3x\; +2 \\
f(x) =& x^2\ +3x\ +2 \\
f(x) =& x^2\quad +3x\quad +2 \\
f(x) =& x^2\qquad +3x\qquad +2
\end{align*}
Units
For spacing between elements, use \hspace
or \vspace
.
\hspace[4mm]
Units in Latex
You can specify spacing in pt, mm, cm, ex, em, bp, dd, pc, in
Indents
Section
\hspace*{5mm}\begin{minipage}{\dimexpr\textwidth-5mm} Indented Section \end{minipage}
Programming
Latex is a turing complete language.
You can use if statements and for loops in latex.
Custom Commands
You can define your own commands using \newcommand
Custom Operators
Latex packages like amsmath come with operators such as \sin
and \log
.
To get normal text for custom functions like arcsin, use \operatorname{arcsin}
.
Below are some potentially useful math operators.
\DeclareMathOperator{\Tr}{Tr}
\DeclareMathOperator{\VCdim}{VCdim}
\DeclareMathOperator{\sign}{sign}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\argmin}{argmin}
\DeclareMathOperator{\argmax}{argmax}
Programming
For Each Loops
\foreach [count=\i] \j in {A,B,...,H}{
Element \i~is \j\\
}
Page Layout
There are many packages which adjust the page layout.
You can use the package wordlike
for a MS Word layout.
Font
- Font size
\documentclass[12pt]{article}
- Font type
- Times New Roman -
\usepackage{mathptmx}
Enumerate
Enumerate is used to make lists
Change the label
Reference
Add the option for the labels:
label=(\alph*)
for letterslabel=(\Alph*)
for upper-case letterslabel=(\roman*)
for roman numerals.label=(\arabic*)
for numbers
\usepackage{enumitem}
#...
\begin{enumerate}[label=(\alph*)]
\item an apple
\item a banana
\item a carrot
\item a durian
\end{enumerate}
Other Options
font=\bfseries
for bold labelsalign=left
left align labels
Useful Commands
A list of potentially useful commands
\newcommand{\degree}{\ensuremath{^{\circ}} }
\newcommand{\etal}{{\em et al. }}
\newcommand{\ceil}[1]{{\lceil #1 \rceil}
\newcommand{\floor}[1]{{\lfloor #1 \rfloor}
Bibliography (Bibtex)
How to do references in Latex.
Bibtex Examples
Citations
Use \cite
or some variant to cite references.
Natbib reference sheet
# Defaults to author-year citations \usepackage{natbib} # For numerical citations \usepackage[numbers]{natbib} # If using author-year citations \citet{jon90} ⇒ Jones et al. (1990) \citep{jon90} ⇒ (Jones et al., 1990) \citep[see][]{jon90} ⇒ (see Jones et al., 1990) # If using numerical citations \citet{jon90} ⇒ Jones et al. [21] \citep{jon90} ⇒ [21] \citep[see][]{jon90} ⇒ [see 21]
Case of Titles
If you do not want lower case titles, you can change your .bst
file by commenting out the portion
which alters the case.
FUNCTION {format.title} { %title empty$ % { "" } % { title "t" change.case$ } %if$ title %add.link }
Tikz
Tikz is used to draw graphs and other shapes
Drawing over images
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {
\includegraphics[width=.9\linewidth]{my_image.png}
};<br />
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[black,ultra thick,rounded corners] (0.0,0.1) rectangle (0.3,0.5);
\draw[red,ultra thick,rounded corners] (0.5,0.1) rectangle (0.8,0.5);
% \draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
% \foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
% \foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; }
\end{scope}
\end{tikzpicture}
Algorithms
How to insert pseudocode into your Latex document.
See algorithmc vs algorithmcx vs algorithm2e
Also Wikibooks: LaTeX/Algorithms for several examples
algorithmc
algorithmcx
algorithm2e
See https://en.wikibooks.org/wiki/LaTeX/Algorithms#Typesetting_using_the_algorithm2e_package
\usepackage[linesnumbered,ruled]{algorithm2e}
\begin{algorithm}[H]
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\caption{How to write algorithms}
\end{algorithm}
Document Class
Overleaf Writing your own class
Document classes are .cls
files which provide a layout for your document.
By writing your own document class, you can ensure a consistent layout across multiple latex documents.
You can also encapsulate commands and macros or package requirements within your document class.
- Notes
See Wikibooks: LaTeX/Document Structure for a list of common document classes and options.
Examples
Below is a basic example of a latex document
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{datetime}
\usepackage{lipsum}<br />
\usepackage[numbers]{natbib}
\newdateformat{monthyear}{%
\monthname[\THEMONTH] \THEYEAR}
\title{My Main Title\\
\large A Subtitle}
\author{My Name}
\date{\monthyear\today}
\begin{document}
\maketitle
\begin{abstract}
\lipsum[1]
\end{abstract}
\section{Introduction}
\lipsum[2-4]
\bibliographystyle{plain}
\bibliography{thebib}
\end{document}