我有这张简单的表格,需要一些帮助:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{table}[]
\resizebox{\textwidth}{!}{%
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
& Zone A1 & Zone A1 & Zone A1 & Zone A1 & Zone A1 & Zone A1 \\ \hline
Value & 1 & 2 & 3 & 4 & 5 & 6 \\ \hline
\multicolumn{7}{|c|}{Total} \\ \hline
\multicolumn{3}{|c|}{Val1} & \multicolumn{4}{c|}{Val2} \\ \hline
\end{tabular}%
}
\end{table}
\end{document}
我怎样才能使行中的列值1和值2宽度相等?
谢谢。
答案1
无需任何附加包,并且(几乎)无需更改您现有的表(我仅将您的代码缩减为tabular
并更改了相关行):
\documentclass[border=2mm]{standalone}
\begin{document}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
& Zone A1 & Zone A1 & Zone A1 & Zone A1 & Zone A1 & Zone A1 \\
\hline
Value & 1 & 2 & 3 & 4 & 5 & 6 \\
\hline
\multicolumn{7}{|c|}{Total} \\
\hline
\multicolumn{7}{|c|}{\hfill Val1\hfill\vline\hfill Val2\hfill\null} \\
\hline
\end{tabular}
\end{document}
答案2
这里有一种方法可以做到这一点:使用tabularx
使表格的整个宽度具有等间距的列,然后在里面嵌入第二个表格以使底部的列间距均匀。
我已经使用该array
包来定义居中X
列。
\documentclass{article}
\usepackage{tabularx}
\usepackage{array}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{tabularx}{\linewidth}{|C|C|C|C|C|C|C|}
\hline
& Zone A1 & Zone A1 & Zone A1 & Zone A1 & Zone A1 & Zone A1 \\ \hline
Value & 1 & 2 & 3 & 4 & 5 & 6 \\ \hline
\multicolumn{7}{|c|}{Total} \\ \hline
\multicolumn{7}{|@{}c@{}|}{\begin{tabularx}{\columnwidth}{C|C}Val1 & Val2 \end{tabularx}} \\ \hline
\end{tabularx}%
\end{document}
正如我在评论中提到的,使用 来\resizebox
更改表格大小通常是一种不好的做法,因为它会更改文档的字体大小。因此使用tabularx
允许您直接指定表格的宽度。表格中的垂直线通常也是不必要的,因此您可能还想看看使用该booktabs
包而不是使用任何垂直线。当然它们有时是合适的,所以我在回答中保留了您的示例。