\environment math-layout

\startcomponent math-alignments

\startchapter[title=Alignments and such]

\startsection[title=Using ampersands]

When you come from plain \TEX, using ampersands probably comes as a custom, like in:

\startbuffer
\startformula
\bordermatrix {
   a & b & c & d \cr
   e & f & G & h \cr
   i & j & k & l \cr
}
\stopformula
\stopbuffer

\typebuffer \getbuffer

or:

\startbuffer
\startformula
\bbordermatrix {
   a & b & c & d \cr
   e & f & G & h \cr
   i & j & k & l \cr
}
\stopformula
\stopbuffer

\typebuffer \getbuffer

A more \CONTEXT\ way is this:

\startbuffer
\startformula
\startbordermatrix
   \NC a \NC b \NC c \NC d \NR
   \NC e \NC f \NC G \NC h \NR
   \NC i \NC j \NC k \NC l \NR
\stopbordermatrix
\stopformula
\stopbuffer

\typebuffer \getbuffer

and:

\startbuffer
\startformula
\startbbordermatrix
   \NC a \NC b \NC c \NC d \NR
   \NC e \NC f \NC G \NC h \NR
   \NC i \NC j \NC k \NC l \NR
\stopbbordermatrix
\stopformula
\stopbuffer

\typebuffer \getbuffer

Just that you know. In general ampersands in \CONTEXT\ text mode are just that:
ampersands, not something alignment related.

\stopsection

\startsection[title=Locations]

The \type {location} feature gives some control over the alignment of alignments.
The following examples are taken from an email exchange with Henri Menke.

\startbuffer
\startplaceformula
  \startformula
    \startmathalignment[location=top]
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
    \stopmathalignment
    \quad\text{or}\quad
    \startmathalignment[location=center]
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
    \stopmathalignment
    \quad\text{or}\quad
    \startmathalignment[location=bottom]
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
    \stopmathalignment
  \stopformula
\stopplaceformula
\stopbuffer

\typebuffer \getbuffer

Numbering works ok for a single mathalignment

\startbuffer
\startplaceformula
  \startformula
    \startmathalignment[number=auto]
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
    \stopmathalignment
  \stopformula
\stopplaceformula
\stopbuffer

\typebuffer \getbuffer

But for one with a location the results are suboptimal:

\startbuffer
\startplaceformula
  \startformula
    \startmathalignment[location=center,number=auto]
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
      \NC a + b \NC= c + d \NR
    \stopmathalignment
  \stopformula
\stopplaceformula
\stopbuffer

\typebuffer \getbuffer

Here is a real example:

\startbuffer
\startplaceformula
  \startformula
    U_2 = \frac{1}{2!}
      \int_0^\beta \diff\tau_1 \int_0^\beta \diff\tau_2\;
      \sum_{\startsubstack k_1,q_1 \NR k_2,q_2 \stopsubstack}
      \Bigl\langle
      \startmathalignment[location=top,align=left]
        \NC
          \mathcal T \Bigl[
            c_{k_1}^\dagger (\tau_1)
            \Delta_{k_1,q_1}^r c_{-k_1}^* (\tau_1) + c_{-q_1}^T (\tau_1)
            \Delta_{k_1,q_1}^{r\dagger} c_{q_1} (\tau_1)
          \Bigr]
        \NR
        \NC
          \times \Bigl[
            c_{k_2}^\dagger(\tau_2) \Delta_{k_2,q_2}^r c_{-k_2}^*
            (\tau_2) + c_{-q_2}^T (\tau_2) \Delta_{k_2,q_2}^{r\dagger}
            c_{q_2} (\tau_2)
          \Bigr] \Bigr\rangle .
        \NR
      \stopmathalignment
  \stopformula
\stopplaceformula
\stopbuffer

\typebuffer \getbuffer

\stopsection

\startsection[title=Tuning alignments]

Again a few examples of manipulating alignments. It really helps to play
with examples if you want to get an idea what is possible.

