如何防止病例蔓延至多条线路

如何防止病例蔓延至多条线路

从前,有一段 4 行代码。一个孩子试图把它写成方程式(也许是个坏主意)。但无论如何,这次尝试失败了。

所讨论的代码有两个棘手的元素,使这个孩子的生活变得困难。

  1. 仅限前两行
  2. 前两行和后三行对齐,如下所示。
    在此处输入图片描述

目前代码:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
       \!\begin{aligned}
        \begin{cases}
        d_{oo} = 0, \\
        d_{ij} = min (&~d_{i-1,j-1} + (if ~a_i = b_j, \text{ then } 0 \text{, else } c_C), \\
        &~d_{i-1,j}+c_d,\\
        &~d_{i,j-1}+c_i),~ i > 0 \text{ or } j > 0 \\
        \end{cases}
        \end{aligned}
     \end{equation}
\end{document}

输出

在此处输入图片描述

问题在于只将案例应用于前两行。将案例放在\end{cases}第 2 行之后会打乱第 2、3 和 4 行的对齐

\documentclass{article}
\usepackage{amsmath}
\begin{document}
    \begin{equation}
    \!\begin{aligned}
    \begin{cases}
    d_{oo} = 0, \\
    d_{ij} = min (&~d_{i-1,j-1} + (if ~a_i = b_j, \text{ then } 0 \text{, else } c_c), \\
    \end{cases}
    &~d_{i-1,j}+c_d,\\
    &~d_{i,j-1}+c_i),~ i > 0 \text{ or } j > 0 \\
    \end{aligned}
    \end{equation}
\end{document}

在此处输入图片描述

如何获得所需的输出?没有必要使用\equation构造。欢迎使用替代方案。

答案1

我觉得原始稿件的布局不太容易理解。我建议采用以下布局。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{cases}
d_{00}=0 \\
d_{ij}=\min 
\begin{cases}
d_{i-1,j-1} + (\text{if $a_i = b_j$, then $0$ else $c_C$}) \\
d_{i-1,j}+c_d\\
d_{i,j-1}+c_i
\end{cases}
\text{if $i > 0$ or $j > 0$} 
\end{cases}
\end{equation*}
\end{document}

答案2

以下是一个选项:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\begin{document}

\begin{equation}
  \setlength{\arraycolsep}{0pt}
  \begin{array}{ r l l }
    \raisebox{\dimexpr-.5\normalbaselineskip-.5\jot}[0pt][0pt]
      {$\left\{\begin{array}{l}\mathstrut\\[\jot]\mathstrut\end{array}\right.$}
    & d_{\infty} = 0, \\[\jot]
    & d_{ij} = \min( & d_{i-1,j-1} + (\text{if } a_i = b_j \text{ then } 0 \text{ else } c_C), \\[\jot]
    &                & d_{i-1,j} + c_D, \\[\jot]
    &                & d_{i,j-1} + c_I), \quad i > 0 \text{ or } j > 0.
  \end{array}
\end{equation}

\end{document}

整个结构设置在 内array,而“case 括号”从第一行移动到位。

答案3

一种可能性是使用 Iverson 括号符号(参见Knuth 的“关于符号的两条注释”

\documentclass{article}
\usepackage{amsmath,mathtools}
\usepackage{stmaryrd}

\DeclarePairedDelimiter{\iverson}{\llbracket}{\rrbracket}

\begin{document}

\begin{equation}
  \begin{cases}
  d_{00} = 0, \\[1ex]
  d_{ij} =
    \begin{multlined}[t]
    \min (d_{i-1,j-1} + \iverson{a_i \ne b_j}c_C,d_{i-1,j}+c_D,d_{i,j-1}+c_I), \\[-1.5ex]
    \text{$i > 0$ or $j > 0$}
    \end{multlined}
  \end{cases}
\end{equation}

\end{document}

在此处输入图片描述

相关内容