% language=us runpath=texruns:manuals/ontarget \startcomponent ontarget-alsomath \environment ontarget-style \startchapter[title={The curious case of \type {\over}}] Normally \TEX\ scans forward but there are a few special cases. First of all, \TEX\ is either scanning regular content or it is scanning alignments. That results in intercepts in all kind of places. When a row ends, scanning for inter|-|row actions happens. When the preamble is scanned there is some lookahead with partial expansion. This has side effects but these can be avoided in \LUAMETATEX\ by several options. Another special case is math mode. Normally curly braces indicate grouping but not in math mode: there they construct an atom, ordinary by default. Although most math constructs actually pick up some following atom, in which case we get a wrapped construct that actually is processed in a nested cal to the math processing routine. That whole has a class and although in \LUAMETATEX\ we can make atoms with a different left end right class, normally what is inside is hidden stays hidden. \footnote {We can think of optionally exposing the edge classes but although it is easy to implement we see no reason to do that now. After all, the information is actually available already via variables.} Fraction commands like \type {\over} and \type {\above} are used like this: \starttyping a + 1 \over 2 + b \stoptyping and as there can be more than for instance single digits we can do: \starttyping a + {12} \over {34} + b \stoptyping but it doesn't end there because you actually need to wrap: \starttyping a + {{12} \over {34}} + b \stoptyping If you don't do this $b$ will become part of the fraction. The curly braces here make the $12$, $34$ and the whole fraction made from them ordinary atoms. Because that also influences spacing one should be aware of side effects. \starttyping a + {{12} \over {34}} + b \stoptyping The argument of \type {simplicity} of input is easily defeated by using \starttyping a + \frac{12}{34} + b \stoptyping because it also reads sequential, is in sync with other commands like \type {\sqrt} and actually uses less tokens. It used more runtime, also because \CONTEXT\ adds plenty of control and extras but you won't notice it. Because in \CONTEXT\ we assume users to use \type {\frac} it made sense to see if we can make curly braces act like groups. In \LUAMETATEX\ we already have \type {\beginmathgroup} and \type {\endmathgroup} that provide grouping with mathstyle recovery, and by setting \type {\mathgroupingmode} to a non|-|zero value curly braces will act like these. The effects are subtle: \showmakeup[mathglue] \startbuffer $ a + { \bf x } ^ 2 + {\bf 1} + {\red 123} + \frac{1}{2} + {\scriptstyle 123} + \dd $ \stopbuffer \typebuffer \startcombination[1*2] {\scale[scale=2500]{\showmakeup[mathglue] \mathgroupingmode 0 \getbuffer}} {\type {\mathgroupingmode 0}} {\scale[scale=2500]{\showmakeup[mathglue] \mathgroupingmode 1 \getbuffer}} {\type {\mathgroupingmode 1}} \stopcombination If you see the differences you might be happy with this new trick, if not, you probably are not that much into optimal math spacing anyway and you can forget about what you just read. \stopchapter \stopcomponent