10 · LaTeX#

?> TL;DR ?> LaTeX is the typesetting system universities and scientific journals have used for 40 years. It separates content from layout, produces stunning PDFs, and makes equations + references feel automatic. You’ll use it to generate the PDF documentation in Lab 1.2 and any project report you write.

Why LaTeX?#

For most writing, Markdown is easier. But LaTeX is essential when you need:

  • Mathematical equations — nothing else comes close.
  • Bibliographies and citations — add papers to a .bib file, cite with \cite{key}, get a formatted reference list automatically.
  • Consistency across 50+ pages — headers, page numbers, figure numbering, table of contents all “just work”.
  • Journal / conference templates — NeurIPS, IEEE, ACM all publish .tex templates.
  • Reproducible PDFs — source control a .tex file; anyone running pdflatex gets the same output.

The Two Ways to Use LaTeX#

Option A — Overleaf (the easy way)#

Overleaf is a web-based LaTeX editor. No install, live preview, free for personal use, collaborative like Google Docs.

  1. Go to overleaf.com.
  2. Sign up (free tier is fine).
  3. New Project → Blank Project.
  4. Edit the left pane, watch PDF render on the right.

This is how 90% of students use LaTeX. Start here.

Option B — Local install with pandoc (for Lab 1.2)#

For automated builds (CI, GitHub Actions), you want a local LaTeX + pandoc install.

macOS
# MacTeX is huge (~4 GB). For most people, BasicTeX is enough:
brew install --cask basictex
# Then add packages as needed:
sudo tlmgr update --self
sudo tlmgr install collection-fontsrecommended

# Pandoc for Markdown → LaTeX conversion
brew install pandoc
Linux (Ubuntu)
sudo apt install texlive-full pandoc      # ~5 GB
# Or lighter:
sudo apt install texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra pandoc
Windows

Download MiKTeX and pandoc. MiKTeX auto-installs missing packages on demand.

Verify:

pdflatex --version
pandoc --version

Your First Document#

\documentclass[11pt]{article}

\usepackage[a4paper,margin=1in]{geometry}
\usepackage{hyperref}              % clickable links
\usepackage{graphicx}               % include images
\usepackage{amsmath, amssymb}       % math

\title{Tools in Data Science}
\author{Your Name}
\date{\today}

\begin{document}
\maketitle

\section{Introduction}
LaTeX turns plain text into \textbf{professional documents}.

\section{Math}
Einstein said $E = mc^2$. The fundamental theorem of calculus:
\begin{equation}
\int_a^b f'(x)\, dx = f(b) - f(a)
\end{equation}

