align*
are toggling formatting directives. Apparently, their action cannot be limited by using curly brackets {}
. Consequently you must issue alignc
and alignl
wherever it is relevant.
A second issue is to specify over which “zone” the alignment action is requested. That is, you must break your horizontal line into segments where alignement will be different. If you don’t break the line, alignment does not make sense because the whole line is considered. Consequently, use a matrix
so that you can have different alignments in the columns.
My suggestion is:
left lbrace { matrix {
alignc {d T} over {ds} # alignl {} = %kappa N ##
alignc {d N} over {ds} # alignl {} = - %kappa T + %tau B ##
alignc {d B} over {ds} # alignl {} = - %tau N
} } right none
You can add ~
extra spacing to the right of the =
sign to have symmetrical spacing around the sign.
PS
This trick is mentioned in the Math Guide as well as the empty {}
to fool the =
binary operator (expecting arguments on both sides).