在表格单元格中居中

在表格单元格中居中

我使用的是两列样式。我想修改表格,使其适合且保持清晰度。两个单元格的文本应分两行。第二行应位于中间。

\documentclass[11pt,twocolumn]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{amsmath}
\usepackage{pbox}
\begin{document}

\begin{table}[h]
\caption{An Example of a Table}
\label{table_example}
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\hline
A  & B & C & D & Q & W &  error $\%$  in x  &  \pbox{20cm}{error $\%$ \\ in x } \\
\hline
23 & 1   & 80.9281   & 80.9281   &  80.9281          & aa                &      aa &\\
\hline
23 & 1   & 80.9281   & 80.9281   &  80.9281          & aa                &      aa &\\
\hline
23 & 1   & 80.9281   & 80.9281   &  80.9281          & aa                &      aa &\\
\hline
23 & 1   & 80.9281   & 80.9281   &  80.9281          & aa                &      aa &\\
\hline
23 & 3   & 80.9281   & 80.9281   &  80.9281          & aa                &      aa &\\
\hline
\end{tabular}
\end{center}
\end{table}


\end{document}

这是代码的图片在此处输入图片描述

答案1

您应该使用makecell包来实现这一点。它专门用于多行单元格的通用格式,并定义了一个命令\thead和一个多行版本。此类单元格的默认对齐方式是居中(垂直和水平),关键字可在和\makecell中进行选择,与列说明符无关。以下是两个使用 \thead 的示例,我指定使用粗体字体。t, b, cl, r, c

此外,我还添加了caption包以使标题和表格之间有适当的垂直间距,并添加cellspace了包以确保单元格顶部和上方行之间以及单元格底部和下方行之间的最小间距;它可以为列定义预S说明符。

获得行间间距的另一种解决方案是使用booktabs包;它为可变厚度的水平规则定义了新的命令,上面和下面有一些垂直间距;如果这个间距不够,你就有命令了\addlinespace

最后,我center用以下方式替换了环境centering(中心在此处添加了不需要的垂直间距):

\documentclass[11pt,twocolumn]{article}
\usepackage[margin=1cm,]{geometry}
\usepackage{amsmath}
\usepackage{pbox}
\usepackage{caption, booktabs}
\usepackage{makecell}
\usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}

\renewcommand\theadfont{\bfseries}

\begin{document}

\begin{table}[h]
\caption{An Example of a Table}
\centering\label{table_example}
\begin{tabular}{|Sc*{8}{c|}}
\hline
\thead{A} &\thead{ B} & \thead{C} & \thead{D} & \thead{Q} & \thead{W} & \thead{error \% in x} & \thead{error \% \\ in x } \\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 3 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
\end{tabular}
\end{table}

\begin{table}[h]
\renewcommand\theadalign{bc}
\caption{An Example of a Table}
\centering\label{table_example}
\begin{tabular}{|*{8}{c|}}
\hline
\thead{A} &\thead{ B} & \thead{C} & \thead{D} & \thead{Q} & \thead{W} & \thead{error \% in x} & \thead{error \% \\ in x } \\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
23 & 3 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\hline
\end{tabular}
\end{table}

\begin{table}[h]
\renewcommand\theadalign{bc}
\caption{An Example of a Table}
\centering\label{table_example}
\begin{tabular}{*{8}{c}}
\toprule
\thead{A} &\thead{ B} & \thead{C} & \thead{D} & \thead{Q} & \thead{W} & \thead{error \% in x} & \thead{error \% \\ in x } \\
\cmidrule(lr){1-8}
\addlinespace
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\addlinespace
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\addlinespace
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\addlinespace
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\addlinespace
23 & 3 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案2

也许我不理解你的设置,但我认为不可能有一张桌子有 20 厘米宽的柱子整个表格仍然适合分配的宽度(等于\columnwidth,即小于的一半\textwidth)。

我建议您使用tabularx包,将环境的总宽度指定tabularx\columnwidth,并对最后两列使用两个(修改后的)X列说明符。列中的材料X会自动换行。

由于水平空间非常稀缺,我将通过将 设置为 来减少 50% 的列间空白\tabcolsep3pt(默认值为6pt。)以这种方式节省的空白将自动分配给两X列。

我进一步建议您去掉所有垂直线 - 相信我,它们不会被错过 - 和大多数水平线,并对该包中的宏toprule\midrule和使用其余的水平线。\bottomrulebooktabs

在此处输入图片描述

\documentclass[11pt,twocolumn]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{amsmath}
\usepackage{tabularx,ragged2e,booktabs,caption}
\newcolumntype{C}{>{\Centering\arraybackslash}X}  % modified X column
\begin{document}
\begin{table}[th]
\setlength\tabcolsep{3pt} % default value: 6pt
\caption{An Example of a Table} \label{table_example}
\begin{tabularx}{\columnwidth}{@{} cccccc CC @{}}
\toprule
A & B & C & D & Q & W & error $\%$ in x & error $\%$ in x \\
\midrule
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
23 & 1 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
23 & 3 & 80.9281 & 80.9281 & 80.9281 & aa & aa &\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}

相关内容