如何让很宽的表格变窄

如何让很宽的表格变窄

有没有什么办法可以修复过宽的表格?

我有下表:

\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}

在此处输入图片描述

相关内容