Enumeration with several items per line, several lines and nicely formatted

Here's a possible solution if you know how many items you want on each line. Your MWE does suggest that's OK.

\documentclass{article}

\newcounter{myitemcounter}

\newcommand{\myitemlabel}{$\bullet$\ }

\newcommand{\myitem}{%
\stepcounter{myitemcounter}
\myitemlabel
}

\newcommand{\anitem}[1]{%
\myitem #1 &
}

\newcommand{\lastitem}[1]{%
\myitem #1 \\
}

\newenvironment{inlineitemize}
{\setcounter{myitemcounter}{0}
\begin{tabular}{llllllllll} % you won't want more columns
}
{\end{tabular}}

\newenvironment{inlineenumerate}
{\setcounter{myitemcounter}{0}
\renewcommand{\myitemlabel}{(\alph{myitemcounter})\ }
\begin{tabular}{lllllllllll}
}
{\end{tabular}}

\begin{document}

\begin{inlineenumerate}
 \anitem{Agree strongly}
 \anitem{Tend to agree}
 \lastitem{Neither agree nor disagree}
 \anitem {Tend to disagree}
 \anitem{Disagree strongly}
 \lastitem{Don't know}
\end{inlineenumerate}

\begin{inlineitemize}
\anitem{Less than 5 years} \lastitem{Between 5 and 10 years} 
\anitem{More than 10 years} \lastitem{Do not know}
\end{inlineitemize}

\end{document}

enter image description here

With a little more work you could pass an integer argument to the new environments to specify the number of columns in order to automate the time to invoke lastitem instead of anitem. You can also set the interline spacing in the tabular environments to match your MWE.


It's not clear exactly what space you wish to change. You have some missing % at ends of lines causing additional space in the output. The following fixes that and replaces the fixed \labelsep space by glue that can shrink 20% or extend 50% of that value. It doesn't make that much difference on these examples though.

\newcommand{\inlineitem}[1][]{%
\ifnum\enit@type=\tw@
    {\descriptionlabel{#1}}%
  \hspace{1\labelsep\@plus .5\labelsep  \@minus .2\labelsep}%
\else
  \ifnum\enit@type=\z@
       \refstepcounter{\@listctr}\fi
    \quad \@itemlabel\hspace{1\labelsep\@plus .5\labelsep  \@minus .2\labelsep }%
\fi}

As solution using the shortlst package, which is a development of an answer for a similar problem I gave in Inline arrangement using "enumitem". An optional argument is the number of columns in which the list will be organized (3 by default). Moreover, if an item is too long to fit in a column, it automatically takes two (or more) columns:

\documentclass[a11pt, a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern} 
\usepackage[textwidth=15cm, noheadfoot, nomarginpar]{geometry}
\geometry{showframe}

 \usepackage{shortlst}
 \newenvironment{tabenumerate}[1][3]{%
 \settowidth{\labelwidth}{\labelenumi}%
 \setlength{\leftmargini}{\dimexpr\parindent + \labelwidth + \labelsep\relax}%
 \setlength{\shortitemwidth}{\dimexpr\linewidth/#1-\labelwidth-2\labelsep\relax}%
 \begin{shortenumerate}}%
 {\end{shortenumerate}}%

 \newenvironment{tabitemize}[1][3]{%
 \settowidth{\labelwidth}{\labelitemi}%
 \setlength{\leftmargini}{\dimexpr\parindent + \labelwidth + \labelsep\relax}%
 \setlength{\shortitemwidth}{\dimexpr\linewidth/#1-\labelwidth-2\labelsep\relax}%
 \begin{shortitemize}}%
 {\end{shortitemize}}%

 \renewcommand{\labelenumi}{(\arabic{enumi})}
 \parindent = 0pt

 \begin{document}

 This is an inline itemized list.

 \begin{tabitemize}[2]
    \item Less than 5 years \item Between 5 and 10 years
    \item More than 10 years \item Do not know
 \end{tabitemize}
 Or 
 \begin{tabitemize}
    \item Less than 5 years \item Between 5 and 10 years \item[]
    \item More than 10 years \item Do not know
 \end{tabitemize}


 Another list.
 \begin{tabitemize}[6]
    \item £850
    \item £1,000
    \item £1,150
    \item £1,500
    \item Do not know
 \end{tabitemize}

 \bigskip

 And the final one: 
 \begin{tabenumerate}
     \item Agree strongly \item Tend to agree \item Neither agree nor disagree
     \item Tend to disagree \item Disagree strongly \item Don't know
 \end{tabenumerate}

 \end{document}

Result: