我正在尝试编写自定义命令,以便更快地写入 2x2 矩阵,而无需array
每次需要时都使用它。输出效果很好,但由于矩阵将成为更大表的一部分,因此最好通过删除数组内容上方和下方添加的一些不需要的垂直空间来最小化高度。
此外,下面的结果显示矩阵本身和分数线之间的距离非常小。对于远处的人来说,可能看起来好像矩阵和分数线之间没有任何分隔。
\documentclass{book}
\usepackage{mathtools}
\newcommand{\abs}[1]{\left| #1 \right|}
\newcommand{\matTwoByTwo}[4]{
\renewcommand{\arraystretch}{1}
\begin{array}{@{\thinspace}c @{\thinspace\thinspace\thinspace}c@{\thinspace}}
#1 & #2
\\
#3 & #4
\end{array}
}
\newcommand{\matTwoByTwoAbs}[4]{
\abs{\matTwoByTwo{#1}{#2}{#3}{#4}}
}
\begin{document}
\begin{equation}
\frac{\matTwoByTwoAbs{a_{4}}{a_{2}}{a_{3}}{a_{1}}}{a_{3}}
\end{equation}
\end{document}
答案1
请注意,这里有几件事在起作用,首先,数组本身内有空白,这是由每行中添加的支柱造成的(因此,大写字母的数组与小写字母的数组具有相同的行高,如果全部是小写字母,则会在数组上方留下空间)。然后是其行为\left\right
(在设置的范围内\delimtershortfall
扩展\delimiterfactor
以覆盖高度和深度,但始终垂直居中因此您无法影响分别显示的两个长度,如果增加规则的深度,那么高度也会增加。
我认为这里只需为最后一行添加一点深度就足够了,如第二个例子所示。
\documentclass{book}
\usepackage{mathtools}
\show\arraystretch
\newcommand{\abs}[1]{\left| #1 \right|}
\newcommand{\matTwoByTwo}[4]{{% extra group
\renewcommand{\arraystretch}{1}% this is the default anyway
\begin{array}{@{\thinspace}c @{\thinspace\thinspace\thinspace}c@{\thinspace}}
#1 & #2
\\
#3 & #4
\end{array}%
}}
\newcommand{\matTwoByTwoB}[4]{{% extra group
\begin{array}{@{\thinspace}c @{\thinspace\thinspace\thinspace}c@{\thinspace}}
#1 & #2
\\
#3 & #4\\[2pt]
\end{array}%
}}
\newcommand{\matTwoByTwoAbs}[4]{%
\abs{\matTwoByTwo{#1}{#2}{#3}{#4}}
}
\newcommand{\matTwoByTwoAbsB}[4]{%
\abs{\matTwoByTwoB{#1}{#2}{#3}{#4}}
}
\begin{document}
\begin{equation}
\frac{\matTwoByTwoAbs{a_{4}}{a_{2}}{a_{3}}{a_{1}}}{a_{3}}
\frac{\matTwoByTwoAbsB{a_{4}}{a_{2}}{a_{3}}{a_{1}}}{a_{3}}
\end{equation}
\end{document}