是否不再支持使用 bmatrix (或者 pmatrix,或者...) 的右对齐 [r]?

是否不再支持使用 bmatrix (或者 pmatrix,或者...) 的右对齐 [r]?

最近尝试编译一些以前可以完美编译的文件,但是现在,每当我尝试使用 [] 作为选项在 bmatrix 内对齐元素(pmatrix、Vmatrix 等也是如此)时,都会生成错误。

在 MWE(下面)中,我尝试右对齐矩阵的元素。错误(对于此示例)不会导致 LaTeX(Win 10 下的 MikTeX)出现问题,但在 MWE 下方生成的输出(随附示例)中显然存在错误。

那么,bmatrix 之类的对齐选项是否不再受支持(即 [c]、[l] 或 [r])?如果是,那肯定是我需要在某处实现语法更改。如果不是,那从这里开始到底该怎么做?在我的某些文件中,我有很多这些类型的矩阵,我更需要找出这个问题的解决方案。

  \documentclass[11pt,letterpaper,oneside]{article}

  \usepackage[dvips,top=1.2in,bottom=0.65in,left=1.15in,right=1.15in,includefoot]{geometry}

  \usepackage{amsmath}
  \usepackage{mathtools}

  \begin{document}

  Here is some code that used to compile without error:

   \[
      \begin{bmatrix}[r]
       1 &  2 &  1 \\
       0 & -2 & -3 \\
       0 & 3 &  -2
      \end{bmatrix}
   \]

 \end{document}

如果您编译了 MWE(上面),这就是生成的内容(至少在我这边)——algin right 的 [r] 没有被解析为 bmatrix 的选项 - 相反,[r] 现在嵌入在矩阵本身中(这不是期望的结果)。

提前感谢...

在此处输入图片描述

答案1

语法\begin{bmatrix}[r]绝不已得到支持。

你可能在某处找到了改变定义的代码,以bmatrix接受可选参数。这并不难。你只需要在序言中添加

\makeatletter
\renewcommand{\env@matrix}[1][c]{%
  \hskip-\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{*\c@MaxMatrixCols #1}%
}
\makeatother

完整示例

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\renewcommand{\env@matrix}[1][c]{%
  \hskip-\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{*\c@MaxMatrixCols #1}%
}
\makeatother

\begin{document}

\[
\begin{bmatrix} 1 \\ 22 \\ 333 \end{bmatrix}
\qquad
\begin{bmatrix}[r] 1 \\ 22 \\ 333 \end{bmatrix}
\]

\end{document}

在此处输入图片描述

然而,我不建议这样做:

  1. 您可能会忘记这样做,并将相关代码复制到新文档中;

  2. 你提交的期刊的文字编辑不喜欢包含代码的文档(\makeatletter并且\makeatother他们非常好理由)。

加载mathtools并使用预定义bmatrix*环境。

\documentclass{article}
\usepackage{amsmath,mathtools}

\begin{document}

\[
\begin{bmatrix} 1 \\ 22 \\ 333 \end{bmatrix}
\qquad
\begin{bmatrix*}[r] 1 \\ 22 \\ 333 \end{bmatrix*}
\]

\end{document}

重新定义现有环境并不是大错,本身,但需要更有力的理由,特别是如果标准包中已经有解决方案的话。

答案2

\bracketMatrixstackTABstackengine支持开箱即用的右对齐。

\documentclass[11pt,letterpaper,oneside]{article}

\usepackage[dvips,top=1.2in,bottom=0.65in,left=1.15in,right=1.15in,includefoot]{geometry}

\usepackage{tabstackengine}
\TABstackMath
\usepackage{mathtools}
\begin{document}
   \[
      \setstacktabbedgap{1.5ex}
      \bracketMatrixstack[r]{
       1 &  2 &  1 \\
       0 & -2 & -3 \\
       0 & 3 &  -2
      }
   \]
\end{document}

在此处输入图片描述

相关内容