如何更改表格宽度以适应两列布局?

如何更改表格宽度以适应两列布局?

我正在使用两列 ACM 格式撰写研究报告。我使用以下代码创建了一个表格。代码创建的问题是宽度太大,延伸到整个页面。我需要帮助缩小它的宽度。

 \begin{table}[h!]
 \begin{tabular}{lcccc}
 \toprule
 Benchmark & Number of Nodes & Residual Energy of Original & Residual Energy of Modified & Percentage of Residual Energy \% \\ [0.5ex]
 \hline
 1  & 10 & 1.171 J & 1.214 J & 4.3\% \\  
\hline
 2 & 30 & 1.145 J & 1.197 J & 5.2\% \\
 \hline
 3 & 50 & 1.116 J & 1.163 J & 4.7\%  \\
\hline
 4 & 70 & 1.152 J & 1.186 J & 3.4\% \\
 \hline
 5 & 100  & 1.193 J & 1.235 J & 4.15\%  \\
\hline
 Avg &   & 1.1554 J & 1.1989 J & 4.35\% \\
 \bottomrule
\end{tabular}
\end{table}

答案1

我假设您所说的“ACM 格式”指的是acmart文档类。如果这个假设不正确,请告知。

我建议您将tabular环境替换tabularx为允许在标题单元格中自动换行的环境。我还建议您将有关单位(焦耳、%)的信息从表格主体中取出并放入标题中。

在此处输入图片描述

\documentclass[twocolumn]{acmart}
\usepackage{booktabs}

% new code:
\raggedbottom
\usepackage{tabularx,ragged2e,siunitx}
\newcolumntype{Y}[1]{>{\Centering\hspace{0pt}\hsize=#1\hsize}X}
\usepackage{lipsum} % for filler text

\begin{document}

\begin{table}[h!]
\begin{tabularx}{\columnwidth}{@{} Y{0.73} Y{0.85} Y{1.09} Y{1.09} Y{1.24} @{}}
% Note: 0.73+0.85+1.09+1.09+1.24 = 5 = # of X-type columns
\toprule
Benchmark & Number of Nodes & 
Residual Energy of Original & 
Residual Energy of Modified & 
Percentage of Residual Energy \\ 
 & & [\,J] & [\,J] & [\%] \\
\midrule
  1 &  10 & 1.171 & 1.214 & 4.3  \\  
  2 &  30 & 1.145 & 1.197 & 5.2  \\
  3 &  50 & 1.116 & 1.163 & 4.7  \\
  4 &  70 & 1.152 & 1.186 & 3.4  \\
  5 & 100 & 1.193 & 1.235 & 4.15 \\
\addlinespace
 Avg&     & 1.1554& 1.1989& 4.35 \\
\bottomrule
\end{tabularx}
\end{table}

\lipsum % filler text
\end{document}

答案2

以下是如何将表格放入双栏文章的一栏中。我还删除了命令\hline并使用了siunitx来改善表格中数字的对齐。为了避免表格中的重复,我将单位放在相应的列标题中,为了留出空间,我使用包\thead中的命令添加了换行符makecell。最后,我还tabular*结合使用了 以\extracolsep确保表格的宽度与文本列的宽度完全相同。

根据您使用的文档类别,输出可能会有所不同,但您仍然应该大致了解我如何确保您的表格适合一列。

在此处输入图片描述

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{makecell}
\renewcommand{\theadfont}{\normalsize}
\begin{document}
\begin{table}
\setlength{\tabcolsep}{0pt}
  \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}lS[table-format=3] *{2}{S[table-format=1.4]} S[table-format=1.2]}
    \toprule
  & & \multicolumn{3}{c}{\thead{Residual Energy}}\\
    \cmidrule{3-5}
{\thead[l]{Bench-\\mark}} 
  & {\thead{No. of\\ Nodes}} 
    & {\thead{Original\\ in \si{\joule}}} 
      & {\thead{Modified\\ in \si{\joule}}}
        & {\thead{Percentage}}\\ 
 \midrule
 1   & 10  & 1.171   & 1.214  & 4.3 \\  
 2   & 30  & 1.145   & 1.197  & 5.2 \\
 3   & 50  & 1.116   & 1.163  & 4.7  \\
 4   & 70  & 1.152   & 1.186  & 3.4 \\
 5   & 100 & 1.193   & 1.235  & 4.15  \\
 Avg &     & 1.1554  & 1.1989 & 4.35 \\
 \bottomrule
\end{tabular*}
\end{table}
\lipsum
\end{document}

答案3

您可以使用tabularx环境来代替tabular。在这种情况下,您不仅可以将表格的宽度设置为textwidth(也可以通过 实现),还可以通过使用强制列宽相等的列类型来tabular*避免列溢出到边距中。X

使用您发布的示例,您可能会得到类似这样的结果

在此处输入图片描述

使用完整最小代码,

\documentclass{article}
\usepackage{booktabs}
\usepackage{tabularx}
%
\begin{document}
\begin{table}[h!]
    \begin{tabularx}{\textwidth}{XXXXX}
        \toprule
        Benchmark & Number of Nodes & Residual Energy of Original & Residual Energy of Modified & Percentage of Residual Energy \% \\ [0.5ex]
        \hline
        1  & 10 & 1.171 J & 1.214 J & 4.3\% \\
        \hline
        2 & 30 & 1.145 J & 1.197 J & 5.2\% \\
        \hline
        3 & 50 & 1.116 J & 1.163 J & 4.7\%  \\
        \hline
        4 & 70 & 1.152 J & 1.186 J & 3.4\% \\
        \hline
        5 & 100  & 1.193 J & 1.235 J & 4.15\%  \\
        \hline
        Avg &   & 1.1554 J & 1.1989 J & 4.35\% \\
        \bottomrule
    \end{tabularx}
\end{table}
\end{document}

相关内容