在align*环境中使用bmatrix时的编译异常问题求助
Beamer中align*环境嵌套bmatrix的编译问题解决方案
问题重现
可编译的MWE
\documentclass{beamer} \usepackage{amsmath} \begin{document} \begin{frame} \begin{align*} A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \end{align*} \end{frame} \end{document}
不可编译的MWE(触发报错)
\documentclass{beamer} \usepackage{amsmath} \begin{document} \begin{frame} \begin{align*} B = \begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 \end{bmatrix} \end{align*} \end{frame} \end{document}
编译上述不可编译代码时,会报错:Extra alignment tab has been changed to \cr,同时Vim中\end{bmatrix}会被语法高亮标记为红色。
原因分析
align*环境会将所有&字符视为全局对齐分隔符,包括嵌套在bmatrix内部用于分隔列的&。当bmatrix内的列数较多时,align*会误判这些内部&为额外的对齐标记,而当前环境并未定义对应数量的对齐列,因此触发编译错误。Vim的LaTeX语法高亮插件也会因同样的误识别,将\end{bmatrix}标记为语法错误。
解决方案
方法1:用大括号隔离bmatrix所在表达式
将包含bmatrix的整个数学表达式用一对大括号{}包裹,让align*不再解析内部的&:
\documentclass{beamer} \usepackage{amsmath} \begin{document} \begin{frame} \begin{align*} {B = \begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 \end{bmatrix}} \end{align*} \end{frame} \end{document}
方法2:使用aligned环境嵌套(适用于多对齐场景)
如果需要在align*中设置多个对齐点,可将每个包含bmatrix的部分嵌套进aligned环境,避免对齐标记冲突:
\documentclass{beamer} \usepackage{amsmath} \begin{document} \begin{frame} \begin{align*} \begin{aligned} A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \end{aligned} &= \begin{aligned} B = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} \end{aligned} \end{align*} \end{frame} \end{document}
额外说明
解决编译问题后,Vim中\end{bmatrix}的红色高亮通常会自动消失。若仍存在高亮异常,可检查LaTeX语法高亮插件(如vim-latexsuite)的版本,更新至最新版即可修复识别问题。
内容的提问来源于stack exchange,提问作者Donut
相关产品推荐
相关产品推荐

