An alignment issue with begin{matrix}

It is much simpler to do that with the dedicated cases environment, or its dcases* variant defined by mathtools):

documentclass{article}
usepackage{mathtools}

begin{document}

begin{equation}
d(T,b)=begin{dcases*}
0 & if branch has been covered, \
v(d_{min}(tin T, b)) & parbox[t]{15em}{if the predicate has been executed at least twice,}\
1 & otherwise. \
end{dcases*}
end{equation}

end{document} 

enter image description here

This is only a combination of array and matrix…but the enviroment cases it is the just and correct solution.

documentclass[a4paper,12pt]{article}
usepackage{mathtools,amssymb}
 
begin{document}
begin{equation*}
   d(T,b)=left{begin{array}{lll}
      0 \ 
      v(d_{min}(tin T, b)) \
      1
    end{array}right.
    begin{matrix*}[l]
text{if branch has been covered,}  & \
text{if the predicate has been executed at least twice,}& \
text{otherwise.}
end{matrix*}
end{equation*}

end{document}

bfmsy

In order not to guess the width, you could use tabular:

documentclass{article}
usepackage{amsmath}

newcommand{btext}[1]{%
  begingrouprenewcommand{arraystretch}{1}%
  begin{tabular}[t]{@{}[email protected]{}}#1end{tabular}
  endgroup
}

begin{document}

begin{equation}
d(T,b)=
begin{cases}
  0                      & text{if branch has been covered,}\[0.5ex]
  v(d_{min}(tin T, b)) & btext{if the predicate has been \
                             executed at least twice,}\[3ex]
  1 & text{otherwise.}
end{cases}
end{equation}

end{document}

The (local) resetting of arraystretch is necessary because cases changes it. Some guessing is still needed, in order to separate the rows.

enter image description here

Leave a Comment