enumitem is the standard package for reshaping itemize, enumerate, and description through key=value options. Instead of hand-overriding internal commands with \renewcommand, you write the settings in the environment’s square brackets — \begin{enumerate}[label=(\alph*), leftmargin=*]. Label format, spacing between items, margins, where numbering starts or resumes, even inline (run-in) lists and freshly defined list types: nearly everything about lists lives here.
The key=value idea
Load it in the preamble with \usepackage{enumitem}, and the three basic list environments gain an optional argument. Write comma-separated key=value pairs inside the brackets — \begin{itemize}[...] — and that one list is configured. If a value is wholly wrapped in braces, the outer pair is stripped off (the default keyval behaviour), so to keep the braces themselves you double them.
\usepackage{enumitem}
% ...
\begin{itemize}[itemsep=1ex, leftmargin=1cm]
\item 余白と項目間を調整した箇条書き
\item 二つめの項目
\end{itemize}The same keys can be overridden in a hierarchy — for the whole document, per list type, or for one list (via \setlist, below). The most specific value wins, so you can set a global policy and override only where needed.
Label and reference format (label, ref)
In enumerate, the label is set with label=. Inside the value, the starred forms of \arabic, \alph, \Alph, \roman, and \Roman (\arabic* and friends) stand for the current counter at that level. So label=(\arabic*) gives (1) (2) (3), label=\alph*) gives a) b) c), and label=\Roman*. gives I. II. III. These starred forms take no argument; they are the special spellings that expand to the counter value inside a label.
\begin{enumerate}[label=(\alph*)]
\item りんご
\item みかん
\item ぶどう
\end{enumerate}By default the label= setting also governs how cross-references (\ref) look. To give references a different format, add ref=. For instance, you can print the in-list label as (1) with parentheses while making \ref produce a bare 1.
\begin{enumerate}[label=(\arabic*), ref=\arabic*]
\item \label{step:one} 下ごしらえ
\item 加熱する
\end{enumerate}
手順~\ref{step:one} に戻る。Note that label and ref values are moving arguments, so fragile commands may need \protect (the starred counters themselves are fine). It also helps to remember that changing label= updates the counter representation at that level (\theenumi and so on) along with it.
Spacing and margins (itemsep, leftmargin, …)
The lengths LaTeX uses internally become key names directly in enumitem. Vertically: topsep (above and below the list), partopsep (an extra bit when the list follows a paragraph), parsep (between paragraphs within one entry), and itemsep (between entries). Horizontally: leftmargin / rightmargin (the side margins), labelsep (label-to-body gap), labelwidth (the label box width), itemindent, and enumitem’s own labelindent (the gap from the outside to the left edge of the label box).
| Key | Meaning | Axis |
|---|---|---|
topsep | Space above and below the list | Vertical |
partopsep | Extra space when the list follows a paragraph | Vertical |
parsep | Space between paragraphs within one entry | Vertical |
itemsep | Space between entries | Vertical |
leftmargin | Left margin of the list body | Horizontal |
labelsep | Gap between the label and the entry body | Horizontal |
labelwidth | Width of the box that holds the label | Horizontal |
labelindent | Gap from the outside to the label box (added by enumitem) | Horizontal |
align | Label alignment (left / right (default) / parleft) | — |
These are not independent; they are tied by \leftmargin + \itemindent = \labelindent + \labelwidth + \labelsep. So giving * or ! to some keys lets enumitem compute the rest. In particular **leftmargin=* is the everyday pattern that sizes the left margin to the label, and labelsep=*** is handy when you want the body to start at a fixed place. align= controls whether the label sits flush left, flush right (the default), or in a left-aligned parbox — tidying how numbers and markers line up.
Compact lists and shortcuts (nosep, noitemsep, wide)
A few shortcuts adjust spacing quickly. **nosep zeroes all vertical space** around and between entries (topsep, partopsep, parsep, and itemsep together at 0pt) for a tightly packed list. **noitemsep removes only the between-item and between-paragraph** space (itemsep=0pt, parsep=0pt) while keeping the space above and below the list.
\begin{itemize}[nosep]
\item 詰まった項目その一
\item 詰まった項目その二
\item 詰まった項目その三
\end{itemize}Another convenience key is **wide**. It nulls the left margin so the label reads as part of the text and entries set like ordinary paragraphs (internally it expands to align=left, leftmargin=0pt, labelindent=\parindent, labelwidth=0pt, itemindent=! and the like). To change the indentation, pass a value, as in wide=\parindent.
And to write enumerate labels in the short style of the enumerate package, load it with \usepackage[shortlabels]{enumitem}. Then writing A, a, I, i, or 1 as the first element in the brackets means \Alph*, \alph*, \Roman*, \roman*, or \arabic* respectively (e.g. \begin{enumerate}[(1)]).
Starting and resuming numbers (start, resume)
There are keys for numbering, too. **start=** sets the number of the first item (start=5 begins at 5). To break for a paragraph and then continue numbering **from the previous enumerate, use resume. To also carry over that previous list’s option settings, use resume*** (this starred form only makes sense in the environment’s brackets).
\begin{enumerate}
\item 最初の項目
\item 二つめの項目
\end{enumerate}
途中に説明の段落が入る。
\begin{enumerate}[resume]
\item 三つめの項目(番号が続く)
\end{enumerate}resume continues locally. To thread numbering across several separated lists as one global unit, use the “series” feature: tag the starting list with series=name, then on later lists give resume=name or resume*=name.
Global settings and new list types (\setlist, \newlist)
Writing the same settings every time is tedious. **\setlist** applies settings in bulk to a chosen list type and level. \setlist[enumerate,1]{...} targets level 1 of enumerate, \setlist[itemize]{...} targets all levels of itemize, and \setlist{...} (no brackets) reaches every level of every list. The starred \setlist* adds to the previous settings instead of overriding them.
% プリアンブルで一括設定
\setlist{nosep} % すべてのリストの空きを詰める
\setlist[itemize]{leftmargin=*} % itemize の左余白を自動調整
\setlist[enumerate,1]{label=(\arabic*), ref=\arabic*}Going further, you can define your own list types. **\newlist{name}{type}{max-depth}** clones one of the three basic lists (enumerate, itemize, or description) into a new environment, and you then give it a look with \setlist[name]{...} (you must at least set the label). Because you can give it a logical name, the manuscript’s intent reads more clearly.
\newlist{steps}{enumerate}{1}
\setlist[steps]{label=\textbf{Step \arabic*.}, leftmargin=*}
% 本文では独自の環境として使える
\begin{steps}
\item お湯を沸かす
\item 麺を入れる
\end{steps}Inline (run-in) lists
You can also set lists horizontally within a paragraph — “inline lists.” Load the package as \usepackage[inline]{enumitem} and you gain the starred environments enumerate*, itemize*, and description*. They share the labelling of their displayed counterparts, and keys such as label= work as usual.
\usepackage[inline]{enumitem}
% ...
必要なものは
\begin{enumerate*}[label=(\arabic*)]
\item 小麦粉
\item 砂糖
\item 塩
\end{enumerate*}
の三つです。Punctuation in an inline list is tuned with keys like itemjoin (between items; a space by default), itemjoin* (for a different separator just before the last item), and afterlabel (right after the label; ~ by default). Note that inline-list items are boxed by default, so floats, nested lists, and displayed math cannot go inside (use mode=unboxed if you need them). They suit short run-in phrases.