最近尝试编译一些以前可以完美编译的文件,但是现在,每当我尝试使用 [] 作为选项在 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}
然而,我不建议这样做:
您可能会忘记这样做,并将相关代码复制到新文档中;
你提交的期刊的文字编辑不喜欢包含代码的文档(
\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
该\bracketMatrixstack
宏TABstackengine
支持开箱即用的右对齐。
\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}