\section{References}
Visit \url{https://iitm.ac.in}.

\end{document}

Compile:

pdflatex hello.tex         # creates hello.pdf

?> Two compiles for correct cross-refs ?> LaTeX needs two passes to resolve forward references (table of contents, \ref{}, page numbers). Always run pdflatex twice, or use latexmk: ?> bash ?> latexmk -pdf hello.tex ?>

Essential Structure Commands#

\documentclass[options]{class}     % article | report | book | beamer (slides)

\usepackage{pkg}                   % import package (hyperref, graphicx, etc.)

\title{...} \author{...} \date{...}
\maketitle                         % render title block

\tableofcontents                   % auto-generated TOC

\section{Intro}                    % H1
\subsection{Background}            % H2
\subsubsection{Details}            % H3

\label{sec:intro}                  % attach a label
Refer to Section~\ref{sec:intro}.  % reference it

Text Formatting#

LaTeXResult
\textbf{bold}bold
\textit{italic}italic
\texttt{code}code (monospace)
\emph{emphasis}emphasis (context-aware)
\underline{under}underlined
\footnote{note}footnote superscript + note at page bottom

Math Mode — LaTeX’s Superpower#

Inline math with $...$:

The speed of light is $c \approx 3 \times 10^8$ m/s.

Display math with \[ ... \] (or \begin{equation}...\end{equation} for numbering):

\[
\hat{y} = \arg\max_y P(y \mid x) = \arg\max_y \frac{P(x \mid y) P(y)}{P(x)}
\]

Common constructs:

LaTeXMath
\frac{a}{b}a/b as fraction
\sqrt{x}√x
x^2, x_{ij}superscript / subscript
\sum_{i=1}^n, \prod, \intΣ, Π, ∫
\alpha, \beta, \gamma, ... \omegaGreek letters
\mathbb{R}, \mathbb{N}ℝ, ℕ
\mathbf{v}bold vector
\to, \leftarrow, \Rightarrowarrows
\leq, \geq, \neq, \approxrelations
\in, \subset, \cup, \capset operations

Matrices:

\[
A = \begin{pmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{pmatrix}
\]

Images and Figures#

\usepackage{graphicx}

% Just the image
\includegraphics[width=0.6\linewidth]{plots/loss.png}

% Figure with caption + label
\begin{figure}[h]                  % h = here, t = top, b = bottom, p = page
  \centering
  \includegraphics[width=0.8\linewidth]{diagram.pdf}
  \caption{Architecture of our RAG system.}
  \label{fig:arch}
\end{figure}

Refer to Figure~\ref{fig:arch}.

Tables#

\begin{table}[h]
  \centering
  \begin{tabular}{lcr}              % l=left, c=center, r=right
    \hline
    Model  & Accuracy & F1    \\
    \hline
    BM25   & 0.72     & 0.69  \\
    Dense  & 0.81     & 0.78  \\
    Hybrid & \textbf{0.86} & \textbf{0.84} \\
    \hline
  \end{tabular}
  \caption{Retrieval results on the TDS benchmark.}
  \label{tab:retrieval}
\end{table}

For prettier tables, use the booktabs package (\toprule, \midrule, \bottomrule).

Citations with BibTeX#

Create a references.bib file:

@article{vaswani2017attention,
  title   = {Attention Is All You Need},
  author  = {Vaswani, Ashish and others},
  journal = {NeurIPS},
  year    = {2017}
}

@misc{astral2024uv,
  title  = {uv: An extremely fast Python package manager},
  author = {{Astral Software}},
  year   = {2024},
  url    = {https://github.com/astral-sh/uv}
}

In your .tex:

\usepackage{natbib}   % or: \usepackage{biblatex} for modern bibliography

Transformers were introduced by \cite{vaswani2017attention}.

\bibliographystyle{plain}
\bibliography{references}

Compile order: pdflatex → bibtex → pdflatex → pdflatex. Or just latexmk -pdf.

Pandoc — Markdown → PDF in One Command#

For Lab 1.2 we’ll convert Markdown docs to LaTeX-rendered PDFs. Pandoc is the tool.

# Basic
pandoc README.md -o README.pdf

# With nice engine (unicode fonts, better typography)
pandoc README.md -o README.pdf --pdf-engine=xelatex

# With title, TOC, sections, syntax highlighting
pandoc docs/intro.md -o intro.pdf \
  --pdf-engine=xelatex \
  --toc \
  --number-sections \
  -V geometry:margin=1in \
  -V fontsize=11pt \
  -V colorlinks=true \
  --highlight-style=tango

A Custom Template#

Create template.tex to control the look:

\documentclass[11pt, a4paper]{article}
\usepackage[margin=1in]{geometry}
\usepackage{hyperref}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{$title$}
\rhead{\today}

\title{$title$}
\author{$author$}

\begin{document}
\maketitle
\tableofcontents
\newpage

$body$

\end{document}

Use it:

pandoc README.md -o README.pdf \
  --template=template.tex \
  --pdf-engine=xelatex

LaTeX Project Structure for Labs#

project/
├── main.tex              # document root
├── sections/
│   ├── intro.tex
│   ├── methods.tex
│   └── results.tex
├── figures/
│   ├── arch.pdf
│   └── loss.png
├── references.bib
└── Makefile

In main.tex:

\input{sections/intro}
\input{sections/methods}
\input{sections/results}

Makefile:

main.pdf: main.tex sections/*.tex references.bib
	latexmk -pdf -interaction=nonstopmode main.tex

clean:
	latexmk -C
	rm -f *.bbl *.aux *.log

Common Pitfalls#

!> Special characters need escaping !> These characters have special meaning in LaTeX: & % $ # _ { } ~ ^ \ !> To print them literally: \& \% \$ \# \_ \{ \} \~{} \^{} \textbackslash !> !> Pandoc handles this for you when converting from Markdown.

?> Missing packages ?> ! LaTeX Error: File xxx.sty’ not found.On TeX Live, install withsudo tlmgr install xxx`. On MiKTeX, it auto-installs on demand.

5-Minute Exercise#

  1. Open overleaf.com → New Project → Blank.
  2. Paste the hello.tex above.
  3. Click Recompile → see the PDF.
  4. Add an equation:
    \[ \sum_{i=1}^{100} i = \frac{100 \cdot 101}{2} = 5050 \]
  5. Download PDF — share on Discourse.

Further Reading#