\ProvidesPackage{hang}[2017/02/18 v2.1 Hanging paragraphs and list items]

% Copyright (C) 2017 Andreas Nolda

% Author: Andreas Nolda <andreas@nolda.org>
% Version: 2.1

% This work may be distributed and/or modified under the conditions of the LaTeX
% Project Public License, either version 1.3 of this license or (at your option)
% any later version. The latest version of this license is in
% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all
% distributions of LaTeX version 2005/12/01 or later.

\newlength{\hangingindent}
\newlength{\hangingleftmargin}
\newlength{\labeledleftmargin}

\newenvironment{hangingpar}%
  {\ifnum\hangingindent=0\setlength{\hangingindent}{1em}\fi
   \begin{list}{}%
     {\setlength{\leftmargin}{\hangingleftmargin}%
      \addtolength{\leftmargin}{\hangingindent}%
      \setlength{\itemindent}{-\hangingindent}%
      \setlength{\partopsep}{\z@}%
      \setlength{\parsep}{\z@}%
      \setlength{\itemsep}{\z@}%
      \setlength{\topsep}{\z@}}
   \item{}}%
  {\end{list}}

\newenvironment{hanginglist}%
  {\ifnum\hangingindent=0\setlength{\hangingindent}{1em}\fi
   \begin{list}{}%
     {\setlength{\leftmargin}{\hangingleftmargin}%
      \addtolength{\leftmargin}{\hangingindent}%
      \setlength{\itemindent}{-\hangingindent}%
      \setlength{\partopsep}{\z@}}}%
  {\end{list}}

\newenvironment{compacthang}%
  {\ifnum\hangingindent=0\setlength{\hangingindent}{1em}\fi
   \begin{list}{}%
     {\setlength{\leftmargin}{\hangingleftmargin}%
      \addtolength{\leftmargin}{\hangingindent}%
      \setlength{\itemindent}{-\hangingindent}%
      \setlength{\partopsep}{\z@}%
      \setlength{\parsep}{\z@}%
      \setlength{\itemsep}{\z@}}}%
  {\end{list}}

\newenvironment{labeledpar}[2]%
  {\begin{list}{}%
     {\renewcommand{\makelabel}[1]{##1\hfil}%
      \settowidth{\labelwidth}{#1}%
      \setlength{\labelsep}{1em}%
      \setlength{\leftmargin}{\labeledleftmargin}%
      \addtolength{\leftmargin}{\labelwidth}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\partopsep}{\z@}%
      \setlength{\parsep}{\z@}%
      \setlength{\itemsep}{\z@}%
      \setlength{\topsep}{\z@}}
   \item[#2]{}}%
  {\end{list}}

\newenvironment{labeledlist}[1]%
  {\begin{list}{}%
     {\renewcommand{\makelabel}[1]{##1\hfil}%
      \settowidth{\labelwidth}{#1}%
      \setlength{\labelsep}{1em}%
      \setlength{\leftmargin}{\labeledleftmargin}%
      \addtolength{\leftmargin}{\labelwidth}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\partopsep}{\z@}}}%
  {\end{list}}

\newenvironment{compactlabel}[1]%
  {\begin{list}{}%
     {\renewcommand{\makelabel}[1]{##1\hfil}%
      \settowidth{\labelwidth}{#1}%
      \setlength{\labelsep}{1em}%
      \setlength{\leftmargin}{\labeledleftmargin}%
      \addtolength{\leftmargin}{\labelwidth}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\partopsep}{\z@}%
      \setlength{\parsep}{\z@}%
      \setlength{\itemsep}{\z@}}}%
  {\end{list}}