LaTeX Lists
Lists are fundamental for organizing information in documents. LaTeX provides three core list environments – itemize for bulleted lists,enumerate for numbered lists, and description for definition-style lists – along with powerful packages for customization.
Unordered Lists (itemize)
The itemize environment creates a bulleted (unordered) list. Each entry begins with the \item command:
\begin{itemize}
\item First item
\item Second item
\item Third item
\end{itemize}By default, LaTeX uses a solid bullet (\\textbullet) for first-level items. You can add as many \item entries as you need.
Itemize with Custom Markers
Override the default bullet for a single item by placing the desired symbol in square brackets:
\begin{itemize}
\item Default bullet
\item[-] Dash marker
\item[*] Asterisk marker
\item[$\diamond$] Diamond marker
\end{itemize}Ordered Lists (enumerate)
The enumerate environment produces a numbered (ordered) list. LaTeX automatically handles the numbering:
\begin{enumerate}
\item First step
\item Second step
\item Third step
\end{enumerate}The default numbering style is Arabic numerals (1, 2, 3, ...) at the first level, lowercase letters (a, b, c, ...) at the second, Roman numerals (i, ii, iii, ...) at the third, and uppercase letters (A, B, C, ...) at the fourth.
Description Lists
A description list highlights a term followed by its explanation. Use \item[Term] to set the label:
\begin{description}
\item[LaTeX] A document preparation system for high-quality typesetting.
\item[TikZ] A package for creating graphics programmatically.
\item[BibTeX] A tool for managing bibliographic references.
\end{description}The term inside the brackets is rendered in bold by default, making description lists ideal for glossaries, feature lists, and FAQs.
Nested Lists
LaTeX supports nesting lists up to four levels deep. You can mix different list types freely:
Nested Itemize
\begin{itemize}
\item Fruits
\begin{itemize}
\item Apples
\item Bananas
\begin{itemize}
\item Cavendish
\item Plantain
\end{itemize}
\end{itemize}
\item Vegetables
\end{itemize}Each nesting level automatically uses a different bullet symbol:\\textbullet, \\textendash,\\textasteriskcentered, and \\textperiodcentered.
Mixed Nesting (Itemize inside Enumerate)
\begin{enumerate}
\item Prepare the ingredients
\begin{itemize}
\item 200g flour
\item 100ml milk
\item 2 eggs
\end{itemize}
\item Mix everything together
\item Bake at 180\textdegree C for 25 minutes
\end{enumerate}Enumerate inside Itemize
\begin{itemize}
\item Morning routine
\begin{enumerate}
\item Wake up
\item Exercise
\item Breakfast
\end{enumerate}
\item Evening routine
\begin{enumerate}
\item Dinner
\item Read
\item Sleep
\end{enumerate}
\end{itemize}Customizing Bullet Styles
You can change bullet symbols on a per-item basis or globally for each nesting level.
Per-Item Symbols
\begin{itemize}
\item[$\bullet$] Bullet
\item[$\circ$] Circle
\item[$\star$] Star
\item[$\rightarrow$] Arrow
\item[$\checkmark$] Checkmark
\end{itemize}Global Defaults with renewcommand
Place these commands in your preamble to change the default markers for all itemize lists throughout the document:
% Change first-level bullet to a dash
\renewcommand{\labelitemi}{--}
% Change second-level bullet to a circle
\renewcommand{\labelitemii}{$\circ$}
% Change third-level bullet to a star
\renewcommand{\labelitemiii}{$\star$}
% Change fourth-level bullet to a diamond
\renewcommand{\labelitemiv}{$\diamond$}The commands \labelitemi through \labelitemivcorrespond to nesting levels 1 through 4 respectively.
Customizing Numbering
The enumerate package (or the more powerful enumitempackage) lets you specify the label format for numbered lists.
Using the enumitem Package
\usepackage{enumitem}
% Lowercase letters in parentheses: (a), (b), (c)
\begin{enumerate}[label=(\alph*)]
\item First item
\item Second item
\item Third item
\end{enumerate}
% Lowercase Roman numerals: (i), (ii), (iii)
\begin{enumerate}[label=(\roman*)]
\item First item
\item Second item
\item Third item
\end{enumerate}
% Custom prefix: Step 1:, Step 2:, Step 3:
\begin{enumerate}[label=Step \arabic*:]
\item Gather materials
\item Assemble components
\item Test the result
\end{enumerate}
% Uppercase letters: A., B., C.
\begin{enumerate}[label=\Alph*.]
\item Section one
\item Section two
\item Section three
\end{enumerate}Label Format Tokens
| Token | Output | Example |
|---|---|---|
\arabic* | 1, 2, 3 | label=\arabic*. |
\alph* | a, b, c | label=(\alph*) |
\Alph* | A, B, C | label=\Alph*) |
\roman* | i, ii, iii | label=\roman*. |
\Roman* | I, II, III | label=\Roman*. |
Compact Lists
By default, LaTeX adds vertical spacing between list items. The enumitempackage provides options to remove or reduce this spacing for tighter lists.
Using nosep
The nosep option removes all extra vertical spacing (before, after, and between items):
\usepackage{enumitem}
\begin{itemize}[nosep]
\item First item
\item Second item
\item Third item
\end{itemize}Using noitemsep
The noitemsep option removes spacing between items but preserves spacing before and after the list:
\begin{enumerate}[noitemsep]
\item Step one
\item Step two
\item Step three
\end{enumerate}Custom Spacing
For fine-grained control, set specific spacing values:
\begin{itemize}[
topsep=4pt, % Space above/below the list
itemsep=2pt, % Space between items
parsep=0pt, % Space between paragraphs within an item
partopsep=0pt, % Extra space added at top if list starts a paragraph
leftmargin=1.5em % Left indent
]
\item First item
\item Second item
\item Third item
\end{itemize}Inline Lists
The enumitem package provides starred versions of list environments that render items inline (within the running text), perfect for short sequences:
\usepackage[inline]{enumitem}
The primary colors are
\begin{enumerate*}[label=(\arabic*)]
\item red,
\item blue, and
\item yellow.
\end{enumerate*}
The requirements are:
\begin{itemize*}[label=\textbullet]
\item a compiler,
\item a text editor, and
\item a PDF viewer.
\end{itemize*}Load enumitem with the [inline] option to enable the enumerate* and itemize* environments.
Multi-Column Lists
Combine the multicol package with list environments to display items in multiple columns, saving space for long lists:
\usepackage{multicol}
\begin{multicols}{2}
\begin{itemize}[nosep]
\item Alpha
\item Beta
\item Gamma
\item Delta
\item Epsilon
\item Zeta
\end{itemize}
\end{multicols}You can also use the multicols environment with enumeratefor numbered multi-column lists:
\begin{multicols}{3}
\begin{enumerate}[nosep]
\item Item 1
\item Item 2
\item Item 3
\item Item 4
\item Item 5
\item Item 6
\item Item 7
\item Item 8
\item Item 9
\end{enumerate}
\end{multicols}Quick Reference Table
| Environment | Purpose | Default Style |
|---|---|---|
itemize | Unordered (bulleted) list | Bullet symbols that vary by nesting level |
enumerate | Ordered (numbered) list | 1, 2, 3 at level 1; a, b, c at level 2 |
description | Definition / term list | Bold label followed by description text |
enumerate* | Inline numbered list | Items rendered within running text |
itemize* | Inline bulleted list | Items rendered within running text |
Common Packages
| Package | Primary Use |
|---|---|
enumitem | Customise labels, spacing, and create inline lists. The most versatile list package. |
paralist | Provides compact and inline list environments (compactitem, inparaenum). |
tasks | Create horizontally distributed "task" lists, ideal for exercise sheets and exams. |
multicol | Render any list in multiple columns for space-efficient layouts. |
Next Steps
- Bold, Italics & Underline – Master text formatting in LaTeX
- LaTeX Tables – Create professional tables with booktabs
- Learn LaTeX Basics – Review core LaTeX fundamentals
- Learn TikZ – Create diagrams and graphics
Free LaTeX Tools
- LaTeX Preview – Test your list code with live PDF preview
- AI LaTeX Generator – Generate LaTeX from text descriptions
- Excel to LaTeX – Convert spreadsheets to LaTeX tables
- LaTeX Symbols Reference – Browse math operators and special characters
Write LaTeX lists faster with AI
Octree's AI editor helps you generate and format LaTeX lists, nested structures, and custom numbering – so you can focus on your content instead of syntax.
Try Octree Free →