我如何编写一个标题行未加括号的矩阵?我使用以下代码生成了以下结果。除了难看之外,当我需要将第一行、n1、...、n6 与矩阵列对齐时,它也不实用。
\documentclass{book}
\usepackage{amsmath}
\begin{document}
\[ \ \ \ \ \ \ \ n_1\ \ \ \ \ \ \ \ n_2\ \ \ \ n_3\ \ \ \ \ \ \ \ \ n_4\ \ \ \ n_5\ \ \ \ n_6\]
\[ \begin{bmatrix}
1 & -1 & 0 & 0 & 0 & 1\\
0.960 & -0.977 & 0 & 0 & 0 & 0.983\\
0 & 1 & -1 & -1 & 0 & 0\\
0 & 0.977 & 0 & -0.983 & 0 & 0\\
0 & 0 & 0 & 1 & -1 & -1\\
0 & 0 & 0 & 0 & 0 & 1\\
\end{bmatrix}
\begin{bmatrix}n_1\\n_2\\n_3\\n_4\\n_5\\n_6\end{bmatrix} =
\begin{bmatrix}0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 100\end{bmatrix} \]
\end{document}
答案1
基于的解决方案blkarray
:我定义一个bheadmatrix
环境(矛盾修辞法)。由于xparse
包的原因,它接受两个可选参数:带有列标题的行(无默认值)和blockarray
环境的说明符。后者默认为(最多)10 个居中列。我不得不在第一个括号行的开头添加一个支柱,在最后一个括号行的末尾添加一个负支柱,因为出于某种原因,包提供的默认括号构造blockarray
太短了。
\documentclass{book}
\usepackage{amsmath}
\usepackage{blkarray, bigstrut}
\usepackage{xparse}
\newcommand\topstrut[1][1.2ex]{\setlength\bigstrutjot{#1}{\bigstrut[t]}}
\newcommand\botstrut[1][0.9ex]{\setlength\bigstrutjot{#1}{\bigstrut[b]}}
\DeclareDocumentEnvironment{bheadmatrix}{O{}O{*{10}{c}}}{%
\begin{blockarray}{#2}
#1 \\[-0.8ex]
\begin{block}{[#2]}
\topstrut}%
{%
\botstrut\\
\end{block}
\end{blockarray}
}%
\begin{document}
\[
\begin{bheadmatrix}[n_1 & n_2 &n_3 &n_4 &n_5 &n_6][*{6}{r}]
1 & -1 & 0 & 0 & 0 & 1\\
0.960 & -0.977 & 0 & 0 & 0 & 0.983\\
0 & 1 & -1 & -1 & 0 & 0\\
0 & 0.977 & 0 & -0.983 & 0 & 0\\
0 & 0 & 0 & 1 & -1 & -1\\
0 & 0 & 0 & 0 & 0 & 1
\end{bheadmatrix}%
\begin{bheadmatrix}n_1\\n_2\\n_3\\n_4\\n_5\\n_6\end{bheadmatrix}
= \begin{bheadmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 100\end{bheadmatrix}
\]%
\end{document}
答案2
使用kbordermatrix
包裹:
\documentclass{book}
\usepackage{amsmath}
\usepackage{kbordermatrix}
\begin{document}
\[ \kbordermatrix{
& n_1 & n_2 & n_3 & n_4 & n_5 & n_6 \\
& 1 & -1 & 0 & 0 & 0 & 1 \\
& 0.960 & -0.977 & 0 & 0 & 0 & 0.983 \\
& 0 & 1 & -1 & -1 & 0 & 0 \\
& 0 & 0.977 & 0 & -0.983 & 0 & 0 \\
& 0 & 0 & 0 & 1 & -1 & -1 \\
& 0 & 0 & 0 & 0 & 0 & 1 \\}
\begin{bmatrix}n_1\\n_2\\n_3\\n_4\\n_5\\n_6\end{bmatrix} =
\begin{bmatrix}0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 100\end{bmatrix} \]
\end{document}