矩阵括号内的间距

矩阵括号内的间距

我正在尝试在矩阵的左括号后和右括号前添加额外的空格。我已使用 更改了列间距\arraycolsep,但我还希望条目右对齐。

我可以通过使用第一列使其适用于左括号\,但右对齐会在最后一列覆盖它:

\begin{vmatrix*}[r] 
    \vec{i} &   \vec{j} &   \vec{k} \ \\
    \ #1        &   #2      &   #3  \\  
    \ #4        &   #5      &   #6 
\end{vmatrix*}

我正在使用以下命令来输入该矩阵的条目:

\def\crossmatrix#1{\crossmatrixentries(#1)}
\def\crossmatrixentries(#1,#2,#3,#4,#5,#6)

我已经插入

\renewcommand\arraystretch{1.5} \arraycolsep=5pt

以帮助留出空间。然后我通过以下方式调用了矩阵

\crossmatrix{-3,-6,9,2,-7,-4}

矩阵

答案1

与其尝试修改vmatrix*环境的内部运作,不如更直接地从基本环境开始array并简单地微调一些设置。

我猜你主要关心的是垂直条和数组内容之间的间距。以下示例显示了如何调整间距。示例中使用的调整量(2mu左侧和5mu右侧)当然可以根据你的需要和喜好进行更改。(内部使用的间距vmatrix0mu两侧。)

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools,array}
\begin{document}

\begin{tabular}{l>{$}l<{$}}
\texttt{vmatrix*[r]} &
\begin{vmatrix*}[r] 
    \vec{i} &   \vec{j} &   \vec{k} \\
    -3       &  -6      &  9  \\  
    2        &  -7     &   -4
\end{vmatrix*} \\[5ex]
\texttt{array} & 
\left\lvert\begin{array}{@{\mkern3mu} rrr @{\mkern5mu}}
    \vec{i} &   \vec{j} &   \vec{k} \\
    -3       &  -6      &  9  \\  
    2        &  -7     &   -4
\end{array}\right\rvert\\
\end{tabular}

\end{document}

答案2

我最近也遇到了同样的问题。我对环境不太满意,array因为每次创建矩阵时都需要指定列数。用环境替换文档中每个矩阵实例可能非常繁琐array

因此,array我没有使用,而是深入研究了的源代码mathtools,找到了vmatrix*

\newenvironment{vmatrix*}[1][c]
  {\left\lvert\MT_matrix_begin:N #1}
  {\MT_matrix_end:\right\rvert}

这很容易覆盖。我们只需要在序言中重新定义环境,并在垂直线前后添加一些字距调整

\MHInternalSyntaxOn
\renewenvironment{vmatrix*}[1][c]
  {\left\lvert\mkern5mu\MT_matrix_begin:N #1}
  {\MT_matrix_end:\mkern5mu\right\rvert}
\MHInternalSyntaxOff

bmatrix我原本的意图是增加和vmatrix下的间距newpxmath。对于只想使用bmatrixvmatrix环境的人amsmath,你可以做类似的事情

\makeatletter
\renewenvironment{bmatrix}
{\left[\mkern3.5mu\env@matrix}
{\endmatrix\mkern3.5mu\right]}

\renewenvironment{vmatrix}
{\left\lvert\mkern5mu\env@matrix}
{\endmatrix\mkern5mu\right\rvert}
\makeatother

这是一个最小的工作示例

\documentclass{article}
\usepackage{mathtools}
\usepackage{newpxmath}

\MHInternalSyntaxOn
\renewenvironment{vmatrix*}[1][c]
  {\left\lvert\mkern5mu\MT_matrix_begin:N #1}
  {\MT_matrix_end:\mkern5mu\right\rvert}
\MHInternalSyntaxOff

\makeatletter
\renewenvironment{bmatrix}
  {\left[\mkern3.5mu\env@matrix}
  {\endmatrix\mkern3.5mu\right]}

\renewenvironment{vmatrix}
  {\left\lvert\mkern5mu\env@matrix}
  {\endmatrix\mkern5mu\right\rvert}
\makeatother

\begin{document}
\begin{align*}
  \begin{vmatrix*}[r]
    \vec{i} & \vec{j} & \vec{k} \\
    -3      & -6      & 9       \\
    2       & -7      & -4
  \end{vmatrix*} \\
  \begin{vmatrix}
    \vec{i} & \vec{j} & \vec{k} \\
    -3      & -6      & 9       \\
    2       & -7      & -4
  \end{vmatrix} \\
  \begin{bmatrix}
    \vec{i} & \vec{j} & \vec{k} \\
    -3      & -6      & 9       \\
    2       & -7      & -4
  \end{bmatrix}
\end{align*}
\end{document}

和预览 预览

答案3

我发现困难源于两件事:1)矩阵列是右对齐的,这往往会对矩阵的右侧造成很大影响;2)列可以自由地假设不等的宽度(OP 的 MWE 没有强调这个问题,但我相信选择这样做的术语会显示出额外的不平衡)。

所以我的解决方案是强制矩阵列具有相同的宽度(我可以通过使用 TABstacks 来实现),并且用 3pt 填充每个条目的右侧\kern,用相同的 填充第 1 列的左侧\kern

在下面的 MWE 中,我给出了三个例子:OP 所展示的内容;列中具有不同宽度数据的示例;以及没有任何负数的示例。

\documentclass{article}
\usepackage{tabstackengine}
\def\crossmatrix#1{\crossmatrixentries(#1)}
\def\crossmatrixentries(#1,#2,#3,#4,#5,#6){%
\fixTABwidth{T}% FIXED COLUMN WIDTH
\setstacktabbedgap{6pt}% INTERCOLUMN SPACING
\setstackgap{L}{18pt}% INTERROW BASELINESKIP
\def\>{\kern3pt}% EXTRA KERN APPLIED VARIOUSLY THROUGHOUT
 \vertMatrixstack[r]{
  \>\vec i\> & \vec j\> & \vec k\> \\
  \>#1\> & #2\> & #3\>\\
  \>#4\> & #5\> & #6\>
 }
 =
 \vertMatrixstack[r]{
  \>#2\> & #3\>\\
  \>#5\> & #6\>
 } \vec i
 -
 \vertMatrixstack[r]{
  \>#1\> & #3\>\\
  \>#4\> & #6\>
 } \vec j
 +
 \vertMatrixstack[r]{
  \>#1\> & #2\>\\
  \>#4\> & #5\>
 } \vec j
}
\begin{document}
The cross product $\vec{PQ} \times \vec{PR}$ generates the normal vector
\[
  \vec n = \crossmatrixentries(-3,-6,9,2,-7,-4)
\]
\[
  \vec n = \crossmatrixentries(-3,-63,9,2,-7,-40)
\]
\[
  \vec n = \crossmatrixentries(3,6,9,2,7,4)
\]
\end{document}

在此处输入图片描述

答案4

\,最简单、最便宜的解决方案是在矩阵中每一行的开始和结束处手动添加(或您需要的任何空间量):

\begin{vmatrix*}[r] 
\,    \vec{i} &   \vec{j} &   \vec{k} \, \\
\,    1        &   2      &   3  \, \\  
\,    4        &   5      &   6  \,
\end{vmatrix*}
\]

在此处输入图片描述

相关内容