3

firstly, sorry for my english, I'm French. Secondly, I've a problem with enumerate, when I have multiple levels of enumeration. An example is better than long speeches :

\documentclass[12pt]{article}
\usepackage{enumitem} % Listes
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges   

\makeatletter
\newcommand{\listintertext}{\@ifstar\listintertext@\listintertext@@}
\newcommand{\listintertext@}[1]{% \listintertext*{#1}
  \hspace*{-\@totalleftmargin}#1}
\newcommand{\listintertext@@}[1]{% \listintertext{#1}
  \hspace{-\leftmargin}#1}
\makeatother

\begin{document}
\begin{enumerate}[label=\textbf{\arabic*.}]
 \item 1.
 \begin{enumerate}[label=\textbf{(\alph*)}]
  \item 1.(a)
 \end{enumerate}

Blabla

 \begin{enumerate}[label=\textbf{(\alph*)},resume]
  \item 2.(b)
  \begin{enumerate}[label=\textbf{\roman*.}]
   \item 2.(b).i.
  \end{enumerate}

\listintertext*{blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla}

  \begin{enumerate}[label=\textbf{\roman*.},resume]
   \item 2.(b).ii.
  \end{enumerate}
 \end{enumerate}
\end{enumerate}
\end{document}

gives this :

enter image description here

My problem is now : I want long text (blabla [...] blabla) to be aligned in the left of the page, and not aligned with the enumerate item.

Any ideas ? Thank you

Alex
  • 169
  • 6
    You don't need to start each of your posts with an apology for your English. It's absolutely fine as far as I am concerned. (Plus we can tell that you are from a French-speaking country by the spaces before : and ? ;-)) – moewe Dec 08 '18 at 14:33
  • Ok, thanks ;) Ah, I didn't know this is a French language speciality – Alex Dec 08 '18 at 14:35
  • Do you want it aligned with the bold 1? – Sigur Dec 08 '18 at 14:35
  • 1
    Can't you just \end the enumerate before the Blabla? At the moment they live within the enumerate and so take its indentation. – moewe Dec 08 '18 at 14:37
  • No because if I do this, the (b) item is aligned with 1., not with (a) \begin{enumerate}[label=\textbf{\arabic.}] \item 1. \begin{enumerate}[label=\textbf{(\alph)}] \item 1.(a) \end{enumerate} \end{enumerate}

    Blabla

    \begin{enumerate}[label=\textbf{(\alph)},resume] \item 2.(b) \begin{enumerate}[label=\textbf{\roman.}] \item 2.(b).i. \end{enumerate}

    blabla

    \begin{enumerate}[label=\textbf{\roman*.},resume] \item 2.(b).ii. \end{enumerate} \end{enumerate}

    – Alex Dec 08 '18 at 14:42
  • 1
    Mhhh, maybe https://tex.stackexchange.com/q/135726/35864 can help you. – moewe Dec 08 '18 at 14:54
  • I already use resume but it doesn't resolve the problem – Alex Dec 08 '18 at 14:57
  • It looks like there is an answer from @moewe 's link that addresses your problem. See Werner's answer there. Basically, you put \hspace*{-\@totalleftmargin} before your text. Because it uses @, you need to wrap \makeatletter ... \makeatother around it...which is why it's better to make a new command. – whatisit Dec 29 '18 at 19:23
  • Ok thank you for your explanation. It does'nt work totally (see edited MWE). Am I required to adjust manually ? It would be surprising... – Alex Jan 14 '19 at 08:16

1 Answers1

3

I'd use an environment where you set \parshape=0. Also some other bookkeeping is necessary; no need to break and resume the enumerate.

\documentclass[12pt]{article}
\usepackage{enumitem} % Listes
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges   

\makeatletter
\newenvironment{breakenum}
 {% issue \par as defined in a list
  % then reset it to the primitive
  \par\let\par\@@par
  % add spacing like for an item
  \vspace{\itemsep}%
  % reset \parshape to 0
  \parshape\z@
  % reset \@totalleftmargin and \linewidth
  \@totalleftmargin=\z@
  \linewidth=\columnwidth
 }
 {\par}
\makeatother

\begin{document}


blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla
\begin{enumerate}[label=\textbf{\arabic*.}]
  \item 1.
  \begin{enumerate}[label=\textbf{(\alph*)}]
    \item 1.(a)
  \end{enumerate}

  Blabla

  \begin{enumerate}[label=\textbf{(\alph*)},resume]
    \item 2.(b)
    \begin{enumerate}[label=\textbf{\roman*.}]
      \item 2.(b).i.

\begin{breakenum}
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla
\end{breakenum}

      \item 2.(b).ii.
    \end{enumerate}
  \end{enumerate}
\end{enumerate}

\end{document}

enter image description here

A different implementation with two environments: breakenum* only removes the current \leftmargin, whereas breakenum goes all the way.

\documentclass[12pt]{article}
\usepackage{enumitem} % Listes
\usepackage[top=1.5cm,bottom=1.5cm,right=1.5cm,left=1.5cm]{geometry} % Marges   

\makeatletter
\newenvironment{breakenum}
  {\breakenum@reset{\@totalleftmargin}}
  {\par}
\newenvironment{breakenum*}
  {\breakenum@reset{\leftmargin}}
  {\par}
\newlength{\normalparindent}
\AtBeginDocument{\setlength{\normalparindent}{\parindent}}
\newenvironment{breakenum+}
  {%
   \breakenum@reset{\leftmargin}
   \setlength{\parindent}{\normalparindent}%
   \setlength{\parskip}{0pt}% 
  }
  {\par}

\newcommand{\breakenum@reset}[1]{%
  % issue \par as defined in a list
  \par
  % add spacing like for an item
  \vspace{\itemsep}%
  % reset \@totalleftmargin and \linewidth
  \addtolength{\linewidth}{#1}%
  \addtolength{\@totalleftmargin}{-#1}%
  % reset \parshape
  \parshape\@ne\@totalleftmargin\linewidth
 }
 {\par}
\makeatother

\begin{document}


blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla
\begin{enumerate}[label=\textbf{\arabic*.}]
  \item 1.
  \begin{enumerate}[label=\textbf{(\alph*)}]
    \item 1.(a)

\begin{breakenum*}
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla

blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla
\end{breakenum*}

    \item 2.(b)
    \begin{enumerate}[label=\textbf{\roman*.}]
      \item 2.(b).i.

\begin{breakenum}
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla

blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla
\end{breakenum}

      \item 2.(b).ii.
    \end{enumerate}
  \end{enumerate}
\begin{breakenum+}
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla

blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla 
blabla
\end{breakenum+}

\item 3
\end{enumerate}

\end{document}

enter image description here

egreg
  • 1,121,712
  • Hi, it works but I want :
    1. to have possibility (but no obligation) to have an indentation before a new paragraph
    2. in the last 'blabla' paragraph (after 2(b)i), I want the text takes all the width of the page (Am I clear ? Not sure)
    – Alex Feb 01 '19 at 15:20
  • @Alex I fixed the second implementation and added also a breakenum+ environment that does normal indentation. – egreg Feb 01 '19 at 16:07
  • It works perfectly !! Thank you very much ! I just changed a little to have that I want, but it's perfect ! Thank you again ! – Alex Feb 02 '19 at 13:43