表格中 itemize 的间距问题

表格中 itemize 的间距问题

我一直在尝试在表格中使用项目列表。这很容易做到,但我找不到一种方法来像表格中的纯文本一样对齐它们。让我举个例子:

\documentclass{article}

\usepackage{paralist}

\begin{document}

\begin{tabular}{|p{2cm}|p{10cm}|}
    \hline
    Blah blah & 
    \begin{compactitem}
        \item First
        \item Second
    \end{compactitem} \\    
    \hline
\end{tabular}

\end{document}

我使用了 itemize 而不是 itemize,paralist这样列表会更紧凑,但是列表前后仍然会添加大量空间。结果看起来很糟糕,我希望“Blah Blah”周围的间距与右侧单元格中项目周围的间距相同。

在此处输入图片描述

我还发现了一些减少单元格上部或下部空间的技巧\hline,但这些技巧都无法与纯文本的对齐相匹配。

答案1

赫伯特 (Herbert) 正确地\@minipagetrue消除了顶部的空间,但我发现消除底部和顶部空间的最干净的方法是使用实​​际minipage环境。

我将使用enumitemnosep而不是 而不是paralist并且这是compactitem因为我想使用enumitemafter选项。

\documentclass{article}

\usepackage{enumitem}

\begin{document}

\begin{tabular}{|p{2cm}|p{10cm}|}
    \hline
    Blah blah &
    \begin{minipage}[t]{\linewidth}
    \begin{itemize}[nosep,after=\strut]
        \item First
        \item Second
    \end{itemize}
    \end{minipage} \\
    \hline
\end{tabular}

\end{document}

结果:

结果

请注意,我遇到过在列表下方添加不必要空间的情况after=\strut。如果您遇到这种情况,请尝试完全移除支柱,看看布局是否正常。

进一步说明:

  • 不能/不想指定最大宽度minipage?请尝试varwidth相反,如果可能的话,它将水平缩小框:

    % Preamble:
    \usepackage{varwidth}
    % ...then, instead of minipage, use varwidth...
    \begin{varwidth}[t]{\linewidth}
    \begin{itemize}[nosep,after=\strut]
        \item First
        \item Second
    \end{itemize}
    \end{varwidth} \
    
  • 如果你不想反复输入,可以使用enumitem's 。例如:\newlist\begin{itemize}[nosep,after=\strut]

    % Preamble:
    \newlist{tabitemize}{itemize}{1}
    \setlist[tabitemize]{label=\textbullet,nosep,after=\strut}
    % ...then, in your table cell...
    \begin{minipage}[t]{\linewidth}
    \begin{tabitemize}
        \item First
        \item Second
    \end{tabitemize}
    \end{minipage} \
    
  • 如果你打算在表格的某一列中多次执行此操作,这个答案展示了如何创建紧凑列表列类型。(Donald Arseneau 的解决方案是我弄清楚该怎么做的关键\strut。)

  • 如果你有兴趣,这个答案中的评论解释为什么minipage要去掉顶部的空间。

答案2

\documentclass{article}

\usepackage{paralist,array}
\makeatletter\let\MPtrue\@minipagetrue\makeatother

\begin{document}

\begin{tabular}{|p{2cm}|p{10cm}|}
    \hline
    Blah blah & \MPtrue
    \begin{compactitem}
        \item First
        \item Second
    \end{compactitem} \\\hline
\end{tabular}

\end{document}

答案3

您也可以使用enumitem包。使用它,您可以以键值对的形式访问各种有用的设置:

\usepackage{enumitem}
\begin{document}

\begin{tabular}{|p{2cm}|p{10cm}|}
    \hline
    Blah blah & \begin{itemize}[topsep=-0.5cm]\item First \item Second \end{itemize} \\    
    \hline
\end{tabular}
\end{document}

如果这还不够,您可以用 手动删除空格\vspace*{-1.5mm}。Asterix 确保添加空格(在本例中,由于数字为负数,因此删除)。

\documentclass[a4paper]{article}

\usepackage{enumitem}
\begin{document}

\begin{tabular}{|p{2cm}|p{10cm}|}
\hline
Blah blah & \vspace*{-0.2cm}\begin{itemize}[topsep=-0.5cm,leftmargin=0.3cm]\item a \item b \end{itemize}\\    
\hline
\end{tabular}

\end{document}

答案和结果在我看来都很糟糕。

表格中无空格列出

相关内容