有没有什么办法可以修复过宽的表格?
我有下表:
\begin{tabular}{lllll}
\toprule
& Manual Tests & Randoop 2.5 Minutes With GUI Code & Randoop 2.5 Minutes Without GUI Code & Randoop 5 Minutes Without GUI Code \\ \midrule
\% Covered Instructions & \textbf{82.40\%} & 21.25\% & 21.30\% & \textbf{22.10\%} \\ \bottomrule
\end{tabular}
它看起来像这样:
有没有办法让细胞变得更苗条?如果相关的话,我正在使用scrreprt
。
答案1
您可以使用p{width}
列类型作为固定列,文本将自动换行。例如:
\begin{tabular}{*{5}{p{3cm}}}
\toprule
& Manual Tests & Randoop 2.5 Minutes With GUI Code & Randoop 2.5 Minutes Without GUI Code & Randoop 5 Minutes Without GUI Code \\ \midrule
\% Covered Instructions & \textbf{82.40\%} & 21.25\% & 21.30\% & \textbf{22.10\%} \\ \bottomrule
\end{tabular}
您还可以使用\shortstack
和 使用\\
进行手动换行。例如:
\begin{tabular}{ccccc}
\toprule
& Manual Tests & \shortstack{Randoop 2.5 Minutes\\ With GUI Code} & \shortstack{Randoop 2.5 Minutes\\ Without GUI Code} & \shortstack{Randoop 5 Minutes\\ Without GUI Code} \\ \midrule
\% Covered Instructions & \textbf{82.40\%} & 21.25\% & 21.30\% & \textbf{22.10\%} \\ \bottomrule
\end{tabular}
\shortstack
这里可以用一个小的环境来代替tabular
,以实现更好的垂直对齐:
\newcommand{\minitab}[2][c]{\begin{tabular}{#1}#2\end{tabular}}
\begin{tabular}{ccccc}
\toprule
& Manual Tests & \minitab{Randoop 2.5 Minutes\\ With GUI Code} & \minitab{Randoop 2.5 Minutes\\ Without GUI Code} & \minitab{Randoop 5 Minutes\\ Without GUI Code} \\ \midrule
\% Covered Instructions & \textbf{82.40\%} & 21.25\% & 21.30\% & \textbf{22.10\%} \\ \bottomrule
\end{tabular}
此外,您还可以使用makecell
包裹以获得更灵活的命令。\shortstack
或者可以用等\minitab
代替\makecell
。\thead
% \usepackage{makecell}
\begin{tabular}{ccccc}
\toprule
& Manual Tests & \thead{Randoop 2.5 Minutes\\ With GUI Code} & \thead{Randoop 2.5 Minutes\\ Without GUI Code} & \thead{Randoop 5 Minutes\\ Without GUI Code} \\ \midrule
\% Covered Instructions & \textbf{82.40\%} & 21.25\% & 21.30\% & \textbf{22.10\%} \\ \bottomrule
\end{tabular}
答案2
您可以在宽单元格中换行。为此,您可以使用 p 单元格代替 l,例如 p{2cm}。
我建议
使用
tabularx
包调整表格以适应文本宽度使用包的功能
array
将命令插入到列定义中通过以下方式让细胞更好地休息
ragged2e
加载
microtype
以进行更精细的自动对齐当然
booktabs
,正如我所见,你已经这样做了。
要说的内容有点多——只需查看包装文档即可。
以下是您的表格的一个简单示例:
\documentclass{scrreprt}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage{microtype}
\newcolumntype{Y}{>{\RaggedRight}X}
\newcolumntype{P}[1]{>{\RaggedRight}p{#1}}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{P{2.5cm}lYYY}
\toprule
& Manual Tests & Randoop 2.5 Minutes With GUI Code & Randoop 2.5 Minutes Without GUI Code & Randoop 5 Minutes Without GUI Code \\ \midrule
\% Covered Instructions & \textbf{82.40\%} & 21.25\% & 21.30\% & \textbf{22.10\%} \\ \bottomrule
\end{tabularx}
\end{document}