\documentclass[a4paper]{article}
% generated by Docutils <http://docutils.sourceforge.net/>
\usepackage{cmap} % fix search and cut-and-paste in Acrobat
\usepackage{ifthen}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{alltt}
\usepackage{amsmath}
\usepackage{float} % extended float configuration
\floatplacement{figure}{H} % place figures here definitely
\usepackage{graphicx}
\setcounter{secnumdepth}{0}
\usepackage{longtable,ltcaption,array}
\setlength{\extrarowheight}{2pt}
\newlength{\DUtablewidth} % internal use in tables
\usepackage{tabularx}

%%% Custom LaTeX preamble
% PDF Standard Fonts
\usepackage{mathptmx} % Times
\usepackage[scaled=.90]{helvet}
\usepackage{courier}

%%% User specified packages and stylesheets

%%% Fallback definitions for Docutils-specific commands

% class handling for environments (block-level elements)
% \begin{DUclass}{spam} tries \DUCLASSspam and
% \end{DUclass}{spam} tries \endDUCLASSspam
\ifx\DUclass\undefined % poor man's "provideenvironment"
 \newenvironment{DUclass}[1]%
  {% "#1" does not work in end-part of environment.
   \def\DocutilsClassFunctionName{DUCLASS#1}
     \csname \DocutilsClassFunctionName \endcsname}%
  {\csname end\DocutilsClassFunctionName \endcsname}%
\fi

% Provide a length variable and set default, if it is new
\providecommand*{\DUprovidelength}[2]{
  \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{}
}

% abstract title
\providecommand*{\DUtitleabstract}[1]{\centerline{\textbf{#1}}}

% admonition (specially marked topic)
\providecommand{\DUadmonition}[2][class-arg]{%
  % try \DUadmonition#1{#2}:
  \ifcsname DUadmonition#1\endcsname%
    \csname DUadmonition#1\endcsname{#2}%
  \else
    \begin{center}
      \fbox{\parbox{0.9\linewidth}{#2}}
    \end{center}
  \fi
}

% width of docinfo table
\DUprovidelength{\DUdocinfowidth}{0.9\linewidth}

% field list environment (for separate configuration of `field lists`)
\ifthenelse{\isundefined{\DUfieldlist}}{
  \newenvironment{DUfieldlist}%
    {\quote\description}
    {\enddescription\endquote}
}{}

% numerical or symbol footnotes with hyperlinks and backlinks
\providecommand*{\DUfootnotemark}[3]{%
  \raisebox{1em}{\hypertarget{#1}{}}%
  \hyperlink{#2}{\textsuperscript{#3}}%
}
\providecommand{\DUfootnotetext}[4]{%
  \begingroup%
  \renewcommand{\thefootnote}{%
    \protect\raisebox{1em}{\protect\hypertarget{#1}{}}%
    \protect\hyperlink{#2}{#3}}%
  \footnotetext{#4}%
  \endgroup%
}

% custom inline roles: \DUrole{#1}{#2} tries \DUrole#1{#2}
\providecommand*{\DUrole}[2]{%
  \ifcsname DUrole#1\endcsname%
    \csname DUrole#1\endcsname{#2}%
  \else%
    #2%
  \fi%
}

% line block environment
\DUprovidelength{\DUlineblockindent}{2.5em}
\ifthenelse{\isundefined{\DUlineblock}}{
  \newenvironment{DUlineblock}[1]{%
    \list{}{\setlength{\partopsep}{\parskip}
            \addtolength{\partopsep}{\baselineskip}
            \setlength{\topsep}{0pt}
            \setlength{\itemsep}{0.15\baselineskip}
            \setlength{\parsep}{0pt}
            \setlength{\leftmargin}{#1}}
    \raggedright
  }
  {\endlist}
}{}

% list of command line options
\providecommand*{\DUoptionlistlabel}[1]{\bfseries #1 \hfill}
\DUprovidelength{\DUoptionlistindent}{3cm}
\ifthenelse{\isundefined{\DUoptionlist}}{
  \newenvironment{DUoptionlist}{%
    \list{}{\setlength{\labelwidth}{\DUoptionlistindent}
            \setlength{\rightmargin}{1cm}
            \setlength{\leftmargin}{\rightmargin}
            \addtolength{\leftmargin}{\labelwidth}
            \addtolength{\leftmargin}{\labelsep}
            \renewcommand{\makelabel}{\DUoptionlistlabel}}
  }
  {\endlist}
}{}

% informal heading
\providecommand*{\DUrubric}[1]{\subsubsection*{\emph{#1}}}

% title for topics, admonitions, unsupported section levels, and sidebar
\providecommand*{\DUtitle}[2][class-arg]{%
  % call \DUtitle#1{#2} if it exists:
  \ifcsname DUtitle#1\endcsname%
    \csname DUtitle#1\endcsname{#2}%
  \else
    \smallskip\noindent\textbf{#2}\smallskip%
  \fi
}

% titlereference standard role
\providecommand*{\DUroletitlereference}[1]{\textsl{#1}}

% hyperlinks:
\ifthenelse{\isundefined{\hypersetup}}{
  \usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref}
  \usepackage{bookmark}
  \urlstyle{same} % normal text font (alternatives: tt, rm, sf)
}{}
\hypersetup{
  pdftitle={Styling of Elements in Definition- or Field-List},
  pdfauthor={Hänsel;Gretel}
}

%%% Body
\begin{document}
\title{Styling of Elements in Definition- or Field-List%
  \label{styling-of-elements-in-definition-or-field-list}}
\author{}
\date{}
\maketitle

% Docinfo
\begin{center}
\begin{tabularx}{\DUdocinfowidth}{lX}
\textbf{Author}: &
	Hänsel \\
\textbf{Author}: &
	Gretel \\
\textbf{Address}: &
	{\raggedright
123 Example Street\\
Example, EX  Canada } \\
\textbf{Generic Docinfo List Field}: &
\begin{itemize}
\item This is a list.

\item It does not require \texttt{\textbackslash{}leavevmode} because it is in the docinfo.
\end{itemize}
\\
\end{tabularx}
\end{center}

\begin{DUclass}{abstract}
\begin{quote}
\DUtitle[abstract]{Abstract}

Test that \texttt{\textbackslash{}leavevmode} is inserted after the term or field-name
when required for correct placement of the item.
\end{quote}
\end{DUclass}


\section{Elements needing \texttt{\textbackslash{}leavevmode}%
  \label{elements-needing-leavevmode}%
}

\begin{DUfieldlist}
\item[{Bullet List:}]\leavevmode
\begin{itemize}
\item This is a bullet list nested in a field list.

\item It needs \texttt{\textbackslash{}leavevmode} so that it will start on a new line
after the term.

\item Without \texttt{\textbackslash{}leavevmode}, the first bullet would be on the same line as
the term, and the following bullets would not line up.
\end{itemize}

\item[{Enumerated List:}]\leavevmode
\begin{enumerate}
\item This is an enumerated list.

\item All lists need \texttt{\textbackslash{}leavevmode}.
\end{enumerate}

\item[{Field List:}]\leavevmode
\begin{DUfieldlist}
\item[{Field List:}]
Like this one

\item[{Needs \texttt{\textbackslash{}leavevmode}:}]
Yes
\end{DUfieldlist}

\item[{empty:}]\end{DUfieldlist}

\begin{description}
\item[{Definition List}] \leavevmode
\begin{description}
\item[{Nested}] 
inside another definition list.

\item[{Needs \texttt{\textbackslash{}leavevmode}?}] \leavevmode
\begin{description}
\item[{Yes.}] 
Independent of the nesting level.

\end{description}

\end{description}

\item[{Option List}] \leavevmode
\begin{DUoptionlist}
\item[-h]  Show help

\item[-v]  Be verbose

\item[-{}-rare]  a) This description starts with an enumeration
c) but does not need \texttt{\textbackslash{}leavevmode}.
\end{DUoptionlist}

\item[{Literal Block}] \leavevmode
\begin{quote}
\begin{alltt}
_needs_leavevmode  = True
\end{alltt}
\end{quote}

\item[{Doctest Block}] \leavevmode
\begin{quote}
\begin{alltt}
>>> needs_leavevmode(nodes.doctest_block)
True
\end{alltt}
\end{quote}

\item[{Line Block}] \leavevmode
\begin{DUlineblock}{0em}
\item[] Needs “\texttt{\textbackslash{}leavevmode}”,
\item[] so that all lines start with the same indent.
\end{DUlineblock}

\item[{Block Quote}] \leavevmode
% 

\begin{quote}
Block Quotes need “\texttt{\textbackslash{}leavevmode}”, too,
so that all lines start with the same indent.
\end{quote}

\item[{Table}] \leavevmode
\setlength{\DUtablewidth}{\linewidth}%
\begin{longtable*}{|p{0.051\DUtablewidth}|p{0.051\DUtablewidth}|}
\hline

1
 & 
2
 \\
\hline

3
 & 
4
 \\
\hline
\end{longtable*}

\item[{Figure}] \leavevmode
\begin{figure}
\noindent\makebox[\linewidth][c]{\includegraphics{../../../docs/user/rst/images/title.png}}
\caption{A figure}
\end{figure}

\item[{Image}] \leavevmode

\includegraphics{../../../docs/user/rst/images/title.png}

\item[{Rubric}] \leavevmode
\DUrubric{A Rubric}

\item[{Admonition}] \leavevmode
\DUadmonition[note]{
\DUtitle[note]{Note}

Admonitions need to be preceded by \texttt{\textbackslash{}leavevmode}.
Otherwise, the term ends up centered above the admonition box.

So do \emph{System Messages}, as they use the “DUadmonition”
LaTeX environment.
}

\end{description}


\section{Elements not needing \texttt{\textbackslash{}leavevmode}%
  \label{elements-not-needing-leavevmode}%
}

\begin{description}
\item[{Paragraph}] 
Paragraphs don’t need \texttt{\textbackslash{}leavevmode}.  They are meant
to start after the term and have a hanging indent.

\begin{itemize}
\item Subsequent elements don’t need \texttt{\textbackslash{}leavevmode} either.
\end{itemize}

\item[{Math Block}] %
\begin{equation*}
\sum_{i=1}^n i = \frac{n^2+n}{2}
\end{equation*}
LaTeX starts math blocks (both single-line and multiline) in a new
paragraph automatically, with or without \texttt{\textbackslash{}leavevmode}, so
\texttt{\textbackslash{}leavevmode} isn’t needed.

\item[{Term with Classifier: classifier}] \leavevmode
\begin{itemize}
\item After a \emph{classifier}, \texttt{\textbackslash{}leavevmode} is not required.

\item This holds for all elements that normally need \texttt{\textbackslash{}leavevmode}.
\end{itemize}

\end{description}


\section{Ambiguous cases%
  \label{ambiguous-cases}%
}

\begin{description}
\item[{Comment and Target}] \leavevmode
% This is ignored.

\begin{itemize}
\item Comments and other “Invisible” nodes (substitution definitions,
targets, pending) must be skipped when determining whether a
\texttt{\textbackslash{}leavevmode} is required.
\end{itemize}

\item[{Substitution Definition and Class directive}] 
\DUrole{test}{Is \texttt{\textbackslash{}leavevmode} required?  Answer: No (because a paragraph follows).}

\item[{Compound}] 
\begin{DUclass}{compound}
\DUroletitlereference{Compound} and \DUroletitlereference{Container} wrap around other block elements.
They get a \texttt{\textbackslash{}leavevmode}, if the first nested element is a
list or similar.
\end{DUclass}

\item[{Container}] \leavevmode
\begin{DUclass}{my-class}

\begin{itemize}
\item This list inside a container requires a \texttt{\textbackslash{}leavevmode}.
\end{itemize}
\end{DUclass}

\item[{Footnote}] %
\DUfootnotetext{f1}{f1}{1}{\phantomsection\label{f1}%
This footnote will move to the bottom of the page.
}

A \texttt{\textbackslash{}leavevmode} is required, if the first list item value is a
footnote and a list or similar follows.

\item[{Citation}] \leavevmode\begin{figure}[b]\raisebox{1em}{\hypertarget{example73}{}}[example73]
No Name, “Citations move to the bottom as well”,
Musterstadt, 1973.
\end{figure}

\begin{itemize}
\item A \texttt{\textbackslash{}leavevmode} is required, if the first list item value is a
citation and a list or similar follows.
\end{itemize}

\item[{Raw Block Text}] \leavevmode
“Raw” blocks are always preceded by
\verb|\leavevmode|, just in case.

\end{description}

\end{document}
