can someone please explain the enumitem horizontal spacing parameters?

\documentclass{article}
\usepackage{enumitem}
\usepackage{layouts}
\begin{document}
\listdiagram

\clearpage
\begin{enumerate}
\item The figure illustrates the layout of an \texttt{enumerate} list.
\currentlist
\listdesign
\end{enumerate}

\end{document}

enter image description here

enter image description here


Enumitem introduces a new very useful length, labelsep*, such that labelsep* + itemindent = labelsep (see § 3.3 of the documentation). Setting labelindent + labelwidth + labelsep* = leftmargin gives what you want, while allowing label text to be longer than the default. If style=standard, a wider label changes the left margin of the list, while with style=sameline, it can go over the left margin:

\documentclass[12pt, a4paper, oneside, fleqn]{report}
\usepackage[showframe, nomarginpar]{geometry}

\usepackage{enumitem}

\begin{document}

\chapter*{Symbols list}

\begin{description}[labelindent=1em ,labelwidth=1.3cm, labelsep*=1em, leftmargin =!, style = standard]% 
\item[x text]Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[y] Another text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[z] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\end{description}

\begin{description}[labelindent=1em ,labelwidth=1.2cm, labelsep*=1em, leftmargin =! , itemindent = 0pt, style = sameline]
\item[x text]Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[y] Another text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\item[z] Text text text text more words. Here is a full sentence to use up some space. And yet another sentence. blah blah blah
\end{description}

\end{document}

enter image description here

To explain in more detail what happens, the label begins at label indent, the beginning of the lines that follow the label line is at leftmargin, which is equal to label indent + labelwidth +labelsep*. Setting the values of the first 3, and leftmargin=! make left margin be computed from the first three as indicated.

It works along the same lines for enumerate and itemize, except that label alignment in these cases is right, so that if label width is too small,the label can go into the (page) left margin. It behaves as a kind of \llap{label}.

Let me explain why your code does not work: the order in which you set the keys is important. Setting style=standard at the end, you overrode the previous values with those defined in standard style – just as the setlist{description}{…} values in the preamble can be overridden by the actual optional parameters in a description environment. If you change your code to the following, it works as you want:

\documentclass[12pt, a4paper, oneside, fleqn]{report}
\usepackage[utf8]{inputenc}

\usepackage{enumitem}

\usepackage[showframe, top=2.5cm, left=3.5cm, bottom=2.5cm, right=2.5cm, includehead]{geometry}
\geometry{headheight=28pt, headsep=18pt}

\begin{document}

\chapter*{Symbols list}

\begin{description}[style =standard, labelindent=0em , labelwidth=2cm, labelsep*=1em, leftmargin =!]%
\item[$\mathbf{H}$] Forward model Jacobian matrix
\item[$\mathbf{MoistCov}$] Background error covariance matrix calculated from an ensemble of forecast states and using a new moisture control variable designed to eliminate increments in the stratosphere.

\end{description}

\end{document} 

enter image description here

The leftmargin=! key means that left margin is computed from the other parameters as described in § 3.3, viz leftmargin=labelindent + labelwidth + labelsep*, which have all been chosen. Note that with almost the same keys, only deleting leftmargin=! gives a different result, as there must be a predefined value of leftmargin that is not overridden:

enter image description here

Writing parameterkey=! means that this parameter is computed in function of the others, whether you've set them explicitly or they're set by the environment, style, &. As far as I understand it, parameterkey=* means the same thing with the added feature that labelwidth is set to a conventional value (that of viii for a roman style enumeration for instance). I think it has a meaning for enumerate environments, although this is not very clear to me from the documentation.


You can see from this question How to draw this lines with tikzmark a scheme shows the different horizontal lengths in the enumirate environment

enter image description here