这是我要创建的表,其中包含
\documentclass{article}
\usepackage{booktabs,tabularx}
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}
\newcolumntype{T}{>{\raggedright\arraybackslash}p{2.5cm}}
\begin{document}
\begin{table*}
\caption{My table caption}
\label{tab:Table1}
\begin{tabularx}{\textwidth}{@{}TX@{}}
\toprule
Column1 & Case of Column2\\
\midrule
column 1 value &
\begin{itemize}
\vspace*{-\baselineskip}
\item multiline item text multiline item text multiline item text multiline item text multiline item text
\vspace*{-\baselineskip}
\item multiline item text multiline item text
\vspace*{-\baselineskip}
\end{itemize} \\
\bottomrule
\end{tabularx}
\end{table*}
\end{document}
虽然这不是一个优雅的解决方案,但它消除了项目符号之前、之后和之间的空间,而不管文档其余部分的间距方案如何。由于项目文本本身是多行文本,因此行间距很大。
有人能建议一个优雅的解决方案来在表格单元格内创建非常紧凑的项目符号吗?我尝试了这里给出的解决方案 如何删除 itemize/enumerate 之前的空格?
答案1
enumitem
您可以通过 (a) 加载包并使用其某些功能(具体来说,设置选项、、nosep
和)以及 (b) 封装minipage 环境来实现格式化目标。wide=0pt
leftmargin=*
after=\strut
itemize environment inside a
另外:如果itemize
环境不是包含在表格列中,设置选项nosep
足以抑制上方和下方的空白空间填充itemize
环境上方和下方的空白空间填充(以及空白之间项目)。但是,由于itemize
环境出现在环境的列内tabularx
,因此有必要将itemize
环境嵌入到环境中minipage
。
最后,如果您好奇想知道该选项的作用after=\strut
:它确保 itemize 环境的底行不会太靠近 绘制的水平线\bottomrule
。请注意,在您的示例中,最后一项行不包含带有降序字符的字符(例如g
、p
、q
和y
)。如果没有\strut
,环境底线中的材料itemize
看起来会太靠近 绘制的线\bottomrule
。
\documentclass{article}
\usepackage{booktabs,tabularx,enumitem,ragged2e}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
\begin{document}
\begin{table}
\caption{My table caption}
\label{tab:Table1}
\begin{tabularx}{\textwidth}{@{} lY @{}}
\toprule
Column1 & Column2\\
\midrule
column 1 value &
\begin{minipage}[t]{\linewidth}
\begin{itemize}[nosep, wide=0pt, leftmargin=*, after=\strut]
\item multiline item text multiline item text multiline
item text multiline item text multiline item text
\item multiline item text multiline item text
\end{itemize}
\end{minipage}\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
答案2
使用以下方式设置列表tabular
:
\documentclass{article}
\usepackage{booktabs,tabularx}
\newcolumntype{T}{>{\raggedright\arraybackslash}p{2.5cm}}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ @{} T X @{} }
\toprule
Column1 & Case of Column2 \\
\midrule
column 1 value &
\begin{tabular}[t]{ @{\makebox[1.5em][l]{\textbullet}} p{\dimexpr\linewidth-1.5em} @{} }
multiline item text multiline item text multiline item text multiline item text multiline item text \\
multiline item text multiline item text
\end{tabular} \\
\bottomrule
\end{tabularx}
\end{document}
内部tabular
设置类似于列表,扩展\linewidth
外部列的全部内容tabularx
X
,并进行[t]
操作对齐以确保它与周围的单元格条目垂直对齐。
调整宽度来\makebox
改变项目符号的对齐方式。
对于枚举的项目列表,您可以使用常规enumi
计数器(对于环境内的第一级枚举enumerate
:
\documentclass{article}
\usepackage{booktabs,tabularx}
\newcolumntype{T}{>{\raggedright\arraybackslash}p{2.5cm}}
\newcommand{\settabenum}{\makebox[1.5em][l]{%
\refstepcounter{enumi}%
\xdef\@currentlabel{\@currentlabel}%
\theenumi.}}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ @{} T X @{} }
\toprule
Column1 & Case of Column2 \\
\midrule
column 1 value & \setcounter{enumi}{0}% Reset the enumeration counter, if needed
\begin{tabular}[t]{ @{\settabenum} p{\dimexpr\linewidth-1.5em} @{} }
multiline item text multiline item text multiline item text multiline item text multiline item text \\
multiline item text multiline item text
\end{tabular} \\
\bottomrule
\end{tabularx}
\end{document}
在上面的例子中没有必要\setcounter{enumi}{0}
,但如果您的文档中有其他enumerate
列表,您可能必须在您的中重置它tabular
。
如果您希望能够引用某些项目,那么我们必须使用不同的设置:
\documentclass{article}
\usepackage{booktabs,tabularx}
\newcolumntype{T}{>{\raggedright\arraybackslash}p{2.5cm}}
\newcommand{\settabenum}{%
\refstepcounter{enumi}%
\makebox[0pt][r]{\makebox[1.5em][l]{%
\theenumi.}}}
\begin{document}
See item~\ref{second}.
\bigskip
\noindent
\begin{tabularx}{\textwidth}{ @{} T X @{} }
\toprule
Column1 & Case of Column2 \\
\midrule
column 1 value & \setcounter{enumi}{0}% Reset the enumeration counter, if needed
\begin{tabular}[t]{ @{\hspace{1.5em}} >{\settabenum} p{\dimexpr\linewidth-1.5em} @{} }
multiline item text multiline item text multiline item text multiline item text multiline item text \\
multiline item text multiline item text \label{second}
\end{tabular} \\
\bottomrule
\end{tabularx}
\end{document}