从前,有一段 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), \\
&~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}