summaryrefslogtreecommitdiff
path: root/docs/xslt/db2latex-xsl/xsl/mathml
diff options
context:
space:
mode:
authorAlexander Bokovoy <ab@samba.org>2007-11-27 15:47:55 +0000
committerGerald W. Carter <jerry@samba.org>2008-04-23 08:47:40 -0500
commit0a6fea6796e0da0d5c8690c851f2723e4b385ba7 (patch)
tree18a0bf743f818490dbbce188b06796d4f1d3eec4 /docs/xslt/db2latex-xsl/xsl/mathml
parent754a2e1494f14fd5d0f157b0f0eada0d13fb80c0 (diff)
downloadsamba-0a6fea6796e0da0d5c8690c851f2723e4b385ba7.tar.gz
samba-0a6fea6796e0da0d5c8690c851f2723e4b385ba7.tar.bz2
samba-0a6fea6796e0da0d5c8690c851f2723e4b385ba7.zip
Embed db2latex as interim solution before migration to dblatex
(This used to be commit 166c61077bc5c6ca238865f71687369ad7c35a07)
Diffstat (limited to 'docs/xslt/db2latex-xsl/xsl/mathml')
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsa.ent173
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsb.ent146
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsc.ent49
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsn.ent117
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamso.ent77
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsr.ent205
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isobox.ent67
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr1.ent94
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr2.ent53
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isodia.ent41
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk1.ent75
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk2.ent46
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk3.ent70
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk4.ent69
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat1.ent89
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat2.ent148
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isomfrk.ent79
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isomopf.ent53
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isomscr.ent79
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isonum.ent103
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isopub.ent111
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/isotech.ent183
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlalias.ent529
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlextra.ent134
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.dtd7
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.xml12
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.constsymb.mod.xsl101
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.functions.mod.xsl750
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.mod.xsl99
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.token.mod.xsl232
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/mathml.mod.xsl48
-rw-r--r--docs/xslt/db2latex-xsl/xsl/mathml/mathml.presentation.mod.xsl493
32 files changed, 4532 insertions, 0 deletions
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsa.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsa.ent
new file mode 100644
index 0000000000..5ecf4db216
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsa.ent
@@ -0,0 +1,173 @@
+
+<!--
+ File isoamsa.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY angzarr "&#x0237C;" ><!--angle with down zig-zag arrow -->
+<!ENTITY cirmid "&#x02AEF;" ><!--circle, mid below -->
+<!ENTITY cudarrl "&#x02938;" ><!--left, curved, down arrow -->
+<!ENTITY cudarrr "&#x02935;" ><!--right, curved, down arrow -->
+<!ENTITY cularr "&#x021B6;" ><!--/curvearrowleft A: left curved arrow -->
+<!ENTITY cularrp "&#x0293D;" ><!--curved left arrow with plus -->
+<!ENTITY curarr "&#x021B7;" ><!--/curvearrowright A: rt curved arrow -->
+<!ENTITY curarrm "&#x0293C;" ><!--curved right arrow with minus -->
+<!ENTITY dArr "&#x021D3;" ><!--/Downarrow A: down dbl arrow -->
+<!ENTITY Darr "&#x021A1;" ><!--down two-headed arrow -->
+<!ENTITY ddarr "&#x021CA;" ><!--/downdownarrows A: two down arrows -->
+<!ENTITY DDotrahd "&#x02911;" ><!--right arrow with dotted stem -->
+<!ENTITY dfisht "&#x0297F;" ><!--down fish tail -->
+<!ENTITY dHar "&#x02965;" ><!--down harpoon-left, down harpoon-right -->
+<!ENTITY dharl "&#x021C3;" ><!--/downharpoonleft A: dn harpoon-left -->
+<!ENTITY dharr "&#x021C2;" ><!--/downharpoonright A: down harpoon-rt -->
+<!ENTITY duarr "&#x021F5;" ><!--down arrow, up arrow -->
+<!ENTITY duhar "&#x0296F;" ><!--down harp, up harp -->
+<!ENTITY dzigrarr "&#x021DD;" ><!--right long zig-zag arrow -->
+<!ENTITY erarr "&#x02971;" ><!--equal, right arrow below -->
+<!ENTITY harr "&#x02194;" ><!--/leftrightarrow A: l&r arrow -->
+<!ENTITY hArr "&#x021D4;" ><!--/Leftrightarrow A: l&r dbl arrow -->
+<!ENTITY harrcir "&#x02948;" ><!--left and right arrow with a circle -->
+<!ENTITY harrw "&#x021AD;" ><!--/leftrightsquigarrow A: l&r arr-wavy -->
+<!ENTITY hoarr "&#x021FF;" ><!--horizontal open arrow -->
+<!ENTITY imof "&#x022B7;" ><!--image of -->
+<!ENTITY lAarr "&#x021DA;" ><!--/Lleftarrow A: left triple arrow -->
+<!ENTITY Larr "&#x0219E;" ><!--/twoheadleftarrow A: -->
+<!ENTITY larrbfs "&#x0291F;" ><!--left arrow-bar, filled square -->
+<!ENTITY larrfs "&#x0291D;" ><!--left arrow, filled square -->
+<!ENTITY larrhk "&#x021A9;" ><!--/hookleftarrow A: left arrow-hooked -->
+<!ENTITY larrlp "&#x021AB;" ><!--/looparrowleft A: left arrow-looped -->
+<!ENTITY larrpl "&#x02939;" ><!--left arrow, plus -->
+<!ENTITY larrsim "&#x02973;" ><!--left arrow, similar -->
+<!ENTITY larrtl "&#x021A2;" ><!--/leftarrowtail A: left arrow-tailed -->
+<!ENTITY latail "&#x02919;" ><!--left arrow-tail -->
+<!ENTITY lAtail "&#x0291B;" ><!--left double arrow-tail -->
+<!ENTITY lbarr "&#x0290C;" ><!--left broken arrow -->
+<!ENTITY lBarr "&#x0290E;" ><!--left doubly broken arrow -->
+<!ENTITY ldca "&#x02936;" ><!--left down curved arrow -->
+<!ENTITY ldrdhar "&#x02967;" ><!--left harpoon-down over right harpoon-down -->
+<!ENTITY ldrushar "&#x0294B;" ><!--left-down-right-up harpoon -->
+<!ENTITY ldsh "&#x021B2;" ><!--left down angled arrow -->
+<!ENTITY lfisht "&#x0297C;" ><!--left fish tail -->
+<!ENTITY lHar "&#x02962;" ><!--left harpoon-up over left harpoon-down -->
+<!ENTITY lhard "&#x021BD;" ><!--/leftharpoondown A: l harpoon-down -->
+<!ENTITY lharu "&#x021BC;" ><!--/leftharpoonup A: left harpoon-up -->
+<!ENTITY lharul "&#x0296A;" ><!--left harpoon-up over long dash -->
+<!ENTITY llarr "&#x021C7;" ><!--/leftleftarrows A: two left arrows -->
+<!ENTITY llhard "&#x0296B;" ><!--left harpoon-down below long dash -->
+<!ENTITY loarr "&#x021FD;" ><!--left open arrow -->
+<!ENTITY lrarr "&#x021C6;" ><!--/leftrightarrows A: l arr over r arr -->
+<!ENTITY lrhar "&#x021CB;" ><!--/leftrightharpoons A: l harp over r -->
+<!ENTITY lrhard "&#x0296D;" ><!--right harpoon-down below long dash -->
+<!ENTITY lsh "&#x021B0;" ><!--/Lsh A: -->
+<!ENTITY lurdshar "&#x0294A;" ><!--left-up-right-down harpoon -->
+<!ENTITY luruhar "&#x02966;" ><!--left harpoon-up over right harpoon-up -->
+<!ENTITY map "&#x021A6;" ><!--/mapsto A: -->
+<!ENTITY Map "&#x02905;" ><!--twoheaded mapsto -->
+<!ENTITY midcir "&#x02AF0;" ><!--mid, circle below -->
+<!ENTITY mumap "&#x022B8;" ><!--/multimap A: -->
+<!ENTITY nearhk "&#x02924;" ><!--NE arrow-hooked -->
+<!ENTITY nearr "&#x02197;" ><!--/nearrow A: NE pointing arrow -->
+<!ENTITY neArr "&#x021D7;" ><!--NE pointing dbl arrow -->
+<!ENTITY nesear "&#x02928;" ><!--/toea A: NE & SE arrows -->
+<!ENTITY nharr "&#x021AE;" ><!--/nleftrightarrow A: not l&r arrow -->
+<!ENTITY nhArr "&#x021CE;" ><!--/nLeftrightarrow A: not l&r dbl arr -->
+<!ENTITY nlarr "&#x0219A;" ><!--/nleftarrow A: not left arrow -->
+<!ENTITY nlArr "&#x021CD;" ><!--/nLeftarrow A: not implied by -->
+<!ENTITY nrarr "&#x0219B;" ><!--/nrightarrow A: not right arrow -->
+<!ENTITY nrArr "&#x021CF;" ><!--/nRightarrow A: not implies -->
+<!ENTITY nrarrc "&#x02933;&#x00338;" ><!--not right arrow-curved -->
+<!ENTITY nrarrw "&#x0219D;&#x00338;" ><!--not right arrow-wavy -->
+<!ENTITY nvHarr "&#x021CE;" ><!--not, vert, left and right double arrow -->
+<!ENTITY nvlArr "&#x021CD;" ><!--not, vert, left double arrow -->
+<!ENTITY nvrArr "&#x021CF;" ><!--not, vert, right double arrow -->
+<!ENTITY nwarhk "&#x02923;" ><!--NW arrow-hooked -->
+<!ENTITY nwarr "&#x02196;" ><!--/nwarrow A: NW pointing arrow -->
+<!ENTITY nwArr "&#x021D6;" ><!--NW pointing dbl arrow -->
+<!ENTITY nwnear "&#x02927;" ><!--NW & NE arrows -->
+<!ENTITY olarr "&#x021BA;" ><!--/circlearrowleft A: l arr in circle -->
+<!ENTITY orarr "&#x021BB;" ><!--/circlearrowright A: r arr in circle -->
+<!ENTITY origof "&#x022B6;" ><!--original of -->
+<!ENTITY rAarr "&#x021DB;" ><!--/Rrightarrow A: right triple arrow -->
+<!ENTITY Rarr "&#x021A0;" ><!--/twoheadrightarrow A: -->
+<!ENTITY rarrap "&#x02975;" ><!--approximate, right arrow above -->
+<!ENTITY rarrbfs "&#x02920;" ><!--right arrow-bar, filled square -->
+<!ENTITY rarrc "&#x02933;" ><!--right arrow-curved -->
+<!ENTITY rarrfs "&#x0291E;" ><!--right arrow, filled square -->
+<!ENTITY rarrhk "&#x021AA;" ><!--/hookrightarrow A: rt arrow-hooked -->
+<!ENTITY rarrlp "&#x021AC;" ><!--/looparrowright A: rt arrow-looped -->
+<!ENTITY rarrpl "&#x02945;" ><!--right arrow, plus -->
+<!ENTITY rarrsim "&#x02974;" ><!--right arrow, similar -->
+<!ENTITY rarrtl "&#x021A3;" ><!--/rightarrowtail A: rt arrow-tailed -->
+<!ENTITY Rarrtl "&#x02916;" ><!--right two-headed arrow with tail -->
+<!ENTITY rarrw "&#x021DD;" ><!--/rightsquigarrow A: rt arrow-wavy -->
+<!ENTITY ratail "&#x021A3;" ><!--right arrow-tail -->
+<!ENTITY rAtail "&#x0291C;" ><!--right double arrow-tail -->
+<!ENTITY rbarr "&#x0290D;" ><!--/bkarow A: right broken arrow -->
+<!ENTITY rBarr "&#x0290F;" ><!--/dbkarow A: right doubly broken arrow -->
+<!ENTITY RBarr "&#x02910;" ><!--/drbkarow A: twoheaded right broken arrow -->
+<!ENTITY rdca "&#x02937;" ><!--right down curved arrow -->
+<!ENTITY rdldhar "&#x02969;" ><!--right harpoon-down over left harpoon-down -->
+<!ENTITY rdsh "&#x021B3;" ><!--right down angled arrow -->
+<!ENTITY rfisht "&#x0297D;" ><!--right fish tail -->
+<!ENTITY rHar "&#x02964;" ><!--right harpoon-up over right harpoon-down -->
+<!ENTITY rhard "&#x021C1;" ><!--/rightharpoondown A: rt harpoon-down -->
+<!ENTITY rharu "&#x021C0;" ><!--/rightharpoonup A: rt harpoon-up -->
+<!ENTITY rharul "&#x0296C;" ><!--right harpoon-up over long dash -->
+<!ENTITY rlarr "&#x021C4;" ><!--/rightleftarrows A: r arr over l arr -->
+<!ENTITY rlhar "&#x021CC;" ><!--/rightleftharpoons A: r harp over l -->
+<!ENTITY roarr "&#x021FE;" ><!--right open arrow -->
+<!ENTITY rrarr "&#x021C9;" ><!--/rightrightarrows A: two rt arrows -->
+<!ENTITY rsh "&#x021B1;" ><!--/Rsh A: -->
+<!ENTITY ruluhar "&#x02968;" ><!--right harpoon-up over left harpoon-up -->
+<!ENTITY searhk "&#x02925;" ><!--/hksearow A: SE arrow-hooken -->
+<!ENTITY searr "&#x02198;" ><!--/searrow A: SE pointing arrow -->
+<!ENTITY seArr "&#x021D8;" ><!--SE pointing dbl arrow -->
+<!ENTITY seswar "&#x02929;" ><!--/tosa A: SE & SW arrows -->
+<!ENTITY simrarr "&#x02972;" ><!--similar, right arrow below -->
+<!ENTITY slarr "&#x02190;&#x02063;" ><!--short left arrow -->
+<!ENTITY srarr "&#x02192;&#x02063;" ><!--short right arrow -->
+<!ENTITY swarhk "&#x02926;" ><!--/hkswarow A: SW arrow-hooked -->
+<!ENTITY swarr "&#x02199;" ><!--/swarrow A: SW pointing arrow -->
+<!ENTITY swArr "&#x021D9;" ><!--SW pointing dbl arrow -->
+<!ENTITY swnwar "&#x0292A;" ><!--SW & NW arrows -->
+<!ENTITY uArr "&#x021D1;" ><!--/Uparrow A: up dbl arrow -->
+<!ENTITY Uarr "&#x0219F;" ><!--up two-headed arrow -->
+<!ENTITY Uarrocir "&#x02949;" ><!--up two-headed arrow above circle -->
+<!ENTITY udarr "&#x021C5;" ><!--up arrow, down arrow -->
+<!ENTITY udhar "&#x0296E;" ><!--up harp, down harp -->
+<!ENTITY ufisht "&#x0297E;" ><!--up fish tail -->
+<!ENTITY uHar "&#x02963;" ><!--up harpoon-left, up harpoon-right -->
+<!ENTITY uharl "&#x021BF;" ><!--/upharpoonleft A: up harpoon-left -->
+<!ENTITY uharr "&#x021BE;" ><!--/upharpoonright /restriction A: up harp-r -->
+<!ENTITY uuarr "&#x021C8;" ><!--/upuparrows A: two up arrows -->
+<!ENTITY varr "&#x02195;" ><!--/updownarrow A: up&down arrow -->
+<!ENTITY vArr "&#x021D5;" ><!--/Updownarrow A: up&down dbl arrow -->
+<!ENTITY xharr "&#x02194;" ><!--/longleftrightarrow A: long l&r arr -->
+<!ENTITY xhArr "&#x021D4;" ><!--/Longleftrightarrow A: long l&r dbl arr -->
+<!ENTITY xlarr "&#x02190;" ><!--/longleftarrow A: long left arrow -->
+<!ENTITY xlArr "&#x021D0;" ><!--/Longleftarrow A: long l dbl arrow -->
+<!ENTITY xmap "&#x021A6;" ><!--/longmapsto A: -->
+<!ENTITY xrarr "&#x02192;" ><!--/longrightarrow A: long right arrow -->
+<!ENTITY xrArr "&#x021D2;" ><!--/Longrightarrow A: long rt dbl arr -->
+<!ENTITY zigrarr "&#x021DD;" ><!--right zig-zag arrow -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsb.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsb.ent
new file mode 100644
index 0000000000..08e646c2bd
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsb.ent
@@ -0,0 +1,146 @@
+
+<!--
+ File isoamsb.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ac "&#x0290F;" ><!--most positive -->
+<!ENTITY acE "&#x029DB;" ><!--most positive, two lines below -->
+<!ENTITY amalg "&#x02A3F;" ><!--/amalg B: amalgamation or coproduct -->
+<!ENTITY barvee "&#x022BD;" ><!--bar, vee -->
+<!ENTITY barwed "&#x022BC;" ><!--/barwedge B: logical and, bar above -->
+<!ENTITY Barwed "&#x02306;" ><!--/doublebarwedge B: log and, dbl bar above -->
+<!ENTITY bsolb "&#x029C5;" ><!--reverse solidus in square -->
+<!ENTITY Cap "&#x022D2;" ><!--/Cap /doublecap B: dbl intersection -->
+<!ENTITY capand "&#x02A44;" ><!--intersection, and -->
+<!ENTITY capbrcup "&#x02A49;" ><!--intersection, bar, union -->
+<!ENTITY capcap "&#x02A4B;" ><!--intersection, intersection, joined -->
+<!ENTITY capcup "&#x02A47;" ><!--intersection above union -->
+<!ENTITY capdot "&#x02A40;" ><!--intersection, with dot -->
+<!ENTITY caps "&#x02229;&#x02063;" ><!--intersection, serifs -->
+<!ENTITY ccaps "&#x02A4D;" ><!--closed intersection, serifs -->
+<!ENTITY ccups "&#x02A4C;" ><!--closed union, serifs -->
+<!ENTITY ccupssm "&#x02A50;" ><!--closed union, serifs, smash product -->
+<!ENTITY coprod "&#x02210;" ><!--/coprod L: coproduct operator -->
+<!ENTITY Cup "&#x022D3;" ><!--/Cup /doublecup B: dbl union -->
+<!ENTITY cupbrcap "&#x02A48;" ><!--union, bar, intersection -->
+<!ENTITY cupcap "&#x02A46;" ><!--union above intersection -->
+<!ENTITY cupcup "&#x02A4A;" ><!--union, union, joined -->
+<!ENTITY cupdot "&#x0228D;" ><!--union, with dot -->
+<!ENTITY cupor "&#x02A45;" ><!--union, or -->
+<!ENTITY cups "&#x0222A;&#x02063;" ><!--union, serifs -->
+<!ENTITY cuvee "&#x022CE;" ><!--/curlyvee B: curly logical or -->
+<!ENTITY cuwed "&#x022CF;" ><!--/curlywedge B: curly logical and -->
+<!ENTITY dagger "&#x02020;" ><!--/dagger B: dagger relation -->
+<!ENTITY Dagger "&#x02021;" ><!--/ddagger B: double dagger relation -->
+<!ENTITY diam "&#x022C4;" ><!--/diamond B: open diamond -->
+<!ENTITY divonx "&#x022C7;" ><!--/divideontimes B: division on times -->
+<!ENTITY eplus "&#x02A71;" ><!--equal, plus -->
+<!ENTITY hercon "&#x022B9;" ><!--hermitian conjugate matrix -->
+<!ENTITY intcal "&#x022BA;" ><!--/intercal B: intercal -->
+<!ENTITY iprod "&#x02A3C;" ><!--/intprod -->
+<!ENTITY loplus "&#x02A2D;" ><!--plus sign in left half circle -->
+<!ENTITY lotimes "&#x02A34;" ><!--multiply sign in left half circle -->
+<!ENTITY lthree "&#x022CB;" ><!--/leftthreetimes B: -->
+<!ENTITY ltimes "&#x022C9;" ><!--/ltimes B: times sign, left closed -->
+<!ENTITY midast "&#x0002A;" ><!--/ast B: asterisk -->
+<!ENTITY minusb "&#x0229F;" ><!--/boxminus B: minus sign in box -->
+<!ENTITY minusd "&#x02238;" ><!--/dotminus B: minus sign, dot above -->
+<!ENTITY minusdu "&#x02A2A;" ><!--minus sign, dot below -->
+<!ENTITY ncap "&#x02A43;" ><!--bar, intersection -->
+<!ENTITY ncup "&#x02A42;" ><!--bar, union -->
+<!ENTITY oast "&#x0229B;" ><!--/circledast B: asterisk in circle -->
+<!ENTITY ocir "&#x0229A;" ><!--/circledcirc B: small circle in circle -->
+<!ENTITY odash "&#x0229D;" ><!--/circleddash B: hyphen in circle -->
+<!ENTITY odiv "&#x02A38;" ><!--divide in circle -->
+<!ENTITY odot "&#x02299;" ><!--/odot B: middle dot in circle -->
+<!ENTITY odsold "&#x029BC;" ><!--dot, solidus, dot in circle -->
+<!ENTITY ofcir "&#x029BF;" ><!--filled circle in circle -->
+<!ENTITY ogt "&#x029C1;" ><!--greater-than in circle -->
+<!ENTITY ohbar "&#x029B5;" ><!--circle with horizontal bar -->
+<!ENTITY olcir "&#x029BE;" ><!--large circle in circle -->
+<!ENTITY olt "&#x029C0;" ><!--less-than in circle -->
+<!ENTITY omid "&#x029B6;" ><!--vertical bar in circle -->
+<!ENTITY ominus "&#x02296;" ><!--/ominus B: minus sign in circle -->
+<!ENTITY opar "&#x029B7;" ><!--parallel in circle -->
+<!ENTITY operp "&#x029B9;" ><!--perpendicular in circle -->
+<!ENTITY oplus "&#x02295;" ><!--/oplus B: plus sign in circle -->
+<!ENTITY osol "&#x02298;" ><!--/oslash B: solidus in circle -->
+<!ENTITY otimes "&#x02297;" ><!--/otimes B: multiply sign in circle -->
+<!ENTITY Otimes "&#x02A37;" ><!--multiply sign in double circle -->
+<!ENTITY otimesas "&#x02A36;" ><!--multiply sign in circle, circumflex accent -->
+<!ENTITY ovbar "&#x0233D;" ><!--circle with vertical bar -->
+<!ENTITY plusacir "&#x02A23;" ><!--plus, circumflex accent above -->
+<!ENTITY plusb "&#x0229E;" ><!--/boxplus B: plus sign in box -->
+<!ENTITY pluscir "&#x02A22;" ><!--plus, small circle above -->
+<!ENTITY plusdo "&#x02214;" ><!--/dotplus B: plus sign, dot above -->
+<!ENTITY plusdu "&#x02A25;" ><!--plus sign, dot below -->
+<!ENTITY pluse "&#x02A72;" ><!--plus, equals -->
+<!ENTITY plussim "&#x02A26;" ><!--plus, similar below -->
+<!ENTITY plustwo "&#x02A27;" ><!--plus, two; Nim-addition -->
+<!ENTITY prod "&#x0220F;" ><!--/prod L: product operator -->
+<!ENTITY race "&#x029DA;" ><!--reverse most positive, line below -->
+<!ENTITY roplus "&#x02A2E;" ><!--plus sign in right half circle -->
+<!ENTITY rotimes "&#x02A35;" ><!--multiply sign in right half circle -->
+<!ENTITY rthree "&#x022CC;" ><!--/rightthreetimes B: -->
+<!ENTITY rtimes "&#x022CA;" ><!--/rtimes B: times sign, right closed -->
+<!ENTITY sdot "&#x022C5;" ><!--/cdot B: small middle dot -->
+<!ENTITY sdotb "&#x022A1;" ><!--/dotsquare /boxdot B: small dot in box -->
+<!ENTITY setmn "&#x02216;" ><!--/setminus B: reverse solidus -->
+<!ENTITY simplus "&#x02A24;" ><!--plus, similar above -->
+<!ENTITY smashp "&#x02A33;" ><!--smash product -->
+<!ENTITY solb "&#x029C4;" ><!--solidus in square -->
+<!ENTITY sqcap "&#x02293;" ><!--/sqcap B: square intersection -->
+<!ENTITY sqcaps "&#x02293;&#x02063;" ><!--square intersection, serifs -->
+<!ENTITY sqcup "&#x02294;" ><!--/sqcup B: square union -->
+<!ENTITY sqcups "&#x02294;&#x02063;" ><!--square union, serifs -->
+<!ENTITY ssetmn "&#x02216;" ><!--/smallsetminus B: sm reverse solidus -->
+<!ENTITY sstarf "&#x022C6;" ><!--/star B: small star, filled -->
+<!ENTITY subdot "&#x02ABD;" ><!--subset, with dot -->
+<!ENTITY sum "&#x02211;" ><!--/sum L: summation operator -->
+<!ENTITY supdot "&#x02ABE;" ><!--superset, with dot -->
+<!ENTITY timesb "&#x022A0;" ><!--/boxtimes B: multiply sign in box -->
+<!ENTITY timesbar "&#x02A31;" ><!--multiply sign, bar below -->
+<!ENTITY timesd "&#x02A30;" ><!--times, dot -->
+<!ENTITY tridot "&#x025EC;" ><!--dot in triangle -->
+<!ENTITY triminus "&#x02A3A;" ><!--minus in triangle -->
+<!ENTITY triplus "&#x02A39;" ><!--plus in triangle -->
+<!ENTITY trisb "&#x029CD;" ><!--triangle, serifs at bottom -->
+<!ENTITY tritime "&#x02A3B;" ><!--multiply in triangle -->
+<!ENTITY uplus "&#x0228E;" ><!--/uplus B: plus sign in union -->
+<!ENTITY veebar "&#x022BB;" ><!--/veebar B: logical or, bar below -->
+<!ENTITY wedbar "&#x02A5F;" ><!--wedge, bar below -->
+<!ENTITY wreath "&#x02240;" ><!--/wr B: wreath product -->
+<!ENTITY xcap "&#x022C2;" ><!--/bigcap L: intersection operator -->
+<!ENTITY xcirc "&#x025EF;" ><!--/bigcirc B: large circle -->
+<!ENTITY xcup "&#x022C3;" ><!--/bigcup L: union operator -->
+<!ENTITY xdtri "&#x025BD;" ><!--/bigtriangledown B: big dn tri, open -->
+<!ENTITY xodot "&#x02299;" ><!--/bigodot L: circle dot operator -->
+<!ENTITY xoplus "&#x02295;" ><!--/bigoplus L: circle plus operator -->
+<!ENTITY xotime "&#x02297;" ><!--/bigotimes L: circle times operator -->
+<!ENTITY xsqcup "&#x02294;" ><!--/bigsqcup L: square union operator -->
+<!ENTITY xuplus "&#x0228E;" ><!--/biguplus L: -->
+<!ENTITY xutri "&#x025B3;" ><!--/bigtriangleup B: big up tri, open -->
+<!ENTITY xvee "&#x022C1;" ><!--/bigvee L: logical and operator -->
+<!ENTITY xwedge "&#x022C0;" ><!--/bigwedge L: logical or operator -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsc.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsc.ent
new file mode 100644
index 0000000000..cce399cf9d
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsc.ent
@@ -0,0 +1,49 @@
+
+<!--
+ File isoamsc.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY dlcorn "&#x0231E;" ><!--/llcorner O: lower left corner -->
+<!ENTITY drcorn "&#x0231F;" ><!--/lrcorner C: lower right corner -->
+<!ENTITY gtlPar "&#x02995;" ><!--dbl left parenthesis, greater -->
+<!ENTITY langd "&#x02991;" ><!--left angle, dot -->
+<!ENTITY lbrke "&#x0298B;" ><!--left bracket, equal -->
+<!ENTITY lbrksld "&#x0298F;" ><!--left bracket, solidus bottom corner -->
+<!ENTITY lbrkslu "&#x0298D;" ><!--left bracket, solidus top corner -->
+<!ENTITY lceil "&#x02308;" ><!--/lceil O: left ceiling -->
+<!ENTITY lfloor "&#x0230A;" ><!--/lfloor O: left floor -->
+<!ENTITY lmoust "&#x02998;" ><!--/lmoustache -->
+<!ENTITY lparlt "&#x02993;" ><!--O: left parenthesis, lt -->
+<!ENTITY ltrPar "&#x02996;" ><!--dbl right parenthesis, less -->
+<!ENTITY rangd "&#x02992;" ><!--right angle, dot -->
+<!ENTITY rbrke "&#x0298C;" ><!--right bracket, equal -->
+<!ENTITY rbrksld "&#x0298E;" ><!--right bracket, solidus bottom corner -->
+<!ENTITY rbrkslu "&#x02990;" ><!--right bracket, solidus top corner -->
+<!ENTITY rceil "&#x02309;" ><!--/rceil C: right ceiling -->
+<!ENTITY rfloor "&#x0230B;" ><!--/rfloor C: right floor -->
+<!ENTITY rmoust "&#x02997;" ><!--/rmoustache -->
+<!ENTITY rpargt "&#x02994;" ><!--C: right paren, gt -->
+<!ENTITY ulcorn "&#x0231C;" ><!--/ulcorner O: upper left corner -->
+<!ENTITY urcorn "&#x0231D;" ><!--/urcorner C: upper right corner -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsn.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsn.ent
new file mode 100644
index 0000000000..cddeba066e
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsn.ent
@@ -0,0 +1,117 @@
+
+<!--
+ File isoamsn.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY gnap "&#x02A8A;" ><!--/gnapprox N: greater, not approximate -->
+<!ENTITY gne "&#x02269;" ><!--/gneq N: greater, not equals -->
+<!ENTITY gnE "&#x02269;" ><!--/gneqq N: greater, not dbl equals -->
+<!ENTITY gnsim "&#x022E7;" ><!--/gnsim N: greater, not similar -->
+<!ENTITY gvnE "&#x02269;&#x00338;" ><!--/gvertneqq N: gt, vert, not dbl eq -->
+<!ENTITY lnap "&#x02A89;" ><!--/lnapprox N: less, not approximate -->
+<!ENTITY lne "&#x02268;" ><!--/lneq N: less, not equals -->
+<!ENTITY lnE "&#x02268;" ><!--/lneqq N: less, not double equals -->
+<!ENTITY lnsim "&#x022E6;" ><!--/lnsim N: less, not similar -->
+<!ENTITY lvnE "&#x02268;&#x00338;" ><!--/lvertneqq N: less, vert, not dbl eq -->
+<!ENTITY nap "&#x02249;" ><!--/napprox N: not approximate -->
+<!ENTITY napE "&#x02A70;&#x00338;" ><!--not approximately equal or equal to -->
+<!ENTITY napid "&#x0224B;&#x00338;" ><!--not approximately identical to -->
+<!ENTITY ncong "&#x02247;" ><!--/ncong N: not congruent with -->
+<!ENTITY ncongdot "&#x02A6D;&#x00338;" ><!--not congruent, dot -->
+<!ENTITY nequiv "&#x02262;" ><!--/nequiv N: not identical with -->
+<!ENTITY nge "&#x02271;&#x020E5;" ><!--/ngeq N: not greater-than-or-equal -->
+<!ENTITY ngE "&#x02271;" ><!--/ngeqq N: not greater, dbl equals -->
+<!ENTITY nges "&#x02271;" ><!--/ngeqslant N: not gt-or-eq, slanted -->
+<!ENTITY nGg "&#x022D9;&#x00338;" ><!--not triple greater than -->
+<!ENTITY ngsim "&#x02275;" ><!--not greater, similar -->
+<!ENTITY ngt "&#x0226F;" ><!--/ngtr N: not greater-than -->
+<!ENTITY nGt "&#x0226B;&#x00338;" ><!--not, vert, much greater than -->
+<!ENTITY nGtv "&#x0226B;&#x00338;&#x02063;" ><!--not much greater than, variant -->
+<!ENTITY nle "&#x02270;&#x020E5;" ><!--/nleq N: not less-than-or-equal -->
+<!ENTITY nlE "&#x02270;" ><!--/nleqq N: not less, dbl equals -->
+<!ENTITY nles "&#x02270;" ><!--/nleqslant N: not less-or-eq, slant -->
+<!ENTITY nLl "&#x022D8;&#x00338;" ><!--not triple less than -->
+<!ENTITY nlsim "&#x02274;" ><!--not less, similar -->
+<!ENTITY nlt "&#x0226E;" ><!--/nless N: not less-than -->
+<!ENTITY nLt "&#x0226A;&#x00338;" ><!--not, vert, much less than -->
+<!ENTITY nltri "&#x022EA;" ><!--/ntriangleleft N: not left triangle -->
+<!ENTITY nltrie "&#x022EC;" ><!--/ntrianglelefteq N: not l tri, eq -->
+<!ENTITY nLtv "&#x0226A;&#x00338;&#x02063;" ><!--not much less than, variant -->
+<!ENTITY nmid "&#x02224;" ><!--/nmid -->
+<!ENTITY npar "&#x02226;" ><!--/nparallel N: not parallel -->
+<!ENTITY npr "&#x02280;" ><!--/nprec N: not precedes -->
+<!ENTITY nprcue "&#x022E0;" ><!--not curly precedes, eq -->
+<!ENTITY npre "&#x02AAF;&#x00338;" ><!--/npreceq N: not precedes, equals -->
+<!ENTITY nrtri "&#x022EB;" ><!--/ntriangleright N: not rt triangle -->
+<!ENTITY nrtrie "&#x022ED;" ><!--/ntrianglerighteq N: not r tri, eq -->
+<!ENTITY nsc "&#x02281;" ><!--/nsucc N: not succeeds -->
+<!ENTITY nsccue "&#x022E1;" ><!--not succeeds, curly eq -->
+<!ENTITY nsce "&#x02AB0;&#x00338;" ><!--/nsucceq N: not succeeds, equals -->
+<!ENTITY nsim "&#x02241;" ><!--/nsim N: not similar -->
+<!ENTITY nsime "&#x02244;" ><!--/nsimeq N: not similar, equals -->
+<!ENTITY nsmid "&#x02224;&#x02063;" ><!--/nshortmid -->
+<!ENTITY nspar "&#x02226;&#x02063;" ><!--/nshortparallel N: not short par -->
+<!ENTITY nsqsube "&#x022E2;" ><!--not, square subset, equals -->
+<!ENTITY nsqsupe "&#x022E3;" ><!--not, square superset, equals -->
+<!ENTITY nsub "&#x02284;" ><!--not subset -->
+<!ENTITY nsube "&#x02288;" ><!--/nsubseteq N: not subset, equals -->
+<!ENTITY nsubE "&#x02288;" ><!--/nsubseteqq N: not subset, dbl eq -->
+<!ENTITY nsup "&#x02285;" ><!--not superset -->
+<!ENTITY nsupe "&#x02289;" ><!--/nsupseteq N: not superset, equals -->
+<!ENTITY nsupE "&#x02289;" ><!--/nsupseteqq N: not superset, dbl eq -->
+<!ENTITY ntgl "&#x02279;" ><!--not greater, less -->
+<!ENTITY ntlg "&#x02278;" ><!--not less, greater -->
+<!ENTITY nvap "&#x02249;&#x00338;" ><!--not, vert, approximate -->
+<!ENTITY nvdash "&#x022AC;" ><!--/nvdash N: not vertical, dash -->
+<!ENTITY nvDash "&#x022AD;" ><!--/nvDash N: not vertical, dbl dash -->
+<!ENTITY nVdash "&#x022AE;" ><!--/nVdash N: not dbl vertical, dash -->
+<!ENTITY nVDash "&#x022AF;" ><!--/nVDash N: not dbl vert, dbl dash -->
+<!ENTITY nvge "&#x02271;" ><!--not, vert, greater-than-or-equal -->
+<!ENTITY nvgt "&#x0226F;" ><!--not, vert, greater-than -->
+<!ENTITY nvle "&#x02270;" ><!--not, vert, less-than-or-equal -->
+<!ENTITY nvlt "&#x0226E;" ><!--not, vert, less-than -->
+<!ENTITY nvltrie "&#x022EC;&#x00338;" ><!--not, vert, left triangle, equals -->
+<!ENTITY nvrtrie "&#x022ED;&#x00338;" ><!--not, vert, right triangle, equals -->
+<!ENTITY nvsim "&#x02241;&#x00338;" ><!--not, vert, similar -->
+<!ENTITY parsim "&#x02AF3;" ><!--parallel, similar -->
+<!ENTITY prnap "&#x022E8;" ><!--/precnapprox N: precedes, not approx -->
+<!ENTITY prnE "&#x02AB5;" ><!--/precneqq N: precedes, not dbl eq -->
+<!ENTITY prnsim "&#x022E8;" ><!--/precnsim N: precedes, not similar -->
+<!ENTITY rnmid "&#x02AEE;" ><!--reverse /nmid -->
+<!ENTITY scnap "&#x022E9;" ><!--/succnapprox N: succeeds, not approx -->
+<!ENTITY scnE "&#x02AB6;" ><!--/succneqq N: succeeds, not dbl eq -->
+<!ENTITY scnsim "&#x022E9;" ><!--/succnsim N: succeeds, not similar -->
+<!ENTITY simne "&#x02246;" ><!--similar, not equals -->
+<!ENTITY solbar "&#x0233F;" ><!--solidus, bar through -->
+<!ENTITY subne "&#x0228A;" ><!--/subsetneq N: subset, not equals -->
+<!ENTITY subnE "&#x0228A;" ><!--/subsetneqq N: subset, not dbl eq -->
+<!ENTITY supne "&#x0228B;" ><!--/supsetneq N: superset, not equals -->
+<!ENTITY supnE "&#x0228B;" ><!--/supsetneqq N: superset, not dbl eq -->
+<!ENTITY vnsub "&#x02284;" ><!--/nsubset N: not subset, var -->
+<!ENTITY vnsup "&#x02285;" ><!--/nsupset N: not superset, var -->
+<!ENTITY vsubne "&#x0228A;&#x02063;" ><!--/varsubsetneq N: subset, not eq, var -->
+<!ENTITY vsubnE "&#x0228A;&#x02063;" ><!--/varsubsetneqq N: subset not dbl eq, var -->
+<!ENTITY vsupne "&#x0228B;&#x02063;" ><!--/varsupsetneq N: superset, not eq, var -->
+<!ENTITY vsupnE "&#x0228B;&#x02063;" ><!--/varsupsetneqq N: super not dbl eq, var -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamso.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamso.ent
new file mode 100644
index 0000000000..8ac4bdb619
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamso.ent
@@ -0,0 +1,77 @@
+
+<!--
+ File isoamso.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ang "&#x02220;" ><!--/angle - angle -->
+<!ENTITY ange "&#x029A4;" ><!--angle, equal -->
+<!ENTITY angmsd "&#x02221;" ><!--/measuredangle - angle-measured -->
+<!ENTITY angmsdaa "&#x029A8;" ><!--angle-measured, arrow, up, right -->
+<!ENTITY angmsdab "&#x029A9;" ><!--angle-measured, arrow, up, left -->
+<!ENTITY angmsdac "&#x029AA;" ><!--angle-measured, arrow, down, right -->
+<!ENTITY angmsdad "&#x029AB;" ><!--angle-measured, arrow, down, left -->
+<!ENTITY angmsdae "&#x029AC;" ><!--angle-measured, arrow, right, up -->
+<!ENTITY angmsdaf "&#x029AD;" ><!--angle-measured, arrow, left, up -->
+<!ENTITY angmsdag "&#x029AE;" ><!--angle-measured, arrow, right, down -->
+<!ENTITY angmsdah "&#x029AF;" ><!--angle-measured, arrow, left, down -->
+<!ENTITY angrtvb "&#x0299D;&#x02063;" ><!--right angle-measured -->
+<!ENTITY angrtvbd "&#x0299D;" ><!--right angle-measured, dot -->
+<!ENTITY bbrk "&#x023B5;" ><!--bottom square bracket -->
+<!ENTITY bemptyv "&#x029B0;" ><!--reversed circle, slash -->
+<!ENTITY beth "&#x02136;" ><!--/beth - beth, Hebrew -->
+<!ENTITY boxbox "&#x029C9;" ><!--two joined squares -->
+<!ENTITY bprime "&#x02035;" ><!--/backprime - reverse prime -->
+<!ENTITY bsemi "&#x0204F;" ><!--reverse semi-colon -->
+<!ENTITY cemptyv "&#x029B2;" ><!--circle, slash, small circle above -->
+<!ENTITY cirE "&#x029C3;" ><!--circle, two horizontal stroked to the right -->
+<!ENTITY cirscir "&#x029C2;" ><!--circle, small circle to the right -->
+<!ENTITY comp "&#x02201;" ><!--/complement - complement sign -->
+<!ENTITY daleth "&#x02138;" ><!--/daleth - daleth, Hebrew -->
+<!ENTITY demptyv "&#x029B1;" ><!--circle, slash, bar above -->
+<!ENTITY ell "&#x02113;" ><!--/ell - cursive small l -->
+<!ENTITY empty "&#x02205;&#x02063;" ><!--/emptyset - zero, slash -->
+<!ENTITY emptyv "&#x02205;" ><!--/varnothing - circle, slash -->
+<!ENTITY gimel "&#x02137;" ><!--/gimel - gimel, Hebrew -->
+<!ENTITY iiota "&#x02129;" ><!--inverted iota -->
+<!ENTITY image "&#x02111;" ><!--/Im - imaginary -->
+<!ENTITY imath "&#x00131;" ><!--/imath - small i, no dot -->
+<!ENTITY jmath "&#x0006A;&#x02063;" ><!--/jmath - small j, no dot -->
+<!ENTITY laemptyv "&#x029B4;" ><!--circle, slash, left arrow above -->
+<!ENTITY lltri "&#x025FA;" ><!--lower left triangle -->
+<!ENTITY lrtri "&#x022BF;" ><!--lower right triangle -->
+<!ENTITY mho "&#x02127;" ><!--/mho - conductance -->
+<!ENTITY nang "&#x02220;&#x00338;" ><!--not, vert, angle -->
+<!ENTITY nexist "&#x02204;" ><!--/nexists - negated exists -->
+<!ENTITY oS "&#x024C8;" ><!--/circledS - capital S in circle -->
+<!ENTITY plank "&#x0210F;" ><!--/hbar - Planck's over 2pi -->
+<!ENTITY plankv "&#x0210F;" ><!--/hslash - variant Planck's over 2pi -->
+<!ENTITY raemptyv "&#x029B3;" ><!--circle, slash, right arrow above -->
+<!ENTITY range "&#x029A5;" ><!--reverse angle, equal -->
+<!ENTITY real "&#x0211C;" ><!--/Re - real -->
+<!ENTITY tbrk "&#x023B4;" ><!--top square bracket -->
+<!ENTITY ultri "&#x025F8;" ><!--upper left triangle -->
+<!ENTITY urtri "&#x025F9;" ><!--upper right triangle -->
+<!ENTITY vzigzag "&#x0299A;" ><!--vertical zig-zag line -->
+<!ENTITY weierp "&#x02118;" ><!--/wp - Weierstrass p -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsr.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsr.ent
new file mode 100644
index 0000000000..7fec582555
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isoamsr.ent
@@ -0,0 +1,205 @@
+
+<!--
+ File isoamsr.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ape "&#x0224A;" ><!--/approxeq R: approximate, equals -->
+<!ENTITY apE "&#x0224A;" ><!--approximately equal or equal to -->
+<!ENTITY apid "&#x0224B;" ><!--approximately identical to -->
+<!ENTITY asymp "&#x0224D;" ><!--/asymp R: asymptotically equal to -->
+<!ENTITY Barv "&#x02AE7;" ><!--vert, dbl bar (over) -->
+<!ENTITY bcong "&#x0224C;" ><!--/backcong R: reverse congruent -->
+<!ENTITY bepsi "&#x0213C;" ><!--/backepsilon R: such that -->
+<!ENTITY bowtie "&#x022C8;" ><!--/bowtie R: -->
+<!ENTITY bsim "&#x0223D;" ><!--/backsim R: reverse similar -->
+<!ENTITY bsime "&#x022CD;" ><!--/backsimeq R: reverse similar, eq -->
+<!ENTITY bsolhsub "&#x0005C;&#x02282;" ><!--reverse solidus, subset -->
+<!ENTITY bump "&#x0224E;" ><!--/Bumpeq R: bumpy equals -->
+<!ENTITY bumpe "&#x0224F;" ><!--/bumpeq R: bumpy equals, equals -->
+<!ENTITY bumpE "&#x02AAE;" ><!--bump, equals -->
+<!ENTITY cire "&#x02257;" ><!--/circeq R: circle, equals -->
+<!ENTITY Colon "&#x02237;" ><!--/Colon, two colons -->
+<!ENTITY colone "&#x02254;" ><!--/coloneq R: colon, equals -->
+<!ENTITY Colone "&#x02A74;" ><!--double colon, equals -->
+<!ENTITY congdot "&#x02A6D;" ><!--congruent, dot -->
+<!ENTITY csub "&#x02ACF;" ><!--subset, closed -->
+<!ENTITY csube "&#x02AD1;" ><!--subset, closed, equals -->
+<!ENTITY csup "&#x02AD0;" ><!--superset, closed -->
+<!ENTITY csupe "&#x02AD2;" ><!--superset, closed, equals -->
+<!ENTITY cuepr "&#x022DE;" ><!--/curlyeqprec R: curly eq, precedes -->
+<!ENTITY cuesc "&#x022DF;" ><!--/curlyeqsucc R: curly eq, succeeds -->
+<!ENTITY dashv "&#x022A3;" ><!--/dashv R: dash, vertical -->
+<!ENTITY Dashv "&#x02AE4;" ><!--dbl dash, vertical -->
+<!ENTITY easter "&#x0225B;" ><!--equal, asterisk above -->
+<!ENTITY ecir "&#x02256;" ><!--/eqcirc R: circle on equals sign -->
+<!ENTITY ecolon "&#x02255;" ><!--/eqcolon R: equals, colon -->
+<!ENTITY eDDot "&#x02A77;" ><!--/ddotseq R: equal with four dots -->
+<!ENTITY eDot "&#x02251;" ><!--/doteqdot /Doteq R: eq, even dots -->
+<!ENTITY efDot "&#x02252;" ><!--/fallingdotseq R: eq, falling dots -->
+<!ENTITY eg "&#x02A9A;" ><!--equal-or-greater -->
+<!ENTITY egs "&#x022DD;" ><!--/eqslantgtr R: equal-or-gtr, slanted -->
+<!ENTITY egsdot "&#x02A98;" ><!--equal-or-greater, slanted, dot inside -->
+<!ENTITY el "&#x02A99;" ><!--equal-or-less -->
+<!ENTITY els "&#x022DC;" ><!--/eqslantless R: eq-or-less, slanted -->
+<!ENTITY elsdot "&#x02A97;" ><!--equal-or-less, slanted, dot inside -->
+<!ENTITY equest "&#x0225F;" ><!--/questeq R: equal with questionmark -->
+<!ENTITY equivDD "&#x02A78;" ><!--equivalent, four dots above -->
+<!ENTITY erDot "&#x02253;" ><!--/risingdotseq R: eq, rising dots -->
+<!ENTITY esdot "&#x02250;" ><!--/doteq R: equals, single dot above -->
+<!ENTITY esim "&#x02242;" ><!--/esim R: equals, similar -->
+<!ENTITY Esim "&#x02A73;" ><!--equal, similar -->
+<!ENTITY fork "&#x022D4;" ><!--/pitchfork R: pitchfork -->
+<!ENTITY forkv "&#x02AD9;" ><!--fork, variant -->
+<!ENTITY frown "&#x02322;" ><!--/frown R: down curve -->
+<!ENTITY gap "&#x02273;" ><!--/gtrapprox R: greater, approximate -->
+<!ENTITY gE "&#x02267;" ><!--/geqq R: greater, double equals -->
+<!ENTITY gel "&#x022DB;" ><!--/gtreqless R: greater, equals, less -->
+<!ENTITY gEl "&#x022DB;" ><!--/gtreqqless R: gt, dbl equals, less -->
+<!ENTITY ges "&#x02A7E;" ><!--/geqslant R: gt-or-equal, slanted -->
+<!ENTITY gescc "&#x02AA9;" ><!--greater than, closed by curve, equal, slanted -->
+<!ENTITY gesdot "&#x02A80;" ><!--greater-than-or-equal, slanted, dot inside -->
+<!ENTITY gesdoto "&#x02A82;" ><!--greater-than-or-equal, slanted, dot above -->
+<!ENTITY gesdotol "&#x02A84;" ><!--greater-than-or-equal, slanted, dot above left -->
+<!ENTITY gesl "&#x022DB;&#x02063;" ><!--greater, equal, slanted, less -->
+<!ENTITY gesles "&#x02A94;" ><!--greater, equal, slanted, less, equal, slanted -->
+<!ENTITY Gg "&#x022D9;" ><!--/ggg /Gg /gggtr R: triple gtr-than -->
+<!ENTITY gl "&#x02277;" ><!--/gtrless R: greater, less -->
+<!ENTITY gla "&#x02AA5;" ><!--greater, less, apart -->
+<!ENTITY glE "&#x02A92;" ><!--greater, less, equal -->
+<!ENTITY glj "&#x02AA4;" ><!--greater, less, overlapping -->
+<!ENTITY gsim "&#x02273;" ><!--/gtrsim R: greater, similar -->
+<!ENTITY gsime "&#x02A8E;" ><!--greater, similar, equal -->
+<!ENTITY gsiml "&#x02A90;" ><!--greater, similar, less -->
+<!ENTITY Gt "&#x0226B;" ><!--/gg R: dbl greater-than sign -->
+<!ENTITY gtcc "&#x02AA7;" ><!--greater than, closed by curve -->
+<!ENTITY gtcir "&#x02A7A;" ><!--greater than, circle inside -->
+<!ENTITY gtdot "&#x022D7;" ><!--/gtrdot R: greater than, with dot -->
+<!ENTITY gtquest "&#x02A7C;" ><!--greater than, questionmark above -->
+<!ENTITY gtrarr "&#x02978;" ><!--greater than, right arrow -->
+<!ENTITY homtht "&#x0223B;" ><!--homothetic -->
+<!ENTITY lap "&#x02272;" ><!--/lessapprox R: less, approximate -->
+<!ENTITY lat "&#x02AAB;" ><!--larger than -->
+<!ENTITY late "&#x02AAD;" ><!--larger than or equal -->
+<!ENTITY lates "&#x02AAD;&#x02063;" ><!--larger than or equal, slanted -->
+<!ENTITY lE "&#x02266;" ><!--/leqq R: less, double equals -->
+<!ENTITY leg "&#x022DA;" ><!--/lesseqgtr R: less, eq, greater -->
+<!ENTITY lEg "&#x022DA;" ><!--/lesseqqgtr R: less, dbl eq, greater -->
+<!ENTITY les "&#x02A7D;" ><!--/leqslant R: less-than-or-eq, slant -->
+<!ENTITY lescc "&#x02AA8;" ><!--less than, closed by curve, equal, slanted -->
+<!ENTITY lesdot "&#x02A7F;" ><!--less-than-or-equal, slanted, dot inside -->
+<!ENTITY lesdoto "&#x02A81;" ><!--less-than-or-equal, slanted, dot above -->
+<!ENTITY lesdotor "&#x02A83;" ><!--less-than-or-equal, slanted, dot above right -->
+<!ENTITY lesg "&#x022DA;&#x02063;" ><!--less, equal, slanted, greater -->
+<!ENTITY lesges "&#x02A93;" ><!--less, equal, slanted, greater, equal, slanted -->
+<!ENTITY lg "&#x02276;" ><!--/lessgtr R: less, greater -->
+<!ENTITY lgE "&#x02A91;" ><!--less, greater, equal -->
+<!ENTITY Ll "&#x022D8;" ><!--/Ll /lll /llless R: triple less-than -->
+<!ENTITY lsim "&#x02272;" ><!--/lesssim R: less, similar -->
+<!ENTITY lsime "&#x02A8D;" ><!--less, similar, equal -->
+<!ENTITY lsimg "&#x02A8F;" ><!--less, similar, greater -->
+<!ENTITY Lt "&#x0226A;" ><!--/ll R: double less-than sign -->
+<!ENTITY ltcc "&#x02AA6;" ><!--less than, closed by curve -->
+<!ENTITY ltcir "&#x02A79;" ><!--less than, circle inside -->
+<!ENTITY ltdot "&#x022D6;" ><!--/lessdot R: less than, with dot -->
+<!ENTITY ltlarr "&#x02976;" ><!--less than, left arrow -->
+<!ENTITY ltquest "&#x02A7B;" ><!--less than, questionmark above -->
+<!ENTITY ltrie "&#x022B4;" ><!--/trianglelefteq R: left triangle, eq -->
+<!ENTITY mcomma "&#x02A29;" ><!--minus, comma above -->
+<!ENTITY mDDot "&#x0223A;" ><!--minus with four dots, geometric properties -->
+<!ENTITY mid "&#x02223;" ><!--/mid R: -->
+<!ENTITY mlcp "&#x02ADB;" ><!--/mlcp -->
+<!ENTITY models "&#x022A7;" ><!--/models R: -->
+<!ENTITY mstpos "&#x0223E;" ><!--most positive -->
+<!ENTITY pr "&#x0227A;" ><!--/prec R: precedes -->
+<!ENTITY Pr "&#x02ABB;" ><!--dbl precedes -->
+<!ENTITY prap "&#x0227E;" ><!--/precapprox R: precedes, approximate -->
+<!ENTITY prcue "&#x0227C;" ><!--/preccurlyeq R: precedes, curly eq -->
+<!ENTITY pre "&#x02AAF;" ><!--/preceq R: precedes, equals -->
+<!ENTITY prE "&#x02AAF;" ><!--precedes, dbl equals -->
+<!ENTITY prsim "&#x0227E;" ><!--/precsim R: precedes, similar -->
+<!ENTITY prurel "&#x022B0;" ><!--element precedes under relation -->
+<!ENTITY ratio "&#x02236;" ><!--/ratio -->
+<!ENTITY rtrie "&#x022B5;" ><!--/trianglerighteq R: right tri, eq -->
+<!ENTITY rtriltri "&#x029CE;" ><!--right triangle above left triangle -->
+<!ENTITY sc "&#x0227B;" ><!--/succ R: succeeds -->
+<!ENTITY Sc "&#x02ABC;" ><!--dbl succeeds -->
+<!ENTITY scap "&#x0227F;" ><!--/succapprox R: succeeds, approximate -->
+<!ENTITY sccue "&#x0227D;" ><!--/succcurlyeq R: succeeds, curly eq -->
+<!ENTITY sce "&#x0227D;" ><!--/succeq R: succeeds, equals -->
+<!ENTITY scE "&#x0227E;" ><!--succeeds, dbl equals -->
+<!ENTITY scsim "&#x0227F;" ><!--/succsim R: succeeds, similar -->
+<!ENTITY sdote "&#x02A66;" ><!--equal, dot below -->
+<!ENTITY simg "&#x02A9E;" ><!--similar, greater -->
+<!ENTITY simgE "&#x02AA0;" ><!--similar, greater, equal -->
+<!ENTITY siml "&#x02A9D;" ><!--similar, less -->
+<!ENTITY simlE "&#x02A9F;" ><!--similar, less, equal -->
+<!ENTITY smid "&#x02223;&#x02063;" ><!--/shortmid R: -->
+<!ENTITY smile "&#x02323;" ><!--/smile R: up curve -->
+<!ENTITY smt "&#x02AAA;" ><!--smaller than -->
+<!ENTITY smte "&#x02AAC;" ><!--smaller than or equal -->
+<!ENTITY smtes "&#x02AAC;&#x02063;" ><!--smaller than or equal, slanted -->
+<!ENTITY spar "&#x02225;&#x02063;" ><!--/shortparallel R: short parallel -->
+<!ENTITY sqsub "&#x0228F;" ><!--/sqsubset R: square subset -->
+<!ENTITY sqsube "&#x02291;" ><!--/sqsubseteq R: square subset, equals -->
+<!ENTITY sqsup "&#x02290;" ><!--/sqsupset R: square superset -->
+<!ENTITY sqsupe "&#x02292;" ><!--/sqsupseteq R: square superset, eq -->
+<!ENTITY Sub "&#x022D0;" ><!--/Subset R: double subset -->
+<!ENTITY subE "&#x02286;" ><!--/subseteqq R: subset, dbl equals -->
+<!ENTITY subedot "&#x02AC3;" ><!--subset, equals, dot -->
+<!ENTITY submult "&#x02AC1;" ><!--subset, multiply -->
+<!ENTITY subplus "&#x02ABF;" ><!--subset, plus -->
+<!ENTITY subrarr "&#x02979;" ><!--subset, right arrow -->
+<!ENTITY subsim "&#x02AC7;" ><!--subset, similar -->
+<!ENTITY subsub "&#x02AD5;" ><!--subset above subset -->
+<!ENTITY subsup "&#x02AD3;" ><!--subset above superset -->
+<!ENTITY Sup "&#x022D1;" ><!--/Supset R: dbl superset -->
+<!ENTITY supdsub "&#x02AD8;" ><!--superset, subset, dash joining them -->
+<!ENTITY supE "&#x02287;" ><!--/supseteqq R: superset, dbl equals -->
+<!ENTITY supedot "&#x02AC4;" ><!--superset, equals, dot -->
+<!ENTITY suphsol "&#x02283;&#x0002F;" ><!--superset, solidus -->
+<!ENTITY suphsub "&#x02AD7;" ><!--superset, subset -->
+<!ENTITY suplarr "&#x0297B;" ><!--superset, left arrow -->
+<!ENTITY supmult "&#x02AC2;" ><!--superset, multiply -->
+<!ENTITY supplus "&#x02AC0;" ><!--superset, plus -->
+<!ENTITY supsim "&#x02AC8;" ><!--superset, similar -->
+<!ENTITY supsub "&#x02AD4;" ><!--superset above subset -->
+<!ENTITY supsup "&#x02AD6;" ><!--superset above superset -->
+<!ENTITY thkap "&#x02248;&#x02063;" ><!--/thickapprox R: thick approximate -->
+<!ENTITY thksim "&#x0223C;" ><!--/thicksim R: thick similar -->
+<!ENTITY topfork "&#x02ADA;" ><!--fork with top -->
+<!ENTITY trie "&#x0225C;" ><!--/triangleq R: triangle, equals -->
+<!ENTITY twixt "&#x0226C;" ><!--/between R: between -->
+<!ENTITY vBar "&#x02AE8;" ><!--vert, dbl bar (under) -->
+<!ENTITY Vbar "&#x02AEB;" ><!--dbl vert, bar (under) -->
+<!ENTITY vBarv "&#x02AE9;" ><!--dbl bar, vert over and under -->
+<!ENTITY vdash "&#x022A2;" ><!--/vdash R: vertical, dash -->
+<!ENTITY vDash "&#x022A8;" ><!--/vDash R: vertical, dbl dash -->
+<!ENTITY Vdash "&#x022A9;" ><!--/Vdash R: dbl vertical, dash -->
+<!ENTITY VDash "&#x022AB;" ><!--dbl vert, dbl dash -->
+<!ENTITY Vdashl "&#x02AE6;" ><!--vertical, dash (long) -->
+<!ENTITY vltri "&#x022B2;" ><!--/vartriangleleft R: l tri, open, var -->
+<!ENTITY vprop "&#x0221D;" ><!--/varpropto R: proportional, variant -->
+<!ENTITY vrtri "&#x022B3;" ><!--/vartriangleright R: r tri, open, var -->
+<!ENTITY Vvdash "&#x022AA;" ><!--/Vvdash R: triple vertical, dash -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isobox.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isobox.ent
new file mode 100644
index 0000000000..630edc5597
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isobox.ent
@@ -0,0 +1,67 @@
+
+<!--
+ File isobox.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY boxdl "&#x02510;" ><!--lower left quadrant -->
+<!ENTITY boxdL "&#x02555;" ><!--lower left quadrant -->
+<!ENTITY boxDl "&#x02556;" ><!--lower left quadrant -->
+<!ENTITY boxDL "&#x02557;" ><!--lower left quadrant -->
+<!ENTITY boxdr "&#x0250C;" ><!--lower right quadrant -->
+<!ENTITY boxdR "&#x02552;" ><!--lower right quadrant -->
+<!ENTITY boxDr "&#x02553;" ><!--lower right quadrant -->
+<!ENTITY boxDR "&#x02554;" ><!--lower right quadrant -->
+<!ENTITY boxh "&#x02500;" ><!--horizontal line -->
+<!ENTITY boxH "&#x02550;" ><!--horizontal line -->
+<!ENTITY boxhd "&#x0252C;" ><!--lower left and right quadrants -->
+<!ENTITY boxhD "&#x02565;" ><!--lower left and right quadrants -->
+<!ENTITY boxHd "&#x02564;" ><!--lower left and right quadrants -->
+<!ENTITY boxHD "&#x02566;" ><!--lower left and right quadrants -->
+<!ENTITY boxhu "&#x02534;" ><!--upper left and right quadrants -->
+<!ENTITY boxhU "&#x02568;" ><!--upper left and right quadrants -->
+<!ENTITY boxHu "&#x02567;" ><!--upper left and right quadrants -->
+<!ENTITY boxHU "&#x02569;" ><!--upper left and right quadrants -->
+<!ENTITY boxul "&#x02518;" ><!--upper left quadrant -->
+<!ENTITY boxuL "&#x0255B;" ><!--upper left quadrant -->
+<!ENTITY boxUl "&#x0255C;" ><!--upper left quadrant -->
+<!ENTITY boxUL "&#x0255D;" ><!--upper left quadrant -->
+<!ENTITY boxur "&#x02514;" ><!--upper right quadrant -->
+<!ENTITY boxuR "&#x02558;" ><!--upper right quadrant -->
+<!ENTITY boxUr "&#x02559;" ><!--upper right quadrant -->
+<!ENTITY boxUR "&#x0255A;" ><!--upper right quadrant -->
+<!ENTITY boxv "&#x02502;" ><!--vertical line -->
+<!ENTITY boxV "&#x02551;" ><!--vertical line -->
+<!ENTITY boxvh "&#x0253C;" ><!--all four quadrants -->
+<!ENTITY boxvH "&#x0256A;" ><!--all four quadrants -->
+<!ENTITY boxVh "&#x0256B;" ><!--all four quadrants -->
+<!ENTITY boxVH "&#x0256C;" ><!--all four quadrants -->
+<!ENTITY boxvl "&#x02524;" ><!--upper and lower left quadrants -->
+<!ENTITY boxvL "&#x02561;" ><!--upper and lower left quadrants -->
+<!ENTITY boxVl "&#x02562;" ><!--upper and lower left quadrants -->
+<!ENTITY boxVL "&#x02563;" ><!--upper and lower left quadrants -->
+<!ENTITY boxvr "&#x0251C;" ><!--upper and lower right quadrants -->
+<!ENTITY boxvR "&#x0255E;" ><!--upper and lower right quadrants -->
+<!ENTITY boxVr "&#x0255F;" ><!--upper and lower right quadrants -->
+<!ENTITY boxVR "&#x02560;" ><!--upper and lower right quadrants -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr1.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr1.ent
new file mode 100644
index 0000000000..4bcc9e416e
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr1.ent
@@ -0,0 +1,94 @@
+
+<!--
+ File isocyr1.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acy "&#x00430;" ><!--=small a, Cyrillic -->
+<!ENTITY Acy "&#x00410;" ><!--=capital A, Cyrillic -->
+<!ENTITY bcy "&#x00431;" ><!--=small be, Cyrillic -->
+<!ENTITY Bcy "&#x00411;" ><!--=capital BE, Cyrillic -->
+<!ENTITY chcy "&#x00447;" ><!--=small che, Cyrillic -->
+<!ENTITY CHcy "&#x00427;" ><!--=capital CHE, Cyrillic -->
+<!ENTITY dcy "&#x00434;" ><!--=small de, Cyrillic -->
+<!ENTITY Dcy "&#x00414;" ><!--=capital DE, Cyrillic -->
+<!ENTITY ecy "&#x0044D;" ><!--=small e, Cyrillic -->
+<!ENTITY Ecy "&#x0042D;" ><!--=capital E, Cyrillic -->
+<!ENTITY fcy "&#x00444;" ><!--=small ef, Cyrillic -->
+<!ENTITY Fcy "&#x00424;" ><!--=capital EF, Cyrillic -->
+<!ENTITY gcy "&#x00433;" ><!--=small ghe, Cyrillic -->
+<!ENTITY Gcy "&#x00413;" ><!--=capital GHE, Cyrillic -->
+<!ENTITY hardcy "&#x0044A;" ><!--=small hard sign, Cyrillic -->
+<!ENTITY HARDcy "&#x0042A;" ><!--=capital HARD sign, Cyrillic -->
+<!ENTITY icy "&#x00438;" ><!--=small i, Cyrillic -->
+<!ENTITY Icy "&#x00418;" ><!--=capital I, Cyrillic -->
+<!ENTITY iecy "&#x00435;" ><!--=small ie, Cyrillic -->
+<!ENTITY IEcy "&#x00415;" ><!--=capital IE, Cyrillic -->
+<!ENTITY iocy "&#x00451;" ><!--=small io, Russian -->
+<!ENTITY IOcy "&#x00401;" ><!--=capital IO, Russian -->
+<!ENTITY jcy "&#x00439;" ><!--=small short i, Cyrillic -->
+<!ENTITY Jcy "&#x00419;" ><!--=capital short I, Cyrillic -->
+<!ENTITY kcy "&#x0043A;" ><!--=small ka, Cyrillic -->
+<!ENTITY Kcy "&#x0041A;" ><!--=capital KA, Cyrillic -->
+<!ENTITY khcy "&#x00445;" ><!--=small ha, Cyrillic -->
+<!ENTITY KHcy "&#x00425;" ><!--=capital HA, Cyrillic -->
+<!ENTITY lcy "&#x0043B;" ><!--=small el, Cyrillic -->
+<!ENTITY Lcy "&#x0041B;" ><!--=capital EL, Cyrillic -->
+<!ENTITY mcy "&#x0043C;" ><!--=small em, Cyrillic -->
+<!ENTITY Mcy "&#x0041C;" ><!--=capital EM, Cyrillic -->
+<!ENTITY ncy "&#x0043D;" ><!--=small en, Cyrillic -->
+<!ENTITY Ncy "&#x0041D;" ><!--=capital EN, Cyrillic -->
+<!ENTITY numero "&#x02116;" ><!--=numero sign -->
+<!ENTITY ocy "&#x0043E;" ><!--=small o, Cyrillic -->
+<!ENTITY Ocy "&#x0041E;" ><!--=capital O, Cyrillic -->
+<!ENTITY pcy "&#x0043F;" ><!--=small pe, Cyrillic -->
+<!ENTITY Pcy "&#x0041F;" ><!--=capital PE, Cyrillic -->
+<!ENTITY rcy "&#x00440;" ><!--=small er, Cyrillic -->
+<!ENTITY Rcy "&#x00420;" ><!--=capital ER, Cyrillic -->
+<!ENTITY scy "&#x00441;" ><!--=small es, Cyrillic -->
+<!ENTITY Scy "&#x00421;" ><!--=capital ES, Cyrillic -->
+<!ENTITY shchcy "&#x00449;" ><!--=small shcha, Cyrillic -->
+<!ENTITY SHCHcy "&#x00429;" ><!--=capital SHCHA, Cyrillic -->
+<!ENTITY shcy "&#x00448;" ><!--=small sha, Cyrillic -->
+<!ENTITY SHcy "&#x00428;" ><!--=capital SHA, Cyrillic -->
+<!ENTITY softcy "&#x0044C;" ><!--=small soft sign, Cyrillic -->
+<!ENTITY SOFTcy "&#x0042C;" ><!--=capital SOFT sign, Cyrillic -->
+<!ENTITY tcy "&#x00442;" ><!--=small te, Cyrillic -->
+<!ENTITY Tcy "&#x00422;" ><!--=capital TE, Cyrillic -->
+<!ENTITY tscy "&#x00446;" ><!--=small tse, Cyrillic -->
+<!ENTITY TScy "&#x00426;" ><!--=capital TSE, Cyrillic -->
+<!ENTITY ucy "&#x00443;" ><!--=small u, Cyrillic -->
+<!ENTITY Ucy "&#x00423;" ><!--=capital U, Cyrillic -->
+<!ENTITY vcy "&#x00432;" ><!--=small ve, Cyrillic -->
+<!ENTITY Vcy "&#x00412;" ><!--=capital VE, Cyrillic -->
+<!ENTITY yacy "&#x0044F;" ><!--=small ya, Cyrillic -->
+<!ENTITY YAcy "&#x0042F;" ><!--=capital YA, Cyrillic -->
+<!ENTITY ycy "&#x0044B;" ><!--=small yeru, Cyrillic -->
+<!ENTITY Ycy "&#x0042B;" ><!--=capital YERU, Cyrillic -->
+<!ENTITY yucy "&#x0044E;" ><!--=small yu, Cyrillic -->
+<!ENTITY YUcy "&#x0042E;" ><!--=capital YU, Cyrillic -->
+<!ENTITY zcy "&#x00437;" ><!--=small ze, Cyrillic -->
+<!ENTITY Zcy "&#x00417;" ><!--=capital ZE, Cyrillic -->
+<!ENTITY zhcy "&#x00436;" ><!--=small zhe, Cyrillic -->
+<!ENTITY ZHcy "&#x00416;" ><!--=capital ZHE, Cyrillic -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr2.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr2.ent
new file mode 100644
index 0000000000..67c477b24d
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isocyr2.ent
@@ -0,0 +1,53 @@
+
+<!--
+ File isocyr2.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY djcy "&#x00452;" ><!--=small dje, Serbian -->
+<!ENTITY DJcy "&#x00402;" ><!--=capital DJE, Serbian -->
+<!ENTITY dscy "&#x00455;" ><!--=small dse, Macedonian -->
+<!ENTITY DScy "&#x00405;" ><!--=capital DSE, Macedonian -->
+<!ENTITY dzcy "&#x0045F;" ><!--=small dze, Serbian -->
+<!ENTITY DZcy "&#x0040F;" ><!--=capital dze, Serbian -->
+<!ENTITY gjcy "&#x00453;" ><!--=small gje, Macedonian -->
+<!ENTITY GJcy "&#x00403;" ><!--=capital GJE Macedonian -->
+<!ENTITY iukcy "&#x00456;" ><!--=small i, Ukrainian -->
+<!ENTITY Iukcy "&#x00406;" ><!--=capital I, Ukrainian -->
+<!ENTITY jsercy "&#x00458;" ><!--=small je, Serbian -->
+<!ENTITY Jsercy "&#x00408;" ><!--=capital JE, Serbian -->
+<!ENTITY jukcy "&#x00454;" ><!--=small je, Ukrainian -->
+<!ENTITY Jukcy "&#x00404;" ><!--=capital JE, Ukrainian -->
+<!ENTITY kjcy "&#x0045C;" ><!--=small kje Macedonian -->
+<!ENTITY KJcy "&#x0040C;" ><!--=capital KJE, Macedonian -->
+<!ENTITY ljcy "&#x00459;" ><!--=small lje, Serbian -->
+<!ENTITY LJcy "&#x00409;" ><!--=capital LJE, Serbian -->
+<!ENTITY njcy "&#x0045A;" ><!--=small nje, Serbian -->
+<!ENTITY NJcy "&#x0040A;" ><!--=capital NJE, Serbian -->
+<!ENTITY tshcy "&#x0045B;" ><!--=small tshe, Serbian -->
+<!ENTITY TSHcy "&#x0040B;" ><!--=capital TSHE, Serbian -->
+<!ENTITY ubrcy "&#x0045E;" ><!--=small u, Byelorussian -->
+<!ENTITY Ubrcy "&#x0040E;" ><!--=capital U, Byelorussian -->
+<!ENTITY yicy "&#x00457;" ><!--=small yi, Ukrainian -->
+<!ENTITY YIcy "&#x00407;" ><!--=capital YI, Ukrainian -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isodia.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isodia.ent
new file mode 100644
index 0000000000..ba6496300f
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isodia.ent
@@ -0,0 +1,41 @@
+
+<!--
+ File isodia.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acute "&#x000B4;" ><!--=acute accent -->
+<!ENTITY breve "&#x002D8;" ><!--=breve -->
+<!ENTITY caron "&#x002C7;" ><!--=caron -->
+<!ENTITY cedil "&#x000B8;" ><!--=cedilla -->
+<!ENTITY circ "&#x0005E;" ><!--circumflex accent -->
+<!ENTITY dblac "&#x002DD;" ><!--=double acute accent -->
+<!ENTITY die "&#x000A8;" ><!--=dieresis -->
+<!ENTITY dot "&#x002D9;" ><!--=dot above -->
+<!ENTITY grave "&#x00060;" ><!--=grave accent -->
+<!ENTITY macr "&#x000AF;" ><!--=macron -->
+<!ENTITY ogon "&#x002DB;" ><!--=ogonek -->
+<!ENTITY ring "&#x002DA;" ><!--=ring -->
+<!ENTITY tilde "&#x002DC;" ><!--=tilde -->
+<!ENTITY uml "&#x000A8;" ><!--=umlaut mark -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk1.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk1.ent
new file mode 100644
index 0000000000..63b9f14ce8
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk1.ent
@@ -0,0 +1,75 @@
+<!--
+
+ File isogrk1.ent produced by the dsssl script ent.dsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments in the STIX proposal for characters
+ for Mathematics.
+
+ The STIX assignments are temporary and will change if
+ the proposal or some variant of it is adopted by the
+ Unicode Consortium.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!ENTITY agr "&#945;" ><!--U03B1 =small alpha, Greek -->
+<!ENTITY Agr "&#913;" ><!--U0391 =capital Alpha, Greek -->
+<!ENTITY bgr "&#946;" ><!--U03B2 =small beta, Greek -->
+<!ENTITY Bgr "&#914;" ><!--U0392 =capital Beta, Greek -->
+<!ENTITY dgr "&#948;" ><!--U03B4 =small delta, Greek -->
+<!ENTITY Dgr "&#916;" ><!--U0394 =capital Delta, Greek -->
+<!ENTITY eegr "&#951;" ><!--U03B7 =small eta, Greek -->
+<!ENTITY egr "&#949;" ><!--U03B5 =small epsilon, Greek -->
+<!ENTITY EEgr "&#919;" ><!--U0397 =capital Eta, Greek -->
+<!ENTITY Egr "&#917;" ><!--U0395 =capital Epsilon, Greek -->
+<!ENTITY ggr "&#947;" ><!--U03B3 =small gamma, Greek -->
+<!ENTITY Ggr "&#915;" ><!--U0393 =capital Gamma, Greek -->
+<!ENTITY igr "&#953;" ><!--U03B9 =small iota, Greek -->
+<!ENTITY Igr "&#921;" ><!--U0399 =capital Iota, Greek -->
+<!ENTITY kgr "&#954;" ><!--U03BA =small kappa, Greek -->
+<!ENTITY khgr "&#967;" ><!--U03C7 =small chi, Greek -->
+<!ENTITY Kgr "&#922;" ><!--U039A =capital Kappa, Greek -->
+<!ENTITY KHgr "&#935;" ><!--U03A7 =capital Chi, Greek -->
+<!ENTITY lgr "&#955;" ><!--U03BB =small lambda, Greek -->
+<!ENTITY Lgr "&#923;" ><!--U039B =capital Lambda, Greek -->
+<!ENTITY mgr "&#956;" ><!--U03BC =small mu, Greek -->
+<!ENTITY Mgr "&#924;" ><!--U039C =capital Mu, Greek -->
+<!ENTITY ngr "&#957;" ><!--U03BD =small nu, Greek -->
+<!ENTITY Ngr "&#925;" ><!--U039D =capital Nu, Greek -->
+<!ENTITY ogr "&#959;" ><!--U03BF =small omicron, Greek -->
+<!ENTITY ohgr "&#969;" ><!--U03C9 =small omega, Greek -->
+<!ENTITY Ogr "&#927;" ><!--U039F =capital Omicron, Greek -->
+<!ENTITY OHgr "&#937;" ><!--U03A9 =capital Omega, Greek -->
+<!ENTITY pgr "&#960;" ><!--U03C0 =small pi, Greek -->
+<!ENTITY phgr "&#966;" ><!--U03C6 =small phi, Greek -->
+<!ENTITY psgr "&#968;" ><!--U03C8 =small psi, Greek -->
+<!ENTITY Pgr "&#928;" ><!--U03A0 =capital Pi, Greek -->
+<!ENTITY PHgr "&#934;" ><!--U03A6 =capital Phi, Greek -->
+<!ENTITY PSgr "&#936;" ><!--U03A8 =capital Psi, Greek -->
+<!ENTITY rgr "&#961;" ><!--U03C1 =small rho, Greek -->
+<!ENTITY Rgr "&#929;" ><!--U03A1 =capital Rho, Greek -->
+<!ENTITY sfgr "&#962;" ><!--U03C2 =final small sigma, Greek -->
+<!ENTITY sgr "&#963;" ><!--U03C3 =small sigma, Greek -->
+<!ENTITY Sgr "&#931;" ><!--U03A3 =capital Sigma, Greek -->
+<!ENTITY tgr "&#964;" ><!--U03C4 =small tau, Greek -->
+<!ENTITY thgr "&#952;" ><!--U03B8 =small theta, Greek -->
+<!ENTITY Tgr "&#932;" ><!--U03A4 =capital Tau, Greek -->
+<!ENTITY THgr "&#920;" ><!--U0398 =capital Theta, Greek -->
+<!ENTITY ugr "&#965;" ><!--U03C5 =small upsilon, Greek -->
+<!ENTITY Ugr "&#933;" ><!--U03A5 =capital Upsilon, Greek -->
+<!ENTITY xgr "&#958;" ><!--U03BE =small xi, Greek -->
+<!ENTITY Xgr "&#926;" ><!--U039E =capital Xi, Greek -->
+<!ENTITY zgr "&#950;" ><!--U03B6 =small zeta, Greek -->
+<!ENTITY Zgr "&#918;" ><!--U0396 =capital Zeta, Greek -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk2.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk2.ent
new file mode 100644
index 0000000000..424786cabb
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk2.ent
@@ -0,0 +1,46 @@
+<!--
+
+ File isogrk2.ent produced by the dsssl script ent.dsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments in the STIX proposal for characters
+ for Mathematics.
+
+ The STIX assignments are temporary and will change if
+ the proposal or some variant of it is adopted by the
+ Unicode Consortium.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!ENTITY aacgr "&#940;" ><!--U03AC =small alpha, accent, Greek -->
+<!ENTITY Aacgr "&#902;" ><!--U0386 =capital Alpha, accent, Greek -->
+<!ENTITY eacgr "&#941;" ><!--U03AD =small epsilon, accent, Greek -->
+<!ENTITY eeacgr "&#942;" ><!--U03AE =small eta, accent, Greek -->
+<!ENTITY Eacgr "&#904;" ><!--U0388 =capital Epsilon, accent, Greek -->
+<!ENTITY EEacgr "&#905;" ><!--U0389 =capital Eta, accent, Greek -->
+<!ENTITY iacgr "&#943;" ><!--U03AF =small iota, accent, Greek -->
+<!ENTITY idiagr "&#912;" ><!--U0390 =small iota, dieresis, accent, Greek -->
+<!ENTITY idigr "&#970;" ><!--U03CA =small iota, dieresis, Greek -->
+<!ENTITY Iacgr "&#906;" ><!--U038A =capital Iota, accent, Greek -->
+<!ENTITY Idigr "&#938;" ><!--U03AA =capital Iota, dieresis, Greek -->
+<!ENTITY oacgr "&#972;" ><!--U03CC =small omicron, accent, Greek -->
+<!ENTITY ohacgr "&#974;" ><!--U03CE =small omega, accent, Greek -->
+<!ENTITY Oacgr "&#908;" ><!--U038C =capital Omicron, accent, Greek -->
+<!ENTITY OHacgr "&#911;" ><!--U038F =capital Omega, accent, Greek -->
+<!ENTITY uacgr "&#973;" ><!--U03CD =small upsilon, accent, Greek -->
+<!ENTITY udiagr "&#944;" ><!--U03B0 =small upsilon, dieresis, accent, Greek -->
+<!ENTITY udigr "&#971;" ><!--U03CB =small upsilon, dieresis, Greek -->
+<!ENTITY Uacgr "&#910;" ><!--U038E =capital Upsilon, accent, Greek -->
+<!ENTITY Udigr "&#939;" ><!--U03AB =capital Upsilon, dieresis, Greek -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk3.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk3.ent
new file mode 100644
index 0000000000..fa03355048
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk3.ent
@@ -0,0 +1,70 @@
+
+<!--
+ File isogrk3.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY alpha "&#x003B1;" ><!--/alpha small alpha, Greek -->
+<!ENTITY beta "&#x003B2;" ><!--/beta small beta, Greek -->
+<!ENTITY chi "&#x003C7;" ><!--/chi small chi, Greek -->
+<!ENTITY delta "&#x003B4;" ><!--/delta small delta, Greek -->
+<!ENTITY Delta "&#x00394;" ><!--/Delta capital Delta, Greek -->
+<!ENTITY epsi "&#x003B5;" ><!--/straightepsilon, small epsilon, Greek -->
+<!ENTITY epsiv "&#x0025B;" ><!--/varepsilon -->
+<!ENTITY eta "&#x003B7;" ><!--/eta small eta, Greek -->
+<!ENTITY gamma "&#x003B3;" ><!--/gamma small gamma, Greek -->
+<!ENTITY Gamma "&#x00393;" ><!--/Gamma capital Gamma, Greek -->
+<!ENTITY gammad "&#x003DC;" ><!--/digamma -->
+<!ENTITY Gammad "&#x003DC;" ><!--capital digamma -->
+<!ENTITY iota "&#x003B9;" ><!--/iota small iota, Greek -->
+<!ENTITY kappa "&#x003BA;" ><!--/kappa small kappa, Greek -->
+<!ENTITY kappav "&#x003F0;" ><!--/varkappa -->
+<!ENTITY lambda "&#x003BB;" ><!--/lambda small lambda, Greek -->
+<!ENTITY Lambda "&#x0039B;" ><!--/Lambda capital Lambda, Greek -->
+<!ENTITY mu "&#x003BC;" ><!--/mu small mu, Greek -->
+<!ENTITY nu "&#x003BD;" ><!--/nu small nu, Greek -->
+<!ENTITY omega "&#x003C9;" ><!--/omega small omega, Greek -->
+<!ENTITY Omega "&#x003A9;" ><!--/Omega capital Omega, Greek -->
+<!ENTITY phi "&#x003C6;" ><!--/straightphi - small phi, Greek -->
+<!ENTITY Phi "&#x003A6;" ><!--/Phi capital Phi, Greek -->
+<!ENTITY phiv "&#x003D5;" ><!--/varphi - curly or open phi -->
+<!ENTITY pi "&#x003C0;" ><!--/pi small pi, Greek -->
+<!ENTITY Pi "&#x003A0;" ><!--/Pi capital Pi, Greek -->
+<!ENTITY piv "&#x003D6;" ><!--/varpi -->
+<!ENTITY psi "&#x003C8;" ><!--/psi small psi, Greek -->
+<!ENTITY Psi "&#x003A8;" ><!--/Psi capital Psi, Greek -->
+<!ENTITY rho "&#x003C1;" ><!--/rho small rho, Greek -->
+<!ENTITY rhov "&#x003F1;" ><!--/varrho -->
+<!ENTITY sigma "&#x003C3;" ><!--/sigma small sigma, Greek -->
+<!ENTITY Sigma "&#x003A3;" ><!--/Sigma capital Sigma, Greek -->
+<!ENTITY sigmav "&#x003C2;" ><!--/varsigma -->
+<!ENTITY tau "&#x003C4;" ><!--/tau small tau, Greek -->
+<!ENTITY theta "&#x003B8;" ><!--/theta straight theta, small theta, Greek -->
+<!ENTITY Theta "&#x00398;" ><!--/Theta capital Theta, Greek -->
+<!ENTITY thetav "&#x003D1;" ><!--/vartheta - curly or open theta -->
+<!ENTITY upsi "&#x003C5;" ><!--/upsilon small upsilon, Greek -->
+<!ENTITY Upsi "&#x003D2;" ><!--/Upsilon capital Upsilon, Greek -->
+<!ENTITY xi "&#x003BE;" ><!--/xi small xi, Greek -->
+<!ENTITY Xi "&#x0039E;" ><!--/Xi capital Xi, Greek -->
+<!ENTITY zeta "&#x003B6;" ><!--/zeta small zeta, Greek -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk4.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk4.ent
new file mode 100644
index 0000000000..71f834042b
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isogrk4.ent
@@ -0,0 +1,69 @@
+<!--
+
+ File isogrk4.ent produced by the dsssl script ent.dsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments in the STIX proposal for characters
+ for Mathematics.
+
+ The STIX assignments are temporary and will change if
+ the proposal or some variant of it is adopted by the
+ Unicode Consortium.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!ENTITY b.alpha "&#59136;" ><!--UE700 small alpha, Greek -->
+<!ENTITY b.beta "&#59137;" ><!--UE701 small beta, Greek -->
+<!ENTITY b.chi "&#59175;" ><!--UE727 small chi, Greek -->
+<!ENTITY b.delta "&#59142;" ><!--UE706 small delta, Greek -->
+<!ENTITY b.Delta "&#59143;" ><!--UE707 capital delta, Greek -->
+<!ENTITY b.epsi "&#59144;" ><!--UE708 small epsilon, Greek -->
+<!ENTITY b.epsiv "&#59146;" ><!--UE709 varepsilion -->
+<!ENTITY b.eta "&#59148;" ><!--UE70C small eta, Greek -->
+<!ENTITY b.gamma "&#59138;" ><!--UE702 small gamma, Greek -->
+<!ENTITY b.gammad "&#59140;" ><!--UE704 digamma, Greek -->
+<!ENTITY b.Gamma "&#59139;" ><!--UE703 capital gamma, Greek -->
+<!ENTITY b.Gammad "&#59141;" ><!--UE705 capital digamma, Greek -->
+<!ENTITY b.iota "&#59152;" ><!--UE710 small iota, Greek -->
+<!ENTITY b.kappa "&#59153;" ><!--UE711 small kappa, Greek -->
+<!ENTITY b.kappav "&#59154;" ><!--UE712 var kappa, Greek -->
+<!ENTITY b.lambda "&#59155;" ><!--UE713 small lambda, Greek -->
+<!ENTITY b.Lambda "&#59156;" ><!--UE714 capital lambda, Greek -->
+<!ENTITY b.mu "&#59157;" ><!--UE715 small mu, Greek -->
+<!ENTITY b.nu "&#59158;" ><!--UE716 small nu, Greek -->
+<!ENTITY b.omega "&#59178;" ><!--UE72A small omega, Greek -->
+<!ENTITY b.Omega "&#59179;" ><!--UE72B capital Omega, Greek -->
+<!ENTITY b.phis "&#59172;" ><!--UE724 straight phi, Greek -->
+<!ENTITY b.phiv "&#59174;" ><!--UE726 varphi -->
+<!ENTITY b.pi "&#59161;" ><!--UE719 small pi, Greek -->
+<!ENTITY b.piv "&#59163;" ><!--UE71B varpi -->
+<!ENTITY b.psi "&#59176;" ><!--UE728 small psi, Greek -->
+<!ENTITY b.Phi "&#59173;" ><!--UE725 capital Phi, Greek -->
+<!ENTITY b.Pi "&#59162;" ><!--UE71A capital pi, Greek -->
+<!ENTITY b.Psi "&#59177;" ><!--UE729 capital Psi, Greek -->
+<!ENTITY b.rho "&#59164;" ><!--UE71C small rho, Greek -->
+<!ENTITY b.rhov "&#59165;" ><!--UE71D varrho -->
+<!ENTITY b.sigma "&#59166;" ><!--UE71E small sigma, Greek -->
+<!ENTITY b.sigmav "&#59168;" ><!--UE720 varsigma -->
+<!ENTITY b.Sigma "&#59167;" ><!--UE71F capital sigma, Greek -->
+<!ENTITY b.tau "&#59169;" ><!--UE721 small tau, Greek -->
+<!ENTITY b.thetas "&#59149;" ><!--UE70D straight theta, Greek -->
+<!ENTITY b.thetav "&#59151;" ><!--UE70F var theta, Greek -->
+<!ENTITY b.Theta "&#59150;" ><!--UE70E capital theta, Greek -->
+<!ENTITY b.upsi "&#59170;" ><!--UE722 small upsilon, Greek -->
+<!ENTITY b.Upsilon "&#59171;" ><!--UE723 capital upsilon, Greek -->
+<!ENTITY b.xi "&#59159;" ><!--UE717 small xi, Greek -->
+<!ENTITY b.Xi "&#59160;" ><!--UE718 capital xi, Greek -->
+<!ENTITY b.zeta "&#59145;" ><!--UE70B small zeta, Greek -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat1.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat1.ent
new file mode 100644
index 0000000000..849d360aea
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat1.ent
@@ -0,0 +1,89 @@
+
+<!--
+ File isolat1.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY aacute "&#x000E1;" ><!--=small a, acute accent -->
+<!ENTITY Aacute "&#x000C1;" ><!--=capital A, acute accent -->
+<!ENTITY acirc "&#x000E2;" ><!--=small a, circumflex accent -->
+<!ENTITY Acirc "&#x000C2;" ><!--=capital A, circumflex accent -->
+<!ENTITY aelig "&#x000E6;" ><!--=small ae diphthong (ligature) -->
+<!ENTITY AElig "&#x000C6;" ><!--=capital AE diphthong (ligature) -->
+<!ENTITY agrave "&#x000E0;" ><!--=small a, grave accent -->
+<!ENTITY Agrave "&#x000C0;" ><!--=capital A, grave accent -->
+<!ENTITY aring "&#x000E5;" ><!--=small a, ring -->
+<!ENTITY Aring "&#x000C5;" ><!--=capital A, ring -->
+<!ENTITY atilde "&#x000E3;" ><!--=small a, tilde -->
+<!ENTITY Atilde "&#x000C3;" ><!--=capital A, tilde -->
+<!ENTITY auml "&#x000E4;" ><!--=small a, dieresis or umlaut mark -->
+<!ENTITY Auml "&#x000C4;" ><!--=capital A, dieresis or umlaut mark -->
+<!ENTITY ccedil "&#x000E7;" ><!--=small c, cedilla -->
+<!ENTITY Ccedil "&#x000C7;" ><!--=capital C, cedilla -->
+<!ENTITY eacute "&#x000E9;" ><!--=small e, acute accent -->
+<!ENTITY Eacute "&#x000C9;" ><!--=capital E, acute accent -->
+<!ENTITY ecirc "&#x000EA;" ><!--=small e, circumflex accent -->
+<!ENTITY Ecirc "&#x000CA;" ><!--=capital E, circumflex accent -->
+<!ENTITY egrave "&#x000E8;" ><!--=small e, grave accent -->
+<!ENTITY Egrave "&#x000C8;" ><!--=capital E, grave accent -->
+<!ENTITY eth "&#x000F0;" ><!--=small eth, Icelandic -->
+<!ENTITY ETH "&#x000D0;" ><!--=capital Eth, Icelandic -->
+<!ENTITY euml "&#x000EB;" ><!--=small e, dieresis or umlaut mark -->
+<!ENTITY Euml "&#x000CB;" ><!--=capital E, dieresis or umlaut mark -->
+<!ENTITY iacute "&#x000ED;" ><!--=small i, acute accent -->
+<!ENTITY Iacute "&#x000CD;" ><!--=capital I, acute accent -->
+<!ENTITY icirc "&#x000EE;" ><!--=small i, circumflex accent -->
+<!ENTITY Icirc "&#x000CE;" ><!--=capital I, circumflex accent -->
+<!ENTITY igrave "&#x000EC;" ><!--=small i, grave accent -->
+<!ENTITY Igrave "&#x000CC;" ><!--=capital I, grave accent -->
+<!ENTITY iuml "&#x000EF;" ><!--=small i, dieresis or umlaut mark -->
+<!ENTITY Iuml "&#x000CF;" ><!--=capital I, dieresis or umlaut mark -->
+<!ENTITY ntilde "&#x000F1;" ><!--=small n, tilde -->
+<!ENTITY Ntilde "&#x000D1;" ><!--=capital N, tilde -->
+<!ENTITY oacute "&#x000F3;" ><!--=small o, acute accent -->
+<!ENTITY Oacute "&#x000D3;" ><!--=capital O, acute accent -->
+<!ENTITY ocirc "&#x000F4;" ><!--=small o, circumflex accent -->
+<!ENTITY Ocirc "&#x000D4;" ><!--=capital O, circumflex accent -->
+<!ENTITY ograve "&#x000F2;" ><!--=small o, grave accent -->
+<!ENTITY Ograve "&#x000D2;" ><!--=capital O, grave accent -->
+<!ENTITY oslash "&#x000F8;" ><!--latin small letter o with stroke -->
+<!ENTITY Oslash "&#x000D8;" ><!--=capital O, slash -->
+<!ENTITY otilde "&#x000F5;" ><!--=small o, tilde -->
+<!ENTITY Otilde "&#x000D5;" ><!--=capital O, tilde -->
+<!ENTITY ouml "&#x000F6;" ><!--=small o, dieresis or umlaut mark -->
+<!ENTITY Ouml "&#x000D6;" ><!--=capital O, dieresis or umlaut mark -->
+<!ENTITY szlig "&#x000DF;" ><!--=small sharp s, German (sz ligature) -->
+<!ENTITY thorn "&#x000FE;" ><!--=small thorn, Icelandic -->
+<!ENTITY THORN "&#x000DE;" ><!--=capital THORN, Icelandic -->
+<!ENTITY uacute "&#x000FA;" ><!--=small u, acute accent -->
+<!ENTITY Uacute "&#x000DA;" ><!--=capital U, acute accent -->
+<!ENTITY ucirc "&#x000FB;" ><!--=small u, circumflex accent -->
+<!ENTITY Ucirc "&#x000DB;" ><!--=capital U, circumflex accent -->
+<!ENTITY ugrave "&#x000F9;" ><!--=small u, grave accent -->
+<!ENTITY Ugrave "&#x000D9;" ><!--=capital U, grave accent -->
+<!ENTITY uuml "&#x000FC;" ><!--=small u, dieresis or umlaut mark -->
+<!ENTITY Uuml "&#x000DC;" ><!--=capital U, dieresis or umlaut mark -->
+<!ENTITY yacute "&#x000FD;" ><!--=small y, acute accent -->
+<!ENTITY Yacute "&#x000DD;" ><!--=capital Y, acute accent -->
+<!ENTITY yuml "&#x000FF;" ><!--=small y, dieresis or umlaut mark -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat2.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat2.ent
new file mode 100644
index 0000000000..3049be7f1f
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isolat2.ent
@@ -0,0 +1,148 @@
+
+<!--
+ File isolat2.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY abreve "&#x00103;" ><!--=small a, breve -->
+<!ENTITY Abreve "&#x00102;" ><!--=capital A, breve -->
+<!ENTITY amacr "&#x00101;" ><!--=small a, macron -->
+<!ENTITY Amacr "&#x00100;" ><!--=capital A, macron -->
+<!ENTITY aogon "&#x00105;" ><!--=small a, ogonek -->
+<!ENTITY Aogon "&#x00104;" ><!--=capital A, ogonek -->
+<!ENTITY cacute "&#x00107;" ><!--=small c, acute accent -->
+<!ENTITY Cacute "&#x00106;" ><!--=capital C, acute accent -->
+<!ENTITY ccaron "&#x0010D;" ><!--=small c, caron -->
+<!ENTITY Ccaron "&#x0010C;" ><!--=capital C, caron -->
+<!ENTITY ccirc "&#x00109;" ><!--=small c, circumflex accent -->
+<!ENTITY Ccirc "&#x00108;" ><!--=capital C, circumflex accent -->
+<!ENTITY cdot "&#x0010B;" ><!--=small c, dot above -->
+<!ENTITY Cdot "&#x0010A;" ><!--=capital C, dot above -->
+<!ENTITY dcaron "&#x0010F;" ><!--=small d, caron -->
+<!ENTITY Dcaron "&#x0010E;" ><!--=capital D, caron -->
+<!ENTITY dstrok "&#x00111;" ><!--=small d, stroke -->
+<!ENTITY Dstrok "&#x00110;" ><!--=capital D, stroke -->
+<!ENTITY ecaron "&#x0011B;" ><!--=small e, caron -->
+<!ENTITY Ecaron "&#x0011A;" ><!--=capital E, caron -->
+<!ENTITY edot "&#x00117;" ><!--=small e, dot above -->
+<!ENTITY Edot "&#x00116;" ><!--=capital E, dot above -->
+<!ENTITY emacr "&#x00113;" ><!--=small e, macron -->
+<!ENTITY Emacr "&#x00112;" ><!--=capital E, macron -->
+<!ENTITY eng "&#x0014B;" ><!--=small eng, Lapp -->
+<!ENTITY ENG "&#x0014A;" ><!--=capital ENG, Lapp -->
+<!ENTITY eogon "&#x00119;" ><!--=small e, ogonek -->
+<!ENTITY Eogon "&#x00118;" ><!--=capital E, ogonek -->
+<!ENTITY gacute "&#x001F5;" ><!--=small g, acute accent -->
+<!ENTITY gbreve "&#x0011F;" ><!--=small g, breve -->
+<!ENTITY Gbreve "&#x0011E;" ><!--=capital G, breve -->
+<!ENTITY Gcedil "&#x00122;" ><!--=capital G, cedilla -->
+<!ENTITY gcirc "&#x0011D;" ><!--=small g, circumflex accent -->
+<!ENTITY Gcirc "&#x0011C;" ><!--=capital G, circumflex accent -->
+<!ENTITY gdot "&#x00121;" ><!--=small g, dot above -->
+<!ENTITY Gdot "&#x00120;" ><!--=capital G, dot above -->
+<!ENTITY hcirc "&#x00125;" ><!--=small h, circumflex accent -->
+<!ENTITY Hcirc "&#x00124;" ><!--=capital H, circumflex accent -->
+<!ENTITY hstrok "&#x00127;" ><!--=small h, stroke -->
+<!ENTITY Hstrok "&#x00126;" ><!--=capital H, stroke -->
+<!ENTITY Idot "&#x00130;" ><!--=capital I, dot above -->
+<!ENTITY ijlig "&#x00133;" ><!--=small ij ligature -->
+<!ENTITY IJlig "&#x00132;" ><!--=capital IJ ligature -->
+<!ENTITY imacr "&#x0012B;" ><!--=small i, macron -->
+<!ENTITY Imacr "&#x0012A;" ><!--=capital I, macron -->
+<!ENTITY inodot "&#x00131;" ><!--=small i without dot -->
+<!ENTITY iogon "&#x0012F;" ><!--=small i, ogonek -->
+<!ENTITY Iogon "&#x0012E;" ><!--=capital I, ogonek -->
+<!ENTITY itilde "&#x00129;" ><!--=small i, tilde -->
+<!ENTITY Itilde "&#x00128;" ><!--=capital I, tilde -->
+<!ENTITY jcirc "&#x00135;" ><!--=small j, circumflex accent -->
+<!ENTITY Jcirc "&#x00134;" ><!--=capital J, circumflex accent -->
+<!ENTITY kcedil "&#x00137;" ><!--=small k, cedilla -->
+<!ENTITY Kcedil "&#x00136;" ><!--=capital K, cedilla -->
+<!ENTITY kgreen "&#x00138;" ><!--=small k, Greenlandic -->
+<!ENTITY lacute "&#x0013A;" ><!--=small l, acute accent -->
+<!ENTITY Lacute "&#x00139;" ><!--=capital L, acute accent -->
+<!ENTITY lcaron "&#x0013E;" ><!--=small l, caron -->
+<!ENTITY Lcaron "&#x0013D;" ><!--=capital L, caron -->
+<!ENTITY lcedil "&#x0013C;" ><!--=small l, cedilla -->
+<!ENTITY Lcedil "&#x0013B;" ><!--=capital L, cedilla -->
+<!ENTITY lmidot "&#x00140;" ><!--=small l, middle dot -->
+<!ENTITY Lmidot "&#x0013F;" ><!--=capital L, middle dot -->
+<!ENTITY lstrok "&#x00142;" ><!--=small l, stroke -->
+<!ENTITY Lstrok "&#x00141;" ><!--=capital L, stroke -->
+<!ENTITY nacute "&#x00144;" ><!--=small n, acute accent -->
+<!ENTITY Nacute "&#x00143;" ><!--=capital N, acute accent -->
+<!ENTITY napos "&#x00149;" ><!--=small n, apostrophe -->
+<!ENTITY ncaron "&#x00148;" ><!--=small n, caron -->
+<!ENTITY Ncaron "&#x00147;" ><!--=capital N, caron -->
+<!ENTITY ncedil "&#x00146;" ><!--=small n, cedilla -->
+<!ENTITY Ncedil "&#x00145;" ><!--=capital N, cedilla -->
+<!ENTITY odblac "&#x00151;" ><!--=small o, double acute accent -->
+<!ENTITY Odblac "&#x00150;" ><!--=capital O, double acute accent -->
+<!ENTITY oelig "&#x00153;" ><!--=small oe ligature -->
+<!ENTITY OElig "&#x00152;" ><!--=capital OE ligature -->
+<!ENTITY omacr "&#x0014D;" ><!--=small o, macron -->
+<!ENTITY Omacr "&#x0014C;" ><!--=capital O, macron -->
+<!ENTITY racute "&#x00155;" ><!--=small r, acute accent -->
+<!ENTITY Racute "&#x00154;" ><!--=capital R, acute accent -->
+<!ENTITY rcaron "&#x00159;" ><!--=small r, caron -->
+<!ENTITY Rcaron "&#x00158;" ><!--=capital R, caron -->
+<!ENTITY rcedil "&#x00157;" ><!--=small r, cedilla -->
+<!ENTITY Rcedil "&#x00156;" ><!--=capital R, cedilla -->
+<!ENTITY sacute "&#x0015B;" ><!--=small s, acute accent -->
+<!ENTITY Sacute "&#x0015A;" ><!--=capital S, acute accent -->
+<!ENTITY scaron "&#x00161;" ><!--=small s, caron -->
+<!ENTITY Scaron "&#x00160;" ><!--=capital S, caron -->
+<!ENTITY scedil "&#x0015F;" ><!--=small s, cedilla -->
+<!ENTITY Scedil "&#x0015E;" ><!--=capital S, cedilla -->
+<!ENTITY scirc "&#x0015D;" ><!--=small s, circumflex accent -->
+<!ENTITY Scirc "&#x0015C;" ><!--=capital S, circumflex accent -->
+<!ENTITY tcaron "&#x00165;" ><!--=small t, caron -->
+<!ENTITY Tcaron "&#x00164;" ><!--=capital T, caron -->
+<!ENTITY tcedil "&#x00163;" ><!--=small t, cedilla -->
+<!ENTITY Tcedil "&#x00162;" ><!--=capital T, cedilla -->
+<!ENTITY tstrok "&#x00167;" ><!--=small t, stroke -->
+<!ENTITY Tstrok "&#x00166;" ><!--=capital T, stroke -->
+<!ENTITY ubreve "&#x0016D;" ><!--=small u, breve -->
+<!ENTITY Ubreve "&#x0016C;" ><!--=capital U, breve -->
+<!ENTITY udblac "&#x00171;" ><!--=small u, double acute accent -->
+<!ENTITY Udblac "&#x00170;" ><!--=capital U, double acute accent -->
+<!ENTITY umacr "&#x0016B;" ><!--=small u, macron -->
+<!ENTITY Umacr "&#x0016A;" ><!--=capital U, macron -->
+<!ENTITY uogon "&#x00173;" ><!--=small u, ogonek -->
+<!ENTITY Uogon "&#x00172;" ><!--=capital U, ogonek -->
+<!ENTITY uring "&#x0016F;" ><!--=small u, ring -->
+<!ENTITY Uring "&#x0016E;" ><!--=capital U, ring -->
+<!ENTITY utilde "&#x00169;" ><!--=small u, tilde -->
+<!ENTITY Utilde "&#x00168;" ><!--=capital U, tilde -->
+<!ENTITY wcirc "&#x00175;" ><!--=small w, circumflex accent -->
+<!ENTITY Wcirc "&#x00174;" ><!--=capital W, circumflex accent -->
+<!ENTITY ycirc "&#x00177;" ><!--=small y, circumflex accent -->
+<!ENTITY Ycirc "&#x00176;" ><!--=capital Y, circumflex accent -->
+<!ENTITY Yuml "&#x00178;" ><!--=capital Y, dieresis or umlaut mark -->
+<!ENTITY zacute "&#x0017A;" ><!--=small z, acute accent -->
+<!ENTITY Zacute "&#x00179;" ><!--=capital Z, acute accent -->
+<!ENTITY zcaron "&#x0017E;" ><!--=small z, caron -->
+<!ENTITY Zcaron "&#x0017D;" ><!--=capital Z, caron -->
+<!ENTITY zdot "&#x0017C;" ><!--=small z, dot above -->
+<!ENTITY Zdot "&#x0017B;" ><!--=capital Z, dot above -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomfrk.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomfrk.ent
new file mode 100644
index 0000000000..397212a643
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomfrk.ent
@@ -0,0 +1,79 @@
+
+<!--
+ File isomfrk.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY afr "&#x1D51E;" ><!--/frak a, lower case a -->
+<!ENTITY Afr "&#x1D504;" ><!--/frak A, upper case a -->
+<!ENTITY bfr "&#x1D51F;" ><!--/frak b, lower case b -->
+<!ENTITY Bfr "&#x1D505;" ><!--/frak B, upper case b -->
+<!ENTITY cfr "&#x1D520;" ><!--/frak c, lower case c -->
+<!ENTITY Cfr "&#x1D506;" ><!--/frak C, upper case c -->
+<!ENTITY dfr "&#x1D521;" ><!--/frak d, lower case d -->
+<!ENTITY Dfr "&#x1D507;" ><!--/frak D, upper case d -->
+<!ENTITY efr "&#x1D522;" ><!--/frak e, lower case e -->
+<!ENTITY Efr "&#x1D508;" ><!--/frak E, upper case e -->
+<!ENTITY ffr "&#x1D523;" ><!--/frak f, lower case f -->
+<!ENTITY Ffr "&#x1D509;" ><!--/frak F, upper case f -->
+<!ENTITY gfr "&#x1D524;" ><!--/frak g, lower case g -->
+<!ENTITY Gfr "&#x1D50A;" ><!--/frak G, upper case g -->
+<!ENTITY hfr "&#x1D525;" ><!--/frak h, lower case h -->
+<!ENTITY Hfr "&#x1D50B;" ><!--/frak H, upper case h -->
+<!ENTITY ifr "&#x1D526;" ><!--/frak i, lower case i -->
+<!ENTITY Ifr "&#x1D50C;" ><!--/frak I, upper case i -->
+<!ENTITY jfr "&#x1D527;" ><!--/frak j, lower case j -->
+<!ENTITY Jfr "&#x1D50D;" ><!--/frak J, upper case j -->
+<!ENTITY kfr "&#x1D528;" ><!--/frak k, lower case k -->
+<!ENTITY Kfr "&#x1D50E;" ><!--/frak K, upper case k -->
+<!ENTITY lfr "&#x1D529;" ><!--/frak l, lower case l -->
+<!ENTITY Lfr "&#x1D50F;" ><!--/frak L, upper case l -->
+<!ENTITY mfr "&#x1D52A;" ><!--/frak m, lower case m -->
+<!ENTITY Mfr "&#x1D510;" ><!--/frak M, upper case m -->
+<!ENTITY nfr "&#x1D52B;" ><!--/frak n, lower case n -->
+<!ENTITY Nfr "&#x1D511;" ><!--/frak N, upper case n -->
+<!ENTITY ofr "&#x1D52C;" ><!--/frak o, lower case o -->
+<!ENTITY Ofr "&#x1D512;" ><!--/frak O, upper case o -->
+<!ENTITY pfr "&#x1D52D;" ><!--/frak p, lower case p -->
+<!ENTITY Pfr "&#x1D513;" ><!--/frak P, upper case p -->
+<!ENTITY qfr "&#x1D52E;" ><!--/frak q, lower case q -->
+<!ENTITY Qfr "&#x1D514;" ><!--/frak Q, upper case q -->
+<!ENTITY rfr "&#x1D52F;" ><!--/frak r, lower case r -->
+<!ENTITY Rfr "&#x1D515;" ><!--/frak R, upper case r -->
+<!ENTITY sfr "&#x1D530;" ><!--/frak s, lower case s -->
+<!ENTITY Sfr "&#x1D516;" ><!--/frak S, upper case s -->
+<!ENTITY tfr "&#x1D531;" ><!--/frak t, lower case t -->
+<!ENTITY Tfr "&#x1D517;" ><!--/frak T, upper case t -->
+<!ENTITY ufr "&#x1D532;" ><!--/frak u, lower case u -->
+<!ENTITY Ufr "&#x1D518;" ><!--/frak U, upper case u -->
+<!ENTITY vfr "&#x1D533;" ><!--/frak v, lower case v -->
+<!ENTITY Vfr "&#x1D519;" ><!--/frak V, upper case v -->
+<!ENTITY wfr "&#x1D534;" ><!--/frak w, lower case w -->
+<!ENTITY Wfr "&#x1D51A;" ><!--/frak W, upper case w -->
+<!ENTITY xfr "&#x1D535;" ><!--/frak x, lower case x -->
+<!ENTITY Xfr "&#x1D51B;" ><!--/frak X, upper case x -->
+<!ENTITY yfr "&#x1D536;" ><!--/frak y, lower case y -->
+<!ENTITY Yfr "&#x1D51C;" ><!--/frak Y, upper case y -->
+<!ENTITY zfr "&#x1D537;" ><!--/frak z, lower case z -->
+<!ENTITY Zfr "&#x1D51D;" ><!--/frak Z, upper case z -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomopf.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomopf.ent
new file mode 100644
index 0000000000..806b2fb4fe
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomopf.ent
@@ -0,0 +1,53 @@
+
+<!--
+ File isomopf.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY Aopf "&#x1D538;" ><!--/Bbb A, open face A -->
+<!ENTITY Bopf "&#x1D539;" ><!--/Bbb B, open face B -->
+<!ENTITY Copf "&#x1D53A;" ><!--/Bbb C, open face C -->
+<!ENTITY Dopf "&#x1D53B;" ><!--/Bbb D, open face D -->
+<!ENTITY Eopf "&#x1D53C;" ><!--/Bbb E, open face E -->
+<!ENTITY Fopf "&#x1D53D;" ><!--/Bbb F, open face F -->
+<!ENTITY Gopf "&#x1D53E;" ><!--/Bbb G, open face G -->
+<!ENTITY Hopf "&#x1D53F;" ><!--/Bbb H, open face H -->
+<!ENTITY Iopf "&#x1D540;" ><!--/Bbb I, open face I -->
+<!ENTITY Jopf "&#x1D541;" ><!--/Bbb J, open face J -->
+<!ENTITY Kopf "&#x1D542;" ><!--/Bbb K, open face K -->
+<!ENTITY Lopf "&#x1D543;" ><!--/Bbb L, open face L -->
+<!ENTITY Mopf "&#x1D544;" ><!--/Bbb M, open face M -->
+<!ENTITY Nopf "&#x1D545;" ><!--/Bbb N, open face N -->
+<!ENTITY Oopf "&#x1D546;" ><!--/Bbb O, open face O -->
+<!ENTITY Popf "&#x1D547;" ><!--/Bbb P, open face P -->
+<!ENTITY Qopf "&#x1D548;" ><!--/Bbb Q, open face Q -->
+<!ENTITY Ropf "&#x1D549;" ><!--/Bbb R, open face R -->
+<!ENTITY Sopf "&#x1D54A;" ><!--/Bbb S, open face S -->
+<!ENTITY Topf "&#x1D54B;" ><!--/Bbb T, open face T -->
+<!ENTITY Uopf "&#x1D54C;" ><!--/Bbb U, open face U -->
+<!ENTITY Vopf "&#x1D54D;" ><!--/Bbb V, open face V -->
+<!ENTITY Wopf "&#x1D54E;" ><!--/Bbb W, open face W -->
+<!ENTITY Xopf "&#x1D54F;" ><!--/Bbb X, open face X -->
+<!ENTITY Yopf "&#x1D550;" ><!--/Bbb Y, open face Y -->
+<!ENTITY Zopf "&#x1D551;" ><!--/Bbb Z, open face Z -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomscr.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomscr.ent
new file mode 100644
index 0000000000..a1bb39c36c
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isomscr.ent
@@ -0,0 +1,79 @@
+
+<!--
+ File isomscr.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ascr "&#x1D4B6;" ><!--/scr a, script letter a -->
+<!ENTITY Ascr "&#x1D49C;" ><!--/scr A, script letter A -->
+<!ENTITY bscr "&#x1D4B7;" ><!--/scr b, script letter b -->
+<!ENTITY Bscr "&#x1D49D;" ><!--/scr B, script letter B -->
+<!ENTITY cscr "&#x1D4B8;" ><!--/scr c, script letter c -->
+<!ENTITY Cscr "&#x1D49E;" ><!--/scr C, script letter C -->
+<!ENTITY dscr "&#x1D4B9;" ><!--/scr d, script letter d -->
+<!ENTITY Dscr "&#x1D49F;" ><!--/scr D, script letter D -->
+<!ENTITY escr "&#x1D4BA;" ><!--/scr e, script letter e -->
+<!ENTITY Escr "&#x1D4A0;" ><!--/scr E, script letter E -->
+<!ENTITY fscr "&#x1D4BB;" ><!--/scr f, script letter f -->
+<!ENTITY Fscr "&#x1D4A1;" ><!--/scr F, script letter F -->
+<!ENTITY gscr "&#x1D4BC;" ><!--/scr g, script letter g -->
+<!ENTITY Gscr "&#x1D4A2;" ><!--/scr G, script letter G -->
+<!ENTITY hscr "&#x1D4BD;" ><!--/scr h, script letter h -->
+<!ENTITY Hscr "&#x1D4A3;" ><!--/scr H, script letter H -->
+<!ENTITY iscr "&#x1D4BE;" ><!--/scr i, script letter i -->
+<!ENTITY Iscr "&#x1D4A4;" ><!--/scr I, script letter I -->
+<!ENTITY jscr "&#x1D4BF;" ><!--/scr j, script letter j -->
+<!ENTITY Jscr "&#x1D4A5;" ><!--/scr J, script letter J -->
+<!ENTITY kscr "&#x1D4C0;" ><!--/scr k, script letter k -->
+<!ENTITY Kscr "&#x1D4A6;" ><!--/scr K, script letter K -->
+<!ENTITY lscr "&#x1D4C1;" ><!--/scr l, script letter l -->
+<!ENTITY Lscr "&#x1D4A7;" ><!--/scr L, script letter L -->
+<!ENTITY mscr "&#x1D4C2;" ><!--/scr m, script letter m -->
+<!ENTITY Mscr "&#x1D4A8;" ><!--/scr M, script letter M -->
+<!ENTITY nscr "&#x1D4C3;" ><!--/scr n, script letter n -->
+<!ENTITY Nscr "&#x1D4A9;" ><!--/scr N, script letter N -->
+<!ENTITY oscr "&#x1D4C4;" ><!--/scr o, script letter o -->
+<!ENTITY Oscr "&#x1D4AA;" ><!--/scr O, script letter O -->
+<!ENTITY pscr "&#x1D4C5;" ><!--/scr p, script letter p -->
+<!ENTITY Pscr "&#x1D4AB;" ><!--/scr P, script letter P -->
+<!ENTITY qscr "&#x1D4C6;" ><!--/scr q, script letter q -->
+<!ENTITY Qscr "&#x1D4AC;" ><!--/scr Q, script letter Q -->
+<!ENTITY rscr "&#x1D4C7;" ><!--/scr r, script letter r -->
+<!ENTITY Rscr "&#x1D4AD;" ><!--/scr R, script letter R -->
+<!ENTITY sscr "&#x1D4C8;" ><!--/scr s, script letter s -->
+<!ENTITY Sscr "&#x1D4AE;" ><!--/scr S, script letter S -->
+<!ENTITY tscr "&#x1D4C9;" ><!--/scr t, script letter t -->
+<!ENTITY Tscr "&#x1D4AF;" ><!--/scr T, script letter T -->
+<!ENTITY uscr "&#x1D4CA;" ><!--/scr u, script letter u -->
+<!ENTITY Uscr "&#x1D4B0;" ><!--/scr U, script letter U -->
+<!ENTITY vscr "&#x1D4CB;" ><!--/scr v, script letter v -->
+<!ENTITY Vscr "&#x1D4B1;" ><!--/scr V, script letter V -->
+<!ENTITY wscr "&#x1D4CC;" ><!--/scr w, script letter w -->
+<!ENTITY Wscr "&#x1D4B2;" ><!--/scr W, script letter W -->
+<!ENTITY xscr "&#x1D4CD;" ><!--/scr x, script letter x -->
+<!ENTITY Xscr "&#x1D4B3;" ><!--/scr X, script letter X -->
+<!ENTITY yscr "&#x1D4CE;" ><!--/scr y, script letter y -->
+<!ENTITY Yscr "&#x1D4B4;" ><!--/scr Y, script letter Y -->
+<!ENTITY zscr "&#x1D4CF;" ><!--/scr z, script letter z -->
+<!ENTITY Zscr "&#x1D4B5;" ><!--/scr Z, script letter Z -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isonum.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isonum.ent
new file mode 100644
index 0000000000..e5a7002fb4
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isonum.ent
@@ -0,0 +1,103 @@
+
+<!--
+ File isonum.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY amp "&#x26;&#x00026;" ><!--=ampersand -->
+<!ENTITY apos "&#x00027;" ><!--=apostrophe -->
+<!ENTITY ast "&#x0002A;" ><!--/ast B: =asterisk -->
+<!ENTITY brvbar "&#x000A6;" ><!--=broken (vertical) bar -->
+<!ENTITY bsol "&#x0005C;" ><!--/backslash =reverse solidus -->
+<!ENTITY cent "&#x000A2;" ><!--=cent sign -->
+<!ENTITY colon "&#x0003A;" ><!--/colon P: -->
+<!ENTITY comma "&#x0002C;" ><!--P: =comma -->
+<!ENTITY commat "&#x00040;" ><!--=commercial at -->
+<!ENTITY copy "&#x000A9;" ><!--=copyright sign -->
+<!ENTITY curren "&#x000A4;" ><!--=general currency sign -->
+<!ENTITY darr "&#x02193;" ><!--/downarrow A: =downward arrow -->
+<!ENTITY deg "&#x000B0;" ><!--=degree sign -->
+<!ENTITY divide "&#x000F7;" ><!--/div B: =divide sign -->
+<!ENTITY dollar "&#x00024;" ><!--=dollar sign -->
+<!ENTITY equals "&#x0003D;" ><!--=equals sign R: -->
+<!ENTITY excl "&#x00021;" ><!--=exclamation mark -->
+<!ENTITY frac12 "&#x000BD;" ><!--=fraction one-half -->
+<!ENTITY frac14 "&#x000BC;" ><!--=fraction one-quarter -->
+<!ENTITY frac18 "&#x0215B;" ><!--=fraction one-eighth -->
+<!ENTITY frac34 "&#x000BE;" ><!--=fraction three-quarters -->
+<!ENTITY frac38 "&#x0215C;" ><!--=fraction three-eighths -->
+<!ENTITY frac58 "&#x0215D;" ><!--=fraction five-eighths -->
+<!ENTITY frac78 "&#x0215E;" ><!--=fraction seven-eighths -->
+<!ENTITY gt "&#x0003E;" ><!--=greater-than sign R: -->
+<!ENTITY half "&#x000BD;" ><!--=fraction one-half -->
+<!ENTITY horbar "&#x02015;" ><!--=horizontal bar -->
+<!ENTITY hyphen "&#x02010;" ><!--=hyphen -->
+<!ENTITY iexcl "&#x000A1;" ><!--=inverted exclamation mark -->
+<!ENTITY iquest "&#x000BF;" ><!--=inverted question mark -->
+<!ENTITY laquo "&#x000AB;" ><!--=angle quotation mark, left -->
+<!ENTITY larr "&#x02190;" ><!--/leftarrow /gets A: =leftward arrow -->
+<!ENTITY lcub "&#x0007B;" ><!--/lbrace O: =left curly bracket -->
+<!ENTITY ldquo "&#x0201C;" ><!--=double quotation mark, left -->
+<!ENTITY lowbar "&#x0005F;" ><!--=low line -->
+<!ENTITY lpar "&#x00028;" ><!--O: =left parenthesis -->
+<!ENTITY lsqb "&#x0005B;" ><!--/lbrack O: =left square bracket -->
+<!ENTITY lsquo "&#x02018;" ><!--=single quotation mark, left -->
+<!ENTITY lt "&#x26;&#x0003C;" ><!--=less-than sign R: -->
+<!ENTITY micro "&#x000B5;" ><!--=micro sign -->
+<!ENTITY middot "&#x000B7;" ><!--/centerdot B: =middle dot -->
+<!ENTITY nbsp "&#x000A0;" ><!--=no break (required) space -->
+<!ENTITY not "&#x000AC;" ><!--/neg /lnot =not sign -->
+<!ENTITY num "&#x00023;" ><!--=number sign -->
+<!ENTITY ohm "&#x02126;" ><!--=ohm sign -->
+<!ENTITY ordf "&#x000AA;" ><!--=ordinal indicator, feminine -->
+<!ENTITY ordm "&#x000BA;" ><!--=ordinal indicator, masculine -->
+<!ENTITY para "&#x000B6;" ><!--=pilcrow (paragraph sign) -->
+<!ENTITY percnt "&#x00025;" ><!--=percent sign -->
+<!ENTITY period "&#x0002E;" ><!--=full stop, period -->
+<!ENTITY plus "&#x0002B;" ><!--=plus sign B: -->
+<!ENTITY plusmn "&#x000B1;" ><!--/pm B: =plus-or-minus sign -->
+<!ENTITY pound "&#x000A3;" ><!--=pound sign -->
+<!ENTITY quest "&#x0003F;" ><!--=question mark -->
+<!ENTITY quot "&#x00022;" ><!--=quotation mark -->
+<!ENTITY raquo "&#x000BB;" ><!--=angle quotation mark, right -->
+<!ENTITY rarr "&#x02192;" ><!--/rightarrow /to A: =rightward arrow -->
+<!ENTITY rcub "&#x0007D;" ><!--/rbrace C: =right curly bracket -->
+<!ENTITY rdquo "&#x0201D;" ><!--=double quotation mark, right -->
+<!ENTITY reg "&#x000AE;" ><!--/circledR =registered sign -->
+<!ENTITY rpar "&#x00029;" ><!--C: =right parenthesis -->
+<!ENTITY rsqb "&#x0005D;" ><!--/rbrack C: =right square bracket -->
+<!ENTITY rsquo "&#x02019;" ><!--=single quotation mark, right -->
+<!ENTITY sect "&#x000A7;" ><!--=section sign -->
+<!ENTITY semi "&#x0003B;" ><!--=semicolon P: -->
+<!ENTITY shy "&#x000AD;" ><!--=soft hyphen -->
+<!ENTITY sol "&#x0002F;" ><!--=solidus -->
+<!ENTITY sung "&#x0266A;" ><!--=music note (sung text sign) -->
+<!ENTITY sup1 "&#x000B9;" ><!--=superscript one -->
+<!ENTITY sup2 "&#x000B2;" ><!--=superscript two -->
+<!ENTITY sup3 "&#x000B3;" ><!--=superscript three -->
+<!ENTITY times "&#x000D7;" ><!--/times B: =multiply sign -->
+<!ENTITY trade "&#x02122;" ><!--=trade mark sign -->
+<!ENTITY uarr "&#x02191;" ><!--/uparrow A: =upward arrow -->
+<!ENTITY verbar "&#x0007C;" ><!--/vert =vertical bar -->
+<!ENTITY yen "&#x000A5;" ><!--/yen =yen sign -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isopub.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isopub.ent
new file mode 100644
index 0000000000..5591fc390e
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isopub.ent
@@ -0,0 +1,111 @@
+
+<!--
+ File isopub.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY blank "&#x02423;" ><!--=significant blank symbol -->
+<!ENTITY blk12 "&#x02592;" ><!--=50% shaded block -->
+<!ENTITY blk14 "&#x02591;" ><!--=25% shaded block -->
+<!ENTITY blk34 "&#x02593;" ><!--=75% shaded block -->
+<!ENTITY block "&#x02588;" ><!--=full block -->
+<!ENTITY bull "&#x02022;" ><!--/bullet B: =round bullet, filled -->
+<!ENTITY caret "&#x02041;" ><!--=caret (insertion mark) -->
+<!ENTITY check "&#x02713;" ><!--/checkmark =tick, check mark -->
+<!ENTITY cir "&#x025CB;" ><!--/circ B: =circle, open -->
+<!ENTITY clubs "&#x02663;" ><!--/clubsuit =club suit symbol -->
+<!ENTITY copysr "&#x02117;" ><!--=sound recording copyright sign -->
+<!ENTITY cross "&#x02717;" ><!--=ballot cross -->
+<!ENTITY dagger "&#x02020;" ><!--/dagger B: =dagger -->
+<!ENTITY Dagger "&#x02021;" ><!--/ddagger B: =double dagger -->
+<!ENTITY dash "&#x02010;" ><!--=hyphen (true graphic) -->
+<!ENTITY diams "&#x02666;" ><!--/diamondsuit =diamond suit symbol -->
+<!ENTITY dlcrop "&#x0230D;" ><!--downward left crop mark -->
+<!ENTITY drcrop "&#x0230C;" ><!--downward right crop mark -->
+<!ENTITY dtri "&#x025BF;" ><!--/triangledown =down triangle, open -->
+<!ENTITY dtrif "&#x025BE;" ><!--/blacktriangledown =dn tri, filled -->
+<!ENTITY emsp "&#x02003;" ><!--=em space -->
+<!ENTITY emsp13 "&#x02004;" ><!--=1/3-em space -->
+<!ENTITY emsp14 "&#x02005;" ><!--=1/4-em space -->
+<!ENTITY ensp "&#x02002;" ><!--=en space (1/2-em) -->
+<!ENTITY female "&#x02640;" ><!--=female symbol -->
+<!ENTITY ffilig "&#x0FB03;" ><!--small ffi ligature -->
+<!ENTITY fflig "&#x0FB00;" ><!--small ff ligature -->
+<!ENTITY ffllig "&#x0FB04;" ><!--small ffl ligature -->
+<!ENTITY filig "&#x0FB01;" ><!--small fi ligature -->
+<!ENTITY flat "&#x0266D;" ><!--/flat =musical flat -->
+<!ENTITY fllig "&#x0FB02;" ><!--small fl ligature -->
+<!ENTITY frac13 "&#x02153;" ><!--=fraction one-third -->
+<!ENTITY frac15 "&#x02155;" ><!--=fraction one-fifth -->
+<!ENTITY frac16 "&#x02159;" ><!--=fraction one-sixth -->
+<!ENTITY frac23 "&#x02154;" ><!--=fraction two-thirds -->
+<!ENTITY frac25 "&#x02156;" ><!--=fraction two-fifths -->
+<!ENTITY frac35 "&#x02157;" ><!--=fraction three-fifths -->
+<!ENTITY frac45 "&#x02158;" ><!--=fraction four-fifths -->
+<!ENTITY frac56 "&#x0215A;" ><!--=fraction five-sixths -->
+<!ENTITY hairsp "&#x0200A;" ><!--=hair space -->
+<!ENTITY hearts "&#x02661;" ><!--/heartsuit =heart suit symbol -->
+<!ENTITY hellip "&#x02026;" ><!--=ellipsis (horizontal) -->
+<!ENTITY hybull "&#x02043;" ><!--rectangle, filled (hyphen bullet) -->
+<!ENTITY incare "&#x02105;" ><!--=in-care-of symbol -->
+<!ENTITY ldquor "&#x0201E;" ><!--=rising dbl quote, left (low) -->
+<!ENTITY lhblk "&#x02584;" ><!--=lower half block -->
+<!ENTITY loz "&#x025CA;" ><!--/lozenge - lozenge or total mark -->
+<!ENTITY lozf "&#x029EB;" ><!--/blacklozenge - lozenge, filled -->
+<!ENTITY lsquor "&#x0201A;" ><!--=rising single quote, left (low) -->
+<!ENTITY ltri "&#x025C3;" ><!--/triangleleft B: l triangle, open -->
+<!ENTITY ltrif "&#x025C2;" ><!--/blacktriangleleft R: =l tri, filled -->
+<!ENTITY male "&#x02642;" ><!--=male symbol -->
+<!ENTITY malt "&#x02720;" ><!--/maltese =maltese cross -->
+<!ENTITY marker "&#x025AE;" ><!--=histogram marker -->
+<!ENTITY mdash "&#x02014;" ><!--=em dash -->
+<!ENTITY mldr "&#x02026;" ><!--em leader -->
+<!ENTITY natur "&#x0266E;" ><!--/natural - music natural -->
+<!ENTITY ndash "&#x02013;" ><!--=en dash -->
+<!ENTITY nldr "&#x02025;" ><!--=double baseline dot (en leader) -->
+<!ENTITY numsp "&#x02007;" ><!--=digit space (width of a number) -->
+<!ENTITY phone "&#x0260E;" ><!--=telephone symbol -->
+<!ENTITY puncsp "&#x02008;" ><!--=punctuation space (width of comma) -->
+<!ENTITY rdquor "&#x0201D;" ><!--rising dbl quote, right (high) -->
+<!ENTITY rect "&#x025AD;" ><!--=rectangle, open -->
+<!ENTITY rsquor "&#x02019;" ><!--rising single quote, right (high) -->
+<!ENTITY rtri "&#x025B9;" ><!--/triangleright B: r triangle, open -->
+<!ENTITY rtrif "&#x025B8;" ><!--/blacktriangleright R: =r tri, filled -->
+<!ENTITY rx "&#x0211E;" ><!--pharmaceutical prescription (Rx) -->
+<!ENTITY sext "&#x02736;" ><!--sextile (6-pointed star) -->
+<!ENTITY sharp "&#x0266F;" ><!--/sharp =musical sharp -->
+<!ENTITY spades "&#x02660;" ><!--/spadesuit =spades suit symbol -->
+<!ENTITY squ "&#x025A1;" ><!--=square, open -->
+<!ENTITY squf "&#x025AA;" ><!--/blacksquare =sq bullet, filled -->
+<!ENTITY star "&#x022C6;" ><!--=star, open -->
+<!ENTITY starf "&#x02605;" ><!--/bigstar - star, filled -->
+<!ENTITY target "&#x02316;" ><!--register mark or target -->
+<!ENTITY telrec "&#x02315;" ><!--=telephone recorder symbol -->
+<!ENTITY thinsp "&#x02009;" ><!--=thin space (1/6-em) -->
+<!ENTITY uhblk "&#x02580;" ><!--=upper half block -->
+<!ENTITY ulcrop "&#x0230F;" ><!--upward left crop mark -->
+<!ENTITY urcrop "&#x0230E;" ><!--upward right crop mark -->
+<!ENTITY utri "&#x025B5;" ><!--/triangle =up triangle, open -->
+<!ENTITY utrif "&#x025B4;" ><!--/blacktriangle =up tri, filled -->
+<!ENTITY vellip "&#x022EE;" ><!--vertical ellipsis -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/isotech.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isotech.ent
new file mode 100644
index 0000000000..dc1fc01354
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/isotech.ent
@@ -0,0 +1,183 @@
+
+<!--
+ File isotech.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+ Entity names in this file are derived from files carrying the
+ following notice:
+
+ (C) International Organization for Standardization 1991
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acd "&#x0223F;" ><!--ac current -->
+<!ENTITY aleph "&#x02135;" ><!--/aleph aleph, Hebrew -->
+<!ENTITY and "&#x02227;" ><!--/wedge /land B: logical and -->
+<!ENTITY And "&#x02A53;" ><!--dbl logical and -->
+<!ENTITY andand "&#x02A55;" ><!--two logical and -->
+<!ENTITY andd "&#x02A5C;" ><!--and, horizontal dash -->
+<!ENTITY andslope "&#x02A58;" ><!--sloping large and -->
+<!ENTITY andv "&#x02A5A;" ><!--and with middle stem -->
+<!ENTITY angrt "&#x0221F;" ><!--right (90 degree) angle -->
+<!ENTITY angsph "&#x02222;" ><!--/sphericalangle angle-spherical -->
+<!ENTITY angst "&#x0212B;" ><!--Angstrom capital A, ring -->
+<!ENTITY ap "&#x02248;" ><!--/approx R: approximate -->
+<!ENTITY apacir "&#x02A6F;" ><!--approximate, circumflex accent -->
+<!ENTITY awconint "&#x02233;" ><!--contour integral, anti-clockwise -->
+<!ENTITY awint "&#x02A11;" ><!--anti clock-wise integration -->
+<!ENTITY becaus "&#x02235;" ><!--/because R: because -->
+<!ENTITY bernou "&#x0212C;" ><!--Bernoulli function (script capital B) -->
+<!ENTITY bne "&#x0003D;&#x020E5;" ><!--reverse not equal -->
+<!ENTITY bnequiv "&#x02261;&#x020E5;" ><!--reverse not equivalent -->
+<!ENTITY bnot "&#x02310;" ><!--reverse not -->
+<!ENTITY bNot "&#x02AED;" ><!--reverse not with two horizontal strokes -->
+<!ENTITY bottom "&#x022A5;" ><!--/bot bottom -->
+<!ENTITY cap "&#x02229;" ><!--/cap B: intersection -->
+<!ENTITY Cconint "&#x02230;" ><!--triple contour integral operator -->
+<!ENTITY cirfnint "&#x02A10;" ><!--circulation function -->
+<!ENTITY compfn "&#x02218;" ><!--/circ B: composite function (small circle) -->
+<!ENTITY cong "&#x02245;" ><!--/cong R: congruent with -->
+<!ENTITY conint "&#x0222E;" ><!--/oint L: contour integral operator -->
+<!ENTITY Conint "&#x0222F;" ><!--double contour integral operator -->
+<!ENTITY ctdot "&#x022EF;" ><!--/cdots, three dots, centered -->
+<!ENTITY cup "&#x0222A;" ><!--/cup B: union or logical sum -->
+<!ENTITY cwconint "&#x02232;" ><!--contour integral, clockwise -->
+<!ENTITY cwint "&#x02231;" ><!--clockwise integral -->
+<!ENTITY cylcty "&#x0232D;" ><!--cylindricity -->
+<!ENTITY disin "&#x022F2;" ><!--set membership, long horizontal stroke -->
+<!ENTITY Dot "&#x000A8;" ><!--dieresis or umlaut mark -->
+<!ENTITY DotDot "&#x020DC;" ><!--four dots above -->
+<!ENTITY dsol "&#x02052;" ><!--solidus, bar above -->
+<!ENTITY dtdot "&#x022F1;" ><!--/ddots, three dots, descending -->
+<!ENTITY dwangle "&#x029A6;" ><!--large downward pointing angle -->
+<!ENTITY epar "&#x022D5;" ><!--parallel, equal; equal or parallel -->
+<!ENTITY eparsl "&#x029E3;" ><!--parallel, slanted, equal; homothetically congruent to -->
+<!ENTITY equiv "&#x02261;" ><!--/equiv R: identical with -->
+<!ENTITY eqvparsl "&#x029E5;" ><!--equivalent, equal; congruent and parallel -->
+<!ENTITY exist "&#x02203;" ><!--/exists at least one exists -->
+<!ENTITY fnof "&#x00192;" ><!--function of (italic small f) -->
+<!ENTITY forall "&#x02200;" ><!--/forall for all -->
+<!ENTITY fpartint "&#x02A0D;" ><!--finite part integral -->
+<!ENTITY ge "&#x02265;" ><!--/geq /ge R: greater-than-or-equal -->
+<!ENTITY hamilt "&#x0210B;" ><!--Hamiltonian (script capital H) -->
+<!ENTITY iff "&#x021D4;" ><!--/iff if and only if -->
+<!ENTITY iinfin "&#x029DC;" ><!--infinity sign, incomplete -->
+<!ENTITY imped "&#x1D543;" ><!--impedance -->
+<!ENTITY infin "&#x0221E;" ><!--/infty infinity -->
+<!ENTITY int "&#x0222B;" ><!--/int L: integral operator -->
+<!ENTITY Int "&#x0222C;" ><!--double integral operator -->
+<!ENTITY intlarhk "&#x02A17;" ><!--integral, left arrow with hook -->
+<!ENTITY isin "&#x02208;" ><!--/in R: set membership -->
+<!ENTITY isindot "&#x022F5;" ><!--set membership, dot above -->
+<!ENTITY isinE "&#x022F9;" ><!--set membership, two horizontal strokes -->
+<!ENTITY isins "&#x022F4;" ><!--set membership, vertical bar on horizontal stroke -->
+<!ENTITY isinsv "&#x022F3;" ><!--large set membership, vertical bar on horizontal stroke -->
+<!ENTITY isinv "&#x02208;" ><!--set membership, variant -->
+<!ENTITY lagran "&#x02112;" ><!--Lagrangian (script capital L) -->
+<!ENTITY lang "&#x03008;" ><!--/langle O: left angle bracket -->
+<!ENTITY Lang "&#x0300A;" ><!--left angle bracket, double -->
+<!ENTITY lArr "&#x021D0;" ><!--/Leftarrow A: is implied by -->
+<!ENTITY lbbrk "&#x03014;" ><!--left broken bracket -->
+<!ENTITY le "&#x02264;" ><!--/leq /le R: less-than-or-equal -->
+<!ENTITY loang "&#x03018;" ><!--left open angular bracket -->
+<!ENTITY lobrk "&#x0301A;" ><!--left open bracket -->
+<!ENTITY lopar "&#x02985;" ><!--left open parenthesis -->
+<!ENTITY lowast "&#x02217;" ><!--low asterisk -->
+<!ENTITY minus "&#x02212;" ><!--B: minus sign -->
+<!ENTITY mnplus "&#x02213;" ><!--/mp B: minus-or-plus sign -->
+<!ENTITY nabla "&#x02207;" ><!--/nabla del, Hamilton operator -->
+<!ENTITY ne "&#x02260;" ><!--/ne /neq R: not equal -->
+<!ENTITY nedot "&#x02260;&#x02063;" ><!--not equal, dot -->
+<!ENTITY nhpar "&#x02AF2;" ><!--not, horizontal, parallel -->
+<!ENTITY ni "&#x0220B;" ><!--/ni /owns R: contains -->
+<!ENTITY nis "&#x022FC;" ><!--contains, vertical bar on horizontal stroke -->
+<!ENTITY nisd "&#x022FA;" ><!--contains, long horizontal stroke -->
+<!ENTITY niv "&#x0220B;" ><!--contains, variant -->
+<!ENTITY Not "&#x02AEC;" ><!--not with two horizontal strokes -->
+<!ENTITY notin "&#x02209;" ><!--/notin N: negated set membership -->
+<!ENTITY notindot "&#x022F6;&#x02063;" ><!--negated set membership, dot above -->
+<!ENTITY notinva "&#x02209;&#x00338;" ><!--negated set membership, variant -->
+<!ENTITY notinvb "&#x022F7;" ><!--negated set membership, variant -->
+<!ENTITY notinvc "&#x022F6;" ><!--negated set membership, variant -->
+<!ENTITY notni "&#x0220C;" ><!--negated contains -->
+<!ENTITY notniva "&#x0220C;" ><!--negated contains, variant -->
+<!ENTITY notnivb "&#x022FE;" ><!--contains, variant -->
+<!ENTITY notnivc "&#x022FD;" ><!--contains, variant -->
+<!ENTITY nparsl "&#x02225;&#x02063;&#x020E5;" ><!--not parallel, slanted -->
+<!ENTITY npart "&#x02202;&#x00338;" ><!--not partial differential -->
+<!ENTITY npolint "&#x02A14;" ><!--line integration, not including the pole -->
+<!ENTITY nvinfin "&#x029DE;" ><!--not, vert, infinity -->
+<!ENTITY olcross "&#x029BB;" ><!--circle, cross -->
+<!ENTITY or "&#x02228;" ><!--/vee /lor B: logical or -->
+<!ENTITY Or "&#x02A54;" ><!--dbl logical or -->
+<!ENTITY ord "&#x02A5D;" ><!--or, horizontal dash -->
+<!ENTITY order "&#x02134;" ><!--order of (script small o) -->
+<!ENTITY oror "&#x02A56;" ><!--two logical or -->
+<!ENTITY orslope "&#x02A57;" ><!--sloping large or -->
+<!ENTITY orv "&#x02A5B;" ><!--or with middle stem -->
+<!ENTITY par "&#x02225;" ><!--/parallel R: parallel -->
+<!ENTITY parsl "&#x02225;&#x02063;" ><!--parallel, slanted -->
+<!ENTITY part "&#x02202;" ><!--/partial partial differential -->
+<!ENTITY permil "&#x02030;" ><!--per thousand -->
+<!ENTITY perp "&#x022A5;" ><!--/perp R: perpendicular -->
+<!ENTITY pertenk "&#x02031;" ><!--per 10 thousand -->
+<!ENTITY phmmat "&#x02133;" ><!--physics M-matrix (script capital M) -->
+<!ENTITY pointint "&#x02A15;" ><!--integral around a point operator -->
+<!ENTITY prime "&#x02032;" ><!--/prime prime or minute -->
+<!ENTITY Prime "&#x02033;" ><!--double prime or second -->
+<!ENTITY profalar "&#x0232E;" ><!--all-around profile -->
+<!ENTITY profline "&#x02312;" ><!--profile of a line -->
+<!ENTITY profsurf "&#x02313;" ><!--profile of a surface -->
+<!ENTITY prop "&#x0221D;" ><!--/propto R: is proportional to -->
+<!ENTITY qint "&#x02A0C;" ><!--/iiiint quadruple integral operator -->
+<!ENTITY qprime "&#x02057;" ><!--quadruple prime -->
+<!ENTITY quatint "&#x02A16;" ><!--quaternion integral operator -->
+<!ENTITY radic "&#x0221A;" ><!--/surd radical -->
+<!ENTITY rang "&#x03009;" ><!--/rangle C: right angle bracket -->
+<!ENTITY Rang "&#x0300B;" ><!--right angle bracket, double -->
+<!ENTITY rArr "&#x021D2;" ><!--/Rightarrow A: implies -->
+<!ENTITY rbbrk "&#x03015;" ><!--right broken bracket -->
+<!ENTITY roang "&#x03019;" ><!--right open angular bracket -->
+<!ENTITY robrk "&#x0301B;" ><!--right open bracket -->
+<!ENTITY ropar "&#x02986;" ><!--right open parenthesis -->
+<!ENTITY rppolint "&#x02A12;" ><!--line integration, rectangular path around pole -->
+<!ENTITY scpolint "&#x02A13;" ><!--line integration, semi-circular path around pole -->
+<!ENTITY sim "&#x0223C;" ><!--/sim R: similar -->
+<!ENTITY simdot "&#x02A6A;" ><!--similar, dot -->
+<!ENTITY sime "&#x02243;" ><!--/simeq R: similar, equals -->
+<!ENTITY smeparsl "&#x029E4;" ><!--similar, parallel, slanted, equal -->
+<!ENTITY square "&#x025A1;" ><!--/square, square -->
+<!ENTITY squarf "&#x025AA;" ><!--/blacksquare, square, filled -->
+<!ENTITY sub "&#x02282;" ><!--/subset R: subset or is implied by -->
+<!ENTITY sube "&#x02286;" ><!--/subseteq R: subset, equals -->
+<!ENTITY sup "&#x02283;" ><!--/supset R: superset or implies -->
+<!ENTITY supe "&#x02287;" ><!--/supseteq R: superset, equals -->
+<!ENTITY tdot "&#x020DB;" ><!--three dots above -->
+<!ENTITY there4 "&#x02234;" ><!--/therefore R: therefore -->
+<!ENTITY tint "&#x0222D;" ><!--/iiint triple integral operator -->
+<!ENTITY top "&#x022A4;" ><!--/top top -->
+<!ENTITY topbot "&#x02336;" ><!--top and bottom -->
+<!ENTITY topcir "&#x02AF1;" ><!--top, circle below -->
+<!ENTITY tprime "&#x02034;" ><!--triple prime -->
+<!ENTITY utdot "&#x022F0;" ><!--three dots, ascending -->
+<!ENTITY uwangle "&#x029A7;" ><!--large upward pointing angle -->
+<!ENTITY vangrt "&#x022BE;" ><!--right angle, variant -->
+<!ENTITY veeeq "&#x0225A;" ><!--logical or, equals -->
+<!ENTITY Verbar "&#x02016;" ><!--/Vert dbl vertical bar -->
+<!ENTITY wedgeq "&#x02259;" ><!--/wedgeq R: corresponds to (wedge, equals) -->
+<!ENTITY xnis "&#x022FB;" ><!--large contains, vertical bar on horizontal stroke -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlalias.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlalias.ent
new file mode 100644
index 0000000000..f5901b3846
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlalias.ent
@@ -0,0 +1,529 @@
+
+<!--
+ File mmlalias.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+-->
+
+<!ENTITY angle "&#x02220;" ><!--alias ISOAMSO ang -->
+<!ENTITY approx "&#x02248;" ><!--alias ISOTECH ap -->
+<!ENTITY approxeq "&#x0224A;" ><!--alias ISOAMSR ape -->
+<!ENTITY backcong "&#x0224C;" ><!--alias ISOAMSR bcong -->
+<!ENTITY backepsilon "&#x0213C;" ><!--alias ISOAMSR bepsi -->
+<!ENTITY backprime "&#x02035;" ><!--alias ISOAMSO bprime -->
+<!ENTITY backsim "&#x0223D;" ><!--alias ISOAMSR bsim -->
+<!ENTITY backsimeq "&#x022CD;" ><!--alias ISOAMSR bsime -->
+<!ENTITY Backslash "&#x02216;" ><!--alias ISOAMSB setmn -->
+<!ENTITY barwedge "&#x022BC;" ><!--alias ISOAMSB barwed -->
+<!ENTITY because "&#x02235;" ><!--alias ISOTECH becaus -->
+<!ENTITY Because "&#x02235;" ><!--alias ISOTECH becaus -->
+<!ENTITY Bernoullis "&#x0212C;" ><!--alias ISOTECH bernou -->
+<!ENTITY between "&#x0226C;" ><!--alias ISOAMSR twixt -->
+<!ENTITY bigcap "&#x022C2;" ><!--alias ISOAMSB xcap -->
+<!ENTITY bigcirc "&#x025EF;" ><!--alias ISOAMSB xcirc -->
+<!ENTITY bigcup "&#x022C3;" ><!--alias ISOAMSB xcup -->
+<!ENTITY bigodot "&#x02299;" ><!--alias ISOAMSB xodot -->
+<!ENTITY bigoplus "&#x02295;" ><!--alias ISOAMSB xoplus -->
+<!ENTITY bigotimes "&#x02297;" ><!--alias ISOAMSB xotime -->
+<!ENTITY bigsqcup "&#x02294;" ><!--alias ISOAMSB xsqcup -->
+<!ENTITY bigstar "&#x02605;" ><!--ISOPUB starf -->
+<!ENTITY bigtriangledown "&#x025BD;" ><!--alias ISOAMSB xdtri -->
+<!ENTITY bigtriangleup "&#x025B3;" ><!--alias ISOAMSB xutri -->
+<!ENTITY biguplus "&#x0228E;" ><!--alias ISOAMSB xuplus -->
+<!ENTITY bigvee "&#x022C1;" ><!--alias ISOAMSB xvee -->
+<!ENTITY bigwedge "&#x022C0;" ><!--alias ISOAMSB xwedge -->
+<!ENTITY bkarow "&#x0290D;" ><!--alias ISOAMSA rbarr -->
+<!ENTITY blacklozenge "&#x029EB;" ><!--alias ISOPUB lozf -->
+<!ENTITY blacksquare "&#x025AA;" ><!--ISOTECH squarf -->
+<!ENTITY blacktriangle "&#x025B4;" ><!--alias ISOPUB utrif -->
+<!ENTITY blacktriangledown "&#x025BE;" ><!--alias ISOPUB dtrif -->
+<!ENTITY blacktriangleleft "&#x025C2;" ><!--alias ISOPUB ltrif -->
+<!ENTITY blacktriangleright "&#x025B8;" ><!--alias ISOPUB rtrif -->
+<!ENTITY bot "&#x022A5;" ><!--alias ISOTECH bottom -->
+<!ENTITY boxminus "&#x0229F;" ><!--alias ISOAMSB minusb -->
+<!ENTITY boxplus "&#x0229E;" ><!--alias ISOAMSB plusb -->
+<!ENTITY boxtimes "&#x022A0;" ><!--alias ISOAMSB timesb -->
+<!ENTITY Breve "&#x002D8;" ><!--alias ISODIA breve -->
+<!ENTITY bullet "&#x02022;" ><!--alias ISOPUB bull -->
+<!ENTITY bumpeq "&#x0224F;" ><!--alias ISOAMSR bumpe -->
+<!ENTITY Bumpeq "&#x0224E;" ><!--alias ISOAMSR bump -->
+<!ENTITY Cedilla "&#x000B8;" ><!--alias ISODIA cedil -->
+<!ENTITY centerdot "&#x000B7;" ><!--alias ISONUM middot -->
+<!ENTITY CenterDot "&#x000B7;" ><!--alias ISONUM middot -->
+<!ENTITY checkmark "&#x02713;" ><!--alias ISOPUB check -->
+<!ENTITY circeq "&#x02257;" ><!--alias ISOAMSR cire -->
+<!ENTITY circlearrowleft "&#x021BA;" ><!--alias ISOAMSA olarr -->
+<!ENTITY circlearrowright "&#x021BB;" ><!--alias ISOAMSA orarr -->
+<!ENTITY circledast "&#x0229B;" ><!--alias ISOAMSB oast -->
+<!ENTITY circledcirc "&#x0229A;" ><!--alias ISOAMSB ocir -->
+<!ENTITY circleddash "&#x0229D;" ><!--alias ISOAMSB odash -->
+<!ENTITY CircleDot "&#x02299;" ><!--alias ISOAMSB odot -->
+<!ENTITY circledR "&#x000AE;" ><!--alias ISONUM reg -->
+<!ENTITY circledS "&#x024C8;" ><!--alias ISOAMSO oS -->
+<!ENTITY CircleMinus "&#x02296;" ><!--alias ISOAMSB ominus -->
+<!ENTITY CirclePlus "&#x02295;" ><!--alias ISOAMSB oplus -->
+<!ENTITY CircleTimes "&#x02297;" ><!--alias ISOAMSB otimes -->
+<!ENTITY ClockwiseContourIntegral "&#x02232;" ><!--alias ISOTECH cwconint -->
+<!ENTITY CloseCurlyDoubleQuote "&#x0201D;" ><!--alias ISONUM rdquo -->
+<!ENTITY CloseCurlyQuote "&#x02019;" ><!--alias ISONUM rsquo -->
+<!ENTITY clubsuit "&#x02663;" ><!--ISOPUB clubs -->
+<!ENTITY coloneq "&#x02254;" ><!--alias ISOAMSR colone -->
+<!ENTITY complement "&#x02201;" ><!--alias ISOAMSO comp -->
+<!ENTITY Congruent "&#x02261;" ><!--alias ISOTECH equiv -->
+<!ENTITY ContourIntegral "&#x0222E;" ><!--alias ISOTECH conint -->
+<!ENTITY Coproduct "&#x02210;" ><!--alias ISOAMSB coprod -->
+<!ENTITY CounterClockwiseContourIntegral "&#x02233;" ><!--alias ISOTECH awconint -->
+<!ENTITY CupCap "&#x0224D;" ><!--alias ISOAMSR asymp -->
+<!ENTITY curlyeqprec "&#x022DE;" ><!--alias ISOAMSR cuepr -->
+<!ENTITY curlyeqsucc "&#x022DF;" ><!--alias ISOAMSR cuesc -->
+<!ENTITY curlyvee "&#x022CE;" ><!--alias ISOAMSB cuvee -->
+<!ENTITY curlywedge "&#x022CF;" ><!--alias ISOAMSB cuwed -->
+<!ENTITY curvearrowleft "&#x021B6;" ><!--alias ISOAMSA cularr -->
+<!ENTITY curvearrowright "&#x021B7;" ><!--alias ISOAMSA curarr -->
+<!ENTITY dbkarow "&#x0290F;" ><!--alias ISOAMSA rBarr -->
+<!ENTITY ddagger "&#x02021;" ><!--alias ISOPUB Dagger -->
+<!ENTITY ddotseq "&#x02A77;" ><!--alias ISOAMSR eDDot -->
+<!ENTITY Del "&#x02207;" ><!--alias ISOTECH nabla -->
+<!ENTITY DiacriticalAcute "&#x000B4;" ><!--alias ISODIA acute -->
+<!ENTITY DiacriticalDot "&#x002D9;" ><!--alias ISODIA dot -->
+<!ENTITY DiacriticalDoubleAcute "&#x002DD;" ><!--alias ISODIA dblac -->
+<!ENTITY DiacriticalGrave "&#x00060;" ><!--alias ISODIA grave -->
+<!ENTITY DiacriticalTilde "&#x002DC;" ><!--alias ISODIA tilde -->
+<!ENTITY diamond "&#x022C4;" ><!--alias ISOAMSB diam -->
+<!ENTITY Diamond "&#x022C4;" ><!--alias ISOAMSB diam -->
+<!ENTITY diamondsuit "&#x02666;" ><!--ISOPUB diams -->
+<!ENTITY digamma "&#x003DC;" ><!--alias ISOGRK3 gammad -->
+<!ENTITY div "&#x000F7;" ><!--alias ISONUM divide -->
+<!ENTITY divideontimes "&#x022C7;" ><!--alias ISOAMSB divonx -->
+<!ENTITY doteq "&#x02250;" ><!--alias ISOAMSR esdot -->
+<!ENTITY doteqdot "&#x02251;" ><!--alias ISOAMSR eDot -->
+<!ENTITY DotEqual "&#x02250;" ><!--alias ISOAMSR esdot -->
+<!ENTITY dotminus "&#x02238;" ><!--alias ISOAMSB minusd -->
+<!ENTITY dotplus "&#x02214;" ><!--alias ISOAMSB plusdo -->
+<!ENTITY dotsquare "&#x022A1;" ><!--alias ISOAMSB sdotb -->
+<!ENTITY doublebarwedge "&#x02306;" ><!--alias ISOAMSB Barwed -->
+<!ENTITY DoubleContourIntegral "&#x0222F;" ><!--alias ISOTECH Conint -->
+<!ENTITY DoubleDot "&#x000A8;" ><!--alias ISODIA die -->
+<!ENTITY DoubleDownArrow "&#x021D3;" ><!--alias ISOAMSA dArr -->
+<!ENTITY DoubleLeftArrow "&#x021D0;" ><!--alias ISOTECH lArr -->
+<!ENTITY DoubleLeftRightArrow "&#x021D4;" ><!--alias ISOAMSA hArr -->
+<!ENTITY DoubleLeftTee "&#x02AE4;" ><!--alias for &Dashv; -->
+<!ENTITY DoubleLongLeftArrow "&#x021D0;" ><!--alias ISOAMSA xlArr -->
+<!ENTITY DoubleLongLeftRightArrow "&#x021D4;" ><!--alias ISOAMSA xhArr -->
+<!ENTITY DoubleLongRightArrow "&#x021D2;" ><!--alias ISOAMSA xrArr -->
+<!ENTITY DoubleRightArrow "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY DoubleRightTee "&#x022A8;" ><!--alias ISOAMSR vDash -->
+<!ENTITY DoubleUpArrow "&#x021D1;" ><!--alias ISOAMSA uArr -->
+<!ENTITY DoubleUpDownArrow "&#x021D5;" ><!--alias ISOAMSA vArr -->
+<!ENTITY DoubleVerticalBar "&#x02225;" ><!--alias ISOTECH par -->
+<!ENTITY downarrow "&#x02193;" ><!--alias ISONUM darr -->
+<!ENTITY Downarrow "&#x021D3;" ><!--alias ISOAMSA dArr -->
+<!ENTITY DownArrow "&#x02193;" ><!--alias ISONUM darr -->
+<!ENTITY DownArrowUpArrow "&#x021F5;" ><!--alias ISOAMSA duarr -->
+<!ENTITY downdownarrows "&#x021CA;" ><!--alias ISOAMSA ddarr -->
+<!ENTITY downharpoonleft "&#x021C3;" ><!--alias ISOAMSA dharl -->
+<!ENTITY downharpoonright "&#x021C2;" ><!--alias ISOAMSA dharr -->
+<!ENTITY DownLeftVector "&#x021BD;" ><!--alias ISOAMSA lhard -->
+<!ENTITY DownRightVector "&#x021C1;" ><!--alias ISOAMSA rhard -->
+<!ENTITY DownTee "&#x022A4;" ><!--alias ISOTECH top -->
+<!ENTITY drbkarow "&#x02910;" ><!--alias ISOAMSA RBarr -->
+<!ENTITY Element "&#x02208;" ><!--alias ISOTECH isinv -->
+<!ENTITY emptyset "&#x02205;&#x02063;" ><!--alias ISOAMSO empty -->
+<!ENTITY eqcirc "&#x02256;" ><!--alias ISOAMSR ecir -->
+<!ENTITY eqcolon "&#x02255;" ><!--alias ISOAMSR ecolon -->
+<!ENTITY eqsim "&#x02242;" ><!--alias ISOAMSR esim -->
+<!ENTITY eqslantgtr "&#x022DD;" ><!--alias ISOAMSR egs -->
+<!ENTITY eqslantless "&#x022DC;" ><!--alias ISOAMSR els -->
+<!ENTITY EqualTilde "&#x02242;" ><!--alias ISOAMSR esim -->
+<!ENTITY Equilibrium "&#x021CC;" ><!--alias ISOAMSA rlhar -->
+<!ENTITY Exists "&#x02203;" ><!--alias ISOTECH exist -->
+<!ENTITY fallingdotseq "&#x02252;" ><!--alias ISOAMSR efDot -->
+<!ENTITY ForAll "&#x02200;" ><!--alias ISOTECH forall -->
+<!ENTITY geq "&#x02265;" ><!--alias ISOTECH ge -->
+<!ENTITY geqq "&#x02267;" ><!--alias ISOAMSR gE -->
+<!ENTITY geqslant "&#x02A7E;" ><!--alias ISOAMSR ges -->
+<!ENTITY gg "&#x0226B;" ><!--alias ISOAMSR Gt -->
+<!ENTITY ggg "&#x022D9;" ><!--alias ISOAMSR Gg -->
+<!ENTITY gnapprox "&#x02A8A;" ><!--alias ISOAMSN gnap -->
+<!ENTITY gneq "&#x02269;" ><!--alias ISOAMSN gne -->
+<!ENTITY gneqq "&#x02269;" ><!--alias ISOAMSN gnE -->
+<!ENTITY GreaterEqual "&#x02265;" ><!--alias ISOTECH ge -->
+<!ENTITY GreaterEqualLess "&#x022DB;" ><!--alias ISOAMSR gel -->
+<!ENTITY GreaterFullEqual "&#x02267;" ><!--alias ISOAMSR gE -->
+<!ENTITY GreaterLess "&#x02277;" ><!--alias ISOAMSR gl -->
+<!ENTITY GreaterSlantEqual "&#x02A7E;" ><!--alias ISOAMSR ges -->
+<!ENTITY GreaterTilde "&#x02273;" ><!--alias ISOAMSR gsim -->
+<!ENTITY gtrapprox "&#x02273;" ><!--alias ISOAMSR gap -->
+<!ENTITY gtrdot "&#x022D7;" ><!--alias ISOAMSR gtdot -->
+<!ENTITY gtreqless "&#x022DB;" ><!--alias ISOAMSR gel -->
+<!ENTITY gtreqqless "&#x022DB;" ><!--alias ISOAMSR gEl -->
+<!ENTITY gtrless "&#x02277;" ><!--alias ISOAMSR gl -->
+<!ENTITY gtrsim "&#x02273;" ><!--alias ISOAMSR gsim -->
+<!ENTITY gvertneqq "&#x02269;&#x00338;" ><!--alias ISOAMSN gvnE -->
+<!ENTITY Hacek "&#x002C7;" ><!--alias ISODIA caron -->
+<!ENTITY Hat "&#x00302;" ><!--circumflex accent (circ in ISODIA) -->
+<!ENTITY hbar "&#x0210F;" ><!--alias ISOAMSO plank -->
+<!ENTITY heartsuit "&#x02661;" ><!--ISOPUB hearts -->
+<!ENTITY hksearow "&#x02925;" ><!--alias ISOAMSA searhk -->
+<!ENTITY hkswarow "&#x02926;" ><!--alias ISOAMSA swarhk -->
+<!ENTITY hookleftarrow "&#x021A9;" ><!--alias ISOAMSA larrhk -->
+<!ENTITY hookrightarrow "&#x021AA;" ><!--alias ISOAMSA rarrhk -->
+<!ENTITY hslash "&#x0210F;" ><!--alias ISOAMSO plankv -->
+<!ENTITY HumpDownHump "&#x0224E;" ><!--alias ISOAMSR bump -->
+<!ENTITY HumpEqual "&#x0224F;" ><!--alias ISOAMSR bumpe -->
+<!ENTITY iiiint "&#x02A0C;" ><!--alias ISOTECH qint -->
+<!ENTITY iiint "&#x0222D;" ><!--alias ISOTECH tint -->
+<!ENTITY Im "&#x02111;" ><!--alias ISOAMSO image -->
+<!ENTITY imagpart "&#x02111;" ><!--alias ISOAMSO image -->
+<!ENTITY Implies "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY in "&#x02208;" ><!--ISOTECH isin -->
+<!ENTITY Integral "&#x0222B;" ><!--alias ISOTECH int -->
+<!ENTITY intercal "&#x022BA;" ><!--alias ISOAMSB intcal -->
+<!ENTITY Intersection "&#x022C2;" ><!--alias ISOAMSB xcap -->
+<!ENTITY intprod "&#x02A3C;" ><!--alias ISOAMSB iprod -->
+<!ENTITY langle "&#x03008;" ><!--alias ISOTECH lang -->
+<!ENTITY lbrace "&#x0007B;" ><!--alias ISONUM lcub -->
+<!ENTITY lbrack "&#x0005B;" ><!--alias ISONUM lsqb -->
+<!ENTITY LeftAngleBracket "&#x03008;" ><!--alias ISOTECH lang -->
+<!ENTITY leftarrow "&#x02190;" ><!--alias ISONUM larr -->
+<!ENTITY Leftarrow "&#x021D0;" ><!--alias ISOTECH lArr -->
+<!ENTITY LeftArrow "&#x02190;" ><!--alias ISONUM larr -->
+<!ENTITY LeftArrowRightArrow "&#x021C6;" ><!--alias ISOAMSA lrarr -->
+<!ENTITY leftarrowtail "&#x021A2;" ><!--alias ISOAMSA larrtl -->
+<!ENTITY LeftCeiling "&#x02308;" ><!--alias ISOAMSC lceil -->
+<!ENTITY LeftDoubleBracket "&#x0301A;" ><!--left double bracket delimiter -->
+<!ENTITY LeftDownVector "&#x021C3;" ><!--alias ISOAMSA dharl -->
+<!ENTITY LeftFloor "&#x0230A;" ><!--alias ISOAMSC lfloor -->
+<!ENTITY leftharpoondown "&#x021BD;" ><!--alias ISOAMSA lhard -->
+<!ENTITY leftharpoonup "&#x021BC;" ><!--alias ISOAMSA lharu -->
+<!ENTITY leftleftarrows "&#x021C7;" ><!--alias ISOAMSA llarr -->
+<!ENTITY leftrightarrow "&#x02194;" ><!--alias ISOAMSA harr -->
+<!ENTITY Leftrightarrow "&#x021D4;" ><!--alias ISOAMSA hArr -->
+<!ENTITY LeftRightArrow "&#x02194;" ><!--alias ISOAMSA harr -->
+<!ENTITY leftrightarrows "&#x021C6;" ><!--alias ISOAMSA lrarr -->
+<!ENTITY leftrightharpoons "&#x021CB;" ><!--alias ISOAMSA lrhar -->
+<!ENTITY leftrightsquigarrow "&#x021AD;" ><!--alias ISOAMSA harrw -->
+<!ENTITY LeftTee "&#x022A3;" ><!--alias ISOAMSR dashv -->
+<!ENTITY leftthreetimes "&#x022CB;" ><!--alias ISOAMSB lthree -->
+<!ENTITY LeftTriangle "&#x022B2;" ><!--alias ISOAMSR vltri -->
+<!ENTITY LeftTriangleEqual "&#x022B4;" ><!--alias ISOAMSR ltrie -->
+<!ENTITY LeftUpVector "&#x021BF;" ><!--alias ISOAMSA uharl -->
+<!ENTITY LeftVector "&#x021BC;" ><!--alias ISOAMSA lharu -->
+<!ENTITY leq "&#x02264;" ><!--alias ISOTECH le -->
+<!ENTITY leqq "&#x02266;" ><!--alias ISOAMSR lE -->
+<!ENTITY leqslant "&#x02A7D;" ><!--alias ISOAMSR les -->
+<!ENTITY lessapprox "&#x02272;" ><!--alias ISOAMSR lap -->
+<!ENTITY lessdot "&#x022D6;" ><!--alias ISOAMSR ltdot -->
+<!ENTITY lesseqgtr "&#x022DA;" ><!--alias ISOAMSR leg -->
+<!ENTITY lesseqqgtr "&#x022DA;" ><!--alias ISOAMSR lEg -->
+<!ENTITY LessEqualGreater "&#x022DA;" ><!--alias ISOAMSR leg -->
+<!ENTITY LessFullEqual "&#x02266;" ><!--alias ISOAMSR lE -->
+<!ENTITY LessGreater "&#x02276;" ><!--alias ISOAMSR lg -->
+<!ENTITY lessgtr "&#x02276;" ><!--alias ISOAMSR lg -->
+<!ENTITY lesssim "&#x02272;" ><!--alias ISOAMSR lsim -->
+<!ENTITY LessSlantEqual "&#x02A7D;" ><!--alias ISOAMSR les -->
+<!ENTITY LessTilde "&#x02272;" ><!--alias ISOAMSR lsim -->
+<!ENTITY ll "&#x0226A;" ><!--alias ISOAMSR Lt -->
+<!ENTITY llcorner "&#x0231E;" ><!--alias ISOAMSC dlcorn -->
+<!ENTITY Lleftarrow "&#x021DA;" ><!--alias ISOAMSA lAarr -->
+<!ENTITY lmoustache "&#x02998;" ><!--alias ISOAMSC lmoust -->
+<!ENTITY lnapprox "&#x02A89;" ><!--alias ISOAMSN lnap -->
+<!ENTITY lneq "&#x02268;" ><!--alias ISOAMSN lne -->
+<!ENTITY lneqq "&#x02268;" ><!--alias ISOAMSN lnE -->
+<!ENTITY longleftarrow "&#x02190;" ><!--alias ISOAMSA xlarr -->
+<!ENTITY Longleftarrow "&#x021D0;" ><!--alias ISOAMSA xlArr -->
+<!ENTITY LongLeftArrow "&#x02190;" ><!--alias ISOAMSA xlarr -->
+<!ENTITY longleftrightarrow "&#x02194;" ><!--alias ISOAMSA xharr -->
+<!ENTITY Longleftrightarrow "&#x021D4;" ><!--alias ISOAMSA xhArr -->
+<!ENTITY LongLeftRightArrow "&#x02194;" ><!--alias ISOAMSA xharr -->
+<!ENTITY longmapsto "&#x021A6;" ><!--alias ISOAMSA xmap -->
+<!ENTITY longrightarrow "&#x02192;" ><!--alias ISOAMSA xrarr -->
+<!ENTITY Longrightarrow "&#x021D2;" ><!--alias ISOAMSA xrArr -->
+<!ENTITY LongRightArrow "&#x02192;" ><!--alias ISOAMSA xrarr -->
+<!ENTITY looparrowleft "&#x021AB;" ><!--alias ISOAMSA larrlp -->
+<!ENTITY looparrowright "&#x021AC;" ><!--alias ISOAMSA rarrlp -->
+<!ENTITY LowerLeftArrow "&#x02199;" ><!--alias ISOAMSA swarr -->
+<!ENTITY LowerRightArrow "&#x02198;" ><!--alias ISOAMSA searr -->
+<!ENTITY lozenge "&#x025CA;" ><!--alias ISOPUB loz -->
+<!ENTITY lrcorner "&#x0231F;" ><!--alias ISOAMSC drcorn -->
+<!ENTITY Lsh "&#x021B0;" ><!--alias ISOAMSA lsh -->
+<!ENTITY lvertneqq "&#x02268;&#x00338;" ><!--alias ISOAMSN lvnE -->
+<!ENTITY maltese "&#x02720;" ><!--alias ISOPUB malt -->
+<!ENTITY mapsto "&#x021A6;" ><!--alias ISOAMSA map -->
+<!ENTITY measuredangle "&#x02221;" ><!--alias ISOAMSO angmsd -->
+<!ENTITY MinusPlus "&#x02213;" ><!--alias ISOTECH mnplus -->
+<!ENTITY mp "&#x02213;" ><!--alias ISOTECH mnplus -->
+<!ENTITY multimap "&#x022B8;" ><!--alias ISOAMSA mumap -->
+<!ENTITY napprox "&#x02249;" ><!--alias ISOAMSN nap -->
+<!ENTITY natural "&#x0266E;" ><!--alias ISOPUB natur -->
+<!ENTITY nearrow "&#x02197;" ><!--alias ISOAMSA nearr -->
+<!ENTITY NestedGreaterGreater "&#x0226B;" ><!--alias ISOAMSR Gt -->
+<!ENTITY NestedLessLess "&#x0226A;" ><!--alias ISOAMSR Lt -->
+<!ENTITY nexists "&#x02204;" ><!--alias ISOAMSO nexist -->
+<!ENTITY ngeq "&#x02271;&#x020E5;" ><!--alias ISOAMSN nge -->
+<!ENTITY ngeqq "&#x02271;" ><!--alias ISOAMSN ngE -->
+<!ENTITY ngeqslant "&#x02271;" ><!--alias ISOAMSN nges -->
+<!ENTITY ngtr "&#x0226F;" ><!--alias ISOAMSN ngt -->
+<!ENTITY nleftarrow "&#x0219A;" ><!--alias ISOAMSA nlarr -->
+<!ENTITY nLeftarrow "&#x021CD;" ><!--alias ISOAMSA nlArr -->
+<!ENTITY nleftrightarrow "&#x021AE;" ><!--alias ISOAMSA nharr -->
+<!ENTITY nLeftrightarrow "&#x021CE;" ><!--alias ISOAMSA nhArr -->
+<!ENTITY nleq "&#x02270;&#x020E5;" ><!--alias ISOAMSN nle -->
+<!ENTITY nleqq "&#x02270;" ><!--alias ISOAMSN nlE -->
+<!ENTITY nleqslant "&#x02270;" ><!--alias ISOAMSN nles -->
+<!ENTITY nless "&#x0226E;" ><!--alias ISOAMSN nlt -->
+<!ENTITY NotCongruent "&#x02262;" ><!--alias ISOAMSN nequiv -->
+<!ENTITY NotDoubleVerticalBar "&#x02226;" ><!--alias ISOAMSN npar -->
+<!ENTITY NotElement "&#x02209;" ><!--alias ISOTECH notin -->
+<!ENTITY NotEqual "&#x02260;" ><!--alias ISOTECH ne -->
+<!ENTITY NotExists "&#x02204;" ><!--alias ISOAMSO nexist -->
+<!ENTITY NotGreater "&#x0226F;" ><!--alias ISOAMSN ngt -->
+<!ENTITY NotGreaterEqual "&#x02271;&#x020E5;" ><!--alias ISOAMSN nge -->
+<!ENTITY NotGreaterFullEqual "&#x02270;" ><!--alias ISOAMSN nlE -->
+<!ENTITY NotGreaterGreater "&#x0226B;&#x00338;&#x02063;" ><!--alias ISOAMSN nGtv -->
+<!ENTITY NotGreaterLess "&#x02279;" ><!--alias ISOAMSN ntvgl -->
+<!ENTITY NotGreaterSlantEqual "&#x02271;" ><!--alias ISOAMSN nges -->
+<!ENTITY NotGreaterTilde "&#x02275;" ><!--alias ISOAMSN ngsim -->
+<!ENTITY NotLeftTriangle "&#x022EA;" ><!--alias ISOAMSN nltri -->
+<!ENTITY NotLeftTriangleEqual "&#x022EC;" ><!--alias ISOAMSN nltrie -->
+<!ENTITY NotLess "&#x0226E;" ><!--alias ISOAMSN nlt -->
+<!ENTITY NotLessEqual "&#x02270;&#x020E5;" ><!--alias ISOAMSN nle -->
+<!ENTITY NotLessGreater "&#x02278;" ><!--alias ISOAMSN ntvlg -->
+<!ENTITY NotLessLess "&#x0226A;&#x00338;&#x02063;" ><!--alias ISOAMSN nLtv -->
+<!ENTITY NotLessSlantEqual "&#x02270;" ><!--alias ISOAMSN nles -->
+<!ENTITY NotLessTilde "&#x02274;" ><!--alias ISOAMSN nlsim -->
+<!ENTITY NotPrecedes "&#x02280;" ><!--alias ISOAMSN npr -->
+<!ENTITY NotPrecedesEqual "&#x02AAF;&#x00338;" ><!--alias ISOAMSN npre -->
+<!ENTITY NotPrecedesSlantEqual "&#x022E0;" ><!--alias ISOAMSN nprcue -->
+<!ENTITY NotReverseElement "&#x0220C;" ><!--alias ISOTECH notniva -->
+<!ENTITY NotRightTriangle "&#x022EB;" ><!--alias ISOAMSN nrtri -->
+<!ENTITY NotRightTriangleEqual "&#x022ED;" ><!--alias ISOAMSN nrtrie -->
+<!ENTITY NotSquareSubsetEqual "&#x022E2;" ><!--alias ISOAMSN nsqsube -->
+<!ENTITY NotSquareSupersetEqual "&#x022E3;" ><!--alias ISOAMSN nsqsupe -->
+<!ENTITY NotSubset "&#x02284;" ><!--alias ISOAMSN vnsub -->
+<!ENTITY NotSubsetEqual "&#x02288;" ><!--alias ISOAMSN nsube -->
+<!ENTITY NotSucceeds "&#x02281;" ><!--alias ISOAMSN nsc -->
+<!ENTITY NotSucceedsEqual "&#x02AB0;&#x00338;" ><!--alias ISOAMSN nsce -->
+<!ENTITY NotSucceedsSlantEqual "&#x022E1;" ><!--alias ISOAMSN nsccue -->
+<!ENTITY NotSuperset "&#x02285;" ><!--alias ISOAMSN vnsup -->
+<!ENTITY NotSupersetEqual "&#x02289;" ><!--alias ISOAMSN nsupe -->
+<!ENTITY NotTilde "&#x02241;" ><!--alias ISOAMSN nsim -->
+<!ENTITY NotTildeEqual "&#x02244;" ><!--alias ISOAMSN nsime -->
+<!ENTITY NotTildeFullEqual "&#x02247;" ><!--alias ISOAMSN ncong -->
+<!ENTITY NotTildeTilde "&#x02249;" ><!--alias ISOAMSN nap -->
+<!ENTITY NotVerticalBar "&#x02224;" ><!--alias ISOAMSN nmid -->
+<!ENTITY nparallel "&#x02226;" ><!--alias ISOAMSN npar -->
+<!ENTITY nprec "&#x02280;" ><!--alias ISOAMSN npr -->
+<!ENTITY npreceq "&#x02AAF;&#x00338;" ><!--alias ISOAMSN npre -->
+<!ENTITY nrightarrow "&#x0219B;" ><!--alias ISOAMSA nrarr -->
+<!ENTITY nRightarrow "&#x021CF;" ><!--alias ISOAMSA nrArr -->
+<!ENTITY nshortmid "&#x02224;&#x02063;" ><!--alias ISOAMSN nsmid -->
+<!ENTITY nshortparallel "&#x02226;&#x02063;" ><!--alias ISOAMSN nspar -->
+<!ENTITY nsimeq "&#x02244;" ><!--alias ISOAMSN nsime -->
+<!ENTITY nsubset "&#x02284;" ><!--alias ISOAMSN vnsub -->
+<!ENTITY nsubseteq "&#x02288;" ><!--alias ISOAMSN nsube -->
+<!ENTITY nsubseteqq "&#x02288;" ><!--alias ISOAMSN nsubE -->
+<!ENTITY nsucc "&#x02281;" ><!--alias ISOAMSN nsc -->
+<!ENTITY nsucceq "&#x02AB0;&#x00338;" ><!--alias ISOAMSN nsce -->
+<!ENTITY nsupset "&#x02285;" ><!--alias ISOAMSN vnsup -->
+<!ENTITY nsupseteq "&#x02289;" ><!--alias ISOAMSN nsupe -->
+<!ENTITY nsupseteqq "&#x02289;" ><!--alias ISOAMSN nsupE -->
+<!ENTITY ntriangleleft "&#x022EA;" ><!--alias ISOAMSN nltri -->
+<!ENTITY ntrianglelefteq "&#x022EC;" ><!--alias ISOAMSN nltrie -->
+<!ENTITY ntriangleright "&#x022EB;" ><!--alias ISOAMSN nrtri -->
+<!ENTITY ntrianglerighteq "&#x022ED;" ><!--alias ISOAMSN nrtrie -->
+<!ENTITY nwarrow "&#x02196;" ><!--alias ISOAMSA nwarr -->
+<!ENTITY oint "&#x0222E;" ><!--alias ISOTECH conint -->
+<!ENTITY OpenCurlyDoubleQuote "&#x0201C;" ><!--alias ISONUM ldquo -->
+<!ENTITY OpenCurlyQuote "&#x02018;" ><!--alias ISONUM lsquo -->
+<!ENTITY orderof "&#x02134;" ><!--alias ISOTECH order -->
+<!ENTITY parallel "&#x02225;" ><!--alias ISOTECH par -->
+<!ENTITY PartialD "&#x02202;" ><!--alias ISOTECH part -->
+<!ENTITY pitchfork "&#x022D4;" ><!--alias ISOAMSR fork -->
+<!ENTITY PlusMinus "&#x000B1;" ><!--alias ISONUM plusmn -->
+<!ENTITY pm "&#x000B1;" ><!--alias ISONUM plusmn -->
+<!ENTITY prec "&#x0227A;" ><!--alias ISOAMSR pr -->
+<!ENTITY precapprox "&#x0227E;" ><!--alias ISOAMSR prap -->
+<!ENTITY preccurlyeq "&#x0227C;" ><!--alias ISOAMSR prcue -->
+<!ENTITY Precedes "&#x0227A;" ><!--alias ISOAMSR pr -->
+<!ENTITY PrecedesEqual "&#x02AAF;" ><!--alias ISOAMSR pre -->
+<!ENTITY PrecedesSlantEqual "&#x0227C;" ><!--alias ISOAMSR prcue -->
+<!ENTITY PrecedesTilde "&#x0227E;" ><!--alias ISOAMSR prsim -->
+<!ENTITY preceq "&#x02AAF;" ><!--alias ISOAMSR pre -->
+<!ENTITY precnapprox "&#x022E8;" ><!--alias ISOAMSN prnap -->
+<!ENTITY precneqq "&#x02AB5;" ><!--alias ISOAMSN prnE -->
+<!ENTITY precnsim "&#x022E8;" ><!--alias ISOAMSN prnsim -->
+<!ENTITY precsim "&#x0227E;" ><!--alias ISOAMSR prsim -->
+<!ENTITY Proportion "&#x02237;" ><!--alias ISOAMSR Colon -->
+<!ENTITY Proportional "&#x0221D;" ><!--alias ISOTECH prop -->
+<!ENTITY propto "&#x0221D;" ><!--alias ISOTECH prop -->
+<!ENTITY questeq "&#x0225F;" ><!--alias ISOAMSR equest -->
+<!ENTITY rangle "&#x03009;" ><!--alias ISOTECH rang -->
+<!ENTITY rbrace "&#x0007D;" ><!--alias ISONUM rcub -->
+<!ENTITY rbrack "&#x0005D;" ><!--alias ISONUM rsqb -->
+<!ENTITY Re "&#x0211C;" ><!--alias ISOAMSO real -->
+<!ENTITY realpart "&#x0211C;" ><!--alias ISOAMSO real -->
+<!ENTITY ReverseElement "&#x0220B;" ><!--alias ISOTECH niv -->
+<!ENTITY ReverseEquilibrium "&#x021CB;" ><!--alias ISOAMSA lrhar -->
+<!ENTITY ReverseUpEquilibrium "&#x0296F;" ><!--alias ISOAMSA duhar -->
+<!ENTITY RightAngleBracket "&#x03009;" ><!--alias ISOTECH rang -->
+<!ENTITY rightarrow "&#x02192;" ><!--alias ISONUM rarr -->
+<!ENTITY Rightarrow "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY RightArrow "&#x02192;" ><!--alias ISONUM rarr -->
+<!ENTITY RightArrowLeftArrow "&#x021C4;" ><!--alias ISOAMSA rlarr -->
+<!ENTITY rightarrowtail "&#x021A3;" ><!--alias ISOAMSA rarrtl -->
+<!ENTITY RightCeiling "&#x02309;" ><!--alias ISOAMSC rceil -->
+<!ENTITY RightDoubleBracket "&#x0301B;" ><!--right double bracket delimiter -->
+<!ENTITY RightDownVector "&#x021C2;" ><!--alias ISOAMSA dharr -->
+<!ENTITY RightFloor "&#x0230B;" ><!--alias ISOAMSC rfloor -->
+<!ENTITY rightharpoondown "&#x021C1;" ><!--alias ISOAMSA rhard -->
+<!ENTITY rightharpoonup "&#x021C0;" ><!--alias ISOAMSA rharu -->
+<!ENTITY rightleftarrows "&#x021C4;" ><!--alias ISOAMSA rlarr -->
+<!ENTITY rightleftharpoons "&#x021CC;" ><!--alias ISOAMSA rlhar -->
+<!ENTITY rightrightarrows "&#x021C9;" ><!--alias ISOAMSA rrarr -->
+<!ENTITY rightsquigarrow "&#x021DD;" ><!--alias ISOAMSA rarrw -->
+<!ENTITY RightTee "&#x022A2;" ><!--alias ISOAMSR vdash -->
+<!ENTITY RightTeeArrow "&#x021A6;" ><!--alias ISOAMSA map -->
+<!ENTITY rightthreetimes "&#x022CC;" ><!--alias ISOAMSB rthree -->
+<!ENTITY RightTriangle "&#x022B3;" ><!--alias ISOAMSR vrtri -->
+<!ENTITY RightTriangleEqual "&#x022B5;" ><!--alias ISOAMSR rtrie -->
+<!ENTITY RightUpVector "&#x021BE;" ><!--alias ISOAMSA uharr -->
+<!ENTITY RightVector "&#x021C0;" ><!--alias ISOAMSA rharu -->
+<!ENTITY risingdotseq "&#x02253;" ><!--alias ISOAMSR erDot -->
+<!ENTITY rmoustache "&#x02997;" ><!--alias ISOAMSC rmoust -->
+<!ENTITY Rrightarrow "&#x021DB;" ><!--alias ISOAMSA rAarr -->
+<!ENTITY Rsh "&#x021B1;" ><!--alias ISOAMSA rsh -->
+<!ENTITY searrow "&#x02198;" ><!--alias ISOAMSA searr -->
+<!ENTITY setminus "&#x02216;" ><!--alias ISOAMSB setmn -->
+<!ENTITY ShortLeftArrow "&#x02190;&#x02063;" ><!--alias ISOAMSA slarr -->
+<!ENTITY shortmid "&#x02223;&#x02063;" ><!--alias ISOAMSR smid -->
+<!ENTITY shortparallel "&#x02225;&#x02063;" ><!--alias ISOAMSR spar -->
+<!ENTITY ShortRightArrow "&#x02192;&#x02063;" ><!--alias ISOAMSA srarr -->
+<!ENTITY simeq "&#x02243;" ><!--alias ISOTECH sime -->
+<!ENTITY SmallCircle "&#x02218;" ><!--alias ISOTECH compfn -->
+<!ENTITY smallsetminus "&#x02216;" ><!--alias ISOAMSB ssetmn -->
+<!ENTITY spadesuit "&#x02660;" ><!--ISOPUB spades -->
+<!ENTITY Sqrt "&#x0221A;" ><!--alias ISOTECH radic -->
+<!ENTITY sqsubset "&#x0228F;" ><!--alias ISOAMSR sqsub -->
+<!ENTITY sqsubseteq "&#x02291;" ><!--alias ISOAMSR sqsube -->
+<!ENTITY sqsupset "&#x02290;" ><!--alias ISOAMSR sqsup -->
+<!ENTITY sqsupseteq "&#x02292;" ><!--alias ISOAMSR sqsupe -->
+<!ENTITY Square "&#x025A1;" ><!--alias for square -->
+<!ENTITY SquareIntersection "&#x02293;" ><!--alias ISOAMSB sqcap -->
+<!ENTITY SquareSubset "&#x0228F;" ><!--alias ISOAMSR sqsub -->
+<!ENTITY SquareSubsetEqual "&#x02291;" ><!--alias ISOAMSR sqsube -->
+<!ENTITY SquareSuperset "&#x02290;" ><!--alias ISOAMSR sqsup -->
+<!ENTITY SquareSupersetEqual "&#x02292;" ><!--alias ISOAMSR sqsupe -->
+<!ENTITY SquareUnion "&#x02294;" ><!--alias ISOAMSB sqcup -->
+<!ENTITY Star "&#x022C6;" ><!--alias ISOAMSB sstarf -->
+<!ENTITY straightepsilon "&#x003B5;" ><!--alias ISOGRK3 epsi -->
+<!ENTITY straightphi "&#x003C6;" ><!--alias ISOGRK3 phi -->
+<!ENTITY subset "&#x02282;" ><!--alias ISOTECH sub -->
+<!ENTITY Subset "&#x022D0;" ><!--alias ISOAMSR Sub -->
+<!ENTITY subseteq "&#x02286;" ><!--alias ISOTECH sube -->
+<!ENTITY subseteqq "&#x02286;" ><!--alias ISOAMSR subE -->
+<!ENTITY SubsetEqual "&#x02286;" ><!--alias ISOTECH sube -->
+<!ENTITY subsetneq "&#x0228A;" ><!--alias ISOAMSN subne -->
+<!ENTITY subsetneqq "&#x0228A;" ><!--alias ISOAMSN subnE -->
+<!ENTITY succ "&#x0227B;" ><!--alias ISOAMSR sc -->
+<!ENTITY succapprox "&#x0227F;" ><!--alias ISOAMSR scap -->
+<!ENTITY succcurlyeq "&#x0227D;" ><!--alias ISOAMSR sccue -->
+<!ENTITY Succeeds "&#x0227B;" ><!--alias ISOAMSR sc -->
+<!ENTITY SucceedsEqual "&#x0227D;" ><!--alias ISOAMSR sce -->
+<!ENTITY SucceedsSlantEqual "&#x0227D;" ><!--alias ISOAMSR sccue -->
+<!ENTITY SucceedsTilde "&#x0227F;" ><!--alias ISOAMSR scsim -->
+<!ENTITY succeq "&#x0227D;" ><!--alias ISOAMSR sce -->
+<!ENTITY succnapprox "&#x022E9;" ><!--alias ISOAMSN scnap -->
+<!ENTITY succneqq "&#x02AB6;" ><!--alias ISOAMSN scnE -->
+<!ENTITY succnsim "&#x022E9;" ><!--alias ISOAMSN scnsim -->
+<!ENTITY succsim "&#x0227F;" ><!--alias ISOAMSR scsim -->
+<!ENTITY SuchThat "&#x0220B;" ><!--ISOTECH ni -->
+<!ENTITY Sum "&#x02211;" ><!--alias ISOAMSB sum -->
+<!ENTITY Superset "&#x02283;" ><!--alias ISOTECH sup -->
+<!ENTITY SupersetEqual "&#x02287;" ><!--alias ISOTECH supe -->
+<!ENTITY supset "&#x02283;" ><!--alias ISOTECH sup -->
+<!ENTITY Supset "&#x022D1;" ><!--alias ISOAMSR Sup -->
+<!ENTITY supseteq "&#x02287;" ><!--alias ISOTECH supe -->
+<!ENTITY supseteqq "&#x02287;" ><!--alias ISOAMSR supE -->
+<!ENTITY supsetneq "&#x0228B;" ><!--alias ISOAMSN supne -->
+<!ENTITY supsetneqq "&#x0228B;" ><!--alias ISOAMSN supnE -->
+<!ENTITY swarrow "&#x02199;" ><!--alias ISOAMSA swarr -->
+<!ENTITY therefore "&#x02234;" ><!--alias ISOTECH there4 -->
+<!ENTITY Therefore "&#x02234;" ><!--alias ISOTECH there4 -->
+<!ENTITY thickapprox "&#x02248;&#x02063;" ><!--ISOAMSR thkap -->
+<!ENTITY thicksim "&#x0223C;" ><!--ISOAMSR thksim -->
+<!ENTITY ThinSpace "&#x02009;" ><!--space of width 3/18 em alias ISOPUB thinsp -->
+<!ENTITY Tilde "&#x0223C;" ><!--alias ISOTECH sim -->
+<!ENTITY TildeEqual "&#x02243;" ><!--alias ISOTECH sime -->
+<!ENTITY TildeFullEqual "&#x02245;" ><!--alias ISOTECH cong -->
+<!ENTITY TildeTilde "&#x02248;" ><!--alias ISOTECH ap -->
+<!ENTITY toea "&#x02928;" ><!--alias ISOAMSA nesear -->
+<!ENTITY tosa "&#x02929;" ><!--alias ISOAMSA seswar -->
+<!ENTITY triangle "&#x025B5;" ><!--alias ISOPUB utri -->
+<!ENTITY triangledown "&#x025BF;" ><!--alias ISOPUB dtri -->
+<!ENTITY triangleleft "&#x025C3;" ><!--alias ISOPUB ltri -->
+<!ENTITY trianglelefteq "&#x022B4;" ><!--alias ISOAMSR ltrie -->
+<!ENTITY triangleq "&#x0225C;" ><!--alias ISOAMSR trie -->
+<!ENTITY triangleright "&#x025B9;" ><!--alias ISOPUB rtri -->
+<!ENTITY trianglerighteq "&#x022B5;" ><!--alias ISOAMSR rtrie -->
+<!ENTITY TripleDot "&#x020DB;" ><!--alias ISOTECH tdot -->
+<!ENTITY twoheadleftarrow "&#x0219E;" ><!--alias ISOAMSA Larr -->
+<!ENTITY twoheadrightarrow "&#x021A0;" ><!--alias ISOAMSA Rarr -->
+<!ENTITY ulcorner "&#x0231C;" ><!--alias ISOAMSC ulcorn -->
+<!ENTITY Union "&#x022C3;" ><!--alias ISOAMSB xcup -->
+<!ENTITY UnionPlus "&#x0228E;" ><!--alias ISOAMSB uplus -->
+<!ENTITY uparrow "&#x02191;" ><!--alias ISONUM uarr -->
+<!ENTITY Uparrow "&#x021D1;" ><!--alias ISOAMSA uArr -->
+<!ENTITY UpArrow "&#x02191;" ><!--alias ISONUM uarr -->
+<!ENTITY UpArrowDownArrow "&#x021C5;" ><!--alias ISOAMSA udarr -->
+<!ENTITY updownarrow "&#x02195;" ><!--alias ISOAMSA varr -->
+<!ENTITY Updownarrow "&#x021D5;" ><!--alias ISOAMSA vArr -->
+<!ENTITY UpDownArrow "&#x02195;" ><!--alias ISOAMSA varr -->
+<!ENTITY UpEquilibrium "&#x0296E;" ><!--alias ISOAMSA udhar -->
+<!ENTITY upharpoonleft "&#x021BF;" ><!--alias ISOAMSA uharl -->
+<!ENTITY upharpoonright "&#x021BE;" ><!--alias ISOAMSA uharr -->
+<!ENTITY UpperLeftArrow "&#x02196;" ><!--alias ISOAMSA nwarr -->
+<!ENTITY UpperRightArrow "&#x02197;" ><!--alias ISOAMSA nearr -->
+<!ENTITY upsilon "&#x003C5;" ><!--alias ISOGRK3 upsi -->
+<!ENTITY Upsilon "&#x003D2;" ><!--alias ISOGRK3 Upsi -->
+<!ENTITY UpTee "&#x022A5;" ><!--alias ISOTECH perp -->
+<!ENTITY upuparrows "&#x021C8;" ><!--alias ISOAMSA uuarr -->
+<!ENTITY urcorner "&#x0231D;" ><!--alias ISOAMSC urcorn -->
+<!ENTITY varepsilon "&#x0025B;" ><!--alias ISOGRK3 epsiv -->
+<!ENTITY varkappa "&#x003F0;" ><!--alias ISOGRK3 kappav -->
+<!ENTITY varnothing "&#x02205;" ><!--alias ISOAMSO emptyv -->
+<!ENTITY varphi "&#x003D5;" ><!--alias ISOGRK3 phiv -->
+<!ENTITY varpi "&#x003D6;" ><!--alias ISOGRK3 piv -->
+<!ENTITY varpropto "&#x0221D;" ><!--alias ISOAMSR vprop -->
+<!ENTITY varrho "&#x003F1;" ><!--alias ISOGRK3 rhov -->
+<!ENTITY varsigma "&#x003C2;" ><!--alias ISOGRK3 sigmav -->
+<!ENTITY varsubsetneq "&#x0228A;&#x02063;" ><!--alias ISOAMSN vsubne -->
+<!ENTITY varsubsetneqq "&#x0228A;&#x02063;" ><!--alias ISOAMSN vsubnE -->
+<!ENTITY varsupsetneq "&#x0228B;&#x02063;" ><!--alias ISOAMSN vsupne -->
+<!ENTITY varsupsetneqq "&#x0228B;&#x02063;" ><!--alias ISOAMSN vsupnE -->
+<!ENTITY vartheta "&#x003D1;" ><!--alias ISOGRK3 thetav -->
+<!ENTITY vartriangleleft "&#x022B2;" ><!--alias ISOAMSR vltri -->
+<!ENTITY vartriangleright "&#x022B3;" ><!--alias ISOAMSR vrtri -->
+<!ENTITY vee "&#x02228;" ><!--alias ISOTECH or -->
+<!ENTITY Vee "&#x022C1;" ><!--alias ISOAMSB xvee -->
+<!ENTITY vert "&#x0007C;" ><!--alias ISONUM verbar -->
+<!ENTITY Vert "&#x02016;" ><!--alias ISOTECH Verbar -->
+<!ENTITY VerticalBar "&#x02223;" ><!--alias ISOAMSR mid -->
+<!ENTITY VerticalTilde "&#x02240;" ><!--alias ISOAMSB wreath -->
+<!ENTITY VeryThinSpace "&#x0200A;" ><!--space of width 1/18 em alias ISOPUB hairsp -->
+<!ENTITY wedge "&#x02227;" ><!--alias ISOTECH and -->
+<!ENTITY Wedge "&#x022C0;" ><!--alias ISOAMSB xwedge -->
+<!ENTITY wp "&#x02118;" ><!--alias ISOAMSO weierp -->
+<!ENTITY wr "&#x02240;" ><!--alias ISOAMSB wreath -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlextra.ent b/docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlextra.ent
new file mode 100644
index 0000000000..e76de448cc
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/ent/mmlextra.ent
@@ -0,0 +1,134 @@
+
+<!--
+ File mmlextra.ent produced by the XSL script mmldtd.xsl
+ from input data in unicode.xml.
+
+ Please report any errors to
+ David Carlisle <davidc@nag.co.uk>.
+
+ The numeric character values assigned to each entity
+ (should) match either official Unicode assignments
+ or assignments provisionally allocated by the
+ Unicode Consortium based on the characters in the `STIX'
+ propsal for mathematics. Note that these assignments
+ have not been ratified by the corresponding ISO
+ committee and thus should be considered liable to
+ change.
+
+-->
+
+<!ENTITY af "&#x02061;" ><!--short form of &ApplyFunction; -->
+<!ENTITY ApplyFunction "&#x02061;" ><!--character showing function application in presentation tagging -->
+<!ENTITY Assign "&#x02254;" ><!--assignment operator -->
+<!ENTITY CapitalDifferentialD "&#x02145;" ><!--D for use in differentials, e.g., within integrals -->
+<!ENTITY Cayleys "&#x0212D;" ><!--the non-associative ring of octonions or Cayley numbers -->
+<!ENTITY complexes "&#x02102;" ><!--the field of complex numbers -->
+<!ENTITY Cross "&#x02A2F;" ><!--cross or vector product -->
+<!ENTITY dd "&#x02146;" ><!--short form of &DifferentialD; -->
+<!ENTITY DD "&#x02145;" ><!--short form of CapitalDifferentialD -->
+<!ENTITY DifferentialD "&#x02146;" ><!--d for use in differentials, e.g., within integrals -->
+<!ENTITY DownArrowBar "&#x02913;" ><!--down arrow to bar -->
+<!ENTITY DownBreve "&#x00311;" ><!--breve, inverted (non-spacing) -->
+<!ENTITY DownLeftRightVector "&#x02950;" ><!--left-down-right-down harpoon -->
+<!ENTITY DownLeftTeeVector "&#x0295E;" ><!--left-down harpoon from bar -->
+<!ENTITY DownLeftVectorBar "&#x02956;" ><!--left-down harpoon to bar -->
+<!ENTITY DownRightTeeVector "&#x0295F;" ><!--right-down harpoon from bar -->
+<!ENTITY DownRightVectorBar "&#x02957;" ><!--right-down harpoon to bar -->
+<!ENTITY DownTeeArrow "&#x021A7;" ><!--alias for mapstodown -->
+<!ENTITY ee "&#x02147;" ><!--short form of &ExponentialE; -->
+<!ENTITY EmptySmallSquare "&#x025FD;" ><!--empty small square -->
+<!ENTITY EmptyVerySmallSquare "&#x025FD;" ><!--empty small square -->
+<!ENTITY Equal "&#x02A75;" ><!--two consecutive equal signs -->
+<!ENTITY expectation "&#x02130;" ><!--expectation (operator) -->
+<!ENTITY exponentiale "&#x0212F;" ><!--base of the Napierian logarithms -->
+<!ENTITY ExponentialE "&#x02147;" ><!--e use for the exponential base of the natural logarithms -->
+<!ENTITY FilledSmallSquare "&#x025FE;" ><!--filled small square -->
+<!ENTITY FilledVerySmallSquare "&#x025FE;" ><!--filled very small square -->
+<!ENTITY Fouriertrf "&#x02131;" ><!--Fourier transform -->
+<!ENTITY GreaterGreater "&#x02AA2;" ><!--alias for GT -->
+<!ENTITY HilbertSpace "&#x0210B;" ><!--Hilbert space -->
+<!ENTITY HorizontalLine "&#x02500;" ><!--short horizontal line -->
+<!ENTITY ic "&#x0200B;" ><!--short form of &InvisibleComma; -->
+<!ENTITY ii "&#x02148;" ><!--short form of &ImaginaryI; -->
+<!ENTITY ImaginaryI "&#x02148;" ><!--i for use as a square root of -1 -->
+<!ENTITY imagline "&#x02110;" ><!--the geometric imaginary line -->
+<!ENTITY integers "&#x02124;" ><!--the ring of integers -->
+<!ENTITY InvisibleComma "&#x0200B;" ><!--used as a separator, e.g., in indices -->
+<!ENTITY InvisibleTimes "&#x02062;" ><!--marks multiplication when it is understood without a mark -->
+<!ENTITY it "&#x02062;" ><!--short form of &InvisibleTimes; -->
+<!ENTITY Laplacetrf "&#x02112;" ><!--Laplace transform -->
+<!ENTITY larrb "&#x021E4;" ><!--leftwards arrow to bar -->
+<!ENTITY LeftArrowBar "&#x021E4;" ><!--alias for larrb -->
+<!ENTITY LeftDownTeeVector "&#x02961;" ><!--down-left harpoon from bar -->
+<!ENTITY LeftDownVectorBar "&#x02959;" ><!--down-left harpoon to bar -->
+<!ENTITY LeftRightVector "&#x0294E;" ><!--left-up-right-up harpoon -->
+<!ENTITY LeftTeeArrow "&#x021A4;" ><!--alias for mapstoleft -->
+<!ENTITY LeftTeeVector "&#x0295A;" ><!--left-up harpoon from bar -->
+<!ENTITY LeftTriangleBar "&#x029CF;" ><!--not left triangle, vertical bar -->
+<!ENTITY LeftUpDownVector "&#x02951;" ><!--up-left-down-left harpoon -->
+<!ENTITY LeftUpTeeVector "&#x02960;" ><!--up-left harpoon from bar -->
+<!ENTITY LeftUpVectorBar "&#x02958;" ><!--up-left harpoon to bar -->
+<!ENTITY LeftVectorBar "&#x02952;" ><!--left-up harpoon to bar -->
+<!ENTITY LessLess "&#x02AA1;" ><!--alias for Lt -->
+<!ENTITY mapstodown "&#x021A7;" ><!--downwards arrow from bar -->
+<!ENTITY mapstoleft "&#x021A4;" ><!--leftwards arrow from bar -->
+<!ENTITY mapstoup "&#x021A5;" ><!--upwards arrow from bar -->
+<!ENTITY Mellintrf "&#x02133;" ><!--Mellin transform -->
+<!ENTITY naturals "&#x02115;" ><!--the semi-ring of natural numbers -->
+<!ENTITY nbump "&#x0224E;&#x00338;" ><!--not bumpy equals -->
+<!ENTITY nbumpe "&#x0224F;&#x00338;" ><!--not bumpy single equals -->
+<!ENTITY NegativeMediumSpace "&#x0205F;&#x02063;" ><!--space of width -4/18 em -->
+<!ENTITY NegativeThickSpace "&#x02005;&#x02063;" ><!--space of width -5/18 em -->
+<!ENTITY NegativeThinSpace "&#x02009;&#x02063;" ><!--space of width -3/18 em -->
+<!ENTITY NegativeVeryThinSpace "&#x0200A;&#x02063;" ><!--space of width -1/18 em -->
+<!ENTITY nesim "&#x02242;&#x00338;" ><!--not equal or similar -->
+<!ENTITY NewLine "&#x0000A;" ><!--force a line break; line feed -->
+<!ENTITY NoBreak "&#x0FEFF;" ><!--never break line here -->
+<!ENTITY NotCupCap "&#x0226D;" ><!--alias for &nasymp; -->
+<!ENTITY NotEqualTilde "&#x02242;&#x00338;" ><!--alias for &nesim; -->
+<!ENTITY NotHumpDownHump "&#x0224E;&#x00338;" ><!--alias for &nbump; -->
+<!ENTITY NotHumpEqual "&#x0224F;&#x00338;" ><!--alias for &nbumpe; -->
+<!ENTITY NotLeftTriangleBar "&#x029CF;&#x00338;" ><!--not left triangle, vertical bar -->
+<!ENTITY NotNestedGreaterGreater "&#x024A2;&#x00338;" ><!--not double greater-than sign -->
+<!ENTITY NotNestedLessLess "&#x024A1;&#x00338;" ><!--not double less-than sign -->
+<!ENTITY NotRightTriangleBar "&#x029D0;&#x00338;" ><!--not vertical bar, right triangle -->
+<!ENTITY NotSquareSubset "&#x0228F;&#x00338;" ><!--square not subset -->
+<!ENTITY NotSquareSuperset "&#x02290;&#x00338;" ><!--negated set-like partial order operator -->
+<!ENTITY NotSucceedsTilde "&#x0227F;&#x00338;" ><!--not succeeds or similar -->
+<!ENTITY OverBar "&#x000AF;" ><!--over bar -->
+<!ENTITY OverBrace "&#x0FE37;" ><!--over brace -->
+<!ENTITY OverBracket "&#x023B4;" ><!--over bracket -->
+<!ENTITY OverParenthesis "&#x0FE35;" ><!--over parenthesis -->
+<!ENTITY planckh "&#x0210E;" ><!--the ring (skew field) of quaternions -->
+<!ENTITY Poincareplane "&#x0210C;" ><!--the Poincare upper half-plane -->
+<!ENTITY primes "&#x02119;" ><!--the prime natural numbers -->
+<!ENTITY Product "&#x0220F;" ><!--alias for &prod -->
+<!ENTITY quaternions "&#x0210D;" ><!--the ring (skew field) of quaternions -->
+<!ENTITY rarrb "&#x021E5;" ><!--leftwards arrow to bar -->
+<!ENTITY rationals "&#x0211A;" ><!--the field of rational numbers -->
+<!ENTITY realine "&#x0211B;" ><!--the geometric real line -->
+<!ENTITY reals "&#x0211D;" ><!--the field of real numbers -->
+<!ENTITY RightArrowBar "&#x021E5;" ><!--alias for rarrb -->
+<!ENTITY RightDownTeeVector "&#x0295D;" ><!--down-right harpoon from bar -->
+<!ENTITY RightDownVectorBar "&#x02955;" ><!--down-right harpoon to bar -->
+<!ENTITY RightTeeVector "&#x0295B;" ><!--right-up harpoon from bar -->
+<!ENTITY RightTriangleBar "&#x029D0;" ><!--vertical bar, right triangle -->
+<!ENTITY RightUpDownVector "&#x0294F;" ><!--up-right-down-right harpoon -->
+<!ENTITY RightUpTeeVector "&#x0295C;" ><!--up-right harpoon from bar -->
+<!ENTITY RightUpVectorBar "&#x02954;" ><!--up-right harpoon to bar -->
+<!ENTITY RightVectorBar "&#x02953;" ><!--up-right harpoon to bar -->
+<!ENTITY RoundImplies "&#x02970;" ><!--round implies -->
+<!ENTITY RuleDelayed "&#x029F4;" ><!--rule-delayed (colon right arrow) -->
+<!ENTITY ShortDownArrow "&#x02304;&#x02063;" ><!--short down arrow -->
+<!ENTITY ShortUpArrow "&#x02303;&#x02063;" ><!--short up arrow -->
+<!ENTITY Tab "&#x00009;" ><!--tabulator stop; horizontal tabulation -->
+<!ENTITY ThickSpace "&#x02005;" ><!--space of width 5/18 em -->
+<!ENTITY UnderBar "&#x00332;" ><!--combining low line -->
+<!ENTITY UnderBrace "&#x0FE38;" ><!--under brace -->
+<!ENTITY UnderBracket "&#x023B5;" ><!--under bracket -->
+<!ENTITY UpArrowBar "&#x02912;" ><!--up arrow to bar -->
+<!ENTITY UpTeeArrow "&#x021A5;" ><!--Alias mapstoup -->
+<!ENTITY VerticalLine "&#x02758;" ><!--short vertical line -->
+<!ENTITY VerticalSeparator "&#x02758;" ><!--vertical separating operator -->
+<!ENTITY zeetrf "&#x02128;" ><!--zee transform -->
+<!ENTITY ZeroWidthSpace "&#x0200B;" ><!--zero width space -->
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.dtd b/docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.dtd
new file mode 100644
index 0000000000..7ec703e2c7
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.dtd
@@ -0,0 +1,7 @@
+<!ELEMENT character (#PCDATA)>
+
+<!ATTLIST character
+entity CDATA #REQUIRED
+arguments CDATA #IMPLIED
+>
+
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.xml b/docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.xml
new file mode 100644
index 0000000000..e5290aba10
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/latex.entities.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<!DOCTYPE latex SYSTEM "latex.entities.dtd" []>
+
+<latex>
+ <character entity="&#948;">\delta</character>
+ <character entity="&#954;">\kappa</character>
+ <character entity="&#960;">\pi</character>
+ <character entity="&#x02212;">-</character>
+ <character entity="&#x003B2;">\beta</character>
+ <character entity="&#x00302;">\sphat</character><!-- superscript=""-->
+ <character entity="&#x00302;" arguments="1">\hat</character>
+</latex>
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.constsymb.mod.xsl b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.constsymb.mod.xsl
new file mode 100644
index 0000000000..3d3afdded8
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.constsymb.mod.xsl
@@ -0,0 +1,101 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet
+[
+ <!ENTITY % mmlalias PUBLIC "MathML alias" "ent/mmlalias.ent"> %mmlalias;
+ <!ENTITY % mmlextra PUBLIC "MathML extra" "ent/mmlextra.ent"> %mmlextra;
+]>
+<!--#############################################################################
+ | $Id: mathml.content.constsymb.mod.xsl,v 1.2 2004/01/18 10:40:17 j-devenish Exp $
+ |- #############################################################################
+ | $Author: j-devenish $
+ |
+ | PURPOSE: MathML content markup, constants and symbols, 4.4.12.
+ | MathML namespace used -> mml
+ + ############################################################################## -->
+
+<xsl:stylesheet version='1.0'
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1998/Math/MathML">
+
+<!-- integer numbers -->
+<xsl:template match="mml:integers">
+ <xsl:text>\mathbb Z </xsl:text>
+</xsl:template>
+
+<!-- real numbers -->
+<xsl:template match="mml:reals">
+ <xsl:text>\mathbb R </xsl:text>
+</xsl:template>
+
+<!-- rational numbers -->
+<xsl:template match="mml:rationals">
+ <xsl:text>\mathbb Q </xsl:text>
+</xsl:template>
+
+<!-- natural numbers -->
+<xsl:template match="mml:naturalnumbers">
+ <xsl:text>\mathbb N </xsl:text>
+</xsl:template>
+
+<!-- complex numbers -->
+<xsl:template match="mml:complexes">
+ <xsl:text>\mathbb C </xsl:text>
+</xsl:template>
+
+<!-- prime numbers -->
+<xsl:template match="mml:primes">
+ <xsl:text>\mathbb P </xsl:text>
+ <mi><xsl:text disable-output-escaping='yes'>&amp;#x1D547;</xsl:text></mi> <!-- open face P --> <!-- UNICODE char does not work -->
+</xsl:template>
+
+
+
+
+
+
+
+<!-- exponential base -->
+<xsl:template match="mml:exponentiale">
+ <xsl:text>\textrm{e} </xsl:text>
+</xsl:template>
+
+<!-- square root of -1 -->
+<xsl:template match="mml:imaginaryi">
+ <xsl:text>\textrm{i} </xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:notanumber">
+ <xsl:text>\NaN </xsl:text>
+</xsl:template>
+
+<!-- logical constant for truth -->
+<xsl:template match="mml:true">
+ <xsl:text>true</xsl:text>
+</xsl:template>
+
+<!-- logical constant for falsehood -->
+<xsl:template match="mml:false">
+ <xsl:text>false</xsl:text>
+</xsl:template>
+
+<!-- empty set -->
+<xsl:template match="mml:emptyset">
+ <xsl:text>\empty</xsl:text>
+</xsl:template>
+
+<!-- ratio of a circle's circumference to its diameter -->
+<xsl:template match="mml:pi">
+ <xsl:text>\pi</xsl:text>
+</xsl:template>
+
+<!-- Euler's constant -->
+<xsl:template match="mml:eulergamma">
+ <xsl:text>\Gamma</xsl:text>
+</xsl:template>
+
+<!-- Infinity -->
+<xsl:template match="mml:infinity">
+ <xsl:text>\infty</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.functions.mod.xsl b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.functions.mod.xsl
new file mode 100644
index 0000000000..2b6258e10a
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.functions.mod.xsl
@@ -0,0 +1,750 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet
+[
+ <!ENTITY % mmlalias PUBLIC "MathML alias" "ent/mmlalias.ent"> %mmlalias;
+ <!ENTITY % mmlextra PUBLIC "MathML extra" "ent/mmlextra.ent"> %mmlextra;
+]>
+<!--#############################################################################
+ | $Id: mathml.content.functions.mod.xsl,v 1.2 2004/01/18 10:45:35 j-devenish Exp $
+ |- #############################################################################
+ | $Author: j-devenish $
+ |
+ | PURPOSE: MathML content markup.
+ | Note: these elements are not part of the DocBook DTD. I have extended
+ | the docbook DTD in order to support this tags, so that's why I have these
+ | templates here.
+ |
+ | MathML namespace used -> mml
+ + ############################################################################## -->
+
+<xsl:stylesheet version='1.0'
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1998/Math/MathML">
+
+<xsl:template match="mml:fn">
+</xsl:template>
+
+<!--
+<xsl:template match="mml:apply/lowlimit">
+<xsl:variable name="first" select="../child::*[1]"/>
+</xsl:template>
+
+<xsl:template match="mml:apply/uplimit">
+<xsl:variable name="first" select="../child::*[1]"/>
+</xsl:template>
+
+<xsl:template match="mml:apply/degree">
+<xsl:variable name="first" select="../child::*[1]"/>
+</xsl:template>
+-->
+
+
+<!-- conditions -->
+<!-- no support for deprecated reln-->
+<xsl:template match="mml:condition">
+ <xsl:text>{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
+</xsl:template>
+
+
+
+
+
+
+<!--UNARY
+ unary arithmetic exp, factorial, minus, abs, conjugate, arg, real, imaginary
+ unary logical not
+ unary functional inverse, ident
+ unary elementary classical
+ functions sin, cos, tan, sec, csc, cot, sinh, cosh, tanh, sech, csch, coth, arcsin,
+ arccos, arctan, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech, arcsinh,
+ arctanh, exp, ln, log
+ unary linear algebra determinant, transpose
+ unary calculus and vector calculus
+ divergence, grad, curl, laplacian
+ unary set-theoretic card
+-->
+
+<!-- BINARY
+ binary arithmetic quotient, divide, minus, power, rem
+ binary logical implies, equivalent, approx
+ binary set operators setdiff
+ binary linear algebra vectorproduct, scalarproduct, outerproduct
+-->
+
+<!-- N-ARY and OTHER
+ n-ary statistical mean, sdev, variance, median, mode
+ n-ary logical and, or, xor
+ n-ary linear algebra selector
+ n-ary set operator union, intersect
+ n-ary functional fn, compose
+ integral, sum, product operators int, sum, product
+ differential operator diff, partialdiff
+ quantifier forall, exists
+-->
+<!-- Get the first child (operator), and check if its name is a fn , or operator-->
+<!-- Is the operator taking qualifiers? -->
+<!-- Operators : int, sum, product, root, diff, partialdiff, limit, log, moment, min, max, forall, exists -->
+<!-- Qualifiers : lowlimit, uplimit, bvar, degree, logbase, interval, condition -->
+
+
+<!-- apply/apply -->
+<xsl:template match="mml:apply[mml:apply]"> <!-- when the function itself is defined by other functions: (F+G)(x) -->
+ <xsl:choose>
+ <xsl:when test="count(child::*)>=2">
+ <xsl:text>{</xsl:text><xsl:apply-templates select="child::*[position()=1]"/><xsl:text>}</xsl:text>
+ <xsl:text>{</xsl:text><xsl:apply-templates select="child::*[position()!=1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- apply only contains apply, no operand-->
+ <xsl:text>{</xsl:text><xsl:apply-templates select="child::*"/><xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!-- force function or operator MathML 1.0 deprecated-->
+<!-- partial support for func/operators defined using presentation markup-->
+<xsl:template match="mml:apply[mml:fn]">
+<mrow>
+<xsl:choose>
+<xsl:when test="*[position()=1 and self::mml:fn]/mml:mo/mml:mchar/@name='PlusMinus'">
+ <!--if operator is infix (we assume this to be the default when we have mchars(for instance PlusMinus); perhaps we should test further the name attribute)-->
+ <xsl:choose>
+ <xsl:when test="count(child::*)>=3">
+ <mrow>
+ <xsl:for-each select="child::*[position()!=last() and position()!=1]">
+ <xsl:apply-templates select="."/><xsl:copy-of select="preceding-sibling::mml:fn/*"/>
+ </xsl:for-each>
+ <xsl:apply-templates select="child::*[position()!=1 and position()=last()]"/>
+ </mrow>
+ </xsl:when>
+ <xsl:when test="count(child::*)=2">
+ <mrow><xsl:copy-of select="child::mml:fn[position()=1]/*"/><xsl:apply-templates select="child::*[position()=2]"/></mrow>
+ </xsl:when>
+ <xsl:otherwise> <!-- apply only contains fn, no operand-->
+ <mrow><xsl:apply-templates select="child::mml:fn/*"/></mrow>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:when>
+<xsl:otherwise> <!-- if operator is prefix (common case)-->
+ <xsl:choose>
+ <xsl:when test="name(mml:fn/*[position()=1])='apply'"> <!-- fn definition is complex, surround with brackets, but only one child-->
+ <mfenced separators=""><mrow><xsl:apply-templates select="mml:fn/*"/></mrow></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <mi><xsl:apply-templates select="mml:fn/*"/></mi>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="count(*)>1"> <!-- if no operands, don't put empty parentheses-->
+ <mo><mchar name="ApplyFunction"/></mo>
+ <mfenced>
+ <xsl:apply-templates select="*[position()!=1]"/>
+ </mfenced>
+ </xsl:if>
+</xsl:otherwise>
+</xsl:choose>
+</mrow>
+</xsl:template>
+
+
+
+
+<!-- quotient -->
+<xsl:template match="mml:apply[mml:quotient]">
+ <mrow> <!-- the third notation uses UNICODE chars x0230A and x0230B -->
+ <mo>integer part of</mo>
+ <mrow>
+ <xsl:choose> <!-- surround with brackets if operands are composed-->
+ <xsl:when test="child::*[position()=2] and name()='mml:apply'">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=2]"/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <mo>/</mo>
+ <xsl:choose>
+ <xsl:when test="child::*[position()=3] and name()='mml:apply'">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=3]"/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=3]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </mrow>
+ </mrow>
+</xsl:template>
+
+
+<!-- factorial -->
+<xsl:template match="mml:apply[mml:factorial]">
+ <xsl:text>{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="name(*[position()=2])='mml:apply'">
+ <xsl:text>{</xsl:text><xsl:apply-templates select="*[position()=2]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>!(fact)</xsl:text>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+
+<!-- divide -->
+<xsl:template match="mml:apply[mml:divide]">
+ <xsl:text>{ \frac</xsl:text>
+ <xsl:text>{ </xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>}</xsl:text>
+ <xsl:text>{ </xsl:text>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <xsl:text>}</xsl:text>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+
+<!-- APPLY CONTAINING MAX -->
+<xsl:template match="mml:apply/mml:max"/>
+<xsl:template match="mml:apply[mml:max]">
+ <xsl:text>{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="mml:bvar"> <!-- if there are bvars-->
+ <xsl:text>\max_{</xsl:text>
+ <!-- Select every bvar except the last one (position() only counts bvars, not the other siblings)-->
+ <xsl:for-each select="mml:bvar[position()!=last()]">
+ <xsl:apply-templates select="."/><xsl:text>,</xsl:text>
+ </xsl:for-each>
+ <xsl:apply-templates select="mml:bvar[position()=last()]"/>
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- No bvars, no underscore... -->
+ <xsl:text>\max</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>\left\{</xsl:text>
+ <xsl:for-each select="child::*[name()!='mml:condition' and name()!='mml:bvar' and name()!='mml:max' and position()!=last()]">
+ <xsl:apply-templates select="."/><xsl:text>,</xsl:text>
+ <xsl:message>RCAS: MathML mml:apply[mml:min] Applying templates to <xsl:copy-of select="name(.)"/></xsl:message>
+ </xsl:for-each>
+ <xsl:apply-templates select="child::*[name()!='mml:condition' and name()!='mml:bvar' and name()!='mml:max' and position()=last()]"/>
+ <!-- If there is a condition, do not close... -->
+ <xsl:if test="mml:condition">
+ <xsl:text>|</xsl:text><xsl:apply-templates select="mml:condition"/>
+ </xsl:if>
+ <xsl:text>\right\}</xsl:text>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+
+<!-- APPLY CONTAINING MIN -->
+<xsl:template match="mml:apply/mml:min"/>
+<xsl:template match="mml:apply[mml:min]">
+ <xsl:text>{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="mml:bvar"> <!-- if there are bvars-->
+ <xsl:text>\min_{</xsl:text>
+ <!-- Select every bvar except the last one (position() only counts bvars, not the other siblings)-->
+ <xsl:for-each select="mml:bvar[position()!=last()]">
+ <xsl:apply-templates select="."/><xsl:text>,</xsl:text>
+ </xsl:for-each>
+ <xsl:apply-templates select="mml:bvar[position()=last()]"/>
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- No bvars, no underscore... -->
+ <xsl:text>\min</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>\left\{</xsl:text>
+ <xsl:for-each select="child::*[name()!='mml:condition' and name()!='mml:bvar' and name()!='mml:min' and position()!=last()]">
+ <xsl:message>RCAS: MathML mml:apply[mml:min] Applying templates to <xsl:copy-of select="name(.)"/></xsl:message>
+ <xsl:apply-templates select="."/>
+ <xsl:text>,</xsl:text>
+ </xsl:for-each>
+ <xsl:apply-templates select="child::*[name()!='mml:condition' and name()!='mml:bvar' and name()!='mml:min' and position()=last()]"/>
+ <!-- If there is a condition, do not close... -->
+ <xsl:if test="mml:condition">
+ <xsl:text>|</xsl:text><xsl:apply-templates select="mml:condition"/>
+ </xsl:if>
+ <xsl:text>\right\}</xsl:text>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+
+
+
+
+
+
+
+<!-- APPLY CONTAINING substraction(minus) -->
+<!-- unary or binary operator -->
+<xsl:template match="mml:apply[mml:minus]">
+<xsl:text>{</xsl:text>
+<xsl:choose> <!-- binary -->
+ <xsl:when test="count(child::*)=3">
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>-</xsl:text>
+ <xsl:choose>
+ <xsl:when test="((name(*[position()=3])='mml:ci' or name(*[position()=3])='mml:cn') and contains(*[position()=3]/text(),'-')) or (name(*[position()=3])='mml:apply')">
+ <xsl:text>\left(</xsl:text> <xsl:apply-templates select="*[position()=3]"/><xsl:text>\right)</xsl:text>
+ <!-- surround negative or complex things with brackets -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=3]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise> <!-- unary -->
+ <xsl:text>-</xsl:text>
+ <xsl:choose>
+ <xsl:when test=
+ "((name(*[position()=2])='mml:ci' or name(*[position()=2])='mml:cn') and contains(*[position()=2]/text(),'-')) or (name(*[position()=2])='mml:apply')">
+ <xsl:text>\left(</xsl:text>
+ <xsl:apply-templates select="child::*[position()=last()]"/>
+ <xsl:text>\right)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="child::*[position()=last()]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+</xsl:choose>
+<xsl:text>}</xsl:text>
+</xsl:template>
+
+
+<!-- addition -->
+<xsl:template match="mml:apply[mml:plus]">
+ <xsl:choose>
+ <xsl:when test="count(child::*)>=3">
+ <mrow>
+ <xsl:choose>
+ <xsl:when test="((name(*[position()=2])='mml:ci' or name(*[position()=2])='mml:cn') and contains(*[position()=2]/text(),'-')) or (*[position()=2 and self::mml:apply and child::mml:minus])">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=2]"/></mfenced> <!-- surround negative things with brackets -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:for-each select="child::*[position()!=1 and position()!=2]">
+ <xsl:choose>
+ <xsl:when test="((name(.)='mml:ci' or name(.)='mml:cn') and contains(./text(),'-')) or (self::mml:apply and child::mml:minus)"> <!-- surround negative things with brackets -->
+ <mo>+</mo><mfenced separators=""><xsl:apply-templates select="."/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <mo>+</mo><xsl:apply-templates select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </mrow>
+ </xsl:when>
+ <xsl:when test="count(child::*)=2">
+ <mrow>
+ <mo>+</mo><xsl:apply-templates select="child::*[position()=2]"/>
+ </mrow>
+ </xsl:when>
+ <xsl:otherwise>
+ <mo>+</mo>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- power -->
+<xsl:template match="mml:apply[mml:power]">
+ <xsl:text> {</xsl:text>
+ <xsl:choose>
+ <xsl:when test="name(*[position()=2])='mml:apply'">
+ <xsl:text>\left(</xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>\rigth)</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>}^{</xsl:text>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <xsl:text>} </xsl:text>
+</xsl:template>
+
+<!-- remainder -->
+<xsl:template match="mml:apply[mml:rem]">
+ <mrow>
+ <xsl:choose> <!-- surround with brackets if operands are composed-->
+ <xsl:when test="name(*[position()=2])='mml:apply'">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=2]"/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <mo>mod</mo>
+ <xsl:choose>
+ <xsl:when test="name(*[position()=3])='mml:apply'">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=3]"/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=3]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </mrow>
+</xsl:template>
+
+<!-- multiplication -->
+<xsl:template match="mml:apply[mml:times]">
+<xsl:choose>
+<xsl:when test="count(child::*)>=3">
+ <mrow>
+ <xsl:for-each select="child::*[position()!=last() and position()!=1]">
+ <xsl:choose>
+ <xsl:when test="mml:plus"> <!--add brackets around + children for priority purpose-->
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced><mo><mchar name="InvisibleTimes"/></mo>
+ </xsl:when>
+ <xsl:when test="mml:minus"> <!--add brackets around - children for priority purpose-->
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced><mo><mchar name="InvisibleTimes"/></mo>
+ </xsl:when>
+ <xsl:when test="(name(.)='mml:ci' or name(.)='mml:cn') and contains(text(),'-')"> <!-- have to do it using contains because starts-with doesn't seem to work well in XT-->
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced><mo><mchar name="InvisibleTimes"/></mo>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/><mo><mchar name="InvisibleTimes"/></mo>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:for-each select="child::*[position()=last()]">
+ <xsl:choose>
+ <xsl:when test="mml:plus">
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced>
+ </xsl:when>
+ <xsl:when test="mml:minus">
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced>
+ </xsl:when>
+ <xsl:when test="(name(.)='mml:ci' or name(.)='mml:cn') and contains(text(),'-')"> <!-- have to do it using contains because starts-with doesn't seem to work well in XT-->
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </mrow>
+</xsl:when>
+<xsl:when test="count(child::*)=2"> <!-- unary -->
+ <mrow>
+ <mo><mchar name="InvisibleTimes"/></mo>
+ <xsl:choose>
+ <xsl:when test="mml:plus">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=2]"/></mfenced>
+ </xsl:when>
+ <xsl:when test="mml:minus">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=2]"/></mfenced>
+ </xsl:when>
+ <xsl:when test="(*[position()=2 and self::mml:ci] or *[position()=2 and self::mml:cn]) and contains(*[position()=2]/text(),'-')">
+ <mfenced separators=""><xsl:apply-templates select="*[position()=2]"/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </mrow>
+</xsl:when>
+<xsl:otherwise> <!-- no operand -->
+ <mo><mchar name="InvisibleTimes"/></mo>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<!-- root -->
+<xsl:template match="mml:apply[mml:root]">
+ <xsl:choose>
+ <xsl:when test="mml:degree">
+ <xsl:choose>
+ <xsl:when test="mml:degree/mml:cn/text()='2'"> <!--if degree=2 display a standard square root-->
+ <msqrt>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ </msqrt>
+ </xsl:when>
+ <xsl:otherwise>
+ <mroot>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <mrow><xsl:apply-templates select="mml:degree/*"/></mrow>
+ </mroot>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise> <!-- no degree specified-->
+ <msqrt>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ </msqrt>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- greatest common divisor -->
+<xsl:template match="mml:apply[mml:gcd]">
+ <mrow>
+ <mi>gcd</mi><mo><mchar name="ApplyFunction"/></mo>
+ <mfenced>
+ <xsl:apply-templates select="child::*[position()!=1]"/>
+ </mfenced>
+ </mrow>
+</xsl:template>
+
+<!-- AND -->
+<xsl:template match="mml:apply[mml:and]">
+<mrow>
+ <xsl:choose>
+ <xsl:when test="count(*)>=3"> <!-- at least two operands (common case)-->
+ <xsl:for-each select="child::*[position()!=last() and position()!=1]">
+ <xsl:choose>
+ <xsl:when test="mml:or"> <!--add brackets around OR children for priority purpose-->
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced><mo><mchar name="And"/></mo>
+ </xsl:when>
+ <xsl:when test="mml:xor"> <!--add brackets around XOR children for priority purpose-->
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced><mo><mchar name="And"/></mo>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/><mo><mchar name="And"/></mo>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:for-each select="child::*[position()=last()]">
+ <xsl:choose>
+ <xsl:when test="mml:or">
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced>
+ </xsl:when>
+ <xsl:when test="mml:xor">
+ <mfenced separators=""><xsl:apply-templates select="."/></mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="count(*)=2">
+ <mo><mchar name="And"/></mo><xsl:apply-templates select="*[position()=last()]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <mo><mchar name="And"/></mo>
+ </xsl:otherwise>
+ </xsl:choose>
+</mrow>
+</xsl:template>
+
+<!-- OR -->
+<xsl:template match="mml:apply[mml:or]">
+<mrow>
+ <xsl:choose>
+ <xsl:when test="count(*)>=3">
+ <xsl:for-each select="child::*[position()!=last() and position()!=1]">
+ <xsl:apply-templates select="."/><mo><mchar name="Or"/></mo>
+ </xsl:for-each>
+ <xsl:apply-templates select="child::*[position()=last()]"/>
+ </xsl:when>
+ <xsl:when test="count(*)=2">
+ <mo><mchar name="Or"/></mo><xsl:apply-templates select="*[position()=last()]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <mo><mchar name="Or"/></mo>
+ </xsl:otherwise>
+ </xsl:choose>
+</mrow>
+</xsl:template>
+
+<!-- XOR -->
+<xsl:template match="mml:apply[mml:xor]">
+<mrow>
+ <xsl:choose>
+ <xsl:when test="count(*)>=3">
+ <xsl:for-each select="child::*[position()!=last() and position()!=1]">
+ <xsl:apply-templates select="."/><mo>xor</mo>
+ </xsl:for-each>
+ <xsl:apply-templates select="child::*[position()=last()]"/>
+ </xsl:when>
+ <xsl:when test="count(*)=2">
+ <mo>xor</mo><xsl:apply-templates select="*[position()=last()]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <mo>xor</mo>
+ </xsl:otherwise>
+ </xsl:choose>
+</mrow>
+</xsl:template>
+
+<!-- NOT -->
+<xsl:template match="mml:apply[mml:not]">
+ <mrow>
+ <mo><mchar name="Not"/></mo>
+ <xsl:choose>
+ <xsl:when test="child::mml:apply"><!--add brackets around OR,AND,XOR children for priority purpose-->
+ <mfenced separators="">
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ </mfenced>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </mrow>
+</xsl:template>
+
+<!-- implies -->
+<xsl:template match="mml:apply[mml:implies]">
+ <mrow>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <mo><mchar name="DoubleRightArrow"/></mo>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ </mrow>
+</xsl:template>
+
+<xsl:template match="mml:reln[mml:implies]">
+ <mrow>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <mo><mchar name="DoubleRightArrow"/></mo>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ </mrow>
+</xsl:template>
+
+<!-- for all-->
+<xsl:template match="mml:apply[mml:forall]">
+ <mrow>
+ <mo><mchar name="ForAll"/></mo>
+ <mrow>
+ <xsl:for-each select="mml:bvar[position()!=last()]">
+ <xsl:apply-templates select="."/><mo>,</mo>
+ </xsl:for-each>
+ <xsl:apply-templates select="mml:bvar[position()=last()]"/>
+ </mrow>
+ <xsl:if test="mml:condition">
+ <mrow><mo>,</mo><xsl:apply-templates select="mml:condition"/></mrow>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="mml:apply">
+ <mo>:</mo><xsl:apply-templates select="mml:apply"/>
+ </xsl:when>
+ <xsl:when test="mml:reln">
+ <mo>:</mo><xsl:apply-templates select="mml:reln"/>
+ </xsl:when>
+ </xsl:choose>
+ </mrow>
+</xsl:template>
+
+<!-- in -->
+<xsl:template match="mml:apply[mml:in]">
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>\in</xsl:text>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- leq -->
+<xsl:template match="mml:apply[mml:leq]">
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>\leq</xsl:text>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- geq -->
+<xsl:template match="mml:apply[mml:geq]">
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>\geq</xsl:text>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- domain -->
+<xsl:template match="mml:apply[mml:domain]">
+ <xsl:text>\mbox{dom}(</xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<!-- notin -->
+<xsl:template match="mml:apply[mml:notin]">
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <xsl:text>\notin</xsl:text>
+ <xsl:apply-templates select="child::*[position()=3]"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- exist-->
+<xsl:template match="mml:apply[mml:exists]">
+ <mrow>
+ <mo><mchar name="Exists"/></mo>
+ <mrow>
+ <xsl:for-each select="mml:bvar[position()!=last()]">
+ <xsl:apply-templates select="."/><mo>,</mo>
+ </xsl:for-each>
+ <xsl:apply-templates select="mml:bvar[position()=last()]"/>
+ </mrow>
+ <xsl:if test="mml:condition">
+ <mrow><mo>,</mo><xsl:apply-templates select="mml:condition"/></mrow>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="mml:apply">
+ <mo>:</mo><xsl:apply-templates select="mml:apply"/>
+ </xsl:when>
+ <xsl:when test="mml:reln">
+ <mo>:</mo><xsl:apply-templates select="mml:reln"/>
+ </xsl:when>
+ </xsl:choose>
+ </mrow>
+</xsl:template>
+
+<!-- absolute value -->
+<xsl:template match="mml:apply[mml:abs]">
+ <mrow><mo>|</mo><xsl:apply-templates select="child::*[position()=last()]"/><mo>|</mo></mrow>
+</xsl:template>
+
+<!-- conjugate -->
+<xsl:template match="mml:apply[mml:conjugate]">
+ <mover>
+ <xsl:apply-templates select="child::*[position()=2]"/>
+ <mo><mchar name="ovbar"/></mo> <!-- does not work, UNICODE x0233D or perhaps OverBar-->
+ </mover>
+</xsl:template>
+
+<!-- argument of complex number -->
+<xsl:template match="mml:apply[mml:arg]">
+ <mrow>
+ <mi>arg</mi><mo><mchar name="ApplyFunction"/></mo><mfenced separators=""><xsl:apply-templates select="child::*[position()=2]"/></mfenced>
+ </mrow>
+</xsl:template>
+
+<!-- real part of complex number -->
+<xsl:template match="mml:apply[mml:real]">
+ <mrow>
+ <mi><xsl:text disable-output-escaping='yes'>&amp;#x0211C;</xsl:text><!-- mchar Re or realpart should work--></mi>
+ <mo><mchar name="ApplyFunction"/></mo>
+ <mfenced separators=""><xsl:apply-templates select="child::*[position()=2]"/></mfenced>
+ </mrow>
+</xsl:template>
+
+<!-- imaginary part of complex number -->
+<xsl:template match="mml:apply[mml:imaginary]">
+ <mrow>
+ <mi><xsl:text disable-output-escaping='yes'>&amp;#x02111;</xsl:text><!-- mchar Im or impart should work--></mi>
+ <mo><mchar name="ApplyFunction"/></mo>
+ <mfenced separators=""><xsl:apply-templates select="child::*[position()=2]"/></mfenced>
+ </mrow>
+</xsl:template>
+
+<!-- lowest common multiple -->
+<xsl:template match="mml:apply[mml:lcm]">
+ <mrow>
+ <mi>lcm</mi><mo><mchar name="ApplyFunction"/></mo>
+ <mfenced>
+ <xsl:apply-templates select="child::*[position()!=1]"/>
+ </mfenced>
+ </mrow>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.mod.xsl b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.mod.xsl
new file mode 100644
index 0000000000..29d9d82682
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.mod.xsl
@@ -0,0 +1,99 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet
+[
+ <!ENTITY % mmlalias PUBLIC "MathML alias" "ent/mmlalias.ent"> %mmlalias;
+ <!ENTITY % mmlextra PUBLIC "MathML extra" "ent/mmlextra.ent"> %mmlextra;
+]>
+<!--#############################################################################
+ | $Id: mathml.content.mod.xsl,v 1.1.1.1 2003/03/14 10:42:54 rcasellas Exp $
+ |- #############################################################################
+ | $Author: rcasellas $
+ |
+ | PURPOSE: MathML content markup.
+ | Note: these elements are not part of the DocBook DTD. I have extended
+ | the docbook DTD in order to support this tags, so that's why I have these
+ | templates here.
+ |
+ | MathML namespace used -> mml
+ + ############################################################################## -->
+
+<xsl:stylesheet version='1.0'
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1998/Math/MathML">
+
+<xsl:template match="mml:semantics">
+</xsl:template>
+
+
+<xsl:template match="mml:set|mml:list">
+</xsl:template>
+
+
+<xsl:template match="mml:matrix">
+</xsl:template>
+
+<xsl:template match="mml:reln">
+</xsl:template>
+
+<xsl:template match="mml:lambda">
+</xsl:template>
+
+
+
+
+
+
+<!-- Interval -->
+<!-- att. closure : open, closed, open-closed, or closed-open, with a default value of closed. -->
+<xsl:template match="mml:interval">
+<xsl:choose>
+ <xsl:when test="@closure = 'open'">
+ <xsl:call-template name="interval.render">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="fst">\left( </xsl:with-param>
+ <xsl:with-param name="scd">\right) </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@closure = 'open-closed'">
+ <xsl:call-template name="interval.render">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="fst">\left( </xsl:with-param>
+ <xsl:with-param name="scd">\right] </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@closure = 'closed-open'">
+ <xsl:call-template name="interval.render">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="fst">\left[ </xsl:with-param>
+ <xsl:with-param name="scd">\right) </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="interval.render">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="fst">\left[ </xsl:with-param>
+ <xsl:with-param name="scd">\right] </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template name="interval.render">
+<xsl:param name="node"/>
+<xsl:param name="fst"/>
+<xsl:param name="scd"/>
+<xsl:choose>
+ <!-- Two real numbers define the interval -->
+ <xsl:when test="count(child::*) = 2">
+ <xsl:value-of select="$fst"/>
+ <xsl:apply-templates select="$node/child::*[1]"/>
+ <xsl:text> , </xsl:text>
+ <xsl:apply-templates select="$node/child::*[2]"/>
+ <xsl:value-of select="$scd"/>
+ </xsl:when>
+ <!-- A condition defines the interval -->
+ <xsl:otherwise> </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.token.mod.xsl b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.token.mod.xsl
new file mode 100644
index 0000000000..c36ca7162b
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.content.token.mod.xsl
@@ -0,0 +1,232 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet
+[
+ <!ENTITY % mmlalias PUBLIC "MathML alias" "ent/mmlalias.ent"> %mmlalias;
+ <!ENTITY % mmlextra PUBLIC "MathML extra" "ent/mmlextra.ent"> %mmlextra;
+]>
+<!--#############################################################################
+ | $Id: mathml.content.token.mod.xsl,v 1.1.1.1 2003/03/14 10:42:54 rcasellas Exp $
+ |- #############################################################################
+ | $Author: rcasellas $
+ |
+ | PURPOSE: MathML Content Markup, tokens (ci, cn, csymbol)
+ | MathML namespace used -> mml
+ + ############################################################################## -->
+
+<xsl:stylesheet version='1.0'
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1998/Math/MathML">
+
+<xsl:strip-space elements="mml:math mml:mrow"/>
+
+
+<!-- Content Number -->
+<!-- support for bases and types-->
+<xsl:template match="mml:cn">
+ <xsl:text>{</xsl:text>
+ <xsl:text>{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="./@type='complex-cartesian' or ./@type='complex'">
+ <mn><xsl:value-of select="text()[position()=1]"/></mn>
+ <xsl:choose>
+ <xsl:when test="contains(text()[position()=2],'-')">
+ <xsl:text>-</xsl:text><xsl:value-of select="substring-after(text()[position()=2],'-')"/>
+ <!-- substring-after does not seem to work well in XT :
+ if imaginary part is expressed with at least one space char
+ before the minus sign, then it does not work (we end up with
+ two minus sign since the one in the text is kept)-->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>+</xsl:text> <xsl:value-of select="text()[position()=2]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>\dot\textrm{i}</xsl:text>
+ </xsl:when>
+ <xsl:when test="./@type='complex-polar'">
+ <xsl:text>\textrm{Polar}(</xsl:text><xsl:value-of select="text()[position()=1]"/><xsl:text>,</xsl:text>
+ <xsl:value-of select="text()[position()=2]"/>
+ <xsl:text>)</xsl:text>
+ </xsl:when>
+ <xsl:when test="./@type='rational'">
+ <xsl:text>\frac{</xsl:text><xsl:value-of select="text()[position()=1]"/><xsl:text>}{</xsl:text>
+ <xsl:value-of select="text()[position()=2]"/>
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>}</xsl:text>
+ <xsl:if test="@base and @base!=10"> <!-- base specified and different from 10 ; if base = 10 we do not display it -->
+ <xsl:text>_{</xsl:text><xsl:value-of select="@base"/><xsl:text>}</xsl:text>
+ </xsl:if>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+
+
+<!-- Content Identifier -->
+<!-- identifier -->
+<!--support for presentation markup-->
+<xsl:template match="mml:ci">
+<xsl:choose>
+<xsl:when test="./@type='complex-cartesian' or ./@type='complex'">
+ <xsl:choose>
+ <xsl:when test="count(*)>0"> <!--if identifier is composed of real+imag parts-->
+ <xsl:text>{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="*[self::mml:mchar and position()=1]"> <!-- if real part is an mchar -->
+ <xsl:text>\textrm{</xsl:text><xsl:copy-of select="*[position()=1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- if real part is simple text -->
+ <xsl:text>\textrm{</xsl:text><xsl:copy-of select="*[position()=1]"/><xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose> <!-- im part is negative-->
+ <xsl:when test="contains(text()[preceding-sibling::*[position()=1 and self::mml:sep]],'-')">
+ <xsl:text>-\textrm{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="mml:mchar[preceding-sibling::*[self::mml:sep]]"><!-- if im part is an mchar -->
+ <xsl:copy-of select="mml:mchar[preceding-sibling::*[self::mml:sep]]"/>
+ </xsl:when>
+ <xsl:otherwise><!-- if im part is simple text -->
+ <xsl:value-of select="substring-after(text()[preceding-sibling::*[position()=1 and self::mml:sep]],'-')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>}</xsl:text>
+ <xsl:text>\dot\textrm{i}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- im part is not negative-->
+ <xsl:text>+\textrm{</xsl:text>
+ <xsl:choose><!-- if im part is an mchar -->
+ <xsl:when test="mml:mchar[preceding-sibling::*[self::mml:sep]]">
+ <xsl:copy-of select="mml:mchar[preceding-sibling::*[self::mml:sep]]"/>
+ </xsl:when>
+ <xsl:otherwise><!-- if im part is simple text -->
+ <xsl:value-of select="text()[preceding-sibling::*[position()=1 and self::mml:sep]]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>}</xsl:text>
+ <xsl:text>\dot\textrm{i}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- if identifier is composed only of one text child-->
+ <xsl:text>\dot\textrm{</xsl:text><xsl:value-of select="."/><xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:when>
+<xsl:when test="./@type='complex-polar'">
+ <xsl:choose>
+ <xsl:when test="count(*)>0"> <!--if identifier is composed of real+imag parts-->
+ <xsl:text>{</xsl:text>
+ <mi>Polar</mi>
+ <mfenced><mi>
+ <xsl:value-of select="text()[following-sibling::*[self::mml:sep]]"/>
+ <xsl:if test="mml:mchar[following-sibling::*[self::mml:sep]]">
+ <xsl:copy-of select="mml:mchar[following-sibling::*[self::mml:sep]]"/>
+ </xsl:if>
+ </mi>
+ <mi>
+ <xsl:value-of select="text()[preceding-sibling::*[self::mml:sep]]"/>
+ <xsl:if test="mml:mchar[preceding-sibling::*[self::mml:sep]]">
+ <xsl:copy-of select="mml:mchar[preceding-sibling::*[self::mml:sep]]"/>
+ </xsl:if>
+ </mi></mfenced>
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- if identifier is composed only of one text child-->
+ <mi><xsl:value-of select="."/></mi>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:when>
+<xsl:when test="./@type='rational'">
+ <xsl:choose>
+ <xsl:when test="count(*)>0"> <!--if identifier is composed of two parts-->
+ <xsl:text>{</xsl:text><mi>
+ <xsl:value-of select="text()[following-sibling::*[self::mml:sep]]"/>
+ <xsl:if test="mml:mchar[following-sibling::*[self::mml:sep]]">
+ <xsl:copy-of select="mml:mchar[following-sibling::*[self::mml:sep]]"/>
+ </xsl:if>
+ </mi>
+ <mo>/</mo>
+ <mi>
+ <xsl:value-of select="text()[preceding-sibling::*[self::mml:sep]]"/>
+ <xsl:if test="mml:mchar[preceding-sibling::*[self::mml:sep]]">
+ <xsl:copy-of select="mml:mchar[preceding-sibling::*[self::mml:sep]]"/>
+ </xsl:if>
+ </mi><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- if identifier is composed only of one text child-->
+ <mi><xsl:value-of select="."/></mi>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="./@type='vector'">
+ <mi fontweight="bold">
+ <xsl:value-of select="text()"/>
+ <xsl:if test="mml:mchar">
+ <xsl:copy-of select="mml:mchar"/>
+ </xsl:if>
+ </mi>
+</xsl:when>
+ <!-- type 'set' seems to be deprecated (use 4.4.12 instead); besides, there is no easy way to translate set identifiers to chars in ISOMOPF -->
+<xsl:otherwise> <!-- no type attribute provided -->
+ <xsl:choose>
+ <xsl:when test="mml:mchar"> <!-- test if identifier is expressed using mchar nodes -->
+ <mi><xsl:value-of select="text()"/><xsl:copy-of select="mml:mchar"/></mi>
+ </xsl:when>
+ <xsl:when test="count(node()) != count(text())">
+ <!--test if children are not all text nodes, meaning there is markup assumed
+ to be presentation markup (the case where there are mchar nodes has been tested just before)-->
+ <xsl:text>{</xsl:text><xsl:copy-of select="child::*"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise> <!-- common case -->
+ <mi><xsl:value-of select="."/></mi>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+
+
+
+
+
+<!-- externally defined symbols-->
+<xsl:template match="mml:apply[mml:csymbol]">
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="mml:csymbol[position()=1]"/>
+ <xsl:text>\left(</xsl:text>
+ <xsl:for-each select="child::*[position()!=1]">
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ <xsl:text>\right)</xsl:text>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+
+<xsl:template match="mml:csymbol">
+<xsl:choose>
+ <!--test if children are not all text nodes, meaning there is markup assumed to be presentation markup-->
+ <!--perhaps it would be sufficient to test if there is more than one node or text node-->
+ <xsl:when test="count(node()) != count(text())">
+ <xsl:text>{</xsl:text> <xsl:copy-of select="child::*"/> <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\textrm{</xsl:text> <xsl:copy-of select="."/> <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template match="mml:mchar">
+ <xsl:copy-of select="."/>
+</xsl:template>
+<!--
+<xsl:template match="mml:mtext">
+ <xsl:copy-of select="."/>
+</xsl:template>
+-->
+</xsl:stylesheet>
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/mathml.mod.xsl b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.mod.xsl
new file mode 100644
index 0000000000..32262afab4
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.mod.xsl
@@ -0,0 +1,48 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet
+[
+ <!ENTITY % mmlalias PUBLIC "MathML alias" "ent/mmlalias.ent"> %mmlalias;
+ <!ENTITY % mmlextra PUBLIC "MathML extra" "ent/mmlextra.ent"> %mmlextra;
+]>
+<!--#############################################################################
+ | $Id: mathml.mod.xsl,v 1.4 2004/01/18 10:39:23 j-devenish Exp $
+ |- #############################################################################
+ | $Author: j-devenish $
+ |
+ | PURPOSE: MathML presentation and content markup.
+ | Note: these elements are not part of the DocBook DTD. I have extended
+ | the docbook DTD in order to support this tags, so that's why I have these
+ | templates here.
+ |
+ | MathML namespace used -> mml
+ + ############################################################################## -->
+
+<xsl:stylesheet version='1.0'
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1998/Math/MathML">
+
+ <xsl:strip-space elements="mml:math mml:mrow"/>
+
+ <xsl:template match="mml:math">
+ <xsl:text>\begin{displaymath}</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>\end{displaymath}%&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="mml:math[@mode='inline']">
+ <xsl:text>\begin{math}</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>\end{math}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="mml:math[@mode='display']">
+ <xsl:text>\begin{displaymath}</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>\end{displaymath}%&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="p">
+ <xsl:text>\section{</xsl:text> <xsl:value-of select="normalize-space(.)"/> <xsl:text>}&#10;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xslt/db2latex-xsl/xsl/mathml/mathml.presentation.mod.xsl b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.presentation.mod.xsl
new file mode 100644
index 0000000000..a3a67e17be
--- /dev/null
+++ b/docs/xslt/db2latex-xsl/xsl/mathml/mathml.presentation.mod.xsl
@@ -0,0 +1,493 @@
+<?xml version='1.0'?>
+<!DOCTYPE xsl:stylesheet
+[
+ <!ENTITY % mmlalias PUBLIC "MathML alias" "ent/mmlalias.ent"> %mmlalias;
+ <!ENTITY % mmlextra PUBLIC "MathML extra" "ent/mmlextra.ent"> %mmlextra;
+]>
+<!--#############################################################################
+ | $Id: mathml.presentation.mod.xsl,v 1.4 2004/01/18 10:39:50 j-devenish Exp $
+ |- #############################################################################
+ | $Author: j-devenish $
+ |
+ | PURPOSE: MathML presentation markup.
+ | Note: these elements are not part of the DocBook DTD. I have extended
+ | the docbook DTD in order to support this tags, so that's why I have these
+ | templates here.
+ |
+ | MathML namespace used -> mml
+ + ############################################################################## -->
+
+<xsl:stylesheet version='1.0'
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns="http://www.w3.org/1998/Math/MathML">
+
+<xsl:template match="mml:mrow">
+ <xsl:text>{</xsl:text> <xsl:apply-templates/> <xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:variable name="latex.entities.xml" select="document('latex.entities.xml')"/>
+
+
+<!-- TOKENS -->
+<!-- Math Identifier -->
+<xsl:template match="mml:mi">
+ <xsl:variable name="fontstyle" select="@fontstyle"/>
+ <xsl:variable name="identifier" select="normalize-space(.)"/>
+ <xsl:variable name="equivalent">
+ <xsl:if test="string-length($identifier)=1">
+ <xsl:value-of select="$latex.entities.xml/latex/character[@entity=$identifier]"/>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$identifier='&ExponentialE;'">
+ <xsl:text>\textrm{e}</xsl:text>
+ </xsl:when>
+ <xsl:when test="$identifier='&ImaginaryI;'">
+ <xsl:text>\textrm{i}</xsl:text>
+ </xsl:when>
+ <xsl:when test="$identifier='&#x0221E;'"><!--/infty infinity -->
+ <xsl:text>\infty</xsl:text>
+ </xsl:when>
+ <!-- currently tries to map single-character identifiers only -->
+ <xsl:when test="$equivalent!=''">
+ <xsl:text>{</xsl:text>
+ <xsl:copy-of select="$equivalent"/>
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$fontstyle='normal' or string-length($identifier)&gt;1">
+ <xsl:text>\textrm</xsl:text>
+ </xsl:if>
+ <xsl:text>{</xsl:text>
+ <xsl:copy-of select="$identifier"/>
+ <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Math Number -->
+<xsl:template match="mml:mn">
+ <xsl:copy-of select="normalize-space(.)"/>
+</xsl:template>
+
+<!-- Math Phantom -->
+<xsl:template match="mml:mphantom">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- Empty unless $character is a single character -->
+<xsl:template name="generate.equivalent">
+ <xsl:param name="arguments" select="0"/>
+ <xsl:param name="character"/>
+ <xsl:if test="string-length($character)=1">
+ <xsl:choose>
+ <xsl:when test="$arguments&gt;0">
+ <xsl:value-of select="$latex.entities.xml/latex/character[@entity=$character and @arguments=$arguments]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$latex.entities.xml/latex/character[@entity=$character and @arguments='']"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<!-- Math Operator -->
+<xsl:template match="mml:mo">
+ <xsl:variable name="operator" select="normalize-space(.)"/>
+ <xsl:variable name="equivalent">
+ <xsl:call-template name="generate.equivalent">
+ <xsl:with-param name="character" select="$operator"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$operator='&ApplyFunction;'">
+ <xsl:text></xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&InvisibleComma;'">
+ <xsl:text>\thinspace</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&InvisibleTimes;'">
+ <xsl:text>\thinspace</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&Integral;'">
+ <xsl:text>\int</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&Product;'">
+ <xsl:text>\prod</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&Sum;'">
+ <xsl:text>\sum</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&Hat;'">
+ <xsl:text>\sphat</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&RightArrow;'">
+ <xsl:text>\longrightarrow</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&Element;'">
+ <xsl:text>\in</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&VerticalBar;'">
+ <xsl:text>|</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='&DifferentialD;'">
+ <xsl:text>\textrm{d}</xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='('">
+ <xsl:text> {\left( </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator=')'">
+ <xsl:text> \right)} </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='{'">
+ <xsl:text> {\left\{ </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='}'">
+ <xsl:text> \right\}} </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='['">
+ <xsl:text> {\left[ </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator=']'">
+ <xsl:text> \right]} </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='max'">
+ <xsl:text> \max </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='min'">
+ <xsl:text> \min </xsl:text>
+ </xsl:when>
+ <xsl:when test="$operator='+' or $operator='-' or $operator='/' or $operator='*'">
+ <xsl:value-of select="$operator"/>
+ </xsl:when>
+ <xsl:when test="$equivalent">
+ <xsl:value-of select="$equivalent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\operatorname{</xsl:text>
+ <xsl:value-of select="$operator" />
+ <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Math String -->
+<xsl:template match="mml:ms">
+ <xsl:text>\textrm{</xsl:text>
+ <xsl:copy-of select="normalize-space(.)" />
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- Math Text -->
+<xsl:template match="mml:mtext">
+ <xsl:message>RCAS mtext, <xsl:copy-of select="."/> </xsl:message>
+ <xsl:text>\textrm{</xsl:text>
+ <xsl:copy-of select="." />
+ <xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- Math Space -->
+<xsl:template match="mml:mspace">
+ <xsl:if test="@width!='' and not(contains(@width,'%'))">
+ <xsl:text>\textrm{\hspace{</xsl:text><!-- kludge! -->
+ <xsl:value-of select="@width"/>
+ <xsl:text>}}</xsl:text>
+ </xsl:if>
+ <xsl:if test="@height!='' or @depth!=''">
+ <xsl:message>Warning: mspace support does not include height or depth.</xsl:message>
+ </xsl:if>
+</xsl:template>
+
+
+
+
+
+<xsl:template match="mml:msup">
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>^{</xsl:text><xsl:apply-templates select="*[2]"/><xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:msub">
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>_{</xsl:text><xsl:apply-templates select="*[2]"/><xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:msubsup">
+<xsl:choose>
+ <xsl:when test="name(*[1])='mo'">
+ <xsl:apply-templates select="*[1]"/>
+ <!-- sub -->
+ <xsl:text>_{</xsl:text><xsl:apply-templates select="*[2]"/><xsl:text>}</xsl:text>
+ <!-- super -->
+ <xsl:text>^{</xsl:text><xsl:apply-templates select="*[3]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- base -->
+ <xsl:text>{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ <!-- sub -->
+ <xsl:text>_{</xsl:text><xsl:apply-templates select="*[2]"/><xsl:text>}</xsl:text>
+ <!-- super -->
+ <xsl:text>^{</xsl:text><xsl:apply-templates select="*[3]"/><xsl:text>}</xsl:text>
+ </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+
+<xsl:template match="mml:mmultiscripts">
+</xsl:template>
+
+<xsl:template match="mml:munder">
+<!--
+<xsl:choose>
+ <xsl:when test="*[2] = &#818;">
+ <xsl:text>\underline{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:when test="normalize-space(*[2]) = &#65080;">
+ <xsl:text>\underbrace{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:when test="normalize-space(*[2]) = &#9141;">
+ <xsl:text>\underbrace{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\underset{</xsl:text>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:text>}{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>}</xsl:text>
+-->
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>_{</xsl:text>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:text>}}</xsl:text>
+<!--
+ </xsl:otherwise>
+</xsl:choose>
+-->
+</xsl:template>
+<xsl:template match="mml:mover">
+<!--<xsl:choose>
+ <xsl:when test="normalize-space(*[2]) = &#175;">
+ <xsl:text>\overline{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:when test="normalize-space(*[2]) = &#65079;">
+ <xsl:text>\overbrace{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:when test="normalize-space(*[2]) = &#65077;">
+ <xsl:text>\widehat{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:when test="normalize-space(*[2]) = &#9140;">
+ <xsl:text>\widehat{</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+</xsl:choose>-->
+ <xsl:choose>
+ <xsl:when test="@accent='true' or ( local-name(*[2])='mo' and not(@accent='false'))">
+ <xsl:variable name="equivalent">
+ <xsl:call-template name="generate.equivalent">
+ <xsl:with-param name="arguments" select="1"/>
+ <xsl:with-param name="character" select="normalize-space(*[2])"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$equivalent!=''">
+ <xsl:text>{</xsl:text>
+ <xsl:value-of select="$equivalent"/>
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>}}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>^{</xsl:text>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:text>}}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>^{</xsl:text>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:text>}}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<!-- Math UnderOver -->
+<xsl:template match="mml:munderover">
+ <xsl:text>{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>_{</xsl:text>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:text>}</xsl:text>
+ <xsl:text>^{</xsl:text>
+ <xsl:apply-templates select="*[3]"/>
+ <xsl:text>}}</xsl:text>
+ <!--
+ <xsl:text>\overset{</xsl:text>
+ <xsl:apply-templates select="*[3]"/>
+ <xsl:text>}{\underset{</xsl:text>
+ <xsl:apply-templates select="*[2]"/>
+ <xsl:text>}{</xsl:text>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:text>}}</xsl:text>
+ -->
+</xsl:template>
+
+
+
+<!-- Math Fenced -->
+<xsl:template match="mml:mfenced">
+<!-- get open,close, separators att -->
+ <xsl:choose>
+ <xsl:when test="@open='('">
+ <xsl:text> {\left( </xsl:text>
+ </xsl:when>
+ <xsl:when test="@open='{'">
+ <xsl:text> {\left\{ </xsl:text>
+ </xsl:when>
+ <xsl:when test="@open='['">
+ <xsl:text> {\left[\, </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> {\left( </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="*[1]"/>
+ <xsl:choose>
+ <xsl:when test="@close=')'">
+ <xsl:text> \right)} </xsl:text>
+ </xsl:when>
+ <xsl:when test="@close='}'">
+ <xsl:text> \right\}} </xsl:text>
+ </xsl:when>
+ <xsl:when test="@close=']'">
+ <xsl:text> \,\right]} </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> \right)} </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<!-- Math frac -->
+<xsl:template match="mml:mfrac">
+<xsl:choose>
+<xsl:when test="@linethickness">
+ <xsl:choose>
+ <xsl:when test="@linethickness='thin'">
+ <xsl:text> \frac[1pt]{ </xsl:text>
+ </xsl:when>
+ <xsl:when test="@linethickness='medium'">
+ <xsl:text> \frac[1.1pt]{ </xsl:text>
+ </xsl:when>
+ <xsl:when test="@linethickness='thick'">
+ <xsl:text> \frac[1.2pt]{ </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> \frac[</xsl:text><xsl:value-of select="@linethickness"/><xsl:text>]{ </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:when>
+<xsl:otherwise>
+ <xsl:text> \frac{ </xsl:text>
+</xsl:otherwise>
+</xsl:choose>
+<!-- <xsl:value-of select="*[1]"/> -->
+<xsl:apply-templates select="*[1]"/>
+<xsl:text> }{ </xsl:text>
+<!-- <xsl:value-of select="*[2]"/> -->
+<xsl:apply-templates select="*[2]"/>
+<xsl:text> }</xsl:text>
+</xsl:template>
+
+
+<!-- Math msqrt -->
+<xsl:template match="mml:msqrt">
+ <xsl:text> \sqrt{ </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text> }</xsl:text>
+</xsl:template>
+
+
+<!-- Math mroot -->
+<xsl:template match="mml:mroot">
+ <xsl:text> \sqrt[</xsl:text><xsl:apply-templates select="*[1]"/><xsl:text>]{</xsl:text>
+ <xsl:apply-templates select="*[2]"/><xsl:text> }</xsl:text>
+</xsl:template>
+
+
+
+<xsl:template name="mtable.format.tabular">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="i" select="1"/>
+ <xsl:choose>
+ <!-- Out of the recursive iteration -->
+ <xsl:when test="$i > $cols"></xsl:when>
+ <!-- There are still columns to count -->
+ <xsl:otherwise>
+ <xsl:text>c</xsl:text>
+ <!-- Recursive for next column -->
+ <xsl:call-template name="mtable.format.tabular">
+ <xsl:with-param name="i" select="$i+1"/>
+ <xsl:with-param name="cols" select="$cols"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="mml:mtable">
+<xsl:variable name="rows" select="mml:mtr"/>
+<xsl:text>\begin{array}{</xsl:text>
+<xsl:call-template name="mtable.format.tabular"><xsl:with-param name="cols" select="count($rows)"/></xsl:call-template>
+<xsl:text>}&#10;</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{array} </xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:mtr">
+<!-- Row starts here -->
+<xsl:apply-templates/>
+<!-- End Row here -->
+</xsl:template>
+
+<xsl:template match="mml:mtd">
+ <xsl:apply-templates/><xsl:text> &amp; </xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:mtd[position()=last()]">
+ <xsl:apply-templates/><xsl:text>\\&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:mtd[position()=last()]">
+ <xsl:apply-templates/><xsl:text>\\&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="mml:mphantom">
+ <xsl:apply-templates mode="phantom"/>
+</xsl:template>
+
+<xsl:template match="mml:mi" mode="phantom">
+ <xsl:variable name="fontstyle" select="@fontstyle"/>
+ <xsl:variable name="identifier" select="normalize-space(.)"/>
+ <xsl:choose>
+ <xsl:when test="$identifier='&ExponentialE;'">
+ <xsl:text>\textrm{e}</xsl:text>
+ </xsl:when>
+ <xsl:when test="$identifier='&ImaginaryI;'">
+ <xsl:text>\textrm{i}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\textrm{</xsl:text> <xsl:copy-of select="$identifier"/> <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+</xsl:stylesheet>