\leftmargin length not working in enumerate environment

I need to write down arguments that are made up of numbered claims and where the conclusion is marked by a conclusion symbol. I have no problem modifying the way enumerate labels are displayed to have that result.

Unfortunately, these labels quickly get so wide that they hang over into the left margin. I'd like to indent the enumerate environment on the left so that the labels and the text are further to the right. Looking at a list of lengths in list environments (e.g., in this answer), I figured \leftmargin would be the right length for me to manipulate. Unfortunately, it doesn't have the expected effect of indenting the text associated with an item. I can use \itemindent to indent the label, but that only indents the first line, not the main body.

A couple of constraints on answers.

• I'm aware of the enumerate package and for various reasons do not want to use it.
• I only want some, but not all, enumerate environments to be indented in this way. So a global change, e.g., by including \AtBeginDocument{\addtolength{\leftmargini}{3em}} won't work for me.

Here's an MWE I'm working with, and a screenshot of the result. I'm using lipsum as an easy way to generate multiline text, and I'm calling amssymb to get me the "conclusion" symbol of the three dots.

\documentclass{article}

\usepackage{lipsum}
\usepackage{amssymb}
\begin{document}

\lipsum[1]

\begin{enumerate}
\renewcommand{\theenumi}{\roman{enumi}}%
\renewcommand{\labelenumi}{(\theenumi)}%
\item \lipsum[4]
\item \lipsum[4]%
\renewcommand{\labelenumi}{$\therefore$(\theenumi)}%
\item \lipsum[4]
\end{enumerate}
\end{document}


• why use \AtBeginDocument{\addtolength{\leftmargini}{3em}}  ?? just set it before the list where you want that margin. Jan 16 '21 at 17:44
• what do you want to change in the output that you show? Jan 16 '21 at 17:50
• @DavidCarlisle adding the command \addtolength{\leftmargini}{3em}} doesn't have any effect on the output. One of the things that puzzles me about this is that the command works globally when I put it in the preamble in the way I describe in the original question, but not when I put it at the start of the enumerate environment. I would like to have the labels for the items exactly where they are, but I would then like the text to aligned as a hanging indent, e.g., "vitae" be aligned with "Quisque". Jan 17 '21 at 15:07
• It will have an effect in article class, obviously it needs to be before \begin{enumerate} not after it, but you have not shown any code so hard to know what you did wrong. Jan 17 '21 at 15:38
• @DavidCarlisle thanks for pointing out the importance of the order of elements--I thought that since I'm adding to a length that concerns the enumerate environment, I would call the command /inside/ the environment. I get exactly the result I want when I add \addtolength{\leftmargini}{3em} before begin{enumerate}. But that raises new problems for me, so I've edited the main question to raise these (seems like the comments aren't appropriate for that. Jan 17 '21 at 15:54

You do not need to set \addtolength{\leftmargini}{3em} in the preamble it is a local declaration so can be set at any point before the special list. You can reset the value after the list either by using a tex group or simply subtracting the value after the list finishes.

It needs to be before \begin{enumerate} not after as the value is used within the begin code to set up the list parameters.

With enumitem is simple:

\documentclass{article}
\usepackage{lipsum}

\usepackage{amssymb}
\usepackage{enumitem}
\setlist[enumerate]{label=(\roman*),
itemindent=3em,
leftmargin=2em, % leftmargin=* if you like to have left margin as in main text
}

\begin{document}
\lipsum[11]

\begin{enumerate}
\item   \lipsum[4]
\item   \lipsum[4]%
\stepcounter{enumi}          % <---
\item[$\therefore$\theenumi] % <---
\lipsum[4]
\end{enumerate}
\end{document}


Is it what you want? I set the label width with enumitem, and asked to calculate the left margin in accordance:

\documentclass{article}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.4pt}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{amssymb}

\begin{document}

\lipsum[1]

\begin{enumerate}[labelwidth=2.5em, leftmargin=!]
\item \lipsum[4]
\item \lipsum[4]%
\item[$\therefore$ \stepcounter{enumi}(\theenumi)] \lipsum[4]
\end{enumerate}

\end{document}


• Yes, this is the output I want (ideally with the whole environment indented from the left margin, i.e., the result of beginning the enumerate environment with \begin{enumerate}[labelwidth=2.5em,leftmargin=4em] Do you know if there's a way of replicating that without loading enumitem? Jan 17 '21 at 15:12
• I suppose so, but enumitem defines the keys that make it quite simple. Are you against the use of packages? Jan 17 '21 at 16:28
• @Bernhard I'm generally in favor of using packages, but using these super powerful packages to modify enumerate environments breaks a lot of my other workflows. Jan 17 '21 at 18:15