我确信这很简单,但我搞不懂。我试图制作如下所示的并排表格:
除了左侧表格应该有完全空白的行,而不是每隔一行有两条垂直线。我尝试了以下方法:
\begin{equation*}
\begin{array}{| c | c | c | c |}
\hline
\multicolumn{4}{|c|}{\Delta t = 0.1}\\\hline
k & t_k & u_k & f(t_k,u_k) \\\hline
0 & 0 & 2 & -2 \\\hline\\\hline
1 & 0.1 & 1.8 & -1.7 \\\hline \\\hline
2 & 0.2 & 1.63 & -1.43 \\\hline \\\hline
3 & 0.3 & 1.487 & -1.187 \\\hline \\\hline
\end{array}
\qquad
\begin{array}{| c | c | c | c |}
\hline
\multicolumn{4}{|c|}{\Delta t = 0.05}\\\hline
k & t_k & u_k & f(t_k,u_k) \\\hline
0 & 0 & 2 & -2 \\\hline
1 & 0.05 & 1.9 & -1.85 \\\hline
2 & 0.1 & 1.808 & -1.708 \\\hline
3 & 0.15 & 1.722 & -1.572 \\\hline
4 & 0.2 & 1.644 & -1.444 \\\hline
5 & 0.25 & 1.571 & -1.321 \\\hline
6 & 0.3 & 1.505 & -1.205 \\\hline
\end{array}
\end{equation*}
产生了上述输出。有没有简单的方法可以实现我想要的效果?(我使用的是array
和multirow
包)。
答案1
您可以使用它\multicolumn
来覆盖声明的格式;我还使用它t
作为数组的可选参数来产生顶部对齐:
\documentclass{article}
\usepackage{array,multirow}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{array}[t]{| c | c | c | c |}
\hline
\multicolumn{4}{|c|}{\Delta t = 0.1} \\
\hline
k & t_k & u_k & f(t_k,u_k) \\
\hline
0 & 0 & 2 & -2 \\
\hline
\multicolumn{4}{c}{} \\
\hline
1 & 0.1 & 1.8 & -1.7 \\
\hline
\multicolumn{4}{c}{} \\
\hline
2 & 0.2 & 1.63 & -1.43 \\
\hline
\multicolumn{4}{c}{} \\
\hline
3 & 0.3 & 1.487 & -1.187 \\
\hline
\end{array}
\qquad
\begin{array}[t]{| c | c | c | c |}
\hline
\multicolumn{4}{|c|}{\Delta t = 0.05} \\
\hline
k & t_k & u_k & f(t_k,u_k) \\ \hline
0 & 0 & 2 & -2 \\ \hline
1 & 0.05 & 1.9 & -1.85 \\ \hline
2 & 0.1 & 1.808 & -1.708 \\ \hline
3 & 0.15 & 1.722 & -1.572 \\ \hline
4 & 0.2 & 1.644 & -1.444 \\ \hline
5 & 0.25 & 1.571 & -1.321 \\ \hline
6 & 0.3 & 1.505 & -1.205 \\ \hline
\end{array}
\end{equation*}
\end{document}
答案2
我相信您\\\hline
在第一个末尾有一个不需要的语句array
。 如果省略此语句,则两个数组将正确对齐。
如果您想更进一步,我建议您使用siunitx
包及其S
列类型将数字对齐到小数点。并且,正如 Gonzalo Medina 的回答中所示,您可能希望\multicolumn{1}{c}{ }
在第一个表中插入指令以抑制(可能没有必要)| |
其他行。
\documentclass{article}
\usepackage{siunitx}
\sisetup{table-format=2.3}
\begin{document}
\[
\begin{array}{| l | S | S | S |}
\hline
\multicolumn{4}{|c|}{\Delta t = 0.1}\\ \hline
k & {t_k} & {u_k} & {f(t_k,u_k)} \\ \hline
0 & 0 & 2 & -2 \\\hline \multicolumn{1}{c}{ }\\\hline % extra blank line
1 & 0.1 & 1.8 & -1.7 \\\hline \multicolumn{1}{c}{ }\\\hline % extra blank line
2 & 0.2 & 1.63 & -1.43 \\\hline \multicolumn{1}{c}{ }\\\hline % extra blank line
3 & 0.3 & 1.487 & -1.187\\\hline
\end{array}
\qquad
\begin{array}{| l | S | S | S |}
\hline
\multicolumn{4}{|c|}{\Delta t = 0.05}\\ \hline
k & {t_k} & {u_k} & {f(t_k,u_k)} \\ \hline
0 & 0 & 2 & -2 \\\hline
1 & 0.05 & 1.9 & -1.85 \\\hline
2 & 0.1 & 1.808 & -1.708 \\\hline
3 & 0.15 & 1.722 & -1.572 \\\hline
4 & 0.2 & 1.644 & -1.444 \\\hline
5 & 0.25 & 1.571 & -1.321 \\\hline
6 & 0.3 & 1.505 & -1.205 \\\hline
\end{array}
\]
\end{document}
我还想鼓励您考虑删除所有垂直线;一旦数字列在小数点上对齐,它们实际上就不会添加任何有用的信息。作为奖励,您不需要输入类似\multicolumn{1}{c}{ } \\
生成没有垂直线的空白行的内容;\\
就足够了。:-) 此外,我认为这两个数组中的大多数水平线也是不需要的。
这里对您的示例进行了轻微的修改;\hline
它不使用 ,而是使用booktabs
包(及其命令\toprule
、\midrule
和\bottomrule
)来绘制具有更好间距的水平线。
\documentclass{article}
\usepackage{siunitx}
\sisetup{table-format=2.3}
\usepackage{booktabs}
\begin{document}
\[
\begin{array}{ @{} l S S S @{} }
\multicolumn{4}{c}{\Delta t = 0.1}\\
\midrule[\heavyrulewidth]
k & {t_k} & {u_k} & {f(t_k,u_k)} \\
\midrule
0 & 0 & 2 & -2 \\ \\ % extra blank line
1 & 0.1 & 1.8 & -1.7 \\ \\ % extra blank line
2 & 0.2 & 1.63 & -1.43 \\ \\ % extra blank line
3 & 0.3 & 1.487 & -1.187\\
\bottomrule
\end{array}
\qquad
\begin{array}{ @{} l S S S @{} }
\multicolumn{4}{c}{\Delta t = 0.05}\\
\midrule[\heavyrulewidth]
k & {t_k} & {u_k} & {f(t_k,u_k)} \\
\midrule
0 & 0 & 2 & -2 \\
1 & 0.05 & 1.9 & -1.85 \\
2 & 0.1 & 1.808 & -1.708 \\
3 & 0.15 & 1.722 & -1.572 \\
4 & 0.2 & 1.644 & -1.444 \\
5 & 0.25 & 1.571 & -1.321 \\
6 & 0.3 & 1.505 & -1.205 \\
\bottomrule
\end{array}
\]
\end{document}