我只是想知道是否有更快的方法来创建这个表或数组,而无需或最少使用\multicolumn
表中的命令。
我使用的在这里
\begin{tabularx}{200pt}{c c c c c}
{} & $M_1$ & $M_2$ & $M_3$ & $M_4$\\ \cline{2-5}
\multicolumn{1}{c|}{$J_1$} & 3 & 5 & 1 & \multicolumn{1}{c|}{6}\\
\multicolumn{1}{c|}{$J_2$} & 7 & 2 & 3 & \multicolumn{1}{c|}{5}\\
\multicolumn{1}{c|}{$J_3$} & 4 & 8 & 4 & \multicolumn{1}{c|}{2}\\
\multicolumn{1}{c|}{$J_4$} & 6 & 5 & 7 & \multicolumn{1}{c|}{6}\\
\cline{2-5}
\end{tabularx}
答案1
你\multicolumn
只需要第一排。
\[
\begin{array}{c| c c c c|}
\multicolumn{1}{c}{} & M_1 & M_2 & M_3 & \multicolumn{1}{c}{M_4}\\ \cline{2-5}
J_1 & 3 & 5 & 1 & 6\\
J_2 & 7 & 2 & 3 & 5\\
J_3 & 4 & 8 & 4 & 2\\
J_4 & 6 & 5 & 7 & 6\\
\cline{2-5}
\end{array}
\]
答案2
这里有两个解决方案。第一个使用序言中定义的宏,并坚持使用环境tabularx
。然而,第二个基于blkarray
包,更短:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx, blkarray}
\newcommand\colhead[1]{\multicolumn{1}{>{$}c<{$}}{#1}}
\begin{document}
\begin{table}[h]
\centering\begin{tabularx}{200pt}{>{$}c<{$}|*{4}{>{\centering\arraybackslash}X|}}
\colhead{} & \colhead{M_1} & \colhead{M_2} & \colhead{M_3} & \colhead{M_4}
\\
\cline{2-5}
J_1 & 3 & 5 & 1 & 6\\
J_2 & 7 & 2 & 3 & 5\\
J_3 & 4 & 8 & 4 & 2\\
J_4 & 6 & 5 & 7 & 6\\
\cline{2-5}
\end{tabularx}
\end{table}
\[ \renewcommand\arraystretch{1.25}
\begin{blockarray}{ccccc}
& M_1 & M_2 & M_3 & M_4\\
\cline{2-5}
\begin{block}{c|*{4}{c}|}
J_1 & 3 & 5 & 1 & 6\\
J_2 & 7 & 2 & 3 & 5\\
J_3 & 4 & 8 & 4 & 2\\
J_4 & 6 & 5 & 7 & 6\\
\end{block}
\cline{2-5}
\end{blockarray} \]
\end{document}
答案3
有了{NiceArray}
of nicematrix
,您只需要一个命令\Block
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\NiceMatrixOptions{exterior-arraycolsep}
$\begin{NiceArray}{ccccc}
& M_1 & M_2 & M_3 & M_4 \\
J_1 & \Block[draw]{*-*}{}
5 & 6 & 2 & 4 \\
J_2 & 5 & 6 & 2 & 9 \\
J_3 & 6 & 5 & 8 & 5 \\
J_4 & 7 & 6 & 2 & 3 \\
\end{NiceArray}$
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。