答案1
这基本上是意料之中的,因为执行的代码pmatrix
类似于
\left(
\hspace{-\arraycolsep}
\begin{array}{*{\value{MaxMatrixCols}{c}}
<body of the matrix>
\end{array}
\hspace{-\arraycolsep}
\right)
所以如果数组为空,则只有两个\hspace{-\arraycolsep}
起作用。
使用\begin{pmatrix}\relax\end{pmatrix}
,不可扩展的令牌\relax
将启动一个数组单元,如果您不想使用更简单的()
。
例子:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
X$\begin{pmatrix}\end{pmatrix}$X
X$(\hspace{-2\arraycolsep})$X
X$\begin{pmatrix}\relax\end{pmatrix}$X
\end{document}
答案2
解决方案中的一个可能的修复方法是
\documentclass{article}
\usepackage{amsmath}
\renewenvironment{matrix}{%
\matrix@check\matrix\env@matrix
}{%
\leavevmode\endarray \hskip -\arraycolsep
}
\begin{document}
\[\begin{pmatrix} \end{pmatrix}\]
\end{document}
但总体来说并不安全,需要考虑是否有合适的守卫,你需要避免强行进入额外的一排
\[\begin{pmatrix} x\\ \end{pmatrix}\]
应该像
\[\begin{pmatrix} x \end{pmatrix}\]