我正在使用这个命令
\begin{equation}
W = \left(
\begin{array}{ccccccccc}
1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & -1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
-1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & -1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
-1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & 1 \\
\end{array}
\right)
\end{equation}
显示 9x9 矩阵。
我想将这个矩阵划分为 3x3 块,并将零替换为点。
答案1
进行“搜索和替换”不会有什么大问题,但如果有一个肮脏的伎俩可用......
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
W = \left(\mathcode`0=\cdot
\begin{array}{ *{3}{c} | *{3}{c} | *{3}{c} }
1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & -1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\hline
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
-1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & -1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \hline
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
-1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & 1 \\
\end{array}
\right)
\end{equation}
\end{document}
对于由 发起的组的存在时间\left(
,我告诉 TeX0
在数学模式下(即在每个单元格中)应该被解释为\cdot
。
答案2
您可以在 LaTeX 中使用字符串替换(xstring 和 collcell 包)。对于块,我使用来自 arydshln 的虚线(标题中的 : 和行中的 \hdashline)。
\documentclass{article}
\usepackage{array,arydshln}
\usepackage{xstring,collcell}
\newcommand{\ToDot}[1]{\StrSubstitute{#1}{0}{\cdot}}
\begin{document}
\begin{equation}
W = \left(
\begin{array}{ *{3}{>{\collectcell\ToDot}c<{\endcollectcell}} :
*{3}{>{\collectcell\ToDot}c<{\endcollectcell}} :
*{3}{>{\collectcell\ToDot}c<{\endcollectcell}}}
1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & -1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\hdashline
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
-1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & -1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \hdashline
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
-1 & 0 & 0 & 0 & -1 & 0 & 0 & 0 & 1 \\
\end{array}
\right)
\end{equation}
\end{document}