删除表格中逐项列出上方和下方的空白

删除表格中逐项列出上方和下方的空白

我有一张表格,其中某些单元格包含由 生成的项目符号列表itemize。我想以紧凑的方式呈现这些列表。我使用enumitem包和\setlist[itemize]{nosep}(加上其他参数来减少水平空间,但它们在这里不相关,所以我没有将它们包含在我的 MWE 中)。

我仍在当列表是单元格中的唯一项目时,列表上方和下方会出现不需要的空白(但当上面/下面有文本时则不然)。我怎样才能摆脱这个不需要的垂直空间?

我希望列表项的第一行与表格同一行中纯文本单元格的第一行对齐,或者足够接近。

不能接受的:只是假装子弹,因为有些项目是多行的,而我确实需要缩进。我不会使用嵌套列表,因此在不调用环境的情况下重新设置项目符号和后续行的缩进itemize就可以了。

MWE 的图像

\documentclass{article}
\usepackage{enumitem}
\begin{document}
\setlist[itemize]{nosep,topsep={0pt},partopsep={0pt}}

Too much space before and after \verb`itemize`:

\begin{tabular}{p{5em}p{15em}p{5em}}
  \hline
  wibble \par wobble \par wubble &
  \begin{itemize}
  \item something
  \item something else, which can span multiple lines
  \end{itemize} &
  \begin{itemize}
  \item hello
  \item world
  \item more
  \end{itemize}
  \\ \hline
  wibble \par wobble \par wubble &
  \begin{itemize}
  \item something
  \item something else, which can span multiple lines
  \end{itemize} &
  \begin{itemize}
  \item hello
  \item world
  \item more
  \end{itemize}
  even more
  \\ \hline
\end{tabular}

\bigskip

Approximate desired visual effect:

\begin{tabular}{p{5em}p{15em}p{5em}}
  \hline
  wibble \par wobble \par wubble &
  \vspace{-0.5\baselineskip}
  \begin{itemize}
  \item something
  \item something else, which can span multiple lines
  \end{itemize}
  \vspace{-0.7\baselineskip}
  &
  \vspace{-0.5\baselineskip}
  \begin{itemize}
  \item hello
  \item world
  \item more
  \end{itemize}
  \vspace{-0.7\baselineskip}
  \\ \hline
\end{tabular}
\end{document}

答案1

例如,itemize用更容易理解的内容替换环境:

\def\doitems{\def\item{\par
   \noindent\hbox to1.5em{\hss$\bullet$\hss}\hangindent=1.5em }}

\begin{tabular}{p{5em}p{15em}p{5em}}
  \hline
  wibble \par wobble \par wubble &
  \doitems   
  \item something
  \item something else, which can span multiple lines &
  \doitems 
  \item hello
  \item world
  \item more
  \\ \hline
  wibble \par wobble \par wubble &
  \doitems
  \item something
  \item something else, which can span multiple lines & 
  \doitems
  \item hello
  \item world
  \item more
  \par
  even more
  \\ \hline
\end{tabular}

答案2

这里有两种方法。一种使用表格并保证行对齐,因此需要多行来重叠行。另一种使用小页面,可能会或可能不会对齐行(字体大小更改、超大数学表达式等)。

\documentclass{article}
\usepackage{multirow}
\parskip=\baselineskip
\begin{document}

\newcommand*{\tabitem}[1]{\hangindent=\bibindent\makebox[\bibindent]{$\bullet$}#1}

\noindent\begin{tabular}{p{5em}p{15em}p{5em}}
  \hline
  wibble & \tabitem{something} & \tabitem{hello} \\
  wobble & \multirow{2}{15em}{\tabitem{something else, which can span multiple lines}} & \tabitem{world} \\
  wubble & & \tabitem{more} \\
  \hline
\end{tabular}


\newcommand*{\paritem}[1]{\parbox[t]{\textwidth}{\raggedright\tabitem{#1}}}

\noindent\rule[.7ex]{\dimexpr 25em + 6\tabcolsep}{0.5pt}\\[-1.5ex]
\hspace*{\tabcolsep}\begin{minipage}[t]{5em}
wibble\\
wobble\\
wubble
\end{minipage}\hspace{2\tabcolsep}\begin{minipage}[t]{15em}
\paritem{something}\\
\paritem{something else, which can span multiple lines}
\end{minipage}\hspace{2\tabcolsep}\begin{minipage}[t]{5em}
\paritem{hello}\\
\paritem{world}\\
\paritem{more}
\end{minipage}\\
\rule[.7ex]{\dimexpr 25em + 6\tabcolsep}{0.5pt}

\end{document}

摇晃 摇晃 摇晃

相关内容