一見単純なブロック マトリックスがあり、これをできるだけ依存関係を少なくして設定したいと考えています。 amsmath と関連関数はすでにロードされています。 避けたいのは blkarray だけです。
私が作りたいものは次のとおりです。
これは私の失敗した試みです。線が交わらず角ができず、想像できる最もひどい間隔ができてしまいました。
\begin{equation}
\begin{pmatrix}[ccc]
J_1 & \begin{array}{|cc}0 & 0\\ 0 & 0\end{array} & \begin{array}{cc}0 & 0\\ 0 & 0\end{array}\\ \cline{1-2}
\begin{array}{cc|}0&0\\0&0\end{array} & J_2 & \begin{array}{|cc}0&0\\0&0\end{array}\\ \cline{2-3}
\begin{array}{cc}0 & 0\\ 0 & 0\end{array} & \begin{array}{cc|}0 & 0\\ 0 & 0\end{array} & J_3
\end{pmatrix}
\end{equation}
それは実に醜い。
注意: pmatrix を変更して、列仕様をオプションの引数として受け取るようにしました。配列であると仮定してください。
私の困難は、2x2 ブロックが必要なことに起因しているようですが、私が見た他のほとんどの人は、複数行または複数列のいずれかを使用して回避しているようですが、両方を使用していません。
編集: これはそれほど醜いわけではありませんが、垂直線は複数行の距離の半分しかカバーしていません。
\begin{equation}
\begin{array}{cccccc}
\multicolumn{2}{c|}{\multirow{2}{*}{$J_1$}} & 0 & 0 & 0 & 0\\
& & 0 & 0 & 0 & 0\\ \cline{1-4}
0 & 0 & \multicolumn{2}{|c|}{\multirow{2}{*}{$J_1$}} & 0 & 0\\
0 & 0 & & & 0 & 0\\ \cline{3-6}
0 & 0 & 0 & 0 & \multicolumn{2}{|c}{\multirow{2}{*}{$J_1$}} \\
0 & 0 & 0 & 0 & & \\
\end{array}
\end{equation}
答え1
マトリックス構造の基本部分は次のようになります。
\documentclass{article}
\newcommand{\mc}{\multicolumn{1}{c}}
\begin{document}
\[
\renewcommand{\arraystretch}{1.2}
\left(
\begin{array}{ c c | c c | c c }
\multicolumn{1}{|c}{} & & 0 & \mc{0} & 0 & 0 \\
\multicolumn{2}{|c|}{\raisebox{.6\normalbaselineskip}[0pt][0pt]{$J_1$}} & 0 & \mc{0} & 0 & 0 \\
\cline{1-4}
0 & 0 & & & 0 & 0 \\
0 & 0 & \multicolumn{2}{c|}{\raisebox{.6\normalbaselineskip}[0pt][0pt]{$J_2$}} & 0 & 0 \\
\cline{3-6}
0 & \mc{0} & 0 & 0 & & \multicolumn{1}{c|}{} \\
0 & \mc{0} & 0 & 0 & \multicolumn{2}{c|}{\raisebox{.6\normalbaselineskip}[0pt][0pt]{$J_3$}}
\end{array}
\right)
\]
\end{document}
おそらく、行列の間隔を維持するために、他のコンポーネント (やA
など)に変数を割り当てるのが最善でしょう。B
答え2
{pNiceMatrix}
の を使用nicematrix
します。この環境は の従来の環境{pmatrix}
( amsmath
) に似ていますが、行、セル、列の下に PGF/Tikz ノードを作成します。これらのノードを使用して、 で Tikz を使用して任意のルールを描画できます\CodeAfter
。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
$\begin{pNiceMatrix}[margin]
\Block{2-2}{J_1} & & 0 & 0 & 0 & 0 \\
& & 0 & 0 & 0 & 0 \\
0 & 0 & \Block{2-2}{J_2} & & 0 & 0 \\
0 & 0 & & & 0 & 0 \\
0 & 0 & 0 & 0 & \Block{2-2}{J_3} \\
0 & 0 & 0 & 0 \\
\CodeAfter
\begin{tikzpicture}
\draw (1-|1) |- (3-|5) -- (7-|5) ;
\draw (1-|3) |- (5-|7) -- (7-|7) ;
\end{tikzpicture}
\end{pNiceMatrix}$
\end{document}
複数のコンパイルが必要です (PGF/Tikz ノードのため)。
Tikz を明示的に使用しない場合は、borders
コマンドのキーを使用してブロックの境界を指定することもできます\Block
。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\begin{document}
$\begin{pNiceMatrix}[margin]
\Block[borders={left,bottom,right}]{2-2}{J_1} & & 0 & 0 & 0 & 0 \\
& & 0 & 0 & 0 & 0 \\
0 & 0 & \Block[draw]{2-2}{J_2} & & 0 & 0 \\
0 & 0 & & & 0 & 0 \\
0 & 0 & 0 & 0 & \Block[borders={left,top,right}]{2-2}{J_3} \\
0 & 0 & 0 & 0 \\
\end{pNiceMatrix}$
\end{document}
出力は同じです。