[luatex] Missing math primitive & assorted remarks
Will Robertson
wspr81 at gmail.com
Tue Jul 13 08:25:29 CEST 2010
Hi,
I know this is a little late to be reporting the problem... I just
realised that I missed documenting a maths primitive in xetexref, and
LuaTeX is also missing it.
\XeTeXmathcharnumdef is the "logical" extension to \mathchar, which
uses a single integer input to encode the fam/type/slot information.
This primitive is used where legacy code would look like:
\mathchardef\foo=\mathcode`\- % (e.g., see amsmath)
I'm not stuck on any code that needs this feature (and I think that
\omathchardef probably supports most uses anyway?) but the primitive
should probably be included in some later version of LuaTeX.
* * *
I should probably just mention that the LuaTeX manual is a little
unclear on the use of "num" variants of the primitives; they're
intended for when the mathcode information needs to be passed around as
in the example above; without the "num" primitives, you could query the
single-integer mathcode information but you couldn't do anything useful
with it.
(Not that you can do anything useful easily like break it apart to find
out what fam your using for a math char, but I don't have any good
ideas for how you'd approach doing that -- from a TeX programming
perspective, anyway.)
* * *
While I'm on the topic, I've just discovered a small difference in the
way XeTeX and LuaTeX handle the legacy "\mathcode" primitive when it is
used to query the mathcode of a character. See attached example,
compiled with both engines; the difference is that in LuaTeX, \mathcode
behaves like \Umathcodenum always, whereas in XeTeX \mathcode retains
its legacy behaviour.
I'm not sure if this causes any problems in practise (well, the reason
I discovered it is that amsmath broke in LuaLaTeX but not XeLaTeX, but
that code probably needs to be patched for unicode maths anyway) but I
just wanted to mention it in case it's not intentional.
Thanks,
Will
\ifx\directlua\undefined
\let \Umathcode\XeTeXmathcode
\let \Umathcodenum\XeTeXmathcodenum
\else
\input luaotfload.sty\relax
\let \Umathcode\luatexUmathcode
\let \Umathcodenum\luatexUmathcodenum
\fi
\def\mth{Cambria Math}
\font\4="\mth:script=math;color=FF0000" at 10pt
\textfont4=\4
\Umathcode `\( = "4 "4 "28
\showthe\mathcode`\(
\showthe\Umathcodenum`\(
$(x)$
\end
More information about the luatex
mailing list