我有一张表格,其中某些单元格包含由 生成的项目符号列表itemize
。我想以紧凑的方式呈现这些列表。我使用enumitem
包和\setlist[itemize]{nosep}
(加上其他参数来减少水平空间,但它们在这里不相关,所以我没有将它们包含在我的 MWE 中)。
我仍在当列表是单元格中的唯一项目时,列表上方和下方会出现不需要的空白(但当上面/下面有文本时则不然)。我怎样才能摆脱这个不需要的垂直空间?
我希望列表项的第一行与表格同一行中纯文本单元格的第一行对齐,或者足够接近。
不能接受的:只是假装子弹,因为有些项目是多行的,而我确实需要缩进。我不会使用嵌套列表,因此在不调用环境的情况下重新设置项目符号和后续行的缩进itemize
就可以了。
\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}