11

Consider

\documentclass{article}
\usepackage{enumitem}

\begin{document}

\begin{tabular}{l p{4cm}}
    Head & Content\\
    \hline
    Foo &
    \begin{enumerate}[label={\textbf{\arabic*.}}, itemindent=0pt, leftmargin=*, nosep]
        \item A
        \item B
    \end{enumerate}
    \\
    \hline
\end{tabular}

\end{document}

which produces unwanted vertical space before and after the list:

enter image description here

However adding surrounding text renders as expected:

\begin{tabular}{l p{4cm}}
    Head & Content\\
    \hline
    Foo &
    How does
    \begin{enumerate}[label={\textbf{\arabic*.}}, itemindent=0pt, leftmargin=*, nosep]
        \item A
        \item B
    \end{enumerate}
    this work?
    \\
    \hline
\end{tabular}

enter image description here

  • 1
    Technically, lists use \ifvmode to detect when they are inside a paragraph or between paragraphs (and add extra space). – John Kormylo Jul 28 '18 at 12:52
7

Maybe it's simpler to define a variant of enumerate for use in tables, with specific parameters. I borrowed the \compress command from an answer on this site: it makes latex believe the list is at the very beginning of a minipage, so latex adds no vertical spacing before lists.

I also used the rules from booktabs, which have some vertical padding, and a variable thickness.

\documentclass{article}
\usepackage{enumitem}
\newlist{tabenum}{enumerate}{1}
\setlist[tabenum]{label=\arabic*. ,wide=0pt, leftmargin=*, nosep, itemsep=2pt, font = \bfseries, after=\vspace{-\baselineskip}, before=\compress}
\usepackage{array, booktabs}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother

\begin{document}

\begin{tabular}{l p{4cm}}
    Head & Content\\
    \midrule
    Foo &
    \begin{tabenum}
        \item A. Some text some text some text
        \item B
    \end{tabenum}
    \\
    \bottomrule
\end{tabular}

\end{document} 

enter image description here

|improve this answer|||||
  • 2
    You can add the \compress with before=\compress to the list settings. – Ulrike Fischer Jul 28 '18 at 13:30
  • Excellent suggestion, Ulrike! I've incorporated to the code. Thanks:-) – Bernard Jul 28 '18 at 13:38
  • Thanks for the idea! While this does solve the problem with vertical space before the enum, space afterwards is not dynamically calculated. Appended text will be placed ‘inside’ the enumeration. – qwertz Jul 28 '18 at 16:44
3

You can use the before and after options in order to adjust the space before and after the list to your needs:

enter image description here

\documentclass{article}
\usepackage{enumitem}

\begin{document}

\begin{tabular}{l p{4cm}}
    Head & Content\\
    \hline
    Foo &
    \begin{enumerate}[label={\textbf{\arabic*.}}, itemindent=0pt, leftmargin=*, nosep,after=\vspace{-\baselineskip},before=\vspace{-0.5\baselineskip}]
        \item A
        \item B
    \end{enumerate}
    \\
    \hline
\end{tabular}

\end{document}
|improve this answer|||||
  • That sure is a solution, but also hard coded. Is there a flexible solution? I thought enumitem could handle this situation. – qwertz Jul 28 '18 at 13:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.