블록 행렬의 행 벡터 주위에 수직선 추가

블록 행렬의 행 벡터 주위에 수직선 추가

아래 왼쪽 그림과 같은 레이아웃으로 3x3 블록 매트릭스를 생성하고 싶습니다. 행렬은 행 벡터 d-e-f와 열 벡터 로 분할됩니다 b-e-h(따라서 e1x1 부분행렬을 나타냄). 9개의 블록(행렬 4개, 벡터 4개, 스칼라 1개)을 구분하기 위해 두 개의 가로선과 두 개의 세로선을 추가하고 싶습니다.

나는 NiceArray다음의 명령을 사용하고 있습니다.nicematrix패키지, 이는 2행 블록을 사용하는 경우 의도한 대로 작동합니다(아래 왼쪽 매트릭스 참조). 그러나 d-e-f한 행 블록을 사용하여 행 벡터를 조판하려고 하면 (예: \Block{2-2}{d}로 변경 \Block{1-2}{d}등) 수직선이 끊어집니다(오른쪽 예 참조). 명령 을 추가/제거해도 \hline수직선에는 영향이 없습니다. 저는 TeX Live 2019 nicematrix버전 3.7을 사용하고 있습니다.

e2행 블록을 사용하지 않고 부분행렬 주위에 수직선을 유지할 수 있는 방법이 있습니까 ?

여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage{nicematrix}
\begin{document}

\[
\begin{pNiceArray}{cc|c|cc}[margin]
    \Block{2-2}{a} & & \Block{2-1}{b} & \Block{2-2}{c} & \\
                   & &                &                & \\\hline
    \Block{2-2}{d} & & \Block{2-1}{e} & \Block{2-2}{f} & \\
                   & &                &                & \\\hline
    \Block{2-2}{g} & & \Block{2-1}{h} & \Block{2-2}{i} & \\
                   & &                &                & \\
\end{pNiceArray}
\quad
\begin{pNiceArray}{cc|c|cc}[margin]
    \Block{2-2}{a} & & \Block{2-1}{b} & \Block{2-2}{c} & \\
                   & &                &                & \\
    \Block{1-2}{d} & & \Block{1-1}{e} & \Block{1-2}{f} & \\\hline
    \Block{2-2}{g} & & \Block{2-1}{h} & \Block{2-2}{i} & \\
                   & &                &                & \\
\end{pNiceArray}
\]

\end{document}

a업데이트: 궁극적으로 ...를 i하위 행렬을 나타내는 수식(예: A_{00}, 등)으로 대체하고 싶습니다. a_{01}^\mathsf{T}또한 이를 설명하고 싶습니다. ai정사각형 행렬이지만 c반드시 g정사각형일 필요는 없습니다.

다음은 실제 값이 포함된 출력 예입니다.

\documentclass{article}
\usepackage{nicematrix}
\begin{document}

\setlength{\extrarowheight}{1mm}
\setlength{\arraycolsep}{8pt}
\[
\begin{pNiceArray}{ccc|c|ccccc}[margin]
    \Block{3-3}{A_{00}} & & & \Block{3-1}{a_{01}} & \Block{3-4}{A_{20}^\mathsf{T}} & & & \\
     & & & & & & & \\
     & & & & & & & \\ \hline
     % I'd like to use the following line but it doesn't work as expected:
     %\Block{1-3}{a_{01}^\mathsf{T}} & & & \Block{1-1}{0} & \Block{1-4}{a_{21}^\mathsf{T}} & & & \\
     % two-row blocks are fine:
     \Block{2-3}{a_{01}^\mathsf{T}} & & & \Block{2-1}{0} & \Block{2-4}{a_{21}^\mathsf{T}} & & & \\
     & & & & & & & \\ \hline
     \Block{4-3}{A_{20}} & & & \Block{4-1}{a_{21}} & \Block{4-4}{A_{22}} & & & \\
     & & & & & & & \\
     & & & & & & & \\
     & & & & & & & \\
\end{pNiceArray}
\]

\end{document}

여기에 이미지 설명을 입력하세요

답변1

그의 의견에서 @leandriis가 제안한 것과 유사합니다. 블록은 하위 행렬 주변에 더 많은 공간을 두고 시뮬레이션됩니다.

편집하다:

편집된 질문에 제공한 매트릭스 내용 고려

\documentclass{article}
\usepackage{array,
            makecell}    % new

\begin{document}
\[\setcellgapes{3pt}
  \makegapedcells
\left(
\begin{array}{ccc|c|ccc}
    &           &&          &&              &   \\
    & A_{00}    && a_{01}   &&   A_{20}^T   &   \\
    &           &&          &&              &   \\   \hline
    & a_{01}^T  && 0        &&  f           &   \\   \hline
    &           &&          &&              &   \\
    & A_{20}    && a_{21}   &&  A_{22}^T    &   \\
    &           &&          &&              &   \\
\end{array}\right)
\]
\end{document}

참고: 차원 부분행렬이 보다 큰 위치를 강조하기 위해 빈 행과 열이 추가되었습니다 1 x 1. 이것이 필요하지 않다면 간단하게 삭제하세요.

여기에 이미지 설명을 입력하세요

답변2

이는 현재 패키지 버전의 버그인 것으로 나타났습니다 nicematrix. 이 문제는 버전 3.8(2020-01-02)에서 수정되었으며 CTAN에서 사용할 수 있습니다.

\vline어떤 이유로든 이전 버전을 사용하는 데 문제가 있는 경우 영향을 받는 셀 끝에 추가하여 버그를 해결할 수 있습니다 . 이를 최소 작업 예제에 적용하면 원하는 출력이 제공됩니다.

\documentclass{article}
\usepackage{nicematrix}
\begin{document}

\setlength{\extrarowheight}{1mm}
\setlength{\arraycolsep}{8pt}
\[
\begin{pNiceArray}{ccc|c|ccccc}[margin]
    \Block{3-3}{A_{00}} & & & \Block{3-1}{a_{01}} & \Block{3-4}{A_{20}^\mathsf{T}} & & & \\
    & & & & & & & \\
    & & & & & & & \\ \hline
    \Block{1-3}{a_{01}^\mathsf{T}} & & \vline & \Block{1-1}{0} \vline & \Block{1-4}{a_{21}^\mathsf{T}} & & & \\\hline
    \Block{4-3}{A_{20}} & & & \Block{4-1}{a_{21}} & \Block{4-4}{A_{22}} & & & \\
    & & & & & & & \\
    & & & & & & & \\
    & & & & & & & \\
\end{pNiceArray}
\]

\end{document}

여기에 이미지 설명을 입력하세요

답변3

변형 솔루션:

\documentclass{article}
\usepackage{amsmath} %

\begin{document}


\[ \renewcommand{\arraystretch}{1.4}
  \left[\,\:\begin{matrix}
     a & \vrule & b & \vrule & c \\
    \hline
     d & \vrule & e & \vrule & f \\
    \hline
     g & \vrule & h &\vrule & i
    \end{matrix}
\,\: \right]
\]

\end{document} 

여기에 이미지 설명을 입력하세요

관련 정보