我试图让我的代码看起来像这样。
任何帮助,将不胜感激。
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath,adjustbox}
\begin{document}
\newenvironment{Pbmatrix}[1][c]
{\begin{adjustbox}{valign=#1}$\begin{bmatrix}}
{\end{bmatrix}$\end{adjustbox}}
\newcommand{\matt}[5]{
\begin{bmatrix}
\begin{Pbmatrix}[b]
2+r_1 & -1 \\
-1 & 2+r_1 & -1 \\
& \ddots & \ddots & \ddots \\
& & \ddots & \ddots & \ddots \\
& & & -1 & 2+r_1 & -1 \\
& & & & -1 & 2+r_1 \\
\end{Pbmatrix} & \begin{Pbmatrix}[b] #3 \end{Pbmatrix} & \\
\hfill \begin{Pbmatrix}[b] #4 \end{Pbmatrix} & \begin{Pbmatrix}[b] #1 \end{Pbmatrix} & \begin{Pbmatrix}[b] #2 \end{Pbmatrix} \hfill\hfill \\
& \begin{Pbmatrix}[b] #5 \end{Pbmatrix} & \begin{Pbmatrix}[t]
2+r_2 & -1 \\
-1 & 2+r_2 & -1 \\
& \ddots & \ddots & \ddots \\
& & \ddots & \ddots & \ddots \\
& & & -1 & 2+r_2 & -1 \\
& & & & -1 & 2+r_2 \\
\end{Pbmatrix}
\end{bmatrix}
}
\begin{figure}
\resizebox{\linewidth}{!}{%
$\displaystyle
\matt {A_1+A_4} {A_2} {-1} {A_3} {-1}
$}
\end{figure}
\end{document}
答案1
编辑鉴于 OP 的评论,我重写了它并简化了它。我已将单行行向量和单列列向量放入\myRow
和\myColumn
宏中,这些宏只是 a bmatrices
。由于 a 的大小取决于其条目,因此仅使它们与更大的角矩阵的大小相同是不够的,我使用和分别添加水平和垂直空间来bmatrix
伪造它。\hspace
\vspace
我首先将两个大块矩阵放入一个单独的宏中,以使代码易于阅读。接下来,我不再使用adjustbox 包因为这似乎只会破坏对齐。
代码如下:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath,adjustbox,mathtools}
\begin{document}
%\newcommand\Bigger[2][7]{\left#2\rule{0mm}{#1truemm}\right.}
%\newcommand\pbmatrix[2][18]{\Bigger[#1]{[}#2\Bigger[#1]{]}}
\newcommand\myRow[2]{\bmatrix#1&\hspace*{59.5mm}\endbmatrix}
\newcommand\myColumn[3][18]{\bmatrix#2\\ \vspace*{#1mm}\\ #3\endbmatrix}
\newcommand\myMatrix[1]{\bmatrix%
2+#1& -1 \\
-1 & 2+#1 & -1 \\
& \ddots & \ddots & \ddots \\
& & \ddots & \ddots & \ddots \\
& & & -1 & 2+#1 & -1 \\
& & & & -1 & 2+#1 \\
\endbmatrix}
\newcommand{\matt}[5]{
\begin{bmatrix}
\myMatrix{r_1}& \myColumn{}{#3}&\\
\myRow{}{#4} & [#1] &\myRow{#2}{}\\
& \myColumn[23]{#5}{}& \myMatrix{r_2}
\end{bmatrix}
}
\begin{figure}
\resizebox{\linewidth}{!}{%
$\displaystyle
\matt {A_1+A_4} {A_2} {-1} {A_3} {-1}
$}
\end{figure}
\end{document}
请注意,两个列向量的垂直调整略有不同。这是使用可选参数来实现的
\myColumn[vertical height]{top entry}{bottom entry}
而行向量的水平调整相同。据推测这是因为bmatrix
创建矩阵的方式。我通过反复试验找到了水平和垂直调整。