On 16/01/2017 08:19, David Carlisle wrote:
> On 16/01/2017 00:58, Andrew Parsloe wrote:
>> Only recently have I learnt to distinguish inline from displaystyle
>> maths mode by using \mode_if_inner:TF. It would be helpful for those of
>> us who come to expl3 programming without a good prior grounding in TeX
>> if a comment to this effect could be added to the documentation
>> (interface3.pdf).
>>
>> Andrew
>
> \mode_if_inner:TF is a wrapper around \ifinner so can't be used to
> distinguish inline from display. In fact in math \ifinner can't be used
> to detect much useful at all, the points at which tex is or is not in
> inner math mode are not usually interesting. (Unlike testing for inner
> when in vertical mode that tells you if you are in a box or on the main
> vertical list)
Indeed, one cannot be sure that display math mode will actually be used
for any 'display' anyway. See for example the strategy used by breqn:
all typesetting is done in inline math mode, using \displaystyle where
appropriate. (Display math mode is used only for obtaining the length of
the line of text immediately preceding the 'display'.)
Almost certainly you want to use \mathchoice (currently there is no
interface for this in expl3 beyond the primitive), though you might also
look at LuaTeX's additional primitives in this area if you are
considering a 'LuaTeXonly' solution.
Joseph
