我的文档中有以下表格,除了最上面几列的文本未居中外,其他一切似乎都正常。我不知道为什么。我可以手动调整多列大小m
来实现这一点,但这似乎不是正确的解决方案。
我的文档中有一个类似的表格,居中效果很好。这一切都在 2 列 IEEE 类型文档中。我以为我的表格可能太宽了,发生了一些奇怪的事情 - 但缩小表格宽度并不能解决问题(尽管它做使文本偏离中心(以不同的方式)。我的整个表格位于页面的中心;我尝试将其删除并使其保持左对齐,但这没有效果。
生成该表的 TeX 是:
\begin{table*}
\centering
\caption{Results on Xilinx Virtex 5 Devices}
\label{tab:XilinxResults}
\begin{tabular}{|m{3cm}|m{1.50cm}|m{1.50cm}|m{1.30cm}|m{1.30cm}|m{1.30cm}|m{1.30cm}|m{1.30cm}|m{1.30cm}|}
\cline{2-9}
\multicolumn{1}{>{\centering}m{3.0cm}|}{ } & % blank box
\multicolumn{2}{>{\centering}m{3.0cm}|}{\bfseries Clock Frequency (MHz)} &
\multicolumn{2}{>{\centering}m{2.6cm}|}{\bfseries Throughput (Mbit/s)} &
\multicolumn{2}{>{\centering}m{2.6cm}|}{\bfseries Area (CLB Slices)} &
\multicolumn{2}{>{\centering}m{2.6cm}|}{\bfseries Throughput / Area} \tabularnewline \hline
\multicolumn{1}{|>{\centering}m{3cm}|}{\bfseries Architecture} &
\multicolumn{1}{>{\centering}m{1.50cm}|}{\bfseries 512-bit} &
\multicolumn{1}{>{\centering}m{1.50cm}|}{\bfseries 256-bit} &
\multicolumn{1}{>{\centering}m{1.30cm}|}{\bfseries 512-bit} &
\multicolumn{1}{>{\centering}m{1.30cm}|}{\bfseries 256-bit} &
\multicolumn{1}{>{\centering}m{1.30cm}|}{\bfseries 512-bit} &
\multicolumn{1}{>{\centering}m{1.30cm}|}{\bfseries 256-bit} &
\multicolumn{1}{>{\centering}m{1.30cm}|}{\bfseries 512-bit} &
\multicolumn{1}{>{\centering}m{1.30cm}|}{\bfseries 256-bit}
\tabularnewline\hline\hline
\bfseries BMW x1 &
\raggedleft 4.89 & \raggedleft 8.14 & \raggedleft 5004 & \raggedleft 4168 &
\raggedleft 12039 & \raggedleft 6164 & \raggedleft 0.42 & \raggedleft 0.68 \tabularnewline \hline
\bfseries BMW x1-PPL18 &
\raggedleft 46.51 & \raggedleft 70.97 & \raggedleft 47628 & \raggedleft 36335 &
\raggedleft 24564 & \raggedleft 11610 & \raggedleft 1.84 & \raggedleft 2.96 \tabularnewline \hline
\bfseries BMW /32(h) &
\raggedleft 44.27 & \raggedleft 69.41 & \raggedleft 1416 & \raggedleft 1110 &
\raggedleft 4001 & \raggedleft 2211 & \raggedleft 0.35 & \raggedleft 0.50 \tabularnewline \hline
\bfseries CubeHash x1 &
\raggedleft 152.70 & \raggedleft 151.93 & \raggedleft 2443 & \raggedleft 2430 &
\raggedleft 745 & \raggedleft 672 & \raggedleft 3.28 & \raggedleft 3.62 \tabularnewline \hline
\bfseries CubeHash x1-PAR5 &
\raggedleft 151.26 & \raggedleft 151.56 & \raggedleft 12101 & \raggedleft 12125 &
\raggedleft 3742 & \raggedleft 3490 & \raggedleft 3.23 & \raggedleft 3.47 \tabularnewline \hline
\bfseries CubeHash x1-PAR17 &
\raggedleft N/A & \raggedleft 150.49 & \raggedleft N/A & \raggedleft 40933 &
\raggedleft N/A & \raggedleft 11360 & \raggedleft N/A & \raggedleft 1.91 \tabularnewline \hline
\bfseries CubeHash x1-PAR33 &
\raggedleft 150.65 & \raggedleft N/A & \raggedleft 79542 & \raggedleft N/A &
\raggedleft 24570 & \raggedleft N/A & \raggedleft 3.24 & \raggedleft N/A \tabularnewline \hline
\bfseries CubeHash /2(h) &
\raggedleft 173.52 & \raggedleft 184.71 & \raggedleft 1388 & \raggedleft 1477 &
\raggedleft 733 & \raggedleft 624 & \raggedleft 1.89 & \raggedleft 2.37 \tabularnewline \hline
\end{tabular}
\end{table*}
答案1
使用 时\multicolumn{1}
,您无需通过 重新指定列宽m{<len>}
,因为尝试将列条目居中时需要繁琐的界面。只需使用 即可\multicolumn{1}{c}{...}
。
这是您的代码片段的更新版本:
\documentclass{article}
%\usepackage[landscape]{geometry}% http://ctan.org/pkg/geometry
\usepackage{array}% http://ctan.org/pkg/array
\newcommand{\stackcell}[2][c]{%
\begin{tabular}{@{}#1@{}}
#2
\end{tabular}%
}
\begin{document}
\begin{table*}
\centering
\caption{Results on Xilinx Virtex 5 Devices}
\label{tab:XilinxResults}
\begin{tabular}{|>{\bfseries\arraybackslash}l|*{8}{>{\raggedleft\arraybackslash}m{13mm}|}}
\cline{2-9}
\multicolumn{1}{c|}{} & % blank box
\multicolumn{2}{c|}{\bfseries \stackcell{Clock Frequency\\(MHz)}} &
\multicolumn{2}{c|}{\bfseries \stackcell{Throughput\\(Mbit/s)}} &
\multicolumn{2}{c|}{\bfseries \stackcell{Area\\(CLB Slices)}} &
\multicolumn{2}{c|}{\bfseries \stackcell{Throughput /\\Area}} \\ \hline
\multicolumn{1}{|c|}{\bfseries Architecture} &
\multicolumn{1}{c|}{\bfseries 512-bit} &
\multicolumn{1}{c|}{\bfseries 256-bit} &
\multicolumn{1}{c|}{\bfseries 512-bit} &
\multicolumn{1}{c|}{\bfseries 256-bit} &
\multicolumn{1}{c|}{\bfseries 512-bit} &
\multicolumn{1}{c|}{\bfseries 256-bit} &
\multicolumn{1}{c|}{\bfseries 512-bit} &
\multicolumn{1}{c|}{\bfseries 256-bit}
\tabularnewline\hline\hline
BMW x1 & 4.89 & 8.14 & 5004 & 4168 & 12039 & 6164 & 0.42 & 0.68 \\ \hline
BMW x1-PPL18 & 46.51 & 70.97 & 47628 & 36335 & 24564 & 11610 & 1.84 & 2.96 \\ \hline
BMW /32(h) & 44.27 & 69.41 & 1416 & 1110 & 4001 & 2211 & 0.35 & 0.50 \\ \hline
CubeHash x1 & 152.70 & 151.93 & 2443 & 2430 & 745 & 672 & 3.28 & 3.62 \\ \hline
CubeHash x1-PAR5 & 151.26 & 151.56 & 12101 & 12125 & 3742 & 3490 & 3.23 & 3.47 \\ \hline
CubeHash x1-PAR17 & N/A & 150.49 & N/A & 40933 & N/A & 11360 & N/A & 1.91 \\ \hline
CubeHash x1-PAR33 & 150.65 & N/A & 79542 & N/A & 24570 & N/A & 3.24 & N/A \\ \hline
CubeHash /2(h) & 173.52 & 184.71 & 1388 & 1477 & 733 & 624 & 1.89 & 2.37 \\ \hline
\end{tabular}
\end{table*}
\end{document}
希望这能改善代码的格式和可读性。一些改进包括:
- 使用重复列说明符:总共
*{<num>}{<col spec>}
重复次数;<col spec>
<num>
\raggedleft
在“列规范”级别插入,以避免tabular
内容混乱\raggedleft
;- 在列说明符中使用
\arraybackslash
within ,恢复as>{<stuff>}
的传统用法;\\
\tabularnewline
- 添加在单元格内
\stackcell[<col spec>]{<stuff>}
可堆叠的内容tabular
(尽管您可能不需要/不需要这个)。
最后,作为专业外观表格的建议,请考虑使用booktabs
包裹。表格的水平对齐/结构有助于避免使用垂直规则,这是使用 时所提倡的booktabs
。
(geometry
在编译 MWE 时以模式加载landscape
以使表格适合页面。)