On 16/10/2015 08:47, Ulrike Fischer wrote:
> Am Thu, 15 Oct 2015 18:18:58 +0100 schrieb David Carlisle:
> 
>>> or perhaps \Umathcharnumdef was always ok ?
>>
>> yes, it was, the Umath... commands were always available with their
>> basic luatex names and also prefixed luatex.
> 
> That's not true. In a texlive 2012
> 
> \documentclass{article}
> 
> \begin{document}
> \show\Umathcharnumdef
> \show\luatexUmathcharnumdef
> \end{document}
> 
> gives
> 
>> \Umathcharnumdef=undefined.
> l.36 \show\Umathcharnumdef
> 
> ?
>> \luatexUmathcharnumdef=\Umathcharnumdef.
> l.37 \show\luatexUmathcharnumdef

For LuaTeX

    \directlua{
      local i
      local t = { }
      for _,i in pairs(tex.extraprimitives("luatex")) do
        if string.match(i, "^U") then
          table.insert(t, i)
        end
      end
      tex.enableprimitives("", tex.extraprimitives("Umath"))
      tex.enableprimitives("", t)
    }

will enable all of the \U... primitives with their 'natural names with
older LuaTeX releases and newer ones: they used to be just part of the
"luatex" list. So something like

    \ifdefined\directlua
      \directlua{
        local i
        local t = { }
        for _,i in pairs(tex.extraprimitives("luatex")) do
          if string.match(i,"^U") then
            table.insert(t,i)
          end
        end
        tex.enableprimitives("", tex.extraprimitives("Umath"))
        tex.enableprimitives("", t)
      }
    \else
      \ifdefined\XeTeXmathcode
        \let\Umathcode\XeTeXmathcode
        \let\Umathcodenum\XeTeXmathcodenum
        \let\Umathchar\XeTeXmathchar
        \let\Umathcharnum\XeTeXmathcharnum
        \let\Umathchardef\XeTeXmathchardef
        \let\Umathcharnumdef\XeTeXmathcharnumdef
        \let\Udelcode\XeTeXdelcode
        \let\Udelcodenum\XeTeXdelcodenum
        \let\Udelimiter\XeTeXdelimiter
        \let\Umathaccent\XeTeXmathaccent
        \let\Uradical\XeTeXradical
      \fi
    \fi

should get you \U... with all possible supported engines.

Joseph

Reply via email to