Enumerate single item without label but aligned with other labels

#enumeratealignmentenumitemlabels

I use enumerate to create a second minimalistic TOC. The unnumbered chapters should be aligned with normal chapters.

Undesired alignment of Introduction

So the unnumbered chapter Introduction should be aligned with the 1 from chapter Main Body and not with the text "Main Body".

Here's my MWE:

\documentclass[
a4paper,
10pt,
]{scrreprt}

\usepackage{setspace}
\usepackage{enumitem}

\spacing{1.5}

\setlength{\parindent}{0pt}

\begin{document}

List of the chapters, sections, items and sub-items.\\

\begin{enumerate}[label*=\arabic*]
    \item[] Introduction
    \item Main Body
    \begin{enumerate}[label*=.\arabic*]
        \item Main Body Section
        \begin{enumerate}[label*=.\arabic*]
            \item Main Body Subsection
        \end{enumerate}
    \end{enumerate}
\end{enumerate} 

\end{document}

Best Answer

First of all note that the list numbering is right-aligned by default, as can be seen in this example:

enter image description here

\documentclass{article}

\usepackage{enumitem}

\begin{document}

\begin{enumerate}
  \item First
  \setcounter{enumi}{9}%
  \item Tenth
\end{enumerate}

\begin{enumerate}[align=left]
  \item First
  \setcounter{enumi}{9}%
  \item Tenth
\end{enumerate}

\end{document}

This is so that large lists can still maintain an appropriate horizontal alignment if they have large (wide) labels. This alignment can be changed within enumitem with the align key-value. This is important because it is otherwise difficult to align an unenumerated item with the number of an enumerated one on-the-fly. Here are some options:

enter image description here

\documentclass{scrreprt}

\usepackage{enumitem}

\setlength{\parindent}{0pt}

\begin{document}

List of the chapters, sections, items and sub-items.

% Align outer enumeration numbering to left and reduce width of label to 1em
\begin{enumerate}[label*=\arabic*,align=left,labelwidth=1em]
  \item[] \hspace*{\dimexpr-\labelsep-\labelwidth}Introduction
  \item Main Body
  \begin{enumerate}[label*=.\arabic*]
    \item Main Body Section
    \begin{enumerate}[label*=.\arabic*]
      \item Main Body Subsection
    \end{enumerate}
  \end{enumerate}
\end{enumerate} 

% Retain original labelling alignment and fake label width
\begin{enumerate}[label*=\arabic*]
  \item[] \hspace*{-\labelsep}\llap{I}ntroduction
  \item Main Body
  \begin{enumerate}[label*=.\arabic*]
    \item Main Body Section
    \begin{enumerate}[label*=.\arabic*]
      \item Main Body Subsection
    \end{enumerate}
  \end{enumerate}
\end{enumerate} 

\end{document}

If you really want the alignment to be perfect in the second case, then you can calculate the width of the label and use that instead of \llap:

% Retain original labelling alignment and actual label width
\begin{enumerate}[label*=\arabic*]
  \makeatletter
  \settowidth{\@tempdima}{1}% Capture width of next label
  \item[] \hspace*{\dimexpr-\labelsep-\@tempdima}Introduction
  \makeatother
  \item Main Body
  \begin{enumerate}[label*=.\arabic*]
    \item Main Body Section
    \begin{enumerate}[label*=.\arabic*]
      \item Main Body Subsection
    \end{enumerate}
  \end{enumerate}
\end{enumerate} 

The value of the next item can also be calculated rather than using a fixed value:

\settowidth{\@tempdima}{\number\numexpr\value{enumi}+1}% Width of next item label