이것은 내 MWE입니다.
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\usepackage{physics}
\usepackage{easybmat}
\begin{document}
First attempt:
\begin{align*}
&\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix} b_1& b_2 \end{matrix} \\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]\\
&\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\end{align*}
Second attempt:
\begin{align*}
&\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix} b_1& b_2 \end{matrix} \\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix}
\mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}
\end{matrix}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]\\
&\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix}
\mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}
\end{matrix}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\end{align*}
\end{document}
여기서는mathtools
패키지는 명령에 필요해야 합니다 \mathmakebox
. 나는easybmat
패키지는 내 목적에 필요한 행렬의 블록을 처리하는 훌륭한 도구이기 때문입니다. 그만큼physics
여기 패키지는 빠른 벡터 표기를 위해서만 사용되지만 물론 꼭 필요한 것은 아닙니다. 다음 결과를 얻어야 합니다.
나는 종종 매트릭스를 여러 섹터로 나누거나 여러 블록을 더 큰 블록으로 병합해야 하는 등의 작업을 수행해야 합니다.시각적 크기가 매우 동일한 해당 개체. 위의 MWE에서 및 를
사용하여 동일한 행에 있는 일부 연속 요소의 동일한 너비를 갖는 "다중 열" 행렬 요소를 만드는 방법을 보여 주려고 했습니다 . [*] "첫 번째 시도"에서는 이 트릭이 수평 간격에서는 완벽하게 작동하지만 수직 간격에서는 작동하지 않는 것으로 나타났습니다. "두 번째 시도"에서는 수직 간격에 대한 해결 방법이 표시됩니다. 내 질문은 다음과 같습니다\mathmakebox
\widthof
- 위에서 MWE에서 사용한 것보다 더 깨끗한 솔루션이 있습니까?
- (근본적인)동일한 열 내의 일부 연속 요소와 동일한 높이의 "다중 행" 행렬 요소를 갖는 유사한 절차가 있습니까? MWE에서는 열 교체를 생각해보십시오.(씨1,씨2)벡터로씨, 에서 수행된 것과 유사하게(비1,비2)그리고비; 나는 특히
\heightof
in이\mathmakebox
트릭을 수행하지 않기 때문에 이것을 묻습니다 . [**] - (더 일반적)다른 수학 표현식과 동일한 치수(높이 및 너비)를 사용하여 수학으로 채워지는 상자를 만드는 방법이 있습니까? 결국 두 가지 다른 표현식(너비에 대해 하나, 너비에 대해 하나)을 사용할 수 있는 방법이 있습니까? 키?
[*] 행렬을 관리할 때 일반적으로 열 및/또는 행 병합을 피한다는 점을 여기에 추가해야 합니다. 나는 중첩 행렬이 더 간단한 해결책이라고 생각합니다. 물론, 제가 틀렸을 수도 있습니다. 어쨌든 이 질문은 결국 행렬과 관련되지 않은 다른 목적으로도 이해가 될 수 있습니다.
[**] 이 문제에 대한 해결 방법도 있을 수 있습니다. 너비가 널인 상자를 사용하여 팬텀 표현식을 넣는 것입니다. 나는 게시를 자제했습니다. 너무 품위없어서 게시했다면 영원히 차단되었을 것입니다.
답변1
저장 상자를 사용하면 중복 작업을 피할 수 있습니다.
\documentclass{article}
\usepackage{mathtools}
\usepackage{easybmat}
\newsavebox{\tempbox}% \sbox0 doesn't work
\begin{document}
\savebox\tempbox{$\begin{matrix} b_1 & b_2 \end{matrix}$}% must be outside align environment
\begin{align*}
&\left[\begin{BMAT}{c1c}{c1c}
a& \usebox\tempbox \\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\wd\tempbox]{\boldsymbol{b}}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]\\
&\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\wd\tempbox]{\boldsymbol{b}}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\end{align*}
\end{document}