我尝试使用来自这篇文章的代码 表格中的要点简洁
\usepackage{booktabs,tabularx}
\newcolumntype{T}{>{\raggedright\arraybackslash}p{5.354cm}}
\begin{table*}
\caption{The table caption}
\begin{tabularx}{\textwidth}{|T|T|T|}
\hline
Column 1 & Column2 & Column 3\\
\hline
Multiple column and column &
\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}
&
\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} \\
\hline
\end{tabularx}
\end{table*}
答案1
让我将我的评论延伸到答案:
- 您仅提供了表格的代码片段,因此不知道实际的文档布局。因此我使用由“几何包”确定页面边框的文档
- 答案基于我对问题的回答“表格单元格内的项目列表对齐不佳”。
与之相比我做了以下改变:
- 从你的问题中我得出结论,在第一列的单元格中,你有一个简短的一行文本。对于这样的文本适合使用
l
列类型 由于您使用
tabularx
具有左对齐列标题的表格环境,因此我相应地更改了I
列和命令的定义mch
:\documentclass{article} \usepackage[showframe, a4paper]{geometry} \usepackage{booktabs, tabularx} % added packages and column definitions \usepackage{ragged2e} % for smart align of cells' content \usepackage{enumitem} % for nice list \newcolumntype{I}{>{\RaggedRight\arraybackslash% % <-- for lists in columns \itemize}X<{\enditemize}} \newcommand\mch[1]{\multicolumn{1}{l}{\small{#1}}} % <-- for columns headers \begin{document} \begin{table} \setlength\tabcolsep{3pt} \setlist[itemize]{nosep, % <-- new list setup leftmargin = *, before = \vspace{-0.6\baselineskip}, after = \vspace{-\baselineskip} } \caption{The table caption} \label{tab:itemize} \begin{tabularx}{\linewidth}{ >{\RaggedRight}p{0.2\linewidth} *{2}{I} } \toprule Column 1 & \mch{Column 2} & \mch{Column 3} \\ \midrule Multiple column and column & \item multi line item text multi line item text multi line item text multi line item text multi line item text \item x x x x x x x x x x x x x x x x x x x x x x x x x & \item multiline item text multiline item text multiline item text multiline item text multiline item text \item x x x x x x x x x x x x x x x x x x x x x x x x \\ \bottomrule \end{tabularx} \end{table} \end{document}
- 从你的问题中我得出结论,在第一列的单元格中,你有一个简短的一行文本。对于这样的文本适合使用
如果第一列中的文本较长,需要分成多行,l
则应使用p{<width>
列类型而不是列,并根据您的喜好确定其宽度。在这种情况下,列I
将自动适应表格其余部分的宽度。例如
\begin{tabularx}{\linewidth}{ >{\RaggedRight}p{0.2\linewidth} *{2}{I} }
你将获得:
答案2
我在最后两栏中提出了基于的更简单的代码,tabularx
并使用了定制的环境:itemize
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{enumitem}
\usepackage{tabularx, caption}
\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\makeatother
\begin{document}
\begin{table*}
\caption{The table caption}
\setlist[itemize]{wide=0pt, leftmargin=*, itemsep=0pt, topsep=0pt, after=\vspace*{-\baselineskip}, rightmargin=-\leftmargini}
\setlength{\extrarowheight}{3pt}
\begin{tabularx}{\textwidth}{|>{\hsize=0.6\hsize}X|*{2}{>{\hsize=1.2\hsize\compress\arraybackslash}X|}}
\hline
Column 1 & Column2 & Column 3\\
\hline
Multiple column and column &
\begin{itemize}
\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}
&
\begin{itemize}
\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}
\\
\hline
\end{tabularx}
\end{table*}
\end{document}