\startbuffer
\startformula
    \startalign[m=2,align={middle}]
        \NC \text to 6cm{} \NC x = 0 \NR
    \stopalign
\stopformula

\startformula
    \startalign[m=2,align={middle}]
        \NC \text to 6cm{One\hfill}           \NC a = 1 \NR
        \NC \text to 6cm{One Two\hfill}       \NC b = 2 \NR
        \NC \text to 6cm{One Two Three\hfill} \NC c = 3 \NR
    \stopalign
\stopformula

\startformula
    \startalign[m=2,align={left}]
        \NC \text to 6cm{One\hfill}           \NC a = 1 \NR
        \NC \text to 6cm{One Two\hfill}       \NC b = 2 \NR
        \NC \text to 6cm{One Two Three\hfill} \NC c = 3 \NR
    \stopalign
\stopformula
\stopbuffer

\typebuffer \getbuffer

\startbuffer
\startformula
    \startalign[m=2,align={middle}]
        \NC \text to 6cm{} \NC x = 0 \NR
    \stopalign
\stopformula

\startformula
    \startalign[m=2,align={middle}]
        \NC \text to 6cm{One}           \NC a = 1 \NR
        \NC \text to 6cm{One Two}       \NC b = 2 \NR
        \NC \text to 6cm{One Two Three} \NC c = 3 \NR
    \stopalign
\stopformula

\startformula
    \startalign[m=2,align={left}]
        \NC \text to 6cm{One}           \NC a = 1 \NR
        \NC \text to 6cm{One Two}       \NC b = 2 \NR
        \NC \text to 6cm{One Two Three} \NC c = 3 \NR
    \stopalign
\stopformula
\stopbuffer

\typebuffer \getbuffer

\startbuffer
\startformula
    \startalign[m=2,align={middle}]
        \NC \text{} \NC x = 0 \NR
    \stopalign
\stopformula

\startformula
    \startalign[m=2,align={middle}]
        \NC \text{One}           \NC a = 1 \NR
        \NC \text{One Two}       \NC b = 2 \NR
        \NC \text{One Two Three} \NC c = 3 \NR
    \stopalign
\stopformula

\startformula
    \startalign[m=2,align={left}]
        \NC \text{One}           \NC a = 1 \NR
        \NC \text{One Two}       \NC b = 2 \NR
        \NC \text{One Two Three} \NC c = 3 \NR
    \stopalign
\stopformula
\stopbuffer

\typebuffer \getbuffer

\stopsection

\startsection[title={Splitting over pages}]

Because formula placement has positioning options a formula gets
wrapped in a box. As a consequence formulas will not break across
pages. This can be an issue with alignments. There is an experimental
option for this (the result is shown in \in {figure} [fig:splitalign]):

\startbuffer[demo]
\usemodule[art-01]
\setupbodyfont[13pt]
\starttext
  \input tufte
  \startplaceformula
    \startsplitformula
      \startalign
        \NC a \EQ b \NR[+]
        \NC   \EQ d \NR
        \NC c \EQ f \NR[+]
        \NC   \EQ g \NR
        \NC   \EQ h \NR[+]
        \dorecurse{100}{\NC \EQ i + #1 - #1\NR[+]}%
        \NC   \EQ x \NR
      \stopalign
    \stopsplitformula
  \stopplaceformula
  \input tufte
\stoptext
\stopbuffer

\typebuffer[demo]

\startplacefigure[title={Splitting an alignment.},reference=fig:splitalign]
    \startcombination[nx=4,ny=1]
      {\typesetbuffer[demo][page=1,width=\measure{combination}]} {}
      {\typesetbuffer[demo][page=2,width=\measure{combination}]} {}
      {\typesetbuffer[demo][page=3,width=\measure{combination}]} {}
      {\typesetbuffer[demo][page=4,width=\measure{combination}]} {}
    \stopcombination
\stopplacefigure

\stoptext

\stopsection

\stopchapter

\stopcomponent
