
다음 코드를 고려해보세요.
\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 노드를 사용하기 때문에).