Others have mentioned enumerations, but perhaps have overlooked the request for material between items. An out-of-the-box solution for this is provided by the enumitem
package, where there is the possibility of labelling an enumerate
with a series
name. Following instances can then use enumerate
together with resume
\begin{enumerate}[series=numpars]
\item ...
\end{enumerate}
....
\begin{enumerate][resume=numpars]
\item ...
\end{enumerate}

\documentclass{article}
\usepackage{enumitem}
\usepackage{lipsum} %For dummy text
\begin{document}
\lipsum[1]
\begin{enumerate}[series=numpars]
\item \lipsum[2]
\end{enumerate}
\lipsum[3]
\begin{enumerate}[resume=numpars]
\item \lipsum[4]
\end{enumerate}
\end{document}
If you would like a dedicated environment numpar
for this without the need for resume
or item
then you can use the following code, which produces the same output as above. The idea is to add a toggle to keep track of whether this is the first instance or not and pass either series
or resume
to the list constructor. Additionally, it has been set-up with a dedicated list type numparmain
, that could be customised further (via standard options in enumitem
) to adjust indentation or label style.
\documentclass{article}
\usepackage{enumitem,etoolbox}
\newlist{numparmain}{enumerate}{1}
\setlist[numparmain]{label=\arabic*.}
\newtoggle{firstnumpar}
\toggletrue{firstnumpar}
\newenvironment{numpar}{\iftoggle{firstnumpar}%
{\begin{numparmain}[series=numpars]}%
{\begin{numparmain}[resume=numpars]}%
\global\togglefalse{firstnumpar}%
\item\ignorespaces}%
{\end{numparmain}}
\usepackage{lipsum} %For dummy text
\begin{document}
\lipsum[1]
\begin{numpar}
\lipsum[2]
\end{numpar}
\lipsum[3]
\begin{numpar}
\lipsum[4]
\end{numpar}
\end{document}
Perhaps a list
environment is all you need?
\documentclass{article}
\newenvironment{hangingpar}[1]
{\begin{list}
{}
{\setlength{\itemindent}{-#1}%%'
\setlength{\leftmargin}{#1}%%'
\setlength{\itemsep}{0pt}%%'
\setlength{\parsep}{\parskip}%%'
\setlength{\topsep}{\parskip}%%'
}
\setlength{\parindent}{-#1}%%
\item[]
}
{\end{list}}
\usepackage{lipsum}
\pagestyle{empty}
\begin{document}
\begin{hangingpar}{2em}
\lipsum[1-5]
\end{hangingpar}
\vspace{2ex}
But, \lipsum[6-7]
\end{document}

Alternatively, you could define an environment as follows:
\newenvironment{hangingparII}[1]
{\setlength{\leftskip}{#1}%%
\setlength{\parindent}{#1}%%
}
{\par}
This approach is not quite equivalent to the first. \leftskip
handles the horizontal placement of displayed math differently from how a list
environment handles things as the following MWE illustrates.
\documentclass{article}
\newenvironment{hangingpar}[1]
{\begin{list}
{}
{\setlength{\itemindent}{-#1}%%'
\setlength{\leftmargin}{#1}%%'
\setlength{\itemsep}{0pt}%%'
\setlength{\parsep}{\parskip}%%'
\setlength{\topsep}{\parskip}%%'
}
\setlength{\parindent}{-#1}%%
\item[]
}
{\end{list}}
\newenvironment{hangingparII}[1]
{\setlength{\leftskip}{#1}%%'
\setlength{\parindent}{-#1}%%'
}
{\par}
\usepackage{lipsum}
\pagestyle{empty}
\begin{document}
\begin{hangingpar}{3em}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut
purus elit, vestibu- lum ut, placerat ac, adipiscing vitae,
felis. Curabitur dictum gravida mauris. Nam dui ligula,
fringilla a, euismod sodales, sollicitudin vel, wisi.
\[
\sin^2(x) + \cos^2(x) = 1
\]
Morbi auctor lorem non justo. Nam lacus libero, pretium at,
lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
metus a mi. Morbi ac orci et nisl hendrerit mollis.
Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum
sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Aliquam tincidunt urna. Nulla
ullamcorper vestibulum turpis. Pellentesque cursus luctus
mauris.
\end{hangingpar}
\begin{hangingparII}{3em}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut
purus elit, vestibu- lum ut, placerat ac, adipiscing vitae,
felis. Curabitur dictum gravida mauris. Nam dui ligula,
fringilla a, euismod sodales, sollicitudin vel, wisi.
\[
\sin^2(x) + \cos^2(x) = 1
\]
Morbi auctor lorem non justo. Nam lacus libero, pretium at,
lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
metus a mi. Morbi ac orci et nisl hendrerit mollis.
Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum
sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Aliquam tincidunt urna. Nulla
ullamcorper vestibulum turpis. Pellentesque cursus luctus
mauris.
\end{hangingparII}
\end{document}

Best Answer
You may use
addmargin
environment of either a KOMA-Script class or the KOMA-Script packagescrextend
. Here an example with a standard class and packagescrextend
:Results in: