겹치지 않고 행렬의 왼쪽과 위쪽에 중괄호를 어떻게 둘 수 있나요?

겹치지 않고 행렬의 왼쪽과 위쪽에 중괄호를 어떻게 둘 수 있나요?

다음 코드를 고려해보세요.

\documentclass{article}

\usepackage{amsmath}
\usepackage{rotating}

\begin{document}

\begin{align*}
  \rotatebox[origin=c]{90}{$n$ parts}\left\{\overbrace{\begin{matrix}
    \bullet & \bullet & \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \cdots & \bullet\\
    \bullet & \cdots & \bullet\\
  \end{matrix}}^{\text{Even number}}\right.
\end{align*}

\begin{align*}
  \rotatebox[origin=c]{90}{$n$ parts}\overbrace{\left\{\begin{matrix}
    \bullet & \bullet & \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \cdots & \bullet\\
    \bullet & \cdots & \bullet\\
  \end{matrix}\right.}^{\text{Even number}}
\end{align*}

\end{document}

그러면 다음과 같은 출력이 생성됩니다.

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

두 경우 모두 중괄호 중 하나가 다른 중괄호와 겹칩니다. 각 버팀대가 다이어그램의 점 중 하나에서 정확하게 시작하고 끝나도록 하고 싶습니다. 이 작업을 어떻게 수행할 수 있나요?

답변1

다음은 이를 수행할 수 있는 한 가지 방법입니다.

\documentclass{article}

\usepackage{amsmath}
\usepackage{rotating}

\begin{document}

\begin{equation*}
  %
  % the vertical brace
  %
  \rotatebox[origin=c]{90}{\scriptsize{
    $n$ parts
  }}
  %
  % an invisible matrix for height
  %
  \left\{\begin{matrix}
     \vphantom{} \\ \vphantom{} \\ \vphantom{} \\
     \vphantom{} \\ \vphantom{} \\ \vphantom{} \\
  \end{matrix}\right.
  %
  % the horizontal brace and the visible matrix
  %
  \overbrace{
    \begin{matrix}
      \bullet & \bullet & \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \cdots & \bullet\\
      \bullet & \cdots & \bullet\\
    \end{matrix}
  }^{\text{
    even number
  }}
\end{equation*}

\end{document}

다음과 같습니다

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

이는 한 가지 차이점만 제외하면 예제와 매우 유사합니다. 이제 두 개의 중괄호가 서로 다른 행렬을 감싸고 있습니다.

항목이 모두 포함된 행렬은 \vphantom{}인쇄된 문서에 표시되지 않지만 점 행렬과 높이가 동일합니다. 도트 매트릭스를 더 크거나 작게 만든 경우 이를 보완하기 위해 이 매트릭스에서 항목을 추가하거나 제거해야 합니다. 이 행렬은 수직 버팀대의 크기를 제공합니다.

그런 다음 수평 버팀대가 원래 도트 매트릭스를 감싸고 수직 버팀대가 차지하는 공간을 전혀 볼 수 없습니다.


matrix또는 라이브러리를 사용하여 항목을 배치한 다음 라이브러리 를 사용하여 decorations중괄호를 그리는 매우 간단한 TikZ 기반 솔루션이 있습니다 .

\documentclass{article}

\usepackage{amsmath}
\usepackage{rotating}
\usepackage{tikz}

\usetikzlibrary{matrix, decorations.pathreplacing}

\begin{document}

\begin{tikzpicture}[decoration={brace, amplitude=6pt}]
    \matrix (m) [matrix of math nodes] {
      \bullet & \bullet & \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \bullet & \bullet & \cdots & \bullet\\
      \bullet & \cdots & \bullet\\
      \bullet & \cdots & \bullet\\
    };
    \draw [decorate, transform canvas={xshift=-0.3em}, thick]
           (m-6-1.south west) -- node [left=6pt]
           {\rotatebox[origin=c]{90}{\scriptsize\text{$n$ parts}}} (m-1-1.north west);
    \draw [decorate, transform canvas={yshift=0.5em, xshift=0.5em}, thick]
          (m-1-1.north west) -- node [above=6pt]
          {\scriptsize\text{even number}} (m-1-6.north east);
\end{tikzpicture}

\end{document}

TikZ 솔루션은 다음과 같습니다.

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

답변2

스택을 사용하여 이를 수행하는 방법은 다음과 같습니다.

\documentclass{article}
\usepackage{tabstackengine}
\stackMath
\begin{document}
\setbox0=\hbox{\setstacktabbedgap{1ex}\tabbedCenterstack{
    \bullet & \bullet & \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \bullet & \bullet & \cdots & \bullet\\
    \bullet & \cdots & \bullet\\
    \bullet & \cdots & \bullet
}}
\[
\Shortstack[r]{%
  {\stackon{\makebox[\wd0]{\downbracefill}}{\textrm{top~text}}}\\
  {\textrm{side~text}\left\{\box0\right.}
}
\]
\end{document}

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

답변3

다음은 (2021-11-23의 ≥ 6.4) {NiceMatrix}로 수행할 수 있는 작업입니다 .nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{NiceMatrix}
  \Block{*-1}{\rotate n \text{ parts}}
  & \bullet & \bullet & \bullet & \bullet & \bullet & \cdots & \bullet\\
  & \bullet & \bullet & \bullet & \cdots & \bullet\\
  & \bullet & \bullet & \bullet & \cdots & \bullet\\
  & \bullet & \bullet & \bullet & \cdots & \bullet\\
  & \bullet & \cdots & \bullet\\
  & \bullet & \cdots & \bullet\\
\CodeAfter
  \OverBrace{1-2}{1-last}{\text{even number}}[yshift=1mm]
  \SubMatrix{\{}{1-2}{last-2}{.}[left-xshift=0.8mm]
\end{NiceMatrix}$

\end{document}

여러 컴파일이 필요합니다( nicematrix내부적으로 PGF/Tikz 노드를 사용하기 때문에).

위 코드의 출력

관련 정보