가능한 한 적은 종속성을 설정하고 싶은 단순해 보이는 블록 매트릭스가 있습니다. 나는 이미 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}
모든 탈출구만큼 추악합니다.
NB: 열 사양을 선택적 인수로 사용하도록 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
클래식 환경과 유사 하지만 행, 셀 및 열 아래에 PGF/Tikz 노드를 생성합니다. 해당 노드를 사용하여 .NET에서 Tikz로 원하는 규칙을 그리는 것이 가능합니다 .{pmatrix}
amsmath
\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}
출력은 동일합니다.