矩阵中的第一个项目不会左对齐

矩阵中的第一个项目不会左对齐

我正在尝试在 LateX 中编写 Levenshtein 公式。但是,出现了以下问题:

\begin{equation}
    lev_{a,b}(i,j)=\left\{\begin{matrix}
    max(i,j) & if min(i,j)=0, \\ 
    min\left\{\begin{matrix}
    lev_{a,b}(i-1,j)+1\\ 
    lev_{a,b}(i,j-1)+1)\\ 
    lev_{a,b}(i-1,j-1)+1_{a_{i}\neq b_{j}})
    \end{matrix}\right. & otherwise. 
    \end{matrix}\right.
\end{equation}

文本max(i,j)将显示在其通道的中间,而不是在左侧很好地对齐,如下图所示:

max(i,j) 应该高于第一个最小值

我希望实现的是,它将max(i,j)出现在第一次出现的上方min,因此更多地出现在左括号的左边。

有人知道可以做到这一点吗?

亲切的问候!

答案1

您可以使用该array环境,其工作方式基本与tabular环境类似,但采用数学模式。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
    lev_{a,b}(i,j) = \left\{\begin{array}{ll}
    \max(i,j) & \text{if } \min(i,j)=0, \\[2mm] 
    \min\left\{ \begin{array}{l}
    lev_{a,b}(i-1,j)+1\\ 
    lev_{a,b}(i,j-1)+1\\ 
    lev_{a,b}(i-1,j-1)+1_{a_{i}\neq b_{j}}
    \end{array}\right. & \text{otherwise}. 
    \end{array}\right.
\end{equation}
\end{document}

此外,我建议将文本写成文本,即使它是在等式中,并使用命令\max并将\min这两个词都直立写为运算符。

答案2

您可以嵌套cases;两个部分之间需要有足够的空间。

\documentclass{article}
\usepackage{amsmath}

\DeclareMathOperator{\lev}{lev}

\begin{document}

\begin{equation}
\lev_{a,b}(i,j)=
\begin{cases}
\max(i,j) & \text{if $\min(i,j)=0$,} \\[2ex]
\min\begin{cases}
  \lev_{a,b}(i-1,j)+1\\
  \lev_{a,b}(i,j-1)+1)\\
  \lev_{a,b}(i-1,j-1)+1_{a_{i}\neq b_{j}})
\end{cases} & \text{otherwise.}
\end{cases}
\end{equation}

\end{document}

此外,“lev”应该被视为像\maxand 这样的操作符\log

在此处输入图片描述

不过,您可能需要考虑不同的布局。

\documentclass{article}
\usepackage{amsmath}

\DeclareMathOperator{\lev}{lev}

\begin{document}

\begin{equation}
\lev_{a,b}(i,j)=
\begin{cases}
\max(i,j) & \text{if $\min(i,j)=0$,} \\[2ex]
\begin{array}{@{}l@{}l@{}}
\min\{ & \lev_{a,b}(i-1,j)+1,\\ 
       & \lev_{a,b}(i,j-1)+1),\\ 
       & \lev_{a,b}(i-1,j-1)+1_{a_{i}\neq b_{j}})\}
\end{array} & \text{otherwise.}
\end{cases}
\end{equation}

\end{document}

在此处输入图片描述

答案3

您可以使用matrix*\mathtools` 包中定义的环境。它可以定义矩阵单元的对齐方式:

\documentclass{article}
\usepackage{mathtools}

\begin{document}
\begin{equation}
    lev_{a,b}(i,j) = \left\{
\begin{matrix*}[l]
    \max(i,j)           & \text{if } \min(i,j)=0, \\[2mm]
    \min\left\{\begin{matrix*}[l]
    lev_{a,b}(i-1,j)+1\\
    lev_{a,b}(i,j-1)+1\\
    lev_{a,b}(i-1,j-1)+1_{a_{i}\neq b_{j}}
        \end{matrix*}\right.    & \text{otherwise}.
    \end{matrix*}\right.
\end{equation}
\end{document}

在此处输入图片描述

答案4

为什么不简单地将一个cases*环境嵌套在另一个环境中cases*?我还将其定义lev为数学运算符,以罗马字符排版,并具有适当的间距。

\documentclass{article}
\usepackage{mathtools}

\DeclareMathOperator{\lev}{lev}

\begin{document}

\begin{equation}
    \lev_{a,b}(i,j) =
\begin{cases*}
    \max(i,j) & if $ \min(i,j)=0 $, \\[1ex]
    \min\begin{cases*}
    \lev_{a,b}(i-1,j)+1\\
    \lev_{a,b}(i,j-1)+1\\
    \lev_{a,b}(i-1,j-1)+1_{a_{i}\neq b_{j}}
        \end{cases*} & otherwise.
    \end{cases*}
\end{equation}

\end{document} 

在此处输入图片描述

相关内容