You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:42