Comprehensive TeX Archive Network

Direc­tory macros/latex/contrib/unicode-math


The UNICODE-MATH pack­age

This pack­age will pro­vide a com­plete im­ple­men­ta­tion of uni­code maths for XeLaTeX and Lua.

While I am a lit­tle wary of en­cour­ag­ing peo­ple to use this pack­age for pro­duc­tion work, I un­der­stand that it has cer­tain uses and am mak­ing it avail­able for dis­tri­bu­tion. Your test­ing and feed­back is es­sen­tial to fill in the many gaps that I miss!

Please be aware that this pack­age is un­der­go­ing con­tin­ued de­vel­op­ment and the in­ter­face and func­tion­al­ity should not be con­sid­ered com­pletely sta­ble. But the more the pack­age is used the more sta­ble it will be­come. (Things are gen­er­ally work­ing now; it is only minu­tiae that may change in the fu­ture.)

Uni­code maths is cur­rently sup­ported by the fol­low­ing freely avail­able fonts:

Th­ese fonts are avail­able un­der open source li­cences (the GUST Font Li­cense and Open Font Li­cence).

The fol­low­ing fonts are pro­pri­etary with OpenType maths sup­port:

I'm al­ways look­ing for new fonts to test with, so please let me know of any new re­leases.


Please see the PDF doc­u­men­ta­tion for full de­tails. A sim­ple be­gin­ning is:


Most math should still work af­ter this. (Let me know if it doesn't.) Fur­ther­more, it will be in a dif­fer­ent font.


As well as run­ning or Lua, this pack­age re­quires re­cent ver­sions of the fontspec, expl3, xpackages, filehook, ucharcat, and lualatex-math pack­ages.


The cur­rent re­lease ver­sion is avail­able from CTAN:


Lat­est de­vel­op­men­tal and archived his­tor­i­cal ver­sions are avail­able from Github:


Please file bug re­ports with min­i­mal ex­am­ples:



  • v0.8f (2017/08/02)
  • Emer­gency fix (thanks Bruno) for an­other bug re­vealed by expl3 up­date.
  • v0.8e (2017/07/30)
  • Add \surd to ac­cess the sqrt sym­bol.
    • Fix bug ex­posed by expl3 up­date to booleans.
    • Add Deja Vu Math Gyre in list of sym­bols.
    • Add \sime alias for \simeq and \nsimeq for \nsime. (For nega­tions it's help­ful when they have con­sis­tent nam­ing.)
  • v0.8d (2017/01/25)
  • vargreek-shape=TeX and vargreek-shape=unicode pack­age op­tions dropped; for con­sis­tency and com­pat­i­bil­ity, \phi and \epsilon should and will now be­have the same as in TeX.
    • On that note, when us­ing con­trol se­quences such as \mbfitsansvarphi (and so on), there were a few faulty def­i­ni­tions. The new be­haviour is to con­sis­tenyl de­fine the varphi and varepsilon ones as those with the "curly" de­signs.
    • Add \wideoverbar, \widebreve, \widecheck.
    • Add \mathsection, \mathparagraph.
    • Re­move \mupvarbeta, upold(Kk)oppa, \up(Ss)tigma, \up(Kk)oppa, \up(Ss)ampi — none of these are maths sym­bols.
    • ! (\mathexclam) changed from \mathpunct to \mathclose for back­wards com­pat­i­bil­ity with .
  • v0.8c (2015/09/24)
  • Add \over(left/right)harpoon as "wide" ac­cents.
    • Add RTL math­e­mat­ics op­er­a­tors \arabicmaj and \arabichad, which cor­re­spond to U+1EEF0 and U+1EEF1, resp.
    • Re­move catchfile pack­age de­pen­dency.
    • Up­date some in­ter­nal names to match ex­pl3 stan­dards.
  • v0.8b (2015/09/09)
  • Bug fix: Use the "uchar­cat" pack­age to sim­plify some code that caused some headaches with tlres­can:nn.
  • v0.8a (2015/08/06)
  • Fix bug with vert, |, (l/r)vert, etc., dis­play­ing with the wrong char­ac­ters.
  • Im­prove doc­u­men­ta­tion to prop­erly re­flect changes in v0.8 and fix some bro­ken ex­am­ples.
  • No longer re­set cat­codes of : and @ dur­ing set­math­font .
  • Fix remap­ping of al­pha­bets (needed for Min­ion Math) in cases such as:
  • v0.8 (2015/07/29) Break­ing changes in this up­date!
  • \mathrm (\mathup), \mathit, \mathbf, \mathsf, and \mathtt re­vert to their tra­di­tional mean­ings; they are set up to match their equiv­a­lent text fonts un­less specif­i­cally set us­ing \setmathrm and friends from fontspec or the new \setmathfontface in unicode-math. Th­ese com­mands should be used for multi-let­ter iden­ti­fiers.
  • New "sym­bol" com­mands have been added, \symrm (\symup), symit, ..., to re­place the be­haviour of the old com­mands. Th­ese should be used for sin­gle-let­ter iden­ti­fiers. See the pack­age doc­u­men­ta­tion for more de­tail on these and re­lated com­mands.
  • Pack­age op­tions mathit=sym, mathbf=sym, etc., re­verse the changes above to re­vert to pre-v0.8 be­haviour for \mathXYZ. Re­gard­less of pack­age op­tion, \symXYZ al­ways maps to sym­bols and \mathtextXYZ is pro­vided for the tra­di­tional \mathXYZ font switch.
  • New com­mand \setoperatorfont to set the font used for com­mands such as \sin and \cos. Usage: \setoperatorfont\mathbf or any com­mand de­fined with \setmathfontface.
  • Tra­di­tional \DeclareMathAlphabet now works again for legacy font-load­ing pack­ages.
  • Com­mands de­fined to "force" Greek let­ters with \upbeta and \itbeta, etc.
  • As­sorted bug fixes and mi­nor changes.
  • v0.7e (2014/06/30)
  • No longer as­sume fixltx2e has been loaded.
    • Some ascii math sym­bols have been re­named with a math... pre­fix, such as math­ques­tion.
    • As­sume lat­est lu­aot­fload is be­ing used; no need for a sep­a­rate uni­code-math.lua script.
    • As­sorted ty­pos and mi­nor bugs.
  • v0.7e (2013/05/04)
  • Track lu­aot­fload up­dates.
  • v0.7d (2013/03/16)
  • More ex­pl3 changes missed first time around. (Sorry again.)
  • v0.7c (2013/02/25)
  • The Latin Modern math font name changed TWICE. Only caught the first one. Sorry for any in­con­ve­nience caused.
  • v0.7b (2013/02/22)
  • Keep in sync with Latin Modern Math font name change.
    • Keep in sync with ex­pl3 changes.
  • v0.7a (2012/07/28)
  • Keep in sync with ex­pl3 changes.
  • v0.7 (2012/05/30): The Live 2012 re­lease.
  • Most changes (and all sig­nif­i­cant ones) in this re­lease thanks to Khaled Hosny, who is now cred­ited as an au­thor of the pack­age.
    • Many im­prove­ments for sup­port to take ad­van­tage of the new en­gine (v0.9998) in TL2012.
      • As a re­sult, \resetmathfont is no longer re­quired.
    • Im­prove \not to use pre-com­bined glyphs where pos­si­ble.
    • LM Math is loaded by de­fault.
    • Sup­port bot­tom ac­cents.
      • And add \wideutilde.
    • The ‘sym­bols’ doc­u­ment is some­what bet­ter or­gan­ised and con­tains in­for­ma­tion on whether a sym­bol is de­fined in plain or amssymb.
    • Var­i­ous other mi­nor fixes and ad­di­tions:
      • \underleftrightarrow added for fonts that sup­port it.
        • Don’t over­write math­tool’s \overbracket and \underbracket.
        • Bug in [range=...] pars­ing fixed.
        • Add \longdivision.
        • Add \lgroup and \rgroup.
        • Fix ‘mous­tache’ de­lim­iters.
        • \openbox re­named to \mathvisiblespace, since it is al­ready de­fined in am­sthm as an empty box.
  • v0.6a (2011/09/19)
  • Al­ways a bug that slips through the cracks! Fixes \left. and \right.
    • Add ex­per­i­men­tal pack­age op­tion warnings-off=... which al­lows warn­ings to be sup­pressed on an in­di­vid­ual ba­sis.
  • v0.6 (2011/09/18)
  • Keep in sync with fontspec in­ter­nals (sorry for the small de­lay where things were bro­ken)
    • Keep in sync with ex­pl3 dep­re­cated func­tions
    • Math ver­sions (fi­nally) im­ple­mented; can now change maths fonts mid-doc­u­ment with­out reini­tial­is­ing ev­ery­thing (thanks to Ul­rike Fis­cher and Ul­rik Vi­eth)
    • Sym­bols file unimath-symbols.pdf now uses maths ver­sions to com­pare all of the OpenType maths fonts I cur­rently have ac­cess to
    • Over- and un­der- braces, brack­ets, and paren­the­ses now work in (thanks to Clau­dio Bec­cari)
    • Many in­ter­nal changes, in­clud­ing a re-write of the range fea­ture; it should now be faster and more ro­bust
    • Ten­ta­tive pro­gram­mer's in­ter­face for query­ing the cur­rent math style: \l_um_mathstyle_tl.
    • Re­move (out­dated) in­ter­ac­tion with beamer; you must spec­ify professionalfonts man­u­ally for now
    • Qui­eten the con­sole out­put when load­ing maths fonts with in­com­plete maths style cov­er­age
    • Synonym added: \lnot -> \neg
    • Two added Uni­code sym­bols (names ten­ta­tive): \blanksymbol and \openbox (thanks to Apos­to­los Sy­ropou­los)
    • Fixed lit­eral sub-/su­per-script in­put.
  • v0.5e (2011/07/31)
  • Fix for­ward com­pat­i­bil­ity clash with dep­re­cated ex­pl3 func­tions (sorry)
    • Com­mand names are now \protected; this makes them safe to use in mov­ing ar­gu­ments and so on
    • Sim­i­larly to the change in v0.5c, the main math font is now loaded in math fam­ily zero (equiv. to 's operators math font)
    • \mathring added
    • En­sure that a math font has been se­lected in or­der to pre­vent prob­lems in min­i­mal doc­u­ments (this will be un­nec­es­sary when the OpenType LM math font is re­leased)
    • Doc­u­men­ta­tion for which was which of ep­silon/varep­silon was back­wards! (thank to Ras­mus Ville­moes for point­ing this out)
    • Spu­ri­ous \upUpsilon re­moved (the one at U+03A5 is now the cor­rect one)
    • Typo when defin­ing \dprime fixed (thanks to Ul­rik Vi­eth for these last two)
    • Fix the math class of \modtwosum; it is now a large op­er­a­tor (thanks to Michael Um­mels)
    • Move sev­eral Lua-re­lated patches to the lualatex-math pack­age
    • Fixed math­tool's \cramped in XeLaTeX us­age
  • v0.5d (2011/01/30)
  • As­sorted im­prove­ments to Lua sup­port, in­clud­ing non-grow­ing ac­cents avail­able in Lua v0.65 and later
    • Im­proved be­haviour with read­ing and us­ing maths font di­men­sions
    • Bet­ter com­pat­i­bil­ity with legacy maths pack­ages and en­vi­ron­ments (al­ways more worked needed, though)
    • Fix the de­fault set­ting for "var­greek-shape"
  • v0.5c (2010/09/27)
  • Fix a long-stand­ing bug in XeLaTeX in which the "mas­ter" math fam­i­lies 2 and 3 weren't be­ing set; hence frac­tion rules and many other pa­ram­e­ters were not be­ing set cor­rectly
    • Stay in sync with in­ter­nal fontspec changes
  • v0.5b (2010/09/19): Tune-up
  • Added miss­ing sym­bols/syn­onyms: di­a­mond small­int emp­ty­set hbar back­ep­silon eth
    • over­line works for Lua
    • Fix slash; pre­vi­ously, it over­wrote the text def­i­ni­tion
    • var­tri­an­gle now has the cor­rect math class
  • v0.5a (2010/07/14): Live 2010 re­lease
  • Numer­ous doc­u­men­ta­tion im­prove­ments
    • Bug fix against stray cat­code changes
    • Add \mathcal and \mathbfcal as dis­tinct from the Script style; these are only sup­ported by the XITS fonts at present
    • Small changes to the range of sym­bols of­fered (es­pe­cially note that \ac is now \invlazys to avoid acronym pack­age clash)
    • Su­per­scripts are al­lowed af­ter primes (as they should be)
    • Numer­ous Lua im­prove­ments, in­clud­ing roots and over/un­der braces.
  • v0.5 (2010/06/03): Ini­tial CTAN re­lease


The uni­code-math pack­age may be mod­i­fied and dis­tributed un­der the terms and con­di­tions of the Project Public Li­cense, ver­sion 1.3c or greater.

This work is au­thor-main­tained and con­sists of the files

  • uni­code-math.dtx,
  • uni­code-math-ta­ble.tex,
  • uni­math-ex­am­ple.ltx,
  • uni­math-sym­bols.ltx,
  • uni­code-math-test­suite.ltx;

the de­rived files

  • uni­code-math.lua,
  • uni­code-math.sty;

the com­piled doc­u­men­ta­tion files

  • uni­code-math.pdf,
  • uni­math-ex­am­ple.pdf,
  • uni­math-sym­bols.pdf;

and the test suite for this pack­age

  • test­files/umtest-pream­ble.tex,
  • test­files/.(lvt|tlg).

Copy­right 2006-2017 Will Robert­son <will.robert­son@la­tex-project.org> Copy­right 2010-2013 Philipp Stephani <stphilipp@ya­hoo.de> Copy­right 2012-2015 Khaled Hosny <khaled­hosny@eglug.org>

Down­load the con­tents of this pack­age in one zip archive (2.0M).

uni­code-math – Uni­code math­e­mat­ics sup­port for and Lua

This pack­age will pro­vide a com­plete im­ple­men­ta­tion of uni­code maths for XeLaTeX and Lua.

Uni­code maths is cur­rently sup­ported by the fol­low­ing fonts:

As well as run­ning or Lua, this pack­age re­quires re­cent ver­sions of the fontspec, ex­pl3, xpack­ages, file­hook, uchar­cat and lu­ala­tex-math pack­ages.

Ver­sion0.8f 2017-08-02
Li­cense The Project Public Li­cense 1.3c
Main­tainerKhaled Hosny
Will Robert­son
TDS archiveunicode-math.tds.zip
Con­tained inTeX Live as uni­code-math
MiKTeX as uni­code-math
Topics font se­lec­tion, map­ping, etc.
sup­port for type­set­ting math­e­mat­ics
Uni­code, ma­te­rial sup­port­ing it, and pack­ages re­quir­ing it
Lua and pack­ages that re­quire it
, ma­te­rial sup­port­ing it, and pack­ages re­quir­ing it
Guest Book Sitemap Contact Contact Author