summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/stex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-03-30 23:23:02 +0000
committerKarl Berry <karl@freefriends.org>2012-03-30 23:23:02 +0000
commit849996eca72af498b48b10fbea7f14c4b9d21b8f (patch)
tree2d40d42dfc9fc0b0622212cc220868f98345305f /Master/texmf-dist/source/latex/stex
parentd82e1c23973fd0271f93686f487bd1cee8dcd947 (diff)
restore stex (ca. 28jan12)
git-svn-id: svn://tug.org/texlive/trunk@25792 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/stex')
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/Makefile5
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/Modparse.pm189
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/README151
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/TexId.pm464
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/allgen30
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/bms340
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/checksum71
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/convert-paths56
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/filedate45
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/gen-symdef-table.pl85
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/grep-rerun59
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/idcheck29
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/msplit140
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/old/Makefile28
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/old/defcon.l91
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/old/idcheck.l130
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/old/modstr.l137
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/old/symdef46
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/rf63
-rw-r--r--Master/texmf-dist/source/latex/stex/bin/rng2dot/ModelRNC.pm770
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/rng2dot/rng2dot37
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/sgraph173
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/sms146
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/stexml2
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/stexmlmod2
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/bin/termin279
-rw-r--r--Master/texmf-dist/source/latex/stex/cmath/cmath.dtx352
-rw-r--r--Master/texmf-dist/source/latex/stex/cmath/cmath.ins38
-rw-r--r--Master/texmf-dist/source/latex/stex/cmathml/cmathml.dtx2503
-rw-r--r--Master/texmf-dist/source/latex/stex/cmathml/cmathml.ins37
-rw-r--r--Master/texmf-dist/source/latex/stex/cnx/cnx.dtx1209
-rw-r--r--Master/texmf-dist/source/latex/stex/cnx/cnx.ins35
-rw-r--r--Master/texmf-dist/source/latex/stex/dcm/dcm.dtx696
-rw-r--r--Master/texmf-dist/source/latex/stex/dcm/dcm.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/hwexam/hwexam.dtx578
-rw-r--r--Master/texmf-dist/source/latex/stex/hwexam/hwexam.ins43
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile3
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.base.in28
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.base.vars26
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.in3
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.latex.in31
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.latex.vars16
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.latexml.in43
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.latexml.vars48
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.subdirs6
-rw-r--r--Master/texmf-dist/source/latex/stex/make/Makefile.vars3
-rw-r--r--Master/texmf-dist/source/latex/stex/make/README23
-rw-r--r--Master/texmf-dist/source/latex/stex/metakeys/metakeys.dtx435
-rw-r--r--Master/texmf-dist/source/latex/stex/metakeys/metakeys.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx576
-rw-r--r--Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/modules/modules.dtx2235
-rw-r--r--Master/texmf-dist/source/latex/stex/modules/modules.ins38
-rw-r--r--Master/texmf-dist/source/latex/stex/omdoc/omdoc.dtx751
-rw-r--r--Master/texmf-dist/source/latex/stex/omdoc/omdoc.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/omtext/omtext.dtx850
-rw-r--r--Master/texmf-dist/source/latex/stex/omtext/omtext.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/presentation/presentation.dtx1438
-rw-r--r--Master/texmf-dist/source/latex/stex/presentation/presentation.ins38
-rw-r--r--Master/texmf-dist/source/latex/stex/problem/problem.dtx603
-rw-r--r--Master/texmf-dist/source/latex/stex/problem/problem.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.dtx483
-rw-r--r--Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx387
-rw-r--r--Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/Makefile11
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rnc491
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rng774
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rnc305
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rng479
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rnc150
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rng229
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rnc308
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rng444
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rnc374
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rng557
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rnc193
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rng312
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rnc285
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rng496
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rnc513
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rng916
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rnc124
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rng189
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rnc41
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rng70
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/TAGS33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rnc208
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rng364
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rnc33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rng50
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rnc64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rng110
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rnc338
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rng779
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rnc196
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rng490
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rnc49
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rng64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rnc293
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rng565
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rnc137
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rng236
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rnc30
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rng29
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rng105
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rnc33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rng39
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rnc35
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rng61
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rnc47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rng81
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rnc135
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rng158
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rnc38
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rng73
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rng104
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rnc28
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rng33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rnc214
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rng468
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rnc108
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rng123
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rnc99
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rng233
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rnc47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rng106
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rnc64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rng83
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rnc66
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rng92
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rnc56
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rng91
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rnc76
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rng143
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rnc74
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rng129
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rnc34
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rng49
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rnc97
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rng180
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rnc76
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rng125
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rnc58
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rng76
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-qname.rng98
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rnc38
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rng51
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rnc207
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rng395
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rng78
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rnc56
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rng101
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rnc275
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rng572
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rnc42
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rng70
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rnc36
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rng53
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rnc67
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rng173
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-basic.rng213
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-tiny.rng159
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rnc193
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rng188
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/Makefile6
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/metadata.rnc41
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc+ltxml.rnc149
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/MARCRelators.rnc23
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/Makefile11
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/README3
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/arith1.omdoc1672
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/creativecommons.rnc48
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/dublincore.rnc42
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-common.rnc84
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-content.rnc373
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-presentation.rnc536
-rwxr-xr-xMaster/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict-content.rnc60
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict.rnc80
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3.rnc21
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mocksoap.rnc39
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcd2.rnc59
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdgroup2.rnc33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdsig2.rnc32
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc-common.rnc66
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc.rnc24
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocadt.rnc49
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccc.rnc10
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccth.rnc53
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdc.rnc29
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdg.rnc28
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdoc.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocext.rnc64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmeta.rnc39
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmobj.rnc27
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmtxt.rnc105
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpf.rnc39
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocphys.rnc47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpres.rnc91
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocquiz.rnc37
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocrt.rnc32
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocst.rnc135
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/openmath2.rnc89
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/pxhtml.rnc17
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/schemas.xml4
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo3
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo.txt2
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-applet.rnc19
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-attribs.rnc14
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-basic-table.rnc28
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-bdo.rnc7
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-datatypes.rnc47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-hypertext.rnc16
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-image.rnc11
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-inlstyle.rnc3
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-list.rnc16
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-object.rnc24
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-param.rnc9
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-table.rnc67
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-text.rnc86
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/owl.rnc44
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/owl2+ltxml.rnc15
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/owl2-xml.rnc532
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/owl2xml.rnc138
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/schemas.xml6
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/statements.rnc50
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animation.rnc208
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animevents-attrib.rnc33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-clip.rnc64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-filter.rnc338
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-font.rnc196
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-graphics-attrib.rnc49
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-structure.rnc293
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-text.rnc137
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-clip.rnc30
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-conditional.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-container-attrib.rnc33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-core-attrib.rnc35
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-cursor.rnc47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-datatypes.rnc135
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-docevents-attrib.rnc38
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extensibility.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extresources-attrib.rnc28
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-filter.rnc214
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-font.rnc108
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-gradient.rnc99
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphevents-attrib.rnc47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphics-attrib.rnc64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-hyperlink.rnc66
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-image.rnc56
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-marker.rnc76
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-mask.rnc74
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-opacity-attrib.rnc34
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-paint-attrib.rnc97
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-pattern.rnc76
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-profile.rnc58
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-qname.rnc116
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-script.rnc38
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-shape.rnc207
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-structure.rnc62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-style.rnc56
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-text.rnc275
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-view.rnc42
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-viewport-attrib.rnc36
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-xlink-attrib.rnc67
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-basic.rnc183
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-tiny.rnc138
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11.rnc193
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-bib.rng900
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-block.rng589
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-common.rng235
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-inline.rng514
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-math.rng613
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-para.rng370
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-picture.rng594
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-structure.rng1039
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-tabular.rng214
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML.rng62
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/MARCRelators.rng190
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/Makefile23
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/creativecommons.rng390
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/dublincore.rng164
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-cds-pragmatic.rng2899
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-common.rng257
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-content.rng1543
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-pragmatic.rng290
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-presentation.rng2265
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict-content.rng203
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict.rng267
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/mathml3.rng23
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/metadata.rng217
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdoc+ltxml.rng436
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdoc-common.rng317
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdoc-xhtml.rng28
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdoc.rng29
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocadt.rng229
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocattribs.rng257
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdoccc.rng25
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdoccth.rng228
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocdc.rng121
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocdg.rng92
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocdoc.rng240
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocext.rng330
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocmeta.rng220
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocmobj.rng77
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocmtxt.rng502
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocpf.rng212
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocpres.rng386
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocquiz.rng176
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocrt.rng100
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/omdocst.rng634
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng253
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/openmath3.rng247
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/owl.rng193
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/owl2+ltxml.rng32
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/owl2-xml.rng1321
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/owl2xml.rng809
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/pxhtml.rng19
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/statements.rng279
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-animation.rng364
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-animevents-attrib.rng50
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-clip.rng110
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-filter.rng779
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-font.rng490
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-graphics-attrib.rng64
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-structure.rng565
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-text.rng236
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-clip.rng29
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-conditional.rng105
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-container-attrib.rng39
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-core-attrib.rng61
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-cursor.rng81
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-datatypes.rng158
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-docevents-attrib.rng73
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-extensibility.rng104
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-extresources-attrib.rng33
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-filter.rng468
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-font.rng123
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-gradient.rng233
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-graphevents-attrib.rng106
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-graphics-attrib.rng83
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-hyperlink.rng92
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-image.rng91
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-marker.rng143
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-mask.rng129
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-opacity-attrib.rng49
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-paint-attrib.rng180
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-pattern.rng125
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-profile.rng76
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-script.rng51
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-shape.rng395
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-structure.rng78
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-style.rng101
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-text.rng572
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-view.rng70
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-viewport-attrib.rng53
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg-xlink-attrib.rng173
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/svg11.rng188
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-applet.rng47
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-attribs.rng58
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-base.rng19
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-basic-table.rng146
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-bdo.rng37
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-datatypes.rng93
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-hypertext.rng63
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-image.rng40
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-inlstyle.rng9
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-link.rng52
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-list.rng95
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-object.rng82
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-param.rng32
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-table.rng263
-rw-r--r--Master/texmf-dist/source/latex/stex/schema/rng/xhtml-text.rng307
-rw-r--r--Master/texmf-dist/source/latex/stex/sproof/sproof.dtx834
-rw-r--r--Master/texmf-dist/source/latex/stex/sproof/sproof.ins38
-rw-r--r--Master/texmf-dist/source/latex/stex/sref/sref.dtx850
-rw-r--r--Master/texmf-dist/source/latex/stex/sref/sref.ins38
-rw-r--r--Master/texmf-dist/source/latex/stex/statements/statements.dtx1439
-rw-r--r--Master/texmf-dist/source/latex/stex/statements/statements.ins38
-rw-r--r--Master/texmf-dist/source/latex/stex/workaddress/workaddress.dtx552
-rw-r--r--Master/texmf-dist/source/latex/stex/workaddress/workaddress.ins40
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-bib-xhtml.xsl54
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-block-xhtml.xsl470
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-common.xsl121
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html.xsl53
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html5.xsl52
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-inline-xhtml.xsl120
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-image.xsl36
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml-html5.xsl36
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml.xsl46
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-html5.xsl96
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-xhtml.xsl97
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-image.xsl36
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg-html5.xsl33
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg.xsl35
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-html5.xsl151
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-xhtml.xsl261
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-tabular-xhtml.xsl89
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-html5.xsl248
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-xhtml.xsl249
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-xhtml.xsl60
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/amsart.css11
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/closedbib.css5
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/core.css157
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/marginpar.css11
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-left.css9
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-right.css7
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/LaTeXML/theme-blue.css15
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/Makefile1
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/doc.xsl109
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/graphics.xsl123
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/listings.xsl85
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl65
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/math.xsl87
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/notations.xsl130
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl50
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl83
-rw-r--r--Master/texmf-dist/source/latex/stex/xsl/symbols.xsl112
421 files changed, 82874 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/stex/bin/Makefile b/Master/texmf-dist/source/latex/stex/bin/Makefile
new file mode 100644
index 00000000000..c603315a964
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/Makefile
@@ -0,0 +1,5 @@
+all:
+
+clean:
+ rm -f *~
+
diff --git a/Master/texmf-dist/source/latex/stex/bin/Modparse.pm b/Master/texmf-dist/source/latex/stex/bin/Modparse.pm
new file mode 100644
index 00000000000..2fd732b063d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/Modparse.pm
@@ -0,0 +1,189 @@
+#######################################################################################
+# A module for loading .tex files and feeding the data to the various applications. #
+# Copyright (c) 2005, Ioan Sucan, released under the Gnu General Public License (GPL) #
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/Modparse.pm$ #
+# $Date: 2005-09-26 12:44:28 -0500 (Mon, 26 Sep 2005) $ $Rev: 4243 $ #
+#######################################################################################
+
+package Modparse;
+
+use File::Basename;
+use File::Path;
+
+# if both snippath and snippathList are specified,
+# snippathList is ignored !
+
+# if a default snippath definition file is found
+# (snippath.def) it is used if no snippath is given
+# as argument;
+sub new {
+ my ($class, %options) = @_;
+
+ $options{recursion} = 1 unless defined $options{recursion};
+ $options{requireStatus} = 'include|exclude' unless defined $options{requireStatus};
+ $options{loadInputs} = 1 unless defined $options{loadInputs};
+ $options{onlyModuleLines} = 0 unless defined $options{onlyModuleLines};
+
+ if ( !(%{$options{snippath}}) && (-e "snippath.def") ) {
+ open(SNIPPATHDEF, 'snippath.def');
+ my @snlist = <SNIPPATHDEF>;
+ close(SNIPPATHDEF);
+ for (my $i = 0 ; $i <= $#snlist; $i++) { chomp($snlist[$i]); }
+ %{$options{snippath}} = @snlist; }
+ @{$options{snippathList}} = keys(%{$options{snippath}})
+ if ($options{snippath} && %{$options{snippath}});
+ $options{debug} = 0;
+
+ bless(\%options, $class); }
+
+sub execute{
+ my ($self, $file) = @_;
+
+ local *run_event = sub {
+ my ($event, $arg) = @_;
+ if ($self->{$event}) { $self->{$event}($arg); }
+ };
+
+ local *go = sub {
+ my ($location, %param) = @_;
+ my ($tex, $path, @tex_data) = $self->readLocation($location);
+ return unless @tex_data;
+ my $NL = $#tex_data+1;
+
+ $param{filename} = $tex;
+ $param{depth}++;
+ $param{filecount}++;
+ my $i = 0;
+
+ $param{nextline} = sub { $tex_data[++$i]; };
+ $param{prevline} = sub { $tex_data[--$i]; };
+ $param{rewriteline}= sub { $tex_data[$i] = $_[0]; };
+
+ print "Processing $tex...\n" if $self->{verbose};
+ run_event('onBeginFile', \%param);
+
+ while ($i<$NL){
+ $param{original} = $tex_data[$i];
+ $_ = $tex_data[$i]; chomp; /([^%]*)((%.*)?)/;
+ ($param{tex}, $param{comment}) = ($1, $2); $_ = $1;
+ s/\s+//g; $param{simple_tex} = $_;
+
+ if (/\\begin\{module\}(\[([^\]]*)\])?/) {
+ if ($param{in_module}) {
+ push(@{$param{module_stack}}, [$param{module_id}, $param{module_arg}]); }
+ $param{in_module} = 1;
+ $param{module_args} = $1 ? $2 : undef;
+ $param{module_id} = ($param{module_args} &&
+ $param{module_args} =~ /id=([^\],]+)/) ? $1 : undef;
+ $param{module_nesting}++;
+ run_event('onBeginModule', \%param); }
+
+ if (/\\end\{module\}/) {
+ run_event('onEndModule', \%param);
+ if ($#{$param{module_stack}} >= 0) {
+ ($param{module_id}, $param{module_args}) = @{pop(@{$param{module_stack}})};
+ } else {
+ $param{in_module} = 0;
+ ($param{module_id}, $param{module_args}) = (undef, undef); }
+ $param{module_nesting}--;
+ }
+
+ foreach my $srch_snippath(@{$self->{snippathList}}){
+ $self->{snippath}{$srch_snippath} = $1
+ if (/\\def\\$srch_snippath\#1\{([^\#]+)\#1\}$/); }
+
+ if ($self->{follow} && (/\\((requiremodules(\[($self->{requireStatus})\])?)|input|include)\{([^\}]+)\}/)){
+ my $req_filename = $5; my $req_spath = ''; my $command = $1;
+ my $is_require = ($command =~ /requiremodules/) ? 1 : 0;
+ if ($is_require || $self->{loadInputs}) {
+ foreach my $srch_snippath(@{$self->{snippathList}}){
+ if ($req_filename =~ /\\$srch_snippath\{(.+)/){
+ ($req_spath, $req_filename) = ($self->{snippath}{$srch_snippath}, $1);
+ last; }}
+ run_event('onRecurse', \%param);
+ if ($self->{recursion} || !$is_require) {
+ go($self->makeLocation($req_filename, $path, $req_spath), %param); }
+ }
+ }
+ run_event('onEveryLine', \%param) if ($param{in_module} || !$self->{onlyModuleLines});
+
+ last if (/\\end\{document\}/ && $self->{stopAtEnd});
+ $i++;
+ }
+ run_event('onEndFile', \%param);
+ $param{depth}--; return;
+ };
+
+ my %param = (pack=>$self, perm=>$self->{_AUX_DATA}, depth=>0, filecount=>0,
+ in_module=>0, module_nesting=>0);
+ run_event('onBegin', \%param);
+ go($self->makeLocation($file), %param);
+ run_event('onEnd', \%param);
+ return;
+}
+
+
+# add a [.tex] extension to the filename
+sub add_ext{
+ my ($self, $fn, $ext) = @_;
+ $ext = '.tex' unless $ext;
+ $fn.=$ext if $fn !~ /\Q$ext\E$/;
+ $fn; }
+
+# as long as the extension is .tex, drop it
+sub drop_ext{
+ my ($self, $filename) = @_;
+ while ($filename =~ /\.tex$/){
+ while ($filename !~ /\.$/ ) { chop($filename); }
+ chop($filename); }
+ $filename; }
+
+sub new_ext{
+ my ($self, $filename, $ext) = @_;
+ $self->add_ext($self->drop_ext($filename), $ext); }
+
+# location = pointer to array of strings
+# first element is filename; next are possible paths
+sub makeLocation{ my $self = shift; return \@_; }
+
+# read a location into an array of strings
+# aslo return filename and path to it (just in
+# case some changes were made to it, like adding
+# extension and/or relative paths)
+sub readLocation{
+ my ($self, $location) = @_;
+
+ my ($filename, @paths) = @{$location};
+ # try to add proper extension;
+ my $filename_ext = $self->new_ext($filename) unless -e $filename;
+ $filename = $filename_ext if $filename_ext && -e $filename_ext;
+
+ # try search paths
+ if (! -e $filename){
+ my $all_p = '';
+ foreach my $p(@paths){
+ $all_p .= $p;
+ $filename = $all_p.$filename and last if -e $all_p.$filename;
+ $filename = $p.$filename and last if -e $p.$filename;
+ if ($filename_ext){
+ $filename = $all_p.$filename_ext and last if -e $all_p.$filename_ext;
+ $filename = $p.$filename_ext and last if -e $p.$filename_ext; }
+ }}
+ # don't do the same work too many times
+ foreach my $file(@{$self->{loadedFiles}})
+ { return undef if $file eq $filename; }
+
+ push(@{$self->{loadedFiles}}, $filename);
+ open(FIN, $filename) or die "Cannot open '$filename'\n";
+ my @data = <FIN>;
+ close(FIN);
+
+ # find path of current file
+ my $path = dirname($filename);
+ $path.='/' if ($path ne '');
+
+ return ($filename, $path, @data);
+}
+
+1;
diff --git a/Master/texmf-dist/source/latex/stex/bin/README b/Master/texmf-dist/source/latex/stex/bin/README
new file mode 100644
index 00000000000..6af84e42bab
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/README
@@ -0,0 +1,151 @@
+msplit
+"Module Split"
+
+Usage:
+ msplit <input filename> [options]
+
+Options:
+ --output <filename> filename of new main .tex file; default stdout
+ --path <path> path where to write the module files;
+ --header <filename> filename of header file to be included in all new .tex files
+ --verbose verbose on
+ --stop stop when \end{document} is found, not at EOF
+ --help show help screen
+
+
+NOTE: All options '--xoption' can be replaced by '-x' as long as there is only one option starting with 'x'
+
+This program splits the .tex file given at input into:
+ one main .tex file, that includes
+ more .tex files, each containing one module
+
+The name of the new main .tex file is specified by output option. The path to the inputted
+files can be specified by path. The name of one generated input file is "name of the
+module it contains".tex Running on one already split file will just make a copy. Example
+usage: ./msplit slides.tex -o sl.tex -p ./modules -s
+
+Interpretation: "Split the file slides.tex; wite the new main file as sl.tex and the
+inputted files should be placed in ./modules; if path does not exist, it is automatically
+created; stop when (uncommented) \end{document} is found."
+
+
+
+rf
+"Reuse Factor"
+
+Usage:
+ rf [options]
+
+Options:
+ --input <filename> .tex input file. stdin by default
+ --stop stop when \end{document} is found, not at EOF
+ --verbose verbose on
+ --help show help screen
+
+
+This program computes the reuse factor for the .tex document given at input. This number
+represents the ratio of latex processed lines of code to actual lines contained in file
+given at input. This number will always be 1 for files that have no \input or \include.
+
+Example usage:
+./rf -v -i slides.tex
+Interpretation: "Compute the reuse factor of slides.tex and show all processed files(verbose mode)."
+
+
+
+sgraph
+"Slides graph [representation]"
+
+Usage:
+ sgraph [options]
+
+Options:
+ --input <filename> .tex input file; stdin by default
+ --output <filename> output file; out.dot by default
+ --format <ps|png|jpg|...> output format; .ps by default; for available formats, see dot --help
+ --nodot do not generate .dot file, just target format
+ --root <string> the 'root' of the graph. (name of course)
+ --theory <string> generate a subgraph for the theory
+ --sliderange <begin:end> only look at the given slide range; (2:16 for example)
+ --stop stop reading data when \end{document} is found, not at EOF
+ --verbose verbose on
+ --help show help screen
+
+This program generates a .dot file readable by graphviz, containing a graph of the module
+usage in the .tex file given at input, optionally looking at a specific theory and/or
+slide range; it also adds a dummy 'root' for the graph, so one can see where everything
+starts. It then converts the .dot file to a given format (.ps by default) using graphviz
+and optionally deletes the intermediary .dot file.
+
+Example usage:
+./sgraph -i slides.tex -o graph -f ps -n -t TCN --sliderange 20:10000 -r GenCS -v
+
+Interpretation: "Generate the graph of slides.tex in .ps format, write it in graph.ps, do
+not keep the .dot file; include only the part needed for the theory 'TCN' and in the slide
+range 20 to 10000; use as root for the graph the string 'GenCS' and show all processed
+files."
+
+
+sms
+??
+
+Usage:
+ sms [options]
+
+Options:
+ --input <filename> .tex file to split; default stdin
+ --verbose verbose on
+ --stop stop when \end{document} is found, not at EOF
+ --help show help screen
+
+Generate .sms file from .tex file given at input; .sms files contain only the modules and
+the macros defined within, no other text.
+
+Example usage:
+./sms -i slides.tex -s
+
+Interpretation: "Generate the slides.sms file for slides.tex; Stop when \end{document} is found."
+
+
+
+
+bms
+"Build Module Structure"
+
+Usage:
+ bms [options]
+
+Options:
+ --input <filename> .tex file to read from
+ --graph <filename> if mentioned, produce the suggested module structure as
+ a graphviz digraph (.dot file)
+ --path <pathname> if mentioned, produce same input file/s (including
+ dependencies) in specified path with suggested
+ module structure.
+ --output <filename> the new name of the main .tex file in specified path
+ --root <string> if mentioned, a father module is included, so that all
+ other modules descend from it. generally the course name
+ --stop stop when \end{document} is found; default is to go on
+ --definitions show a list of all definitions
+ --verbose verbose on
+ --help show help screen
+
+
+This program has the purpose of computing a default module structure, such that a module
+uses another module if and only if it needs that module and does not need another
+descendant of it. First, the prgram reads all necessary data from the input .tex file,
+computes the minimal strictly required module usage structure, and writes it as a graphviz
+digraph, and/or writes a copy of the input .tex file (and maybe inputted files by the .tex
+file) with the new module structure in the given path. All paths are created if not
+existing.
+
+Example usage:
+./bms -i slides.tex -s -g - | dot -Tps > out.ps; ggv out.ps
+./bms -i slides.tex -g out.dot -p ./new
+
+Interpretation: "Build default module structure for slides.tex and write it to out.dot;
+also use the obtained module structure and copy the input file to given path with changed
+module usage."
+
+rng2dot
+Convert Relax NG Compact form to Graphviz dot file
diff --git a/Master/texmf-dist/source/latex/stex/bin/TexId.pm b/Master/texmf-dist/source/latex/stex/bin/TexId.pm
new file mode 100644
index 00000000000..d0f28ccbce5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/TexId.pm
@@ -0,0 +1,464 @@
+# package for handling .tex IDs
+
+package TexId;
+
+use File::Basename;
+use strict;
+
+# error messages markers
+
+use constant ERR => '[X]'; # error can't be fixed
+
+################### 'public' members ###################
+
+sub new{
+ my ($class, %options) = @_;
+ my $self = {};
+
+ @{$self->{ENVIRONMENTS}} = qw(module note omtext example
+ definition problem proof
+ solution program); # the environments to look at
+
+ @{$self->{ENV_PREFIXES}} = qw(mod not txt ex def prob pf sol prg); # the prefixes for environments
+
+
+ @{$self->{ENV_DEF}} = qw(id); # environment arguments that define new environments
+ @{$self->{ENV_USAGE}} = qw(use uses for from); # environment arguments that
+ # specify usage of other environments
+
+ # options for the class
+ %{$self->{OPTIONS}} = %options;
+
+ # in case \snippath{} is encountered, prepend this to the filename
+ $self->{OPTIONS}{snippath} = 'snippets/' unless defined $self->{OPTIONS}{snippath};
+
+
+ # show progress while reading data
+ $self->{OPTIONS}{progress} = 1 unless defined $self->{OPTIONS}{progress};
+
+ bless ($self, $class);
+}
+
+# check/set list of environments to look at
+sub environments{
+ my ($self, $new_environments, $new_prefixes) = @_;
+ if (defined $new_environments and defined $new_prefixes){
+ @{$self->{ENVIRONMENTS}} = split(/,/, $new_environments);
+ @{$self->{ENV_PREFIXES}} = split(/,/, $new_prefixes);
+ die "Invalid argument combination (both arguments must have same number of elements)"
+ if $#{$self->ENVIRONMENTS} != $#{$self->ENV_PREFIXES};
+ }
+ else {
+ return (join(',', @{$self->{ENVIRONMENTS}}), join(',', @{$self->{ENV_PREFIXES}}));
+ }
+}
+
+# define/read environment definition arguments
+sub env_def{
+ my ($self, $new_env_def) = @_;
+ if (defined $new_env_def){
+ @{$self->{ENV_DEF}} = split(/,/, $new_env_def);
+ }
+ else {
+ return join(',', @{$self->{ENV_DEF}});
+ }
+}
+
+# define/read the environment usage arguments
+sub env_usage{
+ my ($self, $new_env_usage) = @_;
+ if (defined $new_env_usage){
+ @{$self->{ENV_USAGE}} = split(/,/, $new_env_usage);
+ }
+ else {
+ return join(',', @{$self->{ENV_USAGE}});
+ }
+}
+
+# define/read the snippets path
+sub snippath{
+ my ($self, $new_snippath) = @_;
+ if (defined $new_snippath){
+ $new_snippath.='/' if ($new_snippath !~ /\/$/);
+ $self->{OPTIONS}{snippath} = $new_snippath;
+ }
+ else {
+ return $self->{OPTIONS}{snippath};
+ }
+}
+
+
+# check all the definitions and module usages
+# in all files referenced by base file
+sub parse{
+
+ my ($self, $basefile) = @_;
+
+ # recursive local function to go through each file
+ local *run_parse = sub
+ {
+ my ($filename) = @_;
+
+ # read current .tex file
+ print STDERR "Loading $filename...\n" if ($self->{OPTIONS}{progress} == 1);
+ $filename = $self->load_file_data($filename);
+ my @text = @{$self->{FILEDATA}};
+ my $line_no = 0;
+
+ # go through every line of the read file
+ # depends on: \requiremodules, \snippath
+ # ignores \end{document}
+
+ foreach (@text){
+ # delete newline character, comments and redundant white space
+
+ $line_no++;
+ /([^%]*)((%.*)?)/;
+ $_ = $1;
+ s/\s+//g;
+
+ # see if an environment that has some arguments is defined
+ my ($possible_env, $env_args) = (undef, undef);
+ ($possible_env, $env_args) = ($1, $2) if (/\\begin\{([^\}]+)\}\[([^\]]+)\]/);
+
+ # if it is, search it through the list of environments we want to look at
+ if (defined $possible_env){
+ foreach my $environment(@{$self->{ENVIRONMENTS}}){
+ next unless ($environment eq $possible_env);
+
+ # if we found an anvironment we want to look at,
+ # go through the list of arguments
+ $env_args = $self->swap_exterior_char(',', ';', $env_args);
+ foreach (split(/;/, $env_args)){
+ # we want arguments of type name=value
+ next unless /([^=]+)=(.+)/;
+ my ($arg_name, $arg_value) = ($1, $2);
+
+ # see if the argument defines an environment
+ foreach my $current_env_arg(@{$self->{ENV_DEF}}){
+ next unless ($arg_name eq $current_env_arg);
+ my @to_add = split(/,/, $arg_value);
+ push(@{$self->{'DEF'}->{$environment}}, @to_add);
+ foreach my $added_element(@to_add){
+ $self->{'DEF'}->{LOCATION}{$added_element}.=$line_no.':'.$filename."\n";
+ }
+ last;
+ }
+
+ # see if the argument uses an environment
+ foreach my $current_env_arg(@{$self->{ENV_USAGE}}){
+ next unless ($arg_name eq $current_env_arg);
+ my @to_add = split(/,/, $arg_value);
+ push(@{$self->{'USE'}->{$environment}}, @to_add);
+ foreach my $added_element(@to_add){
+ $self->{'USE'}->{LOCATION}{$added_element}.=$line_no.':'.$filename."\n";
+ }
+ last;
+ }
+ }
+ last;
+ }
+ }
+ # reference to another file
+ if (/\\requiremodules(\[(include|exclude)\])?\{([^\}]+)\}/){
+ if (defined $2 && $2 eq 'include'){
+ $_ = $3;
+ $_ = $self->{OPTIONS}{snippath}.$1 if (/\\snippath\{(.+)/);
+ $_ = $self->{path}.$_;
+ run_parse($_);
+ }
+ }
+
+ # see definition of snippath
+ $self->snippath($1) if (/\\def\\snippath\#1\{([^\#]+)\#1\}$/);
+ }
+ };
+
+ run_parse($basefile);
+
+}
+
+# this is the first checking step to be done
+sub check_uniq{
+
+ my ($self) = @_;
+
+ my $error = 0;
+
+ # sort environment definitions and see whether they are uniquely defined
+ foreach my $environment(@{$self->{ENVIRONMENTS}}){
+ next unless defined $self->{'USE'}->{$environment};
+
+ my @list1 = sort @{$self->{'DEF'}->{$environment}};
+ my @list2 = $self->uniq(@list1);
+ @{$self->{'DEF'}->{$environment}} = @list2;
+
+ # some environments are defined multiple times
+ if ($#list1 != $#list2){
+ my $j = 0;
+ for (my $i = 0; $i<=$#list2; $i++){
+ my $start_j = $j;
+ while ($j<=$#list1 && $list1[$j] eq $list2[$i]){
+ $j++;
+ }
+ if ($j - $start_j != 1){
+ print STDERR ERR, " Environment '$list2[$i]' is defined multiple times ",
+ "within same environment type: \n";
+ print STDERR $self->{'DEF'}->{LOCATION}{$list2[$i]}, "\n";
+ $error = 1;
+ }
+ }
+ }
+ }
+
+ # see that all environment references are unique (and sort them)
+ foreach my $environment(@{$self->{ENVIRONMENTS}}){
+ next unless defined $self->{'USE'}->{$environment};
+ @{$self->{'USE'}->{$environment}} = sort $self->uniq(@{$self->{'USE'}->{$environment}});
+ }
+
+ return $error;
+}
+
+sub check_prefix{
+
+ my ($self) = @_;
+
+ my $count = $#{$self->{ENVIRONMENTS}}+1;
+
+ for (my $i = 0; $i < $count; $i++){
+ my $environment = ${$self->{ENVIRONMENTS}}[$i];
+ my $envprefix = ${$self->{ENV_PREFIXES}}[$i];
+ next unless defined $self->{'DEF'}->{$environment};
+
+ foreach my $elem (@{$self->{'DEF'}->{$environment}}){
+
+ my $proper = undef;
+ if ($elem =~ /^([^:]+):(.+)/){
+ $proper = $envprefix.':'.$2 if $1 ne $envprefix;
+ } else {
+ $proper = $envprefix.':'.$elem;
+ }
+
+ if (defined $proper){
+ print STDERR ERR, " $environment '$elem' has no prefix ($envprefix). Add it? [ <y>, n ]";
+ my $answer = <STDIN>;
+ chomp($answer);
+ if ($answer eq 'y' or $answer eq ''){
+ $self->add_change('DEF', $elem, $proper);
+ }
+ }
+ }
+ }
+}
+
+
+sub check_defs{
+ my ($self) = @_;
+
+ my $error = 0;
+
+ # combine all definitions
+ my @defs;
+ map {push(@defs, @{$self->{'DEF'}->{$_}}) if defined @{$self->{'DEF'}->{$_}}} @{$self->{ENVIRONMENTS}};
+ @defs = sort @defs;
+
+ # combine all used environments
+ my @uses;
+ map {push(@uses, @{$self->{'USE'}->{$_}}) if defined @{$self->{'USE'}->{$_}}} @{$self->{ENVIRONMENTS}};
+ @uses = sort @uses;
+
+
+ # for all environments
+
+ foreach my $used_env(@uses){
+ # if used environment is not defined
+ if ($self->find_elem($used_env, @defs) < 0){
+ # maybe it is a typo
+ print STDERR ERR, " '$used_env' was not found. Replace options:\n";
+ foreach my $definition(@defs){
+ print STDERR "\t$definition\n" if $self->edit_dist($used_env,$definition)<4;
+ $error = 1;
+ }
+ }
+ }
+
+ return $error;
+}
+
+
+sub add_change{
+ my ($self, $location, $from, $to) = @_;
+ if ($self->{$location}->{LOCATION}{$from} =~ /([^:]+):([^\n]+)\n/){
+ push(@{$self->{CHANGE}->{$2}}, ($1, $from, $to));
+ }
+}
+
+# write the stored changes
+sub apply_changes{
+ my ($self) = @_;
+ while (my ($filename, $changes) = each %{$self->{CHANGE}}){
+ $filename = $self->load_file_data($filename);
+ my $count = int(($#{$changes}+1)/3);
+ for (my $i = 0; $i<$count ; $i++){
+ my ($line, $from, $to) = (${$changes}[$i*3]-1,
+ ${$changes}[$i*3+1], ${$changes}[$i*3+2]);
+ ${$self->{FILEDATA}}[$line] =~ s/\Q$from/$to/;
+ }
+ print STDERR "Writing $filename\n" if ($self->{OPTIONS}{progress} == 1);
+ $self->write_file_data($filename);
+ }
+}
+
+sub load_file_data{
+ my ($self, $filename) = @_;
+
+ # try to give proper file extension if file is not found
+ $filename = $self->add_ext($self->drop_ext($filename)) unless -e $filename;
+
+ open(FIN, $filename) or die "Cannot open $filename\n";
+ @{$self->{FILEDATA}} = <FIN>;
+ close(FIN);
+
+ $self->{path} = dirname($filename).'/' unless defined $self->{path};
+
+ return $filename;
+}
+
+sub write_file_data{
+ my ($self, $filename) = @_;
+
+ open(FOUT, ">$filename") or die "Cannot write $filename\n";
+ print FOUT @{$self->{FILEDATA}};
+ close(FOUT);
+}
+
+
+################### 'protected' members ###################
+
+sub def_env_list{
+ my ($self, $env_name) = @_;
+ return @{$self->{'DEF'}->{$env_name}};
+}
+
+sub use_env_list{
+ my ($self, $env_name) = @_;
+ return @{$self->{'USE'}->{$env_name}};
+}
+
+
+################### 'private' members ###################
+
+sub drop_ext{
+ my ($self, $filename) = @_;
+ while ($filename =~ /\.tex$/){
+ while ($filename !~ /\.$/ ) { chop($filename); }
+ chop($filename);
+ }
+ return $filename;
+}
+
+sub add_ext{
+ my ($self, $filename) = @_;
+ $filename.='.tex' if $filename !~ /\.tex$/;
+ return $filename;
+}
+
+# look at $word, and swap all occurances of $char_find with
+# $new_char if they are not in a {...} environment
+
+sub swap_exterior_char{
+ my ($self, $char_find, $new_char, $word) = @_;
+ my @new_word = ();
+ my $exterior = 0;
+ foreach (split('', $word)){
+ if ($_ eq '{'){
+ $exterior++;
+ next;
+ }
+
+ if ($_ eq '}'){
+ $exterior--;
+ next;
+ }
+
+ if ($exterior == 0 && $_ eq $char_find){
+ push(@new_word, $new_char);
+ }
+ else{
+ push(@new_word, $_);
+ }
+ }
+ return join('',@new_word);
+}
+
+# return unique elements from a list
+sub uniq{
+ my ($self, @list) = @_;
+ my %seen = ();
+ my @uniqu = grep { ! $seen{$_} ++ } @list;
+ return @uniqu;
+}
+
+
+# binary search
+sub find_elem{
+ my ($self, $elem, @list) = @_;
+
+ local *search_elem = sub
+ {
+ my ($a, $b) = @_;
+ my $m = int(($a + $b)/2);
+ return $m if $list[$m] eq $elem;
+ return -1 if ($a >= $b);
+ return ($list[$m] le $elem)?search_elem($m+1,$b):search_elem($a,$m-1);
+ };
+
+ return search_elem(0, $#list);
+}
+
+# edit distance between two strings
+# insertions, deletions, replacement, transposition
+sub edit_dist{
+ my ($self, $s1, $s2) = @_;
+ my $m = length($s1);
+ my $n = length($s2);
+ my @w1 = split(//, $s1);
+ my @w2 = split(//, $s2);
+
+ # add dummy char so we can have nicer indeces
+ unshift(@w1, '*');
+ unshift(@w2, '*');
+
+ # distances matrix
+ my @d;
+
+ # initialize
+ $d[0][0] = 0;
+ for (my $i = 1; $i <= $m ; $i++) { $d[$i][0] = $i;}
+ for (my $i = 1; $i <= $n ; $i++) { $d[0][$i] = $i;}
+
+ # compute
+ for (my $i = 1; $i <= $m ; $i++){
+ for (my $j = 1; $j <= $n ; $j++){
+ my @possibilities = ($d[$i-1][$j-1] + ($w1[$i] ne $w2[$j]),
+ $d[$i-1][$j] + 1, $d[$i][$j-1] + 1);
+
+ push(@possibilities, $d[$i-2][$j-2] + 1)
+ if ($i>1 && $j>1 && $w1[$i] eq $w2[$j-1] && $w1[$i-1] eq $w2[$j]);
+
+ $d[$i][$j] = $self->minimum(@possibilities);
+ }
+ }
+ return $d[$m][$n];
+}
+
+sub minimum{
+ my ($self, @list) = @_;
+ my $result = shift(@list);
+ map {$result = $_ if $result ge $_} @list;
+ return $result;
+}
+
+
+1;
diff --git a/Master/texmf-dist/source/latex/stex/bin/allgen b/Master/texmf-dist/source/latex/stex/bin/allgen
new file mode 100755
index 00000000000..4728d89ee56
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/allgen
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+if [[ -z $STEX_CONTENT_HOME ]]
+then
+ echo "STEX_CONTENT_HOME is not set; please set it in your ~/.bashrc"
+ exit 1
+fi
+
+LIB="$STEX_CONTENT_HOME/slides/lib"
+cat <<'EOF'
+% this file is automatically generated by allgen
+% Note: This hack is needed to make mikoslides and problems work together.
+\PassOptionsToPackage{solutions,notes,pts,min}{problems}
+EOF
+
+sed -e '/\\begin{document}/ i\
+\\usepackage{problems}
+' $LIB/pre.tex | \
+ grep -v '^\\def\\snippets'
+
+cat <<'EOF'
+EOF
+
+for file in *.tex
+do
+ prefix=${file%.tex} # file name without .tex suffix
+ [[ $prefix != "all" ]] && echo -e "\\subsection{${prefix//_/\\\\_}} \n \\input{$prefix}" # in subsection replace "_" by "\_"
+done
+
+cat $LIB/post.tex
diff --git a/Master/texmf-dist/source/latex/stex/bin/bms b/Master/texmf-dist/source/latex/stex/bin/bms
new file mode 100755
index 00000000000..52f1002c0d9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/bms
@@ -0,0 +1,340 @@
+#!/usr/bin/perl -w
+
+#######################################################################################
+# A tool for building a default module usage structure. #
+# Copyright (c) 2005, Ioan Sucan, released under the Gnu General Public License (GPL) #
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/bms$ #
+# $Date: 2005-10-04 10:47:41 -0500 (Tue, 04 Oct 2005) $ $Rev: 4371 $ #
+#######################################################################################
+
+use strict;
+
+use Getopt::Long;
+use File::Path;
+use Pod::Usage;
+use Modparse;
+
+
+##########################################
+# Command Line processing
+##########################################
+
+my $input="-", my $graph_output='', my $graph_root='',
+my $verbose=0, my $stop_at_end=0;
+my $show_definitions=0, my $show_modules = 0;
+my %arg_snippath; my @snippathList;
+
+$main::path_new='';
+$main::new_name='';
+
+GetOptions("path=s" => \%arg_snippath,
+ "defpath=s" => \@snippathList,
+ "graph=s" => \$graph_output,
+ "opath=s" => \$main::path_new,
+ "output=s" => \$main::new_name,
+ "root=s" => \$graph_root,
+ "definitions" => sub {$show_definitions = 1;},
+ "modules" => sub {$show_modules = 1;},
+ "stop" => sub {$stop_at_end = 1;},
+ "verbose" => sub {$verbose = 1;},
+ "help" => sub {pod2usage(2);});
+
+$input = $ARGV[0] if ($#ARGV>=0);
+
+##########################################
+# .tex data reading
+##########################################
+
+$main::no_name_modules = 0;
+%main::definition_module = ();
+@main::definitions_list = ();
+
+%main::module_definitions = ();
+%main::used_modules = ();
+@main::modules_list = ();
+
+my $mp = Modparse->new(snippathList=>\@snippathList,
+ snippath=>\%arg_snippath,
+ stopAtEnd=>$stop_at_end,
+ verbose=>$verbose,
+ requireStatus=>'exclude',
+ onlyModuleLines=>1,
+ onBeginModule=>sub {
+ if (!defined $_[0]->{module_id}) {
+ $_[0]->{module_id} = "MOD".$main::no_name_modules;
+ $main::no_name_modules++; }
+ $_[0]->{defines} = '';
+ },
+ onEveryLine=>sub {
+ if ($_[0]->{simple_tex} =~ /\\(sym|abbr|ell)def\{\\([^\}]+)\}/) {
+ my $data = $2;
+ $_[0]->{defines} .= "$data;";
+ $main::definition_module{$data} = $_[0]->{module_id};
+ push(@main::definitions_list, $data);
+ } elsif ($_[0]->{simple_tex} =~ /\\STRlabel\{([^\}]*)\}/){
+ my $data = "L:$1";
+ $_[0]->{defines} .= "$data;";
+ $main::definition_module{$data} = $_[0]->{module_id};
+ push(@main::definitions_list, $data);
+ }
+ $_[0]->{module_content} .= $_[0]->{simple_tex};
+ },
+ onEndModule=>sub {
+ chop($_[0]->{defines}) if $_[0]->{defines};
+ $main::module_definitions{$_[0]->{module_id}} = $_[0]->{defines};
+ push(@main::modules_list, $_[0]->{module_id});
+ my $module_refs = '';
+ foreach my $def(@main::definitions_list){
+ next if $main::definition_module{$def} eq $_[0]->{module_id};
+ next unless $module_refs !~ /$main::definition_module{$def}/;
+ if ($def =~ /^L\:(.*)/){
+ $module_refs .= "$main::definition_module{$def};"
+ if ($_[0]->{module_content} =~ /\\STRcopy\{$1\}/);
+ } else {
+ $module_refs .= "$main::definition_module{$def};"
+ if ($_[0]->{module_content} =~ /\\$def/);
+ }
+ }
+ chop($module_refs) if $module_refs;
+ $main::used_modules{$_[0]->{module_id}} = $module_refs;
+ });
+
+##################################################################
+# Internal routines for BMS
+##################################################################
+
+%main::bms = ();
+
+# add a dummy module that uses nothig, such that any other module uses at least something
+sub addroot {
+ foreach my $module(@main::modules_list){
+ next if $main::used_modules{$module};
+ $main::used_modules{$module} = $graph_root;
+ }
+ push(@main::modules_list, $graph_root);
+ $main::module_definitions{$graph_root}='';
+ $main::used_modules{$graph_root}='';
+}
+# end addroot
+
+sub included {
+ my ($a1_ref, $a2_ref) = @_;
+ my $ok;
+ foreach my $elem (@$a1_ref){
+ $ok = 0;
+ foreach (@$a2_ref){
+ if ($elem eq $_){
+ $ok=1;
+ last; }}
+ return 0 unless $ok;}
+ return 1;
+}
+
+# find if a module uses another module
+sub can_go{
+ my ($src,$dest) = @_;
+ return 1 if $src eq $dest;
+ foreach (split(/;/, $main::bms{$src})){
+ return 1 if can_go($_,$dest);
+ }
+ return 0;
+}
+# end can_go
+
+# find the actual module structure
+sub find_bms{
+ my @added_modules, my @can_add, my @to_look, my @next_step;
+
+ %main::bms=();
+ @to_look = @main::modules_list;
+ @added_modules = ();
+
+ while($#main::modules_list != $#added_modules){
+
+ @can_add=(); @next_step=();
+
+ foreach my $module(@to_look){
+ my @temp = split(/;/, $main::used_modules{$module});
+ included(\@temp,\@added_modules)?push(@can_add,$module):push(@next_step,$module);
+ }
+ @to_look = @next_step;
+
+ foreach my $module(@can_add){
+
+ my @uses = split(/;/,$main::used_modules{$module});
+ my $change = 1;
+ while ($change){
+ $change = 0;
+ foreach my $f1(@uses){
+ foreach my $f2(@uses){
+ next if $f1 eq $f2;
+ if (can_go($f1,$f2)){ # i.e. f2 used by f1 => can remove f2
+ my @new_uses;
+ foreach (@uses){
+ push(@new_uses,$_) unless ($_ eq $f2);
+ }
+ @uses = @new_uses;
+ $change = 1;
+ last;
+ }
+ }
+ last if $change;
+ }
+ }
+ $main::bms{$module} = join(";",@uses);
+ push(@added_modules,$module);
+ }
+ }
+}
+# end find_bms
+
+# print the content of %bms in a .dot file; note: may change %bms by adding dummy root
+sub printgraph {
+ my $out = shift;
+
+ addroot if $graph_root;
+
+ open(FOUT,">$out") or die "Can't write $out\n";
+ print FOUT "digraph MS {\n";
+ while (my ($module, $uses) = each %main::bms){
+ $uses =~ s/-/_/g;
+ $module =~ s/-/_/g;
+ if ($uses){
+ if ($uses =~ /;/){
+ print FOUT "$module -> {$uses};\n";
+ } else {
+ print FOUT "$module -> $uses;\n";
+ }
+ } else {
+ print FOUT "$module [shape=box color=red];\n";
+ }
+ }
+ print FOUT "}\n";
+ close(FOUT);
+}
+# end printgraph
+
+# print the list of definitions
+sub printdefinitions{
+ while (my ($module,$def) = each %main::module_definitions){
+ print "$module:\n" if $def;
+ foreach (split(/;/,$def)){
+ print "\t$_\n";
+ }
+ }}
+# end printdefinitions
+
+#print the list of modules
+sub printmodules{
+ while (my ($module,$uses) = each %main::used_modules){
+ print "'$module' uses:\n $uses\n\n\n";
+ }}
+#end printmodules
+
+
+# wite the new .tex file, with found module usage, in given path
+sub writenew {
+ my ($filename) = @_;
+ $main::no_name_modules = 0;
+ my $wmp = Modparse->new(snippathList=>\@snippathList,
+ snippath=>\%arg_snippath,
+ stopAtEnd=>$stop_at_end,
+ verbose=>$verbose,
+ requireStatus=>'exclude',
+ onlyModuleLines=>0,
+ onBeginFile=> sub {
+ $_[0]->{'new_content'.$_[0]->{depth}} = '';
+ },
+ onBeginModule=>sub {
+ if (!defined $_[0]->{module_id}) {
+ $_[0]->{module_id} = "MOD".$main::no_name_modules;
+ $main::no_name_modules++; }
+ my $new_uses = $main::bms{$_[0]->{module_id}};
+ if (defined $new_uses) {
+ $new_uses =~ s/;/,/g;
+ $new_uses="{$new_uses}" if $new_uses =~ /,/;
+ my $arg = $_[0]->{module_args};
+ my @new_arg=();
+ my $done = 0;
+ while ($arg =~ /^([\w-]+)=(([\w-]+)|(\{[\w,-]+\}))/){
+ if ($1 eq 'uses'){
+ push(@new_arg,"$1=$new_uses")if $new_uses;
+ $done = 1;
+ } else {
+ push(@new_arg,"$1=$2");
+ }
+ $arg=substr($arg,length($1)+length($2)+1);
+ $arg=substr($arg,1) if ($arg =~ /^,/);
+ }
+ if ($new_uses) {
+ push(@new_arg,"uses=$new_uses") unless $done; }
+ $_[0]->{original} = "\\begin{module}\[".join(',',@new_arg)."\] ". $_[0]->{comment}. "\n";
+ }
+ },
+ onEveryLine=>sub {
+ $_[0]->{'new_content'.$_[0]->{depth}} .= $_[0]->{original};
+ },
+ onEndFile=> sub {
+ my $filename = ($main::path_new).'/'.$_[0]->{filename};
+ my $path = $filename;
+ while ($path !~ m!\/$!) { chop($path); }
+ mkpath($path);
+ $filename = $path.'/'.$main::new_name if ($main::new_name && $_[0]->{depth} == 1);
+ print "Writing $filename\n" if $_[0]->{pack}->{verbose};
+ open(FS, ">$filename") or die "Cannot write $filename\n";
+ print FS $_[0]->{'new_content'.$_[0]->{depth}};
+ close(FS);
+ });
+
+ $wmp->execute($filename);
+}
+
+
+#############################################################
+# Start program
+#############################################################
+
+$mp->execute($input);
+
+printdefinitions if $show_definitions;
+printmodules if $show_modules;
+
+if ($graph_output || $main::path_new){
+ find_bms;
+ writenew($input) if $main::path_new;
+ printgraph($graph_output) if $graph_output;
+}
+
+__END__
+
+
+=head1 SYNOPSIS
+
+bms <input filename> [options]
+
+Options:
+
+ --path XXX specify the value of \XXX (some snippath) in case it is
+ = somePath not defined in the processed .tex file
+ --defpath XXX specify which \XXX (snippath definitions) to look for
+ --graph <filename> if mentioned, produce the suggested module structure as
+ a graphviz digraph. (.dot file)
+ --opath <pathname> if mentioned, produce same input file/s (including
+ dependencies) in specified path with suggested
+ module structure.
+ --output <name> the new name of the main .tex file in specified path.
+ --root <name> if mentioned, a father module is included, so that all
+ other modules descend from it. generally the course name.
+ --stop stop when \end{document} is found; default is to go on.
+ --definitions show a list of all definitions.
+ --modules show a list of all modules.
+ --verbose verbose on.
+ --help this screen.
+
+
+ This program has the purpose of computing a default module structure, according
+to actual necessities.
+ Example:
+ ./bms -i slides.tex -g out.dot
+ ./bms -i slides.tex -s -g - | dot -Tps > out.ps; ggv out.ps
diff --git a/Master/texmf-dist/source/latex/stex/bin/checksum b/Master/texmf-dist/source/latex/stex/bin/checksum
new file mode 100755
index 00000000000..9f0e533a8d4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/checksum
@@ -0,0 +1,71 @@
+#!/usr/bin/perl -w
+#######################################################################################
+# A tool for updating .dtx files with a correspodning checksum counter #
+# Copyright (c) 2010, Deyan Ginev, released under the Gnu General Public License (GPL)#
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: https://svn.kwarc.info/repos/stex/trunk/bin/checksum$ #
+#######################################################################################
+
+use strict;
+
+use Getopt::Long;
+use Modparse;
+use Pod::Usage;
+use Cwd qw(abs_path);
+
+####### start of program #######
+my $mode = "update"; #Default is update
+my $action = { "update" => \&update, "disable" => \&disable, "enable"=>\&enable };
+GetOptions("disable" => sub { $mode="disable"; },
+ "enable" => sub { $mode="enable"; },
+ "update" => sub { $mode="update"; });
+
+
+my ($path) = @ARGV;
+$path = abs_path($path);
+my ($volume,$dir,$file) = File::Spec->splitpath( $path );
+my @lines = `cd $dir; pdflatex "\\nonstopmode\\input{$file}"` if ($mode eq "update");
+my ($checksum) = map {$_=~/^\* The checksum should be (\d+)!/; $1;} grep ($_ =~ /^\* The checksum should be (\d+)!/,@lines) if @lines;
+if (!$checksum) {
+#One more possible error message:
+ ($checksum) = map {$_=~/^! Package doc Error: Checksum not passed \((\d+)<>(\d+)\)\./; $2;} grep ($_ =~ /^! Package doc Error: Checksum not passed \((\d+)<>(\d+)\)\./,@lines) if @lines;
+}
+open(IN,"<$path") or die "Cannot open DTX source: $path\n";
+@lines = ();
+while (<IN>) {
+ push @lines, &{$$action{$mode}}($_,$checksum);
+}
+close(IN);
+open(OUT,">$path") or die "Cannot write to DTX target: $path\n";
+print OUT join("",@lines);
+close(OUT);
+######### Subroutines ############
+sub update {
+ my $checksum=$_[1];
+ $_[0]=~s/\\CheckSum\{\d*\}/\\CheckSum{$checksum}/ if $checksum;
+ $_[0];
+}
+
+sub disable {
+ $_[0]=~s/\\CheckSum\{(\d*)\}/\\iffalse\\CheckSum\{$1}\\fi/ unless $_[0]=~/\\iffalse\\CheckSum\{(\d*)\}\\fi/;
+ $_[0];
+}
+
+sub enable {
+ $_[0]=~s/\\iffalse\\CheckSum\{(\d*)\}\\fi/\\CheckSum{$1}/;
+ $_[0];
+}
+
+
+__END__
+
+
+=head1 SYNOPSIS
+
+checksum <input filename> --update|enable|disable
+
+Purpose:
+ Update, enable or disable the \CheckSum macro for a given .dtx source
+
+Example:
+ checksum omd.dtx --update
diff --git a/Master/texmf-dist/source/latex/stex/bin/convert-paths b/Master/texmf-dist/source/latex/stex/bin/convert-paths
new file mode 100755
index 00000000000..55ee72a2370
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/convert-paths
@@ -0,0 +1,56 @@
+#!/usr/bin/perl -w
+#
+# A script that converts paths in sTeX files from the old \Foosnipppath{bar}
+# to \snippets{foo/bar}, according to the definition of those path macros in
+# paths.sty.
+#
+# Syntax: convert-paths path/to/paths.sty FILES
+#
+# © 2008 Christoph Lange, KWARC, Jacobs University
+
+use File::Copy;
+
+my %map;
+
+my $SNIPPATHRE = '\\\\[[:alnum:]]+(?i:snip|pic)path';
+
+if (open(P, shift(@ARGV))) {
+ print STDERR "Mapping:\n";
+ while (<P>) {
+ if (/^\\def($SNIPPATHRE)#1\{(\\KWARCslides\{[^#]+)#1\}/o) {
+ printf STDERR "\t%s -> %s\n", $1, $2;
+ $map{$1} = $2;
+ }
+ }
+ close(P);
+}
+else {
+ die "Could not open paths.sty";
+}
+
+print STDERR "Processing files:\n";
+while ($#ARGV >= 0) {
+ my $filename = shift(@ARGV);
+ print STDERR "\t$filename\n";
+ copy($filename, "$filename~") || print STDERR "\t\tWARN: could not create backup\n";
+ if (open(T, $filename)) {
+ # slurp the file into a string
+ local $/;
+ $data = <T>;
+ $data =~ s/($SNIPPATHRE)\{([^}]+)\}/
+ $map{$1} ? "$map{$1}$2\}"
+ : ((print STDERR "\t\tWARN: could not replace $1\n"), "$1\{$2}")
+ /oxge;
+ close T;
+ if (open(T, ">$filename")) {
+ print T $data;
+ close T;
+ }
+ else {
+ print STDERR "\t\tWARN: could not save replacement\n";
+ }
+ }
+ else {
+ print STDERR "\t\tWARN: could not open file\n";
+ }
+}
diff --git a/Master/texmf-dist/source/latex/stex/bin/filedate b/Master/texmf-dist/source/latex/stex/bin/filedate
new file mode 100755
index 00000000000..6ea1a5d6870
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/filedate
@@ -0,0 +1,45 @@
+#!/usr/bin/perl -w
+#######################################################################################
+# A tool for updating .dtx files with a given package date. #
+# Copyright (c) 2010, Deyan Ginev, released under the Gnu General Public License (GPL)#
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: https://svn.kwarc.info/repos/stex/trunk/bin/filedate$ #
+#######################################################################################
+
+use strict;
+
+use Getopt::Long;
+use Modparse;
+use Pod::Usage;
+use Cwd qw(abs_path);
+
+my ($file) = @ARGV;
+my $date = `svn info $file`;
+$date =~ /Last Changed Date: (\d+)-(\d+)-(\d+)/;
+$date = $1.'/'.$2.'/'.$3;
+$file = abs_path($file);
+open(IN,"<$file");
+my @lines = ();
+while (<IN>) {
+ if ($_ =~ /\\Provides(Package|Class)/) {
+ $_ =~ s/\[(.*?)\s/\[$date /;
+ }
+ push @lines, $_;
+}
+close(IN);
+open(OUT,">$file");
+print OUT join("",@lines);
+close(OUT);
+
+__END__
+
+
+=head1 SYNOPSIS
+
+filedate <input filename> <newdate>
+
+Purpose:
+ Update the dates for a \ProvidePackage invocation in a given .dtx source
+
+Example:
+ filedate omdoc.dtx
diff --git a/Master/texmf-dist/source/latex/stex/bin/gen-symdef-table.pl b/Master/texmf-dist/source/latex/stex/bin/gen-symdef-table.pl
new file mode 100755
index 00000000000..cd6da0dc06a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/gen-symdef-table.pl
@@ -0,0 +1,85 @@
+#!/usr/bin/perl
+use Cwd;
+
+die 'Set your environment variable "KWARC_HOME" and try again.' if !($ENV{KWARC_HOME});
+
+open(PATH_STY,"$ENV{KWARC_HOME}/projects/stex/sty/paths.sty") || die "can't open path.sty";
+while ($line=<PATH_STY>) {
+ $line =~ m/\\def\\(\w*).*\/([\w-]*)\/#1/;
+ $macros{$2}=$1; # dir -> macro
+}
+close(PATH_STY);
+
+print <<PRE_TEX;
+\\documentclass[notes]{mikoslides}
+\\usepackage{amssymb}
+\\usepackage{latexml,stex,program}
+\\usepackage{ded,calbf,myindex}
+\\usepackage{tikz,multicol}
+\\usepackage{paths}
+\\usepackage[show]{ed}
+\\def\\bsp{\\sl\\color{green}}
+\\def\\hrcr#1#2{#2}
+
+\\begin{document}
+PRE_TEX
+
+chdir("$ENV{KWARC_HOME}/teaching/snippets/");
+
+foreach $dir (<*/>) {
+ $dir = substr($dir,0,-1);
+ if (@ARGV){ # take all dirs listet in @ARGV
+ next if !(grep(/$dir/,@ARGV))
+ } else { # take all dirs but those listed here
+ # next if $dir lt "b"; #test break
+ # next if $dir gt "comb"; #test break
+ next if grep(/$dir/,qw(PIC activemath admin eLearning lib kwarc mathweb mbase old.assignments omdoc openmath physml quantumcomputing sTex search semweb setthy spl1 term-indexing trs varia xml)); #skip these
+ next if grep(/$dir/,qw(ai codeml fa graphs-trees kr mws nlfrags pl0 pl1 prolog regexp)); #broken dirs
+ }
+ print "\\begin{omgroup}{$dir}\n";
+ foreach $file (<${dir}/en/*.sms>) {
+ $file =~ m/([^\/]*).sms/;
+ $prefix = $1;
+ next if grep(/$prefix/,qw(all admin));
+ print "\\begin{omgroup}{$prefix}\n";
+ print "\\requiremodules[exclude]{\\$macros{$dir}\{en/$prefix}\}\n";
+ open (FILE,"./$file") || die "can't open $file";
+ while ($line=<FILE>) {
+ $line =~ s/%.*//;
+ if ($line =~ m/begin{module}/) { # many "begin{module}" in one line yields invalid stex!!!
+ $uses = ($line =~ m/id=([\w-]*)/) ? "[uses=$1]" : "";
+ print "\\begin{module}$uses\n"; # symbols after inner modules yields stex errors!!!
+ print "\\begin{verbatim}\n";
+ print "\\requiremodules[exclude]{\\$macros{$dir}\{en/$prefix}\}\n";
+ print "\\begin{module}$uses\n";
+ print "\\end{verbatim}\n";
+# print "\\begin{multicols}{2}\n";
+ }
+ if ($line =~ m/\\symdef{([^}]*)}(?:\[(\d)\])?({\\assoc\[)?/) {
+ $symb = $1;
+ $arity = $2;
+ $isAssoc = $3 ne "";
+ $defArity = $isAssoc ? 4 : $arity;
+ $exampleArity = $arity eq "" ? 0 : $defArity;
+ $arityOrAssoc = $isAssoc ? "assoc" : $arity;
+ $dummy_args = join("",map {"{$_}"} (qw(a b c d e f g h m)[0..$exampleArity-1]));
+ $dummy_args = "{a,b,c,d}" if $isAssoc;
+ $escaped_dummy_args = $dummy_args;
+ $escaped_dummy_args =~ s/{/\\{/g;
+ $escaped_dummy_args =~ s/}/\\}/g;
+# print "{\\tt{$symb\[$arityOrAssoc\]}} $escaped_dummy_args\\hfill";
+ print "{\\tt{$symb$escaped_dummy_args}} \\hfill ";
+ print "\$\\$symb$dummy_args\$\\\\\n";
+ }
+ if ($line =~ m/end{module}/) { # several "end{mdoule}" allowed!!!
+# print "\\end{multicols}\n";
+ print $line;
+ }
+ }
+ close(FILE);
+ print "\\end{omgroup}\n";
+ }
+ print "\\end{omgroup}\n";
+}
+
+print "\\end{document}";
diff --git a/Master/texmf-dist/source/latex/stex/bin/grep-rerun b/Master/texmf-dist/source/latex/stex/bin/grep-rerun
new file mode 100755
index 00000000000..f73ef082fbb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/grep-rerun
@@ -0,0 +1,59 @@
+#!/usr/bin/perl -w
+#######################################################################################
+# A tool for updating .dtx files with a correspodning checksum counter #
+# Copyright (c) 2010, Deyan Ginev, released under the Gnu General Public License (GPL)#
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: https://svn.kwarc.info/repos/stex/trunk/bin/gre-rerun$ #
+#######################################################################################
+
+use strict;
+
+use Getopt::Long;
+use Pod::Usage;
+use File::Spec;
+use Cwd qw(abs_path);
+
+####### start of program #######
+my ($errlog,$pattern)=@ARGV;
+my %rerun_set = ();
+open(IN,"<",$errlog);
+my ($errvol,$errdir)=File::Spec->splitpath($errlog);
+my $currpath=abs_path($errdir);
+while (<IN>) {
+ #Entering, update path
+ if (/^Entering (.+)$/) {
+ $currpath.="/$1";
+ }
+ #Leaving, update path
+ elsif (/^Leaving (.+)$/) {
+ $currpath =~ s/(\/$1)$//;
+ }
+ #Matching error, note source
+ elsif (/$pattern/) {
+ my ($name) = split(/:/,$_);
+ ($name) = split(/\./,$name);
+ $rerun_set{$currpath."/".$name.".tex"}=1;
+ }
+}
+#Perform rerun of affected sources:
+print STDERR scalar(keys %rerun_set)." sources to rerun:\n";
+foreach (sort keys %rerun_set) {
+ my ($vol,$dir,$file) = File::Spec->splitpath( $_ );
+ print STDERR "Trying $_\n";
+ $file=~s/\.tex$/.omdoc/;
+ print STDERR `cd $dir; make $file -B`;
+}
+close(IN);
+
+
+__END__
+
+
+=head1 SYNOPSIS
+
+grep-rerun <errlog filename> <grep pattern>
+
+Purpose:
+ Given an error log file, generated via the sTeX Makefiles, and an error pattern, fetches and reconverts all sources that suffered this error.
+Example:
+ grep-rerun latex.errlog "Fatal:"
diff --git a/Master/texmf-dist/source/latex/stex/bin/idcheck b/Master/texmf-dist/source/latex/stex/bin/idcheck
new file mode 100755
index 00000000000..d832ac7788e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/idcheck
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+use strict;
+
+use Getopt::Long;
+use File::Path;
+use Pod::Usage;
+use TexId;
+
+
+
+my $tex = TexId->new(progress => 1);
+
+
+
+$tex->load_file_data('../GenCS/notes.tex');
+
+my ($a, $b) = $tex->environments();
+print $b, "\n";
+
+print $tex->snippath(), "\n";
+
+$tex->parse('../GenCS/notes.tex');
+#print join(', ', $tex->use_env_list('omtext')), "\n";
+
+#print $tex->edit_dist('anaIU', 'aanUI'), "\n";
+
+$tex->check_uniq;
+$tex->check_prefix;
+$tex->apply_changes;
diff --git a/Master/texmf-dist/source/latex/stex/bin/msplit b/Master/texmf-dist/source/latex/stex/bin/msplit
new file mode 100755
index 00000000000..cf178ce9b5f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/msplit
@@ -0,0 +1,140 @@
+#!/usr/bin/perl -w
+##############################################################################################
+# Program: msplit (a utility for splitting STeX documents along module boundaries)
+##############################################################################################
+# $URL: svn://kwarc.faculty.iu-bremen.de/kohlhase/kwarc/projects/content/bin/msplit$
+# $Rev: 3722 $; last modified by $Author: $
+# $Date: 2005-07-27 03:22:19 +0200 (Wed, 27 Jul 2005) $
+# Copyright (c) 2005 Ioan Sucan
+##############################################################################################
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License [http://www.gnu.org/copyleft/gpl.html]
+# for more details.
+##############################################################################################
+use strict;
+use Getopt::Long;
+use File::Path;
+use Pod::Usage;
+
+my $input='-', my $output='-', my $path='', my $verbose=0, my $stop_at_end=0;
+my $flag = "include";
+my $header='', my @hdr_data;
+
+sub texf {
+ my $fn = shift;
+ $fn.='.tex' if $fn !~ /\.tex$/;
+ return $fn; }
+
+sub write_file_data{
+ my $filename = shift;
+ open(FS,$filename) or die "Cannot write $filename\n";
+ print FS @_;
+ close(FS); }
+
+# remove the last component in a path
+sub justpath{
+ my $arg = shift;
+ return '' if ($arg !~ m!\/!);
+ while ($arg !~ m!\/$!) {chop($arg);}
+ return $arg; }
+# end justpath
+
+
+sub go {
+ my ($input, $output) = @_;
+ my $path = justpath($output);
+
+ my @module_file=();
+ my @out_data=();
+
+ print "Splitting $input...\n" if $verbose;
+ `mv $output $output~` if (-e $output);
+ $input="$input~" if ($input eq $output);
+
+ open(FIN,$input) or die "Can't open $input\n";
+ my $in_module=0; my $path_name;
+ foreach (<FIN>){
+ chomp;
+ /([^%]*)((%.*)?)/;
+ ($_,my $comment)=($1,$2);
+ if (/\\begin\s*\{module\}/){
+ $_ =~ s/\s//g;
+ /id=([\w-]*)/;
+ my $module_name = $1;
+ $path_name = "$path$module_name.tex";
+ print "$path_name\n" if $verbose;
+ `mv $path_name $path_name~` if (-e $path_name);
+ push(@module_file,@hdr_data) if $header;
+ push(@module_file,"\n$_$comment\n");
+ push(@out_data,"\\requiremodules[$flag]{$module_name}\n");
+ $in_module=1;
+ next; }
+ if (/\\end\s*\{module\}/){
+ $_ =~ s/\s//g;
+ push(@module_file,"$_$comment\n");
+ mkpath(justpath($path_name));
+ write_file_data(">$path_name",@module_file);
+ $in_module=0;
+ next; }
+ if ($stop_at_end && /\\end\s*\{document\}/){
+ $_ =~ s/\s//g;
+ push(@out_data,"$_$comment\n");
+ last; }
+ $_="$_$comment\n";
+ if ($in_module) {push(@module_file,$_);}
+ else {push(@out_data,$_); }}
+ close(FIN);
+ mkpath($path) if $path;
+ write_file_data(">$output",@out_data); }
+
+GetOptions("output=s" => \$output,
+ "path=s" => \$path,
+ "header=s" => \$header,
+ "exclude" => sub { $flag = "exclude"; },
+ "verbose" => sub { $verbose=1; },
+ "stop" => sub { $stop_at_end=1; },
+ "help" => sub { pod2usage(2)});
+
+$input = $ARGV[0] if ($#ARGV>=0);
+die "Input file does not exist\n" if (! defined $input || ! -e $input);
+$output = $input if (! defined $output);
+
+if ($header && -e $header) {
+ open(HDR,$header);
+ @hdr_data = <HDR>;
+ close(HDR); }
+
+$path.='/' if $path && $path !~ m!\/$!;
+go($input,$path.$output);
+print "Done.\n" if $verbose;
+
+__END__
+
+
+=head1 SYNOPSIS
+
+msplit <inputfile> [options]
+
+Options:
+
+ --output filename of new main .tex file; default: same as input
+ --path path where to generate the new documents; '.' by default
+ --header file to be copied at beginning of all new module files
+ --exclude modules exluded by default; if not mentioned, modules
+ are included by default
+ --verbose verbose on
+ --stop stop when \end{document} is found; default is to go on
+ --help this screen
+
+
+
+ This program splits a .tex file into more files, each containing a module.
+ Example usage:
+ ./msplit slides.tex -o sl.tex -p ./modules -s
diff --git a/Master/texmf-dist/source/latex/stex/bin/old/Makefile b/Master/texmf-dist/source/latex/stex/bin/old/Makefile
new file mode 100644
index 00000000000..d2ae41c6401
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/old/Makefile
@@ -0,0 +1,28 @@
+all: src exec
+
+src: idcheck.l defcon.l modstr.l
+ flex -ft idcheck.l > idcheck.yy.c
+ flex -ft defcon.l > defcon.yy.c
+ flex -f+t modstr.l > modstr.yy.cc
+
+idcheck: idcheck.l
+ flex -f $<
+ gcc lex.yy.c -lfl -o idcheck
+
+defcon: defcon.l
+ flex -f $<
+ gcc lex.yy.c -lfl -o defcon
+
+modstr: modstr.l
+ flex -f+ $<
+ g++ lex.yy.cc -lfl -o modstr
+
+exec: idcheck.yy.c defcon.yy.c modstr.yy.cc
+ gcc idcheck.yy.c -lfl -o idcheck
+ gcc defcon.yy.c -lfl -o defcon
+ g++ modstr.yy.cc -lfl -o modstr
+
+clean:
+ rm -f *.yy.c *.yy.cc *~
+
+distclean: clean
diff --git a/Master/texmf-dist/source/latex/stex/bin/old/defcon.l b/Master/texmf-dist/source/latex/stex/bin/old/defcon.l
new file mode 100644
index 00000000000..ad758086145
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/old/defcon.l
@@ -0,0 +1,91 @@
+%{
+
+#include <string.h>
+
+char ltxml[100];
+char fext[6] = ".ltxml";
+
+char symstr[200];
+char ltxmlstr[200];
+
+int i,t,c,tmp,q;
+FILE *lt;
+
+%}
+
+ID [a-zA-Z0-9._:\|-]*
+NR [0-9]*
+
+%s idenv env sym
+
+%%
+
+"\\begin{module}"(" ")*"[" BEGIN(idenv);
+<idenv>"]" BEGIN(INITIAL);
+
+<idenv>"id="{ID} {
+ for (i=3; i<yyleng; i++) ltxml[i-3]=yytext[i];
+ t=yyleng-3;
+ tmp=strlen(fext);
+ for (i=0; i<tmp; i++) ltxml[t+i]=fext[i];
+ t=t+tmp;
+ ltxml[t]=0;
+ if (!q) printf("File %s\n",ltxml);
+ lt = fopen(ltxml,"w");
+ BEGIN(env);
+}
+
+<env>"symdef{\\"{ID}"}"(.)* {
+i=7;
+while (yytext[i]!='}'){
+ symstr[i-7]=yytext[i];
+ i++;
+}
+symstr[i-7]=0;
+BEGIN(sym);
+}
+
+<sym>"latexmldef{"(.)* {
+i=11;
+while (i<yyleng){
+ ltxmlstr[i-11]=yytext[i];
+ i++;
+}
+ltxmlstr[i-12]=0;
+fprintf(lt,"DefConstructor('\%s{}...{}','%s')\n",symstr,ltxmlstr);
+BEGIN(env);
+}
+
+<env,sym>"\\end{module}" {
+fclose(lt);
+BEGIN(INITIAL);
+}
+
+\n c++;
+. c++;
+
+%%
+
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ if (argc==1) {
+ printf("arguments expected: [-q] filename(s)\n");
+ } else {
+ q=0;
+ i=1;
+ if (argv[1][0]=='-'){
+ i++;
+ if (argv[1][1]=='q') q=1;
+ }
+ while (i<argc){
+ if (!q) printf("Processing %s...\n",argv[i]);
+ yyin = fopen(argv[i], "r");
+ c=0;
+ yylex();
+ fclose(yyin);
+ i++;
+ }
+ }
+}
diff --git a/Master/texmf-dist/source/latex/stex/bin/old/idcheck.l b/Master/texmf-dist/source/latex/stex/bin/old/idcheck.l
new file mode 100644
index 00000000000..9b1603527d2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/old/idcheck.l
@@ -0,0 +1,130 @@
+%{
+#include <string.h>
+int ur,ok,a,lin,i,j,c,n,m,d,s,q,fe,f,for_ok,curr_lin;
+typedef char idstr[50];
+idstr l[5000], r[5000];
+%}
+
+ID [a-zA-Z0-9._:\|-]*
+WS [\n\t ]*
+
+%s env inenv fid foc
+
+%%
+
+"\\begin"{WS}"{"("proof"|"example")"}"{WS}"[" {
+fe=1;
+for_ok=0;
+curr_lin=lin;
+BEGIN(env); // stuff that "for" keyval is recommended for
+}
+
+"\\begin"{WS}"{"("proof"|"example")"}" if (f) printf("Missing 'for' at line %d\n",lin);
+
+("\\begin"{WS}"{"("definition"|"assertion"|"proof"|"omtext"|"example"|"step"|"pfcase"|"module")"}"{WS}"[")|("\\justification"{WS}"[") {
+fe=0;
+BEGIN(env);
+}
+
+<env>"]" {
+if (fe && !for_ok && f) printf("Missing 'for' at line %d\n",curr_lin);
+BEGIN(INITIAL);
+}
+
+<env>"id"{WS}"="{WS} BEGIN(fid);
+
+<fid>{ID} {
+for (i=0; i<yyleng; i++) l[n][i]=yytext[i];
+l[n][yyleng]=0;
+if (s) printf("%s\n",l[n]);
+n++;
+BEGIN(env);
+}
+
+<env>("for"){WS}"="{WS} {
+for_ok=1;
+BEGIN(foc);
+}
+<env>("continues"|"for"|"uses"|"premises"){WS}"="{WS} BEGIN(foc);
+
+<foc>{ID} {
+for (j=0; j<yyleng; j++) r[m][j]=yytext[j];
+r[m][yyleng]=0;
+m++;
+BEGIN(env);
+}
+
+<env>("premises"|"uses"){WS}"="{WS}"{" BEGIN(inenv);
+
+<inenv>{ID} {
+strncpy(r[m],yytext,yyleng);
+r[m][yyleng]=0;
+m++;
+}
+
+<inenv>"}" BEGIN(env);
+
+\n {c++;lin++;}
+. c++;
+
+%%
+
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ if (argc==1) {
+ printf("Usage: idcheck [-q | -s | -f] filename(s)\n");
+ printf("Option -s shows all detected IDs. \n");
+ printf("Option -f shows line numbers for examples and proofs\n that have 'for' keyval missing. \n");
+ printf("Option -q for quiet mode.\n");
+ } else{
+ s=0; q=0;
+ a=1;
+ if (argv[1][0]=='-') {
+ a++;
+ for (j=1; j<strlen(argv[1]); j++)
+ if (argv[1][j]=='s') s=1; else
+ if (argv[1][j]=='q') q=1; else
+ if (argv[1][j]=='f') f=1;
+ }
+ d=0;
+ while (a<argc){
+ if (!q) printf("Parsing %s...\n",argv[a]);
+ yyin = fopen(argv[a] , "r");
+ c = 0;
+ lin = 1;
+ n = 0;
+ m = 0;
+ yylex();
+ fclose(yyin);
+ if (!q) printf("%d characters skipped. Found %d IDs. \n",c,n);
+ if (!q) printf("Checking for duplicates...\n");
+ for (i=0; i<n; i++)
+ for (j=i+1; j<n; j++)
+ if (strcmp(l[i],l[j])==0) {
+ printf("ID=%s is a duplicate in %s\n",l[i],argv[a]);
+ d++;
+ }
+ if (!q) printf("Found %d duplicates.\n",d);
+ if (!q) printf("Checking references... (found %d)\n",m);
+ ur=0;
+ for (i=0;i<m; i++){
+ ok=0;
+ for (j=0; j<n; j++)
+ if (strcmp(r[i],l[j])==0){
+ ok=1;
+ break;
+ }
+ if (!ok) {
+ printf("Unmatched reference for ID=%s\n",r[i]);
+ ur++;
+ }
+ }
+ if (!q) printf("Found %d unmatched references.\n",ur);
+ a++;
+ }
+ return d+ur;
+ }
+ return 1;
+}
diff --git a/Master/texmf-dist/source/latex/stex/bin/old/modstr.l b/Master/texmf-dist/source/latex/stex/bin/old/modstr.l
new file mode 100644
index 00000000000..ae0101147c5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/old/modstr.l
@@ -0,0 +1,137 @@
+%{
+#include <iostream>
+#include <string>
+#include <map>
+#include <vector>
+using namespace std;
+
+
+const int indent = 4;
+const char start_char = '*';
+
+typedef struct {
+ vector<string> defs,list;
+ int father;
+} nodetype;
+
+map<string,nodetype> g;
+
+string vertex, data;
+int d, miss, skip;
+
+int max(int, int);
+
+%}
+
+ID [a-zA-Z0-9._:\|-]*
+SEP [,;]*
+WS [\n\t ]*
+M [^}]*
+
+%x in_module found_vertex in_module_cont mdef
+%x found_one_child found_more_children
+
+%%
+
+<INITIAL>"\\begin"{WS}"{module}"{WS}"[" BEGIN(in_module);
+
+<in_module>"id"{WS}"=" BEGIN(found_vertex);
+<found_vertex>{ID} {
+vertex = YYText();
+g[vertex].father=0;
+if (miss) cout << endl << "<-------- Module '" << vertex
+ << "' -------->" << endl << endl;
+BEGIN(in_module);
+}
+<in_module>"uses"{WS}"=" BEGIN(found_one_child);
+<found_one_child>"{" BEGIN(found_more_children);
+<found_more_children>"}" BEGIN(in_module);
+<found_one_child>{ID} {
+data=YYText();
+if (g[data].list.empty())
+ g[vertex].father=g[data].father+1;
+else
+ g[vertex].father=max(g[data].father+1,g[vertex].father);
+g[data].list.push_back(vertex);
+BEGIN(in_module);
+}
+<found_more_children>{ID} {
+data=YYText();
+if (g[data].list.empty())
+ g[vertex].father=g[data].father+1;
+else
+ g[vertex].father=max(g[data].father+1,g[vertex].father);
+g[data].list.push_back(vertex);
+}
+
+<found_one_child,found_more_children,found_vertex>{SEP}|{WS}
+
+<in_module>"]" BEGIN(in_module_cont);
+
+<in_module,in_module_cont>(.|\n)
+
+<in_module_cont>"\\"("symdef"|"abbrdef"|"elldef"|"aliasdef"){WS}"{"{WS} BEGIN(mdef);
+<mdef>{M} {
+data = YYText();
+g[vertex].defs.push_back(data);
+}
+<mdef>"}" BEGIN(in_module_cont);
+<in_module_cont>"\\end"{WS}"{module}" BEGIN(INITIAL);
+
+<INITIAL>(.|\n) if (miss) cout << YYText();
+
+<*>{WS}(%)(.)*(\n)*
+
+%%
+
+void spc(int n){
+ for(int i=0; i<n; i++) cout << " ";
+}
+
+int max(int a, int b){
+ return a>b?a:b;
+}
+
+void go(map<string, nodetype > ::iterator node, int depth){
+if (skip && node->second.father!=depth) return;
+spc(d);
+cout << start_char << " " << node->first << "{";
+int tmp = node->second.defs.size()-1;
+for (int j=0; j<=tmp; j++){
+ cout << node->second.defs[j];
+ if (j!=tmp) cout << ",";
+}
+cout << "}" << endl;
+d+=indent;
+for (int i=0; i<node->second.list.size(); i++)
+ go(g.find(node->second.list[i]),depth+1);
+d-=indent;
+}
+
+int main(int argc, char** argv){
+miss=0;
+skip=0;
+if (argc==2)
+ if (argv[1][0]=='-')
+ for (int z=1; argv[1][z]!=0; z++)
+ if (argv[1][z]=='m') miss=1; else
+ if (argv[1][z]=='s') skip=1; else
+ if (argv[1][z]=='h') {
+ cout << " Usage: modstr [-s|m|h]\n Input: stdin\n Output: stdout\n";
+ cout << " Options: -s Show module usage only at the deepest level\n";
+ cout << " -m Show text not within a module\n";
+ cout << " -h This help screen\n";
+ return 0;
+ }
+if (miss) cout << "Text NOT within a module:\n" << endl;
+FlexLexer* lex = new yyFlexLexer;
+lex->yylex();
+d=0;
+map<string, nodetype > ::iterator start = g.begin();
+map<string, nodetype > ::iterator stop = g.end();
+cout << endl;
+for(;stop!=start;start++)
+ if (!start->second.father) go(start,0);
+cout << endl;
+return 0;
+}
diff --git a/Master/texmf-dist/source/latex/stex/bin/old/symdef b/Master/texmf-dist/source/latex/stex/bin/old/symdef
new file mode 100755
index 00000000000..b5c789a1c72
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/old/symdef
@@ -0,0 +1,46 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Getopt::Long;
+use Pod::Usage;
+
+my $output = "-";
+my $input = "-";
+
+GetOptions("output=s",\$output);
+
+$input = $ARGV[0] if @ARGV;
+
+open(FIN,$input) or die "Can't open input file.";
+open(FOUT,">$output");
+
+my $line;
+
+while ($line=<FIN>){
+ if ($line !~ m/symdef/ && $line !~ m/elldef/ && $line !~ m/abbrdef/){
+ print FOUT $line;
+ next;
+ }
+ if ($line =~ m/\}\[\d,/){
+ print FOUT $line;
+ next;
+ }
+
+ if ($line =~ m/\\(sym|abbr|ell)def\{\\([^\}]+)\}\[(\d)\]([^\n\%]+)(.*)/){
+ print FOUT "\\$1def{\\$2}[$3,name=$2]$4$5\n";
+ } else {
+ if ($line =~ m/\\(sym|ell|abbr)def\{\\([^\}]+)\}([^\n\%]+)(.*)/){
+ print FOUT "\\$1def{\\$2}[0,name=$2]$3$4\n";
+ }
+ }
+}
+
+close(FIN);
+close(FOUT);
+
+
+__END__
+
+=head1 SYNOPSIS
+
+symdef [--output=outputfile] [texfile]
diff --git a/Master/texmf-dist/source/latex/stex/bin/rf b/Master/texmf-dist/source/latex/stex/bin/rf
new file mode 100755
index 00000000000..7de36042620
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/rf
@@ -0,0 +1,63 @@
+#!/usr/bin/perl -w
+
+#######################################################################################
+# A tool for computing the module reuse factor for TEX files. #
+# Copyright (c) 2005, Ioan Sucan, released under the Gnu General Public License (GPL) #
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/rf$ #
+# $Date: 2005-06-29 23:08:10 +0200 (Wed, 29 Jun 2005) $ $Rev: 3147 $ #
+#######################################################################################
+
+use strict;
+use Getopt::Long;
+use Modparse;
+use Pod::Usage;
+
+my $input = "-", my $verbose=0, my $stop_at_end=0;
+my %arg_snippath; my @snippathList;
+
+GetOptions("path=s" => \%arg_snippath,
+ "defpath=s" => \@snippathList,
+ "verbose" => sub { $verbose=1; },
+ "stop" => sub { $stop_at_end=1; },
+ "help" => sub { pod2usage(2)});
+
+$input = $ARGV[0] if ($#ARGV>=0);
+
+$main::lc1 = 0; $main::lc2 = 0;
+my $mp = Modparse->new(snippathList=>\@snippathList,
+ snippath=>\%arg_snippath,
+ stopAtEnd=>$stop_at_end,
+ verbose=>$verbose,
+ onEveryLine=>sub {
+ $main::lc1++;
+ $main::lc2++ if $_[0]->{depth}==1; });
+
+$mp->execute($input);
+my $f = ($main::lc2>0)?$main::lc1/$main::lc2:0;
+print "Reuse factor: $f\n";
+
+__END__
+
+
+=head1 SYNOPSIS
+
+rf <input filename> [options]
+
+ This program computes the reuse factor for a .tex document
+
+ Options:
+ --path XXX specify the value of \XXX (some snippath) in case it is
+ = somePath not defined in the processed .tex file
+ --defpath XXX specify which \XXX (snippath definitions) to look for
+ --stop stop when \end{document} is found; default is to go on
+ --verbose verbose on
+ --help this screen
+
+
+ Example usage:
+ ./rf slides.tex -d snippath -v
+
+ Interpretation:
+ compute the reuse factor for the file slides.tex, look for definitions
+ of \snippath, in verbose mode
diff --git a/Master/texmf-dist/source/latex/stex/bin/rng2dot/ModelRNC.pm b/Master/texmf-dist/source/latex/stex/bin/rng2dot/ModelRNC.pm
new file mode 100644
index 00000000000..53673e37dc8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/rng2dot/ModelRNC.pm
@@ -0,0 +1,770 @@
+# anything that starts with # is removed until \n (considered as a comment)
+# except in literals;
+#
+# NCName is limited to a-zA-Z0-9.-_
+#
+# no proper support for except nameClass
+# no support for exceptPatterns
+
+package ModelRNC;
+
+use strict;
+use File::Basename;
+
+my $DOCUMENT = '_Document_';
+
+sub new{
+ my ($class) = @_;
+ my $self = {};
+ $self->{literalCount} = 0;
+ bless($self, $class);
+}
+
+# this is the main method of the package
+# it should be called right after new
+sub process{
+ my ($self, $filename) = @_;
+ $self->readfile($filename);
+ $self->clean_rnc;
+ $self->read_topLevel;
+ $self->build_info;
+ # free some memory
+ $self->{DATA} = ''; $self->{FILEPATH} = ''; $self->{GRAPH} = '';
+}
+
+sub Error{
+ my ($self, $msg) = @_;
+ print "'$self->{DATA}'\n";
+ die $msg."\n";
+}
+
+# read a file into $storage;
+# or $self->{DATA} if $storage not given
+sub readfile{
+ my ($self, $filename, $storage) = @_;
+
+ # NOTE: this is not exactly perfect
+ if ($self->{FILEPATH}){
+ $filename = $self->{FILEPATH}.$filename unless -e $filename; }
+ my $basepath = dirname($filename);
+ $basepath .= '/' if ($basepath && $basepath !~ m|/$|);
+ $self->{FILEPATH} = $basepath;
+
+ open(FIN, $filename) or $self->Error("Cout not open '$filename'");
+ my @data = <FIN>;
+ close(FIN);
+
+ # for use in namespace set selection
+ push(@{$self->{LOADEDFILES}}, $filename);
+
+ if (defined $storage){ $$storage = join('',@data); }
+ else { $self->{DATA} = join('',@data); }
+}
+
+# remove lines after ##
+sub remove_annotations{
+ my ($self, $data) = @_;
+ $data = \$self->{DATA} unless $data;
+ do {} while ($$data =~ s/\[[^\]\[]*\]//g);
+ $$data =~ s/\#\#[^\n]*//g;
+}
+
+# remove all lines that start with # except
+# the ones that start with ##
+sub remove_comments{
+ my ($self, $data) =@_;
+ $data = \$self->{DATA} unless $data;
+ $$data =~ s/\#[^\#\n][^\n]*//g;
+ $$data =~ s/\#\n/\n/g;
+}
+
+sub scan_literals{
+ my ($self, $data) = @_;
+ my @litseg; my $seg = 0;
+ $data = \$self->{DATA} unless $data;
+ while ($$data =~ s/\"\"\"((\"{0,2}[^\"])*)\"\"\"/_LITSEG$seg/) { $litseg[$seg++] = $1; }
+ while ($$data =~ s/\'\'\'((\'{0,2}[^\'])*)\'\'\'/_LITSEG$seg/) { $litseg[$seg++] = $1; }
+ while ($$data =~ s/\"([^\"\n]*)\"/_LITSEG$seg/) { $litseg[$seg++] = $1; }
+ while ($$data =~ s/\'([^\'\n]*)\'/_LITSEG$seg/) { $litseg[$seg++] = $1; }
+
+ while ($$data =~ s/_LITSEG(\d+)\s*~\s*_LITSEG(\d+)/_LITSEG$seg/)
+ { $litseg[$seg++] = $litseg[$1].$litseg[$2]; }
+
+ while ($$data =~ s/_LITSEG(\d+)/!LIT$self->{literalCount}/)
+ { $self->{literals}[$self->{literalCount}++] = $litseg[$1]; }
+}
+
+# remove \x{N} sections
+sub special_chars{
+ my ($self, $data) = @_;
+ $data = \$self->{DATA} unless $data;
+ while ($$data =~ m/\\x\{([a-fA-F0-9x]+)\}/g){
+ my $lng = length($&); my $p = pos($$data) - $lng;
+ substr($$data, $p, $lng) = chr(hex($1));
+ pos($$data) = $p + 1;
+ }
+}
+
+# remove redundant data from loaded file
+sub clean_rnc{
+ my ($self, $data) = @_;
+ $data = \$self->{DATA} unless $data;
+ $self->scan_literals($data);
+ $self->special_chars($data);
+ $self->remove_annotations($data);
+ $self->remove_comments($data);
+ # add a newline, just in case the last word is a keyword
+ # and for nice printing;
+ $$data.="\n";
+}
+
+# in the processing of the data, the data is destroyed
+# provide two methods for resolving that
+sub backup{
+ my ($self) = @_;
+ $self->{BACKUP_DATA} = $self->{DATA};
+}
+
+sub restore{
+ my ($self) = @_;
+ $self->{DATA} = $self->{BACKUP_DATA} if defined $self->{BACKUP_DATA};
+}
+
+# set or retrieve stored data
+sub data{
+ my ($self, $newdata) = @_;
+ if (defined $newdata){ $self->{DATA} = $newdata; }
+ else { return $self->{DATA}; }
+}
+
+# put back some extracted string from DATA
+sub put_back{
+ my ($self, $back) = @_;
+ substr($self->{DATA}, 0, 0) = $back;
+}
+
+# try to match a keyword; return 1 on success; 0 on failure
+# NOTE: this implies that the used keywords should be followed by
+# some non alphanumeric or space character
+sub read_keyword{
+ my ($self, $keyword) = @_;
+ return 0 if ($self->{DATA} !~ /^\s*\Q$keyword\E\s*[^a-zA-Z0-9_\-\.]/);
+ substr($self->{DATA}, 0, length($&)-1) = '';
+ return 1;
+}
+
+# same as read_keyword, except it dies not expect a non-word character
+# after the word it searches
+sub read_controlword{
+ my ($self, $controlword) = @_;
+ return 0 if ($self->{DATA} !~ /^\s*\Q$controlword\E\s*/);
+ substr($self->{DATA},0,length($&)) = '';
+ return 1;
+}
+
+# expect a keyword; if the word is found, it is extracted
+# otherwise, the program dies (the grammar is incorrect)
+sub expect_keyword{
+ my ($self, $keyword) = @_;
+ $self->Error("Expected keyword '$keyword' was not found")
+ if ($self->{DATA} !~ /^\s*\Q$keyword\E\s*/);
+ substr($self->{DATA}, 0, length($&)) = '';
+}
+
+
+# Does not include Extender and CombiningChar
+# (as in XML Namespaces: http://www.w3.org/TR/REC-xml/)
+sub read_NCName{
+ my ($self, $terminators) = @_;
+ my $termin_exists = 1;
+ if (defined $terminators) { $terminators = "[$terminators]"; }
+ else { $terminators = ''; $termin_exists = 0; }
+ if ($self->{DATA} =~ /^\s*([_a-zA-Z][_a-zA-Z0-9\.\-]*)\s*$terminators/){
+ substr($self->{DATA}, 0, length($&)-$termin_exists) = '';
+ return $1;
+ }
+ return undef;
+}
+
+# try to match an identifierOrKeyword; return it in case
+# of success; return undef in case of failure;
+sub read_identifierOrKeyword{
+ my ($self, $terminators) = @_;
+ $self->read_controlword('\\');
+ return $self->read_NCName($terminators);
+}
+
+# see if the argument is in the set of defined keyword of RelaxNG
+sub isRNCKeyword{
+ my ($word) = @_;
+ return ($word =~ /^\s*(attribute|default|datatypes|div|element|empty|external|grammar|include|inherit|list|mixed|namespace|notAllowed|parent|start|string|text|token)\s*$/);
+}
+
+# read an identifier; return undef if no identifier can be read
+sub read_identifier{
+ my ($self, $terminators) = @_;
+ my $quote = $self->read_controlword('\\');
+ my $ident = $self->read_NCName($terminators);
+ if (!$quote && $ident && isRNCKeyword($ident)){
+ $self->put_back($ident);
+ return undef;
+ }
+ return $ident;
+}
+
+# read a literal in any form given;
+# segments are taken into account
+sub read_literal{
+ my ($self) = @_;
+ if ($self->{DATA} =~ /^\s*!LIT(\d+)\s*/){
+ substr($self->{DATA}, 0, length($&)) = '';
+ return $self->{literals}[$1];
+ }
+ return undef;
+}
+
+# read a namespace URI literal
+sub read_namespaceURILiteral{
+ my ($self, $inherited_namespace) = @_;
+ return $inherited_namespace if $self->read_keyword('inherit');
+ return $self->read_literal;
+}
+
+# read any URI literal
+sub read_anyURILiteral{
+ my ($self) = @_;
+ $self->read_literal; }
+
+sub getNS{
+ my ($self, $nspref) = @_;
+ $self->{${$self->{LOADEDFILES}}[$#{$self->{LOADEDFILES}}]}->{NAMESPACE}{$nspref}; }
+
+sub setNS{
+ my ($self, $nspref, $nsval) = @_;
+ $self->{${$self->{LOADEDFILES}}[$#{$self->{LOADEDFILES}}]}->{NAMESPACE}{$nspref} = $nsval; }
+
+# read all declarations, until none can be read
+sub read_decl{
+ my ($self, $inherited_namespace) = @_;
+ $inherited_namespace = '' unless defined $inherited_namespace;
+ $self->setNS('default',$inherited_namespace) unless $self->getNS('default');
+ my $found = 1;
+ while ($found){
+ if ($self->read_keyword('namespace')){
+ my $namespace_name = $self->read_identifierOrKeyword('=');
+ $self->Error('Undefined namespace name') unless $namespace_name;
+ $self->expect_keyword('=');
+ my $namespace_value =
+ $self->read_namespaceURILiteral($inherited_namespace);
+ $self->Error('Undefined namespace URI')
+ unless defined $namespace_value;
+ $self->setNS($namespace_name, $namespace_value);
+ }
+ elsif ($self->read_keyword('default') &&
+ $self->read_keyword('namespace')){
+ my $namespace_name = undef;
+ if (!$self->read_controlword('=')){
+ $namespace_name = $self->read_identifierOrKeyword('=');
+ $self->Error('Undefined namespace name')
+ unless $namespace_name;
+ $self->expect_keyword('=');
+ }
+ my $namespace_value =
+ $self->read_namespaceURILiteral($inherited_namespace);
+ $self->Error('Undefined namespace URI')
+ unless defined $namespace_value;
+ $self->setNS('default', $namespace_value);
+ $self->setNS($namespace_name, $namespace_value)
+ if $namespace_name;
+ }
+ elsif ($self->read_keyword('datatypes')){
+ my $datatype_name = $self->read_identifierOrKeyword('=');
+ $self->Error('Undefined datatype name') unless $datatype_name;
+ $self->expect_keyword('=');
+ my $datatype_value = $self->read_literal;
+ $self->Error('Undefined datatype value')
+ unless defined $datatype_value;
+ }
+ else { $found = 0; }
+ }
+}
+
+# ignore an annotation definition;
+# (assumes annotation content does not exist)
+# (it has been removed by clean_rnc)
+sub ignore_annotation{
+ my ($self) = @_;
+ $self->read_CName; }
+
+# read a name (CName) of the form NCName:NCName
+sub read_CName{
+ my ($self, $terminators) = @_;
+ $terminators = '\s' unless defined $terminators;
+ my $name = $self->read_NCName(':');
+ if ($name){
+ $self->expect_keyword(':');
+ my $part2 = $self->read_NCName($terminators);
+ $self->Error('Incomplete CName definition') unless $part2;
+ $name .= ":$part2";
+ }
+ return $name;
+}
+
+# read a datatype name
+sub read_datatypeName{
+ my ($self, $terminators) = @_;
+ $terminators = '\s' unless defined $terminators;
+ if ($self->{DATA} =~ /^\s*string\s*[$terminators]/){
+ substr($self->{DATA},0,length($&)-1) = '';
+ return 'string';
+ }
+ elsif ($self->{DATA} =~ /^\s*token\s*[$terminators]/){
+ substr($self->{DATA},0,length($&)-1) = '';
+ return 'token';
+ } else {
+ return $self->read_CName($terminators);
+ }
+}
+
+# read a datatype value
+sub read_datatypeValue{
+ my ($self) = @_;
+ return $self->read_literal;
+}
+
+# return the set of names an element or an attribute can have
+# this does not work well on complicated name classes
+sub read_nameClassEx{
+ my ($self, $terminators) = @_;
+
+ my @result;
+
+ if ($self->read_controlword('(')){
+ @result = $self->read_nameClassEx($terminators.'\)');
+ $self->expect_keyword(')');
+ } else {
+
+ #anyName
+ if ($self->read_controlword('*')){
+ push(@result, '*');
+ if ($self->read_controlword('-')){
+ print STDERR "Warning: USE OF EXCEPT NAMECLASS NOT IMPLEMENTED\n";
+ push(@result, $self->read_nameClassEx($terminators));
+ }
+ }
+ # nsName or name(CName)
+ elsif (my $part1 = $self->read_NCName(':')){
+ $self->expect_keyword(':');
+ if ($self->read_controlword('*')){
+ push(@result, "$part1:*");
+ if ($self->read_controlword('-')){
+ print STDERR
+ "Warning: USE OF EXCEPT NAMECLASS NOT IMPLEMENTED\n";
+ push(@result, '-',
+ $self->read_nameClassEx($terminators));
+ }
+ } else {
+ push(@result, $part1.':'.$self->read_NCName($terminators.'\|'));
+ }
+ }
+ # name(identifierOrKeyword)
+ else {
+ my $name = $self->read_identifierOrKeyword($terminators.'\|');
+ $self->Error('Incomplete name class given') unless $name;
+ push(@result, $name);
+ }
+ }
+
+ $self->Error('No name class provided') unless @result;
+
+ # see if we have more possible names:
+ push(@result, $self->read_nameClassEx($terminators))
+ if ($self->read_controlword('|'));
+
+ return @result;
+}
+
+sub read_nameClass{
+ my ($self, $terminators, @parents) = @_;
+ $terminators = '\s' unless defined $terminators;
+ my @result = $self->read_nameClassEx($terminators);
+ my @finalRes;
+
+ if (@parents && @result){
+
+ my @nsList, my %saw = ();
+ foreach (@parents){
+ if (/\{(.*)\}:.+/){
+ next if $saw{$1};
+ push(@nsList, $1); $saw{$1} = 1; }
+ else {
+ next if $saw{'default'};
+ push(@nsList, $self->getNS('default')); $saw{'default'} = 1; }
+ }
+
+ foreach my $res(@result){
+ if ($res =~ /(.+):(.+)/){
+ push(@finalRes, $self->ns_prepend($2, $1)); }
+ else {
+ map(push(@finalRes, "{$_}:$res"), @nsList); }
+ }
+ } else {
+ map(push(@finalRes, (/(.+):(.+)/)?
+ $self->ns_prepend($2, $1):$self->ns_prepend($_)), @result);
+ }
+ return @finalRes;
+}
+
+
+# read a parameter declaration, if one exists
+sub read_param{
+ my ($self) = @_;
+ my $id = $self->read_identifierOrKeyword('=');
+ return (undef, undef) unless $id;
+ $self->expect_keyword('=');
+ my $val = $self->read_literal;
+ $self->Error('No parameter value specified') unless defined $val;
+ return ($id, $val);
+}
+
+sub begin_read_newfile{
+ my ($self) = @_;
+ my $file = $self->read_anyURILiteral;
+ my $inherit = 'default';
+ if ($self->read_keyword('inherit')){
+ $self->expect_keyword('=');
+ $inherit = $self->read_identifierOrKeyword; }
+ $inherit = $self->getNS($inherit);
+ my $newdata = '';
+ $self->readfile($file, \$newdata);
+ $self->clean_rnc(\$newdata);
+ $self->put_back($newdata.'#');
+ $self->read_decl($inherit); }
+
+sub end_read_newfile{
+ my ($self) = @_;
+ pop(@{$self->{LOADEDFILES}});
+ $self->expect_keyword('#'); }
+
+# read a pattern
+sub read_pattern{
+ my ($self, $grammarPath, $grammarIdent, @parentElements) = @_;
+ my $found = 1; my $grammarCount = 0;
+ my $DEF = $grammarPath.':'.$grammarIdent;
+
+ if ($self->read_keyword('element')){
+ my @elementNames = $self->read_nameClass('{', @parentElements);
+ $self->Error('Unspecified element name') unless @elementNames;
+ map(push(@{$self->{GRAPH}->{$DEF}->{$_}{ELEMENTS}},
+ @elementNames), @parentElements);
+ $self->expect_keyword('{');
+ $self->read_pattern($grammarPath, $grammarIdent, @elementNames);
+ $self->expect_keyword('}');
+ }
+ elsif ($self->read_keyword('attribute')){
+ my @attributeNames = $self->read_nameClass('{');
+ $self->Error('Unspecified attribute name') unless @attributeNames;
+ map(push(@{$self->{GRAPH}->{$DEF}->{$_}{ATTRIBUTES}},
+ @attributeNames), @parentElements);
+ $self->expect_keyword('{');
+ $self->read_pattern($grammarPath, $grammarIdent, @parentElements);
+ $self->expect_keyword('}');
+ }
+ elsif ($self->read_keyword('list') || $self->read_keyword('mixed')){
+ $self->expect_keyword('{');
+ $self->read_pattern($grammarPath, $grammarIdent, @parentElements);
+ $self->expect_keyword('}');
+ }
+ elsif ($self->read_controlword('(')){
+ $self->read_pattern($grammarPath, $grammarIdent, @parentElements);
+ $self->expect_keyword(')');
+ }
+ elsif (my $datatypeValue =
+ $self->read_datatypeValue){
+ # do nothing
+ }
+ elsif (my $datatypeName =
+ $self->read_datatypeName('\s\{\}\-!')){
+ my $datatypeValue = $self->read_datatypeValue;
+
+ # read parameters; ignore them for now
+ if ($self->read_controlword('{')){
+ my ($ident, $val);
+ do{
+ ($ident, $val) = $self->read_param;
+ } while ($ident && $val);
+ $self->expect_keyword('}');
+ }
+ # read possible exceptPattern
+ if ($self->read_controlword('-')){
+ print STDERR "Warning: USE OF EXCEPT PATTERN NOT IMPLEMENTED\n";
+ $self->Error('exceptPattern expected but not found')
+ unless $self->read_pattern($grammarPath, $grammarIdent,
+ @parentElements);
+ }
+ }
+ elsif ($self->read_keyword('external')){
+ $self->begin_read_newfile;
+ $self->read_pattern($grammarPath, $grammarIdent, @parentElements);
+ $self->end_read_newfile;
+ }
+ elsif ($self->read_keyword('grammar')){
+ my $ident = $DEF.$grammarCount++;
+ $self->expect_keyword('{');
+ $self->read_grammarContent($ident, @parentElements);
+ $ident .= ':start';
+ map(push(@{$self->{GRAPH}->{$DEF}->{$_}{REFS}},
+ $ident), @parentElements);
+ $self->expect_keyword('}');
+ }
+ elsif ($self->read_keyword('parent')){
+ my $ident = $self->read_identifier;
+ if ($grammarPath =~ /^([.]+:)[^:]+$/){
+ $ident = $1.$ident;
+ map(push(@{$self->{GRAPH}->{$DEF}->{$_}{REFS}},
+ $ident), @parentElements);
+ }
+ }
+ elsif ($self->read_keyword('empty') || $self->read_keyword('text')
+ || $self->read_keyword('notAllowed')){
+ # do nothing
+ }
+ elsif (my $ident = $self->read_identifier){
+ # check if we did not enter a grammar by mistake:
+ my $asg = $self->read_assignMethod(1);
+ if ($ident && $asg){
+ $self->put_back($ident.$asg);
+ } else {
+ $ident = $grammarPath.':'.$ident;
+ map(push(@{$self->{GRAPH}->{$DEF}->{$_}{REFS}},
+ $ident), @parentElements);
+ }
+
+ } else { $found = 0; }
+
+ if ($self->read_controlword('?') || $self->read_controlword('*')
+ || $self->read_controlword('+')){
+ # ignore
+ }
+
+ if ($self->read_controlword(',') || $self->read_controlword('|')
+ || $self->read_controlword('&')){
+ Error('Pattern expected') unless
+ $self->read_pattern($grammarPath, $grammarIdent, @parentElements);
+ }
+
+ return $found;
+}
+
+sub read_assignMethod{
+ my ($self, $asString) = @_;
+ if ($asString){
+ return '&=' if ($self->read_controlword('&='));
+ return '|=' if ($self->read_controlword('|='));
+ return '=' if ($self->read_controlword('='));
+ return undef;
+ }
+ return 3 if ($self->read_controlword('&='));
+ return 2 if ($self->read_controlword('|='));
+ return 1 if ($self->read_controlword('='));
+ return 0;
+}
+
+# read a grammar pattern
+sub read_grammarPattern{
+ my ($self, $DEF, @parentElements) = @_;
+ if ($self->read_keyword('grammar')){
+ $self->expect_keyword('{');
+ $self->read_grammarContent($DEF, @parentElements);
+ $self->expect_keyword('}'); }
+ else{
+ $self->read_grammarContent($DEF, @parentElements);}
+}
+
+# read all possible grammar contents
+sub read_grammarContent{
+ my ($self, $DEF, @parentElements) = @_;
+ my ($div, $found) = (0, 1);
+
+ while ($found){
+ if ($self->read_keyword('div')){
+ $div++;
+ $self->expect_keyword('{');
+ $self->read_grammarContent($DEF.':_G'.$div, @parentElements);
+ $self->expect_keyword('}');
+ }
+ elsif ($self->read_keyword('include')){
+ $self->begin_read_newfile;
+ $self->read_grammarPattern($DEF, @parentElements);
+ $self->end_read_newfile;
+ if ($self->read_controlword('{')){
+ $self->read_grammarContent($DEF, @parentElements);
+ $self->expect_keyword('}'); }
+ }
+ elsif ($self->read_keyword('start')){
+ my $asg = $self->read_assignMethod;
+ $self->Error('Invalid assign method') unless $asg;
+ @{$self->{GRAPH}->{$DEF.':start'}->{PARENTS}} = @parentElements;
+ $self->read_pattern($DEF, 'start', @parentElements);
+ }
+ elsif (my $ident = $self->read_identifier('=\|\&')){
+ my $asg = $self->read_assignMethod;
+ $self->Error('Invalid assign method') unless $asg;
+ my $ref = $DEF.':'.$ident;
+ %{$self->{GRAPH}->{$ref}} = () if $asg == 1;
+ @{$self->{GRAPH}->{$ref}->{PARENTS}} = @parentElements;
+ $self->read_pattern($DEF, $ident, @parentElements);
+ }
+ elsif ($self->ignore_annotation) {}
+ else { $found = 0; }
+ }
+}
+
+sub ns_prepend{
+ my ($self, $tag, $ns_pref) = @_;
+ my $ns = $ns_pref?$self->getNS($ns_pref):undef;
+ $ns = $self->getNS('default') unless $ns;
+ return "{$ns}:$tag";
+}
+
+# this should match the whole file
+sub read_topLevel{
+ my ($self) = @_;
+ $self->read_decl;
+ $self->read_pattern($DOCUMENT, 'start', $DOCUMENT);
+
+ my ($after, $before) = (0, 1);
+ while ($before != $after){
+ $before = length($self->{DATA});
+ $self->read_grammarContent($DOCUMENT, $DOCUMENT);
+ $after = length($self->{DATA});
+ }
+ $self->{DATA} = trim($self->{DATA});
+ $self->Error('Unable to completely process data')
+ unless $self->{DATA} eq '';
+}
+
+# remove leading and trailing white space
+sub trim{
+ my ($arg) = @_;
+ $arg =~ s/^\s+//;
+ $arg =~ s/\s+$//;
+ return $arg;
+}
+
+sub build_info{
+ my ($self) = @_;
+
+ my %seen = ();
+ local *go = sub {
+ my ($reference, $node) = @_;
+
+ my $ident = $reference.'#'.$node;
+ return if defined $seen{$ident};
+ $seen{$ident} = 1;
+
+ map($self->{ATTR}->{$node}{$_} = 1,
+ @{$self->{GRAPH}->{$reference}->{$node}{ATTRIBUTES}})
+ if defined $self->{GRAPH}->{$reference}->{$node}{ATTRIBUTES};
+
+ my @sons;
+ map(push(@sons, ($reference, $_)),
+ @{$self->{GRAPH}->{$reference}->{$node}{ELEMENTS}})
+ if defined $self->{GRAPH}->{$reference}->{$node}{ELEMENTS};
+
+ if (defined $self->{GRAPH}->{$reference}->{$node}{REFS}){
+ my @refs = @{$self->{GRAPH}->{$reference}->{$node}{REFS}};
+ foreach my $ref(@refs){
+ next unless $self->{GRAPH}->{$ref}->{PARENTS};
+ foreach my $son(@{$self->{GRAPH}->{$ref}->{PARENTS}}){
+ map(push(@sons, ($ref, $_)),
+ @{$self->{GRAPH}->{$ref}->{$son}{ELEMENTS}})
+ if defined $self->{GRAPH}->{$ref}->{$son}{ELEMENTS};
+ push(@refs, @{$self->{GRAPH}->{$ref}->{$son}{REFS}})
+ if defined $self->{GRAPH}->{$ref}->{$son}{REFS};
+ # if a reference has attributes defined,
+ # they will appear as attributes to $DOCUMENT
+ # if the reference is not defined within some element
+ map($self->{ATTR}->{$node}{$_} = 1,
+ @{$self->{GRAPH}->{$ref}->{$son}{ATTRIBUTES}})
+ if ($self->{GRAPH}->{$ref}->{$son}{ATTRIBUTES} &&
+ ($son eq $DOCUMENT));
+ }
+ }
+ }
+ my $sonCount = ($#sons+1)/2;
+ for (my $i = 0; $i < $sonCount; $i++){
+ my ($ref, $son) = ($sons[2*$i], $sons[2*$i+1]);
+ go($sons[2*$i], $sons[2*$i+1]);
+ $self->{NODES}->{$node}{$son} = 1;
+ }
+ };
+
+ go($DOCUMENT.':start', $DOCUMENT);
+
+ %seen = ();
+ local *gnodes = sub {
+ my ($node) = @_;
+ return if $seen{$node};
+ $seen{$node} = 1;
+ foreach my $son(keys %{$self->{NODES}->{$node}}){
+ map($self->{GNODES}->{$node}{$_} = $son,
+ keys %{$self->{NODES}->{$son}});
+ gnodes($son); }
+ };
+
+ gnodes($DOCUMENT);
+ @{$self->{TAGLIST}} = keys %seen;
+}
+
+sub getTagList {
+ my ($self) = @_;
+ return @{$self->{TAGLIST}};
+}
+
+sub tagChildren {
+ my ($self, $tag) = @_;
+ keys %{$self->{NODES}->{$tag}}; }
+
+# given a tag and a childtag, return whether
+# tag can contain childtag
+sub canContain()
+{
+ my ($self, $tag, $childtag) = @_;
+ return ($self->{NODES}->{$tag}{$childtag} ||
+ $self->{NODES}->{$tag}{'*'})?1:0;
+}
+
+# there can be more results: list ?
+# there can be no result, but a class of results.. like a nsName
+# choose representative?
+sub canContainIndirect()
+{
+ my ($self, $tag, $childtag) = @_;
+ return $self->{GNODES}->{$tag}{$childtag} if
+ $self->{GNODES}->{$tag}{$childtag};
+
+ if ($self->{NODES}->{$tag}{'*'}){
+ foreach (@{$self->{TAGLIST}}){
+ return $_ if $self->{NODES}->{$_}{$childtag};
+ }
+ }
+}
+
+# given a tag and an attribute return whether
+# the tag can have that attribute
+sub canHaveAttribute()
+{
+ my ($self, $tag, $attr) = @_;
+ return ($self->{ATTR}->{$tag}{$attr} ||
+ $self->{ATTR}->{$tag}{'*'})?1:0;
+}
+
+sub canContainSomehow()
+{
+ my ($self, $tag, $childtag) = @_;
+ return ($self->canContain($tag, $childtag) ||
+ $self->canContainIndirect($tag, $childtag));
+}
+
+1;
diff --git a/Master/texmf-dist/source/latex/stex/bin/rng2dot/rng2dot b/Master/texmf-dist/source/latex/stex/bin/rng2dot/rng2dot
new file mode 100755
index 00000000000..588b8827c63
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/rng2dot/rng2dot
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+
+use ModelRNC;
+
+die "No input file\n" unless $ARGV[0];
+my $opt = $ARGV[1] || '';
+
+my $rnc = ModelRNC->new();
+$rnc->process($ARGV[0]);
+print STDERR 'Unable to properly parse ('.$rnc->data.")\n" if $rnc->data;
+
+my %seen = ();
+sub make_graph {
+ my ($node) = @_;
+ my @children = $rnc->tagChildren($node);
+ my $pnode = $node;
+ $pnode =~ s/^\{[^\}]*\}://; $pnode =~ s/\-|\+|\*|\s/_/g;
+ my @pchildren = @children;
+ for (my $i = 0 ; $i < @pchildren; $i++) {
+ $pchildren[$i] =~ s/^\{[^\}]*\}://;
+ $pchildren[$i] =~ s/\-|\+|\*|\s/_/g; }
+ if ($opt eq 'txt') {
+ print "$pnode: ".join(', ', @pchildren)."\n\n"; }
+ else {
+ for (my $i = 0 ; $i < @pchildren; $i++) {
+ print "$pnode -> ".$pchildren[$i].";\n"; }}
+ return 0 if $seen{$node};
+ $seen{$node} = 1;
+ foreach my $child(@children) {
+ make_graph($child); }
+ 1; }
+
+print "digraph RNC {\n" unless $opt eq 'txt';
+make_graph('_Document_');
+print "}\n" unless $opt eq 'txt';
+
+__END__
diff --git a/Master/texmf-dist/source/latex/stex/bin/sgraph b/Master/texmf-dist/source/latex/stex/bin/sgraph
new file mode 100755
index 00000000000..c4e709db476
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/sgraph
@@ -0,0 +1,173 @@
+#!/usr/bin/perl -w
+#######################################################################################
+# A tool for creating graphs of module usage patterns based on graphviz. #
+# Copyright (c) 2005, Ioan Sucan, released under the Gnu General Public License (GPL) #
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/sgraph$ #
+# $Date: 2005-10-04 19:31:43 +0200 (Tue, 04 Oct 2005) $ $Rev: 4376 $ #
+#######################################################################################
+
+use strict;
+
+use Getopt::Long;
+use Modparse;
+use Pod::Usage;
+
+my $input = "-", my $output = "out", my $format = "ps";
+my $root, my $stop_at_end=0, my $use_grouping = 0;
+my $rmdot = 0, my $verbose=0, my $theory = '', my $srange = '';
+my %arg_snippath; my @snippathList;
+
+sub group_name{
+ my ($st) = @_;
+ if ($st =~ /^(.*[\/\\])?([^\/\\]+)\.[^\.\/\\]*$/) { $st = $2; }
+ elsif ($st =~ /^(.*[\/\\])?([^\.\/\\]+)$/) { $st = $2; }
+ $st =~ s/-/_/g;
+ return $st; }
+
+GetOptions("output=s" => \$output,
+ "format=s" => \$format,
+ "nodot" => sub {$rmdot = 1;},
+ "root=s" => \$root,
+ "theory=s" => \$theory,
+ "sliderange=s" => \$srange,
+ "path=s" => \%arg_snippath,
+ "defpath=s" => \@snippathList,
+ "verbose" => sub {$verbose = 1;},
+ "grouping" => sub {$use_grouping = 1},
+ "stop" => sub {$stop_at_end = 1},
+ "help" => sub {pod2usage(2)});
+
+$output = $1 if ($output =~ m/([^.]+)\..*/);
+$input = $ARGV[0] if ($#ARGV>=0);
+$root = group_name($input) unless $root;
+
+
+my %data = (); my %group = ();
+my $mp = Modparse->new(snippathList=>\@snippathList,
+ snippath=>\%arg_snippath,
+ stopAtEnd=>$stop_at_end,
+ verbose=>$verbose,
+ onBegin=>sub { $_[0]->{perm}->{slide} = 0; $_[0]->{perm}->{linecount} = 0;
+ if ($srange =~ /(\d+)\:(\d+)/){
+ ($_[0]->{perm}->{sbegin}, $_[0]->{perm}->{send}) = ($1, $2);
+ $_[0]->{perm}->{in_sliderange} = ($_[0]->{perm}->{sbegin}<1);
+ } else { $_[0]->{perm}->{in_sliderange} = 1; }},
+ onBeginFile=>sub { $_[0]->{grp} = group_name($_[0]->{filename}); },
+ onBeginModule=>sub {
+ if ($_[0]->{perm}->{in_sliderange} && (my $id = $_[0]->{module_id})){
+ $id =~ s/[:-]/_/g;
+ my $uses = '';
+ if ($_[0]->{module_args} =~ /uses=(([\w-]+)|(\{[\w,-]+\}))/){
+ $uses = $1;
+ $uses =~ s/,/;/g; $uses =~ s/[:-]/_/g; }
+ $data{$id}=$uses;
+ $group{$id}=$_[0]->{perm}->{grp};
+ }},
+ onEveryLine=>sub {
+ $_[0]->{perm}->{linecount}++;
+ print ". " if ($_[0]->{pack}->{verbose} && ($_[0]->{perm}->{linecount} % 1000==0));
+ $_[0]->{perm}->{slide}++ if $_[0]->{simple_tex} =~ /\\begin\{slide\}/;
+ $_[0]->{perm}->{in_sliderange}=($_[0]->{perm}->{slide}<=$_[0]->{perm}->{send} &&
+ $_[0]->{perm}->{slide}>=$_[0]->{perm}->{sbegin})
+ if ($_[0]->{perm}->{sbegin} && $_[0]->{perm}->{send});
+ });
+
+print "\nGenerating graph...\n" if $verbose;
+
+$mp->execute($input);
+
+my @queue=();
+
+if ($theory){
+ $theory =~ s/-/_/g;
+ if ($data{$theory}){
+ my $start = 0, my $end = 1, my %already_in;
+ $queue[0] = $theory;
+ $already_in{$theory} = 1;
+ while ($start<$end){
+ my $idx, my $usesx;
+ $idx = $queue[$start];
+ $usesx = $data{$queue[$start]};
+ $start++;
+ if ($usesx){
+ $usesx =~ s/\{//;
+ $usesx =~ s/\}//;
+ foreach (split(/;/,$usesx)){
+ next if $already_in{$_};
+ $queue[$end] = $_;
+ $already_in{$_} = 1;
+ $end++;
+ }
+ }
+ }
+ }
+} else{
+ @queue = keys %data;
+}
+
+open(FOUT,">$output.dot") or die "Can't open output file\n";
+print FOUT "digraph TEX {\n";
+print FOUT "$root [shape=box];\n";
+
+if ($use_grouping){
+ my %subgraph = ();
+ foreach (@queue){
+ $subgraph{$group{$_}}.="$_;";
+ }
+ foreach my $subgr (keys %subgraph){
+ print FOUT "subgraph cluster_$subgr {\n";
+ print FOUT "color = blue;\n";
+ print FOUT "label = $subgr;\n";
+ print FOUT "$subgraph{$subgr}\n";
+ print FOUT "}\n";
+ }
+}
+
+my $lk = 0;
+for my $idx (@queue){
+ my $usesx = $data{$idx};
+ $lk=$lk+($usesx =~ tr/;//)+1;
+ if ($usesx){
+ print FOUT "$idx -> $usesx;\n";
+ } else {
+ print FOUT "$idx -> $root;\n";
+ }
+}
+
+print "Number of links: $lk\n" if $verbose;
+
+
+print FOUT "}\n";
+close(FOUT);
+
+`dot -T$format -o $output.$format $output.dot`;
+unlink "$output.dot" if ($rmdot==1);
+
+print "Done.\n" if $verbose;
+
+__END__
+
+=head1 SYNOPSIS
+
+sgraph <filename> [options]
+
+ <filename> .tex input file; stdin by default
+
+ Options:
+ --output output file; out.dot by default
+ --format output format; .ps by default; for available formats, see dot --help
+ --nodot do not generate .dot file, just target format
+ --root the 'root' of the graph. (name of course)
+ --theory generate a subgraph for the theory
+ --sliderange only look at the given slide range; (2:16 for example)
+ --path XXX specify the value of \XXX (some snippath) in case it is
+ = somePath not defined in the processed .tex file
+ --defpath XXX specify which \XXX (snippath definitions) to look for
+ --stop stop reading data when \end{document} is found, not at EOF
+ --grouping group modules within sections.
+ --verbose verbose on
+ --help this screen
+
+Example:
+./sgraph slides.tex -o graph -f ps -n -t TCN --sliderange 20:10000 -r GenCS -v
diff --git a/Master/texmf-dist/source/latex/stex/bin/sms b/Master/texmf-dist/source/latex/stex/bin/sms
new file mode 100755
index 00000000000..3d95e710180
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/sms
@@ -0,0 +1,146 @@
+#!/usr/bin/perl -w
+#######################################################################################
+# A tool for creating STeX Module Signatures (SMS) files. #
+# Copyright (c) 2005, Ioan Sucan; (c) 2010, Deyan Ginev,
+# released under the Gnu General Public License (GPL) #
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/sms$ #
+# $Date: 2006-10-22 20:01:47 +0200 (Sun, 22 Oct 2006) $ $Rev: 10669 $ #
+#######################################################################################
+
+use strict;
+use File::Spec::Functions qw(rel2abs);
+use File::Basename;
+use lib dirname(rel2abs($0)); #Assumption: Modparse is in the same folder as the sms binary.
+use Getopt::Long;
+use Modparse;
+use Pod::Usage;
+
+my $input = "-", my $verbose=0, my $stop_at_end=0; my $follow=0;
+my %arg_snippath; my @snippathList;
+
+# match {,} brackets that are not comments or special characters
+sub match{
+ my $data = shift;
+ my $b = 0, my $i = 0, my $ignore = 0 ;
+ foreach (split('',$data)){
+ $i++;
+ if ($ignore == 1){
+ $ignore = 0;
+ next;
+ }
+ if ($ignore == 2){
+ next if $_ ne "\n";
+ $ignore = 0;
+ next;
+ }
+ if ($_ eq "\\"){
+ $ignore = 1;
+ next;
+ }
+ if ($_ eq '%'){
+ $ignore = 2;
+ next;
+ }
+ $b++ if $_ eq '{';
+ $b-- if $_ eq '}';
+ return (substr($data,0,$i),substr($data,$i,length($data)-$i+1)) if !$b;
+ }
+ return ('',$data);
+}
+
+
+####### start of program #######
+
+GetOptions("verbose" => sub { $verbose=1; },
+ "stop" => sub { $stop_at_end=1; },
+ "path=s" => \%arg_snippath,
+ "defpath=s" => \@snippathList,
+ "help" => sub { pod2usage(2)},
+ "follow" => sub { $follow=1; });
+
+$input = $ARGV[0] if ($#ARGV>=0);
+
+my $mp = Modparse->new(snippathList=>\@snippathList,
+ snippath=>\%arg_snippath,
+ stopAtEnd=>$stop_at_end,
+ verbose=>$verbose,
+ follow=>$follow,
+ recursion=>0,
+ onBeginFile=>sub { @{$_[0]->{'sms'.$_[0]->{depth}}}=(); },
+ onBeginModule=>sub { push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original});
+ @{$_[0]->{'sms'.$_[0]->{depth}}}[-1] =~ s/\n$/%\n/; },
+ onEndModule=>sub { push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original});
+ @{$_[0]->{'sms'.$_[0]->{depth}}}[-1] =~ s/\n$/%\n/ },
+ onRecurse=>sub {
+ my $recurse = $_[0]->{original};
+ $recurse =~ s/include/exclude/g;
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $recurse); },
+ onEndFile=>sub {
+ my $file = $_[0]->{pack}->new_ext($_[0]->{filename},'.sms');
+ open(FOUT, ">$file") or die "Cannot write $file\n";
+ print FOUT @{$_[0]->{'sms'.$_[0]->{depth}}};
+ close(FOUT);
+ `touch $file` unless @{$_[0]->{'sms'.$_[0]->{depth}}};
+ print "Wrote $file\n" if $verbose; },
+ onEveryLine=>sub {
+ my @lines = @{$_[0]->{'sms'.$_[0]->{depth}}};
+ if ($_[0]->{in_module}){
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original})
+ if ($_[0]->{simple_tex} =~ /\\(symvariant|(sym|abbr|ell|key|listkey)def)\{([^\}]+)\}/ ||
+ $_[0]->{simple_tex} =~ /\\symdef\[([^\]]+)\]/);
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original})
+ if ($_[0]->{simple_tex} =~ /\\importmodule/);
+ if ($_[0]->{simple_tex} =~ /\\begin{importmodulevia}/) {
+ my $impvia = $_[0]->{original};
+ $impvia =~ s/\\begin\{importmodulevia\}/\\importmodule/g;
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $impvia);
+ }
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original})
+ if ($_[0]->{simple_tex} =~ /\\importOMDocmodule/);
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original})
+ if ($_[0]->{simple_tex} =~ /\\requiremodules/);
+ push(@{$_[0]->{'sms'.$_[0]->{depth}}}, $_[0]->{original})
+ if ($_[0]->{simple_tex} =~ /\\requirepackage/);
+ if ((/\\STRlabel\{([^\}]+)\}(\{.*)/) || (/\\STRsemantics\[([^\]]+)\](\{.*)/)){
+ my ($label, $line) = ($1, "$2 $_[0]->{comment}");
+ my ($matched, $rest) = (undef, undef);
+ while (1) {
+ ($matched, $rest) = match($line);
+ last if $matched;
+ $line.=$_[0]->{nextline}(); }
+ $_[0]->{rewriteline}($rest) if $rest;
+ $line = "\\STRlabeldef{$label}$matched"; chomp($line);
+ map(push(@{$_[0]->{'sms'.$_[0]->{depth}}},"$_\n"),split("\n",$line));
+ }
+ @{$_[0]->{'sms'.$_[0]->{depth}}}[-1] =~ s/\n$/%\n/
+ if (@lines < @{$_[0]->{'sms'.$_[0]->{depth}}});
+ }} );
+
+$mp->execute($input);
+
+print "Done.\n" if $verbose;
+
+
+__END__
+
+
+=head1 SYNOPSIS
+
+sms <input filename> [options]
+
+Options:
+
+ --verbose verbose on
+ --stop stop when \end{document} is found; default is to go on
+ --follow demands following \input|include|require statements (default:off)
+ --path XXX=somePath specify the value of \XXX (some snippath) in case it is
+ not defined in the processed .tex file
+ --defpath XXX specify which \XXX (snippath definitions) to look for
+ --help this screen
+
+Purpose:
+ Generate .sms files (STeX Module Signatures) from .tex files
+
+Example:
+ sms slides.tex -v
diff --git a/Master/texmf-dist/source/latex/stex/bin/stexml b/Master/texmf-dist/source/latex/stex/bin/stexml
new file mode 100755
index 00000000000..2c0586b9130
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/stexml
@@ -0,0 +1,2 @@
+exec latexmlc $1 --path=../../../stex/sty --path=../../../stex/rnc --path=../../../stex/rnc/omdoc --path=../../../stex/sty/modules --path=../../../stex/sty/statements --path=../../../stex/sty/sproof --path=../../../stex/sty/omtext --path=../../../stex/sty/omdoc --path=../../../stex/sty/sref --path=../../../stex/sty/presentation --path=../../../stex/sty/dcm --path=../../../stex/sty/reqdoc --path=../../../stex/sty/metakeys --path=../../../stex/sty/mikoslides --path=../../../stex/sty/problem --path=../../../stex/sty/assignment --path=../../../stex/sty/etc --path=../../../sty --path=../../../sty/ded --path=../../../sty/ed --local --mode=standard --destination=#dir/#name.tex.xml --postdest=#dir/#name.omdoc --log=#dir/#name.ltxlog --post --stylesheet=../../../stex/xsl/omdocpost.xsl \
+ --openmath --pmml \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/bin/stexmlmod b/Master/texmf-dist/source/latex/stex/bin/stexmlmod
new file mode 100755
index 00000000000..55dd1f6ab37
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/stexmlmod
@@ -0,0 +1,2 @@
+exec latexmlc --preamble=../../../lib/pre.tex $1 --path=../../../stex/sty --path=../../../stex/rnc --path=../../../stex/rnc/omdoc --path=../../../stex/sty/modules --path=../../../stex/sty/statements --path=../../../stex/sty/sproof --path=../../../stex/sty/omtext --path=../../../stex/sty/omdoc --path=../../../stex/sty/sref --path=../../../stex/sty/presentation --path=../../../stex/sty/dcm --path=../../../stex/sty/reqdoc --path=../../../stex/sty/metakeys --path=../../../stex/sty/mikoslides --path=../../../stex/sty/problem --path=../../../stex/sty/assignment --path=../../../stex/sty/etc --path=../../../sty --path=../../../sty/ded --path=../../../sty/ed --local --mode=fragment --destination=#dir/#name.tex.xml --postdest=#dir/#name.omdoc --log=#dir/#name.ltxlog --post --stylesheet=../../../stex/xsl/omdocpost.xsl \
+ --openmath --pmml
diff --git a/Master/texmf-dist/source/latex/stex/bin/termin b/Master/texmf-dist/source/latex/stex/bin/termin
new file mode 100755
index 00000000000..0589be09c2f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/bin/termin
@@ -0,0 +1,279 @@
+#!/usr/bin/perl -w
+
+#######################################################################################
+# A tool for automatized replacement of plain words with their \termin macros. #
+# Copyright (c) 2005, Ioan Sucan, released under the Gnu General Public License (GPL) #
+# see http://www.gnu.org/copyleft/gpl.html #
+# $URL: svn://kwarc.eecs.iu-bremen.de/repos/kwarc/projects/content/bin/termin$ #
+# $Date: 2005-10-04 17:47:41 +0200 (Tue, 04 Oct 2005) $ $Rev: 4371 $ #
+#######################################################################################
+
+use strict;
+
+use Getopt::Long;
+use Term::ANSIColor;
+use Pod::Usage;
+
+my $verbose = 0;
+my $wordDefs={}, my $twinDefs={}, my $atwinDefs={};
+
+use constant twin => 'T';
+use constant word => 'W';
+use constant atwin => 'A';
+
+my $before_chars = 128;
+my $after_chars = 128;
+
+sub loadDefs{
+ my ($tex_file) = @_;
+
+ # read file
+ open(FIN, $tex_file) or die "Cannot read $tex_file\n";
+ my @contentLines = <FIN>;
+ close(FIN);
+
+ my $content = join('',@contentLines);
+ $content =~ s/\s+//g;
+ $content =~ s/%[^\n]*\n//g;
+ pos($content) = 0;
+
+ my %modules = ();
+ while ($content =~ m/\\begin\{module\}\[([^\]]+)\]/g){
+ next unless $1 =~ /id=([^\],]+)/;
+ $modules{pos($content)} = $1;
+ }
+ my @posList = keys %modules;
+ my $modIndex, my $current_module;
+
+ # see definiens of form \definiens[bar]{foobar}
+ # word 'foobar', concept 'bar', within module 'foo'
+ pos($content) = 0; $modIndex = 0; $current_module = $modules{$posList[0]};
+ while ($content =~ m/\\definiens\[([^\]\-]+)\]\{([^\}]+)\}/g){
+ my $p = pos($content);
+ while ($modIndex < $#posList && $p > $posList[$modIndex+1]) {
+ $modIndex++; $current_module = $modules{$posList[$modIndex]}; }
+ push(@{$wordDefs->{modules}}, $current_module);
+ push(@{$wordDefs->{concepts}}, $1);
+ push(@{$wordDefs->{words}}, $2);
+ print word, " ==> $current_module: $1: $2\n" if $verbose>=2;
+ }
+
+ # see definiens of form \definiens[aaa-bbb]{\twin{ccc}{ddd}}
+ # words 'ccc ddd', concept 'aaa-bbb', within module 'foo'
+ pos($content) = 0; $modIndex = 0; $current_module = $modules{$posList[0]};
+ while ($content =~ m/\\definiens\[([^\-\]]+)\-([^\]]+)\]\{\\twin\{([^\}]+)\}\{([^\}]+)\}\}/g){
+ my $p = pos($content);
+ while ($modIndex < $#posList && $p > $posList[$modIndex+1]) {
+ $modIndex++; $current_module = $modules{$posList[$modIndex]}; }
+ push(@{$twinDefs->{modules}}, $current_module);
+ push(@{$twinDefs->{concepts}}, "$1-$2");
+ push(@{$twinDefs->{words}}, $3);
+ push(@{$twinDefs->{twins}}, $4);
+ print twin, " ==> $current_module: $1-$2: $3 $4\n" if $verbose>=2;
+ }
+
+ # \twindef{aaa}{bbb}
+ pos($content) = 0; $modIndex = 0; $current_module = $modules{$posList[0]};
+ while ($content =~ m/\\twindef\{([^\}]+)\}\{([^\}]+)\}/g){
+ my $p = pos($content);
+ while ($modIndex < $#posList && $p > $posList[$modIndex+1]) {
+ $modIndex++; $current_module = $modules{$posList[$modIndex]}; }
+ push(@{$twinDefs->{modules}}, $current_module);
+ push(@{$twinDefs->{concepts}}, "$1-$2");
+ push(@{$twinDefs->{words}}, $1);
+ push(@{$twinDefs->{twins}}, $2);
+ print twin, " ==> $current_module: $1-$2: $1 $2\n" if $verbose>=2;
+ }
+
+ # see definiens of form \definiens[aaa-bbb-ccc]{\twin{ddd}{eee}{fff}}
+ # words 'ddd eee fff', concept 'aaa-bbb-ccc', within module 'foo'
+ pos($content) = 0; $modIndex = 0; $current_module = $modules{$posList[0]};
+ while ($content =~ m/\\definiens\[([^\-\]]+)\-([^\-\]]+)\-([^\]]+)\]\{\\atwin\{([^\}]+)\}\{([^\}]+)\}\{([^\}]+)\}\}/g){
+ my $p = pos($content);
+ while ($modIndex < $#posList && $p > $posList[$modIndex+1]) {
+ $modIndex++; $current_module = $modules{$posList[$modIndex]}; }
+ push(@{$atwinDefs->{modules}}, $current_module);
+ push(@{$atwinDefs->{concepts}}, "$1-$2-$3");
+ push(@{$atwinDefs->{words}}, $4);
+ push(@{$atwinDefs->{twins}}, $5);
+ push(@{$atwinDefs->{adjs}}, $6);
+ print atwin, " ==> $current_module: $1-$2-$3: $4 $5 $6\n" if $verbose>=2;
+ }
+
+ # \atwindef{aaa}{bbb}{ccc}
+ pos($content) = 0; $modIndex = 0; $current_module = $modules{$posList[0]};
+ while ($content =~ m/\\atwindef\{([^\}]+)\}\{([^\}]+)\}\{([^\}]+)\}/g){
+ my $p = pos($content);
+ while ($modIndex < $#posList && $p > $posList[$modIndex+1]) {
+ $modIndex++; $current_module = $modules{$posList[$modIndex]}; }
+ push(@{$atwinDefs->{modules}}, $current_module);
+ push(@{$atwinDefs->{concepts}}, "$1-$2-$3");
+ push(@{$atwinDefs->{words}}, $1);
+ push(@{$atwinDefs->{twins}}, $2);
+ push(@{$atwinDefs->{adjs}}, $3);
+ print atwin, " ==> $current_module: $1-$2-$3: $1 $2 $3\n" if $verbose>=2;
+ }
+
+}
+
+sub max{
+ my ($max, @values) = @_;
+ foreach (@values) { $max = $_ if $_ gt $max;}
+ return $max;
+}
+
+sub nospace{
+ my ($str) = @_;
+ $str =~ s/\s+/ /g;
+ $str =~ s/^\s//;
+ $str =~ s/\s$//;
+ return $str;
+}
+
+sub replaceDefs{
+ my ($in_tex_file, $out_tex_file) = @_;
+
+ open(FIN, $in_tex_file) or die "Cannot read $in_tex_file\n";
+ my @content_lines = <FIN>;
+ close(FIN);
+
+ my $content = join('',@content_lines);
+ my $lcont = length($content);
+
+ local *go_word = sub {
+
+ my ($word, $new_word1_ex, $new_word2_ex) = @_;
+ $new_word2_ex = $new_word1_ex unless defined $new_word2_ex;
+
+ while ($content =~ m/([^\{\s]?)(\s*$word\s*)[^\}\s]?/gi){
+ my $p = pos($content);
+ my $ahead_len = length($1); my $matched_word = $2;
+ my $wlen = length($matched_word);
+ my $trail_len = length($&) - $wlen - $ahead_len;
+
+ if (($ahead_len != 0 || $trail_len != 0) ||
+ ($ahead_len == 0 && $trail_len == 0 && ($p == $wlen || $p == $lcont))){
+ my $start_pos = max(0, $p - $wlen - $trail_len - $before_chars);
+ my $new_word1 = $new_word1_ex; my $new_word2 = $new_word2_ex;
+
+ my $word_count = 0;
+ while ($matched_word =~ /\s*([^\s]+)\s*/g){
+ my $replace = $1;
+ $new_word1 =~ s/W%$word_count/$replace/g;
+ $new_word2 =~ s/W%$word_count/$replace/g;
+ $word_count++;
+ }
+
+ print "\nAnnotate '";
+ print color 'bold blue'; print nospace($matched_word); print color 'reset';
+ print "' with \n Y = '"; print color 'red bold'; print $new_word2;
+ print color 'reset'; print "'\n y = '"; print color 'red bold';
+ print $new_word1; print color 'reset'; print "'\n in: \n<<< ";
+ print color 'green';
+ print substr($content, $start_pos, $before_chars);
+ print color 'bold blue';
+ print substr($content, $start_pos + $before_chars, $wlen);
+ print color 'reset green';
+ print substr($content, $start_pos + $before_chars + $wlen, $after_chars);
+ print color 'reset';
+ print " >>> ?\n";
+ print "Options: <Y, y, [n]> ";
+
+ my $answer = <STDIN>;
+ chomp($answer);
+
+ if ($answer eq 'y'){
+ substr($content, $p - $wlen - $trail_len, $wlen) = $new_word1;
+ $lcont = length($content);
+ pos($content) = $p + length($new_word1) - $wlen;
+ print "PROGRESS: Matched text was replaced with '$new_word1'\n" if $verbose;
+ } elsif ($answer eq 'Y'){
+ substr($content, $p - $wlen - $trail_len, $wlen) = $new_word2;
+ $lcont = length($content);
+ pos($content) = $p + length($new_word2) - $wlen;
+ print "PROGRESS: Matched text was replaced with '$new_word2'\n" if $verbose;
+ }
+
+ }
+ pos($content) = $p - $trail_len;
+ }
+ };
+
+ my $we = "(s|(ing))?"; # word endings
+ if (defined $wordDefs->{words}){
+ my $wordDefsCount = $#{$wordDefs->{words}} + 1;
+ for (my $j = 0 ; $j < $wordDefsCount; $j++){
+ my $word = "${$wordDefs->{words}}[$j]$we";
+ my $new_word = " {\\termin[cd=${$wordDefs->{modules}}[$j],name=${$wordDefs->{concepts}}[$j]]".
+ "{W%0} ";
+ go_word($word, $new_word);
+ }
+ }
+
+ if (defined $twinDefs->{words}){
+ my $twinDefsCount = $#{$twinDefs->{words}} + 1;
+ for (my $j = 0 ; $j < $twinDefsCount; $j++){
+ my $word = "${$twinDefs->{words}}[$j]$we\\s+${$twinDefs->{twins}}[$j]$we";
+ my $new_word1 = " {\\termin[cd=${$twinDefs->{modules}}[$j],name=${$twinDefs->{concepts}}[$j]]".
+ "{W%0 W%1}} ";
+ my $new_word2 = " {\\termin[cd=${$twinDefs->{modules}}[$j],name=${$twinDefs->{concepts}}[$j]]".
+ "{\\twin{W%0}{W%1}}} ";
+ go_word($word, $new_word1, $new_word2);
+ }
+ }
+
+ if (defined $atwinDefs->{words}){
+ my $atwinDefsCount = $#{$atwinDefs->{words}} + 1;
+ for (my $j = 0 ; $j < $atwinDefsCount; $j++){
+ my $word = "${$atwinDefs->{words}}[$j]$we\\s+${$atwinDefs->{twins}}[$j]$we\\s+${$atwinDefs->{adjs}}[$j]$we";
+ my $new_word1 = " {\\termin[cd=${$atwinDefs->{modules}}[$j],name=${$atwinDefs->{concepts}}[$j]]".
+ "{W%0 W%1 W%2}} ";
+ my $new_word2 = " {\\termin[cd=${$atwinDefs->{modules}}[$j],name=${$atwinDefs->{concepts}}[$j]]".
+ "{\\atwin{W%0}{W%1}{W%2}}} ";
+ go_word($word, $new_word1, $new_word2);
+ }
+ }
+
+ open(FOUT, ">$out_tex_file") or die "Cannot write $out_tex_file\n";
+ print FOUT $content;
+ close(FOUT);
+
+}
+
+my @background, my @main, my @output;
+
+GetOptions("verbose" => sub {$verbose++;},
+ "background=s" => \@background,
+ "main=s" => \@main,
+ "output=s" => \@output,
+ "help" => sub { pod2usage(2)});
+
+foreach (@background) { loadDefs($_); }
+
+for (my $i = 0 ; $i <= $#main; $i++) {
+ replaceDefs($main[$i], $output[$i] || $main[$i]);
+}
+
+
+__END__
+
+=head1 SYNOPSIS
+
+termin [options]
+
+Options:
+
+ --verbose verbose on
+ --background background file to read \termin{} definitions from
+ --main main file to process
+ --output output file; the modified content of the main file will
+ be written here
+ --help this screen
+
+Purpose:
+ Read the \termin definitions from a background file and update a specific main file;
+ output will be written to the specified the output file.
+ Note: multiple background/main/output files may be specified.
+
+Example:
+ termin --background a.tex --background b.tex --main slides.tex --output new_slides.tex
diff --git a/Master/texmf-dist/source/latex/stex/cmath/cmath.dtx b/Master/texmf-dist/source/latex/stex/cmath/cmath.dtx
new file mode 100644
index 00000000000..413729e1c6f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/cmath/cmath.dtx
@@ -0,0 +1,352 @@
+% \iffalse meta-comment
+% An Infrastructure for Presenting Semantic Macros in sTeX
+% Copyright (C) 2004-2007 Michael Kohlhase, all rights reserved
+% This file is released under the LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/cmath/cmath.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{cmath}[2012/01/28 v0.1 inline content math]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float,amstext,alltt}
+\usepackage{modules,cmath,stex-logo}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: cmath.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/cmath/cmath.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{cmath.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{83}
+%
+% \changes{v0.1}{2011/01/24}{First Version with Documentation, extracted variables stuff
+% from \texttt{presentation.dtx}}
+% \GetFileInfo{cmath.sty}
+%
+% \MakeShortVerb{\|}
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\xml{\scsys{Xml}}
+% \def\mathml{\scsys{MathML}}
+% \def\omdoc{\scsys{OMDoc}}
+% \def\openmath{\scsys{OpenMath}}
+% \def\latexml{\scsys{LaTeXML}}
+% \def\perl{\scsys{Perl}}
+% \def\cmathml{Content-{\sc MathML}\index{Content {\sc MathML}}\index{MathML@{\sc MathML}!content}}
+% \def\activemath{\scsys{ActiveMath}}
+% \def\twin#1#2{\index{#1!#2}\index{#2!#1}}
+% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}}
+% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
+% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
+% \title{{\texttt{cmath.sty}}: An Infrastructure for building Inline Content Math in
+% {\stex}\thanks{Version {\fileversion} (last revised {\filedate})}}
+% \author{Michael Kohlhase \& Deyan Ginev\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \date{\today}
+% \maketitle
+%
+% \begin{abstract}
+% The |cmath| package is a central part of the {\stex} collection, a version of
+% {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX} documents semantically without
+% leaving the document format, essentially turning {\TeX/\LaTeX} into a document format
+% for mathematical knowledge management (MKM).
+%
+% This package supplies an infrastructure that allows to build content math expresions
+% (strict content MathML or OpenMath objects) in the text. This is needed whenever the
+% head symbols of expressions are variables and can thus not be treated via the
+% |\symdef| mechanism in \stex.
+% \end{abstract}
+%
+% \newpage\setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+%\section{Introduction}\label{sec:intro}
+%
+% \stex allows to build content math expressions via the |\symdef|
+% mechanism~\cite{KohAmb:smmssl:ctan} if their heads are constants. For instance, if we
+% have defined |\symdef{lt}[2]{#1<#2}| in the module |relation1|, then an invocation of
+% |\lt3a| will be transformed to
+% \begin{verbatim}
+% <OMA>
+% <OMS cd="relation1" name="lt"/>
+% <OMI>3</OMI>
+% <OMV name="a"/>
+% </OMA>
+% \end{verbatim}
+% If the head of the expression (i.e. the function symbol in this case) is a variable,
+% then we cannot resort to a |\symdef|, since that would define the functional equivalent
+% of a logical constant. Sometimes, {\latexml} can figure out that when we write $f(a,b)$
+% that $f$ is a function (especially, if we declare them to be via the |functions=| key in
+% the dominating statement environment~\cite{Kohlhase:smmtf:ctan}). But sometimes, we want
+% to be explicit, especially for $n$-ary functions and in the presence of elided elements
+% in argument sequences. A related problem is markup for complex variable names, such as
+% $x_{\text{left}}$ or $ST^*$.
+%
+% The |cmath| package supplies the {\LaTeX} bindings that allow us to
+% achieve this.
+%
+% \section{The User Interface}\label{sec:user}
+%
+% \subsection{Variable Names}\label{sec:inter:vname}
+%
+% In mathematics we often use complex variable names like $x'$, $g_n$, $f^1$,
+% $\widetilde\phi_i^j$ or even $foo$; for presentation-oriented {\LaTeX}, this is not a
+% problem, but if we want to generate content markup, we must show
+% explicitly that those are complex identifiers (otherwise the
+% variable name $foo$ might be mistaken for the product $f\cdot
+% o\cdot o$). In careful mathematical typesetting, |$sin$| is distinguished from |$\sin$|,
+% but we cannot rely on this effect for variable names.
+%
+% \DescribeMacro{\vname} |\vname| identifies a token sequence as a name, and allows the
+% user to provide an ASCII ({\xml}-compatible) identifier for it. The optional argument is
+% the identifier, and the second one the LaTeX representation. The identifier can also be
+% used with \DescribeMacro{\vname} |\vnref| for referencing. So, if we have used
+% |\vnname[xi]{x_i}|, then we can later use |\vnref{xi}| as a short name for
+% |\vname{x_i}|. Note that in output formats that are capable of generating structure
+% sharing, |\vnref{xi}| would be represented as a
+% cross-reference.\ednote{DG: Do we know whether using the same name
+% in two vname invocations, would refer to two instances of the same variable? Presumably so, since the names are the same? We should make this explicit in the
+% text. A different variable would e.g. have a name ``xi2'', but the same body}
+%
+% Since indexed variable names make a significant special case of complex identifiers, we
+% provides the macros \DescribeMacro{\livar}|\livar| that allows to mark up variables with
+% lower indices. If |\livar| is given an optional first argument, this is taken as a
+% name. Thus |\livar[foo]{x}1| is ``short'' for |\vname[foo]{x_1}|. The macros
+% \DescribeMacro{\livar}|\livar|, serve the analogous purpose for variables with upper
+% indices, and \DescribeMacro{\ulivar}|\ulivar| for upper and lower indices. Finally,
+% \DescribeMacro{\primvar}|\primvar| and \DescribeMacro{\pprimvar}|\pprimvar| do the same
+% for variables with primes and double primes (triple primes are bad style).
+%
+% \subsection{Applications}\label{sec:user:appl}
+%
+% To construct a content math application of the form $f(a_1,\ldots,a_n)$ with concrete
+% arrugments $a_i$ (i.e. without elisions), then we can use the
+% \DescribeMacro{\nappa}|\nappa| maro. If we have elisions in the arguments, then we have
+% to interpret the arguments as a sequence of argument constructors applied to the
+% respective positional indexes. We can mark up this situation with the
+% \DescribeMacro{\nappf}|\nappf| macro:
+% |\nappf{|\meta{fun}|}{|\meta{const}|}{|\meta{first}|}{|\meta{last}|}| where \meta{const}
+% is a macro for the constructor is presented as
+% $\meta{fun}(\meta{const}\meta{first},\ldots,\meta{const}\meta{last})$; see
+% Figure~\ref{fig:application} for a concrete example, and
+% Figure~\ref{fig:application-result}.\ednote{MK@MK: we need a meta-cd |cmath| with the
+% respective notation definition here. It is very frustrating that we cannot even really
+% write down the axiomatization of }
+%
+% \begin{figure}\centering
+% \begin{tabular}{|l|l|}\hline
+% \verb|\nappa{f}{a_1,a_2,a_3}| & $\nappa{f}{a_1,a_2,a_3}$\\\hline
+% \verb|\nappe{f}{a_1}{a_n}| & $\nappe{f}{a_1}{a_n}$\\\hline
+% \verb|\symdef{eph}[1]{e_{#1}^{\varphi(#1)}}\nappf{g}\eph14|
+% & $\def\foo#1{e_{#1}^{\varphi(#1)}}\nappf{g}\foo14$\\\hline
+% \verb|\nappli{f}a1n| & $\nappli{f}a1n$\\\hline
+% \end{tabular}
+% \caption{Application Macros}\label{fig:application}
+% \end{figure}
+%
+% For a simple elision in the argument list, we can use \DescribeMacro{\nappe}|\nappe|
+% macro: |\nappe{|\meta{fun}|}{|\meta{firstarg}|}{|\meta{lastarg}|}| will be formatted as
+% $\meta{fun}(\meta{firstarg},\ldots,\meta{lastarg})$. Note that this is quite unsemantic
+% (we have to guess the sequence), so the use of |\nappe| is discouraged.
+%
+% \begin{exfig}\centering
+% \begin{verbatim}
+% \symdef{eph}[1]{e_{#1}^{\phi(#1)}}
+% \nappf{g}\eph14
+% \end{verbatim}
+% currently generates
+% \begin{verbatim}
+% <OMA>
+% <OMS cd="cmath" name="apply-from-to"/>
+% <OMV name="g"/>
+% <OMBIND>
+% <OMS cd="fns1" name="lambda"/>
+% <OMBVAR><OMV name="x"/></OMBVAR>
+% <OMA><OMS cd="???" name="eph"/><OMV name="x"/></OMA>
+% </OMBIND>
+% <OMI>1</OMI>
+% <OMI>4</OMI>
+% </OMA>
+% \end{verbatim}
+% \caption{Application Macros}\label{fig:application-result}
+% \end{exfig}
+%
+% \subsection{Binders}\label{sec:user:bind}
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+%
+% \section{The Implementation}\label{sec:implementation}
+%
+% The |cmath| package generates to files: the {\LaTeX} package (all the code
+% between {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$}} and
+% {\textsf{$\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% For {\latexml}, we initialize the package inclusions.
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{we have no options at the moment}
+%
+% \begin{macrocode}
+%<*package>
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+
+% \subsection{Variable Names}\label{sec:impl:vname}
+%
+% \begin{macro}{\vname}
+% a name macro; the first optional argument is an identifier \meta{id}, this is standard
+% for {\LaTeX}, but for {\latexml}, we want to generate attributes
+% |xml:id="cvar.|\meta{id}|"| and |name="|\meta{id}|"|. However, if no id was given in
+% we default them to |xml:id="cvar.|\meta{count}|"| and
+% |name="name.cvar.|\meta{count}|"|.
+% \begin{macrocode}
+%<*package>
+\newcommand{\vname}[2][]{#2%
+\def\@opt{#1}%
+\ifx\@opt\@empty\else\expandafter\gdef\csname MOD@name@#1\endcsname{#2}\fi}
+%</package>
+%<*ltxml>
+# return: unique ID for variable
+sub cvar_id {
+ my ($id) = @_;
+ $id = ToString($id);
+ if (!$id) {
+ $id=LookupValue('cvar_id') || 0;
+ AssignValue('cvar_id', $id + 1, 'global'); }
+ "cvar.$id"; }#$
+DefConstructor('\vname[]{}',
+ "<ltx:XMWrap role='ID' xml:id='&cvar_id(#1)'>#2</ltx:XMWrap>",
+ requireMath=>1);
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\vnref}
+% \begin{macrocode}
+%<*package>
+\def\vnref#1{\csname MOD@name@#1\endcsname}
+%</package>
+%<*ltxml>
+# \vnref{<reference>}
+DefMacro('\vnref{}','\@XMRef{cvar.#1}');
+
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+% \ednote{the following macros are just ideas, they need to be implemented and documented}
+% \begin{macro}{\uivar}
+% constructors for variables.
+% \begin{macrocode}
+%<*package>
+\newcommand{\primvar}[2][]{\vname[#1]{#2^\prime}}
+\newcommand{\pprimvar}[2][]{\vname[#1]{#2^{\prime\prime}}}
+\newcommand{\uivar}[3][]{\vname[#1]{{#2}^{#3}}}
+\newcommand{\livar}[3][]{\vname[#1]{{#2}_{#3}}}
+\newcommand{\ulivar}[4][]{\vname[#1]{{#2}^{#3}_{#4}}}
+%</package>
+%<*ltxml>
+# variants for declaring variables
+DefMacro('\uivar[]{}{}', '\vname[#1]{{#2}^{#3}}');
+DefMacro('\livar[]{}{}', '\vname[#1]{{#2}_{#3}}');
+DefMacro('\ulivar[]{}{}{}', '\vname[#1]{{#2}^{#3}_{#4}}');
+DefMacro('\primvar[]{}', '\vname[#1]{#2^\prime}');
+DefMacro('\pprimvar[]{}', '\vname[#1]{#2^{\prime\prime}}');
+
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Applications}\label{sec:impl:appl}
+%
+% \begin{macro}{\napp*}
+% \begin{macrocode}
+%<*package>
+\newcommand\nappa[2]{#1\left(#2\right)}
+\newcommand\nappe[3]{\nappa{#1}{#2,\ldots,#3}}
+\newcommand\nappf[4]{\nappe{#1}{#2{#3}}{#2{#4}}}
+\newcommand\nappli[4]{\nappe{#1}{#2_{#3}}{#2_{#4}}}
+\newcommand\nappui[4]{\nappe{#1}{#2^{#3}}{#2^{#4}}}
+%</package>
+%<*ltxml>
+# \nappa{<function>}{<(const)(,\1)*>}
+# @#1(#2)
+DefConstructor('\nappa{}{}',
+ "<ltx:XMApp>"
+ ."<ltx:XMTok meaning='#1' />"
+ ."<ltx:XMArg>#2</ltx:XMArg>"
+ ."</ltx:XMApp>");
+
+# \@napp@seq{<function>}{start <const>}{end <const>}
+# @#1(@sequence(#2,sequencefromto,#3))
+DefConstructor('\@napp@seq{}{}{}',
+ "<ltx:XMApp>"
+ ."<ltx:XMTok meaning='#1' />"
+ ."<ltx:XMArg>"
+ ."<ltx:XMApp>"
+ ."<ltx:XMTok meaning='sequence' />"
+ ."<ltx:XMArg>#2</ltx:XMArg>"
+ ."<ltx:XMArg><ltx:XMTok meaning='sequencefromto' /></ltx:XMArg>"
+ ."<ltx:XMArg>#3</ltx:XMArg>"
+ ."</ltx:XMApp>"
+ ."</ltx:XMArg>"
+ ."</ltx:XMApp>");
+
+DefMacro('\nappe{}{}{}', '\@napp@seq{#1}{#2}{#3}');
+DefMacro('\nappf{}{}{}{}', '\@napp@seq{#1}{#2{#3}}{#2{#4}}');
+DefMacro('\nappli{}{}{}{}', '\@napp@seq{#1}{#2_{#3}}{#2_{#4}}');
+DefMacro('\nappui{}{}{}{}', '\@napp@seq{#1}{#2^{#3}}{#2^{#4}}');
+
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Binders}\label{sec:impl:bind}
+%
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+%
diff --git a/Master/texmf-dist/source/latex/stex/cmath/cmath.ins b/Master/texmf-dist/source/latex/stex/cmath/cmath.ins
new file mode 100644
index 00000000000..665c29b6cae
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/cmath/cmath.ins
@@ -0,0 +1,38 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex cmath.ins
+%%
+%% Copyright(c) 2011 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{cmath.sty}{\from{cmath.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{cmath.sty.ltxml}{\from{cmath.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/cmathml/cmathml.dtx b/Master/texmf-dist/source/latex/stex/cmathml/cmathml.dtx
new file mode 100644
index 00000000000..d00784d6c24
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/cmathml/cmathml.dtx
@@ -0,0 +1,2503 @@
+% \iffalse meta-comment
+% Semantic Macros for Content MathML in LaTeX
+% Copyright (c) 2006 Michael Kohlhase, all rights reserved
+% this file is released under the
+% Gnu Library Public Licences (LGPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/cmathml/cmathml.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{cmathml}[2012/01/28 v1.0 CMathML Bindings]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float,amsfonts,a4wide}
+\usepackage{stex-logo,cmathml,cmathmlx,presentation}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: cmathml.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/cmathml/cmathml.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{cmathml.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{1586}
+%
+% \changes{v0.1}{2006/01/10}{Initial Version}
+% \changes{v0.2}{2006/01/16}{Added big operators}
+% \changes{v1.0}{2010/06/18}{Declared complete}
+%
+% \GetFileInfo{cmathml.sty}
+%
+% \MakeShortVerb{\|}
+%
+% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \newenvironment{pcmtab}[1][5cm]{\begin{center}\begin{tabular}{|l|l|p{#1}|l|}\hline%
+% macro & args & Example & Result\\\hline\hline}%
+% {\end{tabular}\end{center}}
+% \newenvironment{cmtab}{\begin{center}\begin{tabular}{|l|l|l|l|}\hline%
+% macro & args & Example & Result\\\hline\hline}%
+% {\end{tabular}\end{center}}
+%
+% \def\snippet#1{\hbox{\ttfamily{#1}}}
+% \def\xml{{\scsys{Xml}}}
+% \def\xslt{{\scsys{xslt}}}
+% \def\element#1{{\ttfamily{#1}}}
+% \def\mathml{{\scshape{MathML}}\index{MathML}}
+% \def\latexml{\hbox{{\LaTeX}ML}\index{LaTexML}}
+% \def\twin#1#2{\index{#1!#2}\index{#2!#1}}
+% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}}
+% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
+% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
+%
+% \title{{\texttt{cmathml.sty}}: A {\TeX/\LaTeX}-based Syntax for Content
+% {\mathml}\thanks{Version {\fileversion} (last revised {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |cmathml| package is part of the {\stex} collection, a version of {\TeX/\LaTeX}
+% that allows to markup {\TeX/\LaTeX} documents semantically without leaving the
+% document format, essentially turning {\TeX/\LaTeX} into a document format for
+% mathematical knowledge management (MKM).
+%
+% This package provides a collection of semantic macros for content {\mathml} and their
+% {\latexml} bindings. These macros form the basis of a naive translation from
+% semantically preloaded {\LaTeX} formulae into the content {\mathml} formulae via the
+% {\latexml} system.
+% \end{abstract}
+%
+% \newpage\tableofcontents\newpage
+%
+%\section{Introduction}\label{sec:intro}
+%
+% This document describes the collection of semantic macros for content {\mathml} and
+% their {\latexml} bindings. These macros can be used to mark up mathematical formulae,
+% exposing their functional/logical structure. This structure can be used by MKM systems
+% for added-value services, either directly from the {\sTeX} sources, or after
+% translation. Even though it is part of the {\stex} collection, it can be used
+% independently. Note that this documentation of the package presupposes the discussion of
+% the {\stex} collection to be self-contained.
+%
+% \subsection{Encoding Content {\mathml} in {\TeX/\LaTeX}}\label{sec:encoding}
+%
+% The |cmathml| packge presented here addresses part of transformation problem: representing
+% mathematical formulae in the {\LaTeX} workflow, so that content {\mathml} representations
+% can be derived from them. The underlying problem is that run-of-the-mill {\TeX/\LaTeX}
+% only specifies the presentation (i.e. what formulae look like) and not their content
+% (their functional structure). Unfortunately, there are no good methods (yet) to infer the
+% latter from the former, but there are ways to get presentation from content.
+%
+% The solution to this problem is to dump the extra work on the author (after all she knows
+% what she is talking about) and give them the chance to specify the intended structure. The
+% markup infrastructure supplied by the |cmathml| package lets the author do this without
+% changing the visual appearance, so that the {\LaTeX} workflow is not disrupted.
+%
+% To use these |cmathml| macros in a {\LaTeX} document, you will have to include the
+% |cmathml| package using |\usepackage{cmathml}| somewhere in the document preamble. Then
+% you can use the macros
+% \begin{verbatim}
+% $\Ceq{\Cexp{\Ctimes{\Cimaginaryi,\Cpi}},\Cuminus{\Ccn{1}}}$
+% \end{verbatim}
+% which will result in $e^{i\pi}=-1$ when the document is formatted in {\LaTeX}. If the
+% document is converted to {\xml} using the {\latexml} conversion tool, then the result
+% will be content {\mathml} representation:
+%
+%\begin{exfig}
+% \begin{verbatim}
+% <math xmlns="http://www.w3.org/1998/Math/MathML">
+% <apply>
+% <eq/>
+% <apply>
+% <exp/>
+% <apply><times><imaginaryi/><pi/></times></apply>
+% </apply>
+% <apply><minus/><cn>1</cn></apply>
+% </apply>
+% </math>
+% \end{verbatim}\vspace*{-.6cm}
+% \caption{Content {\mathml} Form of $e^{i\pi}=-1$}\label{fig:cmathml-eip}
+% \end{exfig}
+%
+% \subsection{Changing the {\TeX/\LaTeX} Presentation}\label{sec:changing}
+%
+% It is possible to change the default presentation (i.e. the result under {\LaTeX}
+% formatting): The semantic macros only function as interface control sequences, which
+% call an internal macro that does the actual presentation. Thus we simply have to
+% redefine the internal macro to change the presentation. This is possible locally or
+% globally in the following way:
+% \begin{verbatim}
+% \makeatletter
+% \gdef\CMathML@exp#1{exp(#1)}
+% \def\CMathML@pi{\varpi}
+% \makeatother
+% \end{verbatim}
+%
+% The first line is needed to lift the {\LaTeX} redefinition protection for internal
+% macros (those that contain the $\snippet{\@}$ character), and the last line restores it
+% for the rest of the document. The second line has a {\em{global}} (i.e. the presentation
+% will be changed from this point on to the end of the document.) redefinition of the
+% presentation of the exponential function in the {\LaTeX} output. The third line has a
+% {\em{local}} redefinition of the presentation (i.e. in the local group induced by
+% {\LaTeX}'s $\snippet{begin}/\snippet{end}$ grouping or by {\TeX}'s grouping induced by
+% curly braces). Note that the argument structure has to be respected by the presentation
+% redefinitions. Given the redefinitions above, our equation above would come out as
+% $exp(i\varpi)=-1$.
+%
+% \subsection{The Future: Heuristic Parsing}\label{sec:future}
+%
+% The current implementation of content {\mathml} transformation from {\LaTeX} to
+% {\mathml} lays a heavy burden on the content author: the {\LaTeX} source must be
+% semantically preloaded --- the structure of the formulae must be fully annotated. In our
+% example above, we had to write {|\Ceq{A,B}|} instead of the more conventional (and more
+% legible) {|A=B|}.\ednote{come up with a good mixed example}
+%
+% The reason for this is that this keeps the transformation to content {\mathml} very
+% simple, predictable and robust at the expense of authoring convenience. The
+% implementation described in this module should be considered as a first step and
+% fallback solution only. Future versions of the $\latexml$ tool will feature more
+% intelligent solutions for determining the implicit structure of more conventional
+% mathematical notations (and {\LaTeX} representations), so that writing content {\mathml}
+% via {\LaTeX} will become less tedious.
+%
+% However, such more advanced techniques usually rely on linguistic, structural, and
+% semantic information about the mathematical objects and their preferred
+% representations. They tend to be less predictable to casual users and may lead to
+% semantically unexpected results.\ednote{talk about sTeX and extensibility in
+% MathML/OpenMath/OMDoc}
+%
+% \newpage
+% \section{The User Interface}\label{sec:modules}
+%
+% We will now tabulate the semantic macros for the Content {\mathml} elements. We have
+% divided them into modules based on the sectional structure of the {\mathml}2
+% recommendation ($2^{nd}$ edition). Before we go into the specific elements one-by-one,
+% we will discuss some general properties of the |cmatml| macros and their {\latexml}
+% bindings.
+%
+% \subsection{Generalities of the Encoding}\label{sec:generalities}
+%
+% The semantic macros provided by the |cmatml| package differ mainly in the way they treat
+% their arguments. The simplest case are those for constants~\ref{sec:constants} that do
+% not take any. Others take one, two, three, or even four arguments, which have to be
+% {\TeX} tokens or have to be wrapped in curly braces. For operators that are associative
+% {\twin{associative}{operator}} like addition the argument sequence is provided as a
+% single {\TeX} argument (wrapped in curly braces) that contains a comma-separated
+% sequence of arguments (wrapped in curly braces where necessary).
+%
+% \DescribeMacro{\Capply} The current setup of the |cmathml| infrastructure minimizes the
+% need of specifying the {\mathml} {\element{apply}} element, since the macros are all in
+% applied form: As we have seen in the example in the Introduction~\ref{sec:intro}, a
+% macro call like {|\Cexp{A}|} corresponds to the application of the exponential function
+% to some object, so the necessary {\element{apply}} elements in the {\mathml}
+% representation are implicit in the {\LaTeX} formulation and are thus added by the
+% transformation. Of course this only works, if the function is a content {\mathml}
+% element. Often, in mathematics we will have situations, where the function is a variable
+% (or ``arbitrary but fixed'') function. Then the formula $f(x)$ represented as |$f(x)$|
+% in {\TeX} could (and sometimes will) be misunderstood by the Math parser as $f\cdot x$,
+% i.e. a product of the number $f$ with the number $x$, where $x$ has brackets for some
+% reason. In this case, we can disambiguate by using |\Capply{f}x|, which will also format
+% as $f(x)$.\ednote{what about $n$-ary functions?}
+%
+% By the same token, we do not need to represent the qualifier elements
+% {\element{condition}} and {\element{domainofapplication}}\footnote{We do not support the
+% {\element{fn}} element as it is deprecated in {\mathml}2 and the {\element{declare}}
+% and {\element{sep}} elements, since their semantic status is unclear (to the author,
+% if you feel it is needed, please gripe to me).}, for
+% {\twintoo{binding}{operator}s}. They are are folded into the special forms of the
+% semantic macros for the binding operators below (the ones with the {|Cond|} and {|DA|}
+% endings):
+%
+% For operators that are {\index*{associative}}, {\index*{commutative}}, and
+% {\index*{idempotent}} ({\index*{ACI}} i.e. {\index*{bracketing}},
+% order\twin{argument}{order}, and {\index*{multiplicity}} of arguments does not matter)
+% {\mathml} supplies the a special form of application as a binding operator (often called
+% the corresponding ``{\twintoo{big}{operator}})'', which ranges over a whole set of
+% arguments. For instance for the ACI operator $\cup$ for set union has the ``big''
+% operator for unions over collections of sets e.g. used in the power set
+% $\bigcup_{S\subseteq T}S$ of a set $T$. In some cases, the ``big'' operators are
+% provided independently by {\mathml}, e.g. the ACI addition operator has the sum operator
+% as a corresponding ``big operator'': $\sum_{x\in\Cnaturalnumbers}{x^i}$ is the sum of
+% the powers of $x$ for all natural numbers. Where they are not, we will supply extra
+% macros in the |cmathml| package, e.g. the |\CUnion| macro as the big operator for
+% |\Cunion|.
+%
+% Finally, some of the binding operators have multiple content models flagged by the
+% existence of various modifier elements. In these cases, we have provided different
+% semantic macros for the different cases.
+%
+% \subsection{The Token Elements}\label{sec:tokens}
+%
+% The {\mathml} token elements are very simple containers that wrap some presentation
+% {\mathml} text. The {\element{csymbol}} element is the extension element in
+% {\mathml}. It's content is the presentation of symbol, and it has a |definitionURL|
+% attribute that allows to specify a URI that specifies the semantics of the symbol. This
+% URL can be specified in an optional argument to the |\Ccsymbol| macro, in accordance
+% with usual mathematical practice, the |definitionURL| is not presented.
+% \DescribeMacro{\Ccn}\DescribeMacro{\Cci}\DescribeMacro{\Ccsymbol}
+% \begin{cmtab}
+% |\Ccn| & token & |\Ccn{t}| & $\Ccn{t}$\\\hline
+% |\Cci| & token & |\Cci{t}| & $\Cci{t}$\\\hline
+% |\Ccsymbol| & token, URI & |\Ccsymbol[http://w3.org]{t}|
+% & $\Ccsymbol[http://w3.org]{t}$\\\hline
+% \end{cmtab}
+% Like the |\Ccsymbol| macro, all other macros in the |camthml| package take an optional
+% argument\footnote{This may change into a KeyVaL argument in future versions of the
+% |cmathml| package.} for the |definitionURL| attribute in the corresponding {\mathml}
+% element.
+%
+%\newpage
+% \subsection{The Basic Content Elements}\label{sec:basic}
+%
+% The basic elements comprise various pieces of the {\mathml} infrastructure. Most of the
+% semantic macros in this section are relatively uneventful.
+%
+% \DescribeMacro{\Cinverse}\DescribeMacro{\Ccompose}\DescribeMacro{\Cident}
+% \DescribeMacro{\Cdomain}\DescribeMacro{\Ccodomain}\DescribeMacro{\Cimage}
+% \begin{cmtab}
+% |\Cinverse| & 1 & |\Cinverse{f}| & $\Cinverse{f}$\\\hline
+% |\Ccompose| & 1 & |\Ccompose{f,g,h}| & $\Ccompose{f,g,h}$\\\hline
+% |\Cident| & 0 & |\Cident| & $\Cident$\\\hline
+% |\Cdomain| & 1 & |\Cdomain{f}| & $\Cdomain{f}$\\\hline
+% |\Ccodomain| & 1 & |\Ccodomain{f}| & $\Ccodomain{f}$\\\hline
+% |\Cimage| & 1 & |\Cimage{f}| & $\Cimage{f}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Clambda}\DescribeMacro{\ClambdaDA}\DescribeMacro{\Crestrict} For the
+% {\element{lambda}} element, we only have the {\element{domainofapplication}} element, so
+% that we have three forms a $\lambda$-construct can have. The first one is the simple one
+% where the first element is a bound variable. The second one restricts the applicability
+% of the bound variable via a {\element{domainofapplication}} element, while the third one
+% does not have a bound variable, so it is just a function restriction
+% operator.\ednote{need ClambdaCond}
+%
+% \begin{cmtab}
+% |\Clambda| & 2 & |\Clambda{x,y}{A}| & $\Clambda{x,y}{A}$\\\hline
+% |\ClambdaDA| & 3 & |\ClambdaDA{x}{C}{A}| & $\ClambdaDA{x,y}{C}{A}$\\\hline
+% |\Crestrict| & 2 & |\Crestrict{f}{S}| & $\Crestrict{f}{S}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{ccinterval}\DescribeMacro{cointerval}
+% \DescribeMacro{ocinterval}\DescribeMacro{oointerval}
+% The {\element{interval}} constructor actually represents four types of intervals in
+% {\mathml}. Therefore we have four semantic macros, one for each combination of open and
+% closed endings:
+% \begin{cmtab}
+% |\Cccinterval| & 2 & |\Cccinterval{1}{2}| & $\Cccinterval{1}{2}$\\\hline
+% |\Ccointerval| & 2 & |\Ccointerval{1}{2}| & $\Ccointerval{1}{2}$\\\hline
+% |\Cocinterval| & 2 & |\Cocinterval{1}{2}| & $\Cocinterval{1}{2}$\\\hline
+% |\Coointerval| & 2 & |\Coointerval{1}{2}| & $\Coointerval{1}{2}$\\\hline
+% \end{cmtab}
+%
+%\DescribeMacro{\Cpiecewise}\DescribeMacro{\Cpiece}\DescribeMacro{\Cotherwise}
+% The final set of semantic macros are concerned with piecewise definition of functions.
+% \begin{cmtab}
+% |\Cpiecewise| & 1 & see below & see below\\\hline
+% |\Cpiece| & 2 & |\Cpiece{A}{B}| & $\begin{array}{ll}\Cpiece{A}{B}\end{array}$\\\hline
+% |\Cotherwise| & 1 & |\Cotherwise{B}| & $\begin{array}{ll}\Cotherwise{1}\end{array}$\\\hline
+% \end{cmtab}
+%
+% For instance, we could define the abstract value function on the reals with the following
+% markup
+%
+% \begin{center}
+% \begin{tabular}{|l|l|}\hline
+% Semantic Markup & Formatted\\\hline
+% \begin{minipage}{8cm}\footnotesize
+% \begin{verbatim}
+% \Ceq{\Cabs{x},
+% \Cpiecewise{\Cpiece{\Cuminus{x}}{\Clt{x,0}}
+% \Cpiece{0}{\Ceq{x,0}}
+% \Cotherwise{x}}}
+% \end{verbatim}
+% \end{minipage} &
+% $\Ceq{\Cabs{x},\Cpiecewise{\Cpiece{\Cuminus{x}}{\Clt{x,0}}
+% \Cpiece{0}{\Ceq{x,0}}
+% \Cotherwise{x}}}$
+% \\\hline
+% \end{tabular}
+% \end{center}
+%
+% \newpage
+% \subsection{Elements for Arithmetic, Algebra, and Logic}\label{sec:arith}
+%
+% This section introduces the infrastructure for the basic arithmetic operators. The first
+% set is very simple
+%
+% \DescribeMacro{\Cquotient}\DescribeMacro{\Cfactorial}\DescribeMacro{\Cdivide}
+% \DescribeMacro{\Cminus}\DescribeMacro{\Cplus}\DescribeMacro{\Cpower}
+% \DescribeMacro{\Crem}\DescribeMacro{\Ctimes}\DescribeMacro{\Croot}
+% \begin{cmtab}
+% |\Cquotient| & 2 & |\Cquotient{1}{2}| & $\Cquotient{1}{2}$\\\hline
+% |\Cfactorial| & 1 & |\Cfactorial{7}| & $\Cfactorial{7}$\\\hline
+% |\Cdivide| & 2 & |\Cdivide{1}{2}| & $\Cdivide{1}{2}$\\\hline
+% |\Cminus| & 2 & |\Cminus{1}{2}| & $\Cminus{1}{2}$\\\hline
+% |\Cplus| & 1 & |\Cplus{1}| & $\Cplus{1}$\\\hline
+% |\Cpower| & 2 & |\Cpower{x}{2}| & $\Cpower{x}{2}$\\\hline
+% |\Crem| & 2 & |\Crem{7}{2}| & $\Crem{7}{2}$\\\hline
+% |\Ctimes| & 1 & |\Ctimes{1,2,3,4}| & $\Ctimes{1,2,3,4}$\\\hline
+% |\Croot| & 2 & |\Croot{3}{2}| & $\Croot{3}{2}$\\\hline
+% \end{cmtab}
+%
+% The second batch below is slightly more complicated, since they take a set of
+% arguments. In the |cmathml| package, we treat them like {\index*{associative}}
+% operators, i.e. they act on a single argument that contains a sequence of
+% comma-separated arguments\ednote{implement this in the latexml side}
+%
+% \DescribeMacro{\Cmax}\DescribeMacro{\Cmin}\DescribeMacro{\Cgcd}\DescribeMacro{\Clcm}
+% \begin{cmtab}
+% |\Cmax| & 1 & |\Cmax{1,3,6}| & $\Cmax{1,3,6}$\\\hline
+% |\Cmin| & 1 & |\Cmin{1,4,5}| & $\Cmin{1,4,7}$\\\hline
+% |\Cgcd| & 1 & |\Cgcd{7,3,5}| & $\Cgcd{7,3,5}$\\\hline
+% |\Clcm| & 1 & |\Clcm{3,5,4}| & $\Clcm{3,5,4}$\\\hline
+% \end{cmtab}
+%
+% The operators for the logical connectives are associative as well\ednote{maybe add some
+% precedences here.}. Here, conjunction, (exclusive) disjunction are $n$-ary associative
+% operators, therefore their semantic macro only has one {\TeX} argument which contains a
+% comma-separated list of subformulae.
+% \DescribeMacro{\Cand}\DescribeMacro{\Cor}\DescribeMacro{\Cxor}\DescribeMacro{\Cnot}
+% \DescribeMacro{\Cimplies}
+% \begin{cmtab}
+% |\Cand| & 1 & |\Cand{A,B,C}| & $\Cand{A,B,C}$\\\hline
+% |\Cor| & 1 & |\Cor{A,B,C}| & $\Cor{A,B,C}$\\\hline
+% |\Cxor| & 1 & |\Cxor{A,B,C}| & $\Cxor{A,B,C}$\\\hline
+% |\Cnot| & 1 & |\Cnot{A}| & $\Cnot{A}$\\\hline
+% |\Cimplies| & 2 & |\Cimplies{A}{B}| & $\Cimplies{A}{B}$\\\hline
+% \end{cmtab}
+%
+% The following are the corresponding big operators, where appropriate.
+% \DescribeMacro{\CAndDA}\DescribeMacro{\CAndCond}
+% \DescribeMacro{\COrDA}\DescribeMacro{\COrCond}
+% \DescribeMacro{\CXorDA}\DescribeMacro{\CXorCond}
+% \begin{cmtab}
+% |\CAndDA| & 2 & |\CAndDA\Cnaturalnumbers\phi| & $\CAndDA\Cnaturalnumbers\phi$\\\hline
+% |\CAndCond| & 3 & |\CAndCond{x}{\Cgt{x}5}{\psi(x)}|
+% & $\CAndCond{x}{\Cgt{x}5}{\psi(x)}$\\\hline
+% |\COrDA| & 2 & |\COrDA\Cnaturalnumbers\phi| & $\COrDa\Cnaturalnumbers\phi$\\\hline
+% |\COrCond| & 3 & |\COrCond{x}{\Cgt{x}5}{\psi(x)}|
+% & $\COrCond{x}{\Cgt{x}5}{\psi(x)}$\\\hline
+% |\CXorDA| & 2 & |\CXorDA\Cnaturalnumbers\phi| & $\CXorDA\Cnaturalnumbers\phi$\\\hline
+% |\CXorCond| & 3 & |\CXorCond{x}{\Cgt{x}5}{\psi(x)}|
+% & $\CXorCond{x}{\Cgt{x}5}{\psi(x)}$\\\hline
+% \end{cmtab}
+%
+% The semantic macros for the quantifiers come in two forms: with- and without a condition
+% qualifier. In a restricted quantification of the form $\forall x,C:A$, the bound variable
+% $x$ ranges over all values, such that $C$ holds ($x$ will usually occur in the condition
+% $C$). In an unrestricted quantification of the form $\forall x:A$, the bound variable
+% ranges over all possible values for $x$.
+% \DescribeMacro{\Cforall}\DescribeMacro{\CforallCond}
+% \DescribeMacro{\Cexists}\DescribeMacro{\CexistsCond}
+% \begin{cmtab}
+% |\Cforall| & 2 & |\Cforall{x,y}{A}| & $\Cforall{x,y}{A}$\\\hline
+% |\CforallCond| & 3 & |\CforallCond{x}{C}{A}| & $\CforallCond{x}{C}{A}$\\\hline
+% |\Cexists| & 2 & |\Cexists{x,y}{A}| & $\Cexists{x,y}{A}$\\\hline
+% |\CexistsCond| & 3 & |\CexistsCond{x}{C}{A}| & $\CexistsCond{x}{C}{A}$\\\hline
+% \end{cmtab}
+%
+% The rest of the operators are very simple in structure.
+% \DescribeMacro{\Cabs}\DescribeMacro{\Cconjugate}\DescribeMacro{\Carg}
+% \DescribeMacro{\Creal}\DescribeMacro{\Cimaginary}\DescribeMacro{\Cfloor}
+% \DescribeMacro{\Cceiling}
+% \begin{cmtab}
+% |\Cabs| & 1 & |\Cabs{x}| & $\Cabs{x}$\\\hline
+% |\Cconjugate| & 1 & |\Cconjugate{x}| & $\Cconjugate{x}$\\\hline
+% |\Carg| & 1 & |\Carg{x}| & $\Carg{x}$\\\hline
+% |\Creal| & 1 & |\Creal{x}| & $\Creal{x}$\\\hline
+% |\Cimaginary| & 1 & |\Cimaginary{x}| & $\Cimaginary{x}$\\\hline
+% |\Cfloor| & 1 & |\Cfloor{1.3}| & $\Cfloor{1.3}$\\\hline
+% |\Cceiling| & 1 & |\Cceiling{x}| & $\Cceiling{x}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Relations}\label{sec:rels}
+%
+% The relation symbols in {\mathml} are mostly $n$-ary associative operators (taking a
+% comma-separated list as an argument).
+%
+% \DescribeMacro{\Ceq}\DescribeMacro{\Cneq}\DescribeMacro{\Cgt}\DescribeMacro{\Clt}
+% \DescribeMacro{\Cgeq}\DescribeMacro{\Cleq}\DescribeMacro{\Cequivalent}
+% \DescribeMacro{\Capprox}\DescribeMacro{\Cfactorof}
+% \begin{cmtab}
+% |\Ceq| & 1 & |\CeqA,B,C| & $\Ceq{A,B,C}$\\\hline
+% |\Cneq| & 2 & |\Cneq{1}{2}| & $\Cneq{1}{2}$\\\hline
+% |\Cgt| & 1 & |\Cgt{A,B,C}| & $\Cgt{A,B,C}$\\\hline
+% |\Clt| & 1 & |\Clt{A,B,C}| & $\Clt{A,B,C}$\\\hline
+% |\Cgeq| & 1 & |\Cgeq{A,B,C}| & $\Cgeq{A,B,C}$\\\hline
+% |\Cleq| & 1 & |\Cleq{A,B,C}| & $\Cleq{A,B,C}$\\\hline
+% |\Cequivalent| & 1 & |\Cequivalent{A,B,C}| & $\Cequivalent{A,B,C}$\\\hline
+% |\Capprox| & 2 & |\Capprox{1}{2}| & $\Capprox{1}{1.1}$\\\hline
+% |\Cfactorof| & 2 & |\Cfactorof{7}{21}| & $\Cfactorof{7}{21}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Elements for Calculus and Vector Calculus}\label{sec:calculus-vector-calculus}
+%
+% The elements for calculus and vector calculus have the most varied forms.
+%
+% The integrals come in four forms: the first one is just an indefinite integral over a
+% function, the second one specifies the bound variables, upper and lower limits. The
+% third one specifies a set instead of an interval, and finally the last specifies a
+% bound variable that ranges over a set specified by a condition.
+%
+% \DescribeMacro{\Cint}\DescribeMacro{\CintLimits}\DescribeMacro{\CintDA}\DescribeMacro{\CintCond}
+% \begin{cmtab}
+% |\Cint| & 1 & |\Cint{f}| & $\Cint{f}$\\\hline
+% |\CintLimits| & 4 & |\CintLimits{x}{0}{\Cinfinit}{f(x)}|
+% & $\CintLimits{x}{0}{\infty}{f(x)}$\\\hline
+% |\CintDA| & 2 & |\CintDA{\Creals}{f}|
+% & $\CintDA{\mathbb{R}}{f}$\\\hline
+% |\CintCond| & 3 & |\CintCond{x}{\Cin{x}{D}}{f(x)}|
+% & $\CintCond{x}{x\in D}{f(x)}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Cdiff}\DescribeMacro{\Cddiff} The differentiation operators are used in
+% the usual way: simple differentiation is represented by the |\Cdiff| macro which takes
+% the function to be differentiated as an argument, differentiation with the $d$-notation
+% is possible by the |\Cddiff|, which takes the bound variable\ednote{really only one?} as
+% the first argument and the function expression (in the bound variable) as a second
+% argument.
+%
+% \DescribeMacro{\Cpartialdiff} Partial Differentiation is specified by the
+% |\Cpartialdiff| macro. It takes the overall degree as the first argument (to leave it
+% out, just pass the empty argument). The second argument is the list of bound variables
+% (with their degrees; see below), and the last the function expression (in these bound
+% variables). \DescribeMacro{\Cdegree} To specify the respective degrees of
+% differentiation on the variables, we use the |\Cdegree| macro, which takes two arguments
+% (but no optional argument), the first one is the degree (a natural number) and the
+% second one takes the variable. Note that the overall degree has to be the sum of the
+% degrees of the bound variables.
+%
+% \begin{pcmtab}[6cm]
+% |\Cdiff| & 1 & |\Cdiff{f}| & $\Cdiff{f}$\\\hline
+% |\Cddiff| & 2 & |\Cddiff{x}{f}| & $\Cddiff{x}{f}$\\\hline
+% |\Cpartialdiff| & 3 & |\Cpartialdiff{3}{x,y,z}{f(x,y)}|
+% & $\Cpartialdiff{3}{x,y,z}{f(x,y)}$\\\hline
+% |\Cpartialdiff| & 3 & |\Cpartialdiff{7}| |{\Cdegree{2}{x},\Cdegree{4}{y},z}| |{f(x,y)}|
+% & $\Cpartialdiff{7}{\Cdegree{2}{x},\Cdegree{4}{y},z}{f(x,y)}$\\\hline
+% \end{pcmtab}
+%
+% \DescribeMacro{\Climit}\DescribeMacro{\ClimitCond} For content {\mathml}, there are two
+% kinds of limit expressions: The simple one is specified by the |\Climit| macro, which
+% takes three arguments: the bound variable, the target, and the limit expression. If we
+% want to place additional conditions on the limit construction, then we use the
+% |\ClimitCond| macro, which takes three arguments as well, the first one is a sequence of
+% bound variables, the second one is the condition, and the third one is again the limit
+% expression.
+%
+% \DescribeMacro{\Ctendsto}\DescribeMacro{\CtendstoAbove}\DescribeMacro{\CtendstoBelow} If
+% we want to speak qualitatively about limit processes (e.g. in the condition of a
+% |\ClimitCond| expression), then can use the {\mathml} {\element{tendsto}} element, which
+% is represented by the |\Ctendsto| macro, wich takes two expressions arguments. In
+% {\mathml}, the {\element{tendsto}} element can be further specialized by an attribute to
+% indicate the direction from which a limit is approached. In the |cmathml| package, we
+% supply two additional (specialized) macros for that: |\CtendstoAbove| and
+% |\CtendstoBelow|.
+% \begin{cmtab}
+% |\Climit| & 3 & |\Climit{x}{0}{\Csin{x}}| & $\Climit{x}{0}{\Csin{x}}$\\\hline
+% |\ClimitCond| & 3 & |\ClimitCond{x}{\Ctendsto{x}{0}}{\Ccos{x}}|
+% & $\ClimitCond{x}{\Ctendsto{x}{0}}{\Ccos{x}}$\\\hline
+% |\Ctendsto| & 2 & |\Ctendsto{f(x)}{2}| & $\Ctendsto{f(x)}{2}$\\\hline
+% |\CtendstoAbove| & 2 & |\CtendstoAbove{x}{1}| & $\CtendstoAbove{x}{1}$\\\hline
+% |\CtendstoBelow| & 2 & |\CtendstoBelow{x}{2}| & $\CtendstoBelow{x}{2}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Cdivergence}\DescribeMacro{\Cgrad}\DescribeMacro{\Ccurl}
+% \DescribeMacro{\Claplacian}
+% \begin{cmtab}
+% |\Cdivergence| & 1 & |\Cdivergence{A}| & $\Cdivergence{A}$\\\hline
+% |\Cgrad| & 1 & |\Cgrad{\Phi}| & $\Cgrad{\Phi}$\\\hline
+% |\Ccurl| & 1 & |\Ccurl{\Xi}| & $\Ccurl{\Xi}$\\\hline
+% |\Claplacian| & 1 & |\Claplacian{A}| & $\Claplacian{A}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Sets and their Operations}\label{sec:sets}
+%
+% \DescribeMacro{\Cset}\DescribeMacro{\Clist}
+% \DescribeMacro{\CsetDA}\DescribeMacro{\CsetRes}\DescribeMacro{\CsetCond}
+% The |\Cset| macros is used as the simple finite set constructor, it takes one argument
+% that is a comma-separated sequence of members of the set. |\CsetRes| allows to specify a
+% set by restricting a set of variables, and |\CsetCond| is the general form of the set
+% construction.\ednote{need to do this for lists as well? Probably}
+% \begin{cmtab}
+% |\Cset| & 1 & |\Cset{1,2,3}| & $\Cset{1,2,3}$\\\hline
+% |\CsetRes| & 2 & |\CsetRes{x}{\Cgt{x}5}|
+% & $\CsetRes{x}{\Cgt{x}5}$\\\hline
+% |\CsetCond| & 3 & |\CsetCond{x}{\Cgt{x}5}{\Cpower{x}3}|
+% & $\CsetCond{x}{\Cgt{x}5}{\Cpower{x}3}$\\\hline
+% |\CsetDA| & 3 & |\CsetDA{x}{\Cgt{x}5}{S_x}}|
+% & $\CsetDA{x}{\Cgt{x}5}{S_x}$\\\hline
+% |\Clist| & 1 & |\Clist{3,2,1}| & $\Clist{3,2,1}$\\\hline
+%\end{cmtab}
+%
+%\DescribeMacro{\Cunion}\DescribeMacro{\Cintersect}\DescribeMacro{\Ccartesianproduct}
+% \DescribeMacro{\Csetdiff}\DescribeMacro{\Ccard}\DescribeMacro{\Cin}\DescribeMacro{\Cnotin}
+% \begin{cmtab}
+% |\Cunion| & 1 & |\Cunion{S,T,L}| & $\Cunion{S,T,L}$\\\hline
+% |\Cintersect| & 1 & |\Cintersect{S,T,L}| & $\Cintersect{S,T,L}$\\\hline
+% |\Ccartesianproduct| & 1 & |\Ccartesianproduct{A,B,C}| & $\Ccartesianproduct{A,B,C}$\\\hline
+% |\Csetdiff| & 2 & |\Csetdiff{S}{L}| & $\Csetdiff{S}{L}$\\\hline
+% |\Ccard| & 1 & |\Ccard{\Cnaturalnumbers}| & $\Ccard{\mathbb{N}}$\\\hline
+% |\Cin| & 2 & |\Cin{a}{S}| & $\Cin{a}{S}$\\\hline
+% |\Cnotin| & 2 & |\Cnotin{b}{S}| & $\Cnotin{b}{S}$\\\hline
+%\end{cmtab}
+%
+% The following are the corresponding big operators for the first three binary ACI
+% functions. \DescribeMacro{\CUnionDA}\DescribeMacro{\CUnionCond}
+% \DescribeMacro{\CIntersectDA}\DescribeMacro{\CIntersectCond}
+% \DescribeMacro{\CCartesianproductDA}\DescribeMacro{\CCartesianproductCond}
+% \begin{cmtab}
+% |\CUnionDA| & 2 & |\CUnionDA\Cnaturalnumbers{S_i}|
+% & $\CUnionDA\Cnaturalnumbers{S_i}$\\\hline
+% |\CUnionCond| & 3 & |\CUnionCond{x}{\Cgt{x}5}{S_x}}|
+% & $\CUnionCond{x}{\Cgt{x}5}{S_x}$\\\hline
+% |\CIntersectDA| & 2 & |\CIntersectDA\Cnaturalnumbers{S_i}|
+% & $\CIntersectDa\Cnaturalnumbers{S_i}$\\\hline
+% |\CIntersectCond| & 3 & |\CIntersectCond{x}{\Cgt{x}5}{S_x}|
+% & $\CIntersectCond{x}{\Cgt{x}5}{S_x}$\\\hline
+% |\CCartesianproductDA| & 2 & |\CCartesianproductDA\Cnaturalnumbers{S_i}|
+% & $\CCartesianproductDA\Cnaturalnumbers{S_i}$\\\hline
+% |\CCartesianproductCond| & 3 & |\CCartesianproductCond{x}{\Cgt{x}5}{S_x}|
+% & $\CCartesianproductCond{x}{\Cgt{x}5}{S_x}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Csubset}\DescribeMacro{\Cprsubset}
+% \DescribeMacro{\Cnotsubset}\DescribeMacro{\Cnotprsubset} For the set containment
+% relations, we are in a somewhat peculiar situation: content {\mathml} only supplies the
+% subset side of the reations and leaves out the superset relations. Of course they are
+% not strictly needed, since they can be expressed in terms of the subset relation with
+% reversed argument order. But for the |cmathml| package, the macros have a presentational
+% side (for the {\LaTeX} workflow) and a content side (for the {\latexml} converter)
+% therefore we will need macros for both relations.
+%
+% \begin{cmtab}
+% |\Csubset| & 1 & |\Csubset{S,T,K}| & $\Csubset{S,T,K}$\\\hline
+% |\Cprsubset| & 1 & |\Cprsubset{S,T,K}| & $\Cprsubset{S,T,K}$\\\hline
+% |\Cnotsubset| & 2 & |\Cnotsubset{S}{K}| & $\Cnotsubset{S}{K}$\\\hline
+% |\Cnotprsubset| & 2 & |\Cnotprsubset{S}{L}| & $\Cnotprsubset{S}{L}$\\\hline
+% \end{cmtab}
+% \DescribeMacro{\Csupset}\DescribeMacro{\Cprsupset}
+% \DescribeMacro{\Cnotsupset}\DescribeMacro{\Cnotprsupset}
+% The following set of macros are presented in {\LaTeX} as their name suggests, but upon
+% transformation will generate content markup with the {\mathml} elements (i.e. in terms
+% of the subset relation).
+%
+% \begin{cmtab}
+% |\Csupset| & 1 & |\Csupset{S,T,K}| & $\Csupset{S,T,K}$\\\hline
+% |\Cprsupset| & 1 & |\Cprsupset{S,T,K}| & $\Cprsupset{S,T,K}$\\\hline
+% |\Cnotsupset| & 2 & |\Cnotsupset{S}{K}| & $\Cnotsupset{S}{K}$\\\hline
+% |\Cnotprsupset| & 2 & |\Cnotprsupset{S}{L}| & $\Cnotprsupset{S}{L}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Sequences and Series}\label{sec:sequences}
+%
+% \DescribeMacro{\CsumLimits}\DescribeMacro{\CsumCond}\DescribeMacro{\CsumDA}
+% \DescribeMacro{\CprodLimist}\DescribeMacro{\CprodCond}\DescribeMacro{\CprodDA}
+% \begin{cmtab}
+% |\CsumLimits| & 4 & |\CsumLimits{i}{0}{50}{x^i}| & $\CsumLimits{i}{0}{50}{x^i}$\\\hline
+% |\CsumCond| & 3 & |\CsumCond{i}{\Cintegers}{i}| & $\CsumCond{i}{\mathbb{Z}}{i}$\\\hline
+% |\CsumDA| & 2 & |\CsumDA{\Cintegers}{f}| & $\CsumDA{\mathbb{Z}}{f}$\\\hline
+% |\CprodLimits| & 4 & |\CprodLimits{i}{0}{20}{x^i}| & $\CprodLimits{i}{0}{20}{x^i}$\\\hline
+% |\CprodCond| & 3 & |\CprodCond{i}{\Cintegers}{i}| & $\CprodCond{i}{\mathbb{Z}}{i}$\\\hline
+% |\CprodDA| & 2 & |\CprodDA{\Cintegers}{f}| & $\CprodDA{\mathbb{Z}}{f}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Elementary Classical Functions}\label{sec:specfun}
+%
+% \DescribeMacro{\Csin}\DescribeMacro{\Ccos}\DescribeMacro{\Ctan}
+% \DescribeMacro{\Csec}\DescribeMacro{\Ccsc}\DescribeMacro{\Ccot}
+% \begin{cmtab}
+% |\Csin| & 1 & |\Csin{x}| & $\Csin{x}$\\\hline
+% |\Ccos| & 1 & |\Ccos{x}| & $\Ccos{x}$\\\hline
+% |\Ctan| & 1 & |\Ctan{x}| & $\Ctan{x}$\\\hline
+% |\Csec| & 1 & |\Csec{x}| & $\Csec{x}$\\\hline
+% |\Ccsc| & 1 & |\Ccsc{x}| & $\Ccsc{x}$\\\hline
+% |\Ccot| & 1 & |\Ccot{x}| & $\Ccot{x}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Csinh}\DescribeMacro{\Ccosh}\DescribeMacro{\Ctanh}
+% \DescribeMacro{\Csech}\DescribeMacro{\Ccsch}\DescribeMacro{\Ccoth}
+% \begin{cmtab}
+% |\Csinh| & 1 & |\Csinh{x}| & $\Csinh{x}$\\\hline
+% |\Ccosh| & 1 & |\Ccosh{x}| & $\Ccosh{x}$\\\hline
+% |\Ctanh| & 1 & |\Ctanh{x}| & $\Ctanh{x}$\\\hline
+% |\Csech| & 1 & |\Csech{x}| & $\Csech{x}$\\\hline
+% |\Ccsch| & 1 & |\Ccsch{x}| & $\Ccsch{x}$\\\hline
+% |\Ccoth| & 1 & |\Ccoth{x}| & $\Ccoth{x}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Carcsin}\DescribeMacro{\Carccos}\DescribeMacro{\Carctan}
+% \DescribeMacro{\Carcsec}\DescribeMacro{\Carccsc}\DescribeMacro{\Carccot}
+% \begin{cmtab}
+% |\Carcsin| & 1 & |\Carcsin{x}| & $\Carcsin{x}$\\\hline
+% |\Carccos| & 1 & |\Carccos{x}| & $\Carccos{x}$\\\hline
+% |\Carctan| & 1 & |\Carctan{x}| & $\Carctan{x}$\\\hline
+% |\Carccosh| & 1 & |\Carccosh{x}| & $\Carccosh{x}$\\\hline
+% |\Carccot| & 1 & |\Carccot{x}| & $\Carccot{x}$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Carcsinh}\DescribeMacro{\Carccosh}\DescribeMacro{\Carctanh}
+% \DescribeMacro{\Carcsech}\DescribeMacro{\Carccsch}\DescribeMacro{\Carccoth}
+% \begin{cmtab}
+% |\Carccoth| & 1 & |\Carccoth{x}| & $\Carccoth{x}$\\\hline
+% |\Carccsc| & 1 & |\Carccsc{x}| & $\Carccsc{x}$\\\hline
+% |\Carcsinh| & 1 & |\Carcsinh{x}| & $\Carcsinh{x}$\\\hline
+% |\Carctanh| & 1 & |\Carctanh{x}| & $\Carctanh{x}$\\\hline
+% |\Cexp| & 1 & |\Cexp{x}| & $\Cexp{x}$\\\hline
+% |\Cln| & 1 & |\Cln{x}| & $\Cln{x}$\\\hline
+% |\Clog| & 2 & |\Clog{5}{x}| & $\Clog{5}{x}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Statistics}\label{sec:statistics}
+%
+% The only semantic macro that is non-standard in this module is the one for the
+% {\element{moment}} and {\element{momentabout}} elements in {\mathml}. They are combined
+% into the semantic macro {|CmomentA|}; its first argument is the degree, its
+% second one the point in the distribution, the moment is taken about, and the third is
+% the distribution.
+%
+% \DescribeMacro{\Cmean}\DescribeMacro{\Csdev}\DescribeMacro{\Cvar}\DescribeMacro{\Cmedian}
+% \DescribeMacro{\Cmode}\DescribeMacro{\Cmoment}\DescribeMacro{\CmomentA}
+% \begin{cmtab}
+% |\Cmean| & 1 & |\Cmean{X}| & $\Cmean{X}$\\\hline
+% |\Csdev| & 1 & |\Csdev{X}| & $\Csdev{X}$\\\hline
+% |\Cvar| & 1 & |\Cvar{X}| & $\Cvar{X}$\\\hline
+% |\Cmedian| & 1 & |\Cmedian{X}| & $\Cmedian{X}$\\\hline
+% |\Cmode| & 1 & |\Cmode{X}| & $\Cmode{X}$\\\hline
+% |\Cmoment| & 3 & |\Cmoment{3}{X}| & $\Cmoment{3}{X}$\\\hline
+% |\CmomentA| & 3 & |\CmomentA{3}{p}{X}| & $\CmomentA{3}{p}{X}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Linear Algebra}\label{sec:linalg}
+%
+% In these semantic macros, only the matrix constructor is unusual; instead of
+% constructing a matrix from {\element{matrixrow}} elements like {\mathml} does, the macro
+% follows the {\TeX/\LaTeX} tradition allows to give a matrix as an array. The first
+% argument of the macro is the column specification (it will only be used for presentation
+% purposes), and the second one the rows.
+%
+% \DescribeMacro{\Cvector}\DescribeMacro{\Cmatrix}\DescribeMacro{\Cdeterminant}
+% \DescribeMacro{\Ctranspose}\DescribeMacro{\Cselector}
+% \DescribeMacro{\Cvectorproduct}\DescribeMacro{\Cscalarproduct}\DescribeMacro{\Couterproduct}
+% \begin{cmtab}
+% |\Cvector| & 1 & |\Cvector{1,2,3}| & $\Cvector{1,2,3}$\\\hline
+% |\Cmatrix| & 2 & |\Cmatrix{ll}{1 & 2\\ 3 & 4}| & $\Cmatrix{ll}{1 & 2\\3 & 4}$\\\hline
+% |\Cdeterminant| & 1 & |\Cdeterminant{A}| & $\Cdeterminant{A}$\\\hline
+% |\Ctranspose| & 1 & |\Ctranspose{A}| & $\Ctranspose{A}$\\\hline
+% |\Cselector| & 2 & |\Cselector{A}{2}| & $\Cselector{A}{2}$\\\hline
+% |\Cvectproduct| & 2 & |\Cvectproduct{\phi}{\psi}| & $\Cvectproduct{\phi}{\psi}$\\\hline
+% |\Cscalarproduct| & 2 & |\Cscalarproduct{\phi}{\psi}| & $\Cscalarproduct{\phi}{\psi}$\\\hline
+% |\Couterproduct| & 2 & |\Couterproduct{\phi}{\psi}| & $\Couterproduct{\phi}{\psi}$\\\hline
+% \end{cmtab}
+%
+% \subsection{Constant and Symbol Elements}\label{sec:constants}
+%
+% The semantic macros for the {\mathml} constant and symbol elements are very simple, they
+% do not take any arguments, and their name is just the {\mathml} element name prefixed by
+% a capital C.
+%
+% \DescribeMacro{\Cintegers}\DescribeMacro{\Creals}\DescribeMacro{\Crationals}
+% \DescribeMacro{\Ccomplexes}\DescribeMacro{\Cprimes}
+% \begin{cmtab}
+% |\Cintegers| & & |\Cintegers| & $\Cintegers$\\\hline
+% |\Creals| & & |\Creals| & $\Creals$\\\hline
+% |\Crationals| & & |\Crationals| & $\Crationals$\\\hline
+% |\Cnaturalnumbers| & & |\Cnaturalnumbers| & $\Cnaturalnumbers$\\\hline
+% |\Ccomplexes| & & |\Ccomplexes| & $\Ccomplexes$\\\hline
+% |\Cprimes| & & |\Cprimes| & $\Cprimes$\\\hline
+% \end{cmtab}
+%
+% \DescribeMacro{\Cexponentiale}\DescribeMacro{\Cimaginaryi}
+% \DescribeMacro{\Ctrue}\DescribeMacro{\Cfalse} \DescribeMacro{\Cemptyset}
+% \DescribeMacro{\Cpi}\DescribeMacro{\Ceulergamma}\DescribeMacro{\Cinfinit}
+% \begin{cmtab}
+% |\Cexponemtiale| & & |\Cexponemtiale| & $\Cexponemtiale$\\\hline
+% |\Cimaginaryi| & & |\Cimaginaryi| & $\Cimaginaryi$\\\hline
+% |\Cnotanumber| & & |\Cnotanumber| & $\Cnotanumber$\\\hline
+% |\Ctrue| & & |\Ctrue| & $\Ctrue$\\\hline
+% |\Cfalse| & & |\Cfalse| & $\Cfalse$\\\hline
+% |\Cemptyset| & & |\Cemptyset| & $\Cemptyset$\\\hline
+% |\Cpi| & & |\Cpi| & $\Cpi$\\\hline
+% |\Ceulergamma| & & |\Ceulergamma| & $\Ceulergamma$\\\hline
+% |\Cinfinit| & & |\Cinfinit| & $\Cinfinit$\\\hline
+% \end{cmtab}
+%
+% \subsection{Extensions}\label{sec:cmathmlx}
+% Content MathML does not (even though it claims to cover M-14 Math) symbols for all the
+% common mathematical notions. The |cmathmlx| attempts to collect these and provide
+% {\TeX/\LaTeX} and {\latexml} bindings.
+%
+%\DescribeMacro{\Ccomplement}
+% \begin{cmtab}
+% |\Ccomplement| & 1 & |\Ccomplement{\Cnaturalnumbers}| & $\Ccomplement{\mathbb{N}}$\\\hline
+%\end{cmtab}
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}\newpage
+%
+% \section{The Implementation}\label{sec:impl}
+%
+% In this file we document both the implementation of the |cmathml| package, as well as
+% the corresponding {\latexml} bindings. This keeps similar items close to each other,
+% even though they eventually go into differing files and helps promote consistency. We
+% specify which code fragment goes into which file by the {\xml}-like grouping commands:
+% The code between {\textsf{$\langle$*sty$\rangle$}} and {\textsf{$\langle$/sty$\rangle$}}
+% goes into the package file |cmathml.sty|, and the code between
+% {\textsf{$\langle$*ltxml$\rangle$}} and {\textsf{$\langle$/ltxml$\rangle$}} goes into
+% |cmathml.ltxml|
+%
+% \subsection{Initialization and auxiliary functions}\label{sec:impl:init}
+%
+% We first make sure that the {\sTeX} |presentation| package is loaded.
+% \begin{macrocode}
+%<*sty|styx>
+\RequirePackage{presentation}
+%</sty|styx>
+% \end{macrocode}
+%
+% Before we start im plementing the {\mathml} macros, we will need to set up the packages
+% for perl in the {\latexml} bindings file.
+% \begin{macrocode}
+%<*ltxml|ltxmlx>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+use LaTeXML::Document;
+RequirePackage('LaTeX');
+%</ltxml|ltxmlx>
+% \end{macrocode}
+%
+% The next step is to itroduce two auxiliary functions, they are needed to work with
+% $n$-ary function elements. The first one removes arbitrary tokens from a list, and the
+% specializes that to commas. In particular |remove_tokens_from_list($List, $pattern, $math)|
+% returns a new |List| (or |MathList| if |$math| is true)
+% with all the tokens in |$List| except the ones which follow
+% the pattern |$pattern|.
+%
+% \begin{macrocode}
+%<*ltxml>
+sub remove_tokens_from_list {
+ my ($list, $pattern, $math) = @_;
+ if (ref $list) {
+ my @toks = $list->unlist;
+ @toks = grep($_->toString !~ /$pattern/, @toks);
+ ($math ? (LaTeXML::MathList->new(@toks)) : (LaTeXML::List)->new(@toks)); }
+ else { undef; } }
+
+sub remove_math_commas {
+ my ($whatsit, $argno) = @_;
+ my @args = $whatsit ? $whatsit->getArgs() : undef;
+ $argno--;
+ if ($args[$argno]) {
+ $args[$argno] = remove_tokens_from_list($args[$argno], ',', 1);
+ $whatsit->setArgs(@args);
+ }
+ return;
+}
+%</ltxml>
+% \end{macrocode}
+%
+% The structural macros are rather simple:
+%
+% \begin{macrocode}
+%<*sty>
+\newcommand{\Capply}[3][]{#2(#3)}
+%</sty>
+%<*ltxml>
+DefConstructor('\Capply [] {} {}',
+ "<ltx:XMApp ?#1(definitionURL='#1')()>#2 #3</ltx:XMApp>");
+%</ltxml>
+% after this, the implementation will always have the same form. We will first
+% implement a block of {\LaTeX} macros via a |\newcommand| and then specify the
+% corresponding {\latexml} bindings for them.
+%
+% \subsection{The Token Elements}\label{impl:tokens}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@cn#1{#1}
+\newcommand{\Ccn}[2][]{\CMathML@cn{#2}}
+\def\CMathML@ci#1{#1}
+\newcommand{\Cci}[2][]{\CMathML@ci{#2}}
+\def\CMathML@csymbol#1{#1}
+\newcommand{\Ccsymbol}[2][]{\CMathML@csymbol{#2}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Ccn [] {}',"#2");
+DefConstructor('\Cci [] {}',"#2");
+DefConstructor('\Ccsymbol [] {}',
+ "<ltx:XMTok role='CSYMBOL' meaning='#2' ?#1(definitionURL='#1')()/>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{The Basic Elements}\label{impl:basic}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@ccinterval#1#2{[#1,#2]}
+\newcommand{\Cccinterval}[3][]{\CMathML@ccinterval{#2}{#3}}
+\def\CMathML@cointerval#1#2{[#1,#2)}
+\newcommand{\Ccointerval}[3][]{\CMathML@cointerval{#2}{#3}}
+\def\CMathML@ocinterval#1#2{(#1,#2]}
+\newcommand{\Cocinterval}[3][]{\CMathML@ocinterval{#2}{#3}}
+\def\CMathML@oointerval#1#2{(#1,#2)}
+\newcommand{\Coointerval}[3][]{\CMathML@oointerval{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cccinterval [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONSTRUCTOR' meaning='ccinterval' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>");
+DefConstructor('\Ccointerval [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONSTRUCTOR' meaning='cointerval' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>");
+DefConstructor('\Cocinterval [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONSTRUCTOR' meaning='ocinterval' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>");
+DefConstructor('\Coointerval [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONSTRUCTOR' meaning='oointerval' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg></ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\newcommand{\Cinverse}[2][]{#2^{-1}}
+% what about separator
+%</sty>
+%<*ltxml>
+DefConstructor('\Cinverse [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='inverse' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@lambda#1#2{\lambda({#1},{#2})}
+\newcommand{\Clambda}[3][]{\CMathML@lambda{#2}{#3}}
+\def\CMathML@lambdaDA#1#2#3{\lambda({#1}\colon{#2},#3)}
+\newcommand{\ClambdaDA}[4][]{\CMathML@lambdaDA{#2}{#3}{#4}}
+\def\CMathML@restrict#1#2{\left.#1\right|_{#2}}
+\newcommand{\Crestrict}[3][]{\CMathML@restrict{#2}{#3}}
+%</sty>
+%\ednote{need do deal with multiple variables!}
+%<*ltxml>
+DefConstructor('\Clambda [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BINDER' meaning='lambda' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\ClambdaDA [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BINDER' meaning='lambda' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Crestrict [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='restrict' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@composeOp{\circ}
+ \newcommand{\CcomposeOp}{\CMathML@composeOp}
+\def\CMathML@compose#1{\assoc[p=500,pi=500]{\CMathML@composeOp}{#1}}
+\newcommand{\Ccompose}[2][]{\CMathML@compose{#2}}
+\def\CMathML@ident#1{\mathrm{id}}
+\newcommand{\Cident}[1][]{\CMathML@ident{#1}}
+\def\CMathML@domain#1{\mbox{dom}(#1)}
+\newcommand{\Cdomain}[2][]{\CMathML@domain{#2}}
+\def\CMathML@codomain#1{\mbox{codom}(#1)}
+\newcommand{\Ccodomain}[2][]{\CMathML@codomain{#2}}
+\def\CMathML@image#1{{\mathbf{Im}}(#1)}
+\newcommand{\Cimage}[2][]{\CMathML@image{#2}}
+\def\CMathML@piecewise#1{\left\{\begin{array}{ll}#1\end{array}\right.}
+\newcommand{\Cpiecewise}[2][]{\CMathML@piecewise{#2}}
+\def\CMathML@piece#1#2{#1&{\mathrm{if}}\;{#2}\\}
+\newcommand{\Cpiece}[3][]{\CMathML@piece{#2}{#3}}
+\def\CMathML@otherwise#1{#1&else\\}
+\newcommand{\Cotherwise}[2][]{\CMathML@otherwise{#2}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CcomposeOp []',
+ "<ltx:XMTok meaning='compose' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ccompose [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='MULOP' meaning='compose' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\Cident []',
+ "<ltx:XMTok meaning='ident' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cdomain [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='domain' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccodomain [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='codomain' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cimage [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='image' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cpiecewise [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='piecewise' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cpiece [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='piece' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cotherwise [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='otherwise' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Elements for Arithmetic, Algebra, and Logic}\label{impl:arith}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@quotient#1#2{\frac{#1}{#2}}
+\newcommand{\Cquotient}[3][]{\CMathML@quotient{#2}{#3}}
+ \def\CMathML@factorialOp{!}
+ \newcommand{\CfactorialOp}{\CMathML@factorialOp}
+\def\CMathML@factorial#1{#1{\CMathML@factorialOp}}
+\newcommand{\Cfactorial}[2][]{\CMathML@factorial{#2}}
+ \def\CMathML@divideOp{\div}
+ \newcommand{\CdivideOp}{\CMathML@divideOp}
+\def\CMathML@divide#1#2{\infix[p=400]{\CMathML@divideOp}{#1}{#2}}
+\newcommand{\Cdivide}[3][]{\CMathML@divide{#2}{#3}}
+ \def\CMathML@maxOp{\mathrm{max}}
+ \newcommand{\CmaxOp}{\CMathML@maxOp}
+\def\CMathML@max#1{{\CMathML@maxOp}(#1)}
+\newcommand{\Cmax}[2][]{\CMathML@max{#2}}
+ \def\CMathML@minOp{\mathrm{min}}
+ \newcommand{\CminOp}{\CMathML@minOp}
+\def\CMathML@min#1{{\CMathML@minOp}(#1)}
+\newcommand{\Cmin}[2][]{\CMathML@min{#2}}
+ \def\CMathML@minusOp{-}
+ \newcommand{\CminusOp}{\CMathML@minusOp}
+\def\CMathML@minus#1#2{\infix[p=500]{\CMathML@minusOp}{#1}{#2}}
+\newcommand{\Cminus}[3][]{\CMathML@minus{#2}{#3}}
+\def\CMathML@uminus#1{\prefix[p=200]{\CMathML@minusOp}{#1}}
+\newcommand{\Cuminus}[2][]{\CMathML@uminus{#2}}
+ \def\CMathML@plusOp{+}
+ \newcommand{\CplusOp}{\CMathML@plusOp}
+\def\CMathML@plus#1{\assoc[p=500]{\CMathML@plusOp}{#1}}
+\newcommand{\Cplus}[2][]{\CMathML@plus{#2}}
+\def\CMathML@power#1#2{\infix[p=200]{^}{#1}{#2}}
+\newcommand{\Cpower}[3][]{\CMathML@power{#2}{#3}}
+ \def\CMathML@remOp{\bmod}
+ \newcommand{\CremOp}{\CMathML@remOp}
+\def\CMathML@rem#1#2{#1 \CMathML@remOp #2}
+\newcommand{\Crem}[3][]{\CMathML@rem{#2}{#3}}
+ \def\CMathML@timesOp{\cdot}
+ \newcommand{\CtimesOp}{\CMathML@timesOp}
+\def\CMathML@times#1{\assoc[p=400]{\CMathML@timesOp}{#1}}
+\newcommand{\Ctimes}[2][]{\CMathML@times{#2}}
+ \def\CMathML@rootOp{\sqrt}
+ \newcommand{\CrootOp}{\CMathML@rootOp{}}
+\def\CMathML@root#1#2{\CMathML@rootOp[#1]{#2}}
+\newcommand{\Croot}[3][]{\CMathML@root{#2}{#3}}
+\def\CMathML@gcd#1{\gcd(#1)}
+\newcommand{\Cgcd}[2][]{\CMathML@gcd{#2}}
+ \def\CMathML@andOp{\wedge}
+ \newcommand{\CandOp}{\CMathML@andOp}
+\def\CMathML@and#1{\assoc[p=400]{\CMathML@andOp}{#1}}
+\newcommand{\Cand}[2][]{\CMathML@and{#2}}
+ \def\CMathML@orOp{\vee}
+ \newcommand{\CorOp}{\CMathML@orOp}
+\def\CMathML@or#1{\assoc[p=500]{\CMathML@orOp}{#1}}
+\newcommand{\Cor}[2][]{\CMathML@or{#2}}
+ \def\CMathML@xorOp{\oplus}
+ \newcommand{\CxorOp}{\CMathML@xorOp}
+\def\CMathML@xor#1{\assoc[p=400]{\CMathML@xorOp}{#1}}
+\newcommand{\Cxor}[2][]{\CMathML@xor{#2}}
+ \def\CMathML@notOp{\neg}
+ \newcommand{\CnotOp}{\CMathML@notOp}
+\def\CMathML@not#1{\CMathML@notOp{#1}}
+\newcommand{\Cnot}[2][]{\CMathML@not{#2}}
+ \def\CMathML@impliesOp{\Longrightarrow}
+ \newcommand{\CimpliesOp}{\CMathML@impliesOp}
+\def\CMathML@implies#1#2{#1\CMathML@impliesOp{#2}}
+\newcommand{\Cimplies}[3][]{\CMathML@implies{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cquotient [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='quotient' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CfactorialOp []',
+ "<ltx:XMTok meaning='factorial' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cfactorial [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='factorial' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CdivideOp []',
+ "<ltx:XMTok meaning='divide' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cdivide [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='divide' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CmaxOp []',
+ "<ltx:XMTok meaning='max' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cmax [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='max' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CminOp []',
+ "<ltx:XMTok meaning='min' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cmin [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='min' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CminusOp []',
+ "<ltx:XMTok meaning='minus' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cminus [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='ADDOP' meaning='minus' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cuminus [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='uminus' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CplusOp []',
+ "<ltx:XMTok meaning='plus' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cplus [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='ADDOP' meaning='plus' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\Cpower [] {} {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='power' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CremOp []',
+ "<ltx:XMTok meaning='rem' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Crem [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='rem' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CtimesOp []',
+ "<ltx:XMTok meaning='times' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ctimes [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='MULOP' meaning='times' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CrootOp []',
+ "<ltx:XMTok meaning='root' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Croot [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='root' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cgcd [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='gcd' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CandOp []',
+ "<ltx:XMTok meaning='and' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cand [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONNECTIVE' meaning='and' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CorOp []',
+ "<ltx:XMTok meaning='or' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cor [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONNECTIVE' meaning='or' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CxorOp []',
+ "<ltx:XMTok meaning='xor' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cxor [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONNECTIVE' meaning='xor' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CnotOp []',
+ "<ltx:XMTok meaning='not' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cnot [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONNECTIVE' meaning='not' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CimpliesOp []',
+ "<ltx:XMTok meaning='implies' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cimplies [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONNECTIVE' meaning='implies' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+% \ednote{need to do something about the associative things in ltxml}
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@AndDA#1#2{\bigwedge_{#1}{#2}} % set, scope
+\newcommand{\CAndDA}[3][]{\CMathML@AndDA{#2}{#3}}
+\def\CMathML@AndCond#1#2#3{\bigwedge_{#2}{#3}} % bvars,condition, scope
+\newcommand{\CAndCond}[4][]{\CMathML@AndCond{#2}{#2}{#3}}
+\def\CMathML@OrDA#1#2{\bigvee_{#1}{#2}} % set, scope
+\newcommand{\COrDa}[3][]{\CMathML@OrDA{#2}{#3}}
+\def\CMathML@OrCond#1#2#3{\bigvee_{#2}{#3}}% bvars,condition, scope
+\newcommand{\COrCond}[4][]{\CMathML@OrCond{#2}{#3}{#4}}
+\def\CMathML@XorDA#1#2{\bigoplus_{#1}{#2}} % set, scope
+\newcommand{\CXorDA}[3][]{\CMathML@XorDA{#2}{#3}}
+\def\CMathML@XorCond#1#2#3{\bigoplus_{#2}{#3}}% bvars,condition, scope
+\newcommand{\CXorCond}[4][]{\CMathML@XorCond{#2}{#3}{#4}}
+%
+\def\CMathML@forall#1#2{\forall{#1}\colon{#2}}
+\newcommand{\Cforall}[3][]{\CMathML@forall{#2}{#3}}
+\def\CMathML@forallCond#1#2#3{\forall{#1},{#2}\colon{#3}} % list), condition, scope
+\newcommand{\CforallCond}[4][]{\CMathML@forallCond{#2}{#3}{#4}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CAndDa [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='and' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CAndCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='and' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\COrDa [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='or' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\COrCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='or' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CXorDa [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='xor' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CXorCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='xor' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cforall [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BINDER' meaning='forall' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CforallCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BINDER' meaning='forall' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@exists#1#2{\exists{#1}\colon{#2}}
+\newcommand{\Cexists}[3][]{\CMathML@exists{#2}{#3}}
+\def\CMathML@esistsCont#1#2#3{\exists{#1},{#2}\colon{#3}}
+\newcommand{\CexistsCond}[4][]{\CMathML@esistsCont{#2}{#3}{#4}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cexists [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BINDER' meaning='exists' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CexistsCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BINDER' meaning='exists' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@abs#1{\left|#1\right|}
+\newcommand{\Cabs}[2][]{\CMathML@abs{#2}}
+\def\CMathML@conjugate#1{\overline{#1}}
+\newcommand{\Cconjugate}[2][]{\CMathML@conjugate{#2}}
+\def\CMathML@arg#1{\angle #1}
+\newcommand{\Carg}[2][]{\CMathML@arg{#2}}
+\def\CMathML@real#1{\Re #1}
+\newcommand{\Creal}[2][]{\CMathML@real{#2}}
+\def\CMathML@imaginary#1{\Im #1}
+\newcommand{\Cimaginary}[2][]{\CMathML@imaginary{#2}}
+\def\CMathML@lcm#1{\mbox{lcm}(#1)}
+\newcommand{\Clcm}[2][]{\CMathML@lcm{#2}}
+\def\CMathML@floor#1{\left\lfloor{#1}\right\rfloor}
+\newcommand{\Cfloor}[2][]{\CMathML@floor{#2}}
+\def\CMathML@ceiling#1{\left\lceil{#1}\right\rceil}
+\newcommand{\Cceiling}[2][]{\CMathML@ceiling{#2}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cabs [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='abs' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cconjugate [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='conjugate' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carg [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='arg' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Creal [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='real' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cimaginary [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='imaginary' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Clcm [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='lcm' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cfloor [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='floor' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cceiling [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='ceiling' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Relations}\label{impl:rels}
+%
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@eqOp{=}
+ \newcommand{\CeqOp}{\CMathML@eqOp}
+\def\CMathML@eq#1{\assoc[p=700]{\CMathML@eqOp}{#1}}
+\newcommand{\Ceq}[2][]{\CMathML@eq{#2}}
+ \def\CMathML@neqOp{\neq}
+ \newcommand{\CneqOp}{\CMathML@neqOp}
+\def\CMathML@neq#1#2{\infix[p=700]{\CMathML@neqOp}{#1}{#2}}
+\newcommand{\Cneq}[3][]{\CMathML@neq{#2}{#3}}
+ \def\CMathML@gtOp{>}
+ \newcommand{\CgtOp}{\CMathML@gtOp}
+\def\CMathML@gt#1{\assoc[p=700]{\CMathML@gtOp}{#1}}
+\newcommand{\Cgt}[2][]{\CMathML@gt{#2}}
+ \def\CMathML@ltOp{<}
+ \newcommand{\CltOp}{\CMathML@ltOp}
+\def\CMathML@lt#1{\assoc[p=700]{\CMathML@ltOp}{#1}}
+\newcommand{\Clt}[2][]{\CMathML@lt{#2}}
+ \def\CMathML@geqOp{\geq}
+ \newcommand{\CgeqOp}{\CMathML@geqOp}
+\def\CMathML@geq#1{\assoc[p=700]{\CMathML@geqOp}{#1}}
+\newcommand{\Cgeq}[2][]{\CMathML@geq{#2}}
+ \def\CMathML@leqOp{\leq}
+ \newcommand{\CleqOp}{\CMathML@leqOp}
+\def\CMathML@leq#1{\assoc[p=700]{\CMathML@leqOp}{#1}}
+\newcommand{\Cleq}[2][]{\CMathML@leq{#2}}
+ \def\CMathML@equivalentOp{\equiv}
+ \newcommand{\CequivalentOp}{\CMathML@equivalentOp}
+\def\CMathML@equivalent#1{\assoc[p=700]{\CMathML@equivalentOp}{#1}}
+\newcommand{\Cequivalent}[2][]{\CMathML@equivalent{#2}}
+ \def\CMathML@approxOp{\approx}
+ \newcommand{\CapproxOp}{\CMathML@approxOp}
+\def\CMathML@approx#1#2{#1\CMathML@approxOp{#2}}
+\newcommand{\Capprox}[3][]{\CMathML@approx{#2}{#3}}
+ \def\CMathML@factorofOp{\mid}
+ \newcommand{\CfactorofOp}{\CMathML@factorofOp}
+\def\CMathML@factorof#1#2{#1\CMathML@factorofOp{#2}}
+\newcommand{\Cfactorof}[3][]{\CMathML@factorof{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CeqOp []',
+ "<ltx:XMTok meaning='eq' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ceq [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='eq' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CneqOp []',
+ "<ltx:XMTok meaning='neq' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cneq [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='neq' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CgtOp []',
+ "<ltx:XMTok meaning='gt' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cgt [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='gt' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CltOp []',
+ "<ltx:XMTok meaning='lt' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Clt [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='lt' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CgeqOp []',
+ "<ltx:XMTok meaning='geq' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cgeq [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='geq' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CleqOp []',
+ "<ltx:XMTok meaning='leq' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cleq [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='leq' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CequivalentOp []',
+ "<ltx:XMTok meaning='equivalent' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cequivalent [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='equivalent' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>");
+DefConstructor('\CapproxOp []',
+ "<ltx:XMTok meaning='approx' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Capprox [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='approx' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CfactorofOp []',
+ "<ltx:XMTok meaning='factorof' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cfactorof [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='factorof' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+
+ \def\CMathML@intOp{\int}
+ \newcommand{\CintOp}{\CMathML@intOp}
+\def\CMathML@int#1{\CMathML@intOp{#1}}
+\newcommand{\Cint}[2][]{\CMathML@int{#2}}
+\def\CMathML@intLimits#1#2#3#4{\CMathML@intOp_{#2}^{#3}{#4}d{#1}} %bvars,llimit, ulimit,body
+\newcommand{\CintLimits}[5][]{\CMathML@intLimits{#2}{#3}{#4}{#5}}
+\def\CMathML@intSet#1#2{\CMathML@intOp_{#1}{#2}}% set,function
+\newcommand{\CintDA}[3][]{\CMathML@intSet{#2}{#3}}
+\def\CMathML@intCond#1#2#3{\CMathML@intOp_{#2}{#3}d{#1}} %bvars, condition, body
+\newcommand{\CintCond}[4][]{\CMathML@intCond{#2}{#3}{#4}}
+
+%</sty>
+%<*ltxml>
+DefConstructor('\CintOp []',
+ "<ltx:XMTok meaning='int' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cint [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CintLimits [] {}{}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "<ltx:XMArg>#5</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CintDA [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CintCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='int' role='INTOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@diff#1{#1'}
+\newcommand{\Cdiff}[2][]{\CMathML@diff{#2}}
+\def\CMathML@ddiff#1#2{{d{#2}(#1)\over{d{#1}}}}
+\newcommand{\Cddiff}[3][]{\CMathML@ddiff{#2}{#3}}
+\def\CMathML@partialdiff#1#2#3{{\partial^{#1}\over\partial{#2}}{#3}}% degree, bvars, body
+\newcommand{\Cpartialdiff}[4][]{\CMathML@partialdiff{#2}{#3}{#4}}
+\newcommand{\Cdegree}[2]{#1^{#2}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cdiff [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='diff' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cddiff [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='diff' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cpartialdiff [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='diff' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "?#2(<ltx:XMArg>#2</ltx:XMArg>)()"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cdegree {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='degree'/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#1</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@limit#1#2#3{\lim_{#1\rightarrow{#2}}{#3}}
+\newcommand{\Climit}[4][]{\CMathML@limit{#2}{#3}{#4}} % bvar, lowlimit, scope
+\def\CMathML@limitCond#1#2#3{\lim_{#2}{#3}}
+\newcommand{\ClimitCond}[4][]{\CMathML@limitCond{#2}{#3}{#4}} % bvars, condition, scope
+%</sty>
+%<*ltxml>
+DefConstructor('\Climit [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='limit' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\ClimitCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='limit' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@tendstoOp{\rightarrow}
+ \newcommand{\CtendstoOp}{\CMathML@tendstoOp}
+\def\CMathML@tendsto#1#2{#1\CMathML@tendstoOp{#2}}
+\newcommand{\Ctendsto}[3][]{\CMathML@tendsto{#2}{#3}}
+ \def\CMathML@tendstoAboveOp{\searrow}
+ \newcommand{\CtendstoAboveOp}{\CMathML@tendstoAboveOp}
+\def\CMathML@tendstoAbove#1#2{#1\searrow{#2}}
+\newcommand{\CtendstoAbove}[3][]{\CMathML@tendstoAbove{#2}{#3}}
+ \def\CMathML@tendstoBelowOp{\nearrow}
+ \newcommand{\CtendstoBelowOp}{\CMathML@tendstoBelowOp}
+\def\CMathML@tendstoBelow#1#2{#1\CMathML@tendstoBelowOp{#2}}
+\newcommand{\CtendstoBelow}[3][]{\CMathML@tendstoBelow{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CtendstoOp []',
+ "<ltx:XMTok meaning='tendsto' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ctendsto [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='RELOP' meaning='tendsto' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CtendstoAboveOp []',
+ "<ltx:XMTok meaning='tendsto' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CtendstoAbove [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='RELOP'meaning='tendsto' type='above' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CtendstoBelowOp []',
+ "<ltx:XMTok meaning='tendsto' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CtendstoBelow [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='RELOP' meaning='tendsto' type='below' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@divergence#1{\nabla\cdot{#1}}
+\newcommand{\Cdivergence}[2][]{\CMathML@divergence{#2}}
+\def\CMathML@grad#1{\nabla{#1}}
+\newcommand{\Cgrad}[2][]{\CMathML@grad{#2}}
+\def\CMathML@curl#1{\nabla\times{#1}}
+\newcommand{\Ccurl}[2][]{\CMathML@curl{#2}}
+\def\CMathML@laplacian#1{\nabla^2#1}
+\newcommand{\Claplacian}[2][]{\CMathML@laplacian{#2}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cdivergence [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='divergence' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cgrad [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='grad' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Curl [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='url' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Claplacian [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='OPFUNCTION' meaning='laplacian' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Sets and their Operations}\label{impl:sets}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@set#1{\left\{#1\right\}}
+\newcommand{\Cset}[2][]{\CMathML@set{#2}}
+\def\CMathML@setRes#1#2{\{#1|#2\}}
+\newcommand{\CsetRes}[3][]{\CMathML@setRes{#2}{#3}}
+\def\CMathML@setCond#1#2#3{\{#2|#3\}}
+\newcommand{\CsetCond}[4][]{\CMathML@setCond{#2}{#3}{#4}}
+\def\CMathML@setDA#1#2#3{\{#1\in{#2}|#3\}}
+\newcommand{\CsetDA}[4][]{\CMathML@setDA{#2}{#3}{#4}}
+ \def\CMathML@listOp{\mbox{list}}
+ \newcommand{\ClistOp}{\CMathML@listOp}
+\def\CMathML@list#1{\CMathML@listOp({#1})}
+\newcommand{\Clist}[2][]{\CMathML@list{#2}}
+ \def\CMathML@unionOp{\cup}
+ \newcommand{\CunionOp}{\CMathML@unionOp}
+\def\CMathML@union#1{\assoc[p=500]{\CMathML@unionOp}{#1}}
+\newcommand{\Cunion}[2][]{\CMathML@union{#2}}
+ \def\CMathML@intersectOp{\cap}
+ \newcommand{\CintersectOp}{\CMathML@intersectOp}
+\def\CMathML@intersect#1{\assoc[p=400]{\CMathML@intersectOp}{#1}}
+\newcommand{\Cintersect}[2][]{\CMathML@intersect{#2}}
+ \def\CMathML@inOp{\in}
+ \newcommand{\CinOp}{\CMathML@inOp}
+\def\CMathML@in#1#2{#1\CMathML@inOp{#2}}
+\newcommand{\Cin}[3][]{\CMathML@in{#2}{#3}}
+ \def\CMathML@notinOp{\notin}
+ \newcommand{\CnotinOp}{\CMathML@notinOp}
+\def\CMathML@notin#1#2{#1\CMathML@notinOp{#2}}
+\newcommand{\Cnotin}[3][]{\CMathML@notin{#2}{#3}}
+ \def\CMathML@setdiffOp{\setminus}
+ \newcommand{\CsetdiffOp}{\CMathML@setdiffOp}
+\def\CMathML@setdiff#1#2{#1\CMathML@setdiffOp{#2}}
+\newcommand{\Csetdiff}[3][]{\CMathML@setdiff{#2}{#3}}
+ \def\CMathML@cardOp{\#}
+ \newcommand{\CcardOp}{\CMathML@cardOp}
+\def\CMathML@card#1{\CMathML@cardOp #1}
+\newcommand{\Ccard}[2][]{\CMathML@card{#2}}
+ \def\CMathML@cartesianproductOp{\times}
+ \newcommand{\CcartesianproductOp}{\CMathML@cartesianproductOp}
+\def\CMathML@cartesianproduct#1{\assoc[p=400]{\CMathML@cartesianproductOp}{#1}}
+\newcommand{\Ccartesianproduct}[2][]{\CMathML@cartesianproduct{#2}}
+ \def\CMathML@subsetOp{\subseteq}
+ \newcommand{\CsubsetOp}{\CMathML@subsetOp}
+\def\CMathML@subset#1{\assoc[p=700]{\CMathML@subsetOp}{#1}}
+\newcommand{\Csubset}[2][]{\CMathML@subset{#2}}
+ \def\CMathML@prsubsetOp{\subset}
+ \newcommand{\CprsubsetOp}{\CMathML@prsubsetOp}
+\def\CMathML@prsubset#1{\assoc[p=700]{\CMathML@prsubsetOp}{#1}}
+\newcommand{\Cprsubset}[2][]{\CMathML@prsubset{#2}}
+ \def\CMathML@notsubsetOp{\not\subseteq}
+ \newcommand{\CnotsubsetOp}{\CMathML@notsubsetOp}
+\def\CMathML@notsubset#1#2{#1\CMathML@notsubsetOp{#2}}
+\newcommand{\Cnotsubset}[3][]{\CMathML@notsubset{#2}{#3}}
+ \def\CMathML@notprsubsetOp{\not\subset}
+ \newcommand{\CnotprsubsetOp}{\CMathML@notprsubsetOp}
+\def\CMathML@notprsubset#1#2{#1\CMathML@notprsubsetOp{#2}}
+\newcommand{\Cnotprsubset}[3][]{\CMathML@notprsubset{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cset [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='set' role='CONSTRUCTOR' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CsetRes [] {}{}',
+ "<ltx:XMApp role='BIGOP'>"
+ . "<ltx:XMTok role='BIGOP' meaning='set' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg role='BVAR'>#2</ltx:XMArg>"
+ . "<ltx:XMArg role='CONDITION'>#3</ltx:XMArg>"
+ . "<ltx:XMArg role='SCOPE'>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CsetCond [] {}{}{}',
+ "<ltx:XMApp role='BIGOP'>"
+ . "<ltx:XMTok role='BIGOP' meaning='set' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg role='BVAR'>#2</ltx:XMArg>"
+ . "<ltx:XMArg role='CONDITION'>#3</ltx:XMArg>"
+ . "<ltx:XMArg role='SCOPE'>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CsetDA [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='set' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg role='BVAR'>#2</ltx:XMArg>"
+ . "<ltx:XMArg role='DOMAINOFAPPLICATION'>#3</ltx:XMArg>"
+ . "<ltx:XMArg role='SCOPE'>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\ClistOp []',
+ "<ltx:XMTok meaning='list' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Clist [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='list' role='CONSTRUCTOR' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CunionOp []',
+ "<ltx:XMTok meaning='union' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cunion [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='union' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CintersectOp []',
+ "<ltx:XMTok meaning='intersect' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cintersect [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='intersect' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CinOp []',
+ "<ltx:XMTok meaning='in' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cin [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='in' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CnotinOp []',
+ "<ltx:XMTok meaning='notin' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cnotin [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='notin' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CsubsetOp []',
+ "<ltx:XMTok meaning='subset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Csubset [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='subset' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CprsubsetOp []',
+ "<ltx:XMTok meaning='prsubset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cprsubset [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='prsubset' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\CnotsubsetOp []',
+ "<ltx:XMTok meaning='notsubset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cnotsubset [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='notsubset' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CnotprsubsetOp []',
+ "<ltx:XMTok meaning='notprsubset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cnotprsubset [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='notprsubset' role='RELOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CsetdiffOp []',
+ "<ltx:XMTok meaning='setdiff' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Csetdiff [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='setdiff' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CcardOp []',
+ "<ltx:XMTok meaning='card' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ccard [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='card' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CcartesianproductOp []',
+ "<ltx:XMTok meaning='cartesianproduct' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ccartesianproduct [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='cartesianproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+%</ltxml>
+% \end{macrocode}
+% The next set of macros are needed, since they are presentational.
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@supsetOp{\supseteq}
+ \newcommand{\CsupsetOp}{\CMathML@supsetOp}
+\def\CMathML@supset#1{\assoc[p=700]{\CMathML@supsetOp}{#1}}
+\newcommand{\Csupset}[2][]{\CMathML@supset{#2}}
+ \def\CMathML@prsupsetOp{\supset}
+ \newcommand{\CprsupsetOp}{\CMathML@prsupsetOp}
+\def\CMathML@prsupset#1{\assoc[p=700]{\CMathML@prsupsetOp}{#1}}
+\newcommand{\Cprsupset}[2][]{\CMathML@prsupset{#2}}
+ \def\CMathML@notsupsetOp{\not\supseteq}
+ \newcommand{\CnotsupsetOp}{\CMathML@notsupsetOp}
+\def\CMathML@notsupset#1#2{#1\CMathML@notsupsetOp{#2}}
+\newcommand{\Cnotsupset}[3][]{\CMathML@notsupset{#2}{#3}}
+ \def\CMathML@notprsupsetOp{\not\supset}
+ \newcommand{\CnotprsupsetOp}{\CMathML@notprsupsetOp}
+\def\CMathML@notprsupset#1#2{#1\CMathML@notprsupsetOp{#2}}
+\newcommand{\Cnotprsupset}[3][]{\CMathML@notprsupset{#2}{#3}}
+%</sty>
+% \end{macrocode}
+%
+% On the semantic side (in {\latexml}), we need to implement them in terms of the
+% {\mathml} elements. Fortunately, we can just turn them around. \ednote{ooooops, this
+% does not work for the associative ones.}
+%
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\CsupsetOp []',
+ "<ltx:XMTok meaning='supset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CprsupsetOp []',
+ "<ltx:XMTok meaning='prsupset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CnotsupsetOp []',
+ "<ltx:XMTok meaning='notsupset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CnotprsupsetOp []',
+ "<ltx:XMTok meaning='notprsupset' role='ID' ?#1(definitionURL='#1')()/>");
+DefMacro('\Csupset[]{}','\Csubset[#1]{#2}');
+DefMacro('\Cprsupset[]{}','\Cprsubset[#1]{#2}');
+DefMacro('\Cnotsupset[]{}{}','\Cnotsubset[#1]{#3}{#2}');
+DefMacro('\Cnotprsupset[]{}{}','\Cnotprsubset[#1]{#3}{#2}');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@UnionDAOp{\bigwedge}
+ \newcommand{\CUnionDAOp}{\CMathML@UnionDAOp}
+\def\CMathML@UnionDA#1#2{\CMathML@UnionDAOp_{#1}{#2}} % set, scope
+\newcommand{\CUnionDA}[3][]{\CMathML@UnionDA{#2}{#3}}
+\def\CMathML@UnionCond#1#2#3{\CMathML@UnionDAOp_{#2}{#3}} % bvars,condition, scope
+\newcommand{\CUnionCond}[4][]{\CMathML@UnionCond{#2}{#2}{#3}}
+ \def\CMathML@IntersectDAOp{\bigvee}
+ \newcommand{\CIntersectDAOp}{\CMathML@IntersectDAOp}
+\def\CMathML@IntersectDA#1#2{\CMathML@IntersectDAOp_{#1}{#2}} % set, scope
+\newcommand{\CIntersectDa}[3][]{\CMathML@IntersectDA{#2}{#3}}
+\def\CMathML@IntersectCond#1#2#3{\CMathML@IntersectDAOp_{#2}{#3}}% bvars,condition, scope
+\newcommand{\CIntersectCond}[4][]{\CMathML@IntersectCond{#2}{#3}{#4}}
+ \def\CMathML@CartesianproductDAOp{\bigoplus}
+ \newcommand{\CCartesianproductDAOp}{\CMathML@CartesianproductDAOp}
+\def\CMathML@CartesianproductDA#1#2{\CMathML@CartesianproductDAOp_{#1}{#2}} % set, scope
+\newcommand{\CCartesianproductDA}[3][]{\CMathML@CartesianproductDA{#2}{#3}}
+\def\CMathML@CartesianproductCond#1#2#3{\CMathML@CartesianproductDAOp_{#2}{#3}}% bvars,condition, scope
+\newcommand{\CCartesianproductCond}[4][]{\CMathML@CartesianproductCond{#2}{#3}{#4}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CUnionDAOp []',
+ "<ltx:XMTok meaning='union' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CUnionDA [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='union' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CUnionCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='union' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CIntersectDaOp []',
+ "<ltx:XMTok meaning='intersect' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CIntersectDa [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='intersect' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CIntersectCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='intersect' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CCartesianproductDaOp []',
+ "<ltx:XMTok meaning='cartesianproduct' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CCartesianproductDa [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='cartesianproduct' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CCartesianproductCond [] {}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='BIGOP' meaning='cartesianproduct' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Sequences and Series}\label{impl:sequences}
+%
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@sumOp{\sum}
+ \newcommand{\CsumOp}{\CMathML@sumOp}
+\def\CMathML@sumLimits#1#2#3#4{\CMathML@sumOp_{#1=#2}^{#3}#4}% bvar, llimit, ulimit, body
+\newcommand{\CsumLimits}[5][]{\CMathML@sumLimits{#2}{#3}{#4}{#5}}
+\def\CMathML@sumCond#1#2#3{\CMathML@sumOp_{#1\in{#2}}#3} % bvar, condition, body
+\newcommand{\CsumCond}[4][]{\CMathML@sumCond{#2}{#3}{#4}}
+\def\CMathML@sumDA#1#2{\CMathML@sumOp_{#1}#2} % set, body
+\newcommand{\CsumDA}[3][]{\CMathML@sumDA{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CsumOp []',
+ "<ltx:XMTok meaning='sum' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CsumLimits [] {}{}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='sum' role='SUMOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "#5</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+% \ednote{complete the other cases}\ednote{add a keyword argument to all newcommands}
+% \begin{macrocode}
+%<*sty>
+ \def\CMathML@prodOp{\prod}
+ \newcommand{\CprodOp}{\CMathML@prodOp}
+\def\CMathML@prodLimits#1#2#3#4{\CMathML@prodOp_{#1=#32^{#3}#4}}% bvar, llimit, ulimit, body
+\newcommand{\CprodLimits}[5][]{\CMathML@prodLimits{#2}{#3}{#4}{#5}}
+\def\CMathML@prodCond#1#2#3{\CMathML@prodOp_{#1\in{#2}}#3} % bvar, condition, body
+\newcommand{\CprodCond}[4][]{\CMathML@prodCond{#2}{#3}{#4}}
+\def\CMathML@prodDA#1#2{\CMathML@prodOp_{#1}#2} % set, body
+\newcommand{\CprodDA}[3]{\CMathML@prodDA{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\CprodOp []',
+ "<ltx:XMTok meaning='prod' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\CprodLimits [] {}{}{}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='prod' role='SUMOP' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg><ci>#2</ci></ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "<ltx:XMArg>#4</ltx:XMArg>"
+ . "#5</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+% \ednote{complete the other cases}
+% \subsection{Elementary Classical Functions}\label{impl:specfun}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@sin#1{\sin(#1)}
+\newcommand{\Csin}[2][]{\CMathML@sin{#2}}
+\def\CMathML@cos#1{\cos(#1)}
+\newcommand{\Ccos}[2][]{\CMathML@cos{#2}}
+\def\CMathML@tan#1{\tan(#1)}
+\newcommand{\Ctan}[2][]{\CMathML@tan{#2}}
+\def\CMathML@sec#1{\sec(#1)}
+\newcommand{\Csec}[2][]{\CMathML@sec{#2}}
+\def\CMathML@csc#1{\csc(#1)}
+\newcommand{\Ccsc}[2][]{\CMathML@csc{#2}}
+\def\CMathML@cot#1{\cot(#1)}
+\newcommand{\Ccot}[2][]{\CMathML@cot{#2}}
+\def\CMathML@sinh#1{\sinh(#1)}
+\newcommand{\Csinh}[2][]{\CMathML@sinh{#2}}
+\def\CMathML@cosh#1{\cosh(#1)}
+\newcommand{\Ccosh}[2][]{\CMathML@cosh{#2}}
+\def\CMathML@tanh#1{\tanh(#1)}
+\newcommand{\Ctanh}[2][]{\CMathML@tanh{#2}}
+\def\CMathML@sech#1{\mbox{sech}(#1)}
+\newcommand{\Csech}[2][]{\CMathML@sech{#2}}
+\def\CMathML@csch#1{\mbox{csch}(#1)}
+\newcommand{\Ccsch}[2][]{\CMathML@csch{#2}}
+\def\CMathML@coth#1{\mbox{coth}(#1)}
+\newcommand{\Ccoth}[2][]{\CMathML@coth{#2}}
+\def\CMathML@arcsin#1{\arcsin(#1)}
+\newcommand{\Carcsin}[2][]{\CMathML@arcsin{#2}}
+\def\CMathML@arccos#1{\arccos(#1)}
+\newcommand{\Carccos}[2][]{\CMathML@arccos{#2}}
+\def\CMathML@arctan#1{\arctan(#1)}
+\newcommand{\Carctan}[2][]{\CMathML@arctan{#2}}
+\def\CMathML@arccosh#1{\mbox{arccosh}(#1)}
+\newcommand{\Carccosh}[2][]{\CMathML@arccosh{#2}}
+\def\CMathML@arccot#1{\mbox{arccot}(#1)}
+\newcommand{\Carccot}[2][]{\CMathML@arccot{#2}}
+\def\CMathML@arccoth#1{\mbox{arccoth}(#1)}
+\newcommand{\Carccoth}[2][]{\CMathML@arccoth{#2}}
+\def\CMathML@arccsc#1{\mbox{arccsc}(#1)}
+\newcommand{\Carccsc}[2][]{\CMathML@arccsc{#2}}
+\def\CMathML@arcsinh#1{\mbox{arcsinh}(#1)}
+\newcommand{\Carcsinh}[2][]{\CMathML@arcsinh{#2}}
+\def\CMathML@arctanh#1{\mbox{arctanh}(#1)}
+\newcommand{\Carctanh}[2][]{\CMathML@arctanh{#2}}
+
+\def\CMathML@exp#1{\exp(#1)}
+\newcommand{\Cexp}[2][]{\CMathML@exp{#2}}
+\def\CMathML@ln#1{\ln(#1)}
+\newcommand{\Cln}[2][]{\CMathML@ln{#2}}
+\def\CMathML@log#1#2{\log_{#1}(#2)}
+\newcommand{\Clog}[3][]{\CMathML@log{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Csin [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='sin' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccos [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='cos' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ctan [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='tan' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Csec [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='sec' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccsc [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='csc' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccot [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='cot' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Csinh [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='sinh' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccosh [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='cosh' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ctanh [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='tanh' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Csech [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='sech' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccsch [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='csch' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ccoth [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='coth' role='TRIGFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carcsin [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arcsin' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carccos [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arccos' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carctan [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arctan' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carcsec [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arcsec' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carccsc [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arccsc' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carccot [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arccot' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carcsinh [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arcsinh' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carccosh [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arccosh' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carctanh [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arctanh' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carcsech [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arcsech' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carccsch [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arccsch' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Carccoth [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='arccoth' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cexp [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='exp' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cln [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='ln' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Clog [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='log' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Statistics}\label{impl:statistics}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@mean#1{\mbox{mean}(#1)}
+\newcommand{\Cmean}[2][]{\CMathML@mean{#2}}
+\def\CMathML@sdev#1{\mbox{std}(#1)}
+\newcommand{\Csdev}[2][]{\CMathML@sdev{#2}}
+\def\CMathML@var#1{\mbox{var}(#1)}
+\newcommand{\Cvar}[2][]{\CMathML@var{#2}}
+\def\CMathML@median#1{\mbox{median}(#1)}
+\newcommand{\Cmedian}[2][]{\CMathML@median{#2}}
+\def\CMathML@mode#1{\mbox{mode}(#1)}
+\newcommand{\Cmode}[2][]{\CMathML@mode{#2}}
+\def\CMathML@moment#1#2{\langle{#2}^{#1}\rangle}% degree, momentabout, scope
+\newcommand{\Cmoment}[3][]{\CMathML@moment{#2}{#3}}
+\def\CMathML@momentA#1#2{\langle{#2}^{#1}\rangle}% degree, momentabout, scope
+\newcommand{\CmomentA}[4][]{\CMathML@momentA{#2}{#3}{#4}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cmean [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='mean' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Csdev [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='sdev' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cvar [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='var' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cmedian [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='median' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cmode [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='mode' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cmoment [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='moment' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxml>
+% \end{macrocode}
+% \ednote{we do not seem to need the momentabout.}\ednote{moment and momentA have funny
+% elided arguments}
+%
+% \subsection{Linear Algebra}\label{impl:linalg}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@vector#1{(#1)}
+\newcommand{\Cvector}[2][]{\CMathML@vector{#2}}
+\def\CMathML@matrix#1#2{\left(\begin{array}{#1}#2\end{array}\right)}% row pattern, body
+\newcommand{\Cmatrix}[3][]{\CMathML@matrix{#2}{#3}}
+\def\CMathML@determinant#1{\left|#1\right|}
+\newcommand{\Cdeterminant}[2][]{\CMathML@determinant{#2}}
+\def\CMathML@transpose#1{#1^\top}
+\newcommand{\Ctranspose}[2][]{\CMathML@transpose{#2}}
+\def\CMathML@selector#1#2{#1_{#2}}
+\newcommand{\Cselector}[3][]{\CMathML@selector{#2}{#3}}
+ \def\CMathML@vectproductOp{\cdot}
+ \newcommand{\CvectproductOp}{\CMathML@vectproductOp}
+\def\CMathML@vectproduct#1#2{#1\CMathML@vectproductOp{#2}}
+\newcommand{\Cvectproduct}[3][]{\CMathML@vectproduct{#2}{#3}}
+\def\CMathML@scalarproduct#1#2{{#1}#2}
+\newcommand{\Cscalarproduct}[3][]{\CMathML@scalarproduct{#2}{#3}}
+ \def\CMathML@outerproductOp{\times}
+ \newcommand{\CouterproductOp}{\CMathML@outerproductOp}
+\def\CMathML@outerproduct#1#2{#1\CMathML@outerproductOp{#2}}
+\newcommand{\Couterproduct}[3][]{\CMathML@outerproduct{#2}{#3}}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cvector [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONSTRUCTOR' meaning='vector' ?#1(definitionURL='#1')()/>"
+ . "#2"
+ . "</ltx:XMApp>",
+ afterDigest=>sub { remove_math_commas($_[1], 2); });
+DefConstructor('\Cmatrix [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok role='CONSTRUCTOR' meaning='matrix' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cdeterminant [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='determinant' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Ctranspose [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='transpose' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cselector [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='selector' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CvectorproductOp []',
+ "<ltx:XMTok meaning='vectorproduct' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cvectorproduct [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='vectorproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\Cscalarproduct [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='scalarproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");
+DefConstructor('\CouterproductOp []',
+ "<ltx:XMTok meaning='outerproduct' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Couterproduct [] {}{}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='outerproduct' role='OPFUNCTION' ?#1(definitionURL='#1')()/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "<ltx:XMArg>#3</ltx:XMArg>"
+ . "</ltx:XMApp>");#$
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Constant and Symbol Elements}\label{impl:constants}
+%
+% \begin{macrocode}
+%<*sty>
+\def\CMathML@integers{{\mathbb{Z}}}
+\newcommand{\Cintegers}[1][]{\CMathML@integers}
+\def\CMathML@reals{{\mathbb{R}}}
+\newcommand{\Creals}[1][]{\CMathML@reals}
+\def\CMathML@rationals{{\mathbb{Q}}}
+\newcommand{\Crationals}[1][]{\CMathML@rationals}
+\def\CMathML@naturalnumbers{{\mathbb{N}}}
+\newcommand{\Cnaturalnumbers}[1][]{\CMathML@naturalnumbers}
+\def\CMathML@complexes{{\mathbb{C}}}
+\newcommand{\Ccomplexes}[1][]{\CMathML@complexes}
+\def\CMathML@primes{{\mathbb{P}}}
+\newcommand{\Cprimes}[1][]{\CMathML@primes}
+\def\CMathML@exponemtiale{e}
+\newcommand{\Cexponemtiale}[1][]{\CMathML@exponemtiale}
+\def\CMathML@imaginaryi{i}
+\newcommand{\Cimaginaryi}[1][]{\CMathML@imaginaryi}
+\def\CMathML@notanumber{{\mathrm{NaN}}}
+\newcommand{\Cnotanumber}[1][]{\CMathML@notanumber}
+\def\CMathML@true{{\mathrm{true}}}
+\newcommand{\Ctrue}[1][]{\CMathML@true}
+\def\CMathML@false{{\mathrm{false}}}
+\newcommand{\Cfalse}[1][]{\CMathML@false}
+\def\CMathML@emptyset{\emptyset}
+\newcommand{\Cemptyset}[1][]{\CMathML@emptyset}
+\def\CMathML@pi{\pi}
+\newcommand{\Cpi}[1][]{\CMathML@pi}
+\def\CMathML@eulergamma{\gamma}
+\newcommand{\Ceulergamma}[1][]{\CMathML@eulergamma}
+\def\CMathML@infinit{\infty}
+\newcommand{\Cinfinit}[1][]{\CMathML@infinit}
+%</sty>
+%<*ltxml>
+DefConstructor('\Cintegers []',
+ "<ltx:XMTok meaning='integers' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Creals []',
+ "<ltx:XMTok meaning='reals' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Crationals []',
+ "<ltx:XMTok meaning='rationals' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cnaturalnumbers []',
+ "<ltx:XMTok meaning='naturalnumbers' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ccomplexes []',
+ "<ltx:XMTok meaning='complexes' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cprimes []',
+ "<ltx:XMTok meaning='primes' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cexponentiale []',
+ "<ltx:XMTok meaning='exponentiale' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cimaginaryi []',
+ "<ltx:XMTok meaning='imaginaryi' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cnotanumber []',
+ "<ltx:XMTok meaning='notanumber' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ctrue []',
+ "<ltx:XMTok meaning='true' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cfalse []',
+ "<ltx:XMTok meaning='false' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cemptyset []',
+ "<ltx:XMTok meaning='emptyset' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cpi []',
+ "<ltx:XMTok meaning='pi' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Ceulergamma []',
+ "<ltx:XMTok meaning='eulergamma' role='ID' ?#1(definitionURL='#1')()/>");
+DefConstructor('\Cinfinit []',
+ "<ltx:XMTok meaning='infinit' role='ID' ?#1(definitionURL='#1')()/>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Extensions}\label{sec:impl:cmathmlx}
+% \begin{macro}{\Ccomplement}
+% \begin{macrocode}
+%<*styx>
+\def\CMathML@complement#1{#1^c}
+\newcommand{\Ccomplement}[2][]{\CMathML@complement{#2}}
+%</styx>
+%<*ltxmlx>
+DefConstructor('\Ccomplement [] {}',
+ "<ltx:XMApp>"
+ . "<ltx:XMTok meaning='complement' role='CSYMBOL'/>"
+ . "<ltx:XMArg>#2</ltx:XMArg>"
+ . "</ltx:XMApp>");
+%</ltxmlx>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Finale}\label{sec:impl:finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+% LocalWords: STeX cmathml symdefs CMathML dom codom Im ll reln fn bvar arith
+% LocalWords: alg lcm rels Ceq llimit ulimit bvars lowlimit specfun sech csch
+% LocalWords: coth arccosh arccot arccoth arccsc arcsinh arctanh logbase std
+% LocalWords: var momentabout linalg matrixrow bruce NaN stex cnxml symdef sc
+% LocalWords: DefinitionURLs domainofapplication CmomentA concl iffalse scsys
+% LocalWords: cmathml.dtx sc newenvironment pcmtab hline cmtab hbox ttfamily
+% LocalWords: xslt xslt mathml scshape latexml twintoo atwin atwintoo texttt
+% LocalWords: fileversion maketitle newpage tableofcontents newpage exfig exp
+% LocalWords: usepackage vspace cmathml-eip varpi ednote nd cmatml Capply Cexp
+% LocalWords: cdot ary Cond bigcup subseteq Cnaturalnumbers Cunion csymbol Ccn
+% LocalWords: Ccsymbol camthml Cinverse Ccompose Cident Cdomain Ccodomain Clt
+% LocalWords: Cimage Clambda ClambdaDA Crestrict ccinterval cointerval Cpiece
+% LocalWords: ocinterval oointerval Cccinterval Cccinterval Cccinterval Cminus
+% LocalWords: Ccointerval Ccointerval Ccointerval Cocinterval Cocinterval Cmax
+% LocalWords: Cocinterval Coointerval Coointerval Coointerval Cpiecewise Cplus
+% LocalWords: Cotherwise footnotesize Cuminus Cquotient Cfactorial Cdivide Cgt
+% LocalWords: Cpower Ctimes Croot Cmin Cgcd Cand Cxor Cnot Cimplies forall cn
+% LocalWords: Cforall CforallCond Cexists CexistsCond Cconjugate Carg Creal eq
+% LocalWords: Cimaginary Cfloor Cceiling Cneq Cgeq Cleq Cequivalent Capprox gt
+% LocalWords: Cfactorof Cint CintLimits CintDA CintCond Cinfinit infty Creals
+% LocalWords: mathbb Cdiff Cddiff varible Cpartialdiff Cdegree Climit Ctendsto
+% LocalWords: ClimitCond CtendstoAbove CtendstoBelow tendsto Csin Csin Ccos ln
+% LocalWords: Cdivergence Cgrad Ccurl Claplacian Cset Clist Cintersect Ccard
+% LocalWords: Ccartesianproduct Csetdiff Cnotin CCartesianproductDA Csubset ln
+% LocalWords: CCartesianproductCond Cprsubset Cnotsubset Cnotprsubset reations
+% LocalWords: Csupset Cprsupset Cnotsupset Cnotprsupset CsumLimits CsumCond
+% LocalWords: CsumDA CprodLimist CprodCond CprodDA Cintegers CprodLimits Ctan
+% LocalWords: CprodLimits CprodLimits Csec Ccsc Ccot Csinh Ccosh Ctanh Csech
+% LocalWords: Ccsch Ccoth Carcsin Carccos Carctan Carcsec Carccsc Carccot Cln
+% LocalWords: Carccosh Carccosh Carccosh Carcsinh Carctanh Carcsech Carccsch
+% LocalWords: Carccoth Cln Cln Cmean Csdev Cvar Cmedian Cmode Cmoment Cvector
+% LocalWords: Cmatrix Cdeterminant Ctranspose Cselector Cvectorproduct Cprimes
+% LocalWords: Cscalarproduct Couterproduct Cvectproduct Cvectproduct Ctrue Cpi
+% LocalWords: Cvectproduct Crationals Ccomplexes Cexponentiale Cimaginaryi ltx
+% LocalWords: Cfalse Cemptyset Ceulergamma Cexponemtiale Cexponemtiale impl
+% LocalWords: Cexponemtiale Cnotanumber Cnotanumber Cnotanumber cmathmlx ltxml
+% LocalWords: Ccomplement printbibliography textsf langle textsf langle ltxml
+% LocalWords: plementing ltxmlx itroduce unlist whatsit argno newcommand circ
+% LocalWords: OPFUNCTION assoc ident mathrm mbox mathbf uminus bmod sqrt oplus
+% LocalWords: Longrightarrow bigwedge bigvee bigoplus esistsCont overline eqOp
+% LocalWords: lfloor rfloor lceil rceil neqOp neq gtOp geqOp geq leqOp leq csc
+% LocalWords: equiv approxOp approx factorofOp factorof ddiff partialdiff csc
+% LocalWords: rightarrow searrow nearrow RELOP'meaning setdiffOp setdiff sinh
+% LocalWords: cartesianproductOp cartesianproduct prsubsetOp prsubset supseteq
+% LocalWords: notsubsetOp notsubset notprsubsetOp notprsubset prsupsetOp sinh
+% LocalWords: prsupset notsupsetOp notsupset notprsupsetOp notprsupset ooooops
+% LocalWords: CsumOp newcommands CprodOp tanh tanh arccos arccos TRIGFUNCTION
+% LocalWords: arcsec arcsech arccsch sdev vectproductOp vectproduct imaginaryi
+% LocalWords: scalarproduct outerproductOp outerproduct vectorproduct emptyset
+% LocalWords: naturalnumbers exponemtiale notanumber emptyset eulergamma
+% LocalWords: exponentiale doctex
diff --git a/Master/texmf-dist/source/latex/stex/cmathml/cmathml.ins b/Master/texmf-dist/source/latex/stex/cmathml/cmathml.ins
new file mode 100644
index 00000000000..36ec44c47e7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/cmathml/cmathml.ins
@@ -0,0 +1,37 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex cmathml.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{cmathml.sty}{\from{cmathml.dtx}{sty}}
+\generate{\file{cmathmlx.sty}{\from{cmathml.dtx}{styx}}
+% generated the LaTeXML bindings
+\nopreamble\nopostamble
+\file{cmathml.sty.ltxml}{\from{cmathml.dtx}{ltxml}}}
+\file{cmathmlx.sty.ltxml}{\from{cmathml.dtx}{ltxmlx}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory}
+\Msg{* searched by TeX and LaTeXML respectively.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/cnx/cnx.dtx b/Master/texmf-dist/source/latex/stex/cnx/cnx.dtx
new file mode 100644
index 00000000000..6bfc860eab4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/cnx/cnx.dtx
@@ -0,0 +1,1209 @@
+% \iffalse meta-comment
+% A LaTeX Class for CNXML
+% Copyright (c) 2006 Michael Kohlhase, all rights reserved
+% this file is released under the
+% Gnu Library Public Licences (LGPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/cnx/cnx.dtx $
+% \fi
+%
+% \iffalse
+%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<class>\ProvidesClass{cnx}[2012/01/28 v1.0 LaTeX Bindings for CNXML]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float,stex-logo}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{ctansvn}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: cnx.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/cnx/cnx.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{cnx.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{439}
+%
+% \changes{v0.1}{2005/12/06}{Initial Version}
+% \changes{v0.2}{2006/01/11}{Namespaces now work}
+% \changes{v1.0}{2006/01/11}{this is a good as it is every going to get}
+%
+% \GetFileInfo{cnx.cls}
+%
+% \MakeShortVerb{\|}
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\xml{\scshape{XML}}
+% \def\cnxml{\scshape{CNXml}}
+% \def\connexions{\scshape{Connexions}}
+% \def\element#1{{\ttfamily{#1}}}
+% \def\snippet#1{{\ttfamily{#1}}}
+% \def\cnxlatex{CNX\LaTeX}
+% \def\mathml{{\scshape{MathML}}}
+% \def\latexml{\hbox{{\LaTeX}ML}}
+% \title{{\cnxlatex}: A {\LaTeX}-based Syntax for Connexions Modules\thanks{Version {\fileversion}
+% (last revised {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% We present {\cnxlatex}, a collection of {\LaTeX} macros that allow to write
+% {\connexions} modules without leaving the {\LaTeX} workflow. Modules are authored in
+% {\cnxlatex} using only a text editor, transformed to PDF and proofread as usual. In
+% particular, the {\LaTeX} workflow is independent of having access to the {\connexions}
+% system, which makes {\cnxlatex} attractive for the initial version of single-author
+% modules.
+%
+% For publication, {\cnxlatex} modules are transformed to {\cnxml} via the {\latexml}
+% translator and can be uploaded to the {\connexions} system.
+% \end{abstract}
+%
+% \newpage\tableofcontents\newpage
+%
+%\section{Introduction}
+%
+% The Connexions project is a\ednote{continue; copy from somewhere...}
+%
+% The {\cnxml} format --- in particular the embedded content {\mathml} --- is hard to write
+% by hand, so we provide a set of environments that allow to embed the {\cnxml} document
+% model into {\LaTeX}.
+%
+%\section{The User Interface}
+%
+% This document is not a manual for the Connexions XML encoding, or a practical guide how
+% to write Connexions modules. We only document the {\LaTeX} bindings for {\cnxml} and will
+% presuppose experience with the format or familiarity with\ednote{cite the relevant stuff
+% here}. Note that formatting {\cnxlatex} documents with the {\LaTeX} formatter does
+% little to enforce the restrictions imposed by the {\cnxml} document model. You will need to
+% run the {\latexml} converter for that (it includes DTD validation) and any CNX-specific
+% quality assurance tools after that. \ednote{talk about Content {\mathml} and cmathml.sty
+% somewhere}
+%
+% The {\cnxlatex} class makes heavy use of the |KeyVal| package, which is part of your
+% {\LaTeX} distribution. This allows to add optional information to {\LaTeX} macros in the
+% form of key-value pairs: A macro |\foo| that takes a KeyVal argument and a regular one,
+% so a call might look like |\foo{bar}| (no KeyVal information given) or
+% |\foo[key1=val1,...,keyn=valn]{bar}|, where |key1|,\dots,|keyn| are predefined keywords
+% and values are {\LaTeX} token sequences that do not contain comma characters (though
+% they may contain blank characters). If a value needs to contain commas, then it must be
+% enclosed in curly braces, as in |\foo[args={a,comma,separated,list}]|. Note that the
+% order the key/value pairs appear in a KeyVal Argument is immaterial.
+%
+% \subsection{Package Options}\label{sec:user:options}
+%
+% The |cnx| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If this is
+% set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details and
+% customization options).
+%
+% \subsection{Document Structure}
+%
+% \begin{exfig}
+%\begin{verbatim}
+% \documentclass{cnx}
+% \begin{document}
+% \begin{cnxmodule}[name=Hello World,id=m4711]
+% \begin{ccontent}
+% \begin{cpara}[id=p01] Hello World\end{cpara}
+% \end{ccontent}
+% \end{cnxmodule}
+% \end{document}
+% \end{verbatim}
+% \caption{A Minimal {\cnxlatex} Document}\label{fig:minimal}
+%\end{exfig}
+%
+% The first set of {\cnxlatex} environments concern the top-level structure of the
+% modules. The minimal Connexions document in {\LaTeX} can be seen in
+% Figure~\ref{fig:minimal}: we still need the {\LaTeX} document environment, then
+% \DescribeEnv{cnxmodule}
+% the |cnxmodule| environment contains the module-specific information as a KeyVal
+% argument with the two keys: |id| for the module identifier supplied by the
+% {\connexions} system) and |name| for the title of the module.
+%
+% \DescribeEnv{ccontent}
+% The |content| environment delineates the module content from the metadata (see
+% Section~\ref{sec:metadata}). It is needed to make the conversion to {\cnxml} simpler.
+%
+% \DescribeEnv{c*section}
+% {\cnxml} knows three levels of sectioning, so the {\cnxlatex} class supplies three as
+% well: |csection|, |csubsection| and |csubsubsection|. In contrast to regular
+% {\LaTeX}, these are environments to keep the tight connection between the
+% formats. These environments take an optional KeyVal argument with key |id| for the
+% identifier and a regular argument for the title of the section (to be transformed into
+% the {\cnxml} {\element{name}} element).
+%
+% \DescribeEnv{cpara, cnote}
+% The lowest levels of the document structure are given by paragraphs and notes. The
+% |cpara| and |cnote| environment take a KeyVal argument with the |id| key for
+% identification, the latter also allows a |type| key for the note type (an unspecified
+% string\ednote{what are good values?}).
+%
+%
+% \subsection{Mathematics}
+%
+% Mathematical formulae are integrated into text via the {\LaTeX} math mode, i.e. wrapped
+% in |$| characters or between |\(| and |\)| for inline mathematics and wrapped in |$$| or
+% between |\[| and |\]| for display-style math. Note that {\cnxml} expects Content
+% {\mathml} as the representation format for mathematical formulae, while run-of-the-mill
+% {\LaTeX} only specifies the presentation (i.e. the two-dimensional layout of
+% formulae). The {\latexml} converter can usually figure out some of the content {\mathml}
+% from regular {\LaTeX}, in other cases, the author has to specify it e.g. using the
+% infrastructure supplied by the |cmathml| package.
+%
+% \DescribeEnv{cequation}
+% For numbered equations, {\cnxml} supplies the {\element{equation}} element, for which
+% {\cnxlatex} provides the |cequation| environment. This environment takes a KeyVal
+% argument with the |id| key for the (required) identifier.
+%
+%
+% \subsection{Statements}
+%
+% {\cnxml} provides special elements that make various types of claims; we
+% collectively call them statements.
+%
+% \DescribeEnv{cexample}
+% The |cexample| environment and |definition| elements take a KeyVal argument with key
+% |id| for identification.
+%
+%
+% \DescribeEnv{crule, statement, proof}
+% In {\cnxml}, the {\element{rule}} element is used to represent a general assertion
+% about the state of the world. The {\cnxlatex} |rule|\ednote{we have called this
+% ``crule'', since ``rule'' is already used by {\TeX}.} environment is its {\cnxlatex}
+% counterpart. It takes a KeyVal attribute with the keys |id| for identification, |type|
+% to specify the type of the assertion (e.g. ``Theorem'', ``Lemma'' or ``Conjecture''),
+% and |name|, if the assertion has a title. The body of the |crule| environment contains
+% the statement of assertion in the |statement| environment and (optionally) a proof in
+% the |proof| environment. Both take a KeyVal argument with an |id| key for
+% identification.
+%
+%\begin{exfig}
+%\begin{verbatim}
+% \begin{crule}[id=prop1,type=Proposition]
+% \begin{statement}[id=prop1s]
+% Sample statement
+% \end{statement}
+% \begin{proof}[id=prop1p]
+% Your favourite proof
+% \end{proof}
+% \end{crule}
+% \end{verbatim}
+% \caption{A Basic crule Example}\label{fig:crule}
+%\end{exfig}
+%
+% \DescribeEnv{definition, cmeaning} A definition defines a new technical term or concept
+% for later use. The |definition| environment takes a KeyVal argument with the keys |id|
+% for identification and |term| for the concept (definiendum) defined in this form. The
+% definition text is given in the |cmeaning| environment\footnote{we have called this
+% |cmeaning|, since |meaning| is already taken by {\TeX}}, which takes a KeyVal argument
+% with key |id| for identification. After the |cmeaning| environment, a |definition| can
+% contain arbitrarily many |cexample|s.
+%
+%\begin{exfig}
+%\begin{verbatim}
+% \begin{definition}{term=term-to-be-defined, id=termi-def]
+% \begin{cmeaning}[id=termi-meaning]
+% {\term{Term-to-be-defined}} is defined as: Sample meaning
+% \end{cmeaning}
+% \end{definition}
+%\end{verbatim}
+% \caption{A Basic {\tt{definition}} and {\tt{cmeaning}} Example}\label{fig:def-cmean}
+%\end{exfig}
+%
+% \subsection{Connexions: Links and Cross-References}
+%
+% As the name {\connexions} already suggests, links and cross-references are very
+% important for {\connexions} modules. {\cnxml} provides three kinds of them. Module
+% links, hyperlinks, and concept references.
+%
+% \DescribeMacro{cnxn}
+% Module links are specified by the |\cnxn| macro, which takes a keyval argument with
+% the keys |document|, |target|, and |strength|. The |document| key allows to specify
+% the module identifier of the desired module in the repository, if it is empty, then
+% the current module is intended. The |target| key allows to specify the document
+% fragment. Its value is the respective identifier (given by its |id| attribute in
+% {\cnxml} or the |id| key of the corresponding environment in {\cnxlatex}). Finally,
+% the |strength| key allows to specify the relevance of the link.
+%
+% The regular argument of the |\cnxn| macro is used to supply the link text.
+%
+%
+% \DescribeMacro{link}
+% Hyperlinks can be specified by the |\link| macro in {\cnxlatex}. It takes a KeyVal
+% argument with the key |src| to specify the URL of the link. The regular argument of
+% the |\link| macro is used to supply the link text.
+%
+%
+% \DescribeMacro{term}
+% The |\term| marco can be used to specify the\ednote{continue, pending Chuck's
+% investigation. }
+%
+%
+% \subsection{Metadata}\label{sec:metadata}
+%
+% Metadata is mostly managed by the system in {\connexions}, so we often do not need to
+% care about it. On the other hand, it influences the system, so if we have work on the
+% module extensively before converting it to {\cnxml}, it may be worth-wile specify some of
+% the data in advance.
+%
+% \begin{exfig}
+%\begin{verbatim}
+% \begin{metadata}[version=2.19,
+% created=2000/07/21,revised=2004/08/17 22:07:27.213 GMT-5]
+% \begin{authorlist}
+% \cnxauthor[id=miko,firstname=Michael,surname=Kohlhase,
+% email=m.kohlhase@iu-bremen.de]
+% \end{authorlist}
+% \begin{keywordlist}\keyword{Hello}\end{keywordlist}
+% \begin{cnxabstract}
+% A Minimal CNXLaTeX Document
+% \end{cnxabstract}
+% \end{metadata}
+% \end{verbatim}
+% \caption{Typical {\cnxlatex} Metadata}\label{fig:metadata}
+%\end{exfig}
+%
+% \DescribeEnv{metadata}
+% The |metadata| environment takes a KeyVal argument with the keys |version|, |created|,
+% and |revised| with the obvious meanings. The latter keys take ISO 8601 norm
+% representations for dates and times. Concretely, the format is
+% {\snippet{CCYY-MM-DDThh:mm:ss}} where ``{\snippet{CC}}'' represents the century,
+% ``{\snippet{YY}}'' the year, ``{\snippet{MM}}'' the month, and ``{\snippet{DD}}'' the
+% day, preceded by an optional leading ``{\snippet{-}}'' sign to indicate a negative
+% number. If the sign is omitted, ``{\snippet{+}}'' is assumed. The letter
+% ``{\snippet{T}}'' is the date/time separator and ``{\snippet{hh}}'',
+% ``{\snippet{mm}}'', ``{\snippet{ss}}'' represent hour, minutes, and seconds
+% respectively.
+%
+%
+% \DescribeEnv{authorlist, maintainerlist}
+% The lists of authors and maintainers can be specified in the |authorlist| and
+% |maintainerlist| environments, which take no arguments.
+%
+% \DescribeMacro{cnxauthor,maintainer}
+% The entries on this lists are specified by the |\cnxauthor| and |\maintainer|
+% macros. Which take a KeyVal argument specifying the individual. The |id| key is the
+% identifier for the person, the |honorific|, |firstname|, |other|, |surname|, and
+% |lineage| keys are used to specify the various name parts, and the |email| key is used
+% to specify the e-mail address of the person.
+%
+%
+% \DescribeEnv{keywordlist, keyword}
+% The keywords are specified with a list of |keyword| macros, which take the respective
+% keyword in their only argument, inside a |keyword| environment. Neither take any
+% KeyVal arguments.
+%
+%
+% \DescribeEnv{cnxabstract}
+% The abstract of a {\connexions} module is considered to be part of the metadata. It is
+% specified using the |cnxabstract| environment. It does not take any arguments.
+%
+%
+% \subsection{Exercises}
+%
+% \DescribeEnv{cexercise, cproblem, csolution}
+% An exercise or problem in {\connexions} is specified by the |cexercise| environment,
+% which takes an optional keyval argument with the keys |id| and |name|. It must contain
+% a |cproblem| environment for the problem statement and a (possibly) empty set of
+% |csolution| environments. Both of these take an optional keyval argument with the key
+% |id|.
+%
+% \subsection{Graphics, etc.}
+%
+% \DescribeMacro{cfigure} For graphics we will use the |cfigure|\ednote{probably better
+% call it {\tt{cgraphics}}} macro, which provides a non-floating environment for
+% including graphics into {\cnxml} files. |cfigure| takes three arguments first an
+% optional {\cnxml} keys, then the keys of the |graphicx| package in a regular argument
+% (leave that empty if you don't have any) and finally a path. So
+% \begin{center}
+% |\cfigure[id=foo,type=image/jpeg,caption=The first FOO]{width=7cm,height=2cm}{../images/foo}|
+% \end{center}
+% Would include a graphic from the file at the path |../images/foo|, equip this image with
+% a caption, and tell {\latexml} that\ednote{err, exactly what does it tell latexml?} the
+% original of the images has the MIME type |image/jpeg|.
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}\newpage
+%
+% \section{The Implementation}
+%
+% The |cnx| package generates to files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$}} and
+% {\textsf{$\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false). First we have the general options
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{omdoc}}
+% \end{macrocode}
+% Finally, we need to declare the end of the option declaration section to {\LaTeX}.
+% \begin{macrocode}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% We first make sure that the |sref|~\ctancite{Kohlhase:sref} and |graphicx| packages are
+% loaded.
+% \begin{macrocode}
+%<*cls>
+\RequirePackage{sref}
+\RequirePackage{graphicx}
+% \end{macrocode}
+%
+% The next step is to declare (a few) class options that handle the paper size; this is
+% useful for printing.
+% \begin{macrocode}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\ExecuteOptions{letterpaper}
+\ProcessOptions
+% \end{macrocode}
+% Finally, we input all the usual size settings. There is no sense to use something else,
+% and we initialize the page numbering counter and tell it to output the numbers in arabic
+% numerals (otherwise label and reference do not work).
+% \begin{macrocode}
+\input{size10.clo}
+\pagenumbering{roman}
+%</cls>
+% \end{macrocode}
+% Now comes the equivalent for {\latexml}: this is something that we will have throughout
+% this document. Every part of the {\TeX/\LaTeX} implementation has a {\latexml}
+% equivalent. We keep them together to ensure that they do not get out of sync.
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+RequirePackage('metakeys');
+% \end{macrocode}
+% We set up the necessary namespaces, the first one is the default one for {\cnxml}
+% \begin{macrocode}
+RegisterNamespace('cnx'=>"http://cnx.rice.edu/cnxml");
+RegisterNamespace('md'=>"http://cnx.rice.edu/mdml/0.4");
+RegisterNamespace('bib'=>"http://bibtexml.sf.net/");
+RegisterNamespace('m'=>"http://www.w3.org/1998/Math/MathML");
+% \end{macrocode}
+% For {\latexml} we also have to set up the correct document type information. The first line
+% gives the root element. The second gives the public identifier for the CNX DTD, then we
+% have its URL, and finally the CNX namespace.
+% \begin{macrocode}
+DocType("cnx:document",
+ "-//CNX//DTD CNXML 0.5 plus LaTeXML//EN",
+ "../dtd/cnxml+ltxml.dtd",
+ '#default'=>"http://cnx.rice.edu/cnxml",
+ 'md'=>"http://cnx.rice.edu/mdml/0.4",
+ 'bib'=>"http://bibtexml.sf.net/",
+ 'm'=>"http://www.w3.org/1998/Math/MathML",
+ 'ltx'=>"http://dlmf.nist.gov/LaTeXML");
+% \end{macrocode}
+%
+% And finally, we need to set up the counters for itemization, since we are defining a
+% class file from scratch.\ednote{this will have to change, when Bruce updates to the next
+% version (0.6?)}
+%
+% \begin{macrocode}
+NewCounter('@itemizei', 'document', idprefix=>'I');
+NewCounter('@itemizeii', '@itemizei', idprefix=>'I');
+NewCounter('@itemizeiii', '@itemizeii', idprefix=>'I');
+NewCounter('@itemizeiv', '@itemizeiii',idprefix=>'I');
+NewCounter('@itemizev', '@itemizeiv', idprefix=>'I');
+NewCounter('@itemizevi', '@itemizev', idprefix=>'I');
+
+NewCounter('enumi', '@itemizei', idprefix=>'i');
+NewCounter('enumii', '@itemizeii', idprefix=>'i');
+NewCounter('enumiii','@itemizeiii', idprefix=>'i');
+NewCounter('enumiv', '@itemizeiv', idprefix=>'i');
+# A couple of more levels, since we use these for ID's!
+NewCounter('enumv', '@itemizev', idprefix=>'i');
+NewCounter('enumvi', '@itemizevi', idprefix=>'i');
+
+DefMacro('\theenumi', '\arabic{enumi}');
+DefMacro('\theenumii', '\alph{enumii}');
+DefMacro('\theenumiii', '\roman{enumiii}');
+DefMacro('\theenumiv', '\Alph{enumiv}');
+
+NewCounter('equation', 'document', idprefix=>'E');
+DefMacro('\theequation', '\arabic{equation}');
+DefMacro('\textwidth','16cm');
+% \end{macrocode}
+%
+% And another thing that is now needed:
+%
+% \begin{macrocode}
+Let('\thedocument@ID','\@empty');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Document Structure}
+%
+% Now, we start with the document structure markup. The |cnxmodule| environment does not
+% add anything to the {\LaTeX} output, it's attributes only show up in the {\xml}. There
+% we have a slight complication: we have to put an |id| attribute on the |document|
+% element in {\cnxml}, but we cannot redefine the |document| environment in
+% {\LaTeX}. Therefore we specify the information in the |cnxmodule| environment. This
+% means however that we have to put in on the |document| element when we are already past
+% this. The solution here is that when we parse the |cnxmodule| environement, we store the
+% value and put it on the |document| element when we leave the |document| environment
+% (thanks for Ioan Sucan for the code).
+%
+% \begin{environment}{cnxmodule}
+% \begin{macrocode}
+%<*cls>
+\addmetakey{cnxmodule}{name}
+\srefaddidkey{cnxmodule}{id}
+\newenvironment{cnxmodule}[1][]{\metasetkeys{cnxmodule}{#1}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('cnxmodule','name','Semiverbatim');
+DefKeyVal('cnxmodule','id','Semiverbatim');
+DefEnvironment('{document}','<cnx:document>#body</cnx:document>',
+ beforeDigest=> sub { AssignValue(inPreamble=>0); },
+ afterDigest=> sub { $_[0]->getGullet->flush; return; });
+DefEnvironment('{cnxmodule} OptionalKeyVals:cnxmodule',
+ "<cnx:name>&KeyVal('#1','name')</cnx:name>\n#body\n",
+ afterDigestBegin => sub {
+ AssignValue('cnxmodule_id',
+ KeyVal($_[1]->getArg(1), 'id')->toString,
+ 'global');
+ });#$
+Tag('cnx:document', afterClose => sub {
+ $_[1]->setAttribute('id', LookupValue('cnxmodule_id'));
+ });
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{ccontent}
+% The |ccontent| environment is only used for transformation. Its optional |id| attribute
+% is not taken up in the {\LaTeX} bindings.
+% \begin{macrocode}
+%<*cls>
+\newenvironment{ccontent}{}{}
+%</cls>
+%<*ltxml>
+DefEnvironment('{ccontent}',"<cnx:content>#body</cnx:content>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{c*section}
+% The sectioning environments employ the obvious nested set of counters.
+% \begin{macrocode}
+%<*cls>
+\newcounter{section}
+\srefaddidkey{sectioning}{id}
+\newenvironment{csection}[2][]%
+{\stepcounter{section}\strut\\[1.5ex]\noindent%
+{\Large\bfseries\arabic{section}.~{#2}}\\[1.5ex]
+\metasetkeys{sectioning}{#1}}
+{}
+\newcounter{subsection}[section]
+\newenvironment{csubsection}[2][]
+{\refstepcounter{subsection}\strut\\[1ex]\noindent%
+{\large\bfseries{\arabic{section}.\arabic{subsection}.~#2\\[1ex]}}%
+\metasetkeys{sectioning}{#1}}%
+{}
+\newcounter{subsubsection}[subsection]
+\newenvironment{csubsubsection}[2][]
+{\refstepcounter{subsubsection}\strut\\[.5ex]\noindent
+{\bfseries\arabic{section}.\arabic{subsection}.\arabic{subsubsecction}~#2\\[.5ex]}%
+\metasetkeys{sectioning}{#1}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('sectioning','id','Semiverbatim');
+DefEnvironment('{csection}OptionalKeyVals:sectioning{}',
+ "<cnx:section %&KeyVals(#1)>\n"
+ . "?#2(<cnx:name>#2</cnx:name>\n)()"
+ . "#body\n</cnx:section>\n");
+DefEnvironment('{csubsection}OptionalKeyVals:sectioning{}',
+ "<cnx:section %&KeyVals(#1)>\n"
+ . "?#2(<cnx:name>#2</cnx:name>\n)()"
+ . "#body\n</cnx:section>\n");
+DefEnvironment('{csubsubsection}OptionalKeyVals:sectioning{}',
+ "<cnx:section %&KeyVals(#1)>\n"
+ . "?#2(<cnx:name>#2</cnx:name>\n)()"
+ . "#body\n</cnx:section>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{cpara}
+% For the |<cnx:para>| element we have to do some work, since we want them to be
+% numbered. This handling is adapted from Bruce Miller's |LaTeX.ltxml|
+% numbered.
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{para}{id}
+\newenvironment{cpara}[1][]{\metasetkeys{para}{#1}}{\par}
+%</cls>
+%<*ltxml>
+DefKeyVal('para','id','Semiverbatim');
+DefEnvironment('{cpara} OptionalKeyVals:para','<cnx:para %&KeyVals(#1)>#body</cnx:para>');
+sub number_para {
+ my($document,$node,$whatsit)=@_;
+ # Get prefix from first parent with an id.
+ my(@parents)=$document->findnodes('ancestor::*[@id]',$node); # find 1st id'd parent.
+ my $prefix= (@parents ? $parents[$#parents]->getAttribute('id')."." : '');
+ # Get the previous number within parent; Worried about intervening elements around para's, but...
+ my(@siblings)=$document->findnodes("preceding-sibling::cnx:para",$node);
+ my $n=1;
+ $n = $1+1 if(@siblings && $siblings[$#siblings]->getAttribute('id')=~/(\d+)$/);
+ $node->setAttribute(id=>$prefix."p$n"); }
+Tag('cnx:para',afterOpen=>\&number_para);
+DefConstructor('\par',sub { $_[0]->maybeCloseElement('cnx:para'); },alias=>"\\par\n");
+Tag('cnx:para', autoClose=>1, autoOpen=>1);
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{cnote}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{note}
+\addmetakey{note}{type}
+\newenvironment{cnote}[1][]%
+{\metasetkeys{note}{#1}\par\noindent\strut\hfill\begin{minipage}{10cm}{\bfseries\note@type}:~}%
+{\end{minipage}\hfill\strut\par}
+%</cls>
+%<*ltxml>
+DefKeyVal('note','id','Semiverbatim');
+DefKeyVal('note','type','Semiverbatim');
+DefEnvironment('{cnote}OptionalKeyVals:note','<cnx:note %&KeyVals(#1)>#body</cnx:note>');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Mathematics}
+%
+% \begin{environment}{cequation}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{equation}{id}
+\newenvironment{cequation}[1][]%
+{\metasetkeys{equation}{#1}\begin{displaymath}}
+{\end{displaymath}}
+%</cls>
+%<*ltxml>
+DefKeyVal('equation','id','Semiverbatim');
+DefEnvironment('{cequation} OptionalKeyVals:equation',
+ "<cnx:equation %&KeyVals(#1)>"
+ . "<ltx:Math mode='display'>"
+ . "<ltx:XMath>#body</ltx:XMath>"
+ . "</ltx:Math></cnx:equation>",
+ mode=>'display_math');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Rich Text}
+%
+% In this section, we redefine some of {\LaTeX} commands that have their counterparts in
+% {\cnxml}.
+%
+% \begin{environment}{quote}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{cquote}
+\addmetakey{cquote}{type}
+\addmetakey{cquote}{src}
+\newenvironment{cquote}[1][]{%
+\metasetkeys{cquote}{#1}\begin{center}\begin{minipage}{.8\textwidth}}{\end{minipage}\end{center}}
+%</cls>
+%<*ltxml>
+DefKeyVal('cquote','id','Semiverbatim');
+DefKeyVal('cquote','type','Semiverbatim');
+DefKeyVal('cquote','src','Semiverbatim');
+DefEnvironment('{cquote} OptionalKeyVals:cquote',
+ "<cnx:quote %&KeyVals(#1)>#body</cnx:quote>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{footnote}
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\footnote[]{}',"<cnx:note type='foot'>#2</cnx:note>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{emph}
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\emph{}',"<cnx:emphasis>#1</cnx:emphasis>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{displaymath, eqnarray}
+% We redefine the abbreviate display math envionment and the |eqnarray| and |eqnarray*|
+% environments to use the {\cnxml} equation tags, everything else stays the same.
+%
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\[',
+ "<cnx:equation id='#id'>"
+ . "<ltx:Math mode='display'>"
+ . "<ltx:XMath>"
+ . "#body"
+ . "</ltx:XMath>"
+ . "</ltx:Math>"
+ ."</cnx:equation>",
+ beforeDigest=> sub{ $_[0]->beginMode('display_math'); },
+ captureBody=>1,
+ properties=> sub { RefStepID('equation') });
+DefConstructor('\]' ,"",beforeDigest=> sub{ $_[0]->endMode('display_math'); });
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{displaymath}
+% We redefine the abbreviate display math envionment to use the {\cnxml} equation tags,
+% everything else stays the same.\ednote{check {\tt{LaTeX.ltxml}} frequently and try to
+% keep in sync, it would be good, if the code in LaTeXML.ltxml could be modularized,
+% so that the {\tt{cnx}}/{\tt{ltx}} namespace differences could be relegated to
+% config options}
+%
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\[',
+ "<cnx:equation id='#id'>"
+ . "<ltx:Math mode='display'>"
+ . "<ltx:XMath>"
+ . "#body"
+ . "</ltx:XMath>"
+ . "</ltx:Math>"
+ ."</cnx:equation>",
+ beforeDigest=> sub{ $_[0]->beginMode('display_math'); },
+ captureBody=>1,
+ properties=> sub { RefStepID('equation') });
+DefConstructor('\]' ,"",beforeDigest=> sub{ $_[0]->endMode('display_math'); });
+
+DefMacro('\eqnarray', '\@@eqnarray\@start@alignment');
+DefMacro('\endeqnarray', '\@finish@alignment\end@eqnarray');
+DefMacro('\csname eqnarray*\endcsname', '\@@eqnarray*\@start@alignment');
+DefMacro('\csname endeqnarray*\endcsname', '\@finish@alignment\end@eqnarray');
+DefConstructor('\@@eqnarray OptionalMatch:* AlignmentBody:\end@eqnarray',
+ sub {
+ my($document,$star,$body,%props)=@_;
+ $document->openElement('cnx:equation',refnum=>$props{refnum},id=>$props{id});
+ $document->openElement('ltx:Math',mode=>'display');
+ $document->openElement('ltx:XMath');
+ constructAlignment($document,$body,attributes=>{name=>'eqnarray'});
+ $document->closeElement('ltx:XMath');
+ $document->closeElement('ltx:Math');
+ $document->closeElement('cnx:equation'); },
+ mode=>'display_math',
+ beforeDigest=>sub { alignmentBindings('rcl'); },
+ properties=> sub { ($_[1] ? RefStepID('equation') : RefStepCounter('equation')); },
+ afterDigest=>sub {
+ $_[1]->setProperty(body=>$_[1]->getArg(2));}, # So we get TeX
+ reversion=>'\begin{eqnarray#1}#2\end{eqnarray#1}');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{displaymath}
+% We redefine the abbreviate display math envionment to use the {\cnxml} equation tags,
+% everything else stays the same.\ednote{check {\tt{LaTeX.ltxml}} frequently and try to
+% keep in sync, it would be good, if the code in LaTeXML.ltxml could be modularized,
+% so that the {\tt{cnx}}/{\tt{ltx}} namespace differences could be relegated to
+% config options}
+%
+% \begin{macrocode}
+%<*cls>
+\newcommand{\litem}[2][]{\item[#1]\label{#2}}
+%</cls>
+%<*ltxml>
+Tag('cnx:item', autoClose=>1);
+DefConstructor('\item[]',"<cnx:item>?#1(<cnx:name>#1</cnx:name>)");
+DefConstructor('\litem[]{}',"<cnx:item id='#2'>?#1(<cnx:name>#1</cnx:name>)");
+DefConstructor('\itemize@item[]',
+ "<cnx:item id='#id'>?#1(<cnx:name>#1</cnx:name>)",
+ properties=>sub{ RefStepItemCounter(); });
+DefConstructor('\enumerate@item[]',
+ "<cnx:item id='#id'>?#1(<cnx:name>#1</cnx:name>)",
+ properties=>sub{ RefStepItemCounter(); });
+DefConstructor('\description@item[]',
+ "<cnx::item id='#id'>?#1(<cnx:name>#1</cnx:name>)",
+ properties=>sub{ RefStepItemCounter(); });
+AssignValue(itemlevel=>0);
+DefEnvironment('{itemize}',
+ "<cnx:list id='#id' type='itemize'>#body</cnx:list>",
+ properties=>sub { beginItemize('itemize'); });
+DefEnvironment('{enumerate}',
+ "<cnx:list type='enumerate' id='#id'>#body</cnx:list>",
+ properties=>sub { beginItemize('enumerate'); });
+DefEnvironment('{description}',
+ "<cnx:list type='description' id='#id'>#body</cnx:list>",
+ properties=>sub { beginItemize('description'); });
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% The next set of commands and environments are largely presentational, so we just skip
+% them.
+%
+% \begin{macrocode}
+%<*ltxml>
+DefEnvironment('{center}','#body');
+DefEnvironment('{minipage}{}','#body');
+DefEnvironment('{small}','#body');
+DefEnvironment('{footnotesize}','#body');
+DefEnvironment('{tiny}','#body');
+DefEnvironment('{scriptsize}','#body');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\ref Semiverbatim', "<cnx:cnxn target='#1'>&LookupValue('LABEL@#1')</cnx:cnxn>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Statements}
+%
+% \begin{environment}{cexample}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{example}
+\addmetakey{example}{name}
+\newenvironment{cexample}[1][]{\metasetkeys{example}{#1}
+{\ifx\example@name\@empty\else\noindent\bfseries{\example@name}\fi}}
+{}
+%</cls>
+%<*ltxml>
+DefKeyVal('example','id','Semiverbatim');
+DefEnvironment('{cexample}OptionalKeyVals:example',
+ "<cnx:example %&KeyVals(#1)>#body</cnx:example>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{cexercise}
+% The |cexercise|, |cproblem| and |csolution| environments are very simple to set up for
+% {\LaTeX}. For the {\latexml} side, we simplify matters considerably for the moment by
+% restricting the possibilities we have on the {\cnxml} side: We assume that the content
+% is just one |<cnx:para>| element for the |<cnx:problem>| and |<cnx:solution>|
+% elements.\ednote{relax this when we have automated the generation of {\tt{cnx:para}}
+% elements}
+% \begin{macrocode}
+%<*cls>
+\newcounter{cexercise}
+\srefaddidkey{cexercise}
+\addmetakey{cexercise}{name}
+\newenvironment{cexercise}[1][]{\metasetkeys{cexercise}{#1}
+{\ifx\cexercise@name\@empty\else\stepcounter{cexercise}\noindent\bfseries{\cexercise@name~\arabic{cexercise}}\fi}}
+{}
+\srefaddidkey{cproblem}
+\newenvironment{cproblem}[1][]{\metasetkeys{cproblem}{#1}}{}{}
+\srefaddidkey{csolution}
+\newenvironment{csolution}[1][]{\metasetkeys{csolution}{#1}}{\par\noindent\bfseries{Solution}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('cexercise','id','Semiverbatim');
+DefKeyVal('cexercise','name','Semiverbatim');
+DefEnvironment('{cexercise}OptionalKeyVals:exercise',
+ "<cnx:exercise ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>"
+ . "#body"
+ . "</cnx:exercise>");
+DefKeyVal('cproblem','id','Semiverbatim');
+DefKeyVal('cproblem','name','Semiverbatim');
+DefEnvironment('{cproblem}OptionalKeyVals:cproblem',
+ "<cnx:problem ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>"
+ . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()"
+ . "#body"
+ . "</cnx:problem>");
+DefKeyVal('csolution','id','Semiverbatim');
+DefKeyVal('csolution','name','Semiverbatim');
+DefEnvironment('{csolution}OptionalKeyVals:cproblem',
+ "<cnx:solution ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>"
+ . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()"
+ . "#body"
+ . "</cnx:solution>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{crule}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{rule}
+\addmetakey{rule}{name}
+\addmetakey{rule}{type}
+\newenvironment{crule}[1][]{\metasetkeys{rule}{#1}%
+{\noindent\bfseries{\rule@type:}\ifx\rule@name\@empty\else~(\rule@name)\fi}}%
+{}
+%</cls>
+%<*ltxml>
+DefKeyVal('rule','id','Semiverbatim');
+DefKeyVal('rule','name','Semiverbatim');
+DefKeyVal('rule','type','Semiverbatim');
+DefEnvironment('{crule}OptionalKeyVals:rule',
+ "<cnx:rule ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')() type='&KeyVal(#1,'type')'>\n"
+ . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()"
+ . "\n#body\n"
+ . "</cnx:rule>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{statement}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{statement}
+\newenvironment{statement}[1][]{\metasetkeys{statement}{#1}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('statement','id','Semiverbatim');
+DefEnvironment('{statement} OptionalKeyVals:statement','<cnx:statement %&KeyVals(#1)>#body</cnx:statement>');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{proof}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{proof}
+\newenvironment{proof}[1][]{\metasetkeys{proof}{#1}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('proof','id','Semiverbatim');
+DefEnvironment('{proof}OptionalKeyVals:proof','<cnx:proof %&KeyVals(#1)>#body</cnx:proof>');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{definition}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{definition}
+\addmetakey{definition}{term}
+\addmetakey{definition}{seealso}
+\newenvironment{definition}[1][]{\metasetkeys{definition}{#1}{\noindent\bfseries{Definition:}}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('definition','id','Semiverbatim');
+DefKeyVal('definition','term','Semiverbatim');
+DefKeyVal('definition','seealso','Semiverbatim');
+DefEnvironment('{definition}OptionalKeyVals:definition',
+ "<cnx:definition ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>\n"
+ . "?&defined(&KeyVal(#1,'term'))(<cnx:term>&KeyVal(#1,'term')</cnx:term>\n)()"
+ . "\n#body\n"
+ . "?&defined(&KeyVal(#1,'seealso'))(<cnx:seealso><cnx:term>&KeyVal(#1,'term')</cnx:term></cnx:seealso>\n)()"
+ . "</cnx:definition>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{cmeaning}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{meaning}
+\newenvironment{cmeaning}[1][]{\metasetkeys{meaning}{#1}}{}
+%</cls>
+%<*ltxml>
+DefKeyVal('meaning','id','Semiverbatim');
+DefEnvironment('{cmeaning}OptionalKeyVals:meaning','<cnx:meaning %&KeyVals(#1)>#body</cnx:meaning>');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Conexxions}
+%
+% \begin{macro}{cnxn}
+% \begin{macrocode}
+%<*cls>
+\addmetakey{cnxn}{document}
+\addmetakey{cnxn}{target}
+\addmetakey{cnxn}{strength}
+\newcommand{\cnxn}[2][]% keys, link text
+{\metasetkeys{cnxn}{#1}{\underline{#2}}\footnote{{\ttfamily\@ifx\cnxn@document\@empty\cnxn@document\fi\#\cnxn@target}}}
+\newcommand\@makefntext[1]{\parindent 1em\noindent\hb@xt@1.8em{\hss\@makefnmark}#1}
+%</cls>
+%<*ltxml>
+DefKeyVal('cnxn','document','Semiverbatim');
+DefKeyVal('cnxn','target','Semiverbatim');
+DefKeyVal('cnxn','strength','Semiverbatim');
+DefConstructor('\cnxn OptionalKeyVals:cnxn {}','<cnx:cnxn %&KeyVals(#1)>#1</cnx:cnxn>');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{link}
+% \begin{macrocode}
+%<*cls>
+\addmetakey{link}{src}
+\newcommand{\link}[2][]{\metasetkeys{link}{#1}\underline{#2}}
+%</cls>
+%<*ltxml>
+DefKeyVal('link','src','Semiverbatim');
+DefConstructor('\link OptionalKeyVals:link {}','<cnx:link %&KeyVals(#1)>#2</cnx:link>');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{cfigure}
+% The |cfigure| only gives us one of the possible instances of the |<figure>|
+% element\ednote{extend that}.\ednote{do more about required and optional keys in
+% arguments.} In {\LaTeX}, we just pipe the size information through to
+% |includegraphics|, in {\latexml}, we construct the {\cnxml} structure\ednote{what do
+% we do with the graphicx information about size,... CSS?}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{cfigure}
+\addmetakey{cfigure}{type}
+\addmetakey{cfigure}{caption}
+\newcounter{figure}
+\newcommand{\cfigure}[3][]{% cnx_keys, graphicx_keys, path
+\begin{center}%
+\includegraphics[#2]{#3}%
+\metasetkeys{cfigure}{#1}\sref@target%
+\ifx\cfigure@caption\@empty\else
+\par\noindent Figure\refstepcounter{figure} {\arabic{figure}}: \cfigure@caption%
+\protected@edef\@currentlabel{\arabic{figure}}%
+\sref@label@id{Figure \thefigure}\fi
+\end{center}}
+%</cls>
+%<*ltxml>
+DefKeyVal('cfigure','id','Semiverbatim');
+DefKeyVal('cfigure','name','Semiverbatim');
+DefKeyVal('cfigure','type','Semiverbatim');
+DefKeyVal('cfigure','caption','Semiverbatim');
+DefConstructor('\cfigure OptionalKeyVals:cfigure Semiverbatim Semiverbatim',
+ "<cnx:figure ?&defined(&KeyVal(#1,'id'))(id='&KeyVal(#1,'id')')()>"
+ . "?&defined(&KeyVal(#1,'name'))(<cnx:name>&KeyVal(#1,'name')</cnx:name>\n)()"
+ . "<cnx:media type='&KeyVal(#1,'type')' src='#3'/>"
+ . "?&defined(&KeyVal(#1,'caption'))(<cnx:caption>&KeyVal(#1,'caption')</cnx:caption>\n)()"
+ . "</cnx:figure>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ccite}
+% \begin{macrocode}
+%<*cls>
+\addmetakey{ccite}{src}
+\newcommand{\ccite}[2][]{\metasetkeys{ccite}{#1}\emph{#2}}
+%</cls>
+%<*ltxml>
+DefKeyVal('ccite','src','Semiverbatim');
+DefConstructor('\ccite OptionalKeyVals:ccite {}','<cnx:cite %&KeyVals(#1)>#2</cnx:cite>');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{term}
+% \begin{macrocode}
+%<*cls>
+\newcommand{\term}[1]{{\bfseries\underline{#1}}}
+%</cls>
+%<*ltxml>
+DefConstructor('\term[]{}',"<cnx:term>#2</cnx:term>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Metadata}
+%
+% \begin{environment}{metadata}
+% \begin{macrocode}
+%<*cls>
+\addmetakey{metadata}{version}
+\addmetakey{metadata}{created}
+\addmetakey{metadata}{revised}
+\newsavebox{\metadatabox}
+\newenvironment{metadata}[1][]%
+{\noindent\hfill\begin{lrbox}{\metadatabox}
+\begin{minipage}{.8\textwidth}%
+{\Large\bfseries CNX Module: \cnx@name\hfill\strut}\\[2ex]}%
+{\end{minipage}\end{lrbox}\fbox{\usebox\metadatabox}\hfill}
+% \newenvironment{metadata}[1][]%
+% {\noindent\strut\hfill\begin{lrbox}{\metadatabox}\begin{minipage}{10cm}%
+% {\strut\hfill\Large\bfseries CNX Module: \cnx@name\hfill\strut}\\[2ex]}%
+% {\end{minipage}\end{lrbox}\fbox{\usebox\metadatabox}\hfill\strut\\[3ex]}
+%</cls>
+%<*ltxml>
+DefKeyVal('metadata','version','Semiverbatim');
+DefKeyVal('metadata','created','Semiverbatim');
+DefKeyVal('metadata','revised','Semiverbatim');
+DefEnvironment('{metadata}OptionalKeyVals:metadata',
+ "<cnx:metadata>\n"
+ . "<md:version>&KeyVal('#1','version')</md:version>\n"
+ . "<md:created>&KeyVal('#1','created')</md:created>\n"
+ . "<md:revised>&KeyVal('#1','revised')</md:revised>\n"
+ . "#body\n"
+ . "</cnx:metadata>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{authorlist}
+% \begin{macrocode}
+%<*cls>
+\newenvironment{authorlist}{{\bfseries{Authors}:~}}{\\[1ex]}
+%</cls>
+%<*ltxml>
+DefEnvironment('{authorlist}',"<md:authorlist>#body</md:authorlist>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{maintainerlist}
+% \begin{macrocode}
+%<*cls>
+\newenvironment{maintainerlist}{{\bfseries{Maintainers}:~}}{\\[1ex]}
+%</cls>
+%<*ltxml>
+DefEnvironment('{maintainerlist}',"<md:maintainerlist>#body</md:maintainerlist>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{cnxauthor}
+% \begin{macrocode}
+%<*cls>
+\srefaddidkey{auth}
+\addmetakey{auth}{honorific}
+\addmetakey{auth}{firstname}
+\addmetakey{auth}{other}
+\addmetakey{auth}{surname}
+\addmetakey{auth}{lineage}
+\addmetakey{auth}{email}
+\newcommand{\cnxauthor}[1][]{\metasetkeys{auth}{#1}\auth@first~\auth@sur,}
+%</cls>
+%<*ltxml>
+DefKeyVal('auth','id','Semiverbatim');
+DefKeyVal('auth','firstname','Semiverbatim');
+DefKeyVal('auth','surname','Semiverbatim');
+DefKeyVal('auth','email','Semiverbatim');
+DefConstructor('\cnxauthor OptionalKeyVals:auth',
+ "<md:author id='&KeyVal('#1','id')'>\n"
+ . "?&defined(&KeyVal(#1,'honorific'))(<md:honorific>&KeyVal('#1','honorific')</md:honorific>\n)()"
+ . "?&defined(&KeyVal(#1,'firstname'))(<md:firstname>&KeyVal('#1','firstname')</md:firstname>\n)()"
+ . "?&defined(&KeyVal(#1,'other'))(<md:other>&KeyVal('#1','other')</md:other>\n)()"
+ . "?&defined(&KeyVal(#1,'surname'))(<md:surname>&KeyVal('#1','surname')</md:surname>\n)()"
+ . "?&defined(&KeyVal(#1,'lineage'))(<md:lineage>&KeyVal('#1','lineage')</md:lineage>\n)()"
+ . "?&defined(&KeyVal(#1,'email'))(<md:email>&KeyVal('#1','email')</md:email>\n)()"
+ . "</md:author>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{maintainer}
+% \begin{macrocode}
+%<*cls>
+\newcommand{\maintainer}[1][]{\metasetkeys{auth}{#1}\auth@first~\auth@sur,}
+%</cls>
+%<*ltxml>
+DefConstructor('\maintainer OptionalKeyVals:auth',
+ "<md:maintainer id='&KeyVal('#1','id')'>\n"
+ . "?&defined(&KeyVal(#1,'honorific'))(<md:honorific>&KeyVal('#1','honorific')</md:honorific>\n)()"
+ . "?&defined(&KeyVal(#1,'firstname'))(<md:firstname>&KeyVal('#1','firstname')</md:firstname>\n)()"
+ . "?&defined(&KeyVal(#1,'other'))(<md:other>&KeyVal('#1','other')</md:other>\n)()"
+ . "?&defined(&KeyVal(#1,'surname'))(<md:surname>&KeyVal('#1','surname')</md:surname>\n)()"
+ . "?&defined(&KeyVal(#1,'lineage'))(<md:lineage>&KeyVal('#1','lineage')</md:lineage>\n)()"
+ . "?&defined(&KeyVal(#1,'email'))(<md:email>&KeyVal('#1','email')</md:email>\n)()"
+ . "</md:maintainer>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{keywordlist}
+% \begin{macrocode}
+%<*cls>
+\newenvironment{keywordlist}{\bfseries{Keywords}:~}{\\[1ex]}
+%</cls>
+%<*ltxml>
+DefEnvironment('{keywordlist}',"<md:keywordlist>\n#body\n</md:keywordlist>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{keyword}
+% \begin{macrocode}
+%<*cls>
+\newcommand{\keyword}[1]{#1,}
+%</cls>
+%<*ltxml>
+DefConstructor('\keyword {}',"<md:keyword>#1</md:keyword>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{cnxabstract}
+% \begin{macrocode}
+%<*cls>
+\newenvironment{cnxabstract}%
+{\par\noindent\strut\hfill\begin{minipage}{10cm}{\bfseries{Abstract}:~}}%
+{\end{minipage}\hfill}
+%</cls>
+%<*ltxml>
+DefEnvironment('{cnxabstract} OptionalKeyVals:cnxabstract',
+ "<md:abstract>\n#body\n</md:abstract>\n");
+1;
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+% \Finale
+\endinput
+
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+% LocalWords: iffalse cnx cnx.dtx cnx.cls scsys sc sc scshape cnxml ttfamily
+% LocalWords: cnxlatex mathml latexml hbox fileversion maketitle newpage foo
+% LocalWords: tableofcontents newpage ednote cmathml.sty keyn valn keyn exfig
+% LocalWords: DescribeEnv cnxmodule ccontent csection csubsection cpara cnote
+% LocalWords: csubsubsection cmathml cequation cexample crule cmeaning tt tt
+% LocalWords: def-cmean cnxn keyval hh ss authorlist maintainerlist cnxauthor
+% LocalWords: firstname keywordlist cnxabstract cexercise cproblem csolution
+% LocalWords: cfigure cfigure cgraphics graphicx printbibliography textsf sref
+% LocalWords: langle textsf langle ltxml ctancite sref cls setlength ltx
+% LocalWords: paperheight paperwidth size10.clo pagenumbering ltxml.dtd enumi
+% LocalWords: itemizei idprefix itemizeii itemizeiii itemizeiv itemizev enumii
+% LocalWords: itemizevi enumiii enumiv enumv enumvi theenumi theenumii Sucan
+% LocalWords: theenumiii theenumiv theequation textwidth thedocument
+% LocalWords: environement srefaddidkey newenvironment Semiverbatim
+% LocalWords: OptionalKeyVals newcounter stepcounter noindent bfseries
+% LocalWords: refstepcounter subsubsection whatsit findnodes hfill
+% LocalWords: displaymath cquote emph eqnarray envionment endeqnarray csname
+% LocalWords: endcsname refnum refnum rcl newcommand itemlevel
+% LocalWords: footnotesize scriptsize ifx Conexxions makefntext parindent hss
+% LocalWords: makefnmark includegraphics currentlabel thefigure ccite lrbox
+% LocalWords: newsavebox metadatabox fbox usebox auth doctex
diff --git a/Master/texmf-dist/source/latex/stex/cnx/cnx.ins b/Master/texmf-dist/source/latex/stex/cnx/cnx.ins
new file mode 100644
index 00000000000..37b12071964
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/cnx/cnx.ins
@@ -0,0 +1,35 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex cnx.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{cnx.cls}{\from{cnx.dtx}{cls}}
+% generated the LaTeXML bindings
+\nopreamble\nopostamble
+ \file{cnx.cls.ltxml}{\from{cnx.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory}
+\Msg{* searched by TeX and LaTeXML respectively.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/dcm/dcm.dtx b/Master/texmf-dist/source/latex/stex/dcm/dcm.dtx
new file mode 100644
index 00000000000..279530cd17c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/dcm/dcm.dtx
@@ -0,0 +1,696 @@
+% \iffalse meta-comment
+% An Infrastructure for marking up Dublin Core Metadata in LaTeX documents
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/dcm/dcm.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% Copyright (c) 2007-2011 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{dcm}[2012/01/28 v0.3 Dublin Core Metadata]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{dcm,modules,stex-logo,url,array,float}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\importmodule[dcmi]{dcmi}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: dcm.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/dcm/dcm.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\WAperson[id=jdoe,affiliation=dfki,department=skss,
+ url=http://dfki.de/jdoe]
+ {John Doe}
+\WAperson[id=miko,affiliation=jacu,department=case,
+ url=http://kwarc.info/kohlhase]
+ {Michael Kohlhase}
+\WAinstitution[id=case,acronym=CASE,shortname=Center for Adv. Sys. Engineering,
+ url=http://jacobs-university.de/ses/case,partof=jacu]
+ {Center for Advanced Systems Engineering}
+\WAinstitution[id=jacu,url=http://jacobs-university.de]
+ {Jacobs University Bremen}
+\WAinstitution[id=skss,url=http://dfki.de/sks,partof=dfki,shortname=Safe\&Secure Cognitive
+Systems,acronym=SKS]
+ {Safe and Secure Cognitive Systems}
+\WAinstitution[id=dfki,url=http://dfki.de,shortname=DFKI,acronym=DFKI]
+ {German Research Center for Artificial Intelligence}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{dcm.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{337}
+%
+% \changes{v0.1}{2007/01/02}{First Hack for OMDoc spec}
+% \changes{v0.2}{2008/06/17}{First Version with Documentation}
+% \changes{v0.2}{2008/07/02}{Renamed to dcm}
+% \changes{v0.3}{2009/09/21}{much more documentation of the user interface}
+% \changes{v0.3}{2009/09/21}{Adding sref support and made generated headings configurable}
+% \changes{v0.3}{2010/01/11}{Eliminating stub author index that never worked anyways}
+% \changes{v0.4}{2011/11/05}{moving DCMperson and friends to the \texttt{workaddress} package}
+%
+% \GetFileInfo{dcm.sty}
+%
+% \MakeShortVerb{\|}
+% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\latexml{\scsys{LaTeXML}}
+%
+% \begin{DCmetadata}[maketitle]
+% \DCMtitle{{\texttt{dcm.sty}}: An Infrastructure for marking up Dublin Core Metadata in {\LaTeX}
+% documents\thanks{Version {\fileversion} (last revised {\filedate})}}
+% \DCMcreators{miko,jdoe}
+% \DCMabstract{The |dcm| package allows mark up Dublin
+% Core Metadata in {\LaTeX} documents that can be harvested by automated tools or
+% exported to PDF, while at the same time generating conventional title information.}
+% \end{DCmetadata}
+%
+% \setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+%\section[id=intro,creator=miko]{Introduction}
+%
+% The |dcm| package allows mark up Dublin Core Metadata~\cite{DCMI:dmt03} in {\LaTeX}
+% documents so that it can be harvested by automated tools or exported to PDF\ednote{This
+% still needs to be implemented, see \texttt{http://www.wlug.org.nz/PdfLatexNotes} for
+% details}. This package allows to attribute authorship to arbitrary text
+% fragments.\ednote{continue}
+%
+% \section[id=user,creator={miko,jdoe}]{The User Interface}
+%
+% \subsection[id=user.options]{Package Options}
+%
+% The |dcm| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If this is
+% set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details and
+% customization options).
+%
+% \subsection[id=user.dcm.mdblock]{The DC Metadata Block}
+%
+% \DescribeEnv{DCmetadata} The |dcm| provides the environment |DCmetadata| for Dublin Core
+% Metadata Blocks. |DCmetadata| defines local macros for the specifying the relevant
+% Dublin Core metadata fields and takes an optional argument that specifies the
+% presentation of the metadata block, see Figure~\ref{fig:dcmblock} for an example which
+% would generate the title block for the |dcm| package. Let us now come to the macros themselves
+%
+% \DescribeMacro{\DCMcreators}\DescribeMacro{\DCMcontributors} The |\DCMcreators| and
+% |\DCMcontributors| macros are used to specify the authors and contributors to a text
+% fragments. These macros take one argument, the authorship of a document specified in
+% terms of |id|s of persons specified via |\WAperson| before. They can occur multiply in
+% a metadata block.
+%
+% \DescribeMacro{\DCMtitle} The |\DCMtitle| macro takes one argument, the
+%
+% \DescribeMacro{\DCMshorttitle} The |\DCMshorttitle| macro takes one argument, the
+%
+% \DescribeMacro{\DCMsubject} The |\DCMsubject| macro takes one argument, the
+%
+% \DescribeMacro{\DCMdescription} The |\DCMdescription| macro takes one argument, the
+%
+% \DescribeMacro{\DCMpublisher} The |\DCMpublisher| macro takes one argument, the
+%
+% \DescribeMacro{\DCMdate} The |\DCMdate| macro takes one argument, the
+%
+% \DescribeMacro{\DCMtype} The |\DCMtype| macro takes one argument, the
+%
+% \DescribeMacro{\DCMidentifier} The |\DCMidentifier| macro takes two arguments, the first one
+% is the identification system, and the second one the identifier string itself.
+%
+% \DescribeMacro{\DCMsource} The |\DCMsource| macro takes one argument, the
+%
+% \DescribeMacro{\DCMlanguage} The |\DCMlanguage| macro takes one argument, the
+%
+% \DescribeMacro{\DCMrelation} The |\DCMrelation| macro takes one argument, the
+%
+% \DescribeMacro{\DCMrights} The |\DCMrights| macro takes one argument, the
+%
+% \DescribeMacro{\DCMlicense} The |\DCMlicense| macro takes one argument, the
+%
+% \DescribeMacro{\DCMabstract} The |\DCMabstract| macro takes one argument, the
+%
+% \DescribeMacro{\DCMlicensenotice} The |\DCMlicensenotice| macro takes one argument, the
+%
+% \DescribeMacro{\DCMcopyrightnotice} The |\DCMcopyrightnotice| macro takes one argument, the
+%
+% \DescribeMacro{\DCMcclicense} The |\DCMcclicense| macro
+%
+% \DescribeMacro{\attribution}
+%
+% \DescribeMacro{\noncommercial}
+%
+% \DescribeMacro{\sharealike}
+%
+% \DescribeMacro{\noderivativeworks}
+%
+% \begin{exfig}[ht]
+% \begin{verbatim}
+% \begin{DCmetadata}[maketitle]
+% \DCMtitle{An Infrastructure for marking up Dublin Core Metadata in
+% {\LaTeX} documents\thanks{Version {\fileversion}
+% (last revised {\filedate})}}
+% \DCMcreators{miko,jdoe}
+% \DCMdate{\today}
+% \DCMcopyrightnotice{2008}{Michael Kohlhase}
+% \DCMlicensenotice{Copyright (c) 2008 Michael Kohlhase, all rights
+% reserved. This file is released under the LaTeX Project Public
+% License (LPPL)}
+% \DCMabstract{The {\texttt{dcm}} packge allows mark up Dublin
+% Core Metadata in {\LaTeX} documents that can be harvested by
+% automated tools or exported to PDF, while at the same time
+% generating conventional title information.}
+% \end{DCmetadata}
+% \end{verbatim}
+% \caption{The DC Metadata block for the {\texttt{dcm}} package documentation}
+% \label{fig:dcmblock}
+% \end{exfig}
+%
+% \subsection[creator=jdoe,id=user.blockstyles]{DCM Metadata Block Styles}
+%
+% The |DCmetadata| environment takes an optional argument that specifies the style the
+% metadata block is rendered in. The |dcm| package supplies two styles:
+% \DescribeMacro{maketitle}|maketitle| and \DescribeMacro{titlepage}|titlepage|. The
+% former uses the |\maketitle| macro from the calling class to assemble a title, whereas
+% the latter builds a title page from scratch. The title block of this documentation has
+% been created by the |maketitle| style.
+%
+% To add a further metadata block style \meta{sty}, we simply have to supply a
+% \DescribeMacro{\dcm@*@block}|\dcm@|\meta{sty}|@block| macro that expands to the intended
+% presentation. This macro does not take any arguments, but can use the internal token
+% registers defined by the |DCmetadata| environment. Generally, for any of the metadata
+% commands |\DCM|\meta{md} defined in {\sref{user.dcm.mdblock}} there is a token register
+% |\dcm@|\meta{md} that contains the value specified in the key.
+%
+% \subsection[id=user.conig]{Configuration}
+%
+% The |dcm| package provides a set of macros that customize (e.g. for multiple languages)
+% the generated
+% content.
+% \DescribeMacro{\dcm@abstract@heading}
+% \DescribeMacro{\dcm@creators@heading}
+% \DescribeMacro{\dcm@contributors@connector}
+% \DescribeMacro{\dcm@chapter@heading}
+% \DescribeMacro{\dcm@section@heading}
+% \DescribeMacro{\dcm@subsection@heading}
+% \DescribeMacro{\dcm@subsubsection@heading}
+% \begin{center}\makeatletter
+% \begin{tabular}{|l|l|}\hline
+% Macro & Default\\\hline\hline
+% |\dcm@abstract@heading| & \dcm@abstract@heading \\\hline
+% |\dcm@creators@heading| & \dcm@creators@heading \\\hline
+% |\dcm@contributors@connector| & \dcm@contributors@connector \\\hline\hline
+% |\dcm@chapter@heading| & \dcm@chapter@heading \\\hline
+% |\dcm@section@heading| & \dcm@section@heading \\\hline
+% |\dcm@subsection@heading| & \dcm@subsection@heading \\\hline
+% |\dcm@subsubsection@heading| & \dcm@subsubsection@heading \\\hline
+% \end{tabular}
+% \end{center}
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\printbibliography}
+%
+% \section[creator=jdoe,id=impl]{The Implementation}
+%
+% The |dcm| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \subsection[id=impl.options]{Package Options}
+% The first step is to declare (a few) package options that handle whether certain
+% information is printed or not. They all come with their own conditionals that are set by
+% the options.
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% The first measure is to ensure that the |KeyVal| package is loaded (in the right
+% version). For {\latexml} we also initialize the package inclusions.
+% \begin{macrocode}
+%<*package>
+\RequirePackage{workaddress}
+\RequirePackage[sectioning]{rdfmeta}
+%</package>
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Global;
+use LaTeXML::Package;
+RequirePackage('rdfmeta');
+RequirePackage('workaddress');
+%</ltxml>
+% \end{macrocode}
+%
+% Furthermore, we need a couple of helper functions for the
+%
+% \begin{macrocode}
+%<*ltxml>
+sub FishOutMetadata {
+ my ($document,$keyvals)=@_;
+ foreach my $role(qw(creators contributors)) {
+ my $idlist_string=getKeyValue_noDelim($keyvals,$role);
+ my @ids = split(/,\s*/, $idlist_string);
+ foreach my $id(@ids) {
+ my $name = LookupValue('DCM_'.$id.'_name');
+ if ($name) {
+ my $prop_role = $role;
+ chop $prop_role if $prop_role;
+ $document->insertElement("dc:$prop_role",$name) if $role;
+ } else {print STDERR "Warning: no $role with 'id' $id !\n";}
+ }
+ }
+ return;}#$
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{The DC Metadata Block}
+%
+% Then we make an environment for defining the metadata. Note that since we have defined
+% the |omdoc:metadata| element to auto-open and auto-close, we do not have to (and should
+% not for that matter) supply it in the |DCmetadata| element.
+%
+% \begin{environment}{DCmetadata}
+% \begin{macrocode}
+%<*package>
+\newenvironment{DCmetadata}[1][]%
+{\def\@style{#1}}% to set the way things are presented.
+{\@ifundefined{dcm@\@style @block}%
+{\message{style {\@style} not defined}}%
+{\csname dcm@\@style @block\endcsname}}
+%</package>
+%<*ltxml>
+DefEnvironment('{DCmetadata}[]', "<omdoc:metadata>#body</omdoc:metadata>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% Here come the constructors, most of them are relatively straightforward
+%
+% \begin{macro}{\DCMcreators}
+% the |\DCMcreators| macro checks whether all ids are defined.
+% \begin{macrocode}
+%<*package>
+\def\DCMcreators#1{\@for\@I:=#1\do{\wa@ref@test{person}\@I{id}}
+\gdef\dcm@creators{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMcreators{}',sub{
+ my ($document,$args,%properties) = @_;
+ my $keyval = LaTeXML::KeyVals->new('wa@person',T_BEGIN,T_END,('creators'=>$args));
+ FishOutMetadata($document,$keyval);
+ return;});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMcontributors}
+% the |\DCMcontributors| macro also checks whether all ids are defined.
+% \begin{macrocode}
+%<*package>
+\def\DCMcontributors#1{\@for\@I:=#1\do{\wa@ref@test{person}\@I{id}}%
+\def\dcm@contributors{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMcontributors{}',sub{
+ my ($document,$args,%properties) = @_;
+ my $keyval = LaTeXML::KeyVals->new('wa@person',T_BEGIN,T_END,('contributors'=>$args));
+ FishOutMetadata($document,$keyval);
+ return;});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMtitle}
+% \begin{macrocode}
+%<*package>
+\def\DCMtitle#1{\def\dcm@title{#1}\providecommand{\dcm@shorttitle}{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMtitle{}',"<dc:title>#1</dc:title>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMsubtitle}
+% \begin{macrocode}
+%<*package>
+\def\dcm@subtitle{}
+\def\DCMsubtitle#1{\def\dcm@subtitle{#1}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMshorttitle}
+% \begin{macrocode}
+%<*package>
+\def\dcm@shorttitle{}
+\def\DCMshorttitle#1{\def\dcm@shorttitle{#1}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMsubject}
+% \begin{macrocode}
+%<*package>
+\def\DCMsubject#1{\def\dcm@subject{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMsubject{}',"<dc:subject>#1</dc:subject>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMdescription}
+% \begin{macrocode}
+%<*package>
+\long\def\DCMdescription#1{\long\def\dcm@description{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMdescription{}',"<dc:description>#1</dc:description>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMpublisher}
+% \begin{macrocode}
+%<*package>
+\def\DCMpublisher#1{\def\dcm@publisher{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMpublisher{}',"<dc:publisher>#1</dc:publisher>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMdate}
+% the |\DCMdate| uses |\today| as a default\ednote{@DEYAN: do that in latexml}
+% \begin{macrocode}
+%<*package>
+\def\dcm@date{\today}
+\def\DCMdate#1{\def\dcm@date{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMdate{}',"<dc:date>#1</dc:date>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMtype}
+% \begin{macrocode}
+%<*package>
+\def\DCMtype#1{\def\dcm@type{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMtype{}',"<dc:type>#1</dc:type>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMidentifier}
+% \begin{macrocode}
+%<*package>
+\def\DCMidentifier#1#2{\def\dcm@scheme{#1}\def\dcm@identifier{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMidentifier{}{}',"<dc:identifier scheme='#1'>#2</dc:identifier>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMsource}
+% \begin{macrocode}
+%<*package>
+\def\DCMsource#1{\def\dcm@source{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMsource{}',"<dc:source>#1</dc:source>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMlanguage}
+% \begin{macrocode}
+%<*package>
+\def\DCMlanguage#1{\def\dcm@language{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMlanguage{}',"<dc:language>#1</dc:language>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMrelation}
+% \begin{macrocode}
+%<*package>
+\def\DCMrelation#1{\def\dcm@relation{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMrelation{}',"<dc:relation>#1</dc:relation>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMrights}
+% \begin{macrocode}
+%<*package>
+\def\DCMrights#1{\long\def\dcm@rights{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMrights{}',"<dc:rights>#1</dc:rights>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMlicense}
+% \begin{macrocode}
+%<*package>
+\def\DCMlicense#1{\def\dcm@license{#1}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMlicensenotice}
+% here we have a default
+% \begin{macrocode}
+%<*package>
+\def\dcm@license{All rights reserved}
+\def\DCMlicensenotice#1{\long\def\dcm@license{\\[1ex]License: #1}}
+%</package>
+%<*ltxml>
+DefMacro('\DCMlicensenotice{}','\DCMrights{#1}');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMcopyrightnotice}
+% \begin{macrocode}
+%<*package>
+\def\DCMcopyrightnotice#1#2{\DCMrights{Copyright {\copyright} #1: #2}}
+%</package>
+%<*ltxml>
+DefMacro('\DCMcopyrightnotice{}{}','\DCMrights{Copyright {\copyright} #1: #2}');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cclicense}
+% \begin{macrocode}
+%<*package>
+\def\cclicense#1{\def\attribution{\def\dcm@by{yes}}
+ \def\noncommercial{\def\dcm@nc{yes}}
+ \def\sharealike{\defdcm@sharealike{yes}}
+ \def\noderivativeworks{\def\dcm@derivatives{no}}}
+%</package>
+%<*ltxml>
+DefConstructor('\cclicense{}',"<cc:license>#1</cc:license>");
+DefConstructor('\attribution',"<cc:attribution/>");
+DefConstructor('\noncommercial',"<cc:noncommercial/>");
+DefConstructor('\sharealike',"<cc:sharealike/>");
+DefConstructor('\noderivativeworks',"<cc:noderivativeworks>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DCMabstract}
+% \begin{macrocode}
+%<*package>
+\long\def\DCMabstract#1{\long\def\dcm@abstract{#1}}
+%</package>
+%<*ltxml>
+DefConstructor('\DCMabstract{}',"<dc:description>#1</dc:description>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection[creator=jdoe,id=impl.blockstyles]{DCM Block Styles}
+%
+% We now define various commonly used styles.
+%
+% \begin{macro}{\dcm@titlepage@block}
+% This style builds up a title page from scratch
+% \begin{macrocode}
+%<*package>
+\def\dcm@titlepage@block{\begin{titlepage}
+ \null\vfil\vskip 60\p@
+ \begin{center}
+ \ifx\dcm@title\@empty
+ \PackageWarning{dcm}{No title specified}{\LARGE Add title here\par}
+ \else\LARGE \dcm@title \par\fi
+ \ifx\dcm@subtitle\@empty
+ \vskip 3em\Large \dcm@subtitle \par\vskip 3em
+ \else\large\lineskip .75em\WAauthorblock\dcm@creators\vskip 1.5em\fi
+ \ifx\dcm@date\@empty
+ \PackageWarning{dcm}{No date specified}{\large\today\par}
+ \else{\large\dcm@date\par}\vskip 2em\fi
+ \end{center}\vskip2em
+ \ifx\dcm@abstract\@empty
+ \PackageWarning{dcm}{No Abstract specified}\else
+ \begin{quote}\textbf\dcm@abstract@heading:\dcm@abstract\end{quote}\fi
+ \vskip 2em\par\vfil\noindent
+ {\small\noindent\dcm@rights\dcm@license}
+ \end{titlepage}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dcm@maketitle@block}
+% This style makes use of the title facility of the document class.
+% \begin{macrocode}
+%<*package>
+\def\dcm@maketitle@block{\def\@title{\dcm@title\ifx\dcm@subtitle\empty\else\newline\dcm@subtitle\fi}%
+\def\@author{\WAauthorblock\dcm@creators}%
+\def\@date{\dcm@date}\maketitle}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% We have to make sure that the DCM metadata commands have IDs, so that we doc not get
+% duplicates.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('dc:description',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:date',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:creator',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:contributor',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:title',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:subject',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:publisher',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:type',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:identifier',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:language',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+Tag('dc:rights',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1);
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Dealing with ISO Dates}
+%
+% The first step is to build a macro for making ISO dates.\ednote{make better ltxml}
+%
+% \begin{macrocode}
+%<ltxml>RawTeX('
+%<*package|ltxml>
+\def\ISOtimestamp{\count1=\time\divide\count1 by 60 % hours
+\count2=\count1\multiply\count2 by 60% minutes in \count1 hours
+\count3=\time\advance\count3 by -\count2 % minutes
+\the\year -\ifnum\month>9\else0\fi\the\month-\ifnum\day>9\else0\fi\the\day
+T\ifnum\count1>9\else0\fi\the\count1:\ifnum\count3>9\else0\fi\the\count3:00Z}
+%</package|ltxml>
+%<ltxml>');
+% \end{macrocode}
+%
+%\subsection{Configuration}
+%
+% \begin{macrocode}
+%<*package>
+\def\dcm@abstract@heading{Abstract}
+\def\dcm@creators@heading{Author(s)}
+\def\dcm@contributors@connector{with contributions from}
+\def\dcm@chapter@heading{Chapter}
+\def\dcm@section@heading{Section}
+\def\dcm@subsection@heading{Subsection}
+\def\dcm@subsubsection@heading{Subsubsection}
+\def\dcm@paragraph@heading{Paragraph}
+%</package>
+% \end{macrocode}
+%
+% \subsection[id=sec:impl:ids]{Providing IDs for {\omdoc} Elements}
+%
+% To provide default identifiers, we tag all {\omdoc} elements that allow |xml:id|
+% attributes by executing the |numberIt| procedure below.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('dc:title',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+%
+%\subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+% LocalWords: GPL structuresharing STR LaTeX dcm dtx keyval sref CPERL url qw
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+% LocalWords: RequirePackage birthdate personaltitle academictitle workaddress
+% LocalWords: privaddress worktel privtel workfax privfax worktelfax noDelim
+% LocalWords: privtelfax getKeyValue valuelist ToString getValue affill STDERR
+% LocalWords: ExportMetadata AssignValue DCMperson DefConstructor afterDigest
+% LocalWords: getArg setValue FishOutMetadata keyvals foreach idlist tabline
+% LocalWords: LookupValue insertElement atabline bitabline shorttitle nc args
+% LocalWords: sharealike noderivativeworks DefMacro authorblock subsubsection
+% LocalWords: contribs OptionalKeyVals omgroup omdoc srcref xml RawTeX partof
+% LocalWords: openElement iffalse kohlhase Thu scsys sc sc latexml DCmetadata
+% LocalWords: maketitle DCMtitle texttt fileversion DCMcreators miko jdoe impl
+% LocalWords: DCMabstract setcounter tocdepth tableofcontents newpage dmt03
+% LocalWords: DCMsection ednote DCMsubsection exfig hline dcmblock Patashnik
+% LocalWords: DescribeEnv DCMcontributors DCMshorttitle DCMshorttitle DCMdate
+% LocalWords: DCMsubject DCMsubject DCMdescription DCMdescription DCMpublisher
+% LocalWords: DCMpublisher DCMdate DCMtype DCMtype DCMidentifier DCMidentifier
+% LocalWords: DCMsource DCMsource DCMlanguage DCMlanguage DCMrelation ctancite
+% LocalWords: DCMrelation DCMrights DCMrights DCMlicense DCMlicense titlepage
+% LocalWords: DCMlicensenotice DCMlicensenotice DCMcopyrightnotice titlepage
+% LocalWords: DCMcopyrightnotice DCMcclicense DCMcclicense user.blockstyles
+% LocalWords: DCMchapter DCMchatper DCMsubsubsection DCMsubsubsection ltxml
+% LocalWords: user.conig makeatletter printbibliography expandafter showmeta
+% LocalWords: xdef csname endcsname newcommand ifx ifundefined affs showmeta
+% LocalWords: Semiverbatim whatsit newenvironment mtabline providecommand vfil
+% LocalWords: DCMsubtitle cclicense defdcm impl.blockstyles newcounter vskip
+% LocalWords: stepcounter tabularnewline theauthors lineskip textbf noindent
+% LocalWords: omd omd srefaddidkey thechapter autoclose thesection ifnum ifnum
+% LocalWords: thesubsection thesubsubsection DCMparagraph ISOtimestamp doctex
+% LocalWords: DCMinstitution DCMinstitution compactenum textsf langle textsf
+% LocalWords: langle metakeys addmetakey metasetkeys countryshort townzip aff
+% LocalWords: streetaddress depts
diff --git a/Master/texmf-dist/source/latex/stex/dcm/dcm.ins b/Master/texmf-dist/source/latex/stex/dcm/dcm.ins
new file mode 100644
index 00000000000..506de6c2821
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/dcm/dcm.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex dcm.ins
+%%
+%% Copyright(c) 2008 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/dcm/dcm.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{dcm.sty}{\from{dcm.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file dcm.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{dcm.sty.ltxml}{\from{dcm.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated file dcm.sty.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/hwexam/hwexam.dtx b/Master/texmf-dist/source/latex/stex/hwexam/hwexam.dtx
new file mode 100644
index 00000000000..f31807d13e5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/hwexam/hwexam.dtx
@@ -0,0 +1,578 @@
+% \iffalse meta-comment
+% An Infrastructure for marking up Assignments
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/hwexam/hwexam.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% Copyright (c) 2007 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+% \fi
+%
+% \iffalse
+%<package|cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{hwexam}[2012/01/28 v0.9b homework assignments and exams]
+%<cls>\ProvidesClass{hwexam}[2012/01/28 v0.9b assignment and exam documents]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,float}
+\usepackage{hwexam}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: hwexam.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/hwexam/hwexam.dtx $
+\usepackage{stex-logo}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{hwexam.dtx}\end{document}
+%</driver>
+% \fi
+%\CheckSum{432}
+%
+% \changes{v0.9}{2006/09/18}{First Version with Documentation}
+% \changes{v0.9a}{2010/06/25}{more semantic headers for exams}
+% \changes{v0.9b}{2010/09/20}{adding \texttt{assignment.cls}}
+% \changes{v0.9c}{2010/09/20}{renaming from \texttt{assignment} to \texttt{hwexam} to
+% avoid name clashes with existing \texttt{assignment.cls} on CTAN.}
+%
+% \GetFileInfo{hwexam.sty}
+%
+% \MakeShortVerb{\|}
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\latexml{\scsys{LaTeXML}}
+%
+% \title{\texttt{hwexam.sty/cls}: An Infrastructure for formatting Assignments
+% and Exams\thanks{Version {\fileversion} (last revised {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |hwexam| packge and class allows individual course assignment sheets and
+% compond assignment documents using problem files marked up with the |problem| package.
+% \end{abstract}
+% \setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+%\section{Introduction}\label{sec:intro}
+%
+% The |hwexam| package and class supplies an infrastructure that allows to format
+% nice-looking assignment sheets by simply including problems from problem files marked up
+% with the |problem| package~\cite{Kohlhase:problem:ctan}. It is designed to be
+% compatible with |problems.sty|, and inherits some of the functionality.
+%
+% \section{The User Interface}
+%
+% \subsection{Package and Class Options}\label{sec:user:options}
+%
+% The |hwexam| package and class take the options |solutions|, |notes|, |hints|, |pts|,
+% |min|, and |boxed| that are just passed on to the |problems| package (cf. its
+% documentation for a description of the intended behavior).
+%
+% If the \DescribeMacro{showmeta}|showmeta| option is set, then the metadata keys are
+% shown (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
+%
+% The |hwexam| class additionally accepts the options |report|, |book|, |chapter|, |part|,
+% and |showignores|, of the |omdoc| package~\cite{Kohlhase:smomdl:ctan} on which it is
+% based and passes them on to that. For the |extrefs| option
+% see~\cite{Kohlhase:sref:ctan}.
+%
+% \subsection{Assignments}
+%
+% This package supplies the \DescribeEnv{assignment}|assignment| environment that groups
+% problems into assignment sheets. It takes an optional KeyVal argument with the keys
+% \DescribeMacro{number}|number| (for the assignment number; if none is given, 1 is
+% assumed as the default or --- in multi-assignment documents --- the ordinal of the
+% |assignment| environment), \DescribeMacro{title}|title| (for the assignment title; this
+% is referenced in the title of the assignment sheet), \DescribeMacro{type}|type| (for the
+% assignment type; e.g. ``quiz'', or ``homework''), \DescribeMacro{given}|given| (for the
+% date the assignment was given), and \DescribeMacro{due}|due| (for the date the
+% assignment is due).
+%
+% \subsection{Typesetting Exams}
+%
+% Furthermore, the |hwexam| package takes the option
+% \DescribeMacro{multiple}|multiple| that allows to combine multiple assigment sheets into
+% a compound document (the assignment sheets are treated as section, there is a table of
+% contents, etc.).
+%
+% Finally, there is the option \DescribeMacro{test}|test| that modifies the behavior to
+% facilitate formatting tests. Only in |test| mode, the macros |\testspace|,
+% |\testnewpage|, and |\testemptypage| have an effect: they generate space for the
+% students to solve the given problems. Thus they can be left in the {\LaTeX} source.
+%
+% \DescribeMacro{\testspace}|\testspace| takes an argument that expands to a dimension,
+% and leaves vertical space accordingly. \DescribeMacro{\testnewpage}|\testnewpage| makes
+% a new page in |test| mode, and \DescribeMacro{\testemptypage}|\testemptypage| generates
+% an empty page with the cautionary message that this page was intentionally left empty.
+%
+% Finally, the \DescribeEnv{testheading}|\testheading| takes an optional keyword argument
+% where the keys \DescribeMacro{duration}|duration| specifies a string that specifies the
+% duration of the test, \DescribeMacro{min}|min| specifies the equivalent in number of
+% minutes, and \DescribeMacro{reqpts}|reqpts| the points that are required for a perfect
+% grade.
+% \begin{exfig}[ht]
+% \makeatletter
+% \@problem{1.1}{4}{10}
+% \@problem{2.1}{4}{8}
+% \@problem{2.2}{6}{10}
+% \@problem{2.3}{6}{10}
+% \@problem{3.1}{4}{8}
+% \@problem{3.2}{4}{8}
+% \@problem{3.3}{2}{4}
+% \makeatother
+% \begin{verbatim}
+% \title{320101 General Computer Science (Fall 2010)}
+% \begin{testheading}[duration=one hour,min=60,reqpts=27]
+% Good luck to all students!
+% \end{testheading}
+% \end{verbatim}
+% \vspace*{-3ex}\hrule\vspace*{.5ex} formats to\vspace*{1ex}
+% \hrule\par\noindent\vspace*{2ex}
+% \title{320101 General Computer Science (Fall 2010)}
+% \begin{testheading}[duration=one hour,min=60,reqpts=27]
+% good luck
+% \end{testheading}
+% \caption{A generated test heading.}\label{fig:testheading}
+% \end{exfig}
+%
+% \subsection{Including Assignments}
+%
+% The \DescribeMacro{\includeassignment}|\includeassignment| macro can be used to include
+% an assignment from another file. It takes an optional KeyVal argument and a second
+% argument which is a path to the file containing the problem (the macro assumes that
+% there is only one |assignment| environment in the included file). The keys
+% \DescribeMacro{number}|number|, \DescribeMacro{title}|title|,
+% \DescribeMacro{type}|type|, \DescribeMacro{given}|given|, and \DescribeMacro{due}|due|
+% are just as for the |assignment| environment and (if given) overwrite the ones specified
+% in the |assignment| environment in the included file.
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}\newpage
+% \newpage
+%
+% \section{Implementation: The hwexam Class}\label{sec:impl:cls}
+%
+% The functionality is spread over the |hwexam| class and package. The class provides
+% the |document| environment and pre-loads some convenience packages, whereas the package
+% provides the concrete functionality.
+%
+% |hwexam.dtx| generates four files: |hwexam.cls| (all the code between
+% {\textsf{$\langle$*cls$\rangle$}} and {\textsf{$\langle$/cls$\rangle$}}), |hwexam.sty|
+% (between {\textsf{$\langle$*package$\rangle$}} and
+% {\textsf{$\langle$/package$\rangle$}}) and their {\latexml} bindings (between
+% {\textsf{$\langle$*ltxml.cls$\rangle$}} and {\textsf{$\langle$/ltxml.cls$\rangle$}} and
+% {\textsf{$\langle$*ltxml.sty$\rangle$}} and {\textsf{$\langle$/ltxml.sty$\rangle$
+% respetively}}). We keep the corresponding code fragments together, since the
+% documentation applies to both of them and to prevent them from getting out of sync.
+%
+% \subsection{Class Options}\label{sec:impl:cls:options}
+%
+% To initialize the |hwexam| class, we declare and process the necessary options by
+% passing them to the respective packages and classes they come from.
+%
+% \begin{macrocode}
+%<*cls>
+\DeclareOption{test}{\PassOptionsToPackage{\CurrentOption}{hwexam}}
+\DeclareOption{multiple}{\PassOptionsToPackage{\CurrentOption}{hwexam}}
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}}
+\DeclareOption{notes}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption{hints}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption{solutions}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption{pts}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption{min}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption{boxed}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption{extract}{\PassOptionsToPackage{\CurrentOption}{problem}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc}}
+\ProcessOptions
+%</cls>
+%<*ltxml.cls>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+use LaTeXML::Util::Pathname;
+use Cwd qw(cwd abs_path);
+DeclareOption('test',,sub {PassOptions('hwexam','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('multiple',sub {PassOptions('hwexam','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('showmeta',sub {PassOptions('metakeys','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('extrefs',sub {PassOptions('sref','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('notes',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('hints',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('solutions',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('pts',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('min',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('boxed',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('extract',sub {PassOptions('problem','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption(undef,sub {PassOptions('omdoc','cls',ToString(Digest(T_CS('\CurrentOption')))); });
+ProcessOptions();
+%</ltxml.cls>
+% \end{macrocode}
+%
+% We load |article.cls|, and the desired packages. For the {\latexml} bindings, we make
+% sure the right packages are loaded.
+%
+% \begin{macrocode}
+%<*cls>
+\LoadClass{omdoc}
+\RequirePackage{stex}
+\RequirePackage{hwexam}
+\RequirePackage{graphicx}
+\RequirePackage{a4wide}
+\RequirePackage{amssymb}
+\RequirePackage{amstext}
+\RequirePackage{amsmath}
+%</cls>
+%<*ltxml.cls>
+LoadClass('omdoc');
+RequirePackage('stex');
+RequirePackage('hwexam');
+RequirePackage('graphicx');
+RequirePackage('amssymb');
+RequirePackage('amstext');
+RequirePackage('amsmath');
+%</ltxml.cls>
+% \end{macrocode}
+%
+% \section{Implementation: The hwexam Package}
+%
+% \subsection{Package Options}
+%
+% The first step is to declare (a few) package options that handle whether certain
+% information is printed or not. Some come with their own conditionals that are set by the
+% options, the rest is just passed on to the |problems| package.
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\iftest\testfalse
+\newif\ifsolutions\solutionsfalse
+\DeclareOption{test}{\testtrue\solutionsfalse}
+\newif\ifmultiple\multiplefalse
+\DeclareOption{multiple}{\multipletrue}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{problem}}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+% Then we make sure that the necessary packages are loaded (in the right versions).
+% \begin{macrocode}
+%<*package>
+\RequirePackage{keyval}[1997/11/10]
+\RequirePackage{problem}
+%</package>
+% \end{macrocode}
+%
+% Here comes the equivalent header information for {\latexml}, we also initialize the
+% package inclusions. Since {\latexml} does not handle options yet, we have nothing to
+% do.
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+RequirePackage('problem');
+%</ltxml>
+% \end{macrocode}
+%
+% Then we register the namespace of the requirements ontology
+% \begin{macrocode}
+%<*ltxml>
+RegisterNamespace('assig'=>"http://omdoc.org/ontology/assignments#");
+RegisterDocumentNamespace('assig'=>"http://omdoc.org/ontology/assignments#");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Assignments}
+%
+% We will prepare the keyval support for the |assignment| environment.
+%
+% \begin{macrocode}
+%<*package>
+\addmetakey{assig}{number}
+\addmetakey*{assig}{title}
+\addmetakey{assig}{type}
+\addmetakey{assig}{given}
+\addmetakey{assig}{due}
+% \end{macrocode}
+%
+% The next three macros are intermediate functions that handle the case gracefully, where
+% the respective token registers are undefined.
+%
+% The |\given@due| macro prints information about the given and due status of the
+% assignment. Its arguments specify the brackets.
+%
+% \begin{macrocode}
+\def\given@due#1#2{%
+\ifx\assig@given\@empty\else\ifx\assig@due\@empty\else{#1}\fi\fi%
+\ifx\assig@given\@empty\else{Given {\assig@given}}\fi%
+\ifx\assig@given\@empty\else\ifx\assig@due\@empty\else{, }\fi\fi%
+\ifx\assig@due\@empty\else{Due {\assig@due}}\fi%
+\ifx\assig@given\@empty\else{\ifx\assig@due\@empty\else{#2}\fi}\fi}
+% \end{macrocode}
+%
+% With them, we can define the central |assignment| environment. This has two forms
+% (separated by |\ifmultiple|) in one we make a title block for an assignment sheet, and
+% in the other we make a section heading and add it to the table of
+% contents.
+%
+% \begin{macro}{assignment@titleblock}
+% This macro prints the title block of a section. If the |multiple| package option is
+% given we make a section heading out of this, and if not, a title block. Note that as
+% |problem|s are numbered by section, we also set the section counter in the latter
+% case.
+% \begin{macrocode}
+\ifmultiple
+\def\assignment@titleblock{%
+\@ifundefined{assig@number}{\stepcounter{section}}{\setcounter{section}{\assig@number}}%
+\section*{\protect\document@hwexamtype~\arabic{section}:~\assig@title\given@due{\\(})}%
+\addcontentsline{toc}{section}{\document@hwexamtype~{\arabic{section}}:~\assig@title}%
+\setcounter{problem}{0}}
+\else
+\def\assignment@titleblock{%
+\setcounter{section}{\assig@number}
+\begin{center}\bf
+\Large\@title\\
+\document@hwexamtype~\assig@number:~\assig@title\strut\\
+\large{\given@due()}
+\end{center}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{assignment@process@keys}
+% this macro collects the keys from its arugment and corrects them from the outside.
+% \begin{macrocode}
+\def\assignment@process@keys#1{\metasetkeys{assig}{#1}
+\ifx\inclassig@title\@empty\else\def\assig@title{\inclassig@title}\fi
+\ifx\inclassig@type\@empty\else\def\assig@type{\inclassig@type}\fi
+\ifx\inclassig@number\@empty\else\def\assig@number{\inclassig@number}\fi
+\ifx\inclassig@due\@empty\else\def\assig@due{\inclassig@due}\fi
+\ifx\inclassig@given\@empty\else\def\assig@given{\inclassig@given}\fi}
+% \end{macrocode}
+% for this to work we need to define the |\inclassig| macros in case no
+% |\includeassignment| is ever called.
+% \begin{macrocode}
+\def\inclassig@title{}
+\def\inclassig@type{}
+\def\inclassig@number{}
+\def\inclassig@due{}
+\def\inclassig@given{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{assignment}
+% \begin{macrocode}
+\newenvironment{assignment}[1][]{\assignment@process@keys{#1}%
+\assignment@titleblock}{}
+%</package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*ltxml>
+DefEnvironment('{assignment} OptionalKeyVals:assig',
+ "<omdoc:omgroup ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() "
+ . "assig:dummy='for the namespace'>"
+ . "<omdoc:metadata>"
+ . "<dc:title>"
+ . "Assignment ?&KeyVal(#1,'num')(&KeyVal(#1,'num').)()"
+ . "?&KeyVal(#1,'title')((&KeyVal(#1,'title')))"
+ . "</dc:title>"
+ . "?&KeyVal(#1,'given')(<omdoc:meta property='assig:given'>&KeyVal(#1,'given')</omdoc:meta>)()"
+ . "?&KeyVal(#1,'due')(<omdoc:meta property='assig:due'>&KeyVal(#1,'due')</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')(<omdoc:meta property='assig:pts'>&KeyVal(#1,'pts')</omdoc:meta>)()"
+ . "</omdoc:metadata>"
+ . "#body"
+ ."</omdoc:omgroup>\n",
+ afterDigest=> sub {
+ my ($stomach, $kv) = @_;
+ my $kvi = LookupValue('inclassig');
+ my @keys = qw(id num title pts given due);
+ my @vals = $kvi && map($kvi->getValue($_), @keys);
+ foreach my $i(0..$#vals) {
+ $kv->setValue($keys[$i],$vals[$i]) if $vals[$i];
+ }});#$
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macrocode}
+%<*package>
+\def\assig@default@type{Assignment}
+\addmetakey[\assig@default@type]{document}{hwexamtype}
+%</package>
+% \end{macrocode}
+%
+% \subsection{Including Assignments}
+%
+% The next command is essentially a glorified |\include| statement, it just sets some
+% internal macros first that overwrite the local points, \ednote{these keys should be done
+% with \texttt{\textbackslash addmetakey}}
+%
+% \begin{macrocode}
+%<*package>
+\addmetakey{inclassig}{number}
+\addmetakey{inclassig}{title}
+\addmetakey{inclassig}{type}
+\addmetakey{inclassig}{given}
+\addmetakey{inclassig}{due}
+\newcommand{\includeassignment}[2][]{\metasetkeys{inclassig}{#1}\include{#2}}
+\newcommand{\inputassignment}[2][]{\metasetkeys{inclassig}{#1}\input{#2}}
+%</package>
+%<*ltxml>
+DefMacro('\includeassignment [] {}', sub {
+ my ($stomach, $arg1, $arg2) = @_;
+ AssignValue('inclassig',$arg1) if $arg1;
+ (Invocation(T_CS('\input'),$arg2)->unlist);
+});
+DefMacro('\inputassignment [] {}','\input{#2}');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Typesetting Exams}
+%
+% \begin{macrocode}
+%<*package>
+\addmetakey{quizheading}{tas}
+\newcommand\quizheading[1]{\def\@tas{#1}%
+\large\noindent NAME: \hspace{8cm} MAILBOX:\\[2ex]%
+\ifx\@tas\@empty\else%
+\noindent TA: \@for\@I:=\@tas\do{{\Large$\Box$}\@I\hspace*{1em}}\\[2ex]\fi}
+%</package>
+% \end{macrocode}
+% \begin{macrocode}
+%<*package>
+\addmetakey{testheading}{min}
+\addmetakey{testheading}{duration}
+\addmetakey{testheading}{reqpts}
+\newenvironment{testheading}[1][]{\metasetkeys{testheading}{#1}
+{\noindent\large{}Name: \hfill Matriculation Number:\hspace*{2cm}\strut\\[1ex]
+\begin{center}\Large\textbf{\@title}\\[1ex]\large\@date\\[3ex]\end{center}
+{\textbf{You have
+\ifx\test@heading@duration\@empty\testheading@min minutes\else\testheading@duration\fi
+(sharp) for the test}};\\ Write the solutions to the sheet.}\par\noindent
+
+\newcount\check@time\check@time=\testheading@min
+\advance\check@time by -\theassignment@totalmin
+The estimated time for solving this exam is {\theassignment@totalmin} minutes,
+leaving you {\the\check@time} minutes for revising your exam.
+
+\newcount\bonus@pts\bonus@pts=\theassignment@totalpts
+\advance\bonus@pts by -\testheading@reqpts
+You can reach {\theassignment@totalpts} points if you solve all problems. You will only need
+{\testheading@reqpts} points for a perfect score, i.e.\ {\the\bonus@pts} points are
+bonus points. \vfill
+\begin{center}
+ {\Large\em
+% You have ample time, so take it slow and avoid rushing to mistakes!\\[2ex]
+ Different problems test different skills and knowledge, so do not get stuck on
+ one problem.}\vfill\par\correction@table \\[3ex]
+\end{center}}
+{\newpage}
+%</package>
+%<*ltxml>
+DefEnvironment('{testheading}OptionalKeyVals:omdoc','');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\def\testspace#1{\iftest\vspace*{#1}\fi}
+\def\testnewpage{\iftest\newpage\fi}
+\def\testemptypage{\iftest\begin{center}This page was intentionally left
+ blank for extra space\end{center}\vfill\eject\else\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\testspace{}','');
+DefConstructor('\testnewpage','');
+DefConstructor('\testemptypage','');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\@problem}
+% This macro acts on a problem's record in the |*.aux| file. Here we redefine it to
+% generate the correction table.
+% \begin{macrocode}
+%<*package>
+\def\@problem#1#2#3{\stepcounter{assignment@probs}
+\def\@test{#2}\ifx\@test\@empty\else\addtocounter{assignment@totalpts}{#2}\fi
+\def\@test{#3}\ifx\@test\@empty\else\addtocounter{assignment@totalmin}{#3}\fi
+\xdef\correction@probs{\correction@probs & #1}%
+\xdef\correction@pts{\correction@pts & #2}
+\xdef\correction@reached{\correction@reached &}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\correction@table}
+% This macro generates the correction table
+% \begin{macrocode}
+%<*package>
+\newcounter{assignment@probs}
+\newcounter{assignment@totalpts}
+\newcounter{assignment@totalmin}
+\def\correction@probs{prob.}%
+\def\correction@pts{total}%
+\def\correction@reached{reached}%
+\stepcounter{assignment@probs}
+\def\correction@table{\begin{tabular}{|l|*{\theassignment@probs}{c|}|p{3cm}|}\hline%
+&\multicolumn{\theassignment@probs}{c||}%
+{\footnotesize To be used for grading, do not write here} &\\\hline
+\correction@probs & Sum & grade\\\hline
+\correction@pts &\theassignment@totalpts & \strut\hspace{3cm}\strut\\\hline
+\correction@reached & & \\[.7cm]\hline
+\end{tabular}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Leftovers}
+%
+% at some point, we may want to reactivate the logos font, then we use
+% \begin{verbatim}
+% here we define the logos that characterize the assignment
+% \font\bierfont=../assignments/bierglas
+% \font\denkerfont=../assignments/denker
+% \font\uhrfont=../assignments/uhr
+% \font\warnschildfont=../assignments/achtung
+%
+% \def\bierglas{{\bierfont\char65}}
+% \def\denker{{\denkerfont\char65}}
+% \def\uhr{{\uhrfont\char65}}
+% \def\warnschild{{\warnschildfont\char 65}}
+% \def\hardA{\warnschild}
+% \def\longA{\uhr}
+% \def\thinkA{\denker}
+% \def\discussA{\bierglas}
+% \end{verbatim}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+% LocalWords: GPL structuresharing STR
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
diff --git a/Master/texmf-dist/source/latex/stex/hwexam/hwexam.ins b/Master/texmf-dist/source/latex/stex/hwexam/hwexam.ins
new file mode 100644
index 00000000000..fc8f40b0953
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/hwexam/hwexam.ins
@@ -0,0 +1,43 @@
+%%
+%% This file generates files required to use the hwexam class.
+%% At your command prompt write
+%%
+%% latex hwexam.ins
+%%
+%% Copyright(c) 2010 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex-content/sty/hwexam/hwexam.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{hwexam.sty}{\from{hwexam.dtx}{package}}}
+% and the class
+\generate{\file{hwexam.cls}{\from{hwexam.dtx}{cls}}}
+
+\Msg{*}
+\Msg{* You probably need to move the files hwexam.{sty,cls} into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{hwexam.sty.ltxml}{\from{hwexam.dtx}{ltxml}}}
+\generate{\file{hwexam.cls.ltxml}{\from{hwexam.dtx}{ltxml.cls}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated files hwexam.{sty,cls}.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile b/Master/texmf-dist/source/latex/stex/make/Makefile
new file mode 100644
index 00000000000..0aaad6a8d8d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile
@@ -0,0 +1,3 @@
+all:
+clean:
+distclean:
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.base.in b/Master/texmf-dist/source/latex/stex/make/Makefile.base.in
new file mode 100644
index 00000000000..35834efbb00
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.base.in
@@ -0,0 +1,28 @@
+sms: $(MODS.sms)
+
+####################### sTeX utilities ##############################
+
+$(MODS.sms): %.sms: %.tex $(STEXBINDIR)/sms
+ $(SMSPROG) $<
+
+graph:
+ $(GRAPHPROG) -o graph -f pdf $(SNIPPATHS) all.tex
+
+idtest: $(TARGET)
+ $(STEXBINDIR)/idcheck -q slides.tex
+
+struct: $(TARGET)
+ $(STEXBINDIR)/modstr < slides.tex
+
+ccheck: $(TARGET)
+ latex slides.tex
+ $(STEXBINDIR)/idcheck slides.tex
+ $(STEXBINDIR)/modstr -s < slides.tex > sstruct
+ cat sstruct
+
+############################# cleaning #################################
+clean:
+ rm -Rf $(CLEAN)
+
+distclean: clean
+ rm -Rf $(DISTCLEAN)
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.base.vars b/Master/texmf-dist/source/latex/stex/make/Makefile.base.vars
new file mode 100644
index 00000000000..bc112e3f55c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.base.vars
@@ -0,0 +1,26 @@
+#################################### PATHS ###############################
+# the paths can be customized by setting the shell variable STEXDIR appropriately
+STEXSTYDIR = $(STEXDIR)/sty
+STEXBINDIR = $(STEXDIR)/bin
+
+################################# Programs ###############################
+SMSPROG = PERL5LIB=$(STEXDIR)/bin $(STEXDIR)/bin/sms
+GRAPHPROG = PERL5LIB=$(STEXDIR)/bin $(STEXDIR)/bin/sgraph
+
+########################## Conversion and Formatting Targets ###########
+# the TARGET is the set of top-level TeX files that should be formatted or converted.
+# TARGET.parts are separate parts of the target (e.g. included via \input). The TARGET
+# files usually depend on them and they are not Modules (see below).
+# Modules (MODS) are sTeX files without head and tail, so that they can be included
+# into other sTeX files. TARGET can be set by the including Makefile, MODS are
+# computed as as the remaining *.tex files.
+
+MODS ?= $(filter-out $(BUTFILES) $(TARGET.parts) $(TARGET), $(shell ls *.tex)) $(MODS.extra)
+MODS.sms ?= $(MODS:%.tex=%.sms) $(MODS.sms.extra)
+
+# the prefix files or the MODSLIBDIR variable must be specified by the calling Makefile
+MODS.pre ?= $(MODSLIBDIR)/pre.tex
+MODS.post ?= $(MODSLIBDIR)/post.tex
+
+########################### for cleaning ######################################
+DISTCLEAN += $(MODS.sms)
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.in b/Master/texmf-dist/source/latex/stex/make/Makefile.in
new file mode 100644
index 00000000000..1d7f1fb368d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.in
@@ -0,0 +1,3 @@
+include $(STEXDIR)/make/Makefile.base.in
+include $(STEXDIR)/make/Makefile.latex.in
+include $(STEXDIR)/make/Makefile.latexml.in
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.latex.in b/Master/texmf-dist/source/latex/stex/make/Makefile.latex.in
new file mode 100644
index 00000000000..65bf6227b87
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.latex.in
@@ -0,0 +1,31 @@
+pdf: sms $(TARGET.pdf)
+mpdf: sms $(MODS.pdf)
+# LaTeX build rules:
+#
+# use non-interactive PDFLATEX (see above)
+#
+# _always_ delete pdf on error (otherwise, we end up with a corrupt
+# pdf file and make saying "nothing to do" on the next run )
+#
+# make will delete temporary files (toc,sms,aux) afterwards
+# (FIXME: why? should this be disabled or kept like that?)
+#
+# make pdf depend on its own .toc and .aux and global aux/sms files
+$(TARGET.pdf): %.pdf: %.tex $(MODS) $(TARGET.parts) $(IMG)
+ $(PDFLATEX) $< || $(RM) $@
+ @echo
+ @if (test -e $(patsubst %.tex, %.idx, $<));\
+ then makeindex $(patsubst %.tex, %.idx, $<); fi
+ @echo
+ @if (grep "No file$(patsubst %.tex, %.bbl, $<)" $(patsubst %.tex, %.log, $<)> /dev/null);\
+ then bibtex $(patsubst %.tex, %, $<); fi
+ @echo
+ $(PDFLATEX) $< || $(RM) $@
+ @echo
+ @if (grep Rerun $(patsubst %.tex, %.log, $<) > /dev/null);\
+ then $(PDFLATEX) $< || $(RM) $@; fi
+ @if (grep Rerun $(patsubst %.tex, %.log, $<) > /dev/null);\
+ then $(PDFLATEX) $< || $(RM) $@; fi
+
+$(MODS.pdf): %.pdf: %.tex
+ $(PDFLATEX) -jobname=$(basename $<) "\nonstopmode\input{$(MODS.pre)}\begin{document}\input{$<}\end{document}" || $(RM) $@
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.latex.vars b/Master/texmf-dist/source/latex/stex/make/Makefile.latex.vars
new file mode 100644
index 00000000000..f894cf7262b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.latex.vars
@@ -0,0 +1,16 @@
+TARGET.pdf = $(TARGET:%.tex=%.pdf)
+MODS.pdf = $(MODS:%.tex=%.pdf)
+
+####################### Programs #######################
+# pdflatex: use non-interactive switches
+
+PDFLATEX = pdflatex -interaction batchmode -file-line-error
+#PDFLATEX = pdflatex
+
+########################### environment #############################
+TEXINPUTS := $(TEXINPUTS)$(STEXSTYDIR)//:
+
+########################### cleaning #############################
+
+CLEAN += *~ *.log *.blg *.idx *.ilg *.out
+DISTCLEAN += *.dvi *.aux *.toc *.bbl *.ind $(TARGET.pdf)
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.latexml.in b/Master/texmf-dist/source/latex/stex/make/Makefile.latexml.in
new file mode 100644
index 00000000000..f0e1731df4c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.latexml.in
@@ -0,0 +1,43 @@
+omdoc: sms $(filter-out all.omdoc,$(TARGET.omdoc))
+mods: sms $(MODS.omdoc)
+
+############################ Running LaTeXML #############################
+$(TARGET.tex.xml): %.tex.xml: %.tex $(TARGET.parts)
+ latexmlc $< $(LTXPATHS) --mode=standard --local --destination=$@ --log=$@.log\
+
+$(TARGET.xml): %.xml: %.tex.xml
+ $(LATEXMLPOST) --destination=$@ $< >& $@.log\
+ || echo "FATAL: latexmlpost crashed with fatal error on $<" > $@.log
+
+$(TARGET.sdomdoc): %.sdomdoc: %.xml $(STEXOXSL)
+ $(STEXXSLT) -o $@ $(STEXOXSL) $<
+
+$(TARGET.omdoc): %.omdoc: %.tex $(TARGET.parts) $(LTSTY) $(STEXOXSL)
+ latexmlc $< $(LTXPATHS) --local --mode=standard\
+ --postdest=$(basename $<).omdoc\
+ --log=$(basename $<).ltxlog --includestyles\
+ --stylesheet=$(STEXOXSL) --nodefaultcss\
+ --stylesheetparam=math-format:$(MATHFORMAT)\
+ --post --openmath --pmml --summary
+
+$(MODS.tex.xml): %.tex.xml: %.tex $(LTSTY)
+ latexmlc --preamble=$(MODS.pre) $< $(LTXPATHS) --local --mode=fragment --destination=$@ --log=$@.log --includestyles
+
+$(MODS.xml): %.xml: %.tex.xml
+ $(LATEXMLPOST) --destination=$@ $< >& $@.log
+
+$(MODS.sdomdoc): %.sdomdoc: %.xml $(STEXOXSL)
+ xsltproc -o $@ $(STEXOXSL) $< >& $@.log
+
+$(MODS.omdoc): %.omdoc: %.tex $(LTSTY) $(STEXOXSL)
+ latexmlc --preamble=$(MODS.pre) $< $(LTXPATHS)\
+ --local --mode=fragment\
+ --postdest=$(basename $<).omdoc\
+ --log=$(basename $<).ltxlog --includestyles\
+ --stylesheet=$(STEXOXSL) --nodefaultcss\
+ --post --openmath --pmml --summary
+
+errlog: latexml.errlog
+
+latexml.errlog: $(MODS.log)
+ grep -i -e error -e Fatal $(MODS.log) > $@ || echo "No errors found" > $@
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.latexml.vars b/Master/texmf-dist/source/latex/stex/make/Makefile.latexml.vars
new file mode 100644
index 00000000000..4dfb6848ce2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.latexml.vars
@@ -0,0 +1,48 @@
+#################################### PATHS ###############################
+# the paths can be customized by setting the shell variable STEXDIR appropriately
+STEXXSLDIR = $(STEXDIR)/xsl
+STEXRNCDIR = $(STEXDIR)/rnc
+
+###################### Conversion Programs ###############################
+STEXLTXDIRS = modules statements sproof omtext omdoc sref presentation dcm reqdoc metakeys\
+ mikoslides problem hwexam cmath etc
+
+LTXPATHS = --path=$(STEXSTYDIR) --path=$(STEXDIR)/schema/rng \
+ $(STEXLTXDIRS:%=--path=$(STEXSTYDIR)/%)
+
+LATEXML = latexmlc $(LTXPATHS)
+LATEXMLPOST = latexmlpost --openmath --pmml --nocrossref --noscan --novalidate
+
+MATHFORMAT = om
+STEXXSLT = xsltproc --stringparam math-format $(MATHFORMAT)
+
+STEXOXSL = $(STEXXSLDIR)/omdocpost.xsl
+
+STEXRNG = $(shell ls $(STEXDIR)/rnc/*.rng)
+
+########################## Conversion and Formatting Targets ###########
+# the TARGET is the set of top-level TeX files that should be formatted or converted
+# Modules (MODS) are sTeX files without head and tail, so that they can be included
+# into other sTeX files. TARGET can be set by the including Makefile, MODS are
+# computed as as the remaining *.tex files.
+
+TARGET.tex.xml = $(TARGET:%.tex=%.tex.xml)
+TARGET.xml = $(TARGET:%.tex=%.xml)
+TARGET.omdoc = $(TARGET:%.tex=%.omdoc)
+TARGET.sdomdoc = $(TARGET:%.tex=%.sdomdoc)
+
+MODS.tex.xml = $(MODS:%.tex=%.tex.xml)
+MODS.xml = $(MODS:%.tex=%.xml)
+MODS.omdoc = $(MODS:%.tex=%.omdoc)
+MODS.sdomdoc = $(MODS:%.tex=%.sdomdoc)
+MODS.log = $(shell ls *.ltxlog)
+
+# the prefix files or the MODSLIBDIR variable must be specified by the calling Makefile
+MODS.pre ?= $(MODSLIBDIR)/pre.tex
+MODS.post ?= $(MODSLIBDIR)/post.tex
+
+########################### environment #############################
+TEXINPUTS := $(TEXINPUTS)$(STEXSTYDIR)//:
+
+CLEAN += $(TARGET.xml) $(TARGET.tex.xml) $(MODS.tex.xml) $(MODS.xml)
+DISTCLEAN += $(TARGET.omdoc) $(MODS.omdoc)
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.subdirs b/Master/texmf-dist/source/latex/stex/make/Makefile.subdirs
new file mode 100644
index 00000000000..ccbf95cd3ba
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.subdirs
@@ -0,0 +1,6 @@
+all errlog::
+ @for d in $(MAKEDIRS); do (cd $$d && $(MAKE) -$(MAKEFLAGS) $@) done
+
+clean distclean::
+ @for d in $(CLEANDIRS); do (cd $$d && $(MAKE) -$(MAKEFLAGS) $@) done
+
diff --git a/Master/texmf-dist/source/latex/stex/make/Makefile.vars b/Master/texmf-dist/source/latex/stex/make/Makefile.vars
new file mode 100644
index 00000000000..d59db56a4f7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/Makefile.vars
@@ -0,0 +1,3 @@
+include $(STEXDIR)/make/Makefile.base.vars
+include $(STEXDIR)/make/Makefile.latex.vars
+include $(STEXDIR)/make/Makefile.latexml.vars
diff --git a/Master/texmf-dist/source/latex/stex/make/README b/Master/texmf-dist/source/latex/stex/make/README
new file mode 100644
index 00000000000..78419320a69
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/make/README
@@ -0,0 +1,23 @@
+This directory contains two Makefiles for inclusion into Makefile-based build systems.
+
+file contains
+--------------------------------------------------------------------------------------
+Makefile.base.vars general variable declarations (include before all others)
+Makefile.base.in general rules (include before all others)
+Makefile.latexml.vars variable declarations for the LaTeXML conversion
+Makefile.latexml.in rules for producing OMDoc via LaTeXML
+Makefile.latex.vars variable declarations for LaTeX formatting
+Makefile.latex.in rules for LaTeX formatting
+Makefile.vars combines all *.vars above
+Makefile.in combines all *.in above
+
+The usual setup for this will be to create SVN externals
+- the deployed instance of sTeX (i.e. https://svn.kwarc.info/repos/sTeX/trunk or /latest)
+- to this directory
+and use the lines
+
+STEXDIR = <the sTeX external>
+include $(STEXDIR)/make/Makefile.vars
+include $(STEXDIR)/make/Makefile.in
+
+at appropriate places in the calling Makefile. It is crucial to set STEXDIR variable to make this setup work.
diff --git a/Master/texmf-dist/source/latex/stex/metakeys/metakeys.dtx b/Master/texmf-dist/source/latex/stex/metakeys/metakeys.dtx
new file mode 100644
index 00000000000..0222eb14161
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/metakeys/metakeys.dtx
@@ -0,0 +1,435 @@
+% \iffalse meta-comment
+% An Infrastructure for marking up Metadata in LaTeX documents
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/metakeys/metakeys.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% Copyright (c) 2009 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{metakeys}[2012/01/28 v0.9 Framework for Metadata Keys]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{stex-logo,url,array,float}
+\usepackage[show]{ed}
+\usepackage{../ctansvn}
+\usepackage[eso-foot,today]{svninfo}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\svnInfo $Id: metakeys.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/metakeys/metakeys.dtx $
+\usepackage{hyperref}
+%\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\usepackage[showmeta]{metakeys}
+\begin{document}\DocInput{metakeys.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{176}
+%
+% \changes{v0.1}{2009/12/14}{First version}
+% \changes{v0.8}{2010/06/18}{This is almost done}
+% \changes{v0.9}{2010/09/02}{make sure that showkeys is always initialized}
+%
+% \GetFileInfo{metakeys.sty}
+%
+% \MakeShortVerb{\|}
+% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\latexml{\scsys{LaTeXML}}
+% \def\omdoc{OMDoc}
+% \def\omdocv#1{\omdoc{#1}}
+%
+% \title{{\texttt{metakeys.sty}}: A generic framework for extensible Metadata in {\LaTeX}\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+% \begin{abstract}
+% The |metakeys| package is part of the {\sTeX} collection, a version of {\TeX/\LaTeX} that
+% allows to markup {\TeX/\LaTeX} documents semantically without leaving the document
+% format, essentially turning {\TeX/\LaTeX} into a document format for mathematical
+% knowledge management (MKM).
+%
+% This package supplies the infrastructure for extending {\sTeX} macros with {\omdoc}
+% metadata. This package is mainly intended for authors of {\sTeX} extension packages.
+% \end{abstract}
+%
+% \setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+% \section{The User Interface}\label{sec:user}
+%
+% Many of the {\stex} macros and environments take an optional first argument which uses
+% key/value pairs to specify metadata relations of the marked up objects. The |metakeys|
+% package supplies the infrastructure managing these key/value pairs. It also forms the
+% basis for the |rdfmeta| package which allows to use these for flexible, user-extensible
+% metadata relations (see~\ctancite{Kohlhase:rdfmeta} for details).
+%
+% \subsection{Package Options}\label{sec:user:options}
+%
+% The |metakeys| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
+% this is set, then the metadata keys defined by the |\addmetakey| are shown
+% (see~\ref{sec:user:showmeta})
+%
+% \subsection{Adding Metadata Keys to Commands}\label{sec:user:keys}
+%
+% Key/value pairs in \stex are organized in \textbf{key groups}: every {\stex} macro and
+% environment that takes a key/value argument has an associtated key group, and only keys
+% that are registered in this group can be utilized. The |metakeys| package supplies the
+% \DescribeMacro{\addmetakey}|\addmetakey| macro to add a new key to a key group: If
+% \meta{group} is the name of a key group \meta{key} is a metadata keyword name, then
+% \begin{quote}
+% |\addmetakey[|\meta{default}|]{|\meta{group}|}{|\meta{key}|}[|\meta{dval}|]|
+% \end{quote}
+% registers \meta{key} in the metadata group \meta{group}, with an optional values
+% \meta{default} and \meta{dval} for \meta{key}. The \meta{default} is the default value
+% for \meta{key}, if it is not specified, and \meta{dval} the value it gets, if \meta{key}
+% is given without specifying a value. These two defaults are often used as
+% \begin{quote}
+% |\addmetakey[false]{|\meta{group}|}{|\meta{key}|}[true]|
+% \end{quote}
+% Then, the value of \meta{key} is |false| if \meta{key} is not given and |true|, if
+% \meta{key} is specified without value. This is often the best way if we want to use
+% \meta{key} as an indicator to have a feature of name \meta{key} (we can test that with
+% |\ifx\|\meta{group}|@|\meta{key}|\@true|, if we prepared the macro |\def\@true{true}|
+% earlier).
+%
+% The keys registered for a metadata group can be used for defining macros with a
+% key/value arguments via the \DescribeMacro{\metasetkeys}|\metasetkeys| macro, see for
+% instance the the definition in Figure~\ref{fig:foo}.
+%
+% The \DescribeMacro{\addmetalistkey}|\addmetalistkey| macro is a variant of |\addmetakey|
+% that adds a list-valued metadata key. The |\addmetalistkey{foo}{val}| in
+% Figure~\ref{fig:foo} would allows to use multiple occurrences of teh |val| keys in the
+% metadata argument of |\foo|, the values of the |val| keys are collected as a
+% comma-separated list in the token register |\foo@vals|. Note that the |val| key can also
+% deal with comma-separated lists for convenience.
+%
+% With these definitions in a used package\footnote{\makeatletter Recall that the
+% \texttt{@} character is only allowed in packages, where comma-separated lists can be
+% iterated over e.g. by the \texttt{\textbackslash{@}for} macro.} an invocation of
+% \begin{quote}
+% |\foo[type=bar,id=f4711,val=4,val=7,val={1,1}]|
+% \end{quote}
+% is formatted to
+% \begin{quote}
+% \addmetakey{foo}{id}\addmetakey{foo}{type}\addmetalistkey{foo}{val}\makeatletter
+% \newcommand\foo[1][]{\metasetkeys{foo}{#1} I have seen a \emph{foo} of type \texttt{\foo@type}
+% with identifier \texttt{\foo@id} and values
+% \let\@join=\relax\def\@thejoin{, and }
+% \@for\@I:=\foo@vals\do{\@join\@I\let\@join=\@thejoin}!}\makeatother
+% \foo[type=bar,id=f4711,val=4,val=7,val=1,val=1]
+% \end{quote}
+%
+% \begin{exfig}[ht]
+% \begin{verbatim}
+% \addmetakey{foo}{id}
+% \addmetakey{foo}{type}
+% \addmetakey[yes]{foo}{visible}
+% \addmetalistkey{foo}{val}
+% \def\@yes{yes}
+% \newcommand\foo[1][]{\metasetkeys{foo}{#1}
+% \ifx\foo@visible\@yes % testing for visibility
+% I have seen a \emph{foo} of type \texttt{\foo@type} with identifier
+% \texttt\foo@id and values \texttt\foo@vals.
+% \let\@join=\relax\def\@thejoin{, and }
+% \@for\@I:=\foo@vals\do{\@join\@I\let\@join=\@thejoin}!
+% \fi}
+% \end{verbatim}
+% \vspace*{-2em}
+% \caption{Defining a macro with metadata}
+% \label{fig:foo}
+% \end{exfig}
+%
+% \subsection{Showing Metadata Keys/Values}\label{sec:user:showmeta}
+%
+% If the |showmeta| package option is set, the |metakeys| package sets an internal switch that
+% shows the values of all keys specified with the |\addmetakey| macro. The default behavior
+% is to write the key/value pairs into the margin as \meta{key}|:|\meta{value}. Package
+% designers can customize this behavior by redefining the |\metakeys@show@key| and
+% |\metakeys@show@keys| macro.
+%
+% \DescribeMacro{\metakeys@show@key}|\metakeys@show@key{|\meta{key}|}{|\meta{value}|}| shows the a
+% single key value pair, and
+% \DescribeMacro{\metakeys@show@keys}|\metakeys@show@keys{|\meta{group}|}{|\meta{keys}|}| shows the
+% a list of keys metadata, by default we disregard the \meta{group} and show \meta{keys}
+% in a marginpar.
+%
+% For keys that should not be shown in this manner, the |\addmetakey| macro has a variant
+% \DescribeMacro{\addmetakey*}|\addmetakey*|. Its behavior is exactly the same, only that
+% it keeps the key from being shown by the |showmeta| option.
+%
+% Note that setting the |showmeta| option will enable metadata presentation on the whole
+% document. But sometimes we want to disable that, e.g. inside figures, where |\marginpar|
+% is not allowed. Therefore the |metakeys| package provides the
+% \DescribeMacro{\hidemetakeys}|\hidemetakeys| macro that reverses this. The
+% \DescribeMacro{\showmetakeys}|\showmetakeys| macro re-enables metadata presentation.
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintChanges\printbibliography}
+%
+% \section{The Implementation}\label{sec:impl}
+%
+% The |metakeys| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together, since
+% the documentation applies to both of them and to prevent them from getting out of sync.
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false). First we have the general options
+% \begin{macrocode}
+%<*package>
+\newif\ifmetakeys@showmeta\metakeys@showmetafalse
+\DeclareOption{showmeta}{\metakeys@showmetatrue}
+% \end{macrocode}
+% Finally, we need to declare the end of the option declaration section to {\LaTeX}.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% We build on the |keyval| package which we first need to load.
+% \begin{macrocode}
+\RequirePackage{keyval}[1997/11/10]
+%</package>
+% \end{macrocode}
+%
+% \subsection{Adding Metadata Keys}\label{sec:impl:keys}
+%
+% \begin{macro}{\addmetakey}
+% The |\addmetakey| macro looks at the next character and invokes helper macros accordingly.
+% \begin{macrocode}
+%<*package>
+\newcommand\addmetakey{\@ifstar\addmetakey@star\addmetakey@nostar}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addmetakey@star}
+% |\addmetakey@star| takes care of the starred form of |\addmetakey|. An invocation of
+% |\addmetakey@star{|\meta{default}|}{|\meta{group}|}{|\meta{key}|}| macro first extends the
+% |\metakeys@clear@|\meta{group}|@keys| macro then defines the key \meta{key} with the
+% |\define@key| macro from the |keyval| package. This stores the key value given in the
+% local macro |\|\meta{group}|@|\meta{key}.
+% \begin{macrocode}
+%<*package>
+\newcommand\addmetakey@star[3][]%
+{\@ifnextchar[{\addmetakey@star@aux[#1]{#2}{#3}}{\addmetakey@star@aux[#1]{#2}{#3}[]}}
+\def\addmetakey@star@aux[#1]#2#3[#4]{\metakeys@ext@clear@keys{#2}{#3}{#1}%
+\metakeys@initialize@showkeys{#2}%
+\define@key{#2}{#3}[#4]{\expandafter\gdef\csname #2@#3\endcsname{##1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addmetakey@nostar}
+% |\addmetakey@nostar| takes care of the starred form of |\addmetakey| by first extending the
+% |\metakeys@|\meta{group}|@showkeys| macro which contains those keys that should be
+% shown and then calling |\addmetakey@star|.
+% \begin{macrocode}
+\newcommand\addmetakey@nostar[3][]%
+{\metakeys@ext@showkeys{#2}{#3}\addmetakey@star[#1]{#2}{#3}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metasetkeys}
+% The |\metasetkeys{|\meta{group}|}| clears/presets the key of \meta{group} via
+% |\clear@|\meta{group}|@clearkeys|, (if the |showmeta| option is set) shows them, and
+% then sets the keys via |keyval|s |\setkeys| command.
+% \begin{macrocode}
+%<*package>
+\newcommand\metasetkeys[2]{\@nameuse{clear@#1@keys}\setkeys{#1}{#2}%
+\ifmetakeys@showmeta%
+\edef\@@keys{\@nameuse{#1@showkeys}}%
+\metakeys@show@keys{#1}{\@for\@I:=\@@keys\do{\metakeys@show@keyval{#1}{\@I}}}%
+\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metakeys@ext@clear@keys}
+% |\metakeys@ext@clear@keys{|\meta{group}|}{|\meta{key}|}{|\meta{default}|}| extends (or
+% sets up if this is the first |\addmetakey| for \meta{group}) the
+% |\clear@|\meta{group}|@keys| macro to set the default value \meta{default} for
+% \meta{key}. The |\clear@|\meta{group}|@keys| macro is used in the generic
+% |\metasetkeys| macro below. The variant |\@metakeys@ext@clear@keys| is provided for
+% use in the |sref| package.
+% \begin{macrocode}
+%<*package>
+\newcommand\metakeys@ext@clear@keys[3]{\@metakeys@ext@clear@keys{#1}{#1@#2}{#3}}
+\newcommand\@metakeys@ext@clear@keys[3]{\@ifundefined{clear@#1@keys}%
+{\expandafter\gdef\csname clear@#1@keys\endcsname%
+{\expandafter\gdef\csname #2\endcsname{#3}}}%
+{\expandafter\g@addto@macro\csname clear@#1@keys\endcsname%
+{\expandafter\gdef\csname #2\endcsname{#3}}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addmetalistkey}
+% \begin{macrocode}
+%<*package>
+\newcommand\addmetalistkey{\@ifstar\addmetalistkey@star\addmetalistkey@nostar}
+\newcommand\addmetalistkey@star[3][]{\metakeys@ext@clear@keys{#2}{#3}{#1}%
+\metakeys@initialize@showkeys{#2}%
+\expandafter\gdef\csname #2@#3s\endcsname{}
+\define@key{#2}{#3}[#1]{%
+\expandafter\ifx\csname #2@#3s\endcsname\@empty\expandafter\gdef\csname #2@#3s\endcsname{##1}%
+\else\expandafter\xdef\csname #2@#3s\endcsname{\csname #2@#3s\endcsname,##1}%
+\fi}}
+\newcommand\addmetalistkey@nostar[3][]%
+{\metakeys@ext@showkeys{#2}{#3}\addmetalistkey@star[#1]{#2}{#3}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Showing Metadata Keys/Values}\label{sec:impl:showmeta}
+%
+% \begin{macro}{\metakeys@initialize@showkeys}
+% |\metakeys@initialize@showkeys{|\meta{group}|}| sets up the |\|\meta{group}|@showkeys|
+% macro which is is used to store the keys to be shown of the metadata in in the generic
+% |\setmetakeys| macro below.
+% \begin{macrocode}
+%<*package>
+\newcommand\metakeys@initialize@showkeys[1]%
+{\@ifundefined{#1@showkeys}{\expandafter\def\csname #1@showkeys\endcsname{}}{}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metakeys@ext@showkeys}
+% |\metakeys@ext@showkeys{|\meta{group}|}{|\meta{key}|}| extends (or sets up) the
+% |\|\meta{group}|@showkeys| macro which is is used to store the keys to be shown of the
+% metadata in in the generic |\setmetakeys| macro below.
+% \begin{macrocode}
+\newcommand\metakeys@ext@showkeys[2]{\@ifundefined{#1@showkeys}%
+{\expandafter\def\csname #1@showkeys\endcsname{#2}}%
+{\expandafter\edef\csname #1@showkeys\endcsname{\csname #1@showkeys\endcsname,#2}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metakeys@show@key}
+% |\metakeys@show@key{|\meta{key}|}{|\meta{value}|}| shows the a single key value pair, as a
+% default we just write \meta{key}|:|\meta{value}.
+% \begin{macrocode}
+\newcommand\@metakeys@show@key[2]{\metakeys@show@key{#2}{#1}}
+\newcommand\metakeys@show@key[2]{\edef\@test{#2}\ifx\@test\@empty\else #1:#2\quad\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metakeys@show@keys}
+% |\metakeys@show@keys{|\meta{group}|}{|\meta{keys}|}| shows the metadata, by default we
+% disregard the \meta{group} and show \meta{keys} in a marginpar.
+% \begin{macrocode}
+\newcommand\metakeys@show@keys[2]{\marginpar{{\scriptsize #2}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metakeys@show@keyval}
+% |\metakeys@show@keyval{|\meta{group}|}|{|\meta{key}|} shows the key/value pair of a given key \meta{key}.
+% \begin{macrocode}
+\newcommand\metakeys@show@keyval[2]%
+{\expandafter\@metakeys@show@key\csname #1@#2\endcsname{#2}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\showmetakeys}
+% \begin{macrocode}
+%<*package>
+\newcommand\showmetakeys{\metakeys@showmetatrue}
+%</package>
+%<*ltxml>
+DefConstructor('\showmetakeys','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hidemetakeys}
+% \begin{macrocode}
+%<*package>
+\newcommand\hidemetakeys{\metakeys@showmetafalse}
+%</package>
+%<*ltxml>
+DefConstructor('\hidemetakeys','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Using better defaults than empty}
+%
+% \begin{macro}{\addmetakeynew}
+% |\addmetakeynew| is an experimental version of |\addmetakey| which gives
+% |\omd@unspecified| as an optional argument, so that it is used as the default value
+% here and then test for it in |\omfidus|. But unfortunately, this does not work yet.
+% \begin{macrocode}
+%<*package>
+\newcommand\addmetakeynew[3][]{\metakeys@ext@clear@keys{#2}{#3}{#1}%
+\define@key{#2}{#3}{\expandafter\gdef\csname #2@#3\endcsname{##1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\metakeys@unspecified}
+% Ain internal macro for unspecified values. It is used to initialize keys.\ednote{MK:
+% we could probably embed an package error or warning in here}
+% \begin{macrocode}
+\newcommand\metakeys@unspecified{an metakeys-defined key left unspecified}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metakeysifus}
+% This just tests for equality of the first arg with |\metakeys@unspecified|
+% \begin{macrocode}
+\newcommand\metakeysifus[4]{\message{testing #1@#2=\csname#1@#2\endcsname}%
+\expandafter\ifx\csname #1@#2\endcsname\metakeys@unspecified{#3}\else{#4}\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+
+% LocalWords: iffalse kohlhase Thu metakeys metakeys.dtx scsys sc sc latexml omdoc foo
+% LocalWords: omdocv texttt fileversion maketitle setcounter tocdepth newpage
+% LocalWords: tableofcontents ednote showmeta
+% LocalWords: makeatletter newcommand emph makeatother exfig vspace impl ltxml
+% LocalWords: printbibliography keyval clearkeys expandafter gdef csname ifx
+% LocalWords: endcsname setkeys ifundefined omfidus metakeysifus addmetakey
+% LocalWords: doctex metasetkeys metasetkeys marginpar hidemetakeys textsf omd
+% LocalWords: hidemetakeys showmetakeys showmetakeys langle textsf langle
+% LocalWords: newif ifmetakeys showmetafalse showmetatrue ifstar showkeys
+% LocalWords: nameuse setmetakeys addmetakeynew
diff --git a/Master/texmf-dist/source/latex/stex/metakeys/metakeys.ins b/Master/texmf-dist/source/latex/stex/metakeys/metakeys.ins
new file mode 100644
index 00000000000..7e3dda621a3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/metakeys/metakeys.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex metakeys.ins
+%%
+%% Copyright(c) 2010 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/metakeys/metakeys.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{metakeys.sty}{\from{metakeys.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file metakeys.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{metakeys.sty.ltxml}{\from{metakeys.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You may need to move the generated file metakeys.sty.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx b/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx
new file mode 100644
index 00000000000..0384b64b182
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx
@@ -0,0 +1,576 @@
+% \iffalse meta-comment
+% A LaTeX Class for Jacobs University Slides
+% Copyright (c) 2007 Michael Kohlhase, all rights reserved
+% this file is released under the
+% Gnu Library Public Licences (LGPL)
+%
+% The development version of this file can be found at
+% https://svn.kwarc.info/repos/kwarc/projects/stex/sty/mikoslides.dtx
+% \fi
+%
+% \iffalse
+%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<cls>\ProvidesClass{mikoslides}[2012/01/28 v0.9 Jacobs slides]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float}
+\usepackage[show]{ed}
+\usepackage{graphicx}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online},
+ \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\usepackage{hyperref}
+\begin{document}\DocInput{mikoslides.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{364}
+%
+% \changes{v0.1}{2005/12/06}{Initial Version}
+% \changes{v0.2}{2006/01/11}{course notes back on seminar}
+% \changes{v0.3}{2007/05/16}{changing to jacobs logo}
+% \changes{v0.4}{2007/10/16}{re-basing the whole thing on beamer}
+% \changes{v0.4}{2008/09/06}{moving line-end-comment to \texttt{omdoc.dtx}}
+% \changes{v0.5}{2009/06/17}{eliminating mytwocolumns, this is better done by \texttt{beamer.cls}}
+% \changes{v0.9}{2010/06/18}{this is almost done}
+%
+% \GetFileInfo{mikoslides.cls}
+% \MakeShortVerb{\|}
+%
+% \def\twin#1#2{\index{#1!#2}\index{#2!#1}}
+% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}}
+% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
+% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
+%
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\stex{\hbox{\raisebox{-.5ex}S\kern-.5ex\TeX}}
+% \def\sTeX{\stex}
+% \def\cnxml{\scshape{CNXml}}
+% \def\connexions{\scshape{Connexions}}
+% \def\element#1{{\ttfamily{#1}}}
+% \def\snippet#1{{\ttfamily{#1}}}
+% \def\cnxlatex{CNX\LaTeX}
+% \def\mathml{{\scshape{MathML}}}
+% \def\latexml{\hbox{{\LaTeX}ML}}
+% \def\omdoc{OMDoc}
+% \def\activemath{{\scshape{ActiveMath}}}
+%
+% \title{Slides and Course Notes for Jacobs University\thanks{Version {\fileversion}
+% (last revised {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% We present a document class from which we can generate both course slides and course
+% notes in a transparent way. Furthermore, we present a set of {\latexml} bindings for
+% these, so that we can also generate {\omdoc}-based course materials, e.g. for
+% inclusion in the {\activemath} system.
+% \end{abstract}
+% \tableofcontents\newpage
+%\section{Introduction}
+% This Document class is derived from |beamer.cls|, specializes it with Jacobs stuff and
+% adds a notes version that is more suited to printing than the one supplied by
+% |beamer.cls|.
+%
+%\section{The User Interface}\label{sec:user}
+%
+% \subsection{Package Options}\label{sec:user:options}
+%
+% The |mikoslides| class takes a variety of class options:\ednote{leaving out noproblems
+% for the momeent until we decide what to do with it.}
+% \begin{compactitem}
+% \item q\DescribeMacro{showmeta}|showmeta|. If this is set, then the metadata keys are shown
+% (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
+% \item The options \DescribeMacro{slides}|slides|\DescribeMacro and {notes}|notes| switch
+% between slides mode and notes mode (see Section~\ref{sec:user:notesslides}).
+% \item If the option \DescribeMacro{sectocframes}|sectocframes| is given, then special
+% frames with section table of contents are producedheaders \ednote{document the functionality}
+% \end{compactitem}
+%
+% \subsection{Notes and Slides}\label{sec:user:notesslides}
+%
+% \subsection{Header and Footer Lines}\label{sec:user:headfootlines}
+%
+% \subsection{Colors and Highlighting}\label{sec:user:highlighting}
+% The \DescribeMacro{\textwarning}|\textwarning| macro generates a warning sign: \includegraphics[width=1.2em]{dangerous-bend}
+% \subsection{Front Matter, Titles, etc}\label{sec:user:matter}
+%
+% \subsection{Miscellaneous}\label{sec:user:misc}
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item the class should be divided into concerns. \tracissue{1684}
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+%
+%\section{The Implementation}\label{sec:impl}
+%
+% The |mikoslides| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+%\subsection{Initialization and Class Options}\label{sec:impl:init}
+%
+% For the {\latexml} bindings, we make sure the right perl packages are loaded.
+%
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% For {\LaTeX} we define some Package Options and switches for the |mikoslides| class and activate
+% them by passing them on to |beamer.cls| the appropriate packages.
+%
+% \begin{macrocode}
+%<*cls>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\ifnotes\notesfalse
+\newif\ifsectocframes\sectocframesfalse
+\newif\ifproblems\problemstrue
+\DeclareOption{notes}{\notestrue}
+\DeclareOption{slides}{\notesfalse}
+\DeclareOption{noproblems}{\problemsfalse}
+\DeclareOption{sectocframes}{\sectocframestrue}
+\ifnotes
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc}}
+\else
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{beamer}}
+\fi
+\ProcessOptions
+%</cls>
+%<*ltxml>
+RawTeX('\newif\ifnotes\notesfalse');
+RawTeX('\newif\ifproblems\problemsfalse');
+%</ltxml>
+% \end{macrocode}
+%
+% Depending on the options, we either load the |article|-based |omdoc| or the |beamer| class. In the first
+% case, we also have to make the |beamer|-specific things available to |article| via the
+% |beamerarticle| package. We use options to avoid loading theorem-like environments,
+% since we want to use our own from the $\sTeX$ packages.
+% \begin{macrocode}
+%<*cls>
+\ifnotes
+\LoadClass{omdoc}
+\RequirePackage{a4wide}
+\RequirePackage{marginnote}
+\RequirePackage[notheorems,noamsthm]{beamerarticle}
+\else
+\LoadClass[notheorems,noamsthm,10pt]{beamer}
+\newcounter{Item}
+\newcounter{paragraph}
+\newcounter{subparagraph}
+\newcounter{Hfootnote}
+\usetheme{Jacobs}
+\fi
+%</cls>
+%<*ltxml>
+LoadClass('omdoc');
+DefConstructor('\usetheme{}','');
+%</ltxml>
+% \end{macrocode}
+%
+% now, we load the remaining packages for both versions. \ednote{MK: eventually (when tikz
+% support is fully realized in \latexml) get rid of the standalone package}
+%
+% \begin{macrocode}
+%<*cls>
+\RequirePackage{stex}
+\RequirePackage{latexml}
+\RequirePackage{amssymb}
+\RequirePackage{tikz}
+\usepgflibrary{shapes}\usetikzlibrary{arrows}
+\RequirePackage{url}
+\RequirePackage{amsmath}
+\RequirePackage{comment}
+\RequirePackage{standalone}
+%</cls>
+%<*ltxml>
+RequirePackage('stex');
+RequirePackage('latexml');
+RequirePackage('amssymb');
+RequirePackage('graphicx');
+RequirePackage('tikz');
+RequirePackage('amsmath');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Notes and Slides}\label{sec:impl:noteslides}
+%
+% We define the sizes of slides in the notes. Somehow, we cannot get by with the same
+% here.
+%
+% \begin{macrocode}
+%<*cls>
+\newcounter{slide}
+\newlength{\slidewidth}\setlength{\slidewidth}{13.5cm}
+\newlength{\slideheight}\setlength{\slideheight}{9cm}
+%</cls>
+%<*ltxml>
+DefRegister('\slidewidth' => Dimension('13.5cm'));
+DefRegister('\slideheight' => Dimension('9cm'));
+%</ltxml>
+% \end{macrocode}
+%
+% For course notes, we define the |note| environment to be a no-operation otherwise we declare the |note| environment as
+% a comment via the |comment| package.
+%
+% \begin{environment}{note}
+% \begin{macrocode}
+%<*cls>
+\ifnotes\renewenvironment{note}{}{}\else\excludecomment{note}\fi
+%</cls>
+%<*ltxml>
+DefEnvironment('{note}','#body');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+%
+% the next step is to set up the slide boxes in |article| mode. We set up sizes and
+% provide a box register for the frames and a counter for the slides.
+%
+% \begin{macrocode}
+%<*cls>
+\ifnotes
+\newlength{\slideframewidth}\setlength{\slideframewidth}{2pt}
+\newsavebox{\myframebox}
+%</cls>
+% \end{macrocode}
+%
+% \begin{environment}{frame}
+% For the |frame| environment we construct a |lrbox| in the |\myframebox| register that
+% we can later put into an |\fbox| so that it looks like a slide. Furthermore, we
+% redefine the |itenize| environment so that it looks more like the one in |beamer| with
+% |Jacobs| theme.
+% \begin{macrocode}
+%<*cls>
+\renewenvironment{frame}[1][]%
+{\stepcounter{slide}
+\def\itemize@level{outer}
+\def\itemize@outer{outer}
+\def\itemize@inner{inner}
+\renewcommand\metakeys@show@keys[2]{\marginnote{{\scriptsize ##2}}}
+\renewenvironment{itemize}
+{\ifx\itemize@level\itemize@outer\def\itemize@label{$\rhd$}\fi
+ \ifx\itemize@level\itemize@inner\def\itemize@label{$\scriptstyle\rhd$}\fi
+ \begin{list}
+ {\itemize@label}
+ {\setlength{\labelsep}{.3em}\setlength{\labelwidth}{.5em}\setlength{\leftmargin}{1.5em}}
+ \edef\itemize@level{\itemize@inner}}
+{\end{list}}
+ \noindent\hfill\begin{lrbox}{\myframebox}
+ \begin{minipage}{\slidewidth}\sf}%
+ {\miko@slidelabel\end{minipage}\end{lrbox}%
+ \begin{center}\fbox{\usebox\myframebox}\end{center}\hfill}
+%</cls>
+%<*ltxml>
+DefEnvironment('{frame}[]',
+ "<omdoc:omgroup layout='slide'>"
+ . "#body\n"
+ ."</omdoc:omgroup>\n\n",
+ afterDigestBegin=>sub {
+ $_[1]->setProperty(theory=>LookupValue('current_module')); });
+%</ltxml>#$
+% \end{macrocode}
+% \end{environment}
+%
+% the next step is to set up the slide boxes in |article| mode.
+%
+% \begin{macrocode}
+%<*cls>
+\renewcommand{\frametitle}[1]{{\Large\bf\sf\color{blue}{#1}}}
+\fi
+\makeindex
+%</cls>
+%<*ltxml>
+DefConstructor('\frametitle{}',
+ "\n<omdoc:metadata><dc:title>#1</dc:title></omdoc:metadata>");
+%</ltxml>
+% \end{macrocode}
+%
+% We start by giving the {\latexml} binding for the |frame| environment from the |beamer|
+% class. The |note| environment is used to blend out text in the |slides| mode. It does
+% not have a counterpart in OMDoc.
+%
+% \begin{macrocode}
+%<*cls>
+\ifproblems\newenvironment{problems}{}{}\else\excludecomment{problems}\fi
+%</cls>
+%<*ltxml>
+DefEnvironment('{problems}','#body');
+%</ltxml>
+% \end{macrocode}
+%\ednote{subtitle is difficult to model in DC metadata. I guess that we want to collect
+%the subtitle into dc:title}
+%
+% \subsection{Header and Footer Lines}\label{sec:impl:headfootlines}
+%
+% Now, we set up the infrastructure for the footer line of the slides, we use boxes for
+% the logos, so that they are only loaded once, that considerably speeds up processing.
+% \begin{macrocode}
+%<*cls>
+\newlength{\slidelogoheight}
+\ifnotes\setlength{\slidelogoheight}{.4cm}\else\setlength{\slidelogoheight}{1cm}\fi
+\newsavebox{\slidelogo}\sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{jacobs-logo}}
+% \end{macrocode}
+%
+% Now, we set up the copyright and licensing, the copyright remains with the author, but
+% we use the Creative Commons Attribuition-ShareAlike license to strengthen den public
+% domain. Here the problem is that we want a hyperref on the CC logo, if hyperref is
+% loaded, and otherwise not. As hyperref is always loaded, we have to find out at the
+% beginning of the document whether it is, set up a switch, and later in the footer line
+% decide what to do.
+%
+% \begin{macrocode}
+\def\source{Michael Kohlhase}% customize locally
+\def\copyrightnotice{\footnotesize\copyright:\hspace{.3ex}{\source}}
+\newsavebox{\cclogo}\sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{cc_somerights}}
+\newif\ifcchref\cchreffalse
+\AtBeginDocument{\@ifpackageloaded{hyperref}{\cchreftrue}{\cchreffalse}}
+\def\licensing{\ifcchref\href{http://creativecommons.org/licenses/by-sa/2.5/}{\usebox{\cclogo}}\else{\usebox{\cclogo}}\fi}
+% \end{macrocode}
+%
+% Now, we set up the slide label for the |article| mode\ednote{see that we can use the
+% themes for the slides some day. This is all fake.}
+%
+% \begin{macro}{\slidelabel}
+% \begin{macrocode}
+\newcommand{\miko@slidelabel}%
+{\vbox to \slidelogoheight{\vss\hbox to \slidewidth%
+{\licensing\hfill\copyrightnotice\hfill\arabic{slide}\hfill\usebox{\slidelogo}}}}
+%</cls>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Colors and Highlighting}\label{sec:impl:highlighting}
+%
+% Now, we set up an infrastructure for highlighting phrases in slides. Note that we use
+% content-oriented macros for highlighting rather than directly using color markup.
+% The first thing to to is to adapt the green so that it is dark enough for most beamers
+% \begin{macrocode}
+%<*cls>
+\AtBeginDocument{\definecolor{green}{rgb}{0,.5,0}\definecolor{purple}{cmyk}{.3,1,0,.17}}
+% \end{macrocode}
+%
+% We customize the |\defemph|, |\notemph|, and |\stDMemph| macros with colors for the use
+% in the |statements| package. Furthermore we customize the |\@@lec| macro for the
+% appearance of line end comments in |\lec|.
+%
+% \begin{macrocode}
+% \def\STpresent#1{\textcolor{blue}{#1}}
+\def\defemph#1{{\textcolor{magenta}{#1}}}
+\def\notemph#1{{\textcolor{magenta}{#1}}}
+\def\stDMemph#1{{\textcolor{blue}{#1}}}
+\def\@@lec#1{(\textcolor{green}{#1})}
+%</cls>
+%<*ltxml>
+#DefMacro('\defemph{}','{\textcolor{magenta}{#1}}');
+#DefMacro('\notemph{}','{\textcolor{magenta}{#1}}');
+%</ltxml>
+% \end{macrocode}
+%
+% I like to use the dangerous bend symbol for warnings, so we provide it here.
+% \begin{macro}{\textwarigrening}
+% as the macro can be used quite often we put it into a box register, so that it is only
+% loaded once.
+% \begin{macrocode}
+%<*cls>
+\pgfdeclareimage[width=1.5em]{miko@dbend}{dangerous-bend}
+\def\textwarning{\raisebox{-.05cm}{\pgfuseimage{miko@dbend}}\xspace}
+%</cls>b
+%<*ltxml>
+DefMacro('\textwarning',"");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Front Matter, Titles, etc}
+%
+% We need to redefine the frontmatter macros inherited from the |beamer| class, since
+% there they take an optional argument.
+% \begin{macrocode}
+%<*ltxml>
+DefMacro('\title[]{}', '\@add@frontmatter{ltx:title}{#1}');
+DefMacro('\date[]{}', '\@add@frontmatter{ltx:date}[role=creation]{#1}');
+DefMacro('\author[]{}', sub { andSplit(T_CS('\@author'),$_[1]); });#$
+% \end{macrocode}
+%</ltxml>
+%
+% Now, we specialize the slide environment that we have implemented above or inherited
+% from |seminar.cls| for some abbreviations, e.g. separator slides and title slides.
+% \begin{macrocode}
+%<*cls>
+\newcommand\titleframe{\begin{frame}\titlepage\end{frame}}
+\newenvironment{titleframewith}{\begin{frame}\titlepage}{\end{frame}}
+\newenvironment{ttitle}{\begin{center}\LARGE\begin{tabular}{|c|}\hline}%
+ {\\\hline\end{tabular}\end{center}\vspace{1ex minus 1ex}}
+\newenvironment{ttitlejoint}[1]%
+{\newbox\boxwith\setbox\boxwith\hbox{\begin{tabular}{c}{\em joint work with}\\#1\end{tabular}}%
+\begin{center}\LARGE\begin{tabular}{c}\color{red}}%
+{\\\box\boxwith\end{tabular}\end{center}%
+\vspace{1ex minus 1ex}}
+%</cls>
+%<*ltxml>
+DefConstructor('\titleframe',"<omdoc:ignore>titleframe elided here</omdoc:ignore>");
+DefEnvironment('{titleframewith}',
+ "<omdoc:ignore>begin elided titleframe</omdoc:ignore>"
+ . "#body"
+ ."<omdoc:ignore>end elided titleframe</omdoc:ignore>");
+DefEnvironment('{titleslide}',"");
+DefEnvironment('{titleslide}',"<omdoc:omgroup>#body</omdoc:omgroup>");
+DefEnvironment('{ttitle}', "\n<dc:title>#body</dc:title>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+% Must be first command on slide to make positioning work.
+%<*cls>
+\newcommand{\putgraphicsat}[3]{%
+ \begin{picture}(0,0)\put(#1){\includegraphics[#2]{#3}}\end{picture}}
+\newcommand{\putat}[2]{\begin{picture}(0,0)\put(#1){#2}\end{picture}}
+%</cls>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \begin{macrocode}
+%<*cls>
+\ifsectocframes
+%\AtBeginChapter[]{\begin{frame}<beamer>\frametitle{Chapter Outline}\tableofcontents[currentsection]\end{frame}}
+%\AtBeginSection[]{\begin{frame}<beamer>\frametitle{Section Outline}\tableofcontents[currentsection]\end{frame}}
+%\AtBeginSubsection[]{\begin{frame}<beamer>\frametitle{Subsection Outline}\tableofcontents[currentsubsection]\end{frame}}
+%\AtBeginSubsubsection[]{\begin{frame}<beamer>\frametitle{Subsubsection Outline}\tableofcontents[currentsubsubsection]\end{frame}}
+\def\at@begin@omgroup#1{\message{atbeginomgroup}\begin{frame}<beamer>\frametitle{Outline}\tableofcontents[section]\end{frame}}
+\fi
+%</cls>
+%
+% \subsection{Miscellaneous}
+%
+% the following macro is only to work around problems in the |tikz| support in \latexml.
+% \begin{macrocode}
+%<*cls>
+\newcommand\tikzinput[2][]{\input{#2}}
+%</cls>
+%<*ltxml>
+DefMacro('\tikzinput[] {}','\includegraphics[#1]{#2}');
+%</ltxml>
+% \end{macrocode}
+
+% We need to disregard the columns macros introduced by the |beamer| class
+% \begin{macrocode}
+%<*ltxml>
+DefEnvironment('{columns}','#body');
+DefEnvironment('{column}{}','#body');
+%</ltxml>
+% \end{macrocode}
+%
+% We also need to deal with overlay specifications introduced by the |beamer|
+% class.\ednote{this is just to keep latexml quiet, no real functionality here.}
+%
+% \ednote{Deyan: We reuse the CMP itemizations defined in the omdoc.cls.ltxml binding,
+% adjusting the parameters to be overlay-sensitive }
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\uncover','#1');
+#Define a Beamer Overlay Parameter type
+ DefParameterType('BeamerOverlay', sub {
+ my ($gullet) = @_;
+ my $tok = $gullet->readXToken;
+ if (ref $tok && ToString($tok) eq '<') {
+ $gullet->readUntil(T_OTHER('>'));
+ } else {
+ $gullet->unread($tok) if ref $tok;
+ undef; }},
+ reversion=> sub {
+ (T_OTHER('<'), $_[0]->revert, T_OTHER('>'));
+ });
+
+#Take the "from" field of the overlay range
+sub overlayFrom {
+ return "" unless defined $_[0];
+ my $overlay=ToString($_[0]); $overlay =~ /^(\d+)/; $1;}
+
+#Reuse the CMP itemizations, only adjust the \item constructors.
+DefMacro('\beamer@group@item[] OptionalBeamerOverlay IfBeginFollows', sub {
+ my($gullet,$tag,$overlay,$needwrapper)=@_;
+ $overlay=$overlay||T_OTHER("");
+ ( T_CS('\group@item@maybe@unwrap'),
+ ($needwrapper ? (Invocation(T_CS('\beamer@group@item@wrap'),$tag,$overlay)->unlist) : ()) ); });
+DefConstructor('\beamer@group@item@wrap {} OptionalBeamerOverlay',
+ "<omdoc:omtext ?#2(overlay='&overlayFrom(#2)')()>"
+ . "?#1(<dc:title>#1</dc:title>)()"
+ . "<omdoc:CMP>",
+ beforeDigest=>sub {
+ Let('\group@item@maybe@unwrap','\group@item@unwrap');
+ #$_[0]->bgroup;
+return; },
+ properties=>sub{ RefStepItemCounter(); });
+
+
+#DefConstructor('\beamer@itemize@item[] OptionalBeamerOverlay',
+# "<omdoc:li ?#2(overlay='&overlayFrom(#2)')() >"
+# . "?#1(<dc:title>#1</dc:title>)()",
+# properties=>sub{ RefStepItemCounter(); });
+DefConstructor('\beamer@enumerate@item[] OptionalBeamerOverlay',
+ "<omdoc:li ?#2(overlay='&overlayFrom(#2)')() >"
+ . "?#1(<dc:title>#1</dc:title>)()",
+ properties=>sub{ RefStepItemCounter(); });
+DefConstructor('\beamer@description@item[] OptionalBeamerOverlay',
+ "<omdoc:di ?#2(overlay='&overlayFrom(#2)')() >"
+ . "?#1(<omdoc:dt>#1</omdoc:dt>)()<omdoc:dd>", # trust di and dt to autoclose
+ properties=>sub{ RefStepItemCounter(); });
+%</ltxml>#$
+% \end{macrocode}
+% Now, some things that are imported from the |pgf| and |beamer| packages:
+% \begin{macrocode}
+%<*ltxml>
+DefMacro('\putgraphicsat{}{}{}','\mygraphics[#2]{#3}');
+DefMacro('\putat{}{}','#2');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Finale}
+%
+% Finally, we set the slide body font to the sans serife, and we terminate the {\latexml}
+% bindings file with a success mark for perl.
+% \begin{macrocode}
+%<cls>\ifnotes\else\sf\fi
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+% LocalWords: mikoslides dtx beamer omdoc notheorems noamsthm beamerarticle
+% LocalWords: graphicx slidelabel stex latexml amssymb tikz url CPERL amsmath
+% LocalWords: LoadClass RequirePackage DefRegister DefEnvironment omgroup rgb
+% LocalWords: afterDigestBegin setProperty LookupValue DefConstructor hyperref
+% LocalWords: cmyk lec DefMacro titleslide ttitle RawTeX metadata etoolbox
+% LocalWords: noproblems linkcolor bookmarksopen citecolor urlcolor colorlinks
+% LocalWords: breaklinks plainpages pdfpagelabels srcref
diff --git a/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.ins b/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.ins
new file mode 100644
index 00000000000..106c7fba3ce
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the mikoslides class.
+%% At your command prompt write
+%%
+%% latex mikoslides.ins
+%%
+%% Copyright(c) 2007 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex-content/sty/mikoslides/mikoslides.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{mikoslides.cls}{\from{mikoslides.dtx}{cls}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file mikolides.cls into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{mikoslides.cls.ltxml}{\from{mikoslides.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated file mikoslides.cls.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/modules/modules.dtx b/Master/texmf-dist/source/latex/stex/modules/modules.dtx
new file mode 100644
index 00000000000..8f155971333
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/modules/modules.dtx
@@ -0,0 +1,2235 @@
+% \iffalse meta-comment
+% An Infrastructure for Semantic Macros and Module Scoping
+% Copyright (C) 2004-2010 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/modules/modules.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{modules}[2012/01/28 v1.1 Semantic Markup]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{stex-logo,modules}
+\usepackage{url,array,float,textcomp}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\usepackage{listings}
+\usepackage{amsfonts}
+\bibliography{kwarc}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: modules.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/modules/modules.dtx $
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{modules.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{941}
+%
+% \changes{v0.9}{2005/06/14}{First Version with Documentation}
+% \changes{v0.9a}{2005/07/01}{Completed Documentation}
+% \changes{v0.9b}{2005/08/06}{Complete functionality and Updated Documentation}
+% \changes{v0.9c}{2006/01/13}{more packaging}
+% \changes{v0.9d}{2007/12/12}{fixing double loading of .tex and .sms}
+% \changes{v0.9e}{2008/06/17}{fixing LaTeXML}
+% \changes{v0.9f}{2008/06/17}{remove unused options uses and usesqualified}
+% \changes{v0.9g}{2009/05/02}{adding resymdef functionality}
+% \changes{v0.9g}{2009/08/12}{adding importOMDocmodule}
+% \changes{v0.9h}{2010/01/19}{using {\texttt{\textbackslash mod@newcommand}} instead of
+% {\texttt{\textbackslash providecommand}} for more intuitive inheritance.}
+% \changes{v0.9h}{2010/03/05}{adding {\texttt{\textbackslash metalanguage}}}
+% \changes{v1.0}{2010/06/18}{minor fixes}
+% \changes{v1.1}{2010/12/30}{adding optional arguments to semantic macros for display
+% variants. The resymdef functionality introduced in 0.9g is now deprecated. It was hardly
+% used.}
+%
+% \GetFileInfo{modules.sty}
+%
+% \MakeShortVerb{\|}
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\xml{\scsys{Xml}}
+% \def\mathml{\scsys{MathML}}
+% \def\omdoc{\scsys{OMDoc}}
+% \def\openmath{\scsys{OpenMath}}
+% \def\latexml{\scsys{LaTeXML}}
+% \def\perl{\scsys{Perl}}
+% \def\cmathml{Content-{\sc MathML}\index{Content {\sc MathML}}\index{MathML@{\sc MathML}!content}}
+% \def\activemath{\scsys{ActiveMath}}
+% \def\twin#1#2{\index{#1!#2}\index{#2!#1}}
+% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}}
+% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
+% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
+% \def\cT{\mathcal{T}}\def\cD{\mathcal{D}}
+% \title{{\texttt{modules.sty}}: Semantic Macros and Module Scoping in {\stex}\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase \& Deyan Ginev \& Rares Ambrus\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |modules| package is a central part of the {\stex} collection, a version of
+% {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX} documents semantically without
+% leaving the document format, essentially turning {\TeX/\LaTeX} into a document format
+% for mathematical knowledge management (MKM).
+%
+% This package supplies a definition mechanism for semantic macros and a non-standard
+% scoping construct for them, which is oriented at the semantic dependency relation
+% rather than the document structure. This structure can be used by MKM systems for
+% added-value services, either directly from the {\sTeX} sources, or after translation.
+% \end{abstract}
+%
+% \newpage\setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+% \section{Introduction}\label{sec:intro}
+%
+% Following general practice in the {\TeX/\LaTeX} community, we use the term ``semantic
+% macro'' for a macro whose expansion stands for a mathematical object, and whose name
+% (the command sequence) is inspired by the name of the mathematical object. This can
+% range from simple definitions like |\def\Reals{\mathbb{R}}| for individual mathematical
+% objects to more complex (functional) ones object constructors like
+% |\def\SmoothFunctionsOn#1{\mathcal{C}^\infty(#1,#1)}|. Semantic macros are traditionally
+% used to make {\TeX/\LaTeX} code more portable. However, the {\TeX/\LaTeX} scoping model
+% (macro definitions are scoped either in the local group or until the rest of the
+% document), does not mirror mathematical practice, where notations are scoped by
+% mathematical environments like statements, theories, or such. For an in-depth discussion
+% of semantic macros and scoping we refer the reader~\cite{Kohlhase:ulsmf08}.
+%
+% The |modules| package provides a {\LaTeX}-based markup infrastructure for defining
+% module-scoped semantic macros and {\latexml} bindings~\cite{Miller:latexml:online} to
+% create {\omdoc}~\cite{Kohlhase:omdoc1.2} from {\stex} documents. In the {\stex} world
+% semantic macros have a special status, since they allow the transformation of
+% {\TeX/\LaTeX} formulae into a content-oriented markup format like
+% {\openmath}~\cite{BusCapCar:2oms04} and (strict) content
+% {\mathml}~\cite{CarlisleEd:MathML3}; see Figure~\ref{fig:omsemmac} for an example, where
+% the semantic macros above have been defined by the |\symdef| macros (see
+% Section~\ref{sec:symdef}) in the scope of a |\begin{module}[id=calculus]| (see
+% Section~\ref{sec:modules}).
+%
+% \begin{exfig}\lstset{basicstyle=\scriptsize,aboveskip=-.5em,belowskip=-1.5em}
+% \begin{tabular}{l|p{9.7cm}}
+% \LaTeX & \verb|\SmoothFunctionsOn\Reals| \\\hline
+% PDF/DVI & ${\mathcal{C}^\infty(\mathbb{R},\mathbb{R})}$\\\hline
+% {\openmath} & \lstset{morekeywords={OMA,OMS}}
+% \begin{lstlisting}
+% <OMA>
+% <OMS cd="calculus" name="SmoothFunctionsOn"/>
+% <OMS cd="calculus" name="Reals"/>
+% </OMA>\end{lstlisting}\\\hline
+% {\mathml} & \lstset{morekeywords={apply,csymbol}}
+% \begin{lstlisting}
+% <apply>
+% <csymbol cd="calculus">SmoothFunctionsOn</csymbol>
+% <csymbol cd="calculus">Reals</csymbol>
+% </apply>\end{lstlisting}\\
+% \end{tabular}
+% \caption{{\openmath} and {\mathml} generated from Semantic Macros}\label{fig:omsemmac}
+% \end{exfig}
+%
+% \section{The User Interface}
+%
+% The main contributions of the |modules| package are the |module| environment, which
+% allows for lexical scoping of semantic macros with inheritance and the |\symdef| macro
+% for declaration of semantic macros that underly the |module| scoping.
+%
+% \subsection{Package Options}\label{sec:options}
+%
+% The |modules| package takes two options: If we set \DescribeMacro{showviews}|showviews|,
+% then the views (see Section~\ref{sec:user:views}) are shown. If we set the
+% \DescribeMacro{qualifiedimports}|qualifiedimports| option, then qualified imports are
+% enabled. Qualified imports give more flexibility in module inheritance, but consume more
+% internal memory. As qualified imports are not fully implemented at the moment, they are
+% turned off by default see Limitation~\ref{sec:limitations:qualified-imports}.
+%
+% If the \DescribeMacro{showmeta}|showmeta| is set, then the metadata keys are shown
+% (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
+%
+% \subsection{Semantic Macros}\label{sec:symdef}
+%
+% The \DescribeMacro{\symdef} is the main constructor for semantic macros in {\sTeX}. A
+% call to the |\symdef| macro has the general form
+% \begin{quote}
+% |\symdef[|\meta{keys}|]{|\meta{cseq}|}[|\meta{args}|]{|\meta{definiens}|}|
+% \end{quote}
+% where {\meta{cseq}} is a control sequence (the name of the semantic macro) {\meta{args}}
+% is a number between 0 and 9 for the number of arguments {\meta{definiens}} is the token
+% sequence used in macro expansion for {\meta{cseq}}. Finally {\meta{keys}} is a keyword
+% list that further specifies the semantic status of the defined macro.
+%
+% The two semantic macros in Figure~\ref{fig:omsemmac} would have been declared by
+% invocations of the |\symdef| macro of the form:
+% \begin{verbatim}
+% \symdef{Reals}{\mathbb{R}}
+% \symdef{SmoothFunctionsOn}[1]{\mathcal{C}^\infty(#1,#1)}
+% \end{verbatim}
+%
+% Note that both semantic macros correspond to {\openmath} or {\mathml} ``symbols'',
+% i.e. named representations of mathematical concepts (the real numbers and the
+% constructor for the space of smooth functions over a set); we call these names the
+% {\textbf{symbol name}} of a semantic macro. Normally, the symbol name of a semantic
+% macro declared by a |\symdef| directive is just \meta{cseq}. The key-value pair
+% \DescribeMacro{name}|name=|\meta{symname} can be used to override this behavior and
+% specify a differing name. There are two main use cases for this.
+%
+% The first one is shown in Example~\ref{fig:symvariant}, where we define semantic macros
+% for the ``exclusive or'' operator. Note that we define two semantic macros: |\xorOp| and
+% |\xor| for the applied form and the operator. As both relate to the same mathematical
+% concept, their symbol names should be the same, so we specify |name=xor| on the
+% definition of |\xorOp|.
+%
+% A key \DescribeMacro{local}|local| can be added to {\meta{keys}} to specify that the
+% symbol is local to the module and is invisible outside. Note that even though |\symdef|
+% has no advantage over |\def| for defining local semantic macros, it is still considered
+% good style to use |\symdef| and |\abbrdef|, if only to make switching between local and
+% exported semantic macros easier.
+%
+% \DescribeMacro{\abbrdef}The |\abbrdef| macro is a variant of |\symdef| that is only
+% different in semantics, not in presentation. An abbreviative macro is like a semantic
+% macro, and underlies the same scoping and inheritance rules, but it is just an
+% abbreviation that is meant to be expanded, it does not stand for an atomic mathematical
+% object.
+%
+% We will use a simple module for natural number arithmetics as a running example. It
+% defines exponentiation and summation as new concepts while drawing on the basic
+% operations like $+$ and $-$ from {\LaTeX}. In our example, we will define a semantic
+% macro for summation |\Sumfromto|, which will allow us to express an expression like
+% $\sum{i=1}^nx^i$ as |\Sumfromto{i}1n{2i-1}| (see Example~\ref{fig:semmodule} for an
+% example). In this example we have also made use of a local semantic symbol for $n$,
+% which is treated as an arbitrary (but fixed) symbol.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \begin{module}[id=arith]
+% \symdef{Sumfromto}[4]{\sum_{#1=#2}^{#3}{#4}}
+% \symdef[local]{arbitraryn}{n}
+% What is the sum of the first $\arbitraryn$ odd numbers, i.e.
+% $\Sumfromto{i}1\arbitraryn{2i-1}?$
+% \end{module}
+% \end{verbatim}
+% \vspace*{-3.5ex}\hrule\vspace*{1ex}
+% \begin{module}[id=arith]
+% \symdef{Sumfromto}[4]{\sum_{#1=#2}^{#3}{#4}}
+% \symdef[local]{arbitraryn}{n}
+% What is the sum of the first $\arbitraryn$ odd numbers, i.e.
+% $\Sumfromto{i}1\arbitraryn{2i-1}?$
+% \end{module}
+% \caption{Semantic Markup in a {\texttt{module}} Context}\label{fig:semmodule}
+% \end{exfig}
+%
+% The \DescribeMacro{\symvariant}|\symvariant| macro can be used to define presentation
+% variants for semantic macros previously defined via the |\symdef| directive. In an
+% invocation
+% \begin{quote}
+% |\symdef[|\meta{keys}|]{|\meta{cseq}|}[|\meta{args}|]{|\meta{pres}|}|\\
+% |\symvariant{|\meta{cseq}|}[|\meta{args}|]{|\meta{var}|}{|\meta{varpres}|}|
+% \end{quote}
+% the first line defines the semantic macro |\|\meta{cseq} that when applied to
+% \meta{args} arguments is presented as \meta{pres}. The second line allows the semantic
+% macro to be called with an optional argument \meta{var}: |\|\meta{cseq}|[var]| (applied
+% to \meta{args} arguments) is then presented as \meta{varpres}. We can define a variant
+% presentation for |\xor|; see Figure~\ref{fig:symvariant} for an example.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \begin{module}[id=xbool]
+% \symdef[name=xor]{xorOp}{\oplus}
+% \symvariant{xorOp}{uvee}{\underline{\vee}}
+% \symdef{xor}[2]{#1\xorOp #2}
+% \symvariant{xor}[2]{uvee}{#1\xorOp[uvee] #2}
+% Exclusive disjunction is commutative: $\xor{p}q=\xor{q}p$\\
+% Some authors also write exclusive or with the $\xorOp[uvee]$ operator,
+% then the formula above is $\xor[uvee]{p}q=\xor[uvee]{q}p$
+% \end{module}
+% \end{verbatim}
+% \vspace*{-3.5ex}\hrule\vspace*{1ex}
+% \begin{module}[id=xbool]
+% \symdef[name=xor]{xorOp}{\oplus}
+% \symvariant{xorOp}{uvee}{\underline{\vee}}
+% \symdef{xor}[2]{#1\xorOp #2}
+% \symvariant{xor}[2]{uvee}{#1\xorOp[uvee] #2}
+% Exclusive disjunction is commutative: $\xor{p}q=\xor{q}p$\\
+% Some authors also write exclusive or with the $\xorOp[uvee]$ operator,
+% then the formula above is $\xor[uvee]{p}q=\xor[uvee]{q}p$
+% \end{module}
+% \caption{Presentation Variants of a Semantic Macro}\label{fig:symvariant}
+% \end{exfig}
+%
+% Version 1.0 of the |modules| package had the \DescribeMacro{\resymdef}|\resymdef| macro
+% that allowed to locally redefine the presentation of a macro. But this did not interact
+% well with the |beamer| package and was less useful than the |\symvariant|
+% functionality. Therefore it is deprecated now and leads to an according error message.
+%
+% \subsection{Symbol and Concept Names}\label{sec:user:termdef}
+%
+% Just as the |\symdef| declarations define semantic macros for mathematical symbols, the
+% |modules| package provides an infrastructure for {\emph{mathematical concepts}} that are
+% expressed in mathematical vernacular. The key observation here is that concept names
+% like ``finite symplectic group'' follow the same scoping rules as mathematical symbols,
+% i.e. they are module-scoped. The \DescribeMacro{\termdef}|\termdef| macro is an analogue
+% to |\symdef| that supports this: use
+% |\termdef[|\meta{keys}|]{|\meta{cseq}|}{|\meta{concept}|}| to declare the macro
+% |\|\meta{cseq} that expands to \meta{concept}. See Figure~\ref{fig:termref} for an
+% example, where we use the \DescribeMacro{\capitalize}|\captitalize| macro to adapt
+% \meta{concept} to the sentence beginning.\ednote{continue, describe \meta{keys}, they
+% will have to to with plurals,\ldots once implemented}. The main use of the
+% |\termdef|-defined concepts lies in automatic cross-referencing facilities via the
+% \DescribeMacro{\termref}|\termref| and \DescribeMacro{\symref}|\symref| macros provided
+% by the |statements| package~\ctancite{Kohlhase:smms}. Together with the |hyperref|
+% package~\cite{RahObe:hmlmh10}, this provide cross-referencing to the definitions of the
+% symbols and concepts. As discussed in section~\ref{sec:limitations:crossref}, the
+% |\symdef| and |\termdef| declarations must be on top-level in a module, so the
+% infrastructure provided in the |modules| package alone cannot be used to locate the
+% definitions, so we use the infrastructure for mathematical statements for that.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \termdef[name=xor]{xdisjunction}{exclusive disjunction}
+% \captitalize\xdisjunction is commutative: $\xor{p}q=\xor{q}p$
+% \end{verbatim}
+% \vspace*{-3.5ex}
+% \caption{Extending Example~\ref{fig:symvariant} with Term References}\label{fig:termref}
+% \end{exfig}
+%
+% \subsection{Modules and Inheritance}\label{sec:modules}
+%
+% The\DescribeEnv{module}|module| environment takes an optional |KeyVal|
+% argument. Currently, only the |id| key is supported for specifying the identifier of a
+% module (also called the {\twintoo{module}{name}}). A module introduced by
+% |\begin{module}[id=foo]| restricts the scope the semantic macros defined by the
+% |\symdef| form to the end of this module given by the corresponding |\end{module}|,
+% and to any other |module| environments that import them by a |\importmodule{foo}|
+% directive. If the module |foo| contains |\importmodule| directives of its own, these are
+% also exported to the importing module.
+%
+% Thus the \DescribeMacro{\importmodule}|\importmodule| declarations induce the
+% {\atwintoo{semantic}{inheritance}{relation}}. Figure~\ref{exf:importmodule} shows a
+% module that imports the semantic macros from three others. In the simplest form,
+% |\importmodule{|\meta{mod}|}| will activate the semantic macros and concepts declared by
+% |\symdef| and |\termdef| in module \meta{mod} in the current module\footnote{Actually,
+% in the current {\TeX} group, therefore \texttt{\textbackslash importmodule} should be
+% placed directly after the \texttt{\textbackslash begin\{module\}}.}. To understand the
+% mechanics of this, we need to understand a bit of the internals. The |module|
+% environment sets up an internal macro pool, to which all the macros defined by the
+% |\symdef| and |\termdef| declarations are added; |\importmodule| only activates this
+% macro pool. Therefore |\importmodule{|\meta{mod}|}| can only work, if the {\TeX} parser
+% --- which linearly goes through the {\sTeX} sources --- already came across the module
+% \meta{mod}. In many situations, this is not obtainable; e.g. for ``semantic forward
+% references'', where symbols or concepts are previewed or motivated to knowledgeable
+% readers before they are formally introduced or for modularizations of documents into
+% multiple files. To enable situations like these, the |module| package uses auxiliary
+% files called {\textbf{\sTeX module signatures}}. For any file, \meta{file}|.tex|, we
+% generate a corresponding \sTeX module signature \meta{file}|.sms| with the |sms| utility
+% (see also Limitation~\ref{sec:limitations:sms}), which contains (copies of) all
+% |\begin|/|\end{module}|, |\importmodule|, |\symdef|, and |\termdef| invocations in
+% \meta{file}|.tex|. The value of an \sTeX module signature is that it can be loaded
+% instead its corresponding \sTeX document, if we are only interested in the semantic
+% macros. So |\importmodule[|\meta{filepath}|]{|\meta{mod}|}| will load the \sTeX module
+% signature \meta{filepath}|.sms| (if it exists and has not been loaded before) and
+% activate the semantic macros from module \meta{mod} (which was supposedly defined in
+% \meta{filepath}|.tex|). Note that since \meta{filepath}|.sms| contains all
+% |\importmodule| statements that \meta{filepath}|.tex| does, an |\importmodule|
+% recursively loads all necessary files to supply the semantic macros inherited by the
+% current module.
+%
+% The |\importmodule| macro has a variant
+% \DescribeMacro{importmodulevia}|\importmodulevia| that allows the specification of a
+% theory morphism to be applied. |\importmodulevia{|\meta{thyid}|}{|\meta{assignments}|}|
+% specifies the ``source theory'' via its identifier \meta{thyid} and the morphism by
+% \meta{assignments}. There are three kinds:
+% \begin{compactdesc}
+% \item[symbol assignments] via
+% \DescribeMacro{\vassign}|\vassign{|\meta{sym}|}{|\meta{exp}|}|, which defines the
+% symbol \meta{sym} introduced in the current theory by an expression \meta{exp} in the
+% source theory.
+% \item[term assignments] via
+% \DescribeMacro{\tassign}|\tassign[||\meta{source-cd}]{|\meta{tname}|}{|\meta{source-tname}|}|,
+% which defines the term with name \meta{tname} in the current via a term with
+% name\meta{source-tname} in the theory \meta{source-cd} whose default value is the
+% source theory.
+% \item[term text assignments] via
+% \DescribeMacro{\ttassign}|\tassign{|\meta{tname}|}{|\meta{text}|}|, which defines a
+% term with name \meta{tname} in the current theory via a definitional text.
+% \end{compactdesc}
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \begin{module}[id=ring]
+% \begin{importmodulevia}{monoid}
+% \vassign{rbase}\magbase
+% \vassign{rtimesOp}\magmaop
+% \vassign{rone}\monunit
+% \end{importmodulevia}
+% \symdef{rbase}{G}
+% \symdef[name=rtimes]{rtimesOp}{\cdot}
+% \symdef{rtimes}[2]{\infix\rtimesOp{#1}{#2}}
+% \symdef{rone}{1}
+% \begin{importmodulevia}{cgroup}
+% \vassign{rplus}\magmaop
+% \vassign{rzero}\monunit
+% \vassign{rinvOp}\cginvOp
+% \end{importmodulevia}
+% \symdef[name=rplus]{rplusOp}{+}
+% \symdef{rplus}[2]{\infix\rplusOp{#1}{#2}}
+% \symdef[name=rminus]{rminusOp}{-}
+% \symdef{rminus}[1]{\infix\rminusOp{#1}{#2}}
+% ...
+% \end{module}
+% \end{verbatim}
+% \caption{A Module for Rings with inheritance from monoids and commutative groups}\label{fig:ring}
+% \end{exfig}
+%
+% The \DescribeMacro{\metalanguage} |metalanguage| macro is a variant of
+% \lstinline|importmodule| that imports the meta language, i.e. the language in which the
+% meaning of the new symbols is expressed. For mathematics this is often first-order logic
+% with some set theory; see~\cite{RabKoh:WSMSML10} for discussion.
+%
+% \subsection{Dealing with multiple Files}\label{sec:user:multiple}
+%
+% The infrastructure presented above works well if we are dealing with small files or
+% small collections of modules. In reality, collections of modules tend to grow, get
+% re-used, etc, making it much more difficult to keep everything in one file. This general
+% trend towards increasing entropy is aggravated by the fact that modules are very
+% self-contained objects that are ideal for re-used. Therefore in the absence of a
+% content management system for {\LaTeX} document (fragments), module collections tend to
+% develop towards the ``one module one file'' rule, which leads to situations with lots
+% and lots of little files.
+%
+% Moreover, most mathematical documents are not self-contained, i.e. they do not build up
+% the theory from scratch, but pre-suppose the knowledge (and notation) from other
+% documents. In this case we want to make use of the semantic macros from these
+% prerequisite documents without including their text into the current document. One way
+% to do this would be to have {\LaTeX} read the prerequisite documents without producing
+% output. For efficiency reasons, {\stex} chooses a different route. It comes with a
+% utility |sms| (see Section~\ref{sec:utilities}) that exports the modules and macros
+% defined inside them from a particular document and stores them inside |.sms| files. This
+% way we can avoid overloading LaTeX with useless information, while retaining the
+% important information which can then be imported in a more efficient way.
+%
+% \DescribeMacro{\importmodule} For such situations, the |\importmodule| macro can be
+% given an optional first argument that is a path to a file that contains a path to the
+% module file, whose module definition (the |.sms| file) is read. Note that the
+% |\importmodule| macro can be used to make module files truly self-contained. To arrive
+% at a file-based content management system, it is good practice to reuse the module
+% identifiers as module names and to prefix module files with corresponding
+% |\importmodule| statements that pre-load the corresponding module files.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \begin{module}[id=foo]
+% \importmodule[../other/bar]{bar}
+% \importmodule[../mycolleaguesmodules]{baz}
+% \importmodule[../other/bar]{foobar}
+% ...
+% \end{module}
+% \end{verbatim}
+% \vspace{-1.7em}
+% \caption{Self-contained Modules via {\texttt{importmodule}}}\label{exf:importmodule}
+% \end{exfig}
+%
+% In Example~\ref{exf:importmodule}, we have shown the typical setup of a module
+% file. The |\importmodule| macro takes great care that files are only read once, as
+% {\sTeX} allows multiple inheritance and this setup would lead to an exponential (in the
+% module inheritance depth) number of file loads.
+%
+% Sometimes we want to import an existing {\omdoc} theory\footnote{{\omdoc} theories are
+% the counterpart of {\stex} modules.} $\widehat\cT$ into (the {\omdoc} document
+% $\widehat\cD$ generated from) a {\stex} document $\cD$. Naturally, we have to provide an
+% {\stex} stub module $\cT$ that provides |\symdef| declarations for all symbols we use in
+% $\cD$. In this situation, we use\DescribeMacro{\importOMDocmodule}
+% |\importOMDocmodule[|\meta{spath}|]{|\meta{OURI}|}{|\meta{name}|}|, where \meta{spath}
+% is the file system path to $\cT$ (as in |\importmodule|, this argument must not contain
+% the file extension), \meta{OURI} is the URI to the {\omdoc} module (this time with
+% extension), and \meta{name} is the name of the theory $\widehat\cT$ and the module in
+% $\cT$ (they have to be identical for this to work). Note that since the \meta{spath}
+% argument is optional, we can make ``local imports'', where the stub $\cT$ is in $\cD$
+% and only contains the |\symdef|s needed there.
+%
+% Note that the recursive (depth-first) nature of the file loads induced by this setup is
+% very natural, but can lead to problems with the depth of the file stack in the {\TeX}
+% formatter (it is usually set to something like 15\footnote{If you have sufficient rights
+% to change your {\TeX} installation, you can also increase the variable
+% {\texttt{max\_in\_open}} in the relevant {\texttt{texmf.cnf}} file. Setting it to 50
+% usually suffices}). Therefore, it may be necessary to circumvent the recursive load
+% pattern providing (logically spurious) |\importmodule| commands. Consider for instance
+% module |bar| in Example~\ref{exf:importmodule}, say that |bar| already has load depth
+% 15, then we cannot naively import it in this way. If module |bar| depended say on a
+% module |base| on the critical load path, then we could add a statement
+% \DescribeMacro{\requiremodules} |\requiremodules{../base}| in the second line. This
+% would load the modules from |../base.sms| in advance (uncritical, since it has load
+% depth 10) without activating them, so that it would not have to be re-loaded in the
+% critical path of the module |foo|. Solving the load depth problem.
+%
+% \DescribeMacro{\sinput} In all of the above, we do not want to load an |sms| file, if
+% the corresponding file has already been loaded, since the semantic macros are already in
+% memory. Therefore the |modules| package supplies a semantic variant of the |\input|
+% macro, which records in an internal register that the modules in the file have already
+% been loaded. Thus if we consistently use |\sinput| instead of |\input| or |\include| for
+% files that contain modules\footnote{files without modules should be treated by the
+% regular {\LaTeX} input mechanism, since they do not need to be registered.}, we can
+% prevent double loading of files and therefore gain efficiency. The
+% \DescribeMacro{\sinputref} |\sinputref| macro behaves just like |\sinput| in the
+% {\LaTeX} workflow, but in the {\latexml} conversion process creates a reference to the
+% transformed version of the input file instead.
+%
+% Finally, the separation of documents into multiple modules often profits from a symbolic
+% management of file paths. To simplify this, the |modules| package supplies the
+% \DescribeMacro{\defpath}|\defpath| macro: |\defpath{|\meta{cname}|}{|\meta{path}|}|
+% defines a command, so that |\|\meta{csname}|{|\meta{name}|}| expands to
+% \meta{path}|/|\meta{name}. So we could have used
+% \begin{lstlisting}
+% \defpath{OPaths}{../other}
+% \importmodule[\OPhats{bar}]{bar}
+% \end{lstlisting}
+% instead of the second line in Example~\ref{exf:importmodule}. The variant |\OPaths| has
+% the big advantage that we can get around the fact that {\TeX/\LaTeX} does not set the
+% current directory in |\input|, so that we can use systematically deployed
+% |\defpath|-defined path macros to make modules relocatable by defining the path macros
+% locally.
+%
+% \subsection{Including Externally Defined Semantic Macros }
+%
+% In some cases, we use an existing {\LaTeX} macro package for typesetting objects that
+% have a conventionalized mathematical meaning. In this case, the macros are ``semantic''
+% even though they have not been defined by a |\symdef|. This is no problem, if we are
+% only interested in the {\LaTeX} workflow. But if we want to e.g. transform them to
+% {\omdoc} via {\latexml}, the {\latexml} bindings will need to contain references to an
+% {\omdoc} theory that semantically corresponds to the {\LaTeX} package. In particular,
+% this theory will have to be imported in the generated {\omdoc} file to make it
+% {\omdoc}-valid.
+%
+% \DescribeMacro{\requirepackage} To deal with this situation, the |modules| package
+% provides the |\requirepackage| macro. It takes two arguments: a package name, and a URI
+% of the corresponding {\omdoc} theory. In the {\LaTeX} workflow this macro behaves like a
+% |\usepackage| on the first argument, except that it can --- and should --- be used
+% outside the {\LaTeX} preamble. In the {\latexml} workflow, this loads the {\latexml}
+% bindings of the package specified in the first argument and generates an appropriate
+% |imports| element using the URI in the second argument.
+%
+% \subsection{Views}\label{sec:user:views}
+%
+% A view is a mapping between modules, such that all model assumptions (axioms) of the
+% source module are satisfied in the target module. \ednote{Document and make Examples}
+%
+% \section{Limitations \& Extensions}\label{sec:limitations}
+%
+% In this section we will discuss limitations and possible extensions of the |modules|
+% package. Any contributions and extension ideas are welcome; please discuss ideas,
+% requests, fixes, etc on the {\sTeX} TRAC~\cite{sTeX:online}.
+%
+% \subsection{Perl Utility \texttt{sms}}\label{sec:limitations:sms}
+%
+% Currently we have to use an external perl utility |sms| to extract \sTeX module
+% signatures from \sTeX files. This considerably adds to the complexity of the \sTeX
+% installation and workflow. If we can solve security setting problems that allows us to
+% write to \sTeX module signatures outside the current directory, writing them from \sTeX
+% may be an avenue of future development see~\cite[issue \#1522]{sTeX:online} for a
+% discussion.
+%
+% \subsection{Qualified Imports}\label{sec:limitations:qualified-imports}
+%
+% In an earlier version of the \texttt{modules} package we used the \texttt{usesqualified}
+% for importing macros with a disambiguating prefix (this is used whenever we have
+% conflicting names for macros inherited from different modules). This is not accessible
+% from the current interface. We need something like a |\importqualified| macro for this;
+% see~\cite[issue \#1505]{sTeX:online}. Until this is implemented the infrastructure is
+% turned off by default, but we have already introduced the
+% \DescribeMacro{qualifiedimports}|qualifiedimports| option for the future.
+%
+% \subsection{Error Messages}\label{sec:limitations:errormsg}
+%
+% The error messages generated by the |modules| package are still quite bad. For instance
+% if |thyA| does note exists we get the cryptic error message
+% \begin{verbatim}
+% ! Undefined control sequence.
+% \module@defs@thyA ...hy
+% \expandafter \mod@newcomma...
+% l.490 ...ortmodule{thyA}
+% \end{verbatim}
+% This should definitely be improved.
+%
+% \subsection{Crossreferencing}\label{sec:limitations:crossref}
+%
+% Note that the macros defined by |\symdef| are still subject to the normal {\TeX} scoping
+% rules. Thus they have to be at the top level of a module to be visible throughout the
+% module as intended. As a consequence, the location of the |\symdef| elements cannot be
+% used as targets for crossreferencing, which is currently supplied by the |statement|
+% package~\ctancite{Kohlhase:smms}. A way around this limitation would be to import
+% the current module from the \sTeX module signature (see Section~\ref{sec:modules}) via
+% the |\importmodule| declaration.
+%
+% \subsection{No Forward Imports}\label{sec:limitations:forward-imports}
+%
+% {\sTeX} allows imports in the same file via |\importmodule{|\meta{mod}|}|, but due to
+% the single-pass linear processing model of {\TeX}, \meta{mod} must be the name of a
+% module declared {\emph{before}} the current point. So we cannot have forward imports as
+% in
+% \begin{verbatim}
+% \begin{module}[id=foo]
+% \importmodule{mod}
+% ...
+% \end{module}
+% ...
+% \begin{module}[id=mod]
+% ...
+% \end{module}
+% \end{verbatim}
+% a workaround, we can extract the module \meta{mod} into a file {{{mod.tex}}} and replace
+% it with |\sinput{mod}|, as in
+% \begin{verbatim}
+% \begin{module}[id=foo]
+% \importmodule[mod]{mod}
+% ...
+% \end{module}
+% ...
+% \sinput{mod}
+% \end{verbatim}
+% then the |\importmodule| command can read |mod.sms| (created via the |sms| utility)
+% without having to wait for the module \meta{mod} to be defined.
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\newpage\printbibliography}\newpage
+%
+% \section{The Implementation}
+%
+% The |modules| package generates two files: the {\LaTeX} package (all the code between
+% {\textlangle\textsf{*package}\textrangle} and {\textsf{\textlangle/package\textrangle}})
+% and the {\latexml} bindings (between {\textsf{\textlangle*ltxml\textrangle}} and
+% {\textsf{\textlangle/ltxml\textrangle}}). We keep the corresponding code fragments
+% together, since the documentation applies to both of them and to prevent them from
+% getting out of sync.
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\ifmod@show\mod@showfalse
+\DeclareOption{showmods}{\mod@showtrue}
+\newif\ifmod@qualified\mod@qualifiedfalse
+\DeclareOption{qualifiedimports}{\mod@qualifiedtrue}
+% \end{macrocode}
+% Finally, we need to declare the end of the option declaration section to {\LaTeX}.
+% \begin{macrocode}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% {\latexml} does not support module options yet, so we do not have to do anything here
+% for the {\latexml} bindings. We only set up the {\perl} packages (and tell {\texttt{emacs}}
+% about the appropriate mode for convenience
+%
+% The next measure is to ensure that the |sref| and |xcomment| packages are loaded (in the
+% right version). For {\latexml}, we also initialize the package inclusions.
+% \begin{macrocode}
+%<*package>
+\RequirePackage{sref}
+\RequirePackage{xspace}
+\RequirePackage{xcomment}
+%</package>
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Global;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Modules and Inheritance}\label{sec:impl:modules}
+%
+% We define the keys for the |module| environment and the actions that are undertaken,
+% when the keys are encountered.
+%
+% \begin{macro}{module:cd}
+% This |KeyVal| key is only needed for {\latexml} at the moment; use this to specify a
+% content dictionary name that is different from the module name.
+% \begin{macrocode}
+%<*package>
+\addmetakey{module}{cd}
+\addmetakey{module}{title}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{module:id}
+% For a module with |[id=|\meta{name}|]|, we have a macro |\module@defs@|\meta{name}
+% that acts as a repository for semantic macros of the current module. I will be called
+% by |\importmodule| to activate them. We will add the internal forms of the semantic
+% macros whenever |\symdef| is invoked. To do this, we will need an unexpended form
+% |\this@module| that expands to |\module@defs@|\meta{name}; we define it first and then
+% initialize |\module@defs@|\meta{name} as empty. Then we do the same for qualified
+% imports as well (if the |qualifiedimports| option was specified). Furthermore, we save
+% the module name in |\mod@id| and the module path in |\|\meta{name}|@cd@file@base|
+% which we add to |\module@defs@|\meta{name}, so that we can use it in the importing
+% module.
+% \begin{macrocode}
+%<*package>
+\define@key{module}{id}{%
+\edef\this@module{\expandafter\noexpand\csname module@defs@#1\endcsname}%
+\global\@namedef{module@defs@#1}{}%
+\ifmod@qualified
+\edef\this@qualified@module{\expandafter\noexpand\csname module@defs@qualified@#1\endcsname}%
+\global\@namedef{module@defs@qualified@#1}{}%
+\fi
+\def\mod@id{#1}%
+\expandafter\edef\csname #1@cd@file@base\endcsname{\mod@path}%
+\expandafter\g@addto@macro\csname module@defs@#1\expandafter\endcsname\expandafter%
+{\expandafter\def\csname #1@cd@file@base\expandafter\endcsname\expandafter{\mod@path}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{module@heading}
+% Then we make a convenience macro for the module heading. This can be customized.
+% \begin{macrocode}
+\newcounter{module}[section]
+\newcommand\module@heading{\stepcounter{module}%
+\noindent{\textbf{Module} \thesection.\themodule [\mod@id]}%
+\sref@label@id{Module \thesection.\themodule [\mod@id]}%
+\ifx\module@title\@empty :\quad\else\quad(\module@title)\hfill\\\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{module@footer}
+% Then we make a convenience macro for the module heading. This can be customized.
+% \begin{macrocode}
+\newcommand\module@footer{\noindent{\textbf{EndModule} \thesection.\themodule}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{module}
+% Finally, we define the begin module command for the module environment. All the work
+% has already been done in the keyval bindings, so this is very simple.
+% \begin{macrocode}
+\newenvironment{module}[1][]%
+{\metasetkeys{module}{#1}\ifmod@show\module@heading\fi}
+{\ifmod@show\module@footer\fi}
+%</package>
+% \end{macrocode}
+% for the {\latexml} bindings, we have to do the work all at once.
+% \begin{macrocode}
+%<*ltxml>
+DefKeyVal('Module','id','Semiverbatim');
+DefKeyVal('Module','cd','Semiverbatim');
+DefEnvironment('{module} OptionalKeyVals:Module',
+ "?#excluded()(<omdoc:theory "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')(xml:id='#id')>#body</omdoc:theory>)",
+# beforeDigest=>\&useTheoryItemizations,
+ afterDigestBegin=>sub {
+ my($stomach, $whatsit)=@_;
+ $whatsit->setProperty(excluded=>LookupValue('excluding_modules'));
+
+ my $keys = $whatsit->getArg(1);
+ my($id, $cd)=$keys
+ && map(ToString($keys->getValue($_)),qw(id cd));
+ #make sure we have an id or give a stub one otherwise:
+ if (not $id) {
+ #do magic to get a unique id for this theory
+ #$whatsit->setProperties(beginItemize('theory'));
+ #$id = ToString($whatsit->getProperty('id'));
+ # changed: beginItemize returns the hash returned by RefStepCounter.
+ # RefStepCounter deactivates any scopes for the current value of the
+ # counter which causes the stored prop. of the env. not to be
+ # visible anymore.
+ $id = LookupValue('stex:theory:id') || 0;
+ AssignValue('stex:theory:id', $id+1);
+ $id = "I$id";
+ }
+ $cd = $id unless $cd;
+ # update the catalog with paths for modules
+ my $module_paths = LookupValue('module_paths') || {};
+ $module_paths->{$id} = LookupValue('last_module_path');
+ AssignValue('module_paths', $module_paths, 'global');
+
+ #Update the current module position
+ AssignValue(current_module => $id);
+ AssignValue(module_cd => $cd) if $cd;
+
+ #activate the module in our current scope
+ $STATE->activateScope("module:".$id);
+
+ #Activate parent scope, if present
+ my $parentmod = LookupValue('parent_module');
+ use_module($parentmod) if $parentmod;
+ #Update the current parent module
+ AssignValue("parent_of_$id"=>$parentmod,'global');
+ AssignValue("parent_module" => $id);
+ return; },
+ afterDigest => sub {
+ #Move a step up on the module ancestry
+ AssignValue("parent_module" => LookupValue("parent_of_".LookupValue("parent_module")));
+ return;
+ });
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \begin{macro}{usemodule}
+% The |use_module| subroutine performs depth-first load of definitions of the used
+% modules
+% \begin{macrocode}
+%<*ltxml>
+sub use_module {
+ my($module,%ancestors)=@_;
+ $module = ToString($module);
+ if (defined $ancestors{$module}) {
+ Fatal(":module \"$module\" leads to import cycle!");
+ }
+ $ancestors{$module}=1;
+ # Depth-first load definitions from used modules, disregarding cycles
+ foreach my $used_module (@{ LookupValue("module_${module}_uses") || []}){
+ use_module($used_module,%ancestors);
+ }
+ # then load definitions for this module
+ $STATE->activateScope("module:$module"); }#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\activate@defs}
+% To activate the |\symdef|s from a given module \meta{mod}, we call the macro
+% |\module@defs@|\meta{mod}.
+% \begin{macrocode}
+%<*package>
+\def\activate@defs#1{\csname module@defs@#1\endcsname}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\export@defs}
+% To export a the |\symdef|s from the current module, we all the macros
+% |\module@defs@|\meta{mod} to |\module@defs@|\meta{mod} (if the current module has a
+% name and it is \meta{mod})
+% \begin{macrocode}
+%<*package>
+\def\export@defs#1{\@ifundefined{mod@id}{}%
+{\expandafter\expandafter\expandafter\g@addto@macro\expandafter%
+\this@module\expandafter{\csname module@defs@#1\endcsname}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\coolurion/off}
+% \ednote{@DG: this needs to be documented somewhere in section 1}
+% \begin{macrocode}
+%<*package>
+\def\coolurion{}
+\def\coolurioff{}
+%</package>
+%<*ltxml>
+DefMacro('\coolurion',sub {AssignValue('cooluri'=>1);});
+DefMacro('\coolurioff',sub {AssignValue('cooluri'=>0);});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\importmodule}
+% The |\importmodule[|\meta{file}|]{|\meta{mod}|}| macro is an interface macro that
+% loads \meta{file} and activates and re-exports the |\symdef|s from module
+% \meta{mod}. It also remembers the file name in |\mod@path|.
+% \begin{macrocode}
+%<*package>
+\newcommand{\importmodule}[2][]{{\def\mod@path{#1}%
+\ifx\mod@path\@empty\else\requiremodules{#1}\fi}%
+\activate@defs{#2}\export@defs{#2}}
+%</package>
+%<*ltxml>
+sub omext {
+ my ($mod)=@_; my $dest='';
+ $mod = ToString($mod);
+ if ($mod) {
+ #We need a constellation of abs_path invocations
+ # to make sure that all symbolic links get resolved
+ if ($mod=~/^(\w)+:\/\//) { $dest=$mod; } else {
+ my ($d,$f,$t) = pathname_split(abs_path($mod));
+ $d = pathname_relative(abs_path($d),abs_path(cwd()));
+ $dest=$d."/".$f;
+ }
+ }
+ $dest.=".omdoc" if (ToString($mod) && !LookupValue('cooluri'));
+ return Tokenize($dest);}
+sub importmoduleI {
+ my($stomach,$whatsit)=@_;
+ my $file = ToString($whatsit->getArg(1));
+ my $omdocmod = $file.".omdoc" if $file;
+ my $module = ToString($whatsit->getArg(2));
+ my $containing_module = LookupValue('current_module');
+ AssignValue('last_import_module',$module);
+ #set the relation between the current module and the one to be imported
+ PushValue("module_".$containing_module."_uses"=>$module) if $containing_module;
+ #check if we've already loaded this module file or no file path given
+ if((!$file) || (LookupValue('file_'.$module.'_loaded'))) {use_module($module);} #if so activate it!
+ else {
+ #if not:
+ my $gullet = $stomach->getGullet;
+ #1) mark as loaded
+ AssignValue('file_'.$module.'_loaded' => 1, 'global');
+ #open a group for its definitions so that they are localized
+ $stomach->bgroup;
+ #update the last module path
+ AssignValue('last_module_path', $file);
+ #queue the closing tag for this module in the gullet where it will be executed
+ #after all other definitions of the imported module have been taken care of
+ $gullet->unread(Invocation(T_CS('\end@requiredmodule'), Tokens(Explode($module)))->unlist);
+ #we only need to load the sms definitions without generating any xml output, so we set the flag to 1
+ AssignValue('excluding_modules' => 1);
+ #queue this module's sms file in the gullet so that its definitions are imported
+ $gullet->input($file,['sms']);
+ }
+ return;}
+DefConstructor('\importmodule OptionalSemiverbatim {}',
+ "<omdoc:imports from='?#1(&omext(#1))\##2'/>",
+ afterDigest=>sub{ importmoduleI(@_)});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\importmodulevia}
+% The |importmodulevia| environment just calls |\importmodule|, but to get around the
+% group, we first define a local macro |\@@doit|, which does that and can be called with
+% an |\aftergroup| to escape the environment groupling introduced by
+% |importmodulevia|. For {\latexml}, we have to\ednote{MK@DG: needs implementation}
+% \begin{macrocode}
+%<*package>
+\newenvironment{importmodulevia}[2][]{\gdef\@@doit{\importmodule[#1]{#2}}%
+\ifmod@show\par\noindent importing module #2 via \@@doit\fi}
+{\aftergroup\@@doit\ifmod@show end import\fi}
+%</package>
+%<*ltxml>
+DefMacro('\importmodulevia OptionalSemiverbatim {}','\endgroup\importmoduleI[#1]{#2}\begin{importmoduleenv}[#1]{#2}');
+DefMacroI('\end{importmodulevia}',undef,'\end{importmoduleenv}');
+DefEnvironment('{importmoduleenv} OptionalSemiverbatim {}',
+ "<omdoc:imports from='?#1(&omext(#1))\##2'>"
+ . "<omdoc:morphism>#body</omdoc:morphism>"
+ ."</omdoc:imports>");
+DefConstructor('\importmoduleI OptionalSemiverbatim {}', '',
+ afterDigest=>sub{ importmoduleI(@_)});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{vassign}
+% \begin{macrocode}
+%<*package>
+\newcommand\vassign[2]{\ifmod@show\ensuremath{#1\mapsto #2}, \fi}
+%</package>
+%<*ltxml>
+DefConstructor('\vassign{}{}',
+ "<omdoc:requation>"
+ . "<ltx:Math><ltx:XMath>#1</ltx:XMath></ltx:Math>"
+ . "<ltx:Math><ltx:XMath>#2</ltx:XMath></ltx:Math>"
+ ."</omdoc:requation>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{tassign}
+% \begin{macrocode}
+%<*package>
+\newcommand\tassign[3][]{\ifmod@show #2\ensuremath{\mapsto} #3, \fi}
+%</package>
+%<*ltxml>
+DefConstructor('\tassign[]{}{}',
+ "<omdoc:requation>"
+ . "<om:OMOBJ><om:OMS cd='?#1(#1)(#lastImportModule)' name='#2'/></om:OMOBJ>"
+ . "<om:OMOBJ><om:OMS cd='#currentModule' name='#3'/></om:OMOBJ>"
+ ."</omdoc:requation>",
+ afterDigest=> sub {
+ my ($stomach,$whatsit) = @_;
+ $whatsit->setProperty('currentModule',LookupValue("current_module"));
+ $whatsit->setProperty('lastImportModule',LookupValue("last_import_module"));
+ });
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{ttassign}
+% \begin{macrocode}
+%<*package>
+\newcommand\ttassign[3][]{\ifmod@show #1\ensuremath{\mapsto} ``#2'', \fi}
+%</package>
+%<*ltxml>
+DefConstructor('\ttassign{}{}',
+ "<omdoc:requation>"
+ . "<ltx:Math><ltx:XMath>#1</ltx:XMath></ltx:Math>"
+ . "<ltx:Math><ltx:XMath>#2</ltx:XMath></ltx:Math>"
+ ."</omdoc:requation>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\importOMDocmodule}
+% for the {\LaTeX} side we can just re-use |\importmodule|, for the {\latexml} side we
+% have a full URI anyways. So things are easy.
+% \begin{macrocode}
+%<*package>
+\newcommand{\importOMDocmodule}[3][]{\importmodule[#1]{#3}}
+%</package>
+%<*ltxml>
+DefConstructor('\importOMDocmodule OptionalSemiverbatim {}{}',"<omdoc:imports from='#3\##2'/>",
+afterDigest=>sub{
+ #Same as \importmodule, just switch second and third argument.
+ my ($stomach,$whatsit) = @_;
+ my $path = $whatsit->getArg(1);
+ my $ouri = $whatsit->getArg(2);
+ my $module = $whatsit->getArg(3);
+ $whatsit->setArgs(($path, $module,$ouri));
+ importmoduleI($stomach,$whatsit);
+ return;
+});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\metalanguage}
+% |\metalanguage| behaves exactly like |\importmodule| for formatting. For {\latexml},
+% we only add the |type| attribute.
+% \begin{macrocode}
+%<*package>
+\let\metalanguage=\importmodule
+%</package>
+%<*ltxml>
+DefConstructor('\metalanguage OptionalSemiverbatim {}',
+ "<omdoc:imports type='metalanguage' from='?#1(&omext(#1))\##2'/>",
+ afterDigest=>sub{ importmoduleI(@_)});
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Semantic Macros}\label{sec:impl:symdef}
+%
+% \begin{macro}{\mod@newcommand}
+% We first hack the {\LaTeX} kernel macros to obtain a version of the |\newcommand|
+% macro that does not check for definedness. This is just a copy of the code from
+% |latex.ltx| where I have removed the |\@ifdefinable| check.\footnote{Someone must have
+% done this before, I would be very happy to hear about a package that provides this.}
+% \begin{macrocode}
+%<*package>
+\def\mod@newcommand{\@star@or@long\mod@new@command}
+\def\mod@new@command#1{\@testopt{\@mod@newcommand#1}0}
+\def\@mod@newcommand#1[#2]{\kernel@ifnextchar [{\mod@xargdef#1[#2]}{\mod@argdef#1[#2]}}
+\long\def\mod@argdef#1[#2]#3{\@yargdef#1\@ne{#2}{#3}}
+\long\def\mod@xargdef#1[#2][#3]#4{\expandafter\def\expandafter#1\expandafter{%
+\expandafter\@protected@testopt\expandafter #1\csname\string#1\endcsname{#3}}%
+\expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% Now we define the optional KeyVal arguments for the |\symdef| form and the actions that
+% are taken when they are encountered.
+%
+% \begin{macro}{symdef:keys}
+% The optional argument local specifies the scope of the function to be defined. If
+% local is not present as an optional argument then |\symdef| assumes the scope of the
+% function is global and it will include it in the pool of macros of the current
+% module. Otherwise, if local is present then the function will be defined only locally
+% and it will not be added to the current module (i.e. we cannot inherit a local
+% function). Note, the optional key local does not need a value: we write
+% |\symdef[local]{somefunction}[0]{some expansion}|. The other keys are not used in the
+% {\LaTeX} part.
+% \begin{macrocode}
+%<*package>
+\newif\if@symdeflocal
+\define@key{symdef}{local}[true]{\@symdeflocaltrue}
+\define@key{symdef}{name}{}
+\define@key{symdef}{assocarg}{}
+\define@key{symdef}{bvars}{}
+\define@key{symdef}{bvar}{}
+\define@key{symdef}{bindargs}{}
+%</package>
+% \end{macrocode}
+% \end{macro}
+% \ednote{MK@MK: we need to document the binder keys above.}
+% \begin{macro}{\symdef}
+% The the |\symdef|, and |\@symdef| macros just handle optional arguments.
+% \begin{macrocode}
+%<*package>
+\def\symdef{\@ifnextchar[{\@symdef}{\@symdef[]}}
+\def\@symdef[#1]#2{\@ifnextchar[{\@@symdef[#1]{#2}}{\@@symdef[#1]{#2}[0]}}
+% \end{macrocode}
+% next we locally abbreviate |\mod@newcommand| to simplify argument passing.
+% \begin{macrocode}
+\def\@mod@nc#1{\mod@newcommand{#1}[1]}
+% \end{macrocode}
+% now comes the real meat: the |\@@symdef| macro does two things, it adds the macro
+% definition to the macro definition pool of the current module and also provides it.
+% \begin{macrocode}
+\def\@@symdef[#1]#2[#3]#4{%
+% \end{macrocode}
+% We use a switch to keep track of the local optional argument. We initialize the switch
+% to false and set all the keys that have been provided as arguments: |name|, |local|.
+% \begin{macrocode}
+\@symdeflocalfalse\setkeys{symdef}{#1}%
+% \end{macrocode}
+% First, using |\mod@newcommand| we initialize the intermediate macro
+% |\module@|\meta{sym}|@pres@|, the one that can be extended with |\symvariant|
+% \begin{macrocode}
+\expandafter\mod@newcommand\csname modules@#2@pres@\endcsname[#3]{#4}%
+% \end{macrocode}
+% and then we define the actual semantic macro. Note that this can take an optional
+% argument, for which we provide with |\@ifnextchar| and an internal macro |\@|\meta{sym},
+% which when invoked with an optional argument \meta{opt} calls
+% |\modules@|\meta{sym}|@pres@|\meta{opt}.
+% \begin{macrocode}
+\expandafter\def\csname #2\endcsname%
+{\@ifnextchar[{\csname modules@#2\endcsname}{\csname modules@#2\endcsname[]}}%
+\expandafter\def\csname modules@#2\endcsname[##1]%
+{\csname modules@#2@pres@##1\endcsname}%
+% \end{macrocode}
+% Finally, we prepare the internal macro to be used in the |\symref| call.
+% \begin{macrocode}
+\expandafter\@mod@nc\csname mod@symref@#2\expandafter\endcsname\expandafter%
+{\expandafter\mod@termref\expandafter{\mod@id}{#2}{##1}}%
+% \end{macrocode}
+% We check if the switch for the local scope is set: if it is we are done, since this
+% function has a local scope. Similarly, if we are not inside a module, which we could
+% export from.
+% \begin{macrocode}
+\if@symdeflocal\else%
+\@ifundefined{mod@id}{}{%
+% \end{macrocode}
+% Otherwise, we add three functions to the module's pool of defined macros using
+% |\g@addto@macro|. We first add the definition of the intermediate function
+% |\modules@|\meta{sym}|@pres@|.
+% \begin{macrocode}
+\expandafter\g@addto@macro\this@module%
+{\expandafter\mod@newcommand\csname modules@#2@pres@\endcsname[#3]{#4}}%
+% \end{macrocode}
+% Then we add add the definition of |\|\meta{sym} in terms of the function |\@|\meta{sym}
+% to handle the optional argument.
+% \begin{macrocode}
+\expandafter\g@addto@macro\this@module%
+{\expandafter\def\csname#2\endcsname%
+{\@ifnextchar[{\csname modules@#2\endcsname}{\csname modules@#2\endcsname[]}}}%
+% \end{macrocode}
+% Finally, we add add the definition of |\@|\meta{sym}, which calls the intermediate
+% function.
+% \begin{macrocode}
+\expandafter\g@addto@macro\this@module%
+{\expandafter\def\csname modules@#2\endcsname[##1]%
+{\csname modules@#2@pres@##1\endcsname}}%
+% \end{macrocode}
+% We also add |\mod@symref@|\meta{sym} macro to the macro pool so that the |\symref| macro
+% can pick it up.
+% \begin{macrocode}
+\expandafter\g@addto@macro\csname module@defs@\mod@id\expandafter\endcsname\expandafter%
+{\expandafter\@mod@nc\csname mod@symref@#2\expandafter\endcsname\expandafter%
+{\expandafter\mod@termref\expandafter{\mod@id}{#2}{##1}}}%
+% \end{macrocode}
+% Finally, using |\g@addto@macro| we add the two functions to the qualified version of the
+% module if the |qualifiedimports| option was set.
+% \begin{macrocode}
+\ifmod@qualified%
+\expandafter\g@addto@macro\this@qualified@module%
+{\expandafter\mod@newcommand\csname modules@#2@pres@qualified\endcsname[#3]{#4}}%
+\expandafter\g@addto@macro\this@qualified@module%
+{\expandafter\def\csname#2atqualified\endcsname{\csname modules@#2@pres@qualified\endcsname}}%
+\fi%
+% \end{macrocode}
+% So now we only need to close all brackets and the macro is done.
+% \begin{macrocode}
+}\fi}
+%</package>
+% \end{macrocode}
+% In the {\latexml} bindings, we have a top-level macro that delegates the work to two
+% internal macros: |\@symdef|, which defines the content macro and |\@symdef@pres|, which
+% generates the {\omdoc} |symbol| and |presentation| elements (see
+% Section~\ref{sec:impl:presentation}).
+% \begin{macrocode}
+%<*package>
+\define@key{DefMathOp}{name}{\def\defmathop@name{#1}}
+\newcommand\DefMathOp[2][]{%
+\setkeys{DefMathOp}{#1}%
+\symdef[#1]{\defmathop@name}{#2}}
+%</package>
+%<*ltxml>
+DefMacro('\DefMathOp OptionalKeyVals:symdef {}',
+ sub {
+ my($self,$keyval,$pres)=@_;
+ my $name = KeyVal($keyval,'name') if $keyval;
+ #Rewrite this token
+ my $scopes = $STATE->getActiveScopes;
+ DefMathRewrite(xpath=>'descendant-or-self::ltx:XMath',match=>ToString($pres),
+ replace=>sub{
+ map {$STATE->activateScope($_);} @$scopes;
+ $_[0]->absorb(Digest("\\".ToString($name)));
+ });
+ #Invoke symdef
+ (Invocation(T_CS('\symdef'),$keyval,$name,undef,$pres)->unlist);
+ });
+DefMacro('\symdef OptionalKeyVals:symdef {}[]{}',
+ sub {
+ my($self,@args)=@_;
+ ((Invocation(T_CS('\@symdef'),@args)->unlist),
+ (LookupValue('excluding_modules') ? ()
+ : (Invocation(T_CS('\@symdef@pres'), @args)->unlist))); });
+
+#Current list of recognized formatter command sequences:
+our @PresFormatters = qw (infix prefix postfix assoc mixfixi mixfixa mixfixii mixfixia mixfixai mixfixaii mixfixiii);
+DefPrimitive('\@symdef OptionalKeyVals:symdef {}[]{}', sub {
+ my($stomach,$keys,$cs,$nargs,$presentation)=@_;
+ my($name,$cd,$role,$bvars,$bvar)=$keys
+ && map($_ && $_->toString,map($keys->getValue($_), qw(name cd role
+ bvars bvar)));
+ $cd = LookupValue('module_cd') unless $cd;
+ $name = $cs unless $name;
+ #Store for later lookup
+ AssignValue("symdef.".ToString($cs).".cd"=>ToString($cd),'global');
+ AssignValue("symdef.".ToString($cs).".name"=>ToString($name),'global');
+ $nargs = (ref $nargs ? $nargs->toString : $nargs || 0);
+ my $module = LookupValue('current_module');
+ my $scope = (($keys && ($keys->getValue('local') || '' eq 'true')) ? 'module_local' : 'module').":".$module;
+ #The DefConstructorI Factory is responsible for creating the \symbol command sequences as dictated by the \symdef
+ DefConstructorI("\\".$cs->toString,convertLaTeXArgs($nargs+1,'default'), sub {
+ my ($document,@args) = @_;
+ my $icvariant = shift @args;
+ my @props = @args;
+ #Lookup the presentation from the State, if a variant:
+ @args = splice(@props,0,$nargs);
+ my %prs = @props;
+ my $localpres = $prs{presentation};
+ $prs{isbound} = "BINDER" if ($bvars || $bvar);
+ my $wrapped;
+ my $parent=$document->getNode;
+ if(! defined $parent->lookupNamespacePrefix("http://omdoc.org/ns")){ # namespace not already declared?
+ $document->getDocument->documentElement->setNamespace("http://omdoc.org/ns","omdoc",0); }
+ my $symdef_scope=$parent->exists('ancestor::omdoc:rendering'); #Are we in a \symdef rendering?
+ if (($localpres =~/^LaTeXML::Token/) && $symdef_scope) {
+ #Note: We should probably ask Bruce whether this maneuver makes sense
+ # We jump back to digestion, at a processing stage where it has been already completed
+ # Hence need to reinitialize all scopes and make a new group. This is probably expensive to do.
+
+ my @toks = $localpres->unlist;
+ while(@toks && $toks[0]->equals(T_SPACE)){ shift(@toks); } # Remove leading space
+ my $formatters = join("|",@PresFormatters);
+ $formatters = qr/$formatters/;
+ $wrapped = (@toks && ($toks[0]->toString =~ /^\\($formatters)$/));
+ $localpres = Invocation(T_CS('\@use'),$localpres) unless $wrapped;
+ # Plug in the provided arguments, doing a nasty reversion:
+ my @sargs = map (Tokens($_->revert), @args);
+ $localpres = Tokens(LaTeXML::Expandable::substituteTokens($localpres,@sargs)) if $nargs>0;
+ #Digest:
+ my $stomach = $STATE->getStomach;
+ $stomach->beginMode('inline-math');
+ $STATE->activateScope($scope);
+ use_module($module);
+ use_module(LookupValue("parent_of_".$module)) if LookupValue("parent_of_".$module);
+ $localpres=$stomach->digest($localpres);
+ $stomach->endMode('inline-math');
+ }
+ else { #Some are already digested to Whatsit, usually when dropped from a wrapping constructor
+ }
+ if ($nargs == 0) {
+ if (!$symdef_scope) { #Simple case - discourse flow, only a single XMTok
+ #Referencing XMTok when not in \symdefs:
+ $document->insertElement('ltx:XMTok',undef,(name=>$cs->toString, meaning=>$name,omcd=>$cd,role => $role,scriptpos=>$prs{'scriptpos'}));
+ }
+ else {
+ if ($symdef_scope && ($localpres =~/^LaTeXML::Whatsit/) && (!$wrapped)) {#1. Simple case: converts to a single token
+ $localpres->setProperties((name=>$cs->toString, meaning=>$name,omcd=>$cd,role => $role,scriptpos=>$prs{'scriptpos'}));
+ }
+ else {
+ #Experimental treatment - COMPLEXTOKEN
+ #$role=$role||'COMPLEXTOKEN';
+ #$document->openElement('ltx:XMApp',role=>'COMPLEXTOKEN');
+ #$document->insertElement('ltx:XMTok',undef,(name=>$cs->toString, meaning=>$name, omcd=>$cd, role=>$role, scriptpos=>$prs{'scriptpos'}));
+ #$document->openElement('ltx:XMWrap');
+ #$document->absorb($localpres);
+ #$document->closeElement('ltx:XMWrap');
+ #$document->closeElement('ltx:XMApp');
+ }
+ #We need expanded presentation when invoked in \symdef scope:
+
+ #Suppress errors from rendering attributes when absorbing.
+ #This is bad style, but we have no way around it due to the digestion acrobatics.
+ my $verbosity = $LaTeXML::Global::STATE->lookupValue('VERBOSITY');
+ my $errors = $LaTeXML::Global::STATE->getStatus('error');
+ $LaTeXML::Global::STATE->assignValue('VERBOSITY',-5);
+
+ #Absorb presentation:
+ $document->absorb($localpres);
+
+ #Return to original verbosity and error state:
+ $LaTeXML::Global::STATE->assignValue('VERBOSITY',$verbosity);
+ $LaTeXML::Global::STATE->setStatus('error',$errors);
+
+ #Strip all/any <rendering><Math><XMath> wrappers:
+ #TODO: Ugly LibXML work, possibly do something smarter
+ my $parent = $document->getNode;
+ my @renderings=$parent->findnodes(".//omdoc:rendering");
+ foreach my $render(@renderings) {
+ my $content=$render;
+ while ($content && $content->localname =~/^rendering|[X]?Math/) {
+ $content = $content->firstChild;
+ }
+ my $sibling = $content->parentNode->lastChild;
+ my $localp = $render->parentNode;
+ while ((defined $sibling) && (!$sibling->isSameNode($content))) {
+ my $clone = $sibling->cloneNode(1);
+ $localp->insertAfter($clone,$render);
+ $sibling = $sibling->previousSibling;
+ }
+ $render->replaceNode($content);
+ }
+ }
+ }
+ else {#2. Constructors with arguments
+ if (!$symdef_scope) { #2.1 Simple case, outside of \symdef declarations:
+ #Referencing XMTok when not in \symdefs:
+ my %ic = ($icvariant ne 'default') ? (ic=>'variant:'.$icvariant) : ();
+ $document->openElement('ltx:XMApp',%ic,scriptpos=>$prs{'scriptpos'},role=>$prs{'isbound'});
+ $document->insertElement('ltx:XMTok',undef,(name=>$cs->toString, meaning=>$name, omcd=>$cd, role=>$role, scriptpos=>$prs{'operator_scriptpos'}));
+ foreach my $carg (@args) {
+ if ($carg =~/^LaTeXML::Token/) {
+ my $stomach = $STATE->getStomach;
+ $stomach->beginMode('inline-math');
+ $carg=$stomach->digest($carg);
+ $stomach->endMode('inline-math');
+ }
+ $document->openElement('ltx:XMArg');
+ $document->absorb($carg);
+ $document->closeElement('ltx:XMArg');
+ }
+ $document->closeElement('ltx:XMApp');
+ }
+ else { #2.2 Complex case, inside a \symdef declaration
+ #We need expanded presentation when invoked in \symdef scope:
+
+ #Suppress errors from rendering attributes when absorbing.
+ #This is bad style, but we have no way around it due to the digestion acrobatics.
+ my $verbosity = $LaTeXML::Global::STATE->lookupValue('VERBOSITY');
+ my $errors = $LaTeXML::Global::STATE->getStatus('error');
+ $LaTeXML::Global::STATE->assignValue('VERBOSITY',-5);
+
+ #Absorb presentation:
+ $document->absorb($localpres);
+
+ #Return to original verbosity and error state:
+ $LaTeXML::Global::STATE->assignValue('VERBOSITY',$verbosity);
+ $LaTeXML::Global::STATE->setStatus('error',$errors);
+
+ #Strip all/any <rendering><Math><XMath> wrappers:
+ #TODO: Ugly LibXML work, possibly do something smarter?
+ my $parent = $document->getNode;
+ if(! defined $parent->lookupNamespacePrefix("http://omdoc.org/ns")){ # namespace not already declared?
+ $document->getDocument->documentElement->setNamespace("http://omdoc.org/ns","omdoc",0); }
+ my @renderings=$parent->findnodes(".//omdoc:rendering");
+ foreach my $render(@renderings) {
+ my $content=$render;
+ while ($content && $content->localname =~/^rendering|[X]?Math/) {
+ $content = $content->firstChild;
+ }
+ my $sibling = $content->parentNode->lastChild;
+ my $localp = $render->parentNode;
+ while ((defined $sibling) && (!$sibling->isSameNode($content))) {
+ my $clone = $sibling->cloneNode(1);
+ $localp->insertAfter($clone,$render);
+ $sibling = $sibling->previousSibling;
+ }
+ $render->replaceNode($content);
+ }
+ }
+ }},
+ properties => {name=>$cs->toString, meaning=>$name,omcd=>$cd,role => $role},
+ scope=>$scope,
+ beforeDigest => sub{
+ my ($gullet, $variant) = @_;
+ my $icvariant = ToString($variant);
+ my $localpres = $presentation;
+ if ($icvariant && $icvariant ne 'default') {
+ $localpres = LookupValue($cs->toString."$icvariant:pres");
+ if (!$localpres) {
+ Error("No variant named '$icvariant' found! Falling back to ".
+ "default.\n Please consider introducing \\symvariant{".
+ $cs->toString."}[$nargs]{$icvariant}{... your presentation ...}");
+ $localpres = $presentation;
+ }
+ }
+ my $count = LookupValue(ToString($cs).'_counter') || 0;
+ AssignValue(ToString($cs).":pres:$count",$localpres);
+ AssignValue(ToString($cs).'_counter',$count+1);
+ return;
+ },
+ afterDigest => sub{
+ my ($stomach,$whatsit) = @_;
+ my $count = LookupValue(ToString($cs).'_aftercounter') || 0;
+ $whatsit->setProperty('presentation',LookupValue(ToString($cs).":pres:$count"));
+ AssignValue(ToString($cs).'_aftercounter',$count+1);
+ });
+ return; });
+%</ltxml>%$
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\symvariant}
+% |\symvariant{|\meta{sym}|}[|\meta{args}|]{|\meta{var}|}{|\meta{cseq}|}| just extends
+% the internal macro |\modules@|\meta{sym}|@pres@| defined by
+% |\symdef{|\meta{sym}|}[|\meta{args}|]{|\ldots|}| with a variant
+% |\modules@|\meta{sym}|@pres@|\meta{var} which expands to \meta{cseq}. Recall that this
+% is called by the macro |\|\meta{sym}|[|\meta{var}|]| induced by the
+% |\symdef|.\ednote{MK@DG: this needs to
+% be implemented in LaTeXML}
+% \begin{macrocode}
+%<*package>
+\def\symvariant#1{\@ifnextchar[{\@symvariant{#1}}{\@symvariant{#1}[0]}}
+\def\@symvariant#1[#2]#3#4{%
+\expandafter\mod@newcommand\csname modules@#1@pres@#3\endcsname[#2]{#4}%
+% \end{macrocode}
+% and if we are in a named module, then we need to export the function
+% |\modules@|\meta{sym}|@pres@|\meta{opt} just as we have done that in |\symdef|.
+% \begin{macrocode}
+\@ifundefined{mod@id}{}{%
+\expandafter\g@addto@macro\this@module%
+{\expandafter\mod@newcommand\csname modules@#1@pres@#3\endcsname[#2]{#4}}}}%
+%</package>
+%<*ltxml>
+ DefMacro('\symvariant{}[]{}{}', sub {
+ my($self,@args)=@_;
+ my $prestok = Invocation(T_CS('\@symvariant@pres'), @args);
+ pop @args; push @args, $prestok;
+ Invocation(T_CS('\@symvariant@construct'),@args)->unlist;
+});
+ DefMacro('\@symvariant@pres{}[]{}{}', sub {
+ my($self,$cs,$nargs,$ic,$presentation)=@_;
+ symdef_presentation_pmml($cs,ToString($nargs)||0,$presentation);
+ });
+ DefConstructor('\@symvariant@construct{}[]{}{}', sub {
+ my($document,$cs,$nargs,$icvariant,$presentation)=@_;
+ $cs = ToString($cs);
+ $nargs = ToString($nargs);
+ $icvariant = ToString($icvariant);
+ # Save presentation for future reference:
+ #Notation created by \symdef
+ #Create the rendering at the right place:
+ my $cnode = $document->getNode;
+ my $root = $document->getDocument->documentElement;
+ my $name = LookupValue("symdef.".ToString($cs).".name") || $cs;
+ # Fix namespace (the LibXML XPath problems...)
+ $root->setNamespace("http://omdoc.org/ns","omdoc",0);
+ my ($notation) = $root->findnodes(".//omdoc:notation[\@name='$name' and ".
+ "preceding-sibling::omdoc:symbol[1]/\@name
+ = '$name']");
+ if (!$notation) {
+ #No symdef found, raise error:
+ Error("No \\symdef found for \\$cs! Please define symbol prior to introducing variants!");
+ return;
+ }
+ $document->setNode($notation);
+ $document->absorb($presentation);
+ $notation->lastChild->setAttribute("ic","variant:$icvariant");
+ $document->setNode($cnode);
+ return;
+ },
+ beforeDigest => sub {
+ my($gullet,$cs,$nargs,$icvariant,$presentation)=@_;
+ $cs = ToString($cs);
+ $icvariant = ToString($icvariant);
+ AssignValue("$cs:$icvariant:pres",Digest($presentation),'module:'.LookupValue('current_module'));
+ });
+ #mode=>'math'
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\resymdef}
+% This is now deprecated.
+% \begin{macrocode}
+%<*package>
+\def\resymdef{\@ifnextchar[{\@resymdef}{\@resymdef[]}}
+\def\@resymdef[#1]#2{\@ifnextchar[{\@@resymdef[#1]{#2}}{\@@resymdef[#1]{#2}[0]}}
+\def\@@resymdef[#1]#2[#3]#4{\PackageError{modules}
+ {The \protect\resymdef macro is deprecated,\MessageBreak
+ use the \protect\symvariant instead!}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\abbrdef}
+% The |\abbrdef| macro is a variant of |\symdef| that does the same on the {\LaTeX}
+% level.
+% \begin{macrocode}
+%<*package>
+\let\abbrdef\symdef
+%</package>
+%<*ltxml>
+DefPrimitive('\abbrdef OptionalKeyVals:symdef {}[]{}', sub {
+ my($stomach,$keys,$cs,$nargs,$presentation)=@_;
+ my $module = LookupValue('current_module');
+ my $scope = (($keys && ($keys->getValue('local') || '' eq 'true')) ? 'module_local' : 'module').":$module";
+ DefMacroI("\\".$cs->toString,convertLaTeXArgs($nargs,''),$presentation,
+ scope=>$scope);
+ return; });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Symbol and Concept Names}\label{sec:impl:concepts}
+%
+% \begin{macro}{\mod@path}
+% the |\mod@path| macro is used to remember the local path, so that the |module|
+% environment can set it for later cross-referencing of the modules. If |\mod@path| is
+% empty, then it signifies the local file.
+% \begin{macrocode}
+%<*package>
+\def\mod@path{}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\termdef}
+% \begin{macrocode}
+%<*package>
+\def\mod@true{true}
+\addmetakey[false]{termdef}{local}
+\addmetakey{termdef}{name}
+\newcommand{\termdef}[3][]{\metasetkeys{termdef}{#1}%
+\expandafter\mod@newcommand\csname#2\endcsname[0]{#3\xspace}%
+\ifx\termdef@local\mod@true\else%
+\@ifundefined{mod@id}{}{\expandafter\g@addto@macro\this@module%
+{\expandafter\mod@newcommand\csname#2\endcsname[0]{#3\xspace}}}%
+\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\capitalize}
+% \begin{macrocode}
+%<*package>
+\def\@captitalize#1{\uppercase{#1}}
+\newcommand\capitalize[1]{\expandafter\@captitalize #1}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@termref}
+% |\mod@termref{|\meta{module}|}{|\meta{name}|}{|\meta{nl}|}| determines whether the
+% macro |\|\meta{module}|@cd@file@base| is defined. If it is, we make it the prefix of a
+% URI reference in the local macro |\@uri|, which we compose to the hyper-reference,
+% otherwise we give a warning.
+% \begin{macrocode}
+%<*package>
+\def\mod@termref#1#2#3{\def\@test{#3}
+\@ifundefined{#1@cd@file@base}
+ {\protect\G@refundefinedtrue
+ \@latex@warning{\protect\termref with unidentified cd "#1": the cd key must
+ reference an active module}
+ \def\@label{sref@#2 @target}}
+ {\def\@label{sref@#2@#1@target}}%
+\expandafter\ifx\csname #1@cd@file@base\endcsname\@empty% local reference
+\sref@hlink@ifh{\@label}{\ifx\@test\@empty #2\else #3\fi}\else%
+\def\@uri{\csname #1@cd@file@base\endcsname.pdf\#\@label}%
+\sref@href@ifh{\@uri}{\ifx\@test\@empty #2\else #3\fi}\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Dealing with Multiple Files}\label{sec:impl:multiple}
+%
+% Before we can come to the functionality we want to offer, we need some auxiliary
+% functions that deal with path names.
+%
+% \subsubsection{Simplifying Path Names}
+%
+% The |\mod@simplify| macro is used for simplifying
+% path names by removing \meta{xxx}|/..| from a string. eg:
+% \meta{aaa}|/|\meta{bbb}|/../|\meta{ddd} goes to \meta{aaa}|/|\meta{ddd} unless
+% \meta{bbb} is |..|. This is used to normalize relative path names below.
+%
+% \begin{macro}{\mod@simplify}
+% The macro |\mod@simplify| recursively runs over the path collecting the result in the
+% internal |\mod@savedprefix| macro.
+% \begin{macrocode}
+%<*package>
+\def\mod@simplify#1{\expandafter\mod@simpl#1/\relax}
+% \end{macrocode}
+% It is based on the |\mod@simpl| macro\ednote{what does the mod@blaaa do?}
+% \begin{macrocode}
+\def\mod@simpl#1/#2\relax{\def\@second{#2}%
+\ifx\mod@blaaaa\@empty\edef\mod@savedprefix{}\def\mod@blaaaa{aaa}\else\fi%
+\ifx\@second\@empty\edef\mod@savedprefix{\mod@savedprefix#1}%
+\else\mod@simplhelp#1/#2\relax\fi}
+% \end{macrocode}
+% which in turn is based on a helper macro
+% \begin{macrocode}
+\def\mod@updir{..}
+\def\mod@simplhelp#1/#2/#3\relax{\def\@first{#1}\def\@second{#2}\def\@third{#3}%
+%\message{mod@simplhelp: first=\@first, second=\@second, third=\@third, result=\mod@savedprefix.}
+\ifx\@third\@empty% base case
+\ifx\@second\mod@updir\else%
+
+\ifx\mod@second\@empty\edef\mod@savedprefix{\mod@savedprefix#1}%
+\else\edef\mod@savedprefix{\mod@savedprefix#1/#2}%
+\fi%
+\fi%
+\else%
+\ifx\@first\mod@updir%
+\edef\mod@savedprefix{\mod@savedprefix#1/}\mod@simplhelp#2/#3\relax%
+\else%
+\ifx\@second\mod@updir\mod@simpl#3\relax%
+\else\edef\mod@savedprefix{\mod@savedprefix#1/}\mod@simplhelp#2/#3\relax%
+\fi%
+\fi%
+\fi}%
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% We directly test the simplification: \makeatletter
+% \def\mod@simpl@test#1{\def\mod@savedprefix{}\mod@simplify{#1}\mod@savedprefix}
+% \begin{center}
+% \begin{tabular}{|l|l|l|}\hline
+% source & result & should be \\\hline\hline
+% ../../aaa & \mod@simpl@test{../../aaa} & ../../aaa\\\hline
+% aaa/bbb & \mod@simpl@test{aaa/bbb} & aaa/bbb\\\hline
+% aaa/.. & \mod@simpl@test{aaa/..} & \\\hline
+% ../../aaa/bbb & \mod@simpl@test{../../aaa/bbb} & ../../aaa/bbb\\\hline
+% ../aaa/../bbb & \mod@simpl@test{../aaa/../bbb} & ../bbb\\\hline
+% ../aaa/bbb & \mod@simpl@test{../aaa/bbb} & ../aaa/bbb\\\hline
+% aaa/bbb/../ddd & \mod@simpl@test{aaa/bbb/../ddd} & aaa/ddd\\\hline
+% \end{tabular}
+% \end{center}
+% \makeatother
+%
+% \begin{macro}{\defpath}
+% \begin{macrocode}
+%<*package>
+\newcommand{\defpath}[2]{\expandafter\newcommand\csname #1\endcsname[1]{#2/##1}}
+%</package>
+%<*ltxml>
+DefMacro('\defpath{}{}', sub {
+ my ($gullet,$arg1,$arg2)=@_;
+ $arg1 = ToString($arg1);
+ $arg2 = ToString($arg2);
+ my $paths = LookupValue('defpath')||{};
+ $$paths{"$arg1"}=$arg2;
+ AssignValue('defpath'=>$paths,'global');
+ DefMacro('\\'.$arg1.' Semiverbatim',$arg2."/#1");
+ });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Loading Module Signatures}
+%
+% We will need a switch\ednote{explain why?}
+% \begin{macrocode}
+%<*package>
+\newif\ifmodules
+% \end{macrocode}
+% and a ``registry'' macro whose expansion represents the list of added macros (or files)
+% \begin{macro}{\mod@reg}
+% We initialize the |\mod@reg| macro with the empty string.
+% \begin{macrocode}
+\gdef\mod@reg{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@update}
+% This macro provides special append functionality. It takes a string and appends it
+% to the expansion of the |\mod@reg| macro in the following way: |string@\mod@reg|.
+% \begin{macrocode}
+\def\mod@update#1{\ifx\mod@reg\@empty\xdef\mod@reg{#1}\else\xdef\mod@reg{#1@\mod@reg}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@check}
+% The |\mod@check| takes as input a file path (arg 3), and searches the registry. If the
+% file path is not in the registry it means it means it has not been already added, so
+% we make |\ifmodules| true, otherwise make |\ifmodules| false. The macro |\mod@search|
+% will look at |\ifmodules| and update the registry for |\modulestrue| or do nothing for
+% |\modulesfalse|.
+% \begin{macrocode}
+\def\mod@check#1@#2///#3\relax{%
+\def\mod@one{#1}\def\mod@two{#2}\def\mod@three{#3}%
+% \end{macrocode}
+% Define a few intermediate macros so that we can split the registry into separate file
+% paths and compare to the new one
+% \begin{macrocode}
+\expandafter%
+\ifx\mod@three\mod@one\modulestrue%
+\else%
+\ifx\mod@two\@empty\modulesfalse\else\mod@check#2///#3\relax\fi%
+\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@search}
+% Macro for updating the registry after the execution of |\mod@check|
+% \begin{macrocode}
+\def\mod@search#1{%
+% \end{macrocode}
+% We put the registry as the first argument for |\mod@check| and the other
+% argument is the new file path.
+% \begin{macrocode}
+\modulesfalse\expandafter\mod@check\mod@reg @///#1\relax%
+% \end{macrocode}
+% We run |\mod@check| with these arguments and the check |\ifmodules| for
+% the result
+% \begin{macrocode}
+\ifmodules\else\mod@update{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@reguse}
+% The macro operates almost as the |mod@search| function, but it does not update the
+% registry. Its purpose is to check whether some file is or not inside the registry but
+% without updating it. Will be used before deciding on a new sms file
+% \begin{macrocode}
+\def\mod@reguse#1{\modulesfalse\expandafter\mod@check\mod@reg @///#1\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@prefix}
+% This is a local macro for storing the path prefix, we initialize it as the empty
+% string.
+% \begin{macrocode}
+\def\mod@prefix{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@updatedpre}
+% This macro updates the path prefix |\mod@prefix| with the last word in the path given
+% in its argument.
+% \begin{macrocode}
+\def\mod@updatedpre#1{%
+\edef\mod@prefix{\mod@prefix\mod@pathprefix@check#1/\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@pathprefix@check}
+% |\mod@pathprefix@check| returns the last word in a string composed of words separated
+% by slashes
+% \begin{macrocode}
+\def\mod@pathprefix@check#1/#2\relax{%
+\ifx\\#2\\% no slash in string
+\else\mod@ReturnAfterFi{#1/\mod@pathprefix@help#2\relax}%
+\fi}
+% \end{macrocode}
+% It needs two helper macros:
+% \begin{macrocode}
+\def\mod@pathprefix@help#1/#2\relax{%
+\ifx\\#2\\% end of recursion
+\else\mod@ReturnAfterFi{#1/\mod@pathprefix@help#2\relax}%
+\fi}
+\long\def\mod@ReturnAfterFi#1\fi{\fi#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@pathpostfix@check}
+% |\mod@pathpostfix@check| takes a string composed of words separated by slashes and
+% returns the part of the string until the last slash
+% \begin{macrocode}
+\def\mod@pathpostfix@check#1/#2\relax{% slash
+\ifx\\#2\\%no slash in string
+#1\else\mod@ReturnAfterFi{\mod@pathpostfix@help#2\relax}%
+\fi}
+% \end{macrocode}
+% Helper function for the |\pathpostfix@check| macro defined above
+% \begin{macrocode}
+\def\mod@pathpostfix@help#1/#2\relax{%
+\ifx\\#2\\%
+#1\else\mod@ReturnAfterFi{\mod@pathpostfix@help#2\relax}%
+\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@updatedpost}
+% This macro updates |\mod@savedprefix| with leading path (all but the last word) in the path given
+% in its argument.
+% \begin{macrocode}
+\def\mod@updatedpost#1{%
+\edef\mod@savedprefix{\mod@savedprefix\mod@pathpostfix@check#1/\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mod@updatedsms}
+% Finally: A macro that will add a |.sms| extension to a path. Will be used when adding a |.sms| file
+% \begin{macrocode}
+\def\mod@updatesms{\edef\mod@savedprefix{\mod@savedprefix.sms}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Selective Inclusion}
+%
+% \begin{macro}{\requiremodules}
+% \begin{macrocode}
+%<*package>
+\newcommand\requiremodules[1]{%
+{\mod@showfalse% save state and ensure silence while reading sms
+\mod@updatedpre{#1}% add the new file to the already existing path
+\let\mod@savedprefix\mod@prefix% add the path to the new file to the prefix
+\mod@updatedpost{#1}%
+\def\mod@blaaaa{}% macro used in the simplify function (remove .. from the prefix)
+\mod@simplify{\mod@savedprefix}% remove |xxx/..| from the path (in case it exists)
+\mod@reguse{\mod@savedprefix}%
+\ifmodules\else%
+\mod@updatesms% update the file to contain the .sms extension
+\let\newreg\mod@reg% use to compare, in case the .sms file was loaded before
+\mod@search{\mod@savedprefix}% update registry
+\ifx\newreg\mod@reg\else\input{\mod@savedprefix}\fi% check if the registry was updated and load if necessary
+\fi}}
+%</package>
+%<*ltxml>
+DefPrimitive('\requiremodules{}', sub {
+ my($stomach,$module)=@_;
+ my $GULLET = $stomach->getGullet;
+ $module = Digest($module)->toString;
+ if(LookupValue('file_'.$module.'_loaded')) {}
+ else {
+ AssignValue('file_'.$module.'_loaded' => 1, 'global');
+ $stomach->bgroup;
+ AssignValue('last_module_path', $module);
+ $GULLET->unread(T_CS('\end@requiredmodule'));
+ AssignValue('excluding_modules' => 1);
+ $GULLET->input($module,['sms']);
+ }
+ return;});
+
+DefPrimitive('\end@requiredmodule{}',sub {
+ #close the group
+ $_[0]->egroup;
+ #print STDERR "END: ".ToString(Digest($_[1])->toString);
+ #Take care of any imported elements in this current module by activating it and all its dependencies
+ #print STDERR "Important: ".ToString(Digest($_[1])->toString)."\n";
+ use_module(ToString(Digest($_[1])->toString));
+ return; });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sinput}
+% \begin{macrocode}
+%<*package>
+\def\sinput#1{
+{\mod@updatedpre{#1}% add the new file to the already existing path
+\let\mod@savedprefix\mod@prefix% add the path to the new file to the prefix
+\mod@updatedpost{#1}%
+\def\mod@blaaaa{}% macro used in the simplify function (remove .. from the prefix)
+\mod@simplify{\mod@savedprefix}% remove |xxx/..| from the path (in case it exists)
+\mod@reguse{\mod@savedprefix}%
+\let\newreg\mod@reg% use to compare, in case the .sms file was loaded before
+\mod@search{\mod@savedprefix}% update registry
+\ifx\newreg\mod@reg%\message{This file has been previously introduced}
+\else\input{\mod@savedprefix}%
+\fi}}
+%</package>
+%<*ltxml>
+DefPrimitive('\sinput Semiverbatim', sub {
+ my($stomach,$module)=@_;
+ my $GULLET = $stomach->getGullet;
+ $module = Digest($module)->toString;
+ AssignValue('file_'.$module.'_loaded' => 1, 'global');
+ $stomach->bgroup;
+ AssignValue('last_module_path', $module);
+ $GULLET->unread(Invocation(T_CS('\end@requiredmodule'),Tokens(Explode($module)))->unlist);
+ $GULLET->input($module,['tex']);
+ return;});#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+% \ednote{the sinput macro is just faked, it should be more like requiremodules, except
+% that the tex file is inputted; I wonder if this can be simplified.}
+%
+% \begin{macrocode}
+%<*package>
+\let\sinputref=\sinput
+\let\inputref=\input
+%</package>
+%<*ltxml>
+DefConstructor('\sinputref{}',"<omdoc:oref href='#1.omdoc' class='expandable'/>");
+DefConstructor('\inputref{}',"<omdoc:oref href='#1.omdoc' class='expandable'/>");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsubsection{Generating {\texorpdfstring\omdoc{OMDoc}} Presentation Elements}\label{sec:impl:presentation}
+%
+% Additional bundle of code to generate presentation encodings. Redefined to an expandable
+% (macro) so that we can add conversions.
+%
+% \begin{macrocode}
+%<*ltxml>
+DefMacro('\@symdef@pres OptionalKeyVals:symdef {}[]{}', sub {
+ my($self,$keys, $cs,$nargs,$presentation)=@_;
+
+ my($name,$cd,$role)=$keys
+ && map($_ && $_->toString,map($keys->getValue($_), qw(name cd role)));
+ $cd = LookupValue('module_cd') unless $cd;
+ $name = $cs unless $name;
+ AssignValue('module_name'=>$name) if $name;
+ $nargs = 0 unless ($nargs);
+ my $nargkey = ToString($name).'_args';
+ AssignValue($nargkey=>ToString($nargs)) if $nargs;
+ $name=ToString($name);
+
+ Invocation(T_CS('\@symdef@pres@aux'),
+ $cs,
+ ($nargs || Tokens(T_OTHER(0))),
+ symdef_presentation_pmml($cs,ToString($nargs)||0,$presentation),
+ (Tokens(Explode($name))),
+ (Tokens(Explode($cd))),
+ $keys)->unlist; });#$
+% \end{macrocode}
+% Generate the expansion of a symdef's macro using special arguments.
+%
+% Note that the |symdef_presentation_pmml| subroutine is responsible for preserving the
+% rendering structure of the original definition. Hence, we keep a
+% collection of all known formatters in the |@PresFormatters| array,
+% which should be updated whenever the list of allowed formatters has
+% been altered.
+%
+% \begin{macrocode}
+sub symdef_presentation_pmml {
+ my($cs,$nargs,$presentation)=@_;
+ my @toks = $presentation->unlist;
+ while(@toks && $toks[0]->equals(T_SPACE)){ shift(@toks); } # Remove leading space
+ $presentation = Tokens(@toks);
+ # Wrap with \@use, unless already has a recognized formatter.
+ my $formatters = join("|",@PresFormatters);
+ $formatters = qr/$formatters/;
+ $presentation = Invocation(T_CS('\@use'),$presentation)
+ unless (@toks && ($toks[0]->toString =~ /^\\($formatters)$/));
+ # Low level substitution.
+ my @args =
+ map(Invocation(T_CS('\@SYMBOL'),T_OTHER("arg:".($_))),1..$nargs);
+ $presentation = Tokens(LaTeXML::Expandable::substituteTokens($presentation,@args));
+ $presentation; }#$
+% \end{macrocode}
+% The |\@use| macro just generates the contents of the notation element
+% \begin{macrocode}
+sub getSymmdefProperties {
+ my $cd = LookupValue('module_cd');
+ my $name = LookupValue('module_name');
+ my $nargkey = ToString($name).'_args';
+ my $nargs = LookupValue($nargkey);
+ $nargs = 0 unless ($nargs);
+ my %props = ('cd'=>$cd,'name'=>$name,'nargs'=>$nargs);
+ return %props;}
+DefConstructor('\@use{}', sub{
+ my ($document,$args,%properties) = @_;
+ #Notation created at \@symdef@pres@aux
+ #Create the rendering:
+ $document->openElement('omdoc:rendering');
+ $document->openElement('ltx:Math');
+ $document->openElement('ltx:XMath');
+ if ($args->isMath) {$document->absorb($args);}
+ else { $document->insertElement('ltx:XMText',$args);}
+ $document->closeElement('ltx:XMath');
+ $document->closeElement('ltx:Math');
+ $document->closeElement('omdoc:rendering');
+},
+properties=>sub { getSymmdefProperties($_[1]);},
+ mode=>'inline_math');
+% \end{macrocode}
+% The |get_cd| procedure reads of the cd from our list of keys.
+% \begin{macrocode}
+sub get_cd {
+ my($name,$cd,$role)=@_;
+ return $cd;}
+% \end{macrocode}
+% The |\@symdef@pres@aux| creates the |symbol| element and the outer layer of the of the
+% |notation| element. The content of the latter is generated by applying the {\latexml} to
+% the definiens of the |\symdef| form.
+% \begin{macrocode}
+DefConstructor('\@symdef@pres@aux{}{}{}{}{} OptionalKeyVals:symdef', sub {
+ my ($document,$cs,$nargs,$pmml,$name,$cd,$keys)=@_;
+ my $assocarg = ToString($keys->getValue('assocarg')) if $keys;
+ $assocarg = $assocarg||"0";
+ my $bvars = ToString($keys->getValue('bvars')) if $keys;
+ $bvars = $bvars||"0";
+ my $bvar = ToString($keys->getValue('bvar')) if $keys;
+ $bvar = $bvar||"0";
+ my $appElement = 'om:OMA'; $appElement = 'om:OMBIND' if ($bvars || $bvar);
+ my $root = $document->getDocument->documentElement;
+ my $name_str = ToString($name);
+ my ($notation) = $root->findnodes(".//omdoc:notation[\@name='$name_str' and ".
+ "preceding-sibling::omdoc:symbol[1]/\@name
+ = '$name_str']");
+ if (!$notation) {
+ $document->insertElement("omdoc:symbol",undef,(name=>$name,"xml:id"=>$name_str.".sym"));
+ }
+ $document->openElement("omdoc:notation",(name=>$name,cd=>$cd));
+ #First, generate prototype:
+ $nargs = ToString($nargs)||0;
+ $document->openElement('omdoc:prototype');
+ $document->openElement($appElement) if $nargs;
+ my $cr="fun" if $nargs;
+ $document->insertElement('om:OMS',undef,
+ (cd=>$cd,
+ name=>$name,
+ "cr"=>$cr));
+ if ($bvar || $bvars) {
+ $document->openElement('om:OMBVAR');
+ if ($bvar) {
+ $document->insertElement('omdoc:expr',undef,(name=>"arg$bvar"));
+ } else {
+ $document->openElement('omdoc:exprlist',(name=>"args"));
+ $document->insertElement('omdoc:expr',undef,(name=>"arg"));
+ $document->closeElement('omdoc:exprlist');
+ }
+ $document->closeElement('om:OMBVAR');
+ }
+ for my $id(1..$nargs) {
+ next if ($id==$bvars || $id==$bvar);
+ if ($id!=$assocarg) {
+ my $argname="arg$id";
+ $document->insertElement('omdoc:expr',undef,(name=>"$argname"));
+ }
+ else {
+ $document->openElement('omdoc:exprlist',(name=>"args"));
+ $document->insertElement('omdoc:expr',undef,(name=>"arg"));
+ $document->closeElement('omdoc:exprlist');
+ }
+ }
+ $document->closeElement($appElement) if $nargs;
+ $document->closeElement('omdoc:prototype');
+ #Next, absorb rendering:
+ $document->absorb($pmml);
+ $document->closeElement("omdoc:notation");
+ }, afterDigest=>sub { my ($stomach, $whatsit) = @_;
+ my $keys = $whatsit->getArg(6);
+ my $module = LookupValue('current_module');
+ $whatsit->setProperties(for=>ToString($whatsit->getArg(1)));
+ $whatsit->setProperty(role=>($keys ? $keys->getValue('role')
+ : (ToString($whatsit->getArg(2)) ? 'applied'
+ : undef))); });
+% \end{macrocode}
+% Convert a macro body (tokens with parameters |#1|,..) into a Presentation |style=TeX| form.
+% walk through the tokens, breaking into chunks of neutralized (|T_OTHER|) tokens and
+% parameter specs.
+% \begin{macrocode}
+sub symdef_presentation_TeX {
+ my($presentation)=@_;
+ my @tokens = $presentation->unlist;
+ my(@frag,@frags) = ();
+ while(my $tok = shift(@tokens)){
+ if($tok->equals(T_PARAM)){
+ push(@frags,Invocation(T_CS('\@symdef@pres@text'),Tokens(@frag))) if @frag;
+ @frag=();
+ my $n = shift(@tokens)->getString;
+ push(@frags,Invocation(T_CS('\@symdef@pres@arg'),T_OTHER($n+1))); }
+ else {
+ push(@frag,T_OTHER($tok->getString)); }} # IMPORTANT! Neutralize the tokens!
+ push(@frags,Invocation(T_CS('\@symdef@pres@text'),Tokens(@frag))) if @frag;
+ Tokens(map($_->unlist,@frags)); }
+DefConstructor('\@symdef@pres@arg{}', "<omdoc:recurse select='#select'/>",
+ afterDigest=>sub { my ($stomach, $whatsit) = @_;
+ my $select = $whatsit->getArg(1);
+ $select = ref $select ? $select->toString : '';
+ $whatsit->setProperty(select=>"*[".$select."]"); });
+DefConstructor('\@symdef@pres@text{}', "<omdoc:text>#1</omdoc:text>");
+%</ltxml>#$
+% \end{macrocode}
+%
+%
+% \subsection{Including Externally Defined Semantic Macros }\label{sec:impl:packages}
+%
+% \begin{macro}{\requirepackage}
+% \begin{macrocode}
+%<*package>
+\def\requirepackage#1#2{\makeatletter\input{#1.sty}\makeatother}
+%</package>
+%<*ltxml>
+DefConstructor('\requirepackage{} Semiverbatim',"<omdoc:imports from='#2'/>",
+ afterDigest=>sub { my ($stomach, $whatsit) = @_;
+ my $select = $whatsit->getArg(1);
+ RequirePackage($select->toString); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Views}\label{sec:impl:views}
+%
+% We first prepare the ground by defining the keys for the |view| environment.
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{view}
+\addmetakey*{view}{title}
+\define@key{view}{load}{\requiremodules{#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\view@heading}
+% Then we make a convenience macro for the view heading. This can be customized.
+% \begin{macrocode}
+\newcounter{view}[section]
+\newcommand\view@heading[2]{\stepcounter{view}%
+{\textbf{View} \thesection.\theview: from #1 to #2}%
+\sref@label@id{View \thesection.\theview}%
+\ifx\view@title\@empty :\quad\else\quad(\view@title)\hfill\\\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{view}
+% The |view| environment only has an effect if the |showmods| option is set.
+% \begin{macrocode}
+\ifmod@show\newsavebox{\viewbox}
+\newenvironment{view}[3][]{\metasetkeys{view}{#1}\sref@target\stepcounter{view}
+\begin{lrbox}{\viewbox}\begin{minipage}{.9\textwidth}
+\importmodule{#1}\importmodule{#2}\gdef\view@@heading{\view@heading{#2}{#3}}}
+{\end{minipage}\end{lrbox}
+\setbox0=\hbox{\begin{minipage}{.9\textwidth}%
+\noindent\view@@heading\rm%
+\end{minipage}}
+\smallskip\noindent\fbox{\vbox{\box0\vspace*{.2em}\usebox\viewbox}}\smallskip}
+\else\newxcomment[]{view}\fi%ifmod@show
+%</package>
+%<*ltxml>
+DefKeyVal('view','id','Semiverbatim');
+DefEnvironment('{view} OptionalKeyVals:view {}{}',
+ "<omdoc:theory-inclusion from='#2' to='#3'>"
+ . "<omdoc:morphism>#body</omdoc:morphism>"
+ ."</omdoc:theory-inclusion>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Deprecated Functionality}\label{sec:impl:deprecated}
+%
+% In this section we centralize old interfaces that are only partially supported any more.
+% \begin{macro}{module:uses}
+% For each the module name |xxx| specified in the |uses| key, we activate their symdefs
+% and we export the local symdefs.\ednote{this issue is deprecated, it will be removed
+% before 1.0.}
+% \begin{macrocode}
+%<*package>
+\define@key{module}{uses}{%
+\@for\module@tmp:=#1\do{\activate@defs\module@tmp\export@defs\module@tmp}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{module:usesqualified}
+% This option operates similarly to the module:uses option defined above. The only
+% difference is that here we import modules with a prefix. This is useful when two
+% modules provide a macro with the same name.
+% \begin{macrocode}
+%<*package>
+\define@key{module}{usesqualified}{%
+\@for\module@tmp:=#1\do{\activate@defs{qualified@\module@tmp}\export@defs\module@tmp}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Providing IDs for {\omdoc} Elements}\label{sec:impl:ids}
+%
+% To provide default identifiers, we tag all {\omdoc} elements that allow |xml:id|
+% attributes by executing the |numberIt| procedure below.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:recurse',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:imports',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:theory',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Experiments}
+% In this section we develop experimental functionality. Currently support for complex
+% expressions, see
+% \url{https://svn.kwarc.info/repos/stex/doc/blue/comlex_semmacros/note.pdf} for details.
+%
+% \begin{macro}{\csymdef}
+% For the {\LaTeX} we use |\symdef| and forget the last argument. The code here is just
+% needed for parsing the (non-standard) argument structure.
+% \begin{macrocode}
+%<*package>
+\def\csymdef{\@ifnextchar[{\@csymdef}{\@csymdef[]}}
+\def\@csymdef[#1]#2{\@ifnextchar[{\@@csymdef[#1]{#2}}{\@@csymdef[#1]{#2}[0]}}
+\def\@@csymdef[#1]#2[#3]#4#5{\@@symdef[#1]{#2}[#3]{#4}}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notationdef}
+% For the {\LaTeX} side, we just make |\notationdef| invisible.
+% \begin{macrocode}
+%<*package>
+\def\notationdef[#1]#2#3{}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+%
+% \Finale
+\endinput
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% LocalWords: GPL structuresharing STR dtx env envfalse idfalse displayfalse
+% LocalWords: usesfalse usesqualified usesqualifiedfalse envtrue idtrue CPERL
+% LocalWords: usestrue displaytrue usesqualifiedtrue RequirePackage keyval tmp
+% LocalWords: defs foreach LookupValue activateScope DefEnvironment keyvals cd
+% LocalWords: OptionalKeyVals getValue toString AssignValue openElement omdoc
+% LocalWords: closeElement beforeDigest useTheoryItemizations afterDigestBegin
+% LocalWords: whatsit setProperty getArg qw symdef iffalse importOMDocmodule
+% LocalWords: DefKeyVal Semiverbatim symdeflocal atqualified DefMacro STDERR
+% LocalWords: args unlist DefPrimitive nargs Stringify eq attr omcd ltx XMTok
+% LocalWords: DefConstructorI convertLaTeXArgs scriptpos XMApp OMA XMArg simpl
+% LocalWords: DefMacroI blaaaa savedprefix aaa simplhelp tust tist tost reguse
+% LocalWords: updatedpre ReturnAfterFi updateall updatedpost updatesms bgroup
+% LocalWords: texclude tinclude getGullet requiredmodule tex sms egroup pmml
+% LocalWords: toks mixfixi mixfixa mixfixii mixfixia mixfixai mixfixiii arg cr
+% LocalWords: DefConstructor afterDigest setProperties undef tok PARAM thyid
+% LocalWords: getString showfalse showtrue xcomment stex srcref KeyVal omext
+% LocalWords: beginItemize getProperty introdcue afterOpen numberIt Tokenize
+% LocalWords: OptionalSemiverbatim omdocmod PushValue assocarg getStomach prs
+% LocalWords: begingroup beginMode endMode endgroup insertElement resymdef sym
+% LocalWords: updir nargkey PresFormatters mixfixaii formatters argname expr
+% LocalWords: getSymmdefProperties XMath mcdcr exprlist recurse texttt scsys
+% LocalWords: textbackslash newcommand providecommand sc sc mathml openmath nx
+% LocalWords: latexml cmathml activemath twintoo atwin atwintoo mathcal Deyan
+% LocalWords: mathcal fileversion Ginev maketitle newpage infty ulsmf08 exfig
+% LocalWords: omsemmac lstset basicstyle scriptsize aboveskip belowskip hline
+% LocalWords: morekeywords lstlisting csymbol showviews showviews foo exf cseq
+% LocalWords: qualifiedimports qualifiedimports termdef textbf filepath RabKoh
+% LocalWords: symname varSmoothfunctionsOn ednote abbrdef Sumfromto semmodule
+% LocalWords: vspace hrule vspace arith arbitraryn xbool oplus xdisjunction tw
+% LocalWords: emph captitalize ldots termref termref symref symref ctancite nc
+% LocalWords: smms hyperref RahObe hmlmh10 widehat texmf.cnf requiremodules cs
+% LocalWords: sinput sinputref sinputref defpath defpath defpath cname csname
+% LocalWords: OPhats usepackage importqualified Crossreferencing jobname ltxml
+% LocalWords: jobname printbibliography textsf langle textsf langle textlangle
+% LocalWords: textrangle textlangle newif ifmod qualifiedfalse qualifiedtrue
+% LocalWords: sref xspace expandafter noexpand endcsname namedef setkeys ifx
+% LocalWords: newenvironment parentmod usemodule ifundefined coolurion cooluri
+% LocalWords: coolurioff cwd ouri ifdefinable testopt ifnextchar xargdef bvars
+% LocalWords: argdef yargdef somefunction symdeflocaltrue bvar xpath assoc qr
+% LocalWords: symdeflocalfalse localpres isbound symdefs COMPLEXTOKEN localp
+% LocalWords: findnodes localname carg renewcommand bbb showmeta showmeta exp
+% LocalWords: refundefinedtrue subsubsection blaaa makeatletter makeatother rm
+% LocalWords: ifmodules gdef xdef xdef modulestrue modulesfalse pathpostfix
+% LocalWords: updatedsms newreg xref texorpdfstring srefaddidkey newsavebox
+% LocalWords: viewbox newcounter thesection theview theproblem hfill lrbox
+% LocalWords: stepcounter textwidth hbox noindent smallskip fbox vbox usebox
+% LocalWords: smallskip newxcomment vassign ensuremath mapsto doctex tocdepth
+% LocalWords: setcounter tableofcontents mathbb symvariant importmodulevia
+% LocalWords: importmodulevia compactdesc tassign tassign tname source-tname
+% LocalWords: ttassign metakeys addmetakey themodule metasetkeys aftergroup
+% LocalWords: groupling requation IMPORTCD CURRENTCD bindargs defmathop cnode
+% LocalWords: icvariant aftercounter prestok inputref oref loadfrom loadto
+% LocalWords: csymdef notationdef
diff --git a/Master/texmf-dist/source/latex/stex/modules/modules.ins b/Master/texmf-dist/source/latex/stex/modules/modules.ins
new file mode 100644
index 00000000000..52aa57ce4b2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/modules/modules.ins
@@ -0,0 +1,38 @@
+ %%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex modules.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{modules.sty}{\from{modules.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{modules.sty.ltxml}{\from{modules.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/omdoc/omdoc.dtx b/Master/texmf-dist/source/latex/stex/omdoc/omdoc.dtx
new file mode 100644
index 00000000000..cc6166803db
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/omdoc/omdoc.dtx
@@ -0,0 +1,751 @@
+% \iffalse meta-comment
+% A LaTeX Class and Package for OMDoc Document Structures
+% Copyright (c) 2009 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omdoc/omdoc.dtx $
+% \fi
+%
+% \iffalse
+%<package|cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{omdoc}[2012/01/28 v1.0 OMDoc document Structure]
+%<cls>\ProvidesClass{omdoc}[2012/01/28 v1.0 OMDoc Documents]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,omdoc,omtext,float}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: omdoc.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omdoc/omdoc.dtx $
+\usepackage{stex-logo}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{omdoc.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{364}
+%
+% \changes{v0.1}{2006/1/17}{First Version}
+% \changes{v0.2}{2006/7/11}{added OMDoc class}
+% \changes{v0.3}{2007/09/09}{moved omtext and friends here from the statements package}
+% \changes{v0.4}{2008/09/06}{added quotes}
+% \changes{v0.5}{2008/03/28}{more package/class options}
+% \changes{v0.7}{2009/11/24}{giving keyval arguments to the document environment}
+% \changes{v1.0}{2010/05/25}{separated out \texttt{omtext.dtx}}
+%
+%
+% \GetFileInfo{omdoc.sty}
+%
+% \MakeShortVerb{\|}
+%
+% \def\omdoc{OMDoc}
+% \def\latexml{{\LaTeX}ML}
+% \title{{\texttt{omdoc.sty/cls}}: Semantic Markup for Open Mathematical Documents in {\LaTeX}\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |omdoc| package is part of the {\sTeX} collection, a version of {\TeX/\LaTeX} that
+% allows to markup {\TeX/\LaTeX} documents semantically without leaving the document
+% format, essentially turning {\TeX/\LaTeX} into a document format for mathematical
+% knowledge management (MKM).
+%
+% This package supplies an infrastructure for writing {\omdoc} documents in {\LaTeX}.
+% This includes a simple structure sharing mechanism for {\sTeX} that allows to to move
+% from a copy-and-paste document development model to a copy-and-reference model, which
+% conserves space and simplifies document management. The augmented structure can be
+% used by MKM systems for added-value services, either directly from the {\sTeX}
+% sources, or after translation.
+% \end{abstract}
+%
+%\newpage\tableofcontents\newpage
+%
+%\begin{omgroup}[id=sec:STR]{Introduction}
+%
+% The |omdoc| package supplies macros and environment that allow to label document
+% fragments and to reference them later in the same document or in other documents. In
+% essence, this enhances the document-as-trees model to
+% documents-as-directed-acyclic-graphs (DAG) model. This structure can be used by MKM
+% systems for added-value services, either directly from the {\sTeX} sources, or after
+% translation. Currently, trans-document referencing provided by this package can only
+% be used in the {\sTeX} collection.
+%
+% {\sTeX} is a version of {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX} documents
+% semantically without leaving the document format, essentially turning {\TeX/\LaTeX}
+% into a document format for mathematical knowledge management (MKM). The package
+% supports direct translation to the {\omdoc} format~\cite{Kohlhase:omdoc1.2}
+%
+% DAG models of documents allow to replace the ``Copy and Paste'' in the source document
+% with a label-and-reference model where document are shared in the document source and
+% the formatter does the copying during document formatting/presentation.\ednote{talk
+% about the advantages and give an example.}\ednote{is there a way to load documents at
+% URIs in LaTeX?}\ednote{integrate with latexml's XMRef in the Math mode.}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user]{The User Interface}\
+%
+% The |omdoc| package generates four files: |omdoc.cls|, |omdoc.sty| and their {\latexml}
+% bindings |omdoc.cls.ltxml| and |omdoc.sty.ltxml|. We keep the corresponding code
+% fragments together, since the documentation applies to both of them and to prevent them
+% from getting out of sync. The {\omdoc} class is a minimally changed variant of the
+% standard |article| class that includes the functionality provided by |omdoc.sty|. Most
+% importantly, |omdoc.cls| sets up the {\latexml} infrastructure and thus should be used
+% if {\omdoc} is to be generated from the {\sTeX} sources. The rest of the documentation
+% pertains to the functionality introduced by |omdoc.sty|.
+%
+% \begin{omgroup}[id=sec:user:options]{Package and Class Options}
+%
+% |omdoc.sty| has the \DescribeMacro{noindex}|noindex| package option, which allows to
+% suppress the creation of index entries. The \DescribeMacro{extrefs} option can be set
+% to activate multifile support, see~\ctancite{Kohlhase:sref} for details.
+%
+% |omdoc.cls| accepts all options of the |omdoc.sty| (see~\sref{sec:user:options}) and
+% |article.cls| and just passes them on to these. \ednote{describe them}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:struct]{Document Structure}
+%
+% The top-level \DescribeEnv{document}|document| environment is augmented with an
+% optional key/value argument that can be used to give metadata about the document. For
+% the moment only the \DescribeMacro{id}|id| key is used to give an identifier to the
+% \texttt{omdoc} element resulting from the {\latexml} transformation.
+%
+% \DescribeEnv{omgroup} The structure of the document is given by the |omgroup|
+% environment just like in {\omdoc}. In the {\LaTeX} route, the |omgroup| environment is
+% flexibly mapped to sectioning commands, inducing the proper sectioning level from the
+% nesting of |omgroup| environments. Correspondingly, the |omgroup| environment takes an
+% optional key/value argument for metadata followed by a regular argument for the
+% (section) title of the omgroup. The optional metadata argument has the keys
+% \DescribeMacro{id}|id| for an identifier, \DescribeMacro{creators}|creators| and
+% \DescribeMacro{contributors}|contributors| for the Dublin Core
+% metadata~\cite{DCMI:dmt03}; see~\ctancite{Kohlhase:dcm} for details of the format. The
+% \DescribeMacro{short}|short| allows to give a short title for the generated section.
+%
+% The \DescribeMacro{currentsectionlevel}|\currentsectionlevel| macro supplies the name
+% of the current sectioning level, e.g. ``chapter'', or
+% ``subsection''. \DescribeMacro{CurrentSectionLevel}|\CurrentSectionLevel| is the
+% capitalized variant. They are useful to write something like ``In this
+% |\currentsectionlevel|, we will\ldots'' in an |omgroup| environment, where we do not
+% know which sectioning level we will end up.
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:ignore]{Ignoring Inputs}
+%
+% The \DescribeEnv{ignore}|ignore| environment can be used for hiding text parts from the
+% document structure. The body of the environment is not PDF or DVI output unless the
+% \DescribeMacro{showignores}|showignores| option is given to the |omdoc| class or
+% |package|. But in the generated {\omdoc} result, the body is marked up with a |ignore|
+% element. This is useful in two situations. For
+% \begin{description}
+% \item[editing] One may want to hide unfinished or obsolete parts of a document
+% \item[narrative/content markup] In {\stex} we mark up narrative-structured documents. In
+% the generated {\omdoc} documents we want to be able to cache content objects that are
+% not directly visible. For instance in the |statements|
+% package~\ctancite{Kohlhase:smms} we use the |\inlinedef| macro to mark up phrase-level
+% definitions, which verbalize more formal definitions. The latter can be hidden by an
+% ignore and referenced by the |verbalizes| key in |\inlinedef|.
+% \end{description}
+%
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:sharing]{Structure Sharing}
+%
+% The \DescribeMacro{\STRlabel}|\STRlabel| macro takes two arguments: a label and the
+% content and stores the the content for later use by
+% \DescribeMacro{\STRcopy}|\STRcopy{label}|, which expands to the previously stored
+% content.
+%
+% \DescribeMacro{\STRsemantics} The |\STRlabel| macro has a variant |\STRsemantics|, where
+% the label argument is optional, and which takes a third argument, which is ignored in
+% {\LaTeX}. This allows to specify the meaning of the content (whatever that may mean) in
+% cases, where the source document is not formatted for presentation, but is transformed
+% into some content markup format. \ednote{make an example}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:colors]{Colors}
+%
+% For convenience, the |omdoc| package defines a couple of color macros for the |color|
+% package: For instance \DescribeMacro{\blue}|\blue| abbreviates |\textcolor{blue}|, so
+% that |\blue{|\meta{something}|}| writes \meta{something} in blue. The macros
+% \DescribeMacro{\red}|\red| \DescribeMacro{...}|\green|, |\cyan|, |\magenta|, |\brown|,
+% |\yellow|, |\orange|, |\gray|, and finally \DescribeMacro{\black}|\black| are
+% analogous.
+% \end{omgroup}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:misc]{Miscellaneous}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:limitations]{Limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+% \end{omgroup}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}\newpage
+%
+% \begin{omgroup}[id=sec:impl:cls]{Implementation: The OMDoc Class}
+%
+% The functionality is spread over the |omdoc| class and package. The class provides the
+% |document| environment and the |omdoc| element corresponds to it, whereas the
+% package provides the concrete functionality.
+%
+% |omdoc.dtx| generates four files: |omdoc.cls| (all the code between
+% {\textsf{$\langle$*cls$\rangle$}} and {\textsf{$\langle$/cls$\rangle$}}), |omdoc.sty|
+% (between {\textsf{$\langle$*package$\rangle$}} and
+% {\textsf{$\langle$/package$\rangle$}}) and their {\latexml} bindings (between
+% {\textsf{$\langle$*ltxml.cls$\rangle$}} and {\textsf{$\langle$/ltxml.cls$\rangle$}} and
+% {\textsf{$\langle$*ltxml.sty$\rangle$}} and {\textsf{$\langle$/ltxml.sty$\rangle$
+% respetively}}). We keep the corresponding code fragments together, since the
+% documentation applies to both of them and to prevent them from getting out of sync.
+%
+% \begin{omgroup}[id=sec:impl:cls:options]{Class Options}
+% To initialize the |omdoc| class, we declare and process the necessary options.
+%
+% \begin{macrocode}
+%<*cls>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\def\omdoc@class{article}
+\DeclareOption{report}{\def\omdoc@class{report}\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\DeclareOption{book}{\def\omdoc@class{book}\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\DeclareOption{chapter}{\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\DeclareOption{part}{\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\DeclareOption{showignores}{\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions
+%</cls>
+%<*ltxml.cls>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+use LaTeXML::Util::Pathname;
+use Cwd qw(cwd abs_path);
+DeclareOption('report',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('book',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('chapter',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('part',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('showignores',sub {PassOptions('omdoc','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption('extrefs',sub {PassOptions('sref','sty',ToString(Digest(T_CS('\CurrentOption')))); });
+DeclareOption(undef,sub {PassOptions('article','cls',ToString(Digest(T_CS('\CurrentOption')))); });
+ProcessOptions();
+%</ltxml.cls>
+% \end{macrocode}
+%
+% We load |article.cls|, and the desired packages. For the {\latexml} bindings, we make
+% sure the right packages are loaded.
+%
+% \begin{macrocode}
+%<*cls>
+\LoadClass{\omdoc@class}
+\RequirePackage{omdoc}
+%</cls>
+%<*ltxml.cls>
+LoadClass('article');
+RequirePackage('sref');
+%</ltxml.cls>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:cls:namespaces]{Setting up Namespaces and Schemata for LaTeXML}
+%
+% Now, we also need to register the namespace prefixes for {\latexml} to use.
+% \begin{macrocode}
+%<*ltxml.cls>
+RegisterNamespace('omdoc'=>"http://omdoc.org/ns");
+RegisterNamespace('om'=>"http://www.openmath.org/OpenMath");
+RegisterNamespace('m'=>"http://www.w3.org/1998/Math/MathML");
+RegisterNamespace('dc'=>"http://purl.org/dc/elements/1.1/");
+RegisterNamespace('cc'=>"http://creativecommons.org/ns");
+RegisterNamespace('stex'=>"http://kwarc.info/ns/sTeX");
+RegisterNamespace('ltx'=>"http://dlmf.nist.gov/LaTeXML");
+%</ltxml.cls>
+% \end{macrocode}
+% Since we are dealing with a class, we need to set up the document type in the {\latexml}
+% bindings.
+% \begin{macrocode}
+%<*ltxml.cls>
+RelaxNGSchema('omdoc+ltxml',
+ '#default'=>"http://omdoc.org/ns",
+ 'om'=>"http://www.openmath.org/OpenMath",
+ 'm'=>"http://www.w3.org/1998/Math/MathML",
+ 'dc'=>"http://purl.org/dc/elements/1.1/",
+ 'cc'=>"http://creativecommons.org/ns",
+ 'stex'=>"http://kwarc.info/ns/sTeX",
+ 'ltx'=>"http://dlmf.nist.gov/LaTeXML");
+%</ltxml.cls>
+% \end{macrocode}
+% Then we load the |omdoc| package, which we define separately in the next section so that
+% it can be loaded separately\ednote{reword}
+% \begin{macrocode}
+%<*ltxml.cls>
+RequirePackage('omdoc');
+%</ltxml.cls>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:cls:document]{Beefing up the \texttt{document} environment}
+%
+% Now, we will define the environments we need. The top-level one is the |document|
+% environment, which we redefined so that we can provide keyval arguments.
+%
+% \begin{environment}{document}
+% For the moment we do not use them on the {\LaTeX} level, but the document identifier
+% is picked up by {\latexml}.
+% \begin{macrocode}
+%<*cls>
+\let\orig@document=\document
+\srefaddidkey{document}
+\renewcommand{\document}[1][]{\metasetkeys{document}{#1}\orig@document}
+%</cls>
+%<*ltxml.cls>
+sub xmlBase {
+ my $baseuri = LookupValue('baseuri');
+ my $baselocal = LookupValue('baselocal');
+ my $cdir = abs_path(cwd());
+ $cdir =~ s/^$baselocal// if $baselocal;
+ #DG: Make this more robust!
+ my ($d,$f,$t);
+ my $srcf = LookupValue('SOURCEFILE');
+ if ( $srcf =~ /^(\w+):\/\//) {
+ $srcf =~ s/^(\w+):\///;
+ } # TODO: Hacky, do something better
+ ($d, $f,$t) = pathname_split(LookupValue('SOURCEFILE'));
+ $t = '' if LookupValue('cooluri');
+ Tokenize($baseuri.$cdir.'/'.$f.$t); }
+DefEnvironment('{document} OptionalKeyVals:omdoc',
+ "<omdoc:omdoc "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')"
+ . "(?&Tokenize(&LookupValue('SOURCEBASE'))"
+ . "(xml:id='&Tokenize(&LookupValue('SOURCEBASE')).omdoc')()) "
+ . "?&Tokenize(&LookupValue('baseuri'))"
+ . "(xml:base='&xmlBase()')()>"
+ . "#body"
+ ."</omdoc:omdoc>",
+ beforeDigest=> sub { AssignValue(inPreamble=>0); },
+ afterDigest=> sub { $_[0]->getGullet->flush; return; });#$
+%</ltxml.cls>
+% \end{macrocode}
+% \end{environment}
+% \end{omgroup}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:sty]{Implementation: OMDoc Package}
+%
+% \begin{omgroup}[id=sec:impl:options]{Package Options}
+%
+% The initial setup for {\latexml}:
+%
+% \begin{macrocode}
+%<*ltxml.sty>
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+use Cwd qw(cwd abs_path);
+%</ltxml.sty>
+% \end{macrocode}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{need an implementation for {\latexml}}
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\if@chapter\@chapterfalse
+\newif\if@part\@partfalse
+\newcount\section@level\section@level=3
+\newif\ifshow@ignores\show@ignoresfalse
+\def\omdoc@class{article}
+\DeclareOption{report}{\def\omdoc@class{report}\section@level=2}
+\DeclareOption{book}{\def\omdoc@class{book}\section@level=1}
+\DeclareOption{chapter}{\section@level=2\@chaptertrue}
+\DeclareOption{part}{\section@level=1\@chaptertrue\@parttrue}
+\DeclareOption{showignores}{\show@ignorestrue}
+\DeclareOption{extrefs}{\PassOptionsToPackage{\CurrentOption}{sref}}
+\ProcessOptions
+%</package>
+%<*ltxml.sty>
+DeclareOption('report','');
+DeclareOption('book','');
+DeclareOption('chapter','');
+DeclareOption('part','');
+DeclareOption('showignores','');
+DeclareOption('extrefs','');
+%</ltxml.sty>
+% \end{macrocode}
+%
+% Then we need to set up the packages by requiring the |sref| package to be loaded.
+%
+% \begin{macrocode}
+%<*package>
+\RequirePackage{sref}
+\RequirePackage{xspace}
+\RequirePackage{comment}
+%</package>
+%<*ltxml.sty>
+RequirePackage('sref');
+RequirePackage('xspace');
+RequirePackage('omtext');
+%</ltxml.sty>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:struct]{Document Structure}
+%
+% The structure of the document is given by the |omgroup| environment just like in
+% OMDoc. The hierarchy is adjusted automatically\ednote{maybe define the toplevel
+% according to a param, need to know how to detect that the chapter macro exists.}
+% \begin{macro}{\currentsectionlevel}
+% \begin{macrocode}
+%<*package>
+\def\level@section#1{\ifcase#1\or{part}\or{chapter}\or{section}\or{subsection}\or{subsubsection}\or{paragraph}\or{subparagraph}\fi}
+\def\Level@Section#1{\ifcase#1\or{Part}\or{Chapter}\or{Section}\or{Subsection}\or{Subsubsection}\or{Paragraph}\or{Subparagraph}\fi}
+\def\in@level@section#1{\ifcase#1\or{this document}\or{part}\or{chapter}\or{section}\or{subsection}\or{subsubsection}\or{paragraph}\or{subparagraph}\fi}
+\def\In@Level@Section#1{\ifcase#1\or{This document}\or{Part}\or{Chapter}\or{Section}\or{Subsection}\or{Subsubsection}\or{Paragraph}\or{Subparagraph}\fi}
+\def\currentsectionlevel{\in@level@section\section@level\xspace}
+\def\CurrentSectionLevel{\In@Level@Section\section@level\xspace}
+%</package>
+%<*ltxml.sty>
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{omgroup}
+% The \DescribeMacro{\at@begin@omgroup}|\at@begin@omgroup| macro allows
+% customization. It is run at the beginning of the |omgroup|, i.e. after the section
+% heading.
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{omgroup}
+\addmetakey{omgroup}{creators}
+\addmetakey{omgroup}{date}
+\addmetakey{omgroup}{contributors}
+\addmetakey{omgroup}{type}
+\addmetakey*{omgroup}{short}
+\addmetakey*{omgroup}{display}
+\def\at@begin@omgroup#1{}
+\newenvironment{omgroup}[2][]% keys, title
+{\metasetkeys{omgroup}{#1}\sref@target%
+\ifx\omgroup@display\st@flow\noindent{\Large\textbf{#2}\\[.3ex]\noindent\ignorespaces}%
+\else%
+\if@part\ifnum\section@level=1\part{#2}\sref@label@id{Part \thepart}\fi\fi%
+\if@chapter\ifnum\section@level=2\chapter{#2}\sref@label@id{Chapter \thechapter}\fi\fi%
+\ifnum\section@level=3\section{#2}\sref@label@id{Section \thesection}\fi%
+\ifnum\section@level=4\subsection{#2}\sref@label@id{Subsection \thesubsection}\fi%
+\ifnum\section@level=5\subsubsection{#2}\sref@label@id{Subsubsection \thesubsubsection}\fi%
+\ifnum\section@level=6\paragraph{#2}\sref@label@id{this paragraph}\fi%
+\ifnum\section@level=7\subparagraph{#2}\sref@label@id{this subparagraph}\fi%
+\at@begin@omgroup\section@level% for customization
+\advance\section@level by 1%
+\fi}{\advance\section@level by -1}
+%</package>
+%<*ltxml.sty>
+DefEnvironment('{omgroup} OptionalKeyVals:omgroup {}',
+ "<omdoc:omgroup layout='sectioning'"
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()"
+ . "?&KeyVal(#1,'type')(type='&KeyVal(#1,'type')')()>\n"
+ . "<dc:title>#2</dc:title>\n"
+ . "#body\n"
+ . "</omdoc:omgroup>");
+%</ltxml.sty>
+% \end{macrocode}
+% \end{environment}
+%
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:docmatter]{Front and Backmatter}
+%
+% Index markup is provided by the |omtext| package~\cite{Kohlhase:smmtf:ctan}, so in the
+% |omdoc| package we only need to supply the corresponding |\printindex| command, if it
+% is not already defined
+% \begin{macro}{\printindex}
+% \begin{macrocode}
+%<*package>
+\providecommand\printindex{\IfFileExists{\jobname.ind}{\input{\jobname.ind}}{}}
+%</package>
+%<*ltxml.sty>
+DefConstructor('\printindex','<omdoc:index/>');
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tableofcontents}
+% The table of contents already exists in {\LaTeX}, so we only need to provide a
+% {\latexml} binding for it.
+% \begin{macrocode}
+%<*ltxml.sty>
+DefConstructor('\tableofcontents',"<omdoc:tableofcontents level='&ToString(&CounterValue('tocdepth'))'/>");
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+%
+% The case of the |\bibliography| command is similar
+%
+% \begin{macro}{\bibliography}
+% \begin{macrocode}
+%<*ltxml.sty>
+DefConstructor('\bibliography{}',"<omdoc:bibliography files='#1'/>");
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:ignore]{Ignoring Inputs}
+% \begin{environment}{ignore}
+% \begin{macrocode}
+%<*package>
+\ifshow@ignores
+\addmetakey{ignore}{type}
+\addmetakey{ignore}{comment}
+\newenvironment{ignore}[1][]
+{\metasetkeys{ignore}{#1}\textless\ignore@type\textgreater\bgroup\itshape}
+{\egroup\textless/\ignore@type\textgreater}
+\renewenvironment{ignore}{}{}\else\excludecomment{ignore}\fi
+%</package>
+%<*ltxml.sty>
+DefKeyVal('ignore','type','Semiverbatim');
+DefKeyVal('ignore','comment','Semiverbatim');
+DefEnvironment('{ignore} OptionalKeyVals:ignore',
+ "<omdoc:ignore %&KeyVals(#1)>#body</omdoc:ignore>");
+%</ltxml.sty>
+% \end{macrocode}
+% \end{environment}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:share]{Structure Sharing}
+%
+% \begin{macro}{\STRlabel}
+% The main macro, it it used to attach a label to some text expansion. Later on, using the
+% |\STRcopy| macro, the author can use this label to get the expansion originally assigned.
+% \begin{macrocode}
+%<*package>
+\long\def\STRlabel#1#2{\STRlabeldef{#1}{#2}{#2}}
+%</package>
+%<*ltxml.sty>
+DefConstructor('\STRlabel{}{}', sub {
+ my($document,$label,$object)=@_;
+ $document->absorb($object);
+ $document->addAttribute('xml:id'=>ToString($label)) if $label; });
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\STRcopy}
+% The |\STRcopy| macro is used to call the expansion of a given label. In case the label is
+% not defined it will issue a warning.
+% \begin{macrocode}
+%<*package>
+\def\STRcopy#1{\expandafter\ifx\csname STR@#1\endcsname\relax
+\message{STR warning: reference #1 undefined!}
+\else\csname STR@#1\endcsname\fi}
+%</package>
+%<*ltxml.sty>
+DefConstructor('\STRcopy{}',"<omdoc:ref xref='##1'/>");
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\STRsemantics}
+% if we have a presentation form and a semantic form, then we can use
+% \begin{macrocode}
+%<*package>
+\newcommand{\STRsemantics}[3][]{#2\def\@test{#1}\ifx\@test\@empty\STRlabeldef{#1}{#2}\fi}
+%</package>
+%<*ltxml.sty>
+DefConstructor('\STRsemantics[]{}{}', sub {
+ my($document,$label,$ignore,$object)=@_;
+ $document->absorb($object);
+ $document->addAttribute('xml:id'=>ToString($label)) if $label; });
+%</ltxml.sty>#$
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\STRlabeldef}
+% This is the macro that does the actual labeling. Is it called inside |\STRlabel|
+% \begin{macrocode}
+%<*package>
+\def\STRlabeldef#1{\expandafter\gdef\csname STR@#1\endcsname}
+%</package>
+%<*ltxml.sty>
+DefMacro('\STRlabeldef{}{}', "");
+%</ltxml.sty>
+% \end{macrocode}
+% \end{macro}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:colors]{Colors}
+%
+% \begin{environment}{blue, red, green, magenta}
+% We will use the following abbreviations for colors from |color.sty|
+% \begin{macrocode}
+%<*package>
+\def\black#1{\textcolor{black}{#1}}
+\def\gray#1{\textcolor{gray}{#1}}
+\def\blue#1{\textcolor{blue}{#1}}
+\def\red#1{\textcolor{red}{#1}}
+\def\green#1{\textcolor{green}{#1}}
+\def\cyan#1{\textcolor{cyan}{#1}}
+\def\magenta#1{\textcolor{magenta}{#1}}
+\def\brown#1{\textcolor{brown}{#1}}
+\def\yellow#1{\textcolor{yellow}{#1}}
+\def\orange#1{\textcolor{orange}{#1}}
+%</package>
+% \end{macrocode}
+% For the {\latexml} bindings, we go a generic route, we replace |\blue{#1}| by
+% |{\@omdoc@color{blue}\@omdoc@color@content{#1}}|.
+% \begin{macrocode}
+%<*ltxml.sty>
+sub omdocColorMacro {
+ my ($color, @args) = @_;
+ my $tok_color = TokenizeInternal($color);
+ (T_BEGIN, T_CS('\@omdoc@color'), T_BEGIN, $tok_color->unlist,
+ T_END, T_CS('\@omdoc@color@content'), T_OTHER('['), $tok_color->unlist, T_OTHER(']'),
+ T_BEGIN, $args[1]->unlist, T_END, T_END); }
+DefMacro('\@omdoc@color{}', sub { MergeFont(color=>$_[1]->toString); return; });#$
+%</ltxml.sty>
+% \end{macrocode}
+% Ideally, here we will remove the optional argument and have a conversion module
+% add the attribute at the end (or maybe add it just for math?)
+% or, we can take the attributes for style from the current font ?
+% \begin{macrocode}
+%<*ltxml.sty>
+DefConstructor('\@omdoc@color@content[]{}',
+ "?#isMath(#2)(<ltx:text ?#1(style='color:#1')()>#2</ltx:text>)");
+foreach my $color(qw(black gray blue red green cyan magenta brown yellow orange)) {
+ DefMacro("\\".$color.'{}', sub { omdocColorMacro($color, @_); }); }#$
+%</ltxml.sty>
+% \end{macrocode}
+% \end{environment}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:commands]{{\LaTeX} Commands we interpret differently}
+%
+% The reinterpretations are quite simple, we either disregard presentational markup or
+% we re-interpret it in terms of {\omdoc}.
+% \begin{macrocode}
+%<*ltxml.sty>
+DefConstructor('\newpage','');
+%</ltxml.sty>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:ids]{Providing IDs for {\omdoc} Elements}
+%
+% To provide default identifiers, we tag all {\omdoc} elements that allow |xml:id|
+% attributes by executing the |numberIt| procedure below.
+%
+% \begin{macrocode}
+%<*ltxml.sty>
+Tag('omdoc:ignore',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:ref',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml.sty>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:misc]{Miscellaneous}
+% Some shortcuts that use math symbols but are not mathematical at all; in particular,
+% they should not be translated by {\latexml}.
+%
+% \begin{macrocode}
+%<*package>
+\newcommand\hateq{\ensuremath{\hat=}\xspace}
+\newcommand\hatequiv{\ensuremath{\hat\equiv}\xspace}
+\newcommand\textleadsto{\ensuremath{\leadsto}\xspace}
+%</package>
+%<*ltxml.sty>
+DefConstructor('\hateq',"\x{2259}");
+DefConstructor('\hatequiv',"\x{2A6F}");
+DefConstructor('\textleadsto',"\x{219D}");
+%</ltxml.sty>
+% \end{macrocode}
+%
+% \end{omgroup}
+%
+% \begin{omgroup}{Leftovers}
+%
+% \begin{macrocode}
+%<*package>
+\newcommand{\baseURI}[2][]{}
+%</package>
+%<*ltxml.sty>
+DefMacro('\baseURI []Semiverbatim', sub {
+ if (LookupValue('SOURCEFILE')!~/^(\w+):\/\//) {
+ my $baselocal = ToString(Expand($_[1]));
+ $baselocal = abs_path($baselocal) unless $baselocal=~/^(\w+):\/\//;
+ AssignValue('baselocal'=>$baselocal);
+ AssignValue('baseuri'=>ToString(Expand($_[2])));}
+ else {
+ AssignValue('baselocal'=>undef);
+ AssignValue('baseuri'=>ToString(Expand($_[2])));
+ }});
+DefConstructor('\url Semiverbatim',"<omdoc:link href='#1'>#1</omdoc:link>");
+DefConstructor('\href Semiverbatim {}',"<omdoc:link href='#1'>#2</omdoc:link>");
+%</ltxml.sty>
+% \end{macrocode}
+% \ednote{this should be handled differently, omdoc.sty should include url and give a new
+% macro for it, which we then use in omdoc}
+% and finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml.sty|ltxml.cls>1;
+% \end{macrocode}
+% \end{omgroup}
+% \end{omgroup}
+% \Finale
+\endinput
+% \iffalse
+% LocalWords: GPL structuresharing STR omdoc dtx stex CPERL LoadClass url dc
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+% LocalWords: RequirePackage RegisterNamespace namespace xsl DocType ltxml dtd
+% LocalWords: ltx DefEnvironment beforeDigest AssignValue inPreamble getGullet
+% LocalWords: afterDigest keyval omgroup DefKeyVal Semiverbatim KeyVal srcf
+% LocalWords: OptionalKeyVals DefParameterType IfBeginFollows skipSpaces CMP
+% LocalWords: ifNext DefMacro needwrapper unlist DefConstructor omtext bgroup
+% LocalWords: useCMPItemizations RefStepItemCounter egroup beginItemize li di
+% LocalWords: beforeDigestEnd dt autoclose ul ol dl env showignores srcref Cwd
+% LocalWords: afterOpen LastSeenCMP autoClose DefCMPEnvironment proto ToString
+% LocalWords: addAttribute nlex nlcex omdocColorMacro args tok MergeFont qw
+% LocalWords: TokenizeInternal toString isMath foreach maybeCloseElement id'd
+% LocalWords: autoOpen minipage footnotesize scriptsize numberIt whatsit href
+% LocalWords: getAttribute setAttribute OMDoc RelaxNGSchema noindex xml lec
+% LocalWords: Subsubsection useDefaultItemizations refundefinedtrue sblockquote
+% LocalWords: DefCMPConstructor sinlinequote idx idt ide idp emph extrefs sref
+% LocalWords: flushleft flushright DeclareOption PassOptions undef cls iffalse
+% LocalWords: ProcessOptions subparagraph ignoresfalse ignorestrue texttt ttin
+% LocalWords: texttt latexml fileversion maketitle newpage tableofcontents cwd
+% LocalWords: newpage ednote ctancite dmt03 smms inlinedef STRlabel STRcopy
+% LocalWords: STRlabel STRsemantics STRsemantics textcolor printbibliography
+% LocalWords: textsf langle textsf langle respetively orig renewcommand cdir
+% LocalWords: baseuri baseuri baselocal baselocal SOURCEFILE cooluri newif ifx
+% LocalWords: SOURCEBASE chapterfalse partfalse newcount ifshow chaptertrue
+% LocalWords: parttrue srefaddidkey newenvironment textbf compactenum showmeta
+% LocalWords: noindent noindent ignorespaces ifnum thepart thechapter regexp
+% LocalWords: thesection thesubsection thesubsubsection needswrapper itshape
+% LocalWords: textgreater renewenvironment excludecomment STRlabeldef csname
+% LocalWords: expandafter endcsname xref newcommand gdef doctex metakeys Hacky
+% LocalWords: metasetkeys addmetakey printindex providecommand jobname.ind
+% LocalWords: jobname.ind tocdepth hateq ensuremath xspace hatequiv equiv
+% LocalWords: textleadsto leadsto
diff --git a/Master/texmf-dist/source/latex/stex/omdoc/omdoc.ins b/Master/texmf-dist/source/latex/stex/omdoc/omdoc.ins
new file mode 100644
index 00000000000..41de5776ed6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/omdoc/omdoc.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex omdoc.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{omdoc.sty}{\from{omdoc.dtx}{package}}}
+\generate{\file{omdoc.cls}{\from{omdoc.dtx}{cls}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{omdoc.sty.ltxml}{\from{omdoc.dtx}{ltxml.sty}}}
+\generate{\file{omdoc.cls.ltxml}{\from{omdoc.dtx}{ltxml.cls}}}
+
+\Msg{*}
+\Msg{* You may need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx b/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx
new file mode 100644
index 00000000000..032d8190a8c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/omtext/omtext.dtx
@@ -0,0 +1,850 @@
+% \iffalse meta-comment
+% A LaTeX Class and Package for OMDoc Text Fragments
+% Copyright (c) 2010 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omtext/omtext.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{omtext}[2012/01/28 v1.0 OMDoc Text Fragments]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,omdoc,float}
+\usepackage{omtext}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: omtext.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omtext/omtext.dtx $
+\usepackage{stex-logo}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{omtext.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{375}
+%
+% \changes{v0.4}{2008/07/22}{added index markup}
+% \changes{v0.4}{2008/09/29}{augmenting the index macros with optional values}
+% \changes{v0.6}{2009/07/08}{removing {\texttt{ttin}} {\texttt{{emin}}} and friends,
+% they were almost never used.}
+% \changes{v0.6}{2009/07/08}{renmanig {\texttt{myindex}} to {\texttt{omdoc\@ index}},
+% {\texttt{twin}} to {\texttt{\@ twin}}, and {\texttt{atwin}} to {\texttt{\@ atwin}} to
+% make them packge-local}
+% \changes{v0.7}{2010/02/11}{changing blockquote to sblockquote and inlinequote similarly}
+% \changes{v0.9}{2010/05/25}{separated out from \texttt{omdoc.dtx}}
+% \changes{v1.0}{2010/06/18}{fixing typos}
+%
+% \GetFileInfo{omtext.sty}
+%
+% \MakeShortVerb{\|}
+%
+% \def\omdoc{OMDoc}
+% \def\latexml{{\LaTeX}ML}
+% \title{{\texttt{omtext}}: Semantic Markup for Mathematical Text Fragments in {\LaTeX}\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |omtext| package is part of the {\sTeX} collection, a version of {\TeX/\LaTeX} that
+% allows to markup {\TeX/\LaTeX} documents semantically without leaving the document
+% format, essentially turning {\TeX/\LaTeX} into a document format for mathematical
+% knowledge management (MKM).
+%
+% This package supplies an infrastructure for writing {\omdoc} text fragments in
+% {\LaTeX}.
+% \end{abstract}
+%
+%\newpage\tableofcontents\newpage
+%
+%\begin{omgroup}[id=sec:STR]{Introduction}
+%
+% The |omtext| package supplies macros and environment that allow to mark up mathematical
+% texts in {\sTeX}, a version of {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX}
+% documents semantically without leaving the document format, essentially turning
+% {\TeX/\LaTeX} into a document format for mathematical knowledge management (MKM). The
+% package supports direct translation to the {\omdoc} format~\cite{Kohlhase:omdoc1.2}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user]{The User Interface}
+%
+% \begin{omgroup}[id=sec:user:options]{Package Options}
+%
+% The |omtext| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
+% this is set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for
+% details and customization options).
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:omtext]{Mathematical Text}
+%
+% The \DescribeEnv{omtext}|omtext| environment is used for any text fragment that has a
+% contribution to a text that needs to be marked up. It can have a title, which can be
+% specified via the \DescribeMacro{title=}|title| key. Often it is also helpful to
+% annotate the \DescribeMacro{type=}|type| key. The standard relations from rhetorical
+% structure theory |abstract|, |introduction|, |conclusion|, |thesis|, |comment|,
+% |antithesis|, |elaboration|, |motivation|, |evidence|, |transition|, | note|, |annote|
+% are recommended as values. Note that some of them are unary relations like
+% |introduction|, which calls for a target. In this case, a target using the
+% \DescribeMacro{for=}|for| key should be specified. The |transition| relation is
+% special in that it is binary (a ``transition between two statements''), so
+% additionally, a source should be specified using the \DescribeMacro{from=}|from| key.
+%
+% Note that the values of the |title| and |type| keys are often displayed in the
+% text. This can be turned off by setting the \DescribeMacro{display=}|display| key to
+% the value |flow|. Sometimes we want to specify that a text is a continuation of
+% another, this can be done by giving the identifier of this in the
+% \DescribeMacro{continues=}|continues| key.
+%
+% Finally, there is a set of keys that pertain to the mathematical formulae in the
+% text. The \DescribeMacro{functions=}|functions| key allows to specify a list of
+% identifiers that are to be interpreted as functions in the generate content
+% markup. The \DescribeMacro{theory=}|theory| specifies a module
+% (see~\cite{KohAmb:smmssl:svn}) that is to be pre-loaded in this one\ednote{this is not
+% implemented yet.} Finally, \DescribeMacro{verbalizes=}|verbalizes| specifies a (more)
+% formal statement (see~\cite{Kohlhase:smms:svn}) that this text verbalizes.
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:phrase]{Phrase-Level Markup}
+%
+% \DescribeEnv{phrase} The |phrase| environment allows to mark up phrases with semantic
+% information. It takes an optional |KeyVal| argument with the keys
+% \DescribeMacro{verbalizes=}|verbalizes| and \DescribeMacro{type=}|type| as above and
+% \DescribeMacro{style}|style,| \DescribeMacro{class}|class|,
+% \DescribeMacro{index}|index| that are disregarded in the {\LaTeX}, but copied into the
+% generated content markup.
+%
+% \DescribeMacro{\sinlinequote} The |sinlinequote| macro allows to mark up quotes inline and
+% attribute them. The quote itself is given as the argument, possibly preceded by the a
+% specification of the source in a an optional argument. For instance, we would quote
+% Hamlet with
+% \begin{verbatim}
+% \sinlinequote[Hamlet, \cite{Shak:1603:Hamlet}]{To be or not to be}
+% \end{verbatim}
+% which would appear as \sinlinequote[Hamlet, (Shakespeare 1603)]{To be or not to be} in
+% the text. The style in which inline quotations appear in the text can be adapted by
+% specializing the macros \DescribeMacro{\@sinlinequote}|\@sinlinequote| --- for quotations
+% without source and \DescribeMacro{\@@sinlinequote}|\@@sinlinequote| --- for quotations with
+% source.
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:block]{Block-Level Markup}
+%
+% \DescribeEnv{sblockquote} The |sblockquote| environment is the big brother of the
+% |\sinlinequote| macro. It also takes an optional argument to specify the source. Here
+% the four internal macros \DescribeMacro{\begin@sblockquote}|\begin@sblockquote| to
+% \DescribeMacro{\end@@sblockquote}|\end@@sblockquote| are used for styling and can be
+% adapted by package integrators. Here a quote of Hamlet would marked up as
+% \begin{verbatim}
+% \begin{sblockquote}[Hamlet, \cite{Shak:1603:Hamlet}]\obeylines
+% To be, or not to be: that is the question:
+% Whether 'tis nobler in the mind to suffer
+% \end{sblockquote}
+% \end{verbatim}
+% and would render as
+% \begin{sblockquote}[Hamlet, (Shakespeare 1603)]\obeylines
+% To be, or not to be: that is the question:
+% Whether 'tis nobler in the mind to suffer
+% \end{sblockquote}
+%
+% \DescribeMacro{\lec}The |\lec| macro takes one argument and sets it as a comment at the
+% end of the line, making sure that if the content is too long it is pushed into a new
+% line. We use it internally for placing the of source of the |sblockquote| environment
+% above. The actual appearance of the line end comment is determined by the
+% \DescribeMacro{\@@lec}|\@@lec| macro, which can be customized in the document class.
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:user:index]{Index Markup}
+%
+% The |omtext| package provides some extensions for the well-known indexing macros of
+% {\LaTeX}. The main reason for introducing these macros is that index markup in
+% {\omdoc} wraps the indexed terms rather than just marking the spot for
+% cross-referencing. Furthermore the index commands only indexes words unless
+% the\DescribeMacro{noindex} |noindex| option is set in the |\usepackage|. The |omtext|
+% package and class make the usual |\index| macro undefined\ednote{implement this and
+% issue the respective error message}.
+%
+% The \DescribeMacro{\indextoo}|\indextoo| macro renders a word and marks it for the
+% index. Sometimes, we want to index a slightly different form of the word, e.g. for
+% non-standard plurals: while |\indextoo{word}s| works fine, we cannot use this for the
+% word ``datum'', which has the plural ``data''. For this we have the macro
+% \DescribeMacro{\indexalt}|\indexalt|, which takes another argument for the displayed
+% text, allowing us to use |\indexalt{data}{datum}|, which prints ``data'' but puts
+% ``datum'' into the index.
+%
+% The second set of macros adds an infrastructure for two-word compounds. Take for
+% instance the compound ``OMDoc document'', which we usually want to add into the index
+% under ``OMDoc'' and ``document''. \DescribeMacro{\twintoo}|\twintoo{OMDoc}{document}|
+% is a variant of |\indextoo| that will do just this. Again, we have a version that
+% prints a variant: This is useful for situations like this the one in
+% Figure~\ref{fig:index-markup}:
+% \begin{exfig}
+% \begin{verbatim}
+% We call group \twinalt{Abelian}{Abelian}{group}, iff \ldots
+% \end{verbatim}
+% \vspace*{-1em}will result in the following
+% \begin{quote}
+% We call group \twinalt{Abelian}{Abelian}{group}, iff \ldots
+% \end{quote}
+% and put ``Abelian Group'' into the index.
+% \caption{Index markup}\label{fig:index-markup}
+% \end{exfig}
+%
+% The third set of macros does the same for two-word compounds with adjectives,
+% e.g. ``wonderful OMDoc
+% document''. \DescribeMacro{\atwintoo}|\atwin{wonderful}{OMdoc}{document}| will make the
+% necessary index entries under ``wonderful'' and ``document''. Again, we have a variant
+% \DescribeMacro{\atwinalt}|\atwinalt| whose first argument is the alternative text.
+%
+% All index macros take an optional first argument that is used for ordering the
+% respective entries in the index.
+% \end{omgroup}
+% \end{omgroup}
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}\newpage
+%
+% \begin{omgroup}[id=sec:impl]{Implementation}
+%
+% The |omtext| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \begin{omgroup}[id=sec:impl:options]{Package Options}
+%
+% The initial setup for {\latexml}:
+%
+% \begin{macrocode}
+%<*ltxml>
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+use Cwd qw(cwd abs_path);
+%</ltxml>
+% \end{macrocode}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{need an implementation for {\latexml}}
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\ifindex\indextrue
+\DeclareOption{noindex}{\indexfalse}
+\ProcessOptions
+\ifindex\makeindex\fi
+%</package>
+%<*ltxml>
+DeclareOption('noindex','');
+%</ltxml>
+% \end{macrocode}
+%
+% Then we need to set up the packages by requiring the |sref| package to be loaded.
+%
+% \begin{macrocode}
+%<*package>
+\RequirePackage{sref}
+\RequirePackage{comment}
+%</package>
+%<*ltxml>
+RequirePackage('sref');
+%</ltxml>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:metadata]{Metadata}
+%
+% All the {\omdoc} elements allow to specify metadata in them, which is modeled by the
+% |omdoc:metadata| element. Since the content of this element is precisely controlled
+% by the Schema, we can afford to auto-open and auto-close it. Thus metadata elements
+% from various sources will just be included into one |omdoc:metadata| element, even if
+% they are supplied by different {\sTeX} bindings. Also we add numbering and location
+% facilities.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:metadata',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1,autoOpen=>1);
+%</ltxml>
+% \end{macrocode}
+%
+% the |itemize|, |description|, and |enumerate| environments generate |omdoc:li|,
+% |omdoc:di| with |autoclose| inside a CMP. This behavior will be overwritten later, so we
+% remember that we are in a |CMP| by assigning |_LastSeenCMP|.
+%
+% \begin{macrocode}
+%<*ltxml>
+sub declareFunctions{
+ my ($stomach,$whatsit) = @_;
+ my $keyval = $whatsit->getArg(1);
+ my $funval = KeyVal($keyval,'functions') if KeyVal($keyval,'functions');
+ my @funsymbs = ParseKeyValList($funval);
+ #Unread the function declarations at the Gullet
+ foreach (@funsymbs) {
+ $stomach->getGullet->unread(Tokenize('\lxDeclare[role=FUNCTION]{$'.$_.'$}')->unlist);
+ }
+ return;
+}
+Tag('omdoc:CMP', afterOpen => sub {AssignValue('_LastSeenCMP', $_[1], 'global');return;});#$
+%</ltxml>
+% \end{macrocode}
+%
+% the |itemize|, |description|, and |enumerate| environments originally introduced in the
+% |omtext| package do double duty in OMDoc, outside a |CMP| they are transformed into a
+% |<omgroup layout='itemize|description|enumerate'>|, where the text after the macros
+% |\item| come to be the children. If that is only text, then it is enclosed in an
+% |<omtext><CMP>|, otherwise it is left as it is. The optional argument of the |\item|
+% is transformed into the |<metadata><dc:title>| of the generated |\item| element.
+% \begin{macrocode}
+%<*ltxml>
+DefParameterType('IfBeginFollows', sub {
+ my ($gullet) = @_;
+ $gullet->skipSpaces;
+ my $next = $gullet->readToken;
+ $gullet->unread($next);
+ $next = ToString($next);
+ #Hm, falling back to regexp handling, the $gullet->ifNext approach didn't work properly
+ return 1 unless ($next=~/^\\begin/);
+ return;
+ },
+ reversion=>'', optional=>1);
+%</ltxml>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:mtxt]{Mathematical Text}
+%
+% We define the actions that are undertaken, when the keys are encountered. Here this is
+% very simple, we just define an internal macro with the value, so that we can use it
+% later. Note that we allow math in the |title| field, so we do not declare it to be
+% |Semiverbatim| (indeed not at all, which allows it by default).
+%
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{omtext}
+\addmetakey[]{omtext}{functions}
+\addmetakey*{omtext}{display}
+\addmetakey{omtext}{for}
+\addmetakey{omtext}{from}
+\addmetakey{omtext}{type}
+\addmetakey*{omtext}{title}
+\addmetakey*{omtext}{start}
+\addmetakey{omtext}{theory}
+\addmetakey{omtext}{continues}
+\addmetakey{omtext}{verbalizes}
+\addmetakey{omtext}{subject}
+%</package>
+%<*ltxml>
+DefKeyVal('omtext','functions','Undigested');
+DefKeyVal('omtext','display','Semiverbatim');
+DefKeyVal('omtext','for','Semiverbatim');
+DefKeyVal('omtext','from','Semiverbatim');
+DefKeyVal('omtext','type','Semiverbatim');
+DefKeyVal('omtext','title','Plain'); #Math mode in titles.
+DefKeyVal('omtext','start','Plain'); #Math mode in start phrases
+DefKeyVal('omtext','theory','Semiverbatim');
+DefKeyVal('omtext','continues','Semiverbatim');
+DefKeyVal('omtext','verbalizes','Semiverbatim');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\st@flow}
+% We define this macro, so that we can test whether the |display| key has the value |flow|
+% \begin{macrocode}
+%<*package>
+\def\st@flow{flow}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{omtext}
+% The |omtext| environment is different, it does not have a keyword that marks
+% it. Instead, it can have a title, which is used in a similar way. We redefine the
+% |\lec| macro so the trailing |\par| does not get into the way.
+% \begin{macrocode}
+%<*package>
+\def\omtext@pre@skip{\smallskip}
+\def\omtext@post@skip{}
+\providecommand{\stDMemph}[1]{\textbf{#1}}
+\newenvironment{omtext}[1][]{\bgroup\metasetkeys{omtext}{#1}\sref@label@id{this paragraph}%
+\def\lec##1{\@lec{##1}}
+\ifx\omtext@display\st@flow\else\omtext@pre@skip\par\noindent%
+\ifx\omtext@title\@empty\else\stDMemph{\omtext@title}: \fi\fi\ignorespaces}
+{\egroup\omtext@post@skip}
+%</package>
+%<*ltxml>
+DefEnvironment('{omtext} OptionalKeyVals:omtext',
+ "<omdoc:omtext "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() "
+ . "?&KeyVal(#1,'type')(type='&KeyVal(#1,'type')')() "
+ . "?&KeyVal(#1,'for')(for='&KeyVal(#1,'for')')() "
+ . "?&KeyVal(#1,'from')(from='&KeyVal(#1,'from')')()>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "<omdoc:CMP>"
+ . "?&KeyVal(#1,'start')(<ltx:text class='startemph'>&KeyVal(#1,'start')</ltx:text>)()"
+ . "#body"
+ ."</omdoc:omtext>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% We also make our life easier If defining an environment that is
+% turned into something that contains |<CMP>|\meta{body}|</CMP>|, use this method instead
+% \begin{macrocode}
+%<*ltxml>
+sub DefCMPEnvironment {
+ my ($proto, $replacement, %options) = @_;
+ my @before = $options{beforeDigest} ? ($options{beforeDigest}) : ();
+ push(@before, \&useCMPItemizations);
+ $options{beforeDigest} = \@before;
+ my @after = $options{afterDigestBegin} ? ($options{afterDigestBegin}) : ();
+ push(@after, \&declareFunctions);
+ $options{afterDigestBegin} = \@after;
+ DefEnvironment($proto, $replacement, %options);
+}
+sub DefCMPConstructor {
+ my ($proto, $replacement, %options) = @_;
+ my @before = $options{beforeDigest} ? ($options{beforeDigest}) : ();
+ push(@before, \&useCMPItemizations);
+ $options{beforeDigest} = \@before;
+ DefConstructor($proto, $replacement, %options);
+}#$
+%</ltxml>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:phrase]{Phrase-level Markup}
+%
+% \begin{environment}{phrase}
+% For the moment, we do disregard the most of the keys
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{phrase}
+\addmetakey{phrase}{style}
+\addmetakey{phrase}{class}
+\addmetakey{phrase}{index}
+\addmetakey{phrase}{verbalizes}
+\addmetakey{phrase}{type}
+\newenvironment{phrase}[1][]{\metasetkeys{phrase}{#1}}{}
+%</package>
+%<*ltxml>
+DefKeyVal('phrase','id','Semiverbatim');
+DefKeyVal('phrase','style','Semiverbatim');
+DefKeyVal('phrase','class','Semiverbatim');
+DefKeyVal('phrase','index','Semiverbatim');
+DefKeyVal('phrase','verbalizes','Semiverbatim');
+DefKeyVal('phrase','type','Semiverbatim');
+DefConstructor('\phrase OptionalKeyVals:phrase {}',
+ "<ltx:text %&KeyVals(#1)>#2</ltx:text>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{nlex}
+% For the moment, we do disregard the most of the keys
+% \begin{macrocode}
+%<*package>
+\def\nlex#1{\green{\sl{#1}}}
+\def\nlcex#1{*\green{\sl{#1}}}
+%</package>
+%<*ltxml>
+DefConstructor('\nlex{}',
+ "<ltx:text class='nlex'>#1</ltx:text>");
+DefConstructor('\nlcex{}',
+ "<ltx:text type='nlcex'>#1</ltx:text>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{sinlinequote}
+% \begin{macrocode}
+%<*package>
+\def\@sinlinequote#1{``{\sl{#1}}''}
+\def\@@sinlinequote#1#2{\@sinlinequote{#2}~#1}
+\newcommand{\sinlinequote}[2][]
+{\def\@opt{#1}\ifx\@opt\@empty\@sinlinequote{#2}\else\@@sinlinequote\@opt{#2}\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\sinlinequote [] {}',
+ "<ltx:quote type='inlinequote'>"
+ . "?#1(<dc:source>#1</dc:source>\n)()"
+ . "#2"
+ . "</ltx:quote>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:block]{Block-Level Markup}
+%
+% \begin{environment}{sblockquote}
+% \ednote{describe above}
+% \begin{macrocode}
+%<*package>
+\def\begin@sblockquote{\begin{quote}\sl}
+\def\end@sblockquote{\end{quote}}
+\def\begin@@sblockquote#1{\begin@sblockquote}
+\def\end@@sblockquote#1{\def\@@lec##1{{\rm ##1}}\@lec{#1}\end@sblockquote}
+\newenvironment{sblockquote}[1][]
+ {\def\@opt{#1}\ifx\@opt\@empty\begin@sblockquote\else\begin@@sblockquote\@opt\fi}
+ {\ifx\@opt\@empty\end@sblockquote\else\end@@sblockquote\@opt\fi}
+%</package>
+%<*ltxml>
+DefEnvironment('{sblockquote} []',
+ "?#1(<omdoc:omtext type='quote'>"
+ . "<dc:source>#1</dc:source>"
+ . "#body"
+ . " </omdoc:omtext>)"
+ . "(<ltx:quote>#body</ltx:quote>)");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% The line end comment macro makes sure that it will not be forced on the next line unless
+% necessary.
+% \begin{macro}{\lec}
+% The actual appearance of the line end comment is determined by the |\@@lec| macro,
+% which can be customized in the document class. The basic one here is provided so that
+% it is not missing.
+% \begin{macrocode}
+%<*package>
+\providecommand{\@@lec}[1]{(#1)}
+\def\@lec#1{\strut\hfil\strut\null\nobreak\hfill\hbox{\@@lec{#1}}}
+\def\lec#1{\@lec{#1}\par}
+%</package>
+%<*ltxml>
+DefConstructor('\lec{}',
+ "\n<omdoc:note type='line-end-comment'>#1</omdoc:note>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\my*graphics}
+% We set up a special treatment for including graphics to respect the intended {\omdoc}
+% document structure. The main work is done in the transformation stylesheet though.
+%
+% \begin{macrocode}
+%<ltxml>RawTeX('
+%<*ltxml|package>
+\newcommand\mygraphics[2][]{\includegraphics[#1]{#2}}
+\newcommand\mycgraphics[2][]{\begin{center}\includegraphics[#1]{#2}\end{center}}
+\newcommand\mybgraphics[2][]{\fbox{\includegraphics[#1]{#2}\end{center}}}
+%</ltxml|package>
+%<ltxml>');
+% \end{macrocode}
+% \end{macro}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:index]{Index Markup}
+%
+% \begin{macrocode}
+% this is the main internal indexing comman. It makes sure that the modules necessary for
+% interpreting the math in the index entries are loaded.
+%<*package>
+\newcommand{\omdoc@index}[2][]{\ifindex\def\@test{#1}%%
+\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi%
+\@ifundefined{mod@id}{\index{\@@idx @#2}}%
+{\index{\@@idx @{\importmodule{\mod@id} #2}}\fi}}
+\newcommand{\indexalt}[3][]{{#2}\omdoc@index[#1]{#3}} % word in text and index
+\newcommand{\indextoo}[2][]{{#2}\omdoc@index[#1]{#2}} % word in text and index
+%</package>
+% \end{macrocode}
+%
+% this puts two-compound words into the index in various permutations
+%
+% \begin{macrocode}
+%<*package>
+\newcommand{\@twin}[3][]{\ifindex\def\@test{#1}%%
+\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi%
+\@ifundefined{mod@id}
+{\index{\@@idx @#2!#3}%
+\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi%
+\index{\@@idx @#2!#3}}%
+{\index{\@@idx @{\importmodule{\mod@id} #2}!{\importmodule{\mod@id} #3}}%
+\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi%
+\index{\@@idx @{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #2}}\fi}}
+\newcommand{\twinalt}[4][]{#2\@twin[#1]{#3}{#4}}
+\newcommand{\twintoo}[3][]{{#2 #3}\@twin[#1]{#2}{#3}} % and use the word compound too
+%</package>
+% \end{macrocode}
+%
+% this puts adjectivized two-compound words into the index in various
+% permutations\ednote{what to do with the optional argument here and below?}
+%
+% \begin{macrocode}
+%<*package>
+\newcommand{\@atwin}[4][]{\ifindex\def\@test{#1}%%
+\ifx\@test\@empty\def\@@idx{#2}\else\def\@@idx{#1}\fi%
+\@ifundefined{mod@id}%
+{\index{\@@idx @#2!#3!#4}%
+\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi
+\index{\@@idx @#3!#2 (#4)}}%
+{\index{\@@idx @{\importmodule{\mod@id} #2}!{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #4}}
+\ifx\@test\@empty\def\@@idx{#3}\else\def\@@idx{#1}\fi%
+\index{\@@idx @{\importmodule{\mod@id} #3}!{\importmodule{\mod@id} #2} ({\importmodule{\mod@id} #4})}\fi}}
+\newcommand{\atwinalt}[5][]{#2\@atwin[#1]{#3}{#4}{#4}}
+\newcommand{\atwintoo}[4][]{{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}} % and use it too
+%</package>
+%<*ltxml>
+DefConstructor('\indextoo[]{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>#2</omdoc:idt>"
+ . "<omdoc:ide ?#1(sort-by='#1')()>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>");
+DefConstructor('\indexalt[]{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>#2</omdoc:idt>"
+ . "<omdoc:ide ?#1(sort-by='#1')()>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\twintoo[]{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>#2 #3</omdoc:idt>"
+ . "<omdoc:ide ?#1(sort-by='#1')()>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>");
+DefConstructor('\twinalt[]{}{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>#2</omdoc:idt>"
+ . "<omdoc:ide ?#1(sort-by='#1')()>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*ltxml>
+DefConstructor('\atwintoo[]{}{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>#2 #3</omdoc:idt>"
+ . "<omdoc:ide ?#1(sort-by='#1')()>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "<omdoc:idp>#4</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>");
+
+DefConstructor('\atwinalt[]{}{}{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>#2</omdoc:idt>"
+ . "<omdoc:ide ?#1(sort-by='#1')()>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "<omdoc:idp>#4</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>");
+%</ltxml>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}{{\LaTeX} Commands we interpret differently}
+%
+% The first think we have to take care of are the paragraphs, we want to generate {\omdoc}
+% that uses the |ltx:p| element for paragraphs inside |CMP|s. For that we have modified
+% the DTD only to allowed |ltx:p| elements in |omdoc:CMP| (in particular no text). Then
+% we instruct the |\par| macro to close a |ltx:p| element if possible. The next
+% |ltx:p| element is then opened automatically, since we make |ltx:p| and |omdoc:CMP|
+% autoclose and autoopen.
+%
+% \begin{macrocode}
+%<*ltxml>
+# needed? DefConstructor('\par',sub { $_[0]->maybeCloseElement('ltx:p'); },alias=>"\\par\n");
+Tag('omdoc:CMP', autoClose=>1, autoOpen=>1);
+Tag('omdoc:omtext', autoClose=>1, autoOpen=>1);
+%</ltxml>#$
+% \end{macrocode}
+% the rest of the reinterpretations is quite simple, we either disregard presentational
+% markup or we re-interpret it in terms of {\omdoc}.\ednote{MK: we should probably let
+% LaTeXML deal with these and allow more text in the omdoc+ltml.xsl}
+% \begin{macrocode}
+%<package>\def\omspace#1{\hspace*{#1}}
+%<*ltxml>
+DefConstructor('\footnote[]{}',
+ "<omdoc:note type='foot' ?#1(mark='#1')>#2</omdoc:note>");
+DefConstructor('\footnotemark[]',"");
+DefConstructor('\footnotetext[]{}',
+ "<omdoc:note class='foot' ?#1(mark='#1')>#2</omdoc:note>");
+%</ltxml>
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}[id=sec:impl:ids]{Providing IDs for {\omdoc} Elements}
+%
+% To provide default identifiers, we tag all {\omdoc} elements that allow |xml:id|
+% attributes by executing the |numberIt| procedure below. Furthermore, we use the
+% |locateIt| procedure to give source links.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:omtext',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:omgroup',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:CMP',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:idx',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:ide',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:idt',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:note',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:metadata',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:meta',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:resource',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('ltx:p',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+% We also have to number some {\latexml} tags, so that we do not get into trouble with the
+% \omdoc tags inside them.
+% \begin{macrocode}
+%<*ltxml>
+Tag('ltx:tabular',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('ltx:thead',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('ltx:td',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('ltx:tr',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('ltx:caption',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+% The |numberIt| procedure gets the prefix from first parent with an |xml:id| attribute and then
+% extends it with a label that reflects the number of preceding siblings, provided that
+% there is not already an identifier. Additionally, it estimates an XPointer position in the original document
+% of the command sequence which produced the tag.
+% The |locateIt| subroutine is a sibling of |numberIt| as it is required as an |afterClose| handle for tags
+% produced by {\LaTeX} environments, as opposed to commands. |locateIt| estimates an XPointer end position of
+% the LaTeX environment, allowing to meaningfully locate the entire environment at the source.
+% \begin{macrocode}
+%<*ltxml>
+sub numberIt {
+ my($document,$node,$whatsit)=@_;
+ my(@parents)=$document->findnodes('ancestor::*[@xml:id]',$node);
+ my $prefix= (@parents ? $parents[$#parents]->getAttribute('xml:id')."." : '');
+ my(@siblings)=$document->findnodes('preceding-sibling::*[@xml:id]',$node);
+ my $n = scalar(@siblings)+1;
+ my $id = ($node -> getAttribute('xml:id'));
+ my $localname = $node->localname;
+ $node->setAttribute('xml:id'=>$prefix."$localname$n") unless $id;
+ my $about = $node -> getAttribute('about');
+ $node->setAttribute('about'=>'#'.$node->getAttribute('xml:id')) unless $about;
+ #Also, provide locators:
+ my $locator = $whatsit->getProperty('locator');
+ #Need to inherit locators if missing:
+ $locator = (@parents ? $parents[$#parents]->getAttribute('stex:srcref') : '') unless $locator;
+ if ($locator) {
+ # There is a BUG with namespace declarations (or am I using the API wrongly??) which
+ # does not recognize the stex namespace. Hence, I need to redeclare it...
+ my $parent=$document->getNode;
+ if(! defined $parent->lookupNamespacePrefix("http://kwarc.info/ns/sTeX"))
+ { # namespace not already declared?
+ $document->getDocument->documentElement->setNamespace("http://kwarc.info/ns/sTeX","stex",0);
+ }
+ $node->setAttribute('stex:srcref'=>$locator);
+ }return;}
+
+sub locateIt {
+ my($document,$node,$whatsit)=@_;
+ #Estimate trailer locator:
+ my $trailer = $whatsit->getProperty('trailer');
+ return unless $trailer; #Nothing we can do if the trailer isn't defined
+ $trailer = $trailer->getLocator;
+ return unless ($trailer && $trailer!~/^\s*$/); #Useless if broken
+ my $locator = $node->getAttribute('stex:srcref');
+ if ($locator) {
+ $locator =~ /^(.+from=\d+;\d+)/;
+ my $from = $1;
+ $trailer =~ /(,to=\d+;\d+.+)$/;
+ my $to = $1;
+ $locator = $from.$to;
+ } else {
+ $locator = $trailer; #This should never happen
+ }
+ my $parent = $document->getNode;
+ if(! defined $parent->lookupNamespacePrefix("http://kwarc.info/ns/sTeX"))
+ { # namespace not already declared?
+ $document->getDocument->documentElement->setNamespace("http://kwarc.info/ns/sTeX","stex",0);
+ }
+ $node->setAttribute('stex:srcref' => $locator);
+ return;
+}
+%</ltxml>#$
+% \end{macrocode}
+% \end{omgroup}
+%
+% \begin{omgroup}{Finale}
+%
+% We need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \end{omgroup}
+%\end{omgroup}
+% \Finale
+\endinput
+% \iffalse
+% LocalWords: GPL structuresharing STR omdoc dtx stex CPERL LoadClass url dc
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+% LocalWords: RequirePackage RegisterNamespace namespace xsl DocType ltxml dtd
+% LocalWords: ltx DefEnvironment beforeDigest AssignValue inPreamble getGullet
+% LocalWords: afterDigest keyval omgroup DefKeyVal Semiverbatim KeyVal
+% LocalWords: OptionalKeyVals DefParameterType IfBeginFollows skipSpaces CMP
+% LocalWords: ifNext DefMacro needwrapper unlist DefConstructor omtext bgroup
+% LocalWords: useCMPItemizations RefStepItemCounter egroup beginItemize li di
+% LocalWords: beforeDigestEnd dt autoclose ul ol dl env showignores srcref def
+% LocalWords: afterOpen LastSeenCMP autoClose DefCMPEnvironment proto ToString
+% LocalWords: addAttribute nlex nlcex omdocColorMacro args tok MergeFont qw rm
+% LocalWords: TokenizeInternal toString isMath foreach maybeCloseElement id'd
+% LocalWords: autoOpen minipage footnotesize scriptsize numberIt whatsit href
+% LocalWords: getAttribute setAttribute OMDoc RelaxNGSchema noindex xml lec sc
+% LocalWords: Subsubsection useDefaultItemizations refundefinedtrue sblockquote
+% LocalWords: DefCMPConstructor sinlinequote idx idt ide idp emph extrefs sref
+% LocalWords: flushleft flushright DeclareOption PassOptions undef cls iffalse
+% LocalWords: ProcessOptions subparagraph ignoresfalse ignorestrue raisebox tr
+% LocalWords: texorpdfstring latexml texttt fileversion maketitle newpage iff
+% LocalWords: tableofcontents newpage ednote obeylines usepackage indextoo Cwd
+% LocalWords: indextoo twintoo twintoo exfig vspace twinalt ldots ttin emin
+% LocalWords: renmanig myindex atwin atwin packge-local blockquote inlinequote
+% LocalWords: atwintoo atwinalt atwinalt printbibliography impl cwd newif ifx
+% LocalWords: ifindex indextrue indexfalse srefaddidkey smallskip showmeta
+% LocalWords: providecommand stDMemph textbf newenvironment hfil showmeta
+% LocalWords: noindent ignorespaces newcommand nobreak hfill hbox mygraphics
+% LocalWords: includegraphics mycgraphics mybgraphics fbox adjectivized hspace
+% LocalWords: printindex jobname.ind jobname.ind omspace footnotemark thead
+% LocalWords: footnotetext findnodes doctex textsf langle textsf langle funval
+% LocalWords: metakeys funsymbs addmetakey metasetkeys startemph textsl textit
+% LocalWords: compactenum
diff --git a/Master/texmf-dist/source/latex/stex/omtext/omtext.ins b/Master/texmf-dist/source/latex/stex/omtext/omtext.ins
new file mode 100644
index 00000000000..beb6e0bb89e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/omtext/omtext.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex omtext.ins
+%%
+%% Copyright(c) 2008 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/omtext/omtext.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{omtext.sty}{\from{omtext.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file omtext.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{omtext.sty.ltxml}{\from{omtext.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You may need to move the generated file omtext.sty.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/presentation/presentation.dtx b/Master/texmf-dist/source/latex/stex/presentation/presentation.dtx
new file mode 100644
index 00000000000..11343b7322f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/presentation/presentation.dtx
@@ -0,0 +1,1438 @@
+% \iffalse meta-comment
+% An Infrastructure for Presenting Semantic Macros in sTeX
+% Copyright (C) 2004-2007 Michael Kohlhase, all rights reserved
+% This file is released under the LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/presentation/presentation.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{presentation}[2012/01/28 v1.0 presentation for semantic macros]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float,amstext,alltt}
+\usepackage{modules,presentation,stex-logo}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: presentation.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/presentation/presentation.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{presentation.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{598}
+%
+% \changes{v0.9}{2005/06/14}{First Version with Documentation}
+% \changes{v0.9a}{2005/07/01}{Completed Documentation}
+% \changes{v0.9b}{2005/08/06}{Complete functionality and Updated Documentation}
+% \changes{v0.9c}{2006/01/13}{more packaging}
+% \changes{v0.9d}{2006/10/13}{adding mixfix declarations}
+% \changes{v0.9d}{2006/10/13}{dealing with precedences in keyword arguments}
+% \changes{v0.9e}{2007/09/03}{fixing argument precedences, adding LaTeXML bindings}
+% \changes{v0.9f}{2007/12/09}{adding general elision}
+% \changes{v0.9g}{2008/06/17}{getting the LaTeXML right}
+% \changes{v0.9h}{2009/02/27}{turning the precedence order around to make this compatible
+% with the latest OMDoc, change all precedences $n$ to $1000-n$}
+% \changes{v0.9h}{2009/07/30}{adding brackets to the generated notation elements}
+% \changes{v0.9h}{2010/06/18}{considering done now}
+% \changes{v1.0}{2010/12/27}{adding \texttt{\textbackslash funapp}}
+% \changes{v1.0}{2011/01/28}{moving \texttt{\textbackslash funapp} and
+% \texttt{\textbackslash vname} (and friends) to new package {\texttt{cmath}}}
+% \GetFileInfo{presentation.sty}
+%
+% \MakeShortVerb{\|}
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\xml{\scsys{Xml}}
+% \def\mathml{\scsys{MathML}}
+% \def\omdoc{\scsys{OMDoc}}
+% \def\openmath{\scsys{OpenMath}}
+% \def\latexml{\scsys{LaTeXML}}
+% \def\perl{\scsys{Perl}}
+% \def\cmathml{Content-{\sc MathML}\index{Content {\sc MathML}}\index{MathML@{\sc MathML}!content}}
+% \def\activemath{\scsys{ActiveMath}}
+% \def\twin#1#2{\index{#1!#2}\index{#2!#1}}
+% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}}
+% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
+% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
+% \title{{\texttt{presentation.sty}}: An Infrastructure for Presenting Semantic
+% Macros in {\stex}\thanks{Version {\fileversion} (last revised {\filedate})}}
+% \author{Michael Kohlhase \& Deyan Ginev\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \date{\today}
+% \maketitle
+%
+% \begin{abstract}
+% The |presentation| package is a central part of the {\stex} collection, a version of
+% {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX} documents semantically without
+% leaving the document format, essentially turning {\TeX/\LaTeX} into a document format
+% for mathematical knowledge management (MKM).
+%
+% This package supplies an infrastructure that allows to specify the presentation of
+% semantic macros, including preference-based bracket elision. This allows to markup the
+% functional structure of mathematical formulae without having to lose high-quality
+% human-oriented presentation in {\LaTeX}. Moreover, the notation definitions can be
+% used by MKM systems for added-value services, either directly from the {\sTeX}
+% sources, or after translation.
+% \end{abstract}
+%
+% \newpage\setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+%\section{Introduction}\label{sec:presentation}
+%
+% The |presentation| package supplies an infrastructure that allows to specify the
+% presentation of semantic macros, including preference-based bracket elision. This allows
+% to markup the functional structure of mathematical formulae without having to lose
+% high-quality human-oriented presentation in {\LaTeX}. Moreover, the notation definitions
+% can be used by MKM systems for added-value services, either directly from the {\sTeX}
+% sources, or after translation.
+%
+% {\stex} is a version of {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX} documents
+% semantically without leaving the document format, essentially turning {\TeX/\LaTeX} into
+% a document format for mathematical knowledge management (MKM).
+%
+% The setup for semantic macros described in the {\stex} |modules| package works well for
+% simple mathematical functions: we make use of the macro application syntax in {\TeX} to
+% express function application. For a simple function called ``foo'', we would just
+% declare |\symdef{foo}[1]{foo(#1)}| and have the concise and intuitive syntax |\foo{x}|
+% for $foo(x)$. But mathematical notation is much more varied and interesting than just
+% this.
+%
+% \section{The User Interface}\label{sec:user}
+%
+% In this package we will follow the {\sTeX} approach and assume that there are four basic
+% types of mathematical expressions: symbols, variables, applications and
+% binders. Presentation of the variables is relatively straightforward, so we will not
+% concern ourselves with that. The application of functions in mathematics is mostly
+% presented in the form $f(a_1,\ldots,a_n)$, where $f$ is the function and the $a_i$ are
+% the arguments. However, many commonly-used functions from this presentational scheme:
+% for instance binomial coefficients: $\bigl({n\atop k}\bigr)$, pairs: $\langle
+% a,b\rangle$, sets: $\{x\in S\,\vert\, x^2\ne0\}$, or even simple addition: $3+5+7$. Note
+% that in all these cases, the presentation is determined by the (functional) head of the
+% expression, so we will bind the presentational infrastructure to the operator.
+%
+% \subsection{Prefix \& Postfix Notations}\label{sec:prepostfix}
+%
+% The default notation for an object that is obtained by applying a function $f$ to
+% arguments $a_1$ to $a_n$ is $f(a_1,\ldots,a_n)$. The \DescribeMacro{\prefix}|\prefix|
+% macro allows to specify a prefix presentation for a function (the usual presentation in
+% mathematics). Note that it is better to specify |\symdef{uminus}[1]{\prefix{-}{#1}}|
+% than just |\symdef{uminus}[1]{-#1}|, since we can specify the bracketing behavior in the
+% former (see Section~\ref{sec:elision}).
+%
+% The \DescribeMacro{\postfix}|\postfix| macro is similar, only that the function is
+% presented after the argument as for e.g. the factorial function: $5!$ stands for the
+% result of applying the factorial function to the number 5. Note that the function is
+% still the first argument to the |\postfix| macro: we would specify the presentation for
+% the factorial function with |\symdef{factorial}[1]{\postfix{!}{#1}}|.
+%
+% |\prefix| and |\postfix| have $n$-ary variants \DescribeMacro{\prefixa}|\prefixa| and
+% \DescribeMacro{\postfixa}|\postfixa| that take an arbitrary number of arguments
+% (mathematically; syntactically grouped into one {\TeX} argument). These take an extra
+% separator argument.\ednote{think of a good example!}
+%
+% Note that in \stex the |\prefix| and |\postfix| macros should primarily be used in
+% |\symdef| declarations. For marking up applications of symbolic functions in text we
+% should use the |\symdef|-defined semantic macros direct. For applications of function
+% variables we have two options:
+% \begin{compactenum}[\em i)]
+% \item direct prefix markup of the form |f(x)|, where we have declared the symbol |f| to
+% be a function via the |function| key of the enclosing environment --- e.g. |omtext|
+% (see~\cite{Kohlhase:smmtf*:svn}).
+% \item using the \DescribeMacro{\funapp}|\funapp| macro as in |\funapp{f}{x}|, which
+% leads to the same effect and is more general (e.g. for complex function variables,
+% such as $f_1^\prime$). Note that the default prefix rendering of the function is
+% sufficient here, since we can otherwise make use of a user-defined application
+% operator.
+% \end{compactenum}
+%
+% \subsection{Mixfix Notations}\label{sec:mixfix}
+%
+% For the presentation of more complex operators, we will follow the approach used by the
+% Isabelle theorem prover. There, the presentation of an $n$-ary function (i.e. one that
+% takes $n$ arguments) is specified as
+% \meta{pre}\meta{arg$_0$}\meta{mid$_1$}$\cdots$\meta{mid$_n$}\meta{arg$_n$}\meta{post},
+% where the \meta{arg$_i$} are the arguments and \meta{pre}, \meta{post}, and the
+% \meta{mid$_i$} are presentational material. For instance, in infix operators like the
+% binary subset operator, \meta{pre} and $\meta{post}$ are empty, and \meta{mid$_1$} is
+% $\subseteq$. For the ternary conditional operator in a programming language, we might
+% have the presentation pattern
+% |if|\meta{arg$_1$}|then|\meta{arg$_2$}|else|\meta{arg$_3$}|fi| that utilizes all
+% presentation positions.
+%
+% \DescribeMacro{\mixfix*}The |presentation| package provides mixfix declaration macros
+% |\mixfixi|, |\mixfixii|, and |\mixfixiii| for unary, binary, and ternary functions. This
+% covers most of the cases, larger arities would need a different argument
+% pattern.\footnote{If you really need larger arities, contact the author!} The call
+% pattern of these macros is just the presentation pattern above. In general, the mixfix
+% declaration of arity $i$ has $2n+1$ arguments, where the even-numbered ones are for the
+% arguments of the functions and the odd-numbered ones are for presentation material. For
+% instance, to define a semantic macro for the subset relation and the conditional, we
+% would use the markup in Figure~\ref{fig:mixfix}.
+% \begin{exfig}
+% \begin{verbatim}
+% \symdef{sseteq}[2]{\mixfixii{}{#1}{\subseteq}{#2}{}}
+% \symdef{sseteq}[2]{\infix\subseteq{#1}{#2}}
+% \symdef{ite}[2]{\mixfixiii{{\tt{if}}\;}{#1}
+% {\;{\tt{then}}\;}{#2}
+% {\;{\tt{else}}\;}{#3}{\;{\tt{fi}}}}
+% \end{verbatim}
+% \vspace*{-1.5em}
+% \begin{center}
+% \begin{tabular}{|l|l|}\hline
+% source & presentation \\\hline
+% |\sseteq{S}T| & $(S\subseteq T)$\\\hline
+% |\ite{x<0}{-x}x| & ${\tt{if}}\,x<0\,{\tt{then}}\,-x\,{\tt{else}}\,x\,{\tt{fi}}$\\\hline
+% \end{tabular}
+% \end{center}
+% \caption{Declaration of mixfix operators}\label{fig:mixfix}
+% \end{exfig}
+%
+% For certain common cases, the |presentation| package provides shortcuts for the mixfix
+% declarations. For instance, we provide the \DescribeMacro{\infix}|\infix| macro for
+% binary operators that are written between their arguments (see Figure~\ref{fig:mixfix}).\ednote{really?}
+%
+% \subsection{\texorpdfstring{$n$}{n}-ary Associative Operators}\label{sec:assoc}
+%
+% Take for instance the operator for set union: formally, it is a binary function on
+% sets that is associative (i.e. $(S_1\cup S_2)\cup S_3=S_1\cup (S_2\cup S_3)$), therefore
+% the brackets are often elided, and we write $S_1\cup S_2\cup S_3$ instead (once we have
+% proven associativity). Some authors even go so far to introduce set union as a $n$-ary
+% operator, i.e. a function that takes an arbitrary (positive) number of arguments. We will
+% call such operators {\bf{$n$-ary
+% associative}\atwin{n-ary}{associative}{operator}}.
+%
+% Specifying the presentation\ednote{introduce the notion of presentation above} of
+% $n$-ary associative operators in |\symdef| forms is not straightforward, so we provide
+% some infrastructure for that. As we cannot predict the number of arguments for $n$-ary
+% operators, we have to give them all at once, if we want to maintain our use of {\TeX}
+% macro application to specify function application. So a semantic macro for an $n$-ary
+% operator will be applied as |\nunion{|\meta{$a_1$}|,|\ldots|,|\meta{$a_n$}|}|, where the
+% sequence of $n$ logical arguments \meta{$a_i$} are supplied as one {\TeX} argument which
+% contains a comma-separated list. We provide variants of the mixfix declarations
+% presented in section~\ref{sec:mixfix} which deal with associative arguments. For
+% instance, the variant \DescribeMacro{\mixfixa}|\mixfixa| allows to specify $n$-ary
+% associative operators.
+% |\mixfixa{|\meta{pre}|}{|\meta{arg}|}{|\meta{post}|}{|\meta{op}|}| specifies a
+% presentation, where \meta{arg} is the associative argument and \meta{op} is the
+% corresponding operator that is mapped over the argument list; as above, {\meta{pre}},
+% \meta{post}, are prefix and postfix presentational material. For instance, the finite
+% set constructor could be constructed as
+% \begin{verbatim}
+% \newcommand{\fset}[1]{\mixfixa[p=1000]{\{}{#1}{\}}{,}}
+% \end{verbatim}
+%
+% The \DescribeMacro{\assoc}|\assoc| macro is a convenient abbreviation of a |\mixfixa|
+% that can be used in cases, where \meta{pre} and \meta{post} are empty (i.e. in the
+% majority of cases). It takes two arguments: the presentation of a binary operator, and a
+% comma-separated list of arguments, it replaces the commas in the second argument with
+% the operator in the first one. For instance |\assoc\cup{S_1,S_2,S_3}| will be formatted
+% to $S_1\cup S_2\cup S_3$. Thus we can use |\def\nunion#1{\assoc\cup{#1}}| or even
+% |\def\nunion{\assoc\cup}|, to define the $n$-ary operator for set union in {\TeX}. For
+% the definition of a semantic macro in {\stex}, we use the second form, since we are more
+% conscious of the right number of arguments and would declare
+% |\symdef{nunion}[1]{\assoc\cup{#1}}|.\ednote{think about big operators for ACI
+% functions}
+%
+% The |\mixfixii| macro has variants \DescribeMacro{\mixfixia}|\mixfixia| and
+% \DescribeMacro{\mixfixai}|\mixfixai| which allow to make one or two arguments in a
+% binary function associative. A use case for the second macro is an nary function type
+% operator |\fntype|, which can be defined via
+% \begin{verbatim}
+% \def\fntype#1#2{\mixfixai{}{#1}\rightarrow{#2}{}\times}
+% \end{verbatim}
+% \def\fntype#1#2{\mixfixai{}{#1}\rightarrow{#2}{}\times}
+% and which will format |\fntype{\alpha,\beta,\gamma}\delta| as
+% $\fntype{\alpha,\beta,\gamma}\delta$
+%
+% Finally, the |\mixfixiii| macro has the variants |\mixfixaii|, |\mixfixiai|, and
+% |\mixfixiia| as above\footnote{If you really need larger arities with associative
+% arguments, contact the package author!}. For instance we can use the first variant for
+% a typing judgment using
+% \begin{verbatim}
+% \def\typej#1#2#3{\mixfixaii{}{#1}{\vdash_{\Sigma}}{#2}\colon{#3}{}{,}}
+% \end{verbatim}
+% \def\typej#1#2#3{\mixfixaii{}{#1}{\vdash_{\Sigma}}{#2}\colon{#3}{}{,}}
+% which formats |\typej{\Gamma,[x:\alpha],[y:\beta]}{f(x,y)}{\beta}| as
+% \[\typej{\Gamma,[x:\alpha],[y:\beta]}{f(x,y)}{\beta}.\]
+%
+% \subsection{Precedence-Based Bracket Elision}\label{sec:elision}
+%
+% In the infrastructure discussed above, we have completely ignored the fact that we use
+% brackets to disambiguate the formula structure. The general baseline rule here is that
+% we enclose any presented subformula with (round) brackets to mark it as a logical unit.
+% If we applied this to the following formula that combines set union and set intersection
+% \begin{equation}\label{cupcap}
+% |\nunion{\ninters{a,b},\ninters{c,d}}|
+% \end{equation}
+% this would yield $((a\cap b)\cup (c\cap d))$, and not $a\cap b\cup c\cap d$ as we are
+% used to. In mathematics, brackets are elided, whenever the author anticipates that the
+% reader can understand the formula without them, and would be overwhelmed with them. To
+% achieve this, there are set of common conventions that govern bracket elision ---
+% ``$\cap$ binds stronger than $\cup$'' in (\ref{cupcap}). The most common is to assign
+% precedences to all operators, and elide brackets, if the {\index*{precedence}} of the
+% operator is larger than that of the context it is presented in (or equivalently: we only
+% write brackets, if the operator precedence is smaller or equal to the context
+% precedence). Note that this is more selective that simply dropping outer brackets which
+% would yield $a\cap b\cup c\cap d$ for (\ref{capcup}), where we would have liked $(a\cup
+% b)\cap(c\cup d)$
+% \begin{equation}\label{capcup}
+% |\ninters{\nunion{a,b},\nunion{c,d}}|
+% \end{equation}
+% In our example above, we would assign $\cap$ a larger precedence than $\cup$ (and both a
+% larger precedence than the initial precedence to avoid outer brackets). To compute the
+% presentation of (\ref{capcup}) we start out with the |\ninters|, elide its brackets
+% (since the precedence $n$ of $\cup$ is larger than the initial precedence $i$), and set
+% the context precedence for the arguments to $n$. When we present the arguments, we
+% present the brackets, since the precedence of |nunion| is larger than the context
+% precedence $n$.
+%
+% This algorithm --- which we call {\textbf{precedence-based bracket elision}} --- goes a
+% long way towards approximating mathematical practice. Note that full bracket elision in
+% mathematical practice is a reader-oriented process, it cannot be fully mechanical,
+% e.g. in $(a\cap b\cap c\cap d\cap e\cap f\cap g)\cup h$ we better put the brackets
+% around the septary intersection to help the reader even though they could have been
+% elided by our algorithm. Therefore, the author has to retain full control\ednote{think
+% about how to implement that. We need a way to override precedences locally} over
+% bracketing in a bracket elision architecture. Otherwise it would become impossible to
+% explain the concept of associativity in $(a\circ b)\circ c =a\circ(b\circ c)$, where we
+% need the brackets for this one time on an otherwise associative operation $\circ$.
+%
+% \begin{figure}[htb]
+% \begin{center}
+% \begin{tabular}{|l|l|l|}\hline
+% Precedence & Operators & Comment\\\hline\hline
+% 800 & +,- & unary \\\hline
+% 800 & $\hat{}$ & exponentiation \\\hline
+% 600 & $*,\land,\cap$ & multiplicative \\\hline
+% 500 & $+,-,\lor,\cup$ & additive\\\hline
+% 400 & / & fraction \\\hline
+% 300 & $=, \ne, \leq, <, >, \geq$ & relation\\\hline
+% \end{tabular}
+% \end{center}\vspace*{-1em}
+% \caption{Common Operator Precedences}\label{fig:precedence}
+% \end{figure}
+%
+% Furthermore, we supply an optional keyval arguments to the mixfix declarations and their
+% abbreviations that allow to specify precedences: The key \DescribeMacro{p}|p| key is
+% used to specify the {\bf{operator precedence}}, and the keys
+% \DescribeMacro{pi}\DescribeMacro{pii}\DescribeMacro{piii}|p|\meta{i} can be used to
+% specify the {\bf{argument precedence}s}. The latter will set the precedence level while
+% processing the arguments, while the operator precedence invokes brackets, if it is
+% smaller than the current precedence level --- which is set by the appropriate argument
+% precedence by the dominating operators or the outer precedence. The values of the
+% precedence keys can be integers or \DescribeMacro{\iprec}|\iprec| for the infinitely
+% large precedence or \DescribeMacro{\niprec}|\niprec| for the infinitely small
+% precedence.
+%
+% If none of the precedences is specified, then the defaults are assumed. The operator
+% precedence is set to the default operator precedence, which defaults to 0. The argument
+% precedences default to the operator precedence.
+%
+% Figure~\ref{fig:precedence} gives an overview over commonly used precedences. Note that
+% most operators have precedences higher than the default precedence of 0, otherwise the
+% brackets would not be elided. For our examples above, we would define
+% \begin{verbatim}
+% \newcommand{\nunion}[1]{\assoc[p=500]{\cup}{#1}}
+% \newcommand{\ninters}[1]{\assoc[p=600]{\cap}{#1}}
+% \end{verbatim}
+% to get the desired behavior.
+%
+% Note that the presentation macros uses round brackets for grouping by default. We can
+% specify other brackets via two more keywords: \DescribeMacro{lbrack}|lbrack| and
+% \DescribeMacro{rbrack}|rbrack|.
+%
+% Note that formula parts that look like brackets usually are not. For instance, we should
+% not define the finite set constructor via
+% \begin{equation}\label{wrongset}
+% |\newcommand{\fset}[1]{\assoc[lbrack=\{,rbrack=\}]{,}{#1}}|
+% \end{equation}
+% where the curly braces are used as brackets, but as presented in section~\ref{sec:assoc}
+% even though both would format |\fset{a,b,c}| as $\{a,b,c\}$. In the encoding here, an
+% operator with suitably high operator precedence (it is the best practice u)would be able
+% to make the brackets disappear. Thus the correct version of (\ref{wrongset}) is
+% \begin{equation}\label{goodset}
+% |\newcommand{\fset}[1]{\mixfixa[p=\iprec,pi=0]{\{}{#1}{\}}{,}}|
+% \end{equation}
+% Note that |\prefix| and |\postfix| and their variants declared in
+% section~\ref{sec:prepostfix} have brackets that do not participate (actively) in the
+% precedence-based elision: function application brackets are not subject to elision. But
+% the operator precedence |p| is still taken into account for outer brackets. The argument
+% precedence |pi| has negative infinity as a default to avoid spurious brackets for
+% arguments.
+%
+% \subsection{Flexible Elision}\label{sec:flexible-elision}
+%
+% There are several situations in which it is desirable to display only some parts of the
+% presentation:
+% \begin{itemize}
+% \item We have already seen the case of redundant brackets above
+% \item Arguments that are strictly necessary are omitted to simplify the notation, and the
+% reader is trusted to fill them in from the context.
+% \item Arguments are omitted because they have default values. For example $\log_{10}x$
+% is often written as $\log x$.
+% \item Arguments whose values can be inferred from the other arguments are usually
+% omitted. For example, matrix multiplication formally takes five arguments, namely the
+% dimensions of the multiplied matrices and the matrices themselves, but only the latter
+% two are displayed.
+% \end{itemize}
+%
+% Typically, these elisions are confusing for readers who are getting acquainted with a
+% topic, but become more and more helpful as the reader advances. For experienced readers
+% more is elided to focus on relevant material, for beginners representations are more
+% explicit. In the process of writing a mathematical document for traditional (print)
+% media, an author has to decide on the intended audience and design the level of elision
+% (which need not be constant over the document though). With electronic media we have new
+% possibilities: we can make elisions flexible. The author still chooses the elision level
+% for the initial presentation, but the reader can adapt it to her level of competence and
+% comfort, making details more or less explicit.
+%
+% To provide this functionality, the |presentation| package provides the
+% \DescribeMacro{\elide}|\elide| macro allows to associate a text with an integer
+% {\textbf{visibility level}} and group them into {\textbf{elision groups}}. High levels
+% mean high elidability.
+%
+% Elision can take various forms in print and digital media. In static media like
+% traditional print on paper or the PostScript format, we have to fix the elision level,
+% and can decide at presentation time which elidable tokens will be printed and which will
+% not. In this case, the presentation algorithm will take visibility thresholds $T_g$ for
+% every elidability group $g$ as a user parameter and then elide (i.e. not print) all
+% tokens in visibility group $g$ with level $l>T_g$. We specify this threshold for via the
+% \DescribeMacro{\setegroup}|\setegroup| macro. For instance in the example below, we have
+% a two type annotations |par| for type parameters and |typ| for type annotations
+% themselves.
+%
+% \begin{exfig}[ht]
+% \begin{verbatim}
+% $\mathbf{I}\elide{par}{500}{^\alpha}\elide{typ}{100}{_{\alpha\to\alpha}}
+% :=\lambda{X\elide{typ}{500}{_\alpha}}.X$
+% \end{verbatim}\vspace*{-2em}
+% \caption{Elision with Elision Groups}\label{ex:elision}
+% \end{exfig}
+%
+% The visibility levels in the example encode how redundant the author thinks the elided
+% parts of the formula are: low values show high redundancy. In our example the intuition
+% is that the type parameter on the $\mathbf{I}$ combinator and the type annotation on the
+% bound variable $X$ in the $\lambda$ expression are of the same obviousness to the
+% reader. So in a document that contains |\setegroup{typ}{0}| and |\setegroup{par}{0}|
+% Figure~\ref{ex:elision} will show $\mathbf{I}:=\lambda{X}.X$ eliding all redundant
+% information. If we have both values at 600, then we will see
+% $\mathbf{I}^\alpha:=\lambda{X_\alpha}.X$ and only if the threshold for |typ| rises above
+% 900, then we see the full information:
+% $\mathbf{I}^\alpha_{\alpha\to\alpha}:=\lambda{X_\alpha}.X$.
+%
+% In an output format that is capable of interactively changing its appearance, e.g.
+% dynamic XHTML+MathML (i.e. XHTML with embedded Presentation {\mathml} formulas, which
+% can be manipulated via JavaScript in browsers), an application can export the
+% information about elision groups and levels to the target format, and can then
+% dynamically change the visibility thresholds by user interaction. Here the visibility
+% threshold would also be used, but here it only determines the default rendering; a user
+% can then fine-tune the document dynamically to reveal elided material to support
+% understanding or to elide more to increase conciseness.
+%
+% The price the author has to pay for this enhanced user experience is that she has to
+% specify elided parts of a formula that would have been left out in conventional
+% {\LaTeX}. Some of this can be alleviated by good coding practices. Let us consider the
+% log base case. This is elided in mathematics, since the reader is expected to pick it up
+% from context. Using semantic macros, we can mimic this behavior: defining two semantic
+% macros: |\logC| which picks up the log base from the context via the |\logbase| macro
+% and |\logB| which takes it as a (first) argument.
+%
+% \begin{verbatim}
+% \provideEdefault{logbase}{10}
+% \symdef{logB}[2]{\prefix{\mathrm{log}\elide{base}{100}{_{#1}}}{#2}}
+% \abbrdef{logC}[1]{\logB{\fromEcontext{logbase}}{#1}}
+% \end{verbatim}
+%
+% \DescribeMacro{\provideEdefault} Here we use the |\provideEdefault| macro to initialize
+% a {\LaTeX} token register for the |logbase| default, which we can pick up from the
+% elision context using \DescribeMacro{\fromEcontext}|\fromEcontext| in the definition of
+% |\logC|. Thus |\logC{x}| would render as $\mathrm{log}_{10}(x)$ with a threshold of 50
+% for |base| and as $\mathrm{log}_2$, if the local {\TeX} group e.g. given by the
+% |assertion| environment contains a
+% \DescribeMacro{setEdefault}|\setEdefault{logbase}{2}|.
+%
+% \subsection{Other Layout Primitives}\label{sec:inter:primitives}
+%
+% Not all mathematical layouts are producible with mixfix notations. A prime example are
+% grid layouts which are marked up using the |array| element in {\TeX/\LaTeX}, e.g. for
+% definition by cases as the (somewhat contrived) definition of the absolute value
+% function in the upper part of Figure~\ref{fig:piece}. We will now motivate the need of
+% special layout primitives with this example.
+% \begin{exfig}
+% \begin{module}[id=foo]
+% \symdef{piece}[2]{\arrayline{\arraycell{#1}}{\text{if}\;#2}}
+% \symdef{otherwise}[1]{\arrayline{\arraycell{#1}}{\text{else}}}
+% \symdef{piecewise}[1]{\left\{\begin{array}{rl}#1\end{array}\right.}
+% \qquad\begin{minipage}[c]{5cm}
+% $\vert x\vert\colon=\piecewise{\piece{x}{x>0}\piece{-x}{x<0}\otherwise{0}}$
+% \end{minipage}
+% \qquad
+% \begin{minipage}[c]{7cm}
+% \begin{verbatim}
+% |x|\colon=\left\{
+% \begin{array}{rl}
+% x & x>0\\
+% -x & x<0\\
+% 0 & \text{else}
+% \end{array}
+% \right.
+% \end{verbatim}
+% \end{minipage}
+% \end{module}
+% \hrule
+% \begin{verbatim}
+% \symdef{piece}[2]{\arrayline{\arraycell{#1}}{\text{if}\;#2}}
+% \symdef{otherwise}[1]{\arrayline{\arraycell{#1}}{\text{else}}}
+% \symdef{piecewise}[1]{\left\{\begin{array}{rl}#1\end{array}\right.}
+% $|x|\colon=\piecewise{\piece{x}{x>0}\piece{-x}{x<0}\otherwise{0}}$
+% \end{verbatim}
+% \vspace*{-1.5em}
+% \caption{A piecewise definition of the absolute value function}\label{fig:piece}
+% \end{exfig}
+% But this does not work for content markup via semantic macros~\cite{KohAmb:smmssl:ctan},
+% which wants to group formula parts by function. For definition by cases, we may want to
+% follow the OpenMath |piece1| content dictionary~\cite{CD:piece1:on}, which groups
+% ``piecewise'' definitions into a constructor |piecewise|, whose children are a list of
+% |piece| constructors optionally followed by an |otherwise|. If we want to mimic this by
+% semantic macros in \stex (these are defined via |\symdef|; see~\cite{KohAmb:smmssl:ctan}
+% for details), we would naturally define |\piecewise| by wrapping an |array| environment
+% (see the last line in Figure~\ref{fig:piece}). Then we would naturally be tempted to
+% define |\piece| via |\symdef{piece}[2]{#1&\text{if}\;{#2}\\}| and |\otherwise| via
+% |\symdef{otherwise}[1]{#1&\text{else}}|. But this does not support the generation of
+% separate notation definitions for |\piece| and |\otherwise|: here \latexml has to
+% generate presentational information outside of the |array| context that provides the |&|
+% and |\\| command sequences\footnote{Note that this is not a problem when we only run
+% |latex| if we assume that \texttt{\textbackslash piece} and \texttt{\textbackslash
+% otherwise} are only used in arguments of \texttt{\textbackslash piecewise}.}. Therefore
+% the |presentation| package provides the macros |\arrayline| and |\arraycell| that
+% refactor this functionality.
+%
+% \DescribeMacro{\arrayline}|\arrayline{|\meta{cells}|}{|\meta{cell}|}| is
+% {\LaTeX}-equivalent to \meta{cells}|&|\meta{cell}|\\| and can thus be used to create
+% array lines with one or more array cells: \meta{cell} is the last array cell, and the
+% previous ones are each marked up as
+% \DescribeMacro{\arraycell}|\arraycell{|\meta{cell}|}|, where \meta{cell} is the cell
+% content. In last lines of Figure~\ref{fig:piece} we have used them to create the array
+% lines for |\piece| and |\otherwise|. Note that the array cell specifications in
+% |\arrayline| must coincide with the array specification in the main constructor (here
+% |rl| in |\piecewise|).
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+%
+% \section{The Implementation}\label{sec:implementation}
+%
+% The |presentation| package generates to files: the {\LaTeX} package (all the code
+% between {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$}} and
+% {\textsf{$\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% For {\latexml}, we initialize the package inclusions.
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{we have no options at the moment}
+%
+% \begin{macrocode}
+%<*package>
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% We first make sure that the KeyVal package is loaded (in the right
+% version). For {\latexml}, we also initialize the package inclusions.
+% \begin{macrocode}
+%<package>\RequirePackage{keyval}[1997/11/10]
+% \end{macrocode}
+% We will first specify the default precedences and brackets, together with the macros
+% that allow to set them.
+% \begin{macrocode}
+%<*package>
+\def\pres@default@precedence{0}
+\def\pres@infty{1000000}
+\def\iprec{\pres@infty}
+\def\niprec{-\pres@infty}
+\def\pres@initial@precedence{0}
+\def\pres@current@precedence{\pres@initial@precedence}
+\def\pres@default@lbrack{(}\def\pres@lbrack{\pres@default@lbrack}
+\def\pres@default@rbrack{)}\def\pres@rbrack{\pres@default@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\iprec','1000000');
+DefMacro('\niprec','-1000000');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{The System Commands}\label{sec:impl:syscommands}
+%
+% \begin{macro}{\PrecSet}
+% |\PrecSet| will set the default precedence.\ednote{need to implement this in {\latexml}?}
+% \begin{macrocode}
+%<*package>
+\def\PrecSet#1{\def\pres@default@precedence{#1}}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PrecWrite}
+% |\PrecWrite| will write a bracket, if the precedence mandates it, i.e. if |\pres@p| is
+% greater than the current precedence specified by |\pres@current@precedence|
+% \begin{macrocode}
+%<*package>
+\def\PrecWrite#1{\ifnum\pres@p>\pres@current@precedence\else{#1}\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Prefix \& Postfix Notations}\label{sec:impl:prepostfix}
+%
+% We first define the keys for the keyval arguments for |\prefix| and |\postfix|.
+%
+% \begin{macrocode}
+%<*package>
+\def\prepost@clearkeys{\def\pres@p@key{\pres@default@precedence}\def\pres@pi@key{\niprec}
+\def\pres@lbrack{\pres@default@lbrack}\def\pres@rbrack{\pres@default@rbrack}}
+\define@key{prepost}{lbrack}{\def\pres@lbrack{#1}}
+\define@key{prepost}{rbrack}{\def\pres@lbrack{#1}}
+\define@key{prepost}{p}{\def\pres@p@key{#1}}
+\define@key{prepost}{pi}{\def\pres@pi@key{#1}}
+%</package>
+% \end{macrocode}
+%
+% \begin{macro}{\prefix}
+% In prefix we always write the brackets.
+% \begin{macrocode}
+%<*package>
+\newcommand{\prefix}[3][]%key, fn, arg
+{\prepost@clearkeys\setkeys{prepost}{#1}
+{#2}\pres@lbrack{\edef\pres@current@precedence{\pres@pi@key}#3}\pres@rbrack}
+%</package>
+%<*ltxml>
+DefConstructor('\crossrefOp[]{}',
+ "?#2(<ltx:XMApp role='CROSSREFOP'>"
+ . "<ltx:XMTok role='CROSSREFOP' cr='?#1(#1)(fun)'/>"
+ . "<ltx:XMWrap>#2</ltx:XMWrap>"
+ ."</ltx:XMApp>)()",
+ requireMath=>1);
+
+DefMacro('\prefix[]{}{}','\@prefix[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}');
+DefConstructor('\@prefix OptionalKeyVals:mi {}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . "argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "#2"
+ . "<m:mrow>"
+ . "<m:mo fence='true'>(</m:mo>"
+ . "#3"
+ . "<m:mo fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub {
+ #Default argument precedence is -\infty
+ my $keyval = $_[1]->getArg(1);
+ $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi')));
+ applyPrecedencePreferences(@_);
+ },
+ properties=>sub { getSymmdefProperties($_[1]); });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\postfix}
+% \begin{macrocode}
+%<*package>
+\newcommand{\postfix}[3][]%key, fn, arg
+{\prepost@clearkeys\setkeys{prepost}{#1}
+\pres@lbrack{\edef\pres@current@precedence{\pres@pi@key}#3}\pres@rbrack{#2}}
+%</package>
+%<*ltxml>
+DefMacro('\postfix []{}{}','\@postfix[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}');
+DefConstructor('\@postfix OptionalKeyVals:mi {}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ ."argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mrow>"
+ . "<m:mo fence='true'>(</m:mo>"
+ . "#3"
+ . "<m:mo fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ . "#2"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub {
+ #Default argument precedence is -\infty
+ my $keyval = $_[1]->getArg(1);
+ $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi')));
+ applyPrecedencePreferences(@_);
+ },
+ properties=>sub { getSymmdefProperties($_[1]); });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\funapp}
+% Finally the |\funapp| macro is very simple:
+% \begin{macrocode}
+%<*package>
+\newcommand{\funapp}[2]{\prefix{#1}{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\funapp{}{}','<ltx:XMApp>#1#2</ltx:XMApp>');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Mixfix Operators}\label{sec:impl:mixfix}
+%
+% We need to enable notation definitions of the operators that have
+% argument- and precedence-aware renderings. To this end, we
+% circumvent {\latexml}'s limitations induced by its internal
+% processing stages, by pulling most of the argument rendering
+% functionality to the XSLT which produces the final {\omdoc} result.
+%
+% In the {\latexml} bindings, the internal structure of the mixfix
+% operators is generically preserved, via the |symdef_presentation_pmml| subroutine
+% in the Modules package. Nevertheless, in the current module we add the promised syntactic
+% enhancements to each element of the mixfix family. Also, we use the
+% |argument_precedence| subroutine to store the precedences given by
+% the 'pi', 'pii', etc. keys as a temporary |argprec|
+% attribute of the rendering, to be abolished during the final {\omdoc} generation.
+% This setup is finally utilized by the XSLT stylesheet which combines
+% the operator structure with the preserved precedences to produce the
+% proper form of the argument render elements.
+%
+% \begin{macrocode}
+%<*package>
+\def\clearkeys{\let\pres@p@key=\relax
+\let\pres@pi@key=\relax%
+\let\pres@pi@key=\relax%
+\let\pres@pii@key=\relax%
+\let\pres@piii@key=\relax}
+\define@key{mi}{nobrackets}[yes]{\def\pres@p@key{\pres@infty}%
+\def\pres@pi@key{-\pres@infty}}
+\define@key{mi}{lbrack}{\def\pres@lbrack@key{#1}}
+\define@key{mi}{rbrack}{\def\pres@lbrack@key{#1}}
+\define@key{mi}{p}{\def\pres@p@key{#1}}
+\define@key{mi}{pi}{\def\pres@pi@key{#1}}
+\def\prep@keys@mi%
+{\edef\pres@lbrack{\@ifundefined{pres@lbrack@key}\pres@default@lbrack\pres@lbrack@key}
+\edef\pres@rbrack{\@ifundefined{pres@rbrack@key}\pres@default@rbrack\pres@rbrack@key}
+\edef\pres@p{\@ifundefined{pres@p@key}\pres@default@precedence\pres@p@key}
+\edef\pres@pi{\@ifundefined{pres@pi@key}\pres@p\pres@pi@key}}
+%</package>
+%<*ltxml>
+our $max_arguments = 10; #Currently max 10 arguments to \symdef.
+DefKeyVal('mi','lbrack','Semiverbatim');
+DefKeyVal('mi','rbrack','Semiverbatim');
+DefKeyVal('mi','p','Semiverbatim');
+DefKeyVal('mi','pi','Semiverbatim');
+DefKeyVal('mi','pii','Semiverbatim'); #Why are we using this at mixfixai ?
+DefKeyVal('mi','cd','Semiverbatim');
+DefKeyVal('mi','name','Semiverbatim');
+DefKeyVal('mi','nobrackets','Semiverbatim');
+sub argument_precedence {
+ my ($keyval) = @_;
+ my $attr = 'pi';
+ my @precs = ();
+ foreach (1..$max_arguments) {
+ if (defined KeyVal($keyval,$attr)) {
+ push @precs, ToString(KeyVal($keyval,$attr))
+ } else {
+ push @precs, "";
+ }
+ $attr = $attr.'i';
+ }
+ return join(" ",@precs)." ";
+}
+sub applyPrecedencePreferences {
+ my ($stomach,$whatsit) = @_;
+ my @args = $whatsit->getArgs;
+ my $keyvals = shift @args;
+ return unless (defined $keyvals);
+ my %kvhash = %{$keyvals->getKeyVals};
+ #Default p (operator precedence) if not set:
+ my $default_precedence = LookupValue('default_precedence');
+ $keyvals->setValue('p',$default_precedence) unless defined($keyvals->getValue('p'));
+ return unless (exists $kvhash{'nobrackets'});
+ $keyvals->setValue('p',1000000);
+ $keyvals->setValue('pi',-1000000);
+ $keyvals->setValue('pii',-1000000);
+ $keyvals->setValue('piii',-1000000);
+ return;
+}#$
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\mixfixi}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixi}[4][]%key, pre, arg, post
+{\clearkeys\setkeys{mi}{#1}\prep@keys@mi%
+\PrecWrite\pres@lbrack%
+#2{\edef\pres@current@precedence{\pres@pi}#3}#4%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixi[]{}{}{}',
+ '\@mixfixi[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}');
+DefConstructor('\@mixfixi OptionalKeyVals:mi {}{}{}',
+ "<omdoc:rendering"
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')')"
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2 #3 #4"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@assoc}
+% We are using functionality from the {\LaTeX} core packages here to iterate over the
+% arguments.
+% \begin{macrocode}
+%<*package>
+\def\@assoc#1#2#3{% precedence, function, argv
+\let\@tmpop=\relax% do not print the function the first time round
+\@for\@I:=#3\do{\@tmpop% print the function
+% write the i-th argument with locally updated precedence
+{\edef\pres@current@precedence{#1}\@I}%
+\let\@tmpop=#2}}%update the function
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixfixa}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixa}[5][]%key, pre, arg, post, assocop
+{\clearkeys\setkeys{mi}{#1}\prep@keys@mi%
+\PrecWrite\pres@lbrack{#2}{\@assoc\pres@pi{#5}{#3}}{#4}\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixa[]{}{}{}{}',
+ '\@mixfixa[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}'
+ . '{\ensuremath{\crossrefOp[fun]{\ensuremath{#5 }}}}');
+DefConstructor('\@mixfixa OptionalKeyVals:mi {}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')')>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#5</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "#4"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*package>
+\define@key{mii}{nobrackets}[yes]{\def\pres@p@key{\pres@infty}%
+\def\pres@pi@key{-\pres@infty}\def\pres@pii@key{-\pres@infty}}
+\define@key{mii}{lbrack}{\def\pres@lbrack@key{#1}}
+\define@key{mii}{rbrack}{\def\pres@lbrack@key{#1}}
+\define@key{mii}{p}{\def\pres@p@key{#1}}
+\define@key{mii}{pi}{\def\pres@pi@key{#1}}
+\define@key{mii}{pii}{\def\pres@pii@key{#1}}
+\def\prep@keys@mii{\prep@keys@mi%
+\edef\pres@pii{\@ifundefined{pres@pii@key}\pres@p\pres@pii@key}}
+%</package>
+%<*ltxml>
+DefKeyVal('mii','lbrack','Semiverbatim');
+DefKeyVal('mii','rbrack','Semiverbatim');
+DefKeyVal('mii','p','Semiverbatim');
+DefKeyVal('mii','pi','Semiverbatim');
+DefKeyVal('mii','pii','Semiverbatim');
+DefKeyVal('mii','cd','Semiverbatim');
+DefKeyVal('mii','name','Semiverbatim');
+DefKeyVal('mii','nobrackets','Semiverbatim');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\mixfixii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixii}[6][]%key, pre, arg1, mid, arg2, post
+{\clearkeys\setkeys{mii}{#1}\prep@keys@mii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\edef\pres@current@precedence{\pres@pi}#3}%
+#4{\edef\pres@current@precedence{\pres@pii}#5}#6%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixii[]{}{}{}{}{}',
+ '\@mixfixii[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#6}}}');
+DefConstructor('\@mixfixii OptionalKeyVals:mi {}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . "argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2 #3 #4 #5 #6"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixfixia}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixia}[7][]%key, pre, arg1, mid, arg2, post, assocop
+{\clearkeys\setkeys{mii}{#1}\prep@keys@mii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\edef\pres@current@precedence{\pres@pi}#3}%
+#4{\@assoc\pres@pii{#7}{#5}}#6%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixia[]{}{}{}{}{}{}',
+ '\@mixfixia[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#6}}}'
+ . '{\ensuremath{\crossrefOp[fun]{#7}}}');
+DefConstructor('\@mixfixia OptionalKeyVals:mii {}{}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2 #3 #4"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#7</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "#6"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixfixai}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixai}[7][]%key, pre, arg1, mid, arg2, post, assocop
+{\clearkeys\setkeys{mii}{#1}\prep@keys@mii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\@assoc\pres@pi{#7}{#3}}%
+#4{\edef\pres@current@precedence{\pres@pii}#5}#6%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixai[]{}{}{}{}{}{}',
+ '\@mixfixai[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ .'{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ .'{\ensuremath{\crossrefOp[fun]{#6}}}'
+ .'{\ensuremath{\crossrefOp[fun]{#7}}}');
+DefConstructor('\@mixfixai OptionalKeyVals:mi {}{}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#7</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "#4 #5 #6"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*package>
+\define@key{miii}{nobrackets}[yes]{\def\pres@p@key{\pres@infty}%
+\def\pres@pi@key{-\pres@infty}
+\def\pres@pii@key{-\pres@infty}
+\def\pres@pii@key{-\pres@infty}}
+\define@key{miii}{lbrack}{\def\pres@lbrack@key{#1}}
+\define@key{miii}{rbrack}{\def\pres@lbrack@key{#1}}
+\define@key{miii}{p}{\def\pres@p@key{#1}}
+\define@key{miii}{pi}{\def\pres@pi@key{#1}}
+\define@key{miii}{pii}{\def\pres@pii@key{#1}}
+\define@key{miii}{piii}{\def\pres@piii@key{#1}}
+\def\prep@keys@miii{\prep@keys@mii%
+\edef\pres@piii{\@ifundefined{pres@piii@key}{\pres@p}{\pres@piii@key}}}
+%</package>
+%<*ltxml>
+DefKeyVal('miii','lbrack','Semiverbatim');
+DefKeyVal('miii','rbrack','Semiverbatim');
+DefKeyVal('miii','p','Semiverbatim');
+DefKeyVal('miii','pi','Semiverbatim');
+DefKeyVal('miii','pii','Semiverbatim');
+DefKeyVal('miii','piii','Semiverbatim');
+DefKeyVal('miii','cd','Semiverbatim');
+DefKeyVal('miii','name','Semiverbatim');
+DefKeyVal('miii','nobrackets','Semiverbatim');
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\mixfixiii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixiii}[8][]%key, pre, arg1, mid1, arg2, mid2, arg3, post
+{\clearkeys\setkeys{miii}{#1}\prep@keys@miii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\edef\pres@current@precedence{\pres@pi}#3}%
+#4{\edef\pres@current@precedence{\pres@pii}#5}%
+#6{\edef\pres@current@precedence{\pres@pii}#7}#8%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixiii[]{}{}{}{}{}{}{}',
+ '\@mixfixiii[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#8}}}');
+DefConstructor('\@mixfixiii OptionalKeyVals:mi {}{}{}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2 #3 #4 #5 #6 #7 #8"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixfixaii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixaii}[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post, sep
+{\clearkeys\setkeys{miii}{#1}\prep@keys@miii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\@assoc\pres@pi{#9}{#3}}%
+#4{\edef\pres@current@precedence{\pres@pii}#5}%
+#6{\edef\pres@current@precedence{\pres@pii}#7}#8%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixaii[]{}{}{}{}{}{}{}{}',
+ '\@mixfixaii[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#8}}}'
+ . '{\ensuremath{\crossrefOp[fun]{#9}}}');
+DefConstructor('\@mixfixaii OptionalKeyVals:mi {}{}{}{}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#9</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "#4 #5 #6 #7 #8"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixfixiai}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixiai}[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post, assocop
+{\clearkeys\setkeys{miii}{#1}\prep@keys@miii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\edef\pres@current@precedence{\pres@pi}#3}%
+#4{\@assoc\pres@pi{#9}{#5}}%
+#6{\edef\pres@current@precedence{\pres@pii}#7}#8%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixiai[]{}{}{}{}{}{}{}{}',
+ '\@mixfixiai[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#8}}}'
+ . '{\ensuremath{\crossrefOp[fun]{#9}}}');
+DefConstructor('\@mixfixiai OptionalKeyVals:mi {}{}{}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2 #3 #4"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#9</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "#6 #7 #8"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixfixiia}
+% \begin{macrocode}
+%<*package>
+\newcommand{\mixfixiia}[9][]%key, pre, arg1, mid1, arg2, mid2, arg3, post,assocop
+{\clearkeys\setkeys{miii}{#1}\prep@keys@miii%
+\PrecWrite\pres@lbrack% write bracket if necessary
+#2{\edef\pres@current@precedence{\pres@pi}#3}%
+#4{\edef\pres@current@precedence{\pres@pii}#5}%
+#6{\@assoc\pres@pi{#9}{#7}}#8%
+\PrecWrite\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\mixfixiia[]{}{}{}{}{}{}{}{}',
+ '\@mixfixiia[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#4}}}{\ensuremath{#5 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#6}}}{\ensuremath{#7 }}'
+ . '{\ensuremath{\crossrefOp[fun]{#8}}}'
+ . '{\ensuremath{\crossrefOp[fun]{#9}}}');
+DefConstructor('\@mixfixiia OptionalKeyVals:mi {}{}{}{}{}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . " argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mo egroup='fence' fence='true'>(</m:mo>"
+ . "#2 #3 #4 #5 #6"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#9</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "#8"
+ . "<m:mo egroup='fence' fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub { applyPrecedencePreferences(@_);},
+ properties=>sub { getSymmdefProperties($_[1]); });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\prefixa}
+% In prefix we always write the brackets.
+% \begin{macrocode}
+%<*package>
+\newcommand{\prefixa}[4][]%keys, fn, arg, sep
+{\prepost@clearkeys\setkeys{prepost}{#1}
+{#2}\pres@lbrack{\@assoc\pres@pi@key{#3}{#4}}\pres@rbrack}
+%</package>
+%<*ltxml>
+DefMacro('\prefixa[]{}{}{}','\@prefixa[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}{\ensuremath{#4 }}');
+DefConstructor('\@prefixa OptionalKeyVals:mi {}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ . "argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "#2"
+ . "<m:mrow>"
+ . "<m:mo fence='true'>(</m:mo>"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#4</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "<m:mo fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub {
+ #Default argument precedence is -\infty
+ my $keyval = $_[1]->getArg(1);
+ $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi')));
+ applyPrecedencePreferences(@_);
+ },
+ properties=>sub { getSymmdefProperties($_[1]); });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\postfixa}
+% \begin{macrocode}
+%<*package>
+\newcommand{\postfixa}[4][]%keys, fn, arg, sep
+{\prepost@clearkeys\setkeys{prepost}{#1}
+\pres@lbrack{\@assoc\pres@pi@key{#3}{#4}}\pres@rbrack{#2}}
+%</package>
+%<*ltxml>
+DefMacro('\postfixa []{}{}{}','\@postfixa[#1]{\ensuremath{\crossrefOp[fun]{#2}}}{\ensuremath{#3 }}{\ensuremath{#4 }}');
+DefConstructor('\@postfixa OptionalKeyVals:mi {}{}{}',
+ "<omdoc:rendering "
+ . "?&defined(&KeyVal(#1,'p'))(precedence='&KeyVal(#1,'p')') "
+ ."argprec='&argument_precedence(#1)'>"
+ . "<m:mrow>"
+ . "<m:mrow>"
+ . "<m:mo fence='true'>(</m:mo>"
+ . "<omdoc:iterate name='args' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')>"
+ . "<omdoc:separator>#4</omdoc:separator>"
+ . "<omdoc:render name='arg' "
+ . "?&defined(&KeyVal(#1,'pi'))(precedence='&KeyVal(#1,'pi')')/>"
+ . "</omdoc:iterate>"
+ . "<m:mo fence='true'>)</m:mo>"
+ . "</m:mrow>"
+ . "#2"
+ . "</m:mrow>"
+ ."</omdoc:rendering>",
+ afterDigest=>sub {
+ #Default argument precedence is -\infty
+ my $keyval = $_[1]->getArg(1);
+ $keyval->setValue('pi',-1000000) unless ($keyval && defined($keyval->getValue('pi')));
+ applyPrecedencePreferences(@_);
+ },
+ properties=>sub { getSymmdefProperties($_[1]); });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\infix}
+% |\infix|\ednote{need infixl as well, use counters for precedences here.} is a simple
+% special case of |\mixfixii|.
+% \begin{macrocode}
+%<ltxml>RawTeX('
+%<*package|ltxml>
+\newcommand{\infix}[4][]{\mixfixii[#1]{}{#3}{#2}{#4}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\assoc}
+% \begin{macrocode}
+\newcommand{\assoc}[3][]{\mixfixa[#1]{}{#3}{}{#2}}
+%</package|ltxml>
+%<ltxml>');
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{General Elision}\label{sec:impl:elision}
+%
+% \ednote{all of these still need to be tested and implemented in LaTeXML.}
+% \begin{macro}{\setegroup}
+% The elision macros are quite simple, a group |foo| is internally represented by a
+% macro |foo@egroup|, which we set by a |\gdef|.
+% \begin{macrocode}
+%<*package>
+\def\setegroup#1#2{\expandafter\def\csname #1@egroup\endcsname{#2}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\elide}
+% Then the elision command is picks up on this (flags an error) if the internal macro
+% does not exist and prints the third argument, if the elision value threshold is above
+% the elision group threshold in the paper.\ednote{do we need to turn this around as
+% well?} We test the implementation with Figure~\ref{ex:elision-test}.
+% \begin{macrocode}
+%<*package>
+\def\elide#1#2#3{\@ifundefined{#1@egroup}%
+{\def\@elevel{0}
+\PackageError{presentation}{undefined egroup #1, assuming value 0}%
+{When calling \protect\elide{#1}... the elision group #1 has be have\MessageBreak
+been set by \protect\setegroup before, e.g. by \protect\setegroup{an}{0}.}}%
+{\edef\@elevel{\csname #1@egroup\endcsname}}%
+\ifnum\@elevel>#2\else{#3}\fi}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{figure}[ht]\centering
+% \begin{tabular}{|l|l|l|l|}\hline
+% {\texttt{par}} & {\texttt{typ}} & result & expected \\\hline\hline
+% 0 & 0 & \setegroup{par}{0}\setegroup{typ}{0}
+% $\mathbf{I}\elide{par}{500}{^\alpha}\elide{typ}{100}{_{\alpha\to\alpha}}
+% :=\lambda{X\elide{typ}{500}{_\alpha}}.X$
+% & $\mathbf{I}:=\lambda{X}.X$\\\hline
+% 600 & 600 & \setegroup{par}{600}\setegroup{typ}{600}
+% $\mathbf{I}\elide{par}{500}{^\alpha}\elide{typ}{100}{_{\alpha\to\alpha}}
+% :=\lambda{X\elide{typ}{500}{_\alpha}}.X$
+% & $\mathbf{I}^\alpha:=\lambda{X_\alpha}.X$\\\hline
+% 600 & 1000 & \setegroup{par}{600}\setegroup{typ}{1000}
+% $\mathbf{I}\elide{par}{500}{^\alpha}\elide{typ}{100}{_{\alpha\to\alpha}}
+% :=\lambda{X\elide{typ}{500}{_\alpha}}.X$
+% & $\mathbf{I}^\alpha_{\alpha\to\alpha}:=\lambda{X_\alpha}.X$\\\hline
+% \end{tabular}
+% \caption{Testing Elision with the example in Figure~\protect\ref{ex:elision}}\label{ex:elision-test}
+% \end{figure}
+%
+% \begin{macro}{\provideEdefault}
+% The |\provideEdefault| macro sets up the context for an elision default by locally
+% defining the internal macro \meta{default}|@edefault| and (if necessary) exporting it
+% from the module.
+% \begin{macrocode}
+%<*package>
+\def\provideEdefault#1#2{\expandafter\def\csname#1@edefault\endcsname{#2}
+\@ifundefined{this@module}{}%
+{\expandafter\g@addto@macro\this@module{\expandafter\def\csname#1@edefault\endcsname{#2}}}}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setEdefault}
+% The |\setEdefault| macro just redefines the internal \meta{default}|@edefault| in the
+% local group
+% \begin{macrocode}
+%<*package>
+\def\setEdefault#1#2{\expandafter\def\csname #1@edfault\endcsname{#2}}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fromEcontext}
+% The |\fromEcontext| macro just calls internal \meta{default}|@edefault| macro.
+% \begin{macrocode}
+%<*package>
+\def\fromEcontext#1{\csname #1@edefault\endcsname}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Other Layout Primitives}\label{sec:impl:primitives}
+%
+% The |\arrayline| and |\arraycell| macros are simple refactorings of the |array|
+% functionality on the {\LaTeX} side\ednote{@Deyan, implement and describe them on the
+% latexml side}
+%
+% \begin{macro}{\arrayline}
+% \begin{macrocode}
+%<package>\newcommand{\arrayline}[2]{#1#2\\}
+%<*ltxml>
+DefConstructor('\arrayline{}{}','<ltx:XMRow>#1<ltx:XMCell>#2</ltx:XMCell></ltx:XMRow>');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arraycell}
+% \begin{macrocode}
+%<package>\newcommand{\arraycell}[1]{#1&}
+%<*ltxml>
+DefConstructor('\arraycell{}','<ltx:XMCell>#1</ltx:XMCell>');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+%
+% LocalWords: dtx CPERL RequirePackage keyval lbrack rbrack DefKeyVal omdoc cd
+% LocalWords: Semiverbatim DefConstructor OptionalKeyVals pmml ltx XMath mii
+% LocalWords: pii miii piii KeyVal egroup namedef attr precs foreach ToString
+% LocalWords: DefMacro stex srcref argprec mrow getSymmdefProperties
+% LocalWords: args arg LaTeX cvar iffalse scsys sc sc mathml openmath latexml
+% LocalWords: cmathml activemath twintoo atwin atwintoo texttt fileversion foo
+% LocalWords: Deyan Ginev maketitle setcounter tocdepth tableofcontents symdef
+% LocalWords: newpage ldots bigl bigr langle ary cdots subseteq mixfixi exfig
+% LocalWords: mixfixii mixfixiii vspace hline sseteq ite tt tt tt tt uminus rb
+% LocalWords: texorpdfstring assoc ednote nunion mixfixa mixfixa postfixa leq
+% LocalWords: postfixa mixfixia mixfixia mixfixai mixfixai fntype rightarrow
+% LocalWords: mixfixaii mixfixiai mixfixiia typej vdash cupcap ninters ninters
+% LocalWords: capcup geq prec fset textbf textbf setegroup setegroup mathbf fn
+% LocalWords: provideEdefault provideEdefault fromEcontext fromEcontext mathrm
+% LocalWords: setEdefault setEdefault widetilde cdot vname vname vnref vnname
+% LocalWords: ulivar ulivar primvar primvar pprimvar pprimvar textsf textsf rl
+% LocalWords: printbibliography ltxml infty ifnum clearkeys nobrackets whatsit
+% LocalWords: ifundefined keyvals kvhash newcommand setkeys crossrefOp argv
+% LocalWords: tmpop i-th assocop textbackslash infixl gdef expandafter csname
+% LocalWords: endcsname edefault edfault ifx prepostfix circ circ circ circ
+% LocalWords: iprec iprec niprec niprec wrongset goodset prepost prepkeys
+% LocalWords: arrayline arraycell qquad hrule
diff --git a/Master/texmf-dist/source/latex/stex/presentation/presentation.ins b/Master/texmf-dist/source/latex/stex/presentation/presentation.ins
new file mode 100644
index 00000000000..8816bef3454
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/presentation/presentation.ins
@@ -0,0 +1,38 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex presentation.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{presentation.sty}{\from{presentation.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{presentation.sty.ltxml}{\from{presentation.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/problem/problem.dtx b/Master/texmf-dist/source/latex/stex/problem/problem.dtx
new file mode 100644
index 00000000000..b498c90c04e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/problem/problem.dtx
@@ -0,0 +1,603 @@
+% \iffalse meta-comment
+% An Infrastructure for Problems
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/problem/problem.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% Copyright (c) 2006-2008 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{problem}[2012/01/28 v0.9c Semantic Markup for Problems]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,float,latexml}
+\usepackage[solutions,hints,notes]{problem}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: problem.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/problem/problem.dtx $
+\usepackage{stex-logo}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{problem.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{396}
+%
+% \changes{v0.9}{2006/09/18}{First Version with Documentation}
+% \changes{v0.9a}{2007/01/02}{Renamed to \texttt{problem.sty}}
+% \changes{v0.9b}{2008/10/01}{added extraction}
+% \changes{v0.9c}{2010/01/03}{based on \texttt{omd.sty} now}
+%
+% \GetFileInfo{problem.sty}
+%
+% \MakeShortVerb{\|}
+%
+% \title{\texttt{problem.sty}: An Infrastructure for formatting Problems\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |problem| package supplies an infrastructure that allows specify problems and to
+% reuse them efficiently in multiple environments.
+% \end{abstract}
+% \setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+%\section{Introduction}\label{sec:intro}
+%
+% The |problem| package supplies an infrastructure that allows specify problem. Problems
+% are text fragments that come with auxiliary functions: hints, notes, and
+% solutions\footnote{for the momenet multiple choice problems are not supported, but may
+% well be in a future version}. Furthermore, we can specify how long the solution to a
+% given problem is estimated to take and how many points will be awarded for a perfect
+% solution.
+%
+% Finally, the |problem| package facilitates the management of problems in small files,
+% so that problems can be re-used in multiple environment.
+%
+% \section{The User Interface}\label{sec:ui}
+%
+% \subsection{Package Options}
+% The |problem| package takes the options \DescribeMacro{solutions}|solutions| (should
+% solutions be output?), \DescribeMacro{notes}|notes| (should the problem notes be
+% presented?), \DescribeMacro{hints}|hints| (do we give the hints?),
+% \DescribeMacro{pts}|pts| (do we display the points awarded for solving the problem?),
+% \DescribeMacro{min}|min| (do we display the estimated minutes for problem soling). If
+% theses are specified, then the corresponding auxiliary parts of the problems are output,
+% otherwise, they remain invisible.
+%
+% The \DescribeMacro{boxed}|boxed| option specifies that problems should be formatted in
+% framed boxes so that they are more visible in the text. Finally, the
+% \DescribeMacro{test}|test| option signifies that we are in a test sitution, so this
+% option does not show the solutions (of course), but leaves space for the students to
+% solve them.
+%
+% The \DescribeMacro{extract}|extract| option can be set if we want to extract a problems
+% file, e.g. to display the solutions, see Section~\ref{sec:user:includeproblem} for a
+% discussion.
+%
+% Finally, if the \DescribeMacro{showmeta}|showmeta| is set, then the metadata keys are
+% shown (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
+%
+% \subsection{Problems and Solutions}\label{sec:user:probsols}
+%
+% \DescribeEnv{problem} The main enviornment provided by the |problem| package is
+% (surprise surprise) the |problem| environment. It is used to mark up problems and
+% excercises. The environment takes an optional KeyVal argument with the keys
+% \DescribeMacro{id}|id| as an identifier that can be reference later,
+% \DescribeMacro{pts}|pts| for the points to be gained from this exercise in homework or
+% quiz situations, \DescribeMacro{min}|min| for the estimated minutes needed to solve the
+% problem, and finally \DescribeMacro{title}|title| for an informative title of the
+% problem. For an example of a marked up problem see Figure~\ref{fig:problem} and the
+% resulting markup see Figure~\ref{fig:result}.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \usepackage[solutions,hints,pts,min]{problem}
+% \begin{document}
+% \begin{problem}[id=elefants,pts=10,min=2,title=Fitting Elefants]
+% How many Elefants can you fit into a Volkswagen beetle?
+% \begin{hint} Think positively, this is simple!\end{hint}
+% \begin{exnote}Justify your answer\end{exnote}
+% \begin{solution}[for=elefants,height=3cm]
+% Four, two in the front seats, and two in the back.
+% \end{solution}
+% \end{problem}
+% \end{document}
+% \end{verbatim}
+% \caption{A marked up Problem}\label{fig:problem}
+% \end{exfig}
+%
+% \DescribeEnv{solution} The |solution| environment can be to specify a solution to a
+% problem. If the \DescribeMacro{solutions}|solutions| option is set or |\solutionstrue|
+% is set in the text, then the solution will be presented in the output. The |solution|
+% environment takes an optional KeyVal argument with the keys \DescribeMacro{id}|id| for
+% an identifier that can be reference \DescribeMacro{for}|for| to specify which problem
+% this is a solution for, and \DescribeMacro{height}|height| that allows to specify the
+% amount of space to be left in test situations (i.e. if the \DescribeMacro{test}|test|
+% option is set in the |\usepackage| statement).
+%
+%\begin{exfig}
+% \begin{minipage}{.9\linewidth}
+% \begin{problem}[id=elefants.prob,title=Fitting Elefants]
+% How many Elefants can you fit into a Volkswagen beetle?
+% \begin{hint} Think positively, this is simple!\end{hint}
+% \begin{exnote}Justify your answer\end{exnote}
+% \begin{solution}%[for=elefants.prob,height=3cm]
+% Four, two in the front seats, and two in the back.
+% \end{solution}
+% \end{problem}
+% \end{minipage}
+% \caption{The Formmatted Problem from Figure~\ref{fig:problem}}\label{fig:result}
+% \end{exfig}
+%
+% \DescribeEnv{hint}\DescribeEnv{note}, the |hint| and |exnote| environments can be used
+% in a |problem| enviroment to give hints and to make notes that elaborate certain aspects
+% of the problem.
+%
+% \subsection{Including Problems}\label{sec:user:includeproblem}
+%
+% The \DescribeMacro{\includeproblem}|\includeproblem| macro can be used to include a
+% problem from another file. It takes an optional KeyVal argument and a second argument
+% which is a path to the file containing the problem (the macro assumes that there is only
+% one problem in the include file). The keys \DescribeMacro{title}|title|,
+% \DescribeMacro{min}|min|, and \DescribeMacro{pts}|pts| specify the problem title, the
+% estimated minutes for solving the problem and the points to be gained, and their values
+% (if given) overwrite the ones specified in the |problem| environment in the included
+% file.
+%
+% Sometimes we want to collect all the included problems into a separate file that can be
+% typeset independently. The main application is to have course notes into which the
+% problems are included (usually in boxed form to distinguish them from the rest of the
+% text and without solutions) and to have the problems with solutions in a separate file
+% (to encourage students to try and solve the problems before looking up solutions). In
+% this situation set the \DescribeMacro{extract}|extract| option on the notes file
+% \meta{notes}|.tex|, which causes a file \meta{notes}|-solutions.tex| to be generated
+% that has the |\includeproblem| statements with the respective numbers from the main
+% document. This can then be imported into a document with the respective front and
+% backmatter. In particular the frontmatter of the importing will ususlly specify the
+% \DescribeMacro{solutions}|solutions| option to generate solutions.
+%
+% \subsection{Reporting Metadata}\label{sec:user:reporting}
+%
+% The sum of the points and estimated minutes (that we specified in the |pts| and |min|
+% keys to the |problem| environment or the |\includeproblem| macro) to the log file and
+% the screen after each run. This is useful in preparing exams, where we want to make sure
+% that the students can indeed solve the problems in an alotted time period.
+%
+% The |\min| and |\pts| macros allow to specify (i.e. to print to the margin) the
+% distribution of time and reward to parts of a problem, if the |pts| and |pts| package
+% options are set. This allows to give students hints about the estimated time and the
+% points to be awarded.
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintChanges}
+% \newpage
+%
+% \section{The Implementation}\label{sec:implementation}
+%
+% The |problem| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\LaTeXML} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% The first step is to declare (a few) package options that handle whether certain
+% information is printed or not. They all come with their own conditionals that are set by
+% the options.
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\ifexnotes\exnotesfalse\DeclareOption{notes}{\exnotestrue}
+\newif\ifhints\hintsfalse\DeclareOption{hints}{\hintstrue}
+\newif\ifsolutions\solutionsfalse\DeclareOption{solutions}{\solutionstrue}
+\newif\ifpts\ptsfalse\DeclareOption{pts}{\ptstrue}
+\newif\ifmin\minfalse\DeclareOption{min}{\mintrue}
+\newif\ifboxed\boxedfalse\DeclareOption{boxed}{\boxedtrue}
+\newif\ifextract\extractfalse\DeclareOption{extract}{\extracttrue}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% On the {\LaTeXML} side we only make sure that the switches are defined
+% \begin{macrocode}
+%<*ltxml>
+RawTeX('
+\newif\ifexnotes\exnotesfalse
+\newif\ifhints\hintsfalse
+\newif\ifsolutions\solutionsfalse
+\newif\ifpts\ptsfalse
+\newif\ifmin\minfalse
+\newif\ifboxed\boxedfalse
+\newif\ifextract\extractfalse
+');
+%</ltxml>
+% \end{macrocode}
+% Then we make sure that the necessary packages are loaded (in the right versions).
+% \begin{macrocode}
+%<*package>
+\RequirePackage{keyval}[1997/11/10]
+\RequirePackage{xcomment}
+\RequirePackage{sref}
+%</package>
+% \end{macrocode}
+%
+% Here comes the equivalent header information for {\LaTeXML}, we also initialize the
+% package inclusions. Since {\LaTeXML} currently does not process package options, we have
+% nothing to do.
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+RequirePackage('sref');
+%</ltxml>
+% \end{macrocode}
+%
+% Then we register the namespace of the requirements ontology
+% \begin{macrocode}
+%<*ltxml>
+RegisterNamespace('prob'=>"http://omdoc.org/ontology/problems#");
+RegisterDocumentNamespace('prob'=>"http://omdoc.org/ontology/problems#");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Problems and Solutions}\label{sec:impl:probsols}
+%
+% We now prepare the KeyVal support for problems. The key macros just set appropriate
+% internal macros.
+%
+% \begin{macrocode}
+%<*package>
+\srefaddidkey[prefix=prob.]{problem}
+\addmetakey{problem}{pts}
+\addmetakey{problem}{min}
+\addmetakey*{problem}{title}
+\addmetakey{problem}{refnum}
+% \end{macrocode}
+%
+% Then we set up a box and a counter for problems
+%
+% \begin{macrocode}
+\newsavebox{\probbox}
+\newcounter{problem}[section]
+% \end{macrocode}
+%
+% \begin{macro}{\prob@number}
+% We consolidate the problem number into a reusable internal macro
+% \begin{macrocode}
+\def\prob@number{\ifx\inclprob@refnum\@empty
+\ifx\problem@refnum\@empty\thesection.\theproblem\else\problem@refnum\fi
+\inclprob@refnum\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% We consolidate the problem header line into a separate internal macro that can be reused
+% in various settings.
+%
+% \begin{macro}{\prob@heading}
+% We consolidate the problem header line into a separate internal macro that can be
+% reused in various settings.
+% \begin{macrocode}
+\def\prob@heading{Problem \prob@number%
+\ifx\sref@id\@empty\else{\sref@label@id{Problem \thesection.\theproblem}}\fi%
+\ifx\inclprob@title\@empty% if there is no outside title
+\ifx\problem@title\@empty{:\quad}\else{\quad(\problem@title)\hfill\\}\fi
+\else\quad(\inclprob@title)\hfill\\\fi}% else show the outside title
+% \end{macrocode}
+% \end{macro}
+%
+% With this in place, we can now define the |problem| environment. It comes in two shapes,
+% depending on whether we are in boxed mode or not. In both cases we increment the problem
+% number and output the points and minutes (depending) on whehter the respective options
+% are set.
+% \begin{environment}{problem}
+% \begin{macrocode}
+\ifboxed
+\newenvironment{problem}[1][]{\metasetkeys{problem}{#1}\sref@target%
+\stepcounter{problem}\show@pts\show@min\record@problem%
+\begin{lrbox}{\probbox}\begin{minipage}{.9\textwidth}\ignorespaces}
+{\end{minipage}\end{lrbox}
+\setbox0=\hbox{\begin{minipage}{.9\textwidth}%
+\noindent\textbf\prob@heading\rm%
+\end{minipage}}
+\smallskip\noindent\fbox{\vbox{\box0\vspace*{.2em}\usebox\probbox}}\smallskip}
+\else
+\newenvironment{problem}[1][]{\metasetkeys{problem}{#1}\sref@target%
+\stepcounter{problem}\show@pts\show@min\record@problem%
+\par\noindent\textbf\prob@heading\rm\ignorespaces}
+{\smallskip}
+\fi%boxed
+%</package>
+% \end{macrocode}
+% \end{environment}
+%
+% Note that we allow hints and solutions in the body of a |problem| environment so we have
+% to allow the |omdoc:CMP| and |ltx:p| elements to autoclose.
+%
+% \begin{macrocode}
+%<*ltxml>
+DefEnvironment('{problem} OptionalKeyVals:problem',
+ "<omdoc:exercise ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "?&KeyVal(#1,'min')("
+ . "<omdoc:meta property='prob:solvedinminutes' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'min')"
+ . "</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')("
+ . "<omdoc:meta property='prob:points' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'pts')"
+ . "</omdoc:meta>)()"
+ . "<omdoc:CMP><omdoc:p>#body"
+ ."</omdoc:exercise>",
+ afterDigest => sub {
+ my ($stomach,$kv)=@_;
+ my $kvi = LookupValue('inclprob');
+ my @keys = qw(id title min pts);
+ my @vals = $kvi && map($kvi->getValue($_), @keys);
+ foreach my $i(0..$#vals) {
+ $kv->setValue($keys[$i],$vals[$i]) if $vals[$i];
+ }
+ return;});#$
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\record@problem}
+% This macro records information about the problems in the |*.aux| file.
+% \begin{macrocode}
+%<*package>
+\def\record@problem{\protected@write\@auxout{}%
+{\string\@problem{\prob@number}%
+{\ifx\inclprob@pts\@empty\problem@pts\else\inclprob@pts\fi}%
+{\ifx\inclprob@min\@empty\problem@min\else\inclprob@min\fi}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@problem}
+% This macro acts on a problem's record in the |*.aux| file. It does not have any
+% functionality here, but can be redefined elsewhere (e.g. in the |assignment|
+% package).
+% \begin{macrocode}
+%<*package>
+\def\@problem#1#2#3{}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% The |solution| environment is similar to the |problem| environment, only that it is
+% independent of the boxed mode. It also has it's own keys that we need to define first.
+%
+% \begin{macrocode}
+%<*package>
+\define@key{soln}{id}{\def\soln@id{#1}}
+\define@key{soln}{for}{\def\soln@for{#1}}
+\define@key{soln}{height}{\def\soln@height{#1}}
+\ifsolutions
+\newenvironment{solution}[1][]%
+{\hrule\smallskip{\bf Solution: }\begin{small}}%
+{\hrule\end{small}}
+\else\newxcomment[]{solution}\fi
+% \newsavebox{\solution@box}
+% \newlength{\solution@width}
+% \setlength{\solution@width}{14cm}
+% \newenvironment{solution}[1][]%
+% {\begin{lrbox}{\solution@box}\begin{minipage}{\solution@width}
+% \hrule\smallskip{\bf Solution: }\small}
+% {\smallskip\hrule\end{minipage}\end{lrbox}
+% \ifsolutions\begin{center}\usebox{\solution@box}\end{center}\fi}
+%</package>
+%<*ltxml>
+DefKeyVal('soln','id','Semiverbatim');
+DefKeyVal('soln','height','Semiverbatim');
+DefKeyVal('soln','for','Semiverbatim');
+DefEnvironment('{solution} OptionalKeyVals:soln',
+ "<omdoc:solution ?&KeyVals(#1,'for')(for='&KeyVal(#1,'for')')()>"
+ . "#body"
+ . "</omdoc:solution>");
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\ifexnotes
+\newenvironment{exnote}[1][]%
+{\par\noindent\hrule\smallskip{\bf Note: }\small}
+{\smallskip\hrule}
+\else%ifexnotes
+\newxcomment[]{exnote}
+\fi%ifexnotes
+\ifhints
+\newenvironment{hint}[1][]%
+{\par\noindent\hrule\smallskip{\bf Hint: }\small}
+{\smallskip\hrule}
+\else%ifhints
+\newxcomment[]{hint}
+\fi%ifhints
+%</package>
+%<*ltxml>
+DefEnvironment('{exnote}',"<omdoc:hint><omdoc:CMP><omdoc:p>#body</omdoc:hint>");
+DefEnvironment('{hint}',"<omdoc:hint><omdoc:CMP><omdoc:p>#body</omdoc:hint>");
+DefConstructor('\pts{}',"");
+DefConstructor('\min{}',"");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Including Problems}\label{sec:impl:includeproblem}
+%
+% The first action is to make a \meta{jobname}|-problems.tex| file, if the |extract|
+% option is set.
+%
+% \begin{macrocode}
+%<*package>
+\ifextract
+\newwrite\problem@file
+\immediate\openout\problem@file=\jobname-problems.tex
+\AtEndDocument{\closeout\problem@file}
+\fi
+%</package>
+% \end{macrocode}
+%
+% \begin{macro}{\includeproblem}
+% The |\includeproblem| command is essentially a glorified |\input| statement, it sets
+% some internal macros first that overwrite the local points. After that (so that the
+% included problem had time to step the problem number) it writes the |\includeproblem|
+% statement to the problems file, if the |extract| option is set. Here we add a key
+% |refnum=\prob@num| to the inlcudeproblem, so that we can remember the number from the
+% main document.\ednote{do something about the overwriting of problem metadata in the
+% {\LaTeXML} binding.}
+%
+% \begin{macrocode}
+%<*package>
+\addmetakey{inclprob}{pts}
+\addmetakey{inclprob}{min}
+\addmetakey*{inclprob}{title}
+\addmetakey{inclprob}{refnum}
+\clear@inclprob@keys
+\newcommand{\includeproblem}[2][]{%
+\bgroup\metasetkeys{inclprob}{#1}\input{#2}\ifsolutions\newpage\fi\egroup
+\ifextract\def\@test{#1}
+\def\prob@num{\ifx\inclprob@refnum\@empty\thesection.\theproblem\else\inclprob@refnum\fi}
+\def\inclprob@keys{#1\ifx\@test\@empty\else,\fi refnum=\prob@num}
+\protected@write\problem@file{}{\string\includeproblem[\inclprob@keys]{#2}}
+\fi}
+%</package>
+%<*ltxml>
+DefKeyVal('prob','pts','Semiverbatim');
+DefKeyVal('prob','min','Semiverbatim');
+DefKeyVal('prob','title','Semiverbatim');
+DefConstructor('\includeproblem OptionalKeyVals:prob Semiverbatim',
+ "<omdoc:ref type='cite' xref='#2'>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "?&KeyVal(#1,'min')("
+ . "<omdoc:meta property='prob:solvedinminutes' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'min')"
+ . "</omdoc:meta>)()"
+ . "?&KeyVal(#1,'pts')("
+ . "<omdoc:meta property='prob:points' prob:dummy='for the namespace'>"
+ . "&KeyVal(#1,'pts')"
+ . "</omdoc:meta>)()"
+ ."</omdoc:ref>",
+ afterDigest => sub{
+ my ($stomach,$kv) = @_;
+ AssignValue('inclprob',$kv) if $kv;
+ });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:exercise',afterOpen=>\&numberIt);
+Tag('omdoc:solution',afterOpen=>\&numberIt);
+Tag('omdoc:hint',afterOpen=>\&numberIt);
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Reporting Metadata}
+%
+% \begin{macrocode}
+%<*package>
+\def\pts#1{\ifpts\marginpar{#1 pt}\fi}
+\def\min#1{\ifmin\marginpar{#1 min}\fi}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\AtEndDocument{\ifpts\message{Total: \arabic{pts} points}\fi
+\ifmin\message{Total: \arabic{min} minutes}\fi}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+%
+% \begin{macro}{\show@pts}
+% The |\show@pts| shows the points: if no points are given from the outside and also no
+% points are given locally do nothing, else show and add. If there are outside points
+% then we show them in the margin.
+% \begin{macrocode}
+%<*package>
+\newcounter{pts}
+\def\show@pts{\ifx\inclprob@pts\@empty%
+\ifx\problem@pts\@empty\else%
+\ifpts\marginpar{\problem@pts pt\smallskip}\addtocounter{pts}{\problem@pts}\fi%
+\fi\else%
+\ifpts\marginpar{\inclprob@pts pt\smallskip}\addtocounter{pts}{\inclprob@pts}\fi%
+\fi}
+% \end{macrocode}
+% \end{macro}
+% and now the same for the minutes
+% \begin{macro}{\show@min}
+% \begin{macrocode}
+\newcounter{min}
+\def\show@min{\ifx\inclprob@min\@empty%
+\ifx\problem@min\@empty\else%
+\ifmin\marginpar{\problem@min min}\addtocounter{min}{\problem@min}\fi%
+\fi\else%
+\ifmin\marginpar{\inclprob@min min}\addtocounter{min}{\inclprob@min}\fi
+\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Providing IDs Elements}\label{sec:impl:ids}
+%
+% To provide default identifiers, we tag all elements that allow |xml:id| attributes by
+% executing the |numberIt| procedure from |omdoc.sty.ltxml|.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:exercise',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:solution',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:hint',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Finale}
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+
+% \iffalse
+% LocalWords: GPL structuresharing STR dtx pts keyval xcomment CPERL DefKeyVal
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+% LocalWords: RequirePackage Semiverbatim DefEnvironment OptionalKeyVals soln
+% LocalWords: exnote DefConstructor inclprob
diff --git a/Master/texmf-dist/source/latex/stex/problem/problem.ins b/Master/texmf-dist/source/latex/stex/problem/problem.ins
new file mode 100644
index 00000000000..1ed30cedb91
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/problem/problem.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the problem package.
+%% At your command prompt write
+%%
+%% latex problem.ins
+%%
+%% Copyright(c) 2007 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex-content/sty/problem/problem.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{problem.sty}{\from{problem.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file problem.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{problem.sty.ltxml}{\from{problem.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated file problem.sty.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.dtx b/Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.dtx
new file mode 100644
index 00000000000..08cf2b5c5b2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.dtx
@@ -0,0 +1,483 @@
+% \iffalse meta-comment
+% An Infrastructure for extending macros by general metadata keys
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/rdfmeta/rdfmeta.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% Copyright (c) 2007 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{rdfmeta}[2012/01/28 v0.2 Metadata key upgrades]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[sectioning]{rdfmeta}
+\usepackage{url,array,float,stex-logo}
+\usepackage[show]{ed}
+\usepackage{listings}
+\lstset{basicstyle=\small\tt,columns=flexible}
+\lstset{frame=none,numbers=none,lineskip=-.7ex,aboveskip=-.5ex,belowskip=-.5ex}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: rdfmeta.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/rdfmeta/rdfmeta.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\def\omdoc{OMDoc\xspace}
+\def\omdocv#1{OMDoc{#1}\xspace}
+\begin{document}\DocInput{rdfmeta.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{168}
+%
+% \changes{v0.1}{2010/03/05}{new}
+% \changes{v0.2}{2010/09/01}{starred forms work now, more documentation}
+%
+% \GetFileInfo{rdfmeta.sty}
+%
+% \MakeShortVerb{\|}
+% \def\latexml{{\LaTeX}ML}
+%
+% \title{RDFa Metadata in {\LaTeX}\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase \\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+% \begin{abstract}
+% The |rdfmeta| package allows mark up Ontology-based Metadata in {\LaTeX} documents
+% that can be harvested by automated tools or exported to PDF.
+% \end{abstract}
+%\tableofcontents
+%\begin{center}\bf\Huge
+% Experimental!\\
+% do not use!
+%\end{center}\newpage
+%
+% \section[id=intro]{Introduction}
+%
+% The |rdfmeta| package allows mark up extensible metadata in \stex documents, so that
+% that it can be harvested by automated tools or exported to PDF. It is also intended to
+% support the new metadata infrastructure for the {\omdoc} format~\cite{Kohlhase:omdoc1.2}
+% introduced in {\omdocv{1.3}}~\cite{Kohlhase:OMDoc1.3} (see~\cite{LK:MathOntoAuthDoc09}
+% for the relevant ideas and and~\cite{KohKohLan:ssffld10:biblatex} for an application).
+%
+% Metadata are annotated as key value pairs in the semantic environments provided by
+% \stex. In most markup formats, the metadata vocabularies are fixed by the language
+% designer. In \stex, the |rdfmeta| package allows the user to extend the metadata
+% vocabulary.
+%
+% \begin{exfig}[ht]
+% \begin{verbatim}
+% \importmodule[../ontologies/cert]{certification}
+% ...
+% \section[id=userreq,hasState=$\statedocrd{\tuev}$]{User Requirements}
+% ...
+% \end{verbatim}
+% \vspace*{-1.5em}\hrule
+% \lstinputlisting[language=XMl,morekeywords={imports,metadata,resource,link,omgroup},aboveskip=.5ex]{hasstate.omdoc}
+% \caption{Metadata for Certification}\label{fig:hasState}
+% \end{exfig}
+%
+% Take, for instance, the case where we want to use metadata for the certification status
+% of document fragments. In Figure~\ref{fig:hasState} we use the |hasState| key to say
+% that a section has been approved by the T\"UV, a specific certification agency. There
+% are two concerns here. First, the |hasState| key has to be introduced and given a
+% meaning, and same for the (complex) value |\statedocrd{\tuev}|. This meaning is given in
+% the |certifiation| ontology which we imported via the |\importmodule| command. The
+% ontology can be marked up in \stex (see Figure~\ref{fig:certification}), with the
+% exception that we use the |\keydef| macro for the definition of the |hasState| relation
+% so that it also defines the key. For the details of this see the next section.
+%
+% \section[id=user]{User Interface}
+%
+% We now document the specifics of the environments and macros provided by the |rdfmeta|
+% package from a user perspective.
+%
+% \subsection[id=sec:user:options]{Package Options}
+%
+% The |rdfmeta| package takes the option: \DescribeMacro{showmeta}|showmeta|. If this is
+% set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details and
+% customization options).
+%
+% The remaining options can be used to specify metadata upgrades of standard keys. The
+% \DescribeMacro{sectioning}|sectioning| option upgrades the |\part|, |\chapter|,
+% |\section|, |\subsection|, |\subsubsection|, |\paragraph| macros (and of course their
+% starred variants).
+%
+% \subsection[id=sec:user:keydef]{Extending Macros and Environments by Metadata Keys}
+%
+% The main user-visible feature of the |rdfmeta| package is the
+% \DescribeMacro{\keydef}|keydef| macro. It takes two arguments, a ``key group
+% identifier'' and a key name. In a nutshell, every \stex command that takes metadata keys
+% comes with a ``key group identifier'' that identifies the set of admissible keys;
+% see~\cite{Kohlhase:metakeys:ctan} for details on this concept. Figure~\ref{fig:keygroups}
+% gives an overview over the key groups and their identifiers in \stex.
+% \begin{figure}
+% \begin{tabular}{|>{\tt}l|>{\tt}p{5.5cm}|>{\tt}p{2.4cm}|}\hline
+% \rm\textbf{Key Group Identifier} & \rm\textbf{Macros} & \rm\textbf{Package/Class} \\\hline\hline
+% dcm@person & DCMPerson & dcm.sty\\\hline
+% dcm@institution & DCMInstitution & dcm.sty\\\hline
+% dcm@sect & section & dcm.sty\\\hline
+% assig & assignment & hwexam.cls\\\hline
+% inclassig & includeassignment & hwexam.cls\\\hline
+% quizheading & quizheading & hwexam.cls\\\hline
+% testheading & quizheading & hwexam.cls\\\hline
+% module & module & modules.sty\\\hline
+% termdef & termdef & modules.sty \\\hline
+% view & view & modules.sty\\\hline
+% omgroup & omgroup & omdoc.sty\\\hline
+% ignore & ignore & omdoc.sty\\\hline
+% omtext & omtext, definition, axiom, assertion, example, inlinedef & omtext.sty, statements.sty\\\hline
+% phrase & phrase & omtext.sty\\\hline
+% problem & problem & problem.sty\\\hline
+% inclprob & includeproblem & problem.sty\\\hline
+% req & requirement & reqdoc.sty\\\hline
+% spf & sproof, spfcases, spfcase, spfstep, spfcomment & sproof.sty\\\hline
+% termref & termref & statements.sty \\\hline
+% symboldec & symboldec & statements.sty\\\hline
+% \end{tabular}
+% \caption{Key Group Identifiers in \protect\stex}\label{fig:keygroups}
+% \end{figure}
+%
+% Semantically, |\keydef{|\meta{keygroup}|}{|\meta{key}|}| defines a symbol just like the
+% |\symdef| macro from the |modules| package~\cite{KohAmb:smmssl:ctan}. But it also
+% extends the syntax of \stex itself: it adds a key \meta{key} to \meta{keygroup}, which
+% allows to state the corresponding metadata as a key/value pair in the \stex macro or
+% environment. Following the ideas from~\cite{LK:MathOntoAuthDoc09}, the metadata is
+% transformed to RDFa metadata~\cite{w3c:WD-rdfa-core-20100803} in {\omdoc}, where the
+% identifiers of relations are exactly the symbols introduced by the corresponding
+% |\keydef|.
+%
+% \begin{exfig}[ht]
+% \lstinputlisting[language=TeX,morekeywords={metalanguage}]{certification}
+% \caption{A simple Ontology on Certification}\label{fig:certification}
+% \end{exfig}
+%
+% In our example in Figure~\ref{fig:certification} we have defined a key |hasstate| in the
+% |omtext| key group\footnote{For the \texttt{\textbackslash omtext} environment and key group
+% see~\cite{Kohlhase:smmtf:ctan}} and a symbol |hasstate| via
+% |\addkey{omtext}{hasstate}|. Furthermore, we have defined the meaning of the relation
+% expressed by the |hasstate| symbol informally and specified some possible objects for
+% the relation (that could of course have been done in other modules as well). We have
+% made use of this metadata ontology and the new key |hasState| in the example in
+% Figure~\ref{fig:hasState}.
+%
+% \subsection{Redefinitions of Common {\LaTeX} Macros and Environments}
+%
+% The |rdfmeta| package redefines common {\LaTeX} commands (e.\,g.\ the sectioning macros)
+% so that they include optional KeyVal arguments that can be extended by |\keydef|
+% commands. With this extension, we can add RDFa metadata to any existing {\LaTeX}
+% document and generate linked data (XHTML+RDFa documents) via the {\latexml}
+% translator.
+%
+% \subsection[id=redefining]{Extending Packages with \texttt{rdfmeta}}
+%
+% The |rdfameta| package also exposes its internal infrastructure for extending the
+% redefinitions. Note that the upgrade macros can only be used in {\LaTeX} packages, as
+% the macro names contain |@|. Consequently, this section is only addressed at package
+% developers who want to extend existing (i.e. not written by them) packages with flexible
+% metadata functionality.
+%
+% \DescribeMacro{\rdfmeta@upgrade}|\rdfmeta@upgrade| is the basic upgrade macro. It takes
+% an optional keyval argument an a command sequence \meta{cseq} as a proper argument and
+% (if that is defined), redefines |\|\meta{cseq} to take a keyval argument. There is a
+% variant \DescribeMacro{\rdfmeta@upgrade*}|\rdfmeta@upgrade*| that has to be used to
+% upgrade macros that have a starred form (e.g. |\section| and friends). Note that
+% |\rdfmeta@upgrade*| upgrades both forms (e.g. |\section| and |\section*|).
+%
+% |\rdfmeta@upgrade| uses four keys to specify the behavior in the case the the macro to
+% be upgraded already has an optional argument. For concreteness, we introduce them using
+% the |\section| macro from standard {\LaTeX} as an example. |\section| has an optional
+% argument for the ``short title'', which will appear in the table of contents. The
+% \DescribeMacro{optarg}|optarg| key can be used to specify a key for the existing
+% optional argument. Thus, after upgrading it via
+% |\rdfmeta@upgrade*[optarg=short]{section}|, we can use the updated form
+% |\section[short=|\meta{toctitle}|]{|\meta{title}|}| instead of the old
+% |\section[|\meta{toctitle}|]{|\meta{title}|}|. Actually, this still has a problem: the
+% |\section*| would also be given the |short| key and would be passed an optional argument
+% (which it does not accept). To remedy this we can set the
+% \DescribeMacro{optargstar}|optargstar| key to |no|. In summary, the correct upgrade
+% command for |\section| and |\section*| would be
+% \begin{verbatim}
+% \rdfmeta@upgrade*[optarg=short,optargstar=no]{section}
+% \end{verbatim}
+% The |\rdfmeta@upgrade*| macro also initializes a metadata key-group (a named set of
+% keys and their handlers; see~\cite{Kohlhase:metakeys:svn} for details) for the section
+% macro with an |id| key for identification (see~\cite{Kohlhase:sref*} for
+% details). Often, the name of the key-group is the same as the command sequence, so we
+% take this as the default, if we want to specify a different metadata key-group name, we
+% can do so with the \DescribeMacro{keygroup}|keygroup| key in |\rdfmeta@upgrade*|.
+%
+% If \DescribeMacro{idlabel}|idlabel| is set to \meta{prefix}, then the {\LaTeX} label is
+% set to the value \meta{prefix}|.|\meta{id}, where \meta{id} is the value given in the
+% RDFa |id| key. This allows to use the normal {\LaTeX} referencing mechanism in addition
+% to the semantic referencing mechanism provided by the |sref|
+% package~\ctancite{Kohlhase:sref}.
+%
+% \subsection[id=limitations]{Limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+%
+% \begin{compactenum}
+% \item Currently the coverage of the redefinitions of standard commands in the
+% \url{rdfmeta} package is minimal; we will extend this in the future.
+% \item The |\rdfmeta@upgrade| macro only works with single arguments, this should be easy
+% to fix with |\case| for the argument string.
+% \item I am not sure |\rdfmeta@upgrade| works with environments.
+% \item it would be convenient, if we had a macro |\keydefs|, which takes a list of
+% keygroups, so that we can define keys in multiple groups in one go,
+% e.g. |\keydefs{omtext,omgroup}{hasState}| in Figure~\ref{fig:certification}. But the
+% obvious ``solution''
+% \begin{verbatim}
+% \newcommand\keydefs[2]{\@for\@I:=#1\do{\keydef{#1}{#2}}}
+% \end{verbatim}
+% does not work for me.
+% \end{compactenum}
+%
+% \StopEventually{\printbibliography}
+%
+% \section[id=impl]{The Implementation}
+%
+% The |sref| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% We first set up header information for the {\latexml} binding file.
+% \begin{macrocode}
+%<*ltxml>
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{need an implementation for {\latexml}}
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\if@rdfmeta@sectioning\@rdfmeta@sectioningfalse
+\DeclareOption{sectioning}{\@rdfmeta@sectioningtrue}
+\ProcessOptions
+%</package>
+%<*ltxml>
+DeclareOption('showmeta','');
+DeclareOption('sectioning','');
+%</ltxml>
+% \end{macrocode}
+%
+% The first measure is to ensure that the right packages are loaded. From the from {\stex}
+% collection, we need the |sref| package (see~\ctancite{Kohlhase:sref}) for handling keys,
+% the |modules| package for exporting the |\keydef| (see~\ctancite{KohAmb:smmssl}).
+% \begin{macrocode}
+%<*package>
+\RequirePackage{sref,modules}
+%</package>
+% \end{macrocode}
+%
+% \subsection[id=impl:keydef]{Key Definitions}
+%
+% \begin{macro}{\keydef}
+% The |\keydef| macro is rather simple, we just add a key to the respective environment
+% and extend the export token register for the current module by an |\addmetakey|
+% instruction.
+% \begin{macrocode}
+%<*package>
+\newcommand\keydef[2]{\addmetakey{#1}{#2}%
+\expandafter\g@addto@macro\this@module{\addmetakey{#1}{#2}}}
+%</package>
+%<*ltxml>
+DefConstructor('\keydef','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listkeydef}
+% The |\listkeydef| macro is analogous, but uses |\addmetalistkey| instead.
+% instruction.
+% \begin{macrocode}
+%<*package>
+\newcommand\listkeydef[2]{\addmetalistkey{#1}{#2}%
+\expandafter\g@addto@macro\this@module{\addmetalistkey{#1}{#2}}}
+%</package>
+%<*ltxml>
+DefConstructor('\listkeydef','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection[id=impl:upgrade]{RDFa upgrade Facilities}
+%
+% We first define the keys for the |\rdfmeta@upgrade| macro.
+% \begin{macrocode}
+%<*package>
+\def\@yes@{yes}
+\addmetakey*{upgrade}{idlabel}
+\addmetakey*{upgrade}{optarg}
+\addmetakey*[yes]{upgrade}{optargstar}
+\addmetakey*{upgrade}{keygroup}
+% \end{macrocode}
+%
+% \begin{macro}{\rdfmeta@upgrade}
+% This upgrade macro gives extended functionality according to the optional keys. The
+% top-level invocation just differentiates on whether a star is following:
+% \begin{macrocode}
+\def\rdfmeta@upgrade{\@ifstar\rdfmeta@upgrade@star\rdfmeta@upgrade@nostar}
+% \end{macrocode}
+% Both cases are almost the same, they only differ in the third line where they call
+% |\rdfmeta@upgrade@base| or |\rdfmeta@upgrade@base@star| defined above. In particular,
+% both take the arguments originally intended for |\rdfmeta@upgrade|.
+% \begin{macrocode}
+\newcommand\rdfmeta@upgrade@nostar[2][]{\metasetkeys{upgrade}{#1}%
+\ifx\upgrade@keygroup\@empty\def\@@group{#2}\else\def\@@group{\upgrade@keygroup}\fi
+\rdfmeta@upgrade@base{#2}{\@nameuse{\@@group @\upgrade@optarg}}}
+% \end{macrocode}
+% They set the metakeys from the second argument, then set |\@@group| to be the intended
+% group (if the |keygroup| key was specified, it takes precedence over the default
+% |#2|).
+% \begin{macrocode}
+\newcommand\rdfmeta@upgrade@star[2][]{\metasetkeys{upgrade}{#1}%
+\ifx\upgrade@keygroup\@empty\def\@@group{#2}\else\def\@@group{\upgrade@keygroup}\fi
+\rdfmeta@upgrade@base@star{#2}{\@nameuse{\@@group @\upgrade@optarg}}}
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rdfmeta@upgrade@base}
+% This auxiliary macro and is invoked as
+% |\rdfmeta@upgrade@base{|\meta{cseq}|}{|\meta{optarg}|}|, where \meta{cseq} is a
+% command sequence name. It checks if |\|\meta{cseq} is defined (if not it does
+% nothing), saves the old behavior of |\|\meta{cseq} as |\rdfmeta@|\meta{cseq}|@old|,
+% and then redefines |\|\meta{cseq} to take a keyval argument and passes \meta{optarg}
+% as the optional argument.
+% \begin{macrocode}
+%<*package>
+\newcommand{\rdfmeta@upgrade@base}[2]{\@ifundefined{#1}{}%
+{\message{redefining macro #1,}
+\ifx\upgrade@idlabel\@empty\srefaddidkey{#1}\else\srefaddidkey[prefix=\upgrade@idlabel]{#1}\fi%
+\expandafter\let\csname rdfmeta@#1@old\expandafter\endcsname\csname #1\endcsname%
+\expandafter\renewcommand\csname #1\endcsname[2][]%
+{\metasetkeys{#1}{##1}\@nameuse{rdfmeta@#1@old}[#2]{##2}}
+\addmetakey*\@@group{\upgrade@optarg}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rdfmeta@upgrade@base@star}
+% This is a variant of |\rdfmeta@upgrade@base|, which also takes care of the starred
+% variants of a macro.
+% \begin{macrocode}
+\newcommand\rdfmeta@upgrade@base@star[2]{\@ifundefined{#1}{}%
+{\message{redefining macros #1 and #1*,}
+\ifx\upgrade@idlabel\@empty\srefaddidkey{#1}\else\srefaddidkey[prefix=\upgrade@idlabel]{#1}\fi%
+\expandafter\let\csname rdfmeta@#1@old\expandafter\endcsname\csname #1\endcsname%
+% \end{macrocode}
+% In this case, we cannot just use |\newcommand| for dealing with the optional argument
+% because the star is between the command sequence and the arguments. So we make a case
+% distinction on the presence of the star.
+% |\rdfmeta@|\meta{cseq}|@old|.
+% \begin{macrocode}
+\expandafter\renewcommand\csname #1\endcsname%
+{\@ifstar{\@nameuse{rdfmeta@#1@star}}{\@nameuse{rdfmeta@#1@nostar}}}%
+% \end{macrocode}
+% the macros |\rdfmeta@|\meta{cseq}|@star| and |\rdfmeta@|\meta{cseq}|@nostar| that are
+% defined in terms of |\rdfmeta@|\meta{cseq}|@old| handle the necessary cases. The second
+% one is simple:
+% \begin{macrocode}
+\expandafter\newcommand\csname rdfmeta@#1@nostar\endcsname[2][]%
+{\metasetkeys{#1}{##1}\edef\@test{#2}%
+\ifx\@test\@empty\@nameuse{rdfmeta@#1@old}{##2}%
+\else\@nameuse{rdfmeta@#1@old}[#2]{##2}\fi}%
+% \end{macrocode}
+% For |\rdfmeta@|\meta{cseq}|@star| we have to take care of the optional argument of the
+% old macro: if the |optargstar| key was set, then we pass the second argument of
+% |\rdfmeta@upgrade@base| as an optional argument to it as above.
+% \begin{macrocode}
+\ifx\upgrade@optargstar\@yes@%
+\expandafter\newcommand\csname rdfmeta@#1@star\endcsname[2][]%
+{\metasetkeys{#1}{##1}\@nameuse{rdfmeta@#1@old}*[#2]{##2}}%
+\else%
+\expandafter\newcommand\csname rdfmeta@#1@star\endcsname[2][]%
+{\metasetkeys{#1}{##1}\@nameuse{rdfmeta@#1@old}*{##2}}%
+\fi%
+\addmetakey*\@@group{\upgrade@optarg}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection[id=impl:redef]{Redefinitions}
+%
+% If the |sectioning| macro is set, we redefine the respective commands
+%
+% \begin{macrocode}
+%<*package>
+\if@rdfmeta@sectioning
+\message{redefining sectioning commands!}
+\rdfmeta@upgrade*[optarg=short,optargstar=no]{part}
+\rdfmeta@upgrade*[optarg=short,optargstar=no]{chapter}
+\rdfmeta@upgrade*[optarg=short,optargstar=no]{section}
+\rdfmeta@upgrade*[optarg=short,optargstar=no]{subsection}
+\rdfmeta@upgrade*[optarg=short,optargstar=no]{subsubsection}
+\rdfmeta@upgrade*[optarg=short,optargstar=no]{paragraph}
+\fi
+%</package>
+%<*ltxml>
+%</ltxml>
+% \end{macrocode}
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+% LocalWords: GPL structuresharing STR LaTeX dcm dtx keyval sref CPERL url qw
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+% LocalWords: RequirePackage birthdate personaltitle academictitle workaddress
+% LocalWords: privaddress worktel privtel workfax privfax worktelfax noDelim
+% LocalWords: privtelfax getKeyValue valuelist ToString getValue affill STDERR
+% LocalWords: ExportMetadata AssignValue DCMperson DefConstructor afterDigest
+% LocalWords: getArg setValue FishOutMetadata keyvals foreach idlist tabline
+% LocalWords: LookupValue insertElement atabline bitabline shorttitle nc args
+% LocalWords: sharealike noderivativeworks DefMacro authorblock subsubsection
+% LocalWords: contribs OptionalKeyVals omgroup omdoc srcref xml RawTeX
+% LocalWords: openElement iffalse kohlhase Thu rdfmeta latexml fileversion omd
+% LocalWords: maketitle setcounter tocdepth tableofcontents newpage section
+% LocalWords: stex exfig vspace hrule lstinputlisting morekeywords aboveskip
+% LocalWords: hasstate.omdoc statedocrd tuev certifiation keydef ednote texttt
+% LocalWords: keysets rdfameta cseq idlabel ctancite ifundefined impl ltxml
+% LocalWords: printbibliography newcommand srefaddidkey expandafter csname ifx
+% LocalWords: expandafter endcsname csname endcsname renewcommand showmeta
+% LocalWords: symdef redef doctex showmeta metakeys keyset textbackslash cert
+% LocalWords: MathOntoAuthDoc09 WD-rdfa-core-20100803 hasstate omtext omtext
+% LocalWords: addkey optarg optarg toctitle optargstar optargstar keygroup
+% LocalWords: oldpart textsf langle textsf langle newif sectioningfalse ifstar
+% LocalWords: sectioningtrue metasetkeys nameuse addmetakey nostar
diff --git a/Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.ins b/Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.ins
new file mode 100644
index 00000000000..a653fa0ed4b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/rdfmeta/rdfmeta.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex rdfmeta.ins
+%%
+%% Copyright(c) 2008 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/rdfmeta/rdfmeta.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{rdfmeta.sty}{\from{rdfmeta.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file rdfmeta.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{rdfmeta.sty.ltxml}{\from{rdfmeta.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated file rdfmeta.sty.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx b/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx
new file mode 100644
index 00000000000..ffb9569a037
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx
@@ -0,0 +1,387 @@
+% \iffalse meta-comment
+% Semantic Markup for Requirement Specification Documents
+% Copyright (c) 2008 Michael Kohlhase, all rights reserved
+%
+% This file is distributed under the terms of the LaTeX Project Public
+% License from CTAN archives in directory macros/latex/base/lppl.txt.
+% Either version 1.0 or, at your option, any later version.
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/reqdoc/reqdoc.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{reqdoc}[2012/01/28 v0.3 Semantic Requirement Documents]
+%
+%<*driver>
+\documentclass[twoside]{ltxdoc}
+\EnableCrossrefs
+%\CodelineIndex
+%\OnlyDescription
+\RecordChanges
+\usepackage{reqdoc}
+\usepackage{textcomp,url,a4wide}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage[eso-foot,today,draft]{svninfo}
+\svnInfo $Id: reqdoc.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/reqdoc/reqdoc.dtx $
+\usepackage{stex-logo}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\makeindex
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{reqdoc.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{198}
+%
+% \changes{v0.3}{2008/06/26}{Integrated LaTeXML bindings}
+% \changes{v0.2}{2008/02/04}{First Version with Documentation}
+% \changes{v0.1}{2008/01/18}{First Version}
+%
+% \GetFileInfo{reqdoc.sty}
+%
+% \MakeShortVerb{\|}
+% \def\latexml{{\LaTeX}ML}
+%
+% \title{{\texttt{reqdoc.sty}}: Semantic Markup for Requirements Specification Documents\thanks{Version
+% {\fileversion} (last revised {\filedate})}}
+% \author{Michael Kohlhase\\
+% Computer Science, Jacobs University\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% This package provides an infrastructure for semantically enhanced requirements
+% specifications used in software engineering. This allows to embed structural
+% information into documents that can be used by semantic document management systems
+% e.g. for management of change and requirements tracing.
+% \end{abstract}
+%
+% \newpage\tableofcontents\newpage
+%
+% \section{Introduction}\label{sec:intro}
+%
+% In software engineering, the development process is accompanied with a trail of
+% structured documents, user specifications, architecture specifications, test reports,
+% etc. All of these documents\ednote{continue}
+%
+% For an example of a requirement document see the file |requirements.tex| provided in
+% this package. \ednote{need to bring this in line with the \texttt{sref} package}
+%
+% \section{The User Interface}\label{sec:interface}
+%
+% \subsection{Package Options}
+%
+% The |reqdoc| package takes the package option \DescribeMacro{recorddeps}|recorddeps|. If
+% this is given, then the package generates an external file with dependencies that can be
+% used by external systems like the {\texttt{locutor}} system\ednote{add citation here},
+% see Section~\ref{sec:moc-deps}. If the \DescribeMacro{showmeta}|showmeta| is set, then
+% the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details and customization
+% options).
+%
+% \subsection{Requirements}
+% The |reqdoc| package supplies two forms of writing down requirements that mainly differ
+% in their presentation. We can have requirement lists and requirement tables.
+%
+% \DescribeEnv{requirements} The |requirements| environment marks up a list of
+% requirements. It takes an optional key/value list as an argument: if |numbering| is set
+% to |yes| (the default), then the requirements are numbered for referencing it visually;
+% the label is created using the prefix specified in the key |prefix|.
+%
+% \DescribeEnv{requirement} The individual requirements are specified by the |requirement|
+% environment, which takes an optional key/value list as an argument: the |id| key allows
+% to specify a symbolic label for cross-referencing, the |prio| key allows to specify a
+% priority of the requirement, the |reqs| key allows to specify a comma-separated list of
+% labels of requibments this one depends on or refines. Finally, the visual label of the
+% requirement can be fixed by the |num| key\ednote{this is not implemented yet}.
+%
+% \DescribeEnv{reqtable} The |reqtable| environment is a varian of the |\requirements|
+% environment that shows the requirements in a tabular form that gives a better overview;
+% its optional key/value argument works the same. \DescribeMacro{\reqline}The respective
+% requirements are marked up with the |\reqline| macro, which takes three arguments. The
+% first one is an optional key/value specification and corresponds to be one on the
+% |requirement| environment. The second one contains the actual text of the requirements
+% and the third one a comment.
+%
+% \DescribeMacro{\importreqs}Note that if we want to refer to requirements from a document
+% \meta{doc}, then we will need to know about their representations and can import the
+% necessary information via |\importreqs{|\meta{doc}|}|.
+%
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+% \newpage
+%
+% \section{The Implementation}\label{sec.impl}
+%
+% The |reqdoc| package generates to files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$}} and
+% {\textsf{$\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \subsection{Package Options}\label{sec.impl.options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{need an implementation for {\latexml}}
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\if@deps\@depsfalse
+\DeclareOption{recorddeps}{\@depstrue}
+\ProcessOptions
+% \end{macrocode}
+% Then we load a couple of packages
+% \begin{macrocode}
+\RequirePackage{sref}
+\RequirePackage{longtable}
+%</package>
+%<*ltxml>
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% Then we register the namespace of the requirements ontology
+% \begin{macrocode}
+%<*ltxml>
+RegisterNamespace('r'=>"http://omdoc.org/ontology/requirements#");
+RegisterDocumentNamespace('r'=>"http://omdoc.org/ontology/requirements#");
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Requirements}\label{sec.impl.requirements}
+%
+% \begin{environment}{requirements}
+% and now the |requirements| environment, it is empty at the moment\ednote{think about
+% this again!}
+% \begin{macrocode}
+%<*package>
+\newif\ifreqsnum\reqsnumfalse
+\addmetakey{reqs}{numbering}
+\addmetakey[R]{reqs}{prefix}
+\def\reqs@no{no}
+\newenvironment{requirements}[1][]%
+{\metasetkeys{reqs}{#1}\ifx\reqs@numbering\reqs@no\reqsnumfalse\else\reqsnumtrue\fi}{}
+%</package>
+%<*ltxml>
+DefEnvironment('{requirements} OptionalKeyVals:reqs',
+ "<omdoc:omgroup type='itemize'>#body</omdoc:omgroup>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% We define a group of keywords using the |\addmetakey| command from the |metakeys|
+% package~\ctancite{Kohlhase:metakeys}. The group below, named as |req|, consists of three
+% keywords |id|, |prio| and |refs|.
+% \begin{macrocode}
+%<*package>
+\addmetakey{req}{id}
+\addmetakey{req}{prio}
+\addmetakey{req}{refs}
+\addmetakey{req}{num}
+\newcounter{reqnum}[section]
+% \end{macrocode}
+% This function cycles over a comma-separated list and does the references
+% \begin{macrocode}
+\def\req@do@refs#1#2{\let\@tmpop=\relax\@for\@I:=#1\do{\@tmpop\req@do@ref{\@I}\let\@tmpop=#2}}
+% \end{macrocode}
+% The |\req@do@ref| command creates a hyperlink from \ednote{What is req at ref? It has
+% appeared for the first time.}
+% \begin{macrocode}
+\def\req@do@ref#1{\sref@hlink@ifh{#1}{\req@ref{#1}{number}}}
+% \end{macrocode}
+% this function defines a requirement aspect
+% the first arg is the label, the second one the aspect to be defined and the third one the value
+% expand |csname| before |xdef|
+%
+% The command |\req@def@aux| creates the name of a command,
+% which is determined by the text given between |\csname| and |\endcsname|,
+% and defines this command globally to function as |#3|.
+% We use the command |\expandafter| in the definition of |\req@def@aux|
+% to execute the command |\xdef| after |\csname| is executed.
+% \begin{macrocode}
+\def\req@def@aux#1#2#3{\expandafter\xdef\csname req@#1@#2\endcsname{#3}}
+% \end{macrocode}
+% this function takes the same arguments and writes the command to the aux file
+% \begin{macrocode}
+\def\req@write@aux#1#2#3{\protected@write\@auxout{}{\string\req@def@aux{#1}{#2}{\thesection.#3}}}
+% \end{macrocode}
+% and finally this function does both
+% \begin{macrocode}
+\def\req@def#1#2#3{\req@def@aux{#1}{#2}{#3}\req@write@aux{#1}{#2}{#3}}
+% \end{macrocode}
+% this function references an aspect of a requirement.
+% \begin{macrocode}
+\def\req@ref#1#2{\csname req@#1@#2\endcsname}
+% \end{macrocode}
+% these functions print the priority, label, and references (if specified)
+% \begin{macrocode}
+\def\print@req@prio{\ifx\req@prio\@empty\else(Priority: \req@prio)\fi}
+\def\print@req@label{\sref@target@ifh\req@id{\reqs@prefix\arabic{reqnum}: }}
+\def\print@req@refs{\ifx\req@refs\@empty\else\hfill [from~\req@do@refs{\req@refs}{,}]\fi}
+% \end{macrocode}
+% \ednote{What are |number| and |\thereqnum|?}
+% First argument is a list of key-value pairs which are assigned to req.
+% Increase the counter reqnum, i.e., increase the requirement number.
+% Remember the number for reference.
+% Print the requirement label (with the requirement number)
+% Print the priority?
+% Print the requirement (given as arg 2)
+% Print the references
+% We define a new command |\reqnote| to annotate the notes given for a requirement.
+% The command |\reqnote| simply prints the note, which is given by the user as a text,
+% in the form |Note: <text>|.
+% \begin{environment}{requirement}
+% \begin{macrocode}
+\newenvironment{requirement}[1][]%
+{\metasetkeys{req}{#1}\stepcounter{reqnum}
+\ifreqsnum\ifx\req@id\@empty\else\req@def\req@id{number}\thereqnum\fi
+\noindent\textbf{\print@req@label}\fi
+\newcommand{\reqnote}[1]{\par\noindent Note: ##1}
+\print@req@prio}
+{\medskip\print@req@refs}
+%</package>
+%<*ltxml>
+DefEnvironment('{requirement} OptionalKeyVals:req',
+ "<omdoc:omtext ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() r:dummy='to ensure the namespace'>"
+ . "<omdoc:meta property='texttype' content='r:requirement'/>"
+ . "?&KeyVal(#1,'refs')(<omdoc:link rel='r:dependsOn' href='#&KeyVal(#1,'refs')'/>)()"
+ . "#body"
+ ."</omdoc:omtext>");
+DefConstructor('\reqnote{}',
+ "<omdoc:note type='requirement'>#1</omdoc:note>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{reqtable}
+% \begin{macrocode}
+%<*package>
+\newenvironment{reqtable}[1][]{\metasetkeys{reqs}{#1}
+\begin{center}\begin{longtable}{|l|l|p{6cm}|p{5cm}|l|}\hline
+\# & Prio & Requirement & Notes & Refs\\\hline\hline}
+{\end{longtable}\end{center}}
+%</package>
+%<*ltxml>
+DefEnvironment('{reqtable} OptionalKeyVals:reqs',
+ "<omdoc:omgroup type='itemize'>#body</omdoc:omgroup>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\reqline}
+% \begin{macrocode}
+%<*package>
+\newcommand{\reqline}[3][]%
+{\metasetkeys{req}{#1}\stepcounter{reqnum}
+\req@def\req@id{number}\thereqnum% remember the number for reference
+\textbf{\sref@target@ifh\req@id{\reqs@prefix\arabic{reqnum}}}&
+\req@prio &#2&#3&\req@do@refs\req@refs{,}\tabularnewline\hline}
+%</package>
+%<*ltxml>
+DefConstructor('\reqline OptionalKeyVals:req{}{}',
+ "<omdoc:omtext type='requirement'><omdoc:CMP>#2</omdoc:CMP></omdoc:omtext>"
+ ."<omdoc:omtext type='note'><omdoc:CMP>#3</omdoc:CMP></omdoc:omtext>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\importreqs}
+% The |\importreqs| macro reports a dependency to the dependencies file. and then reads
+% the |aux| file specified in the argument.
+% \begin{macrocode}
+%<*package>
+\newcommand{\importreqs}[1]{\req@dep@write{"#1.tex"}{IMPORTREQS}\makeatletter\input{#1.aux}\makeatother}
+%</package>
+%<*ltxml>
+DefConstructor('\importreqs {}',"<omdoc:imports from='#1'/>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rinput}
+% The |\rinput| macro\ednote{this should go somewhere up; probably merge with sinput;
+% which should also go into the stex package.} inputs the file and protocols this in
+% the dependencies file. Note that this only takes place on the top level; i.e. the
+% |\@ifdeps| switch is set to false.
+% \begin{macrocode}
+%<*package>
+\newcommand{\rinput}[1]{\req@dep@write{"#1.tex"}{[dt="input"]}\bgroup\@depsfalse\input{#1}\egroup}
+%</package>
+%<*ltxml>
+DefMacro('\rinput','\input');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Recording the dependencies for Change Management}\label{sec:moc-deps}
+%
+% The macros in this section record dependencies in a special file to be used in change
+% management by the {\texttt{locutor}} system. This is still not optimal, since we do not
+% know the actual path.
+%
+% \begin{macrocode}
+%<*package>
+\if@deps\newwrite\req@depfile
+\immediate\openout\req@depfile=\jobname.deps
+\AtEndDocument{\closeout\req@depfile}
+%</package>
+% \end{macrocode}
+% we redefine the |\importmodule| command, so that it does the reporting.
+% \begin{macrocode}
+%<*package>
+\renewcommand{\importmodule}[2][]{\req@dep@write{"#1.tex"}{[dt="importmodule"]}\def\@test{#1}%
+\ifx\@test\@empty\else\requiremodules{#1}\fi
+\expandafter\gdef\csname#2@cd@file@base\endcsname{#1}
+\activate@defs{#2}\export@defs{#2}}
+\fi
+%</package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\def\req@dep@write#1#2{\if@deps\protected@write\req@depfile{}{#1 #2}\fi}
+%</package>
+% \end{macrocode}
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+
+
+
+% LocalWords: iffalse reqdoc reqdoc.dtx kohlhase latexml texttt fileversion
+% LocalWords: maketitle newpage tableofcontents newpage ednote sref recorddeps
+% LocalWords: recorddeps moc-deps DescribeEnv prio reqs reqtable reqtable deps
+% LocalWords: reqline importreqs printbibliography sec.impl textsf langle ifx
+% LocalWords: textsf langle ltxml newif depsfalse depstrue longtable ifreqsnum
+% LocalWords: reqsnumfalse newenvironment reqsnumtrue omd
+% LocalWords: OptionalKeyVals omdoc omgroup ctancite req newcounter reqnum
+% LocalWords: tmpop tmpop csname xdef endcsname expandafter auxout thesection
+% LocalWords: hfill thereqnum reqnote stepcounter noindent textbf newcommand
+% LocalWords: medskip omtext texttype hline tabularnewline makeatletter rinput
+% LocalWords: makeatother sinput stex ifdeps bgroup egroup newwrite depfile
+% LocalWords: openout jobname.deps renewcommand requiremodules gdef defs defs
+% LocalWords: showmeta showmeta metakeys addmetakey metasetkeys
diff --git a/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.ins b/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.ins
new file mode 100644
index 00000000000..35b644474ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex reqdoc.ins
+%%
+%% Copyright(c) 2007 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/reqdoc/reqdoc.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{reqdoc.sty}{\from{reqdoc.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file reqdoc.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{reqdoc.sty.ltxml}{\from{reqdoc.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/schema/Makefile b/Master/texmf-dist/source/latex/stex/schema/Makefile
new file mode 100644
index 00000000000..87995e15659
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/Makefile
@@ -0,0 +1,11 @@
+MAKEDIRS = rnc rng
+CLEANDIRS = rnc rng
+
+all::
+ @for d in $(MAKEDIRS);\
+ do (cd $$d && $(MAKE) -$(MAKEFLAGS) $@); done;
+
+clean distclean::
+ @for d in $(CLEANDIRS);\
+ do (cd $$d && $(MAKE) -$(MAKEFLAGS) $@); done;
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rnc
new file mode 100644
index 00000000000..effee37dec8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rnc
@@ -0,0 +1,491 @@
+# /=====================================================================\
+# | LaTeXML-bib.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+# Would be nice to use somebody elses already-developed DTD...
+
+# Some notes:
+# There're two classes of things here:
+# bibentry : which would be the translation of a .bib file
+# bibitem : which would be the formatted items in a latex bibliography environment.
+# This latter has typically lost much information during formatting.
+
+biblist =
+## A list of bibliographic \elementref{bibentry} or \elementref{bibitem}.
+element biblist { biblist_attributes & biblist_model }
+
+## Attributes for \elementref{biblist}.
+biblist_attributes = Common.attributes
+
+## Content model for \elementref{biblist}.
+biblist_model = bibentry* & bibitem*
+
+# ======================================================================
+# bibitem is the formatted, presentation, form, typically information has been lost;
+# it basically contains a biblabel and several bibblock's
+# ======================================================================
+
+bibitem =
+## A formatted bibliographic item, typically as written explicit
+## in a LaTeX article. This has generally lost most of the semantics
+## present in the BibTeX data.
+element bibitem { bibitem_attributes & bibitem_model }
+
+## Attributes for \elementref{bibitem}.
+bibitem_attributes =
+ Common.attributes &
+ ID.attributes &
+ ## The unique key for this object; this key is referenced by the
+ ## \attr{bibrefs} attribute of \elementref{bibref}.
+ attribute key { text }?
+
+## Content model for \elementref{bibitem}.
+bibitem_model = bibtag*, bibblock*
+
+#----------------------------------------------------------------------
+
+bibtag =
+## Various formatted tags for bibliographic items.
+## Typically @role refnum is shown in the displayed bibliography,
+## as the beginning of the item. Other roles
+## (eg. number, authors, fullauthors, year, title) record formatted
+## info to be used for filling in citations (\elementref{bibref}).
+element bibtag { bibtag_attributes & bibtag_model }
+
+## Attributes for \elementref{bibtag}.
+bibtag_attributes =
+ attribute role { ("number"|"authors"|"fullauthors"|"key"|"year"|"bibtype"|"title"|text) }? &
+ ## A delimiter for formatting the refnum in the bibliography
+ attribute open { text }? &
+ ## A delimiter for formatting the refnum in the bibliography
+ attribute close { text }?
+
+## Content model for \elementref{bibtag}.
+bibtag_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bibblock =
+## A block of data appearing within a \elementref{bibitem}.
+element bibblock { bibblock_attributes & bibblock_model }
+
+## Attributes for \elementref{bibblock}.
+bibblock_attributes = empty
+
+## Content model for \elementref{bibblock}.
+bibblock_model = Flow.model
+
+# bibblock's model was this:
+# Inline.model }
+
+# ======================================================================
+# bibentry is the (more) semantic form, typically extracted from bibtex.
+# ======================================================================
+
+bibentry =
+## Semantic representation of a bibliography entry,
+## typically resulting from parsing BibTeX
+element bibentry { bibentry_attributes & bibentry_model }
+
+bibentry.type = "article" | "book" | "booklet" | "conference" | "inbook"
+ | "incollection" | "inproceedings" | "manual" | "mastersthesis"
+ | "misc" | "phdthesis" | "proceedings" | "techreport" | "unpublished"
+ | "report" | "thesis" | "website" | "software" | "periodical"
+ | "collection" | "collection.article" | "proceedings.article"
+ | text
+
+## Attributes for \elementref{bibentry}.
+bibentry_attributes =
+ Common.attributes &
+ ID.attributes &
+
+ ## The unique key for this object; this key is referenced by the
+ ## \attr{bibrefs} attribute of \elementref{bibref}.
+ attribute key { text } &
+
+ ## The type of the referenced object. The values are a superset of
+ ## those types recognized by BibTeX, but is also open-ended for extensibility.
+ attribute type { bibentry.type }
+
+## Content model for \elementref{bibentry}.
+bibentry_model = Bibentry.class
+
+#======================================================================
+
+# Name related information
+bib-name =
+## Name of some participant in creating a bibliographic entry.
+element bib-name { bib-name_attributes & bib-name_model }
+
+## Attributes for \elementref{bib-name}.
+bib-name_attributes =
+ Common.attributes &
+ ## The role that this participant played in creating the entry.
+ attribute role { ("author" | "editor" | "translator" | text) }?
+
+## Content model for \elementref{bib-name}.
+bib-name_model = Bibname.model
+
+## The content model of the bibliographic name fields (\elementref{bib-name})
+Bibname.model = surname & givenname? & lineage?
+
+#----------------------------------------------------------------------
+
+surname =
+## Surname of a participant (\elementref{bib-name}).
+element surname { surname_attributes & surname_model }
+
+## Attributes for \elementref{surname}.
+surname_attributes = empty
+
+## Content model for \elementref{surname}.
+surname_model = Inline.model
+
+#----------------------------------------------------------------------
+
+givenname =
+## Given name of a participant (\elementref{bib-name}).
+element givenname { givenname_attributes & givenname_model }
+
+## Attributes for \elementref{givenname}.
+givenname_attributes = empty
+
+## Content model for \elementref{givenname}.
+givenname_model = Inline.model
+
+#----------------------------------------------------------------------
+
+lineage =
+## Lineage of a participant (\elementref{bib-name}), eg. Jr. or similar.
+element lineage { lineage_attributes & lineage_model }
+
+## Attributes for \elementref{lineage}.
+lineage_attributes = empty
+
+## Content model for \elementref{lineage}.
+lineage_model = Inline.model
+
+#======================================================================
+
+# Title related information
+bib-title =
+## Title of a bibliographic entry.
+element bib-title { bib-title_attributes & bib-title_model }
+
+## Attributes for \elementref{bib-title}.
+bib-title_attributes = Common.attributes
+
+## Content model for \elementref{bib-title}.
+bib-title_model = Inline.model
+#----------------------------------------------------------------------
+
+bib-subtitle =
+## Subtitle of a bibliographic entry.
+element bib-subtitle { bib-subtitle_attributes & bib-subtitle_model }
+
+## Attributes for \elementref{bib-subtitle}.
+bib-subtitle_attributes = Common.attributes
+
+## Content model for \elementref{bib-subtitle}.
+bib-subtitle_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-key =
+## Unique key of a bibliographic entry.
+element bib-key { bib-key_attributes & bib-key_model }
+
+## Attributes for \elementref{bib-key}.
+bib-key_attributes = Common.attributes
+
+## Content model for \elementref{bib-key}.
+bib-key_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-type =
+## Type of a bibliographic entry.
+element bib-type { bib-type_attributes & bib-type_model }
+
+## Attributes for \elementref{bib-type}.
+bib-type_attributes = Common.attributes
+
+## Content model for \elementref{bib-type}.
+bib-type_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-date =
+## Date of a bibliographic entry.
+element bib-date { bib-date_attributes & bib-date_model }
+
+## Attributes for \elementref{bib-date}.
+bib-date_attributes =
+ Common.attributes &
+ ## characterizes what happened on the given date
+ attribute role { ("publication" | "copyright" | text) }?
+
+## Content model for \elementref{bib-date}.
+bib-date_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-publisher =
+## Publisher of a bibliographic entry.
+element bib-publisher { bib-publisher_attributes & bib-publisher_model }
+
+## Attributes for \elementref{bib-publisher}.
+bib-publisher_attributes = Common.attributes
+
+## Content model for \elementref{bib-publisher}.
+bib-publisher_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-organization =
+## Organization responsible for a bibliographic entry.
+element bib-organization { bib-organization_attributes & bib-organization_model }
+
+## Attributes for \elementref{bib-organization}.
+bib-organization_attributes = Common.attributes
+
+## Content model for \elementref{bib-organization}.
+bib-organization_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-place =
+## Location of publisher or event
+element bib-place { bib-place_attributes & bib-place_model }
+
+## Attributes for \elementref{bib-place}.
+bib-place_attributes = Common.attributes
+
+## Content model for \elementref{bib-place}.
+bib-place_model = Inline.model
+
+# ---------------------------------------------------------------------
+bib-related =
+## A Related bibliographic object, such as the book or journal
+## that the current item is related to.
+element bib-related { bib-related_attributes & bib-related_model }
+
+## Attributes for \elementref{bib-related}.
+bib-related_attributes =
+ Common.attributes &
+ ## The type of this related entry.
+ attribute type { bibentry.type }? &
+ ## How this object relates to the containing object.
+ ## Particularly important is \attrval{host} which indicates that
+ ## the outer object is a part of this object.
+ attribute role { ("host" | "event" | "original" | text) }? &
+ ## If the bibrefs attribute is given, it is the key of another object in the bibliography,
+ ## and this element should be empty; otherwise the object should be described by
+ ## the content of the element.
+ attribute bibrefs { text }?
+
+## Content model for \elementref{bib-related}.
+bib-related_model = Bibentry.class
+
+# ---------------------------------------------------------------------
+
+bib-part =
+## Describes how the current object is related to a related (\elementref{bib-related})
+## object, in particular page, part, volume numbers and similar.
+element bib-part { bib-part_attributes & bib-part_model }
+
+## Attributes for \elementref{bib-part}.
+bib-part_attributes =
+ Common.attributes &
+ ## indicates how the value partitions the containing object.
+ attribute role { ("pages" | "part" | "volume" | "issue" | "number"
+ | "chapter" | "section" | "paragraph" | text) }?
+
+## Content model for \elementref{bib-part}.
+bib-part_model = Inline.model
+
+# ---------------------------------------------------------------------
+#
+
+bib-edition =
+## Edition of a bibliographic entry.
+element bib-edition { bib-edition_attributes & bib-edition_model }
+
+## Attributes for \elementref{bib-edition}.
+bib-edition_attributes = Common.attributes
+
+## Content model for \elementref{bib-edition}.
+bib-edition_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-status =
+## Status of a bibliographic entry.
+element bib-status { bib-status_attributes & bib-status_model }
+
+## Attributes for \elementref{bib-status}.
+bib-status_attributes = Common.attributes
+
+## Content model for \elementref{bib-status}.
+bib-status_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-identifier =
+## Some form of document identfier. The content is descriptive.
+element bib-identifier { bib-identifier_attributes & bib-identifier_model }
+
+## Attributes for \elementref{bib-identifier}.
+bib-identifier_attributes =
+ Common.attributes &
+ ## indicates what sort of identifier it is; it is open-ended for extensibility.
+ attribute scheme { "doi" | "issn" | "isbn" | "mr" | text }? &
+ ## the identifier.
+ attribute id { text}? &
+ ## a url to the document, if available
+ attribute href { text}?
+
+## Content model for \elementref{bib-identifier}.
+bib-identifier_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-review =
+## Review of a bibliographic entry. The content is descriptive.
+element bib-review { bib-review_attributes & bib-review_model }
+
+## Attributes for \elementref{bib-review}.
+bib-review_attributes =
+ Common.attributes &
+ ## indicates what sort of identifier it is; it is open-ended for extensibility.
+ attribute scheme { "doi" | "issn" | "isbn" | "mr" | text }? &
+ ## the identifier.
+ attribute id { text}? &
+ ## a url to the review, if available
+ attribute href { text}?
+
+## Content model for \elementref{bib-review}.
+bib-review_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-links =
+## Links to other things like preprints, source code, etc.
+element bib-links { bib-links_attributes & bib-links_model }
+
+## Attributes for \elementref{bib-links}.
+bib-links_attributes = Common.attributes
+
+## Content model for \elementref{bib-links}.
+bib-links_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-language =
+## Language of a bibliographic entry.
+element bib-language { bib-language_attributes & bib-language_model }
+
+## Attributes for \elementref{bib-language}.
+bib-language_attributes = Common.attributes
+
+## Content model for \elementref{bib-language}.
+bib-language_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-url =
+## A URL for a bibliographic entry. The content is descriptive
+element bib-url { bib-url_attributes & bib-url_model }
+
+## Attributes for \elementref{bib-url}.
+bib-url_attributes =
+ Common.attributes &
+ attribute href { text }?
+
+## Content model for \elementref{bib-url}.
+bib-url_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-extract =
+## An extract from the referenced object.
+element bib-extract { bib-extract_attributes & bib-extract_model }
+
+## Attributes for \elementref{bib-extract}.
+bib-extract_attributes =
+ Common.attributes &
+ ## Classify what kind of extract
+ attribute role { ("keywords" | "abstract" | "contents" | text) }?
+
+## Content model for \elementref{bib-extract}.
+bib-extract_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-note =
+## Notes about a bibliographic entry.
+element bib-note { bib-note_attributes & bib-note_model }
+
+## Attributes for \elementref{bib-note}.
+bib-note_attributes =
+ Common.attributes &
+ ## Classify the kind of note
+ attribute role { ("annotation" | "publication" | text) }?
+
+## Content model for \elementref{bib-note}.
+bib-note_model = Inline.model
+
+#----------------------------------------------------------------------
+
+bib-data =
+## Random data, not necessarily even text.
+## (future questions: should model be text or ANY? maybe should have encoding attribute?).
+element bib-data { bib-data_attributes & bib-data_model }
+
+## Attributes for \elementref{bib-data}.
+bib-data_attributes =
+ Common.attributes &
+ ## Classify the relationship of the data to the entry.
+ attribute role { text }? &
+ ## Classify the type of the data.
+ attribute type { text }?
+
+## Content model for \elementref{bib-data}.
+bib-data_model = Inline.model
+
+#======================================================================
+
+Bibentry.class =
+ bib-name*
+ & bib-title*
+ & bib-subtitle*
+ & bib-key*
+ & bib-type*
+ & bib-date*
+ & bib-publisher*
+ & bib-organization*
+ & bib-place*
+ & bib-part*
+ & bib-related*
+ & bib-edition*
+ & bib-status*
+ & bib-language*
+ & bib-url*
+ & bib-note*
+ & bib-extract*
+ & bib-identifier*
+ & bib-review*
+ & bib-links*
+ & bib-data*
+
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rng
new file mode 100644
index 00000000000..83f70a1c76d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-bib.rng
@@ -0,0 +1,774 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-bib.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Would be nice to use somebody elses already-developed DTD... -->
+ <!--
+ Some notes:
+ There're two classes of things here:
+ bibentry : which would be the translation of a .bib file
+ bibitem : which would be the formatted items in a latex bibliography environment.
+ This latter has typically lost much information during formatting.
+ -->
+ <define name="biblist">
+ <element name="biblist">
+ <a:documentation>A list of bibliographic \elementref{bibentry} or \elementref{bibitem}.</a:documentation>
+ <ref name="biblist_attributes"/>
+ <ref name="biblist_model"/>
+ </element>
+ </define>
+ <define name="biblist_attributes">
+ <a:documentation>Attributes for \elementref{biblist}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="biblist_model">
+ <a:documentation>Content model for \elementref{biblist}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="bibentry"/>
+ <ref name="bibitem"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!--
+ ======================================================================
+ bibitem is the formatted, presentation, form, typically information has been lost;
+ it basically contains a biblabel and several bibblock's
+ ======================================================================
+ -->
+ <define name="bibitem">
+ <element name="bibitem">
+ <a:documentation>A formatted bibliographic item, typically as written explicit
+in a LaTeX article. This has generally lost most of the semantics
+present in the BibTeX data.</a:documentation>
+ <ref name="bibitem_attributes"/>
+ <ref name="bibitem_model"/>
+ </element>
+ </define>
+ <define name="bibitem_attributes">
+ <a:documentation>Attributes for \elementref{bibitem}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="key">
+ <a:documentation>The unique key for this object; this key is referenced by the
+\attr{bibrefs} attribute of \elementref{bibref}.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibitem_model">
+ <a:documentation>Content model for \elementref{bibitem}.</a:documentation>
+ <zeroOrMore>
+ <ref name="bibtag"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bibblock"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bibtag">
+ <element name="bibtag">
+ <a:documentation>Various formatted tags for bibliographic items.
+Typically @role refnum is shown in the displayed bibliography,
+as the beginning of the item. Other roles
+(eg. number, authors, fullauthors, year, title) record formatted
+info to be used for filling in citations (\elementref{bibref}).</a:documentation>
+ <ref name="bibtag_attributes"/>
+ <ref name="bibtag_model"/>
+ </element>
+ </define>
+ <define name="bibtag_attributes">
+ <a:documentation>Attributes for \elementref{bibtag}.</a:documentation>
+ <optional>
+ <attribute name="role">
+ <choice>
+ <value>number</value>
+ <value>authors</value>
+ <value>fullauthors</value>
+ <value>key</value>
+ <value>year</value>
+ <value>bibtype</value>
+ <value>title</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="open">
+ <a:documentation>A delimiter for formatting the refnum in the bibliography</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close">
+ <a:documentation>A delimiter for formatting the refnum in the bibliography</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibtag_model">
+ <a:documentation>Content model for \elementref{bibtag}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bibblock">
+ <element name="bibblock">
+ <a:documentation>A block of data appearing within a \elementref{bibitem}.</a:documentation>
+ <ref name="bibblock_attributes"/>
+ <ref name="bibblock_model"/>
+ </element>
+ </define>
+ <define name="bibblock_attributes">
+ <a:documentation>Attributes for \elementref{bibblock}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="bibblock_model">
+ <a:documentation>Content model for \elementref{bibblock}.</a:documentation>
+ <ref name="Flow.model"/>
+ </define>
+ <!--
+ bibblock's model was this:
+ Inline.model }
+ -->
+ <!--
+ ======================================================================
+ bibentry is the (more) semantic form, typically extracted from bibtex.
+ ======================================================================
+ -->
+ <define name="bibentry">
+ <element name="bibentry">
+ <a:documentation>Semantic representation of a bibliography entry,
+typically resulting from parsing BibTeX</a:documentation>
+ <ref name="bibentry_attributes"/>
+ <ref name="bibentry_model"/>
+ </element>
+ </define>
+ <define name="bibentry.type">
+ <choice>
+ <value>article</value>
+ <value>book</value>
+ <value>booklet</value>
+ <value>conference</value>
+ <value>inbook</value>
+ <value>incollection</value>
+ <value>inproceedings</value>
+ <value>manual</value>
+ <value>mastersthesis</value>
+ <value>misc</value>
+ <value>phdthesis</value>
+ <value>proceedings</value>
+ <value>techreport</value>
+ <value>unpublished</value>
+ <value>report</value>
+ <value>thesis</value>
+ <value>website</value>
+ <value>software</value>
+ <value>periodical</value>
+ <value>collection</value>
+ <value>collection.article</value>
+ <value>proceedings.article</value>
+ <text/>
+ </choice>
+ </define>
+ <define name="bibentry_attributes">
+ <a:documentation>Attributes for \elementref{bibentry}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <attribute name="key">
+ <a:documentation>The unique key for this object; this key is referenced by the
+\attr{bibrefs} attribute of \elementref{bibref}.</a:documentation>
+ </attribute>
+ <attribute name="type">
+ <a:documentation>The type of the referenced object. The values are a superset of
+those types recognized by BibTeX, but is also open-ended for extensibility.</a:documentation>
+ <ref name="bibentry.type"/>
+ </attribute>
+ </define>
+ <define name="bibentry_model">
+ <a:documentation>Content model for \elementref{bibentry}.</a:documentation>
+ <zeroOrMore>
+ <ref name="Bibentry.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <!-- Name related information -->
+ <define name="bib-name">
+ <element name="bib-name">
+ <a:documentation>Name of some participant in creating a bibliographic entry.</a:documentation>
+ <ref name="bib-name_attributes"/>
+ <ref name="bib-name_model"/>
+ </element>
+ </define>
+ <define name="bib-name_attributes">
+ <a:documentation>Attributes for \elementref{bib-name}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>The role that this participant played in creating the entry.</a:documentation>
+ <choice>
+ <value>author</value>
+ <value>editor</value>
+ <value>translator</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-name_model">
+ <a:documentation>Content model for \elementref{bib-name}.</a:documentation>
+ <ref name="Bibname.model"/>
+ </define>
+ <define name="Bibname.model">
+ <a:documentation>The content model of the bibliographic name fields (\elementref{bib-name})</a:documentation>
+ <ref name="surname"/>
+ <optional>
+ <ref name="givenname"/>
+ </optional>
+ <optional>
+ <ref name="lineage"/>
+ </optional>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="surname">
+ <element name="surname">
+ <a:documentation>Surname of a participant (\elementref{bib-name}).</a:documentation>
+ <ref name="surname_attributes"/>
+ <ref name="surname_model"/>
+ </element>
+ </define>
+ <define name="surname_attributes">
+ <a:documentation>Attributes for \elementref{surname}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="surname_model">
+ <a:documentation>Content model for \elementref{surname}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="givenname">
+ <element name="givenname">
+ <a:documentation>Given name of a participant (\elementref{bib-name}).</a:documentation>
+ <ref name="givenname_attributes"/>
+ <ref name="givenname_model"/>
+ </element>
+ </define>
+ <define name="givenname_attributes">
+ <a:documentation>Attributes for \elementref{givenname}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="givenname_model">
+ <a:documentation>Content model for \elementref{givenname}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="lineage">
+ <element name="lineage">
+ <a:documentation>Lineage of a participant (\elementref{bib-name}), eg. Jr. or similar.</a:documentation>
+ <ref name="lineage_attributes"/>
+ <ref name="lineage_model"/>
+ </element>
+ </define>
+ <define name="lineage_attributes">
+ <a:documentation>Attributes for \elementref{lineage}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="lineage_model">
+ <a:documentation>Content model for \elementref{lineage}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <!-- Title related information -->
+ <define name="bib-title">
+ <element name="bib-title">
+ <a:documentation>Title of a bibliographic entry.</a:documentation>
+ <ref name="bib-title_attributes"/>
+ <ref name="bib-title_model"/>
+ </element>
+ </define>
+ <define name="bib-title_attributes">
+ <a:documentation>Attributes for \elementref{bib-title}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-title_model">
+ <a:documentation>Content model for \elementref{bib-title}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-subtitle">
+ <element name="bib-subtitle">
+ <a:documentation>Subtitle of a bibliographic entry.</a:documentation>
+ <ref name="bib-subtitle_attributes"/>
+ <ref name="bib-subtitle_model"/>
+ </element>
+ </define>
+ <define name="bib-subtitle_attributes">
+ <a:documentation>Attributes for \elementref{bib-subtitle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-subtitle_model">
+ <a:documentation>Content model for \elementref{bib-subtitle}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-key">
+ <element name="bib-key">
+ <a:documentation>Unique key of a bibliographic entry.</a:documentation>
+ <ref name="bib-key_attributes"/>
+ <ref name="bib-key_model"/>
+ </element>
+ </define>
+ <define name="bib-key_attributes">
+ <a:documentation>Attributes for \elementref{bib-key}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-key_model">
+ <a:documentation>Content model for \elementref{bib-key}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-type">
+ <element name="bib-type">
+ <a:documentation>Type of a bibliographic entry.</a:documentation>
+ <ref name="bib-type_attributes"/>
+ <ref name="bib-type_model"/>
+ </element>
+ </define>
+ <define name="bib-type_attributes">
+ <a:documentation>Attributes for \elementref{bib-type}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-type_model">
+ <a:documentation>Content model for \elementref{bib-type}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-date">
+ <element name="bib-date">
+ <a:documentation>Date of a bibliographic entry.</a:documentation>
+ <ref name="bib-date_attributes"/>
+ <ref name="bib-date_model"/>
+ </element>
+ </define>
+ <define name="bib-date_attributes">
+ <a:documentation>Attributes for \elementref{bib-date}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>characterizes what happened on the given date</a:documentation>
+ <choice>
+ <value>publication</value>
+ <value>copyright</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-date_model">
+ <a:documentation>Content model for \elementref{bib-date}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-publisher">
+ <element name="bib-publisher">
+ <a:documentation>Publisher of a bibliographic entry.</a:documentation>
+ <ref name="bib-publisher_attributes"/>
+ <ref name="bib-publisher_model"/>
+ </element>
+ </define>
+ <define name="bib-publisher_attributes">
+ <a:documentation>Attributes for \elementref{bib-publisher}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-publisher_model">
+ <a:documentation>Content model for \elementref{bib-publisher}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-organization">
+ <element name="bib-organization">
+ <a:documentation>Organization responsible for a bibliographic entry.</a:documentation>
+ <ref name="bib-organization_attributes"/>
+ <ref name="bib-organization_model"/>
+ </element>
+ </define>
+ <define name="bib-organization_attributes">
+ <a:documentation>Attributes for \elementref{bib-organization}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-organization_model">
+ <a:documentation>Content model for \elementref{bib-organization}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-place">
+ <element name="bib-place">
+ <a:documentation>Location of publisher or event</a:documentation>
+ <ref name="bib-place_attributes"/>
+ <ref name="bib-place_model"/>
+ </element>
+ </define>
+ <define name="bib-place_attributes">
+ <a:documentation>Attributes for \elementref{bib-place}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-place_model">
+ <a:documentation>Content model for \elementref{bib-place}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-related">
+ <element name="bib-related">
+ <a:documentation>A Related bibliographic object, such as the book or journal
+that the current item is related to.</a:documentation>
+ <ref name="bib-related_attributes"/>
+ <ref name="bib-related_model"/>
+ </element>
+ </define>
+ <define name="bib-related_attributes">
+ <a:documentation>Attributes for \elementref{bib-related}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="type">
+ <a:documentation>The type of this related entry.</a:documentation>
+ <ref name="bibentry.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="role">
+ <a:documentation>How this object relates to the containing object.
+Particularly important is \attrval{host} which indicates that
+the outer object is a part of this object.</a:documentation>
+ <choice>
+ <value>host</value>
+ <value>event</value>
+ <value>original</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bibrefs">
+ <a:documentation>If the bibrefs attribute is given, it is the key of another object in the bibliography,
+and this element should be empty; otherwise the object should be described by
+the content of the element.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-related_model">
+ <a:documentation>Content model for \elementref{bib-related}.</a:documentation>
+ <zeroOrMore>
+ <ref name="Bibentry.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-part">
+ <element name="bib-part">
+ <a:documentation>Describes how the current object is related to a related (\elementref{bib-related})
+object, in particular page, part, volume numbers and similar.</a:documentation>
+ <ref name="bib-part_attributes"/>
+ <ref name="bib-part_model"/>
+ </element>
+ </define>
+ <define name="bib-part_attributes">
+ <a:documentation>Attributes for \elementref{bib-part}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates how the value partitions the containing object.</a:documentation>
+ <choice>
+ <value>pages</value>
+ <value>part</value>
+ <value>volume</value>
+ <value>issue</value>
+ <value>number</value>
+ <value>chapter</value>
+ <value>section</value>
+ <value>paragraph</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-part_model">
+ <a:documentation>Content model for \elementref{bib-part}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!--
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ -->
+ <define name="bib-edition">
+ <element name="bib-edition">
+ <a:documentation>Edition of a bibliographic entry.</a:documentation>
+ <ref name="bib-edition_attributes"/>
+ <ref name="bib-edition_model"/>
+ </element>
+ </define>
+ <define name="bib-edition_attributes">
+ <a:documentation>Attributes for \elementref{bib-edition}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-edition_model">
+ <a:documentation>Content model for \elementref{bib-edition}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-status">
+ <element name="bib-status">
+ <a:documentation>Status of a bibliographic entry.</a:documentation>
+ <ref name="bib-status_attributes"/>
+ <ref name="bib-status_model"/>
+ </element>
+ </define>
+ <define name="bib-status_attributes">
+ <a:documentation>Attributes for \elementref{bib-status}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-status_model">
+ <a:documentation>Content model for \elementref{bib-status}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-identifier">
+ <element name="bib-identifier">
+ <a:documentation>Some form of document identfier. The content is descriptive.</a:documentation>
+ <ref name="bib-identifier_attributes"/>
+ <ref name="bib-identifier_model"/>
+ </element>
+ </define>
+ <define name="bib-identifier_attributes">
+ <a:documentation>Attributes for \elementref{bib-identifier}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="scheme">
+ <a:documentation>indicates what sort of identifier it is; it is open-ended for extensibility.</a:documentation>
+ <choice>
+ <value>doi</value>
+ <value>issn</value>
+ <value>isbn</value>
+ <value>mr</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="id">
+ <a:documentation>the identifier.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <a:documentation>a url to the document, if available</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-identifier_model">
+ <a:documentation>Content model for \elementref{bib-identifier}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-review">
+ <element name="bib-review">
+ <a:documentation>Review of a bibliographic entry. The content is descriptive.</a:documentation>
+ <ref name="bib-review_attributes"/>
+ <ref name="bib-review_model"/>
+ </element>
+ </define>
+ <define name="bib-review_attributes">
+ <a:documentation>Attributes for \elementref{bib-review}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="scheme">
+ <a:documentation>indicates what sort of identifier it is; it is open-ended for extensibility.</a:documentation>
+ <choice>
+ <value>doi</value>
+ <value>issn</value>
+ <value>isbn</value>
+ <value>mr</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="id">
+ <a:documentation>the identifier.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <a:documentation>a url to the review, if available</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-review_model">
+ <a:documentation>Content model for \elementref{bib-review}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-links">
+ <element name="bib-links">
+ <a:documentation>Links to other things like preprints, source code, etc.</a:documentation>
+ <ref name="bib-links_attributes"/>
+ <ref name="bib-links_model"/>
+ </element>
+ </define>
+ <define name="bib-links_attributes">
+ <a:documentation>Attributes for \elementref{bib-links}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-links_model">
+ <a:documentation>Content model for \elementref{bib-links}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-language">
+ <element name="bib-language">
+ <a:documentation>Language of a bibliographic entry.</a:documentation>
+ <ref name="bib-language_attributes"/>
+ <ref name="bib-language_model"/>
+ </element>
+ </define>
+ <define name="bib-language_attributes">
+ <a:documentation>Attributes for \elementref{bib-language}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-language_model">
+ <a:documentation>Content model for \elementref{bib-language}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-url">
+ <element name="bib-url">
+ <a:documentation>A URL for a bibliographic entry. The content is descriptive</a:documentation>
+ <ref name="bib-url_attributes"/>
+ <ref name="bib-url_model"/>
+ </element>
+ </define>
+ <define name="bib-url_attributes">
+ <a:documentation>Attributes for \elementref{bib-url}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="href"/>
+ </optional>
+ </define>
+ <define name="bib-url_model">
+ <a:documentation>Content model for \elementref{bib-url}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-extract">
+ <element name="bib-extract">
+ <a:documentation>An extract from the referenced object.</a:documentation>
+ <ref name="bib-extract_attributes"/>
+ <ref name="bib-extract_model"/>
+ </element>
+ </define>
+ <define name="bib-extract_attributes">
+ <a:documentation>Attributes for \elementref{bib-extract}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>Classify what kind of extract</a:documentation>
+ <choice>
+ <value>keywords</value>
+ <value>abstract</value>
+ <value>contents</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-extract_model">
+ <a:documentation>Content model for \elementref{bib-extract}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-note">
+ <element name="bib-note">
+ <a:documentation>Notes about a bibliographic entry.</a:documentation>
+ <ref name="bib-note_attributes"/>
+ <ref name="bib-note_model"/>
+ </element>
+ </define>
+ <define name="bib-note_attributes">
+ <a:documentation>Attributes for \elementref{bib-note}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>Classify the kind of note</a:documentation>
+ <choice>
+ <value>annotation</value>
+ <value>publication</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-note_model">
+ <a:documentation>Content model for \elementref{bib-note}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-data">
+ <element name="bib-data">
+ <a:documentation>Random data, not necessarily even text.
+(future questions: should model be text or ANY? maybe should have encoding attribute?).</a:documentation>
+ <ref name="bib-data_attributes"/>
+ <ref name="bib-data_model"/>
+ </element>
+ </define>
+ <define name="bib-data_attributes">
+ <a:documentation>Attributes for \elementref{bib-data}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>Classify the relationship of the data to the entry.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <a:documentation>Classify the type of the data.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bib-data_model">
+ <a:documentation>Content model for \elementref{bib-data}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Bibentry.class">
+ <choice>
+ <ref name="bib-name"/>
+ <ref name="bib-title"/>
+ <ref name="bib-subtitle"/>
+ <ref name="bib-key"/>
+ <ref name="bib-type"/>
+ <ref name="bib-date"/>
+ <ref name="bib-publisher"/>
+ <ref name="bib-organization"/>
+ <ref name="bib-place"/>
+ <ref name="bib-part"/>
+ <ref name="bib-related"/>
+ <ref name="bib-edition"/>
+ <ref name="bib-status"/>
+ <ref name="bib-language"/>
+ <ref name="bib-url"/>
+ <ref name="bib-note"/>
+ <ref name="bib-extract"/>
+ <ref name="bib-identifier"/>
+ <ref name="bib-review"/>
+ <ref name="bib-links"/>
+ <ref name="bib-data"/>
+ </choice>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rnc
new file mode 100644
index 00000000000..a8ccd452b7b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rnc
@@ -0,0 +1,305 @@
+# /=====================================================================\
+# | LaTeXML-block.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+## The block module defines the following `physical' block elements.
+Block.class &=
+ p* & equation* & equationgroup* & quote* & block* & listingblock*
+ & itemize* & enumerate* & description*
+
+
+## Additionally, it defines these miscellaneous elements that can appear
+## in both inline and block contexts.
+Misc.class &= inline-block* & verbatim* & break* & graphics* & svg*
+
+## Additional Metadata that can be present in equations.
+EquationMeta.class = constraint
+
+#======================================================================
+
+p =
+## A physical paragraph.
+element p { p_attributes & p_model }
+
+## Attributes for \elementref{p}.
+p_attributes = Common.attributes & ID.attributes & Positionable.attributes
+
+## Content model for \elementref{p}.
+p_model = Inline.model
+
+#======================================================================
+
+constraint =
+## A constraint upon an equation.
+element constraint { constraint_attributes & constraint_model }
+
+## Attributes for \elementref{constraint}.
+constraint_attributes =
+ attribute hidden { xsd:boolean }?
+
+## Content model for \elementref{constraint}.
+constraint_model = Inline.model
+
+#======================================================================
+
+equation =
+## An Equation. The model is just Inline which includes \elementref{Math},
+## the main expected ingredient.
+## However, other things can end up in display math, too, so we use Inline.
+## Note that tabular is here only because it's a common, if misguided, idiom;
+## the processor will lift such elements out of math, when possible
+element equation { equation_attributes & equation_model }
+
+## Attributes for \elementref{equation}.
+equation_attributes = Common.attributes & Labelled.attributes
+
+## Content model for \elementref{equation}.
+equation_model = Math* & MathFork* & \text* & tabular* & Meta.class & EquationMeta.class
+
+#======================================================================
+
+equationgroup =
+## A group of equations, perhaps aligned (Though this is nowhere recorded).
+element equationgroup { equationgroup_attributes & equationgroup_model }
+
+## Attributes for \elementref{equationgroup}.
+equationgroup_attributes = Common.attributes & Labelled.attributes
+
+## Content model for \elementref{equationgroup}.
+equationgroup_model = equationgroup* & equation* & p* & Meta.class & EquationMeta.class
+
+#======================================================================
+
+MathFork =
+## A wrapper for Math that provides alternative,
+## but typically less semantically meaningful,
+## formatted representations.
+## The first child is the meaningful form,
+## the extra children provide formatted forms,
+## for example being table rows or cells arising from an eqnarray.
+element MathFork { MathFork_attributes & MathFork_model }
+
+## Attributes for \elementref{MathFork}.
+MathFork_attributes = Common.attributes
+
+## Content model for \elementref{MathFork}.
+MathFork_model = Math, MathBranch*
+
+#======================================================================
+
+MathBranch =
+## A container for an alternatively formatted math representation.
+element MathBranch { MathBranch_attributes & MathBranch_model }
+
+## Attributes for \elementref{MathBranch}.
+MathBranch_attributes =
+ Common.attributes &
+ attribute format { text }?
+
+## Content model for \elementref{MathBranch}.
+MathBranch_model = Math* & tr* & td*
+
+#======================================================================
+
+quote =
+## A quotation.
+element quote { quote_attributes & quote_model }
+
+## Attributes for \elementref{quote}.
+quote_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{quote}.
+quote_model = Block.model
+# This was Inline.model, but since quotes can be arbitrarily complex
+# including equations, etc, not just verse, should be Block.model, perhaps even Para.model?
+
+#======================================================================
+
+block =
+## A generic block (fallback).
+element block { block_attributes & block_model }
+
+## Attributes for \elementref{block}.
+block_attributes = Common.attributes & ID.attributes & Positionable.attributes
+
+## Content model for \elementref{block}.
+block_model = Inline.model
+
+#======================================================================
+
+listingblock =
+## An in-block Listing, without caption
+element listingblock { listingblock_attributes & listingblock_model }
+
+## Attributes for \elementref{listingblock}.
+listingblock_attributes = Common.attributes & Labelled.attributes
+
+## Content model for \elementref{listingblock}.
+listingblock_model = Block.model*
+
+#======================================================================
+
+break =
+## A forced line break.
+element break { break_attributes & break_model }
+
+## Attributes for \elementref{break}.
+break_attributes = Common.attributes
+
+## Content model for \elementref{break}.
+break_model = empty
+
+#======================================================================
+
+inline-block =
+## An inline block. Actually, can appear in inline or block mode, but
+## typesets its contents as a block.
+element inline-block { inline-block_attributes & inline-block_model }
+
+## Attributes for \elementref{inline-block}.
+inline-block_attributes = Common.attributes & ID.attributes & Positionable.attributes
+
+## Content model for \elementref{inline-block}.
+inline-block_model = Block.model
+
+#======================================================================
+
+verbatim =
+## Verbatim content
+element verbatim { verbatim_attributes & verbatim_model }
+
+## Attributes for \elementref{verbatim}.
+verbatim_attributes =
+ Common.attributes &
+ ID.attributes &
+ ## the font to use; generally typewriter.
+ attribute font { text }? &
+
+ ## Indicates the text size to use. (See \elementref{text})
+ attribute size { "Huge" | "huge" | "LARGE" | "Large" | "large" | "normal"
+ | "small" | "footnote" | "tiny" | text }? &
+
+ ## the color to use; any CSS compatible color specification.
+ attribute color { text }?
+
+## Content model for \elementref{verbatim}.
+verbatim_model = Inline.model
+
+#======================================================================
+
+itemize =
+## An itemized list.
+element itemize { itemize_attributes & itemize_model }
+
+## Attributes for \elementref{itemize}.
+itemize_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{itemize}.
+itemize_model = item*
+
+#======================================================================
+
+enumerate =
+## An enumerated list.
+element enumerate { enumerate_attributes & enumerate_model }
+
+## Attributes for \elementref{enumerate}.
+enumerate_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{enumerate}.
+enumerate_model = item*
+
+#======================================================================
+
+description =
+## A description list. The \elementref{item}s within are expected to have a \elementref{tag}
+## which represents the term being described in each \elementref{item}.
+element description { description_attributes & description_model }
+
+## Attributes for \elementref{description}.
+description_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{description}.
+description_model = item*
+
+#======================================================================
+
+item =
+## An item within a list.
+element item { item_attributes & item_model }
+
+## Attributes for \elementref{item}.
+item_attributes = Common.attributes & Labelled.attributes
+
+## Content model for \elementref{item}.
+item_model = tag? & Para.model
+
+#======================================================================
+
+tag =
+## A tag within an item indicating the term or bullet for a given item.
+element tag { tag_attributes & tag_model }
+
+## Attributes for \elementref{tag}.
+tag_attributes =
+ Common.attributes &
+
+ ## specifies an open delimiters used to display the tag.
+ attribute open { text }? &
+
+ ## specifies an close delimiters used to display the tag.
+ attribute close { text }?
+
+## Content model for \elementref{tag}.
+tag_model = Inline.model
+
+#======================================================================
+
+graphics =
+## A graphical insertion of an external file.
+element graphics { graphics_attributes & graphics_model }
+
+## Attributes for \elementref{graphics}.
+graphics_attributes =
+ Common.attributes &
+ ID.attributes &
+ Imageable.attributes &
+
+ ## the path to the graphics file. This is the (often minimally specified) path
+ ## to a graphics file omitting the type extension. Once resolved to a specific
+ ## image file, the \attr{imagesrc} (from Imageable.attributes) is used.
+ attribute graphic { text }? &
+
+ ## a comma separated list of candidate graphics files that could be used to
+ ## for \attr{graphic}. A post-processor or application may choose from these,
+ ## or may make its own selection or synthesis to implement the graphic for a given target.
+ attribute candidates { text }? &
+
+ ## an encoding of the scaling and positioning options
+ ## to be used in processing the graphic.
+ attribute options { text }?
+
+
+## Content model for \elementref{graphics}.
+graphics_model = empty
+
+#======================================================================
+
+svg =
+## An SVG (Scalable Vector Graphics) object
+## [eventually must adapt to put LaTeXML objects in foreignObject]
+grammar {
+ include "svg11.rnc"
+ { SVG.foreignObject.content = parent Flow.model }
+}
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rng
new file mode 100644
index 00000000000..52721622c6b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-block.rng
@@ -0,0 +1,479 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-block.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Block.class" combine="choice">
+ <a:documentation>The block module defines the following `physical' block elements.</a:documentation>
+ <choice>
+ <ref name="p"/>
+ <ref name="equation"/>
+ <ref name="equationgroup"/>
+ <ref name="quote"/>
+ <ref name="block"/>
+ <ref name="listingblock"/>
+ <ref name="itemize"/>
+ <ref name="enumerate"/>
+ <ref name="description"/>
+ </choice>
+ </define>
+ <define name="Misc.class" combine="choice">
+ <a:documentation>Additionally, it defines these miscellaneous elements that can appear
+in both inline and block contexts.</a:documentation>
+ <choice>
+ <ref name="inline-block"/>
+ <ref name="verbatim"/>
+ <ref name="break"/>
+ <ref name="graphics"/>
+ <ref name="svg"/>
+ </choice>
+ </define>
+ <define name="EquationMeta.class">
+ <a:documentation>Additional Metadata that can be present in equations.</a:documentation>
+ <ref name="constraint"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="p">
+ <element name="p">
+ <a:documentation>A physical paragraph.</a:documentation>
+ <ref name="p_attributes"/>
+ <ref name="p_model"/>
+ </element>
+ </define>
+ <define name="p_attributes">
+ <a:documentation>Attributes for \elementref{p}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </define>
+ <define name="p_model">
+ <a:documentation>Content model for \elementref{p}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="constraint">
+ <element name="constraint">
+ <a:documentation>A constraint upon an equation.</a:documentation>
+ <ref name="constraint_attributes"/>
+ <ref name="constraint_model"/>
+ </element>
+ </define>
+ <define name="constraint_attributes">
+ <a:documentation>Attributes for \elementref{constraint}.</a:documentation>
+ <optional>
+ <attribute name="hidden">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="constraint_model">
+ <a:documentation>Content model for \elementref{constraint}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="equation">
+ <element name="equation">
+ <a:documentation>An Equation. The model is just Inline which includes \elementref{Math},
+the main expected ingredient.
+However, other things can end up in display math, too, so we use Inline.
+Note that tabular is here only because it's a common, if misguided, idiom;
+the processor will lift such elements out of math, when possible</a:documentation>
+ <ref name="equation_attributes"/>
+ <ref name="equation_model"/>
+ </element>
+ </define>
+ <define name="equation_attributes">
+ <a:documentation>Attributes for \elementref{equation}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="equation_model">
+ <a:documentation>Content model for \elementref{equation}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Math"/>
+ <ref name="MathFork"/>
+ <ref name="text"/>
+ <ref name="tabular"/>
+ <ref name="Meta.class"/>
+ <ref name="EquationMeta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="equationgroup">
+ <element name="equationgroup">
+ <a:documentation>A group of equations, perhaps aligned (Though this is nowhere recorded).</a:documentation>
+ <ref name="equationgroup_attributes"/>
+ <ref name="equationgroup_model"/>
+ </element>
+ </define>
+ <define name="equationgroup_attributes">
+ <a:documentation>Attributes for \elementref{equationgroup}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="equationgroup_model">
+ <a:documentation>Content model for \elementref{equationgroup}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="equationgroup"/>
+ <ref name="equation"/>
+ <ref name="p"/>
+ <ref name="Meta.class"/>
+ <ref name="EquationMeta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="MathFork">
+ <element name="MathFork">
+ <a:documentation>A wrapper for Math that provides alternative,
+but typically less semantically meaningful,
+formatted representations.
+The first child is the meaningful form,
+the extra children provide formatted forms,
+for example being table rows or cells arising from an eqnarray.</a:documentation>
+ <ref name="MathFork_attributes"/>
+ <ref name="MathFork_model"/>
+ </element>
+ </define>
+ <define name="MathFork_attributes">
+ <a:documentation>Attributes for \elementref{MathFork}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="MathFork_model">
+ <a:documentation>Content model for \elementref{MathFork}.</a:documentation>
+ <ref name="Math"/>
+ <zeroOrMore>
+ <ref name="MathBranch"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="MathBranch">
+ <element name="MathBranch">
+ <a:documentation>A container for an alternatively formatted math representation.</a:documentation>
+ <ref name="MathBranch_attributes"/>
+ <ref name="MathBranch_model"/>
+ </element>
+ </define>
+ <define name="MathBranch_attributes">
+ <a:documentation>Attributes for \elementref{MathBranch}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </define>
+ <define name="MathBranch_model">
+ <a:documentation>Content model for \elementref{MathBranch}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Math"/>
+ <ref name="tr"/>
+ <ref name="td"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="quote">
+ <element name="quote">
+ <a:documentation>A quotation.</a:documentation>
+ <ref name="quote_attributes"/>
+ <ref name="quote_model"/>
+ </element>
+ </define>
+ <define name="quote_attributes">
+ <a:documentation>Attributes for \elementref{quote}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="quote_model">
+ <a:documentation>Content model for \elementref{quote}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!--
+ This was Inline.model, but since quotes can be arbitrarily complex
+ including equations, etc, not just verse, should be Block.model, perhaps even Para.model?
+ -->
+ <!-- ====================================================================== -->
+ <define name="block">
+ <element name="block">
+ <a:documentation>A generic block (fallback).</a:documentation>
+ <ref name="block_attributes"/>
+ <ref name="block_model"/>
+ </element>
+ </define>
+ <define name="block_attributes">
+ <a:documentation>Attributes for \elementref{block}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </define>
+ <define name="block_model">
+ <a:documentation>Content model for \elementref{block}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="listingblock">
+ <element name="listingblock">
+ <a:documentation>An in-block Listing, without caption</a:documentation>
+ <ref name="listingblock_attributes"/>
+ <ref name="listingblock_model"/>
+ </element>
+ </define>
+ <define name="listingblock_attributes">
+ <a:documentation>Attributes for \elementref{listingblock}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="listingblock_model">
+ <a:documentation>Content model for \elementref{listingblock}.</a:documentation>
+ <zeroOrMore>
+ <ref name="Block.model"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="break">
+ <element name="break">
+ <a:documentation>A forced line break.</a:documentation>
+ <ref name="break_attributes"/>
+ <ref name="break_model"/>
+ </element>
+ </define>
+ <define name="break_attributes">
+ <a:documentation>Attributes for \elementref{break}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="break_model">
+ <a:documentation>Content model for \elementref{break}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="inline-block">
+ <element name="inline-block">
+ <a:documentation>An inline block. Actually, can appear in inline or block mode, but
+typesets its contents as a block.</a:documentation>
+ <ref name="inline-block_attributes"/>
+ <ref name="inline-block_model"/>
+ </element>
+ </define>
+ <define name="inline-block_attributes">
+ <a:documentation>Attributes for \elementref{inline-block}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </define>
+ <define name="inline-block_model">
+ <a:documentation>Content model for \elementref{inline-block}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="verbatim">
+ <element name="verbatim">
+ <a:documentation>Verbatim content</a:documentation>
+ <ref name="verbatim_attributes"/>
+ <ref name="verbatim_model"/>
+ </element>
+ </define>
+ <define name="verbatim_attributes">
+ <a:documentation>Attributes for \elementref{verbatim}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="font">
+ <a:documentation>the font to use; generally typewriter.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. (See \elementref{text})</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="verbatim_model">
+ <a:documentation>Content model for \elementref{verbatim}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="itemize">
+ <element name="itemize">
+ <a:documentation>An itemized list.</a:documentation>
+ <ref name="itemize_attributes"/>
+ <ref name="itemize_model"/>
+ </element>
+ </define>
+ <define name="itemize_attributes">
+ <a:documentation>Attributes for \elementref{itemize}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="itemize_model">
+ <a:documentation>Content model for \elementref{itemize}.</a:documentation>
+ <zeroOrMore>
+ <ref name="item"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="enumerate">
+ <element name="enumerate">
+ <a:documentation>An enumerated list.</a:documentation>
+ <ref name="enumerate_attributes"/>
+ <ref name="enumerate_model"/>
+ </element>
+ </define>
+ <define name="enumerate_attributes">
+ <a:documentation>Attributes for \elementref{enumerate}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="enumerate_model">
+ <a:documentation>Content model for \elementref{enumerate}.</a:documentation>
+ <zeroOrMore>
+ <ref name="item"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="description">
+ <element name="description">
+ <a:documentation>A description list. The \elementref{item}s within are expected to have a \elementref{tag}
+which represents the term being described in each \elementref{item}.</a:documentation>
+ <ref name="description_attributes"/>
+ <ref name="description_model"/>
+ </element>
+ </define>
+ <define name="description_attributes">
+ <a:documentation>Attributes for \elementref{description}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="description_model">
+ <a:documentation>Content model for \elementref{description}.</a:documentation>
+ <zeroOrMore>
+ <ref name="item"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="item">
+ <element name="item">
+ <a:documentation>An item within a list.</a:documentation>
+ <ref name="item_attributes"/>
+ <ref name="item_model"/>
+ </element>
+ </define>
+ <define name="item_attributes">
+ <a:documentation>Attributes for \elementref{item}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="item_model">
+ <a:documentation>Content model for \elementref{item}.</a:documentation>
+ <optional>
+ <ref name="tag"/>
+ </optional>
+ <ref name="Para.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tag">
+ <element name="tag">
+ <a:documentation>A tag within an item indicating the term or bullet for a given item.</a:documentation>
+ <ref name="tag_attributes"/>
+ <ref name="tag_model"/>
+ </element>
+ </define>
+ <define name="tag_attributes">
+ <a:documentation>Attributes for \elementref{tag}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="open">
+ <a:documentation>specifies an open delimiters used to display the tag.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close">
+ <a:documentation>specifies an close delimiters used to display the tag.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tag_model">
+ <a:documentation>Content model for \elementref{tag}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="graphics">
+ <element name="graphics">
+ <a:documentation>A graphical insertion of an external file. </a:documentation>
+ <ref name="graphics_attributes"/>
+ <ref name="graphics_model"/>
+ </element>
+ </define>
+ <define name="graphics_attributes">
+ <a:documentation>Attributes for \elementref{graphics}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Imageable.attributes"/>
+ <optional>
+ <attribute name="graphic">
+ <a:documentation>the path to the graphics file. This is the (often minimally specified) path
+to a graphics file omitting the type extension. Once resolved to a specific
+image file, the \attr{imagesrc} (from Imageable.attributes) is used.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="candidates">
+ <a:documentation>a comma separated list of candidate graphics files that could be used to
+for \attr{graphic}. A post-processor or application may choose from these,
+or may make its own selection or synthesis to implement the graphic for a given target.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="options">
+ <a:documentation>an encoding of the scaling and positioning options
+to be used in processing the graphic.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="graphics_model">
+ <a:documentation>Content model for \elementref{graphics}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="svg">
+ <grammar>
+ <a:documentation>An SVG (Scalable Vector Graphics) object
+[eventually must adapt to put LaTeXML objects in foreignObject]</a:documentation>
+ <include href="svg11.rng">
+ <define name="SVG.foreignObject.content">
+ <parentRef name="Flow.model"/>
+ </define>
+ </include>
+ </grammar>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rnc
new file mode 100644
index 00000000000..6beb53b14b6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rnc
@@ -0,0 +1,150 @@
+# /=====================================================================\
+# | LaTeXML-classes.rnc |
+# | Document Type for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+
+# Basic element classes:
+
+## All strictly inline elements.
+Inline.class = empty
+
+## All `physical' block elements.
+## A physical block is typically displayed as a block, but
+## may not constitute a complete logical unit.
+Block.class = empty
+
+## Additional miscellaneous elements that can appear in
+## both inline and block contexts.
+Misc.class = empty
+
+## All logical block level elements.
+## A logical block typically contains one or more physical block elements.
+## For example, a common situation might be \elementref{p},\elementref{equation},\elementref{p},
+## where the entire sequence comprises a single sentence.
+Para.class = empty
+
+## All metadata elements, typically representing hidden data.
+Meta.class = empty
+
+# ======================================================================
+# Attribute types
+
+## The type for attributes specifying a length.
+## Should be a number followed by a length, typically px.
+## NOTE: To be narrowed later.
+Length.type = text
+
+## The type for attributes specifying a color.
+## NOTE: To be narrowed later.
+Color.type = text
+
+# ======================================================================
+## Attributes shared by ALL elements.
+Common.attributes =
+
+# ## provides for namespace declaration.
+# attribute xmlns { text }? &
+
+ ## a space separated list of tokens, as in CSS.
+ ## The \attr{class} can be used to add differentiate different instances of elements
+ ## without introducing new element declarations.
+ ## However, this generally shouldn't be used for deep semantic distinctions.
+ ## This attribute is carried over to HTML and can be used for CSS selection.
+ ## [Note that the default XSLT stylesheets for html and xhtml
+ ## add the latexml element names to the class of html elements
+ ## for more convenience in using CSS.]
+ attribute class { xsd:NMTOKENS }?
+
+## Attributes for elements that can be cross-referenced
+## from inside or outside the document.
+ID.attributes =
+
+ ## the unique identifier of the element,
+ ## usually generated automatically by the latexml.
+ attribute xml:id { xsd:ID }?
+
+## Attributes for elements that can cross-reference other elements.
+IDREF.attributes =
+
+ ## the identifier of the referred-to element.
+ attribute idref { xsd:IDREF }?
+
+## Attributes for elements that can be labelled from within LaTeX.
+## These attributes deal with assigning a label and generating cross references.
+Labelled.attributes =
+ ID.attributes &
+
+ ## Records the various labels that LaTeX uses for crossreferencing.
+ ## (note that \cs{label} can associate more than one label with an object!)
+ ## It consists of space separated labels for the element.
+ ## The \cs{label} macro provides the label prefixed by \texttt{LABEL:};
+ ## Spaces in a label are replaced by underscore.
+ ## Other mechanisms (like acro?) might use other prefixes (but \texttt{ID:} is reserved!)
+ attribute labels { text }? &
+
+ ## the reference number (ie. section number, equation number, etc) of the object.
+ attribute refnum { text }? &
+
+ ## the formatted reference number of the object, typically this is the refnum with
+ ## the object type prepended, such as "Chapter 2"
+ attribute frefnum { text }?
+
+## Attributes shared by low-level, generic inline and block elements
+## that can be sized or shifted.
+Positionable.attributes =
+
+ ## the desired width of the box
+ attribute width { Length.type }? &
+
+ ## the desired height of the box
+ attribute height { Length.type }? &
+
+ ## the desired depth of the box
+ attribute depth { Length.type }? &
+
+ ## extra width beyond the boxes natural size.
+ attribute pad-width { Length.type }? &
+
+ ## extra height beyond the boxes natural size.
+ attribute pad-height { Length.type }? &
+
+ ## horizontal shift the position of the box.
+ attribute xoffset { Length.type }? &
+
+ ## vertical shift the position of the box.
+ attribute yoffset { Length.type }? &
+
+ ## alignment of material within the box.
+ attribute align { "left" | "center" | "right" | "justified" }? &
+
+ ## specifies which line of the box is aligned to the baseline of the containing object.
+ attribute vattach { "top" | "middle" | "bottom" }? &
+
+ ## the horizontal floating placement parameter that determines where the object is displayed.
+ attribute float { ( "right" | "left" | text) }?
+
+## Attributes for elements that may be converted to image form
+## during postprocessing, such as math, graphics, pictures, etc.
+Imageable.attributes =
+
+ ## the file, possibly generated from other data.
+ attribute imagesrc { xsd:anyURI }? &
+
+ ## the width in pixels of \attr{imagesrc}.
+ attribute imagewidth { xsd:nonNegativeInteger}? &
+
+ ## the height in pixels of \attr{imagesrc}.
+ attribute imageheight { xsd:nonNegativeInteger }? &
+
+ ## a description of the image
+ attribute description { text }?
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rng
new file mode 100644
index 00000000000..850da7753e7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-common.rng
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-classes.rnc |
+ | Document Type for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- Basic element classes: -->
+ <define name="Inline.class">
+ <a:documentation>All strictly inline elements.</a:documentation>
+ <notAllowed/>
+ </define>
+ <define name="Block.class">
+ <a:documentation>All `physical' block elements.
+A physical block is typically displayed as a block, but
+may not constitute a complete logical unit.</a:documentation>
+ <notAllowed/>
+ </define>
+ <define name="Misc.class">
+ <a:documentation>Additional miscellaneous elements that can appear in
+both inline and block contexts.</a:documentation>
+ <notAllowed/>
+ </define>
+ <define name="Para.class">
+ <a:documentation>All logical block level elements.
+A logical block typically contains one or more physical block elements.
+For example, a common situation might be \elementref{p},\elementref{equation},\elementref{p},
+where the entire sequence comprises a single sentence.</a:documentation>
+ <notAllowed/>
+ </define>
+ <define name="Meta.class">
+ <a:documentation>All metadata elements, typically representing hidden data.</a:documentation>
+ <notAllowed/>
+ </define>
+ <!--
+ ======================================================================
+ Attribute types
+ -->
+ <define name="Length.type">
+ <a:documentation>The type for attributes specifying a length.
+Should be a number followed by a length, typically px.
+NOTE: To be narrowed later.</a:documentation>
+ <text/>
+ </define>
+ <define name="Color.type">
+ <a:documentation>The type for attributes specifying a color.
+NOTE: To be narrowed later.</a:documentation>
+ <text/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Common.attributes">
+ <a:documentation>Attributes shared by ALL elements.</a:documentation>
+ <optional>
+ <!--
+ ## provides for namespace declaration.
+ attribute xmlns { text }?,
+ -->
+ <attribute name="class">
+ <a:documentation>a space separated list of tokens, as in CSS.
+The \attr{class} can be used to add differentiate different instances of elements
+without introducing new element declarations.
+However, this generally shouldn't be used for deep semantic distinctions.
+This attribute is carried over to HTML and can be used for CSS selection.
+[Note that the default XSLT stylesheets for html and xhtml
+add the latexml element names to the class of html elements
+for more convenience in using CSS.]</a:documentation>
+ <data type="NMTOKENS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ID.attributes">
+ <a:documentation>Attributes for elements that can be cross-referenced
+from inside or outside the document.</a:documentation>
+ <optional>
+ <attribute name="xml:id">
+ <a:documentation>the unique identifier of the element,
+usually generated automatically by the latexml.</a:documentation>
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="IDREF.attributes">
+ <a:documentation>Attributes for elements that can cross-reference other elements.</a:documentation>
+ <optional>
+ <attribute name="idref">
+ <a:documentation>the identifier of the referred-to element.</a:documentation>
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Labelled.attributes">
+ <a:documentation>Attributes for elements that can be labelled from within LaTeX.
+These attributes deal with assigning a label and generating cross references.</a:documentation>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="labels">
+ <a:documentation>Records the various labels that LaTeX uses for crossreferencing.
+(note that \cs{label} can associate more than one label with an object!)
+It consists of space separated labels for the element.
+The \cs{label} macro provides the label prefixed by \texttt{LABEL:};
+Spaces in a label are replaced by underscore.
+Other mechanisms (like acro?) might use other prefixes (but \texttt{ID:} is reserved!)</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="refnum">
+ <a:documentation>the reference number (ie. section number, equation number, etc) of the object.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frefnum">
+ <a:documentation>the formatted reference number of the object, typically this is the refnum with
+the object type prepended, such as "Chapter 2"</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Positionable.attributes">
+ <a:documentation>Attributes shared by low-level, generic inline and block elements
+that can be sized or shifted.</a:documentation>
+ <optional>
+ <attribute name="width">
+ <a:documentation>the desired width of the box</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <a:documentation>the desired height of the box</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <a:documentation>the desired depth of the box</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pad-width">
+ <a:documentation>extra width beyond the boxes natural size.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pad-height">
+ <a:documentation>extra height beyond the boxes natural size.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xoffset">
+ <a:documentation>horizontal shift the position of the box.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yoffset">
+ <a:documentation>vertical shift the position of the box.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <a:documentation>alignment of material within the box.</a:documentation>
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>justified</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vattach">
+ <a:documentation>specifies which line of the box is aligned to the baseline of the containing object.</a:documentation>
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="float">
+ <a:documentation>the horizontal floating placement parameter that determines where the object is displayed.</a:documentation>
+ <choice>
+ <value>right</value>
+ <value>left</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Imageable.attributes">
+ <a:documentation>Attributes for elements that may be converted to image form
+during postprocessing, such as math, graphics, pictures, etc.</a:documentation>
+ <optional>
+ <attribute name="imagesrc">
+ <a:documentation>the file, possibly generated from other data.</a:documentation>
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imagewidth">
+ <a:documentation>the width in pixels of \attr{imagesrc}.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imageheight">
+ <a:documentation>the height in pixels of \attr{imagesrc}.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="description">
+ <a:documentation>a description of the image</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rnc
new file mode 100644
index 00000000000..604cd5896ec
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rnc
@@ -0,0 +1,308 @@
+# /=====================================================================\
+# | LaTeXML-inline.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+## The inline module defines basic inline elements used throughout
+Inline.class &= \text* & emph* & acronym* & rule* & anchor* & ref* & cite* & bibref*
+
+## Additionally, it defines these meta elements. These are generally hidden,
+## and can appear in inline and block contexts.
+Meta.class &= note* & indexmark* & ERROR*
+
+#======================================================================
+
+\text =
+## General container for styled text.
+## Attributes cover a variety of styling and position shifting properties.
+element text { text_attributes & text_model }
+
+## Attributes for \elementref{text}.
+text_attributes =
+ Common.attributes &
+ Positionable.attributes &
+
+ ## Indicates the font to use. It consists of a space separated sequence
+ ## of values representing the
+ ## family (\texttt{serif}, \texttt{sansserif}, \texttt{math}, \texttt{typewriter},
+ ## \texttt{caligraphic}, \texttt{fraktur}, \texttt{script}, \ldots),
+ ## series (\texttt{medium}, \texttt{bold}, \ldots),
+ ## and shape (\texttt{upright}, \texttt{italic}, \texttt{slanted}, \texttt{smallcaps}, \ldots).
+ ## Only the values differing from the current context are given.
+ ## Each component is open-ended, for extensibility; it is thus unclear
+ ## whether unknown values specify family, series or shape.
+ ## In postprocessing, these values are carried to the \attr{class} attribute,
+ ## and can thus be effected by CSS.
+ attribute font { text }? &
+
+ ## Indicates the text size to use. The values are modeled after the
+ ## more abstract \LaTeX\ font size switches, rather than point-sizes.
+ ## The values are open-ended for extensibility;
+ ## In postprocessing, these values are carried to the \attr{class} attribute,
+ ## and can thus be effected by CSS.
+ attribute size { "Huge" | "huge" | "LARGE" | "Large" | "large" | "normal"
+ | "small" | "footnote" | "tiny" | text }? &
+
+ ## the color to use; any CSS compatible color specification.
+ ## In postprocessing, these values are carried to the \attr{class} attribute,
+ ## and can thus be effected by CSS.
+ attribute color { text }? &
+
+ ## the kind of frame or outline for the text.
+ attribute framed { "rectangle" | "underline" | text }?
+
+## Content model for \elementref{text}.
+text_model = Inline.model
+
+#======================================================================
+
+emph =
+## Emphasized text.
+element emph { emph_attributes & emph_model }
+
+## Attributes for \elementref{emph}.
+emph_attributes = Common.attributes
+
+## Content model for \elementref{emph}.
+emph_model = Inline.model
+
+#======================================================================
+
+acronym =
+## Represents an acronym.
+element acronym { acronym_attributes & acronym_model }
+
+## Attributes for \elementref{acronym}.
+acronym_attributes =
+ Common.attributes &
+ ## should be used to indicate the expansion of the acronym.
+ attribute name { text }?
+
+## Content model for \elementref{acronym}.
+acronym_model = Inline.model
+
+#======================================================================
+
+rule =
+## A Rule.
+element rule { rule_attributes & rule_model }
+
+## Attributes for \elementref{rule}.
+rule_attributes = Common.attributes & Positionable.attributes
+
+## Content model for \elementref{rule}.
+rule_model = empty
+
+#======================================================================
+
+ref =
+## A hyperlink reference to some other object.
+## When converted to HTML, the content would be the content of the anchor.
+## The destination can be specified by one of the
+## attributes \attr{labelref}, \attr{idref} or \attr{href};
+## Missing fields will usually be filled in during postprocessing,
+## based on data extracted from the document(s).
+element ref { ref_attributes & ref_model }
+
+## Attributes for \elementref{ref}.
+ref_attributes =
+ Common.attributes &
+
+ ## reference to an internal identifier.
+ IDREF.attributes &
+
+ ## reference to a LaTeX labelled object;
+ ## See the \attr{labels} attribute of \patternref{Labelled.attributes}.
+ attribute labelref { text }? &
+
+ ## reference to an arbitrary url.
+ attribute href { text }? &
+
+ ## a pattern encoding how the text content should be filled in during
+ ## postprocessing, if it is empty.
+ ## It consists of the words
+ ## \texttt{type} (standing for the object type, eg. Ch.),
+ ## \texttt{refnum} and \texttt{title}
+ ## mixed with arbitrary characters. The
+ ## It can also be \texttt{fulltitle}, which indicates the title
+ ## with prefix and type if section numbering is enabled.
+ attribute show { text }? &
+
+ ## gives a longer form description of the target,
+ ## this would typically appear as a tooltip in HTML.
+ ## Typically filled in by postprocessor.
+ attribute title { text }?
+
+## Content model for \elementref{ref}.
+ref_model = Inline.model
+
+#======================================================================
+
+anchor =
+## Inline anchor.
+element anchor { anchor_attributes & anchor_model }
+
+## Attributes for \elementref{anchor}.
+anchor_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{anchor}.
+anchor_model = Inline.model
+
+#======================================================================
+
+cite =
+## A container for a bibliographic citation. The model is inline to
+## allow arbitrary comments before and after the expected \elementref{bibref}(s)
+## which are the specific citation.
+element cite { cite_attributes & cite_model }
+
+## Attributes for \elementref{cite}.
+cite_attributes = Common.attributes
+
+## Content model for \elementref{cite}.
+cite_model = Inline.model
+
+#======================================================================
+
+bibref =
+## A bibliographic citation refering to a specific bibliographic item.
+element bibref { bibref_attributes & bibref_model }
+
+## Attributes for \elementref{bibref}.
+bibref_attributes =
+ Common.attributes &
+ IDREF.attributes &
+
+ ## a comma separated list of bibliographic keys.
+ ## (See the \attr{key} attribute of \elementref{bibitem} and \elementref{bibentry})
+ attribute bibrefs { text }? &
+
+ ## a pattern encoding how the text content (of an empty bibref) will be filled in.
+ ## Consists of strings \texttt{author}, \texttt{fullauthor}, \texttt{year},
+ ## \texttt{number} and \texttt{title}
+ ## (to be replaced by data from the bibliographic item)
+ ## mixed with arbitrary characters.
+ attribute show { text }? &
+
+ ## separator between formatted references
+ attribute separator { text }? &
+
+ ## separator between formatted years when duplicate authors are combined.
+ attribute yyseparator { text }?
+
+## Content model for \elementref{bibref}.
+bibref_model = bibrefphrase*
+
+#======================================================================
+
+bibrefphrase =
+## A preceding or following phrase used in composing a bibliographic reference,
+## such as listing pages or chapter.
+element bibrefphrase { bibrefphrase_attributes & bibrefphrase_model }
+
+## Attributes for \elementref{bibrefphrase}
+bibrefphrase_attributes = Common.attributes
+
+## Content model for \elementref{bibrefphrase}
+bibrefphrase_model = Inline.model
+
+#======================================================================
+
+note =
+## Metadata that covers several `out of band' annotations.
+## It's content allows both inline and block-level content.
+element note { note_attributes & note_model }
+
+## Attributes for \elementref{note}.
+note_attributes =
+ Common.attributes &
+
+ ## indicates the desired visible marker to be linked to the note.
+ attribute mark { text }? &
+
+ ## indicates the kind of note
+ attribute role { "footnote" | text }?
+
+## Content model for \elementref{note}.
+note_model = Flow.model
+
+# should mark be more like label/refnum ?
+
+#======================================================================
+
+ERROR =
+## error object for undefined control sequences, or whatever
+element ERROR { ERROR_attributes & ERROR_model }
+
+## Attributes for \elementref{ERROR}.
+ERROR_attributes = Common.attributes
+
+## Content model for \elementref{ERROR}.
+ERROR_model = text*
+
+#======================================================================
+
+indexmark =
+## Metadata to record an indexing position. The content is
+## a sequence of \elementref{indexphrase}, each representing a level in
+## a multilevel indexing entry.
+element indexmark { indexmark_attributes & indexmark_model }
+
+## Attributes for \elementref{indexmark}.
+indexmark_attributes =
+ Common.attributes &
+ ## a flattened form (like \attr{key}) of another \elementref{indexmark},
+ ## used to crossreference.
+ attribute see_also { text }? &
+
+ ## NOTE: describe this.
+ attribute style { text }?
+
+## Content model for \elementref{indexmark}.
+indexmark_model = indexphrase*, indexsee*
+
+#======================================================================
+
+indexphrase =
+## A phrase within an \elementref{indexmark}
+element indexphrase { indexphrase_attributes & indexphrase_model }
+
+## Attributes for \elementref{indexphrase}.
+indexphrase_attributes =
+ Common.attributes &
+
+ ## a flattened form of the phrase for generating an \attr{ID}.
+ attribute key { text }?
+
+## Content model for \elementref{indexphrase}.
+indexphrase_model = Inline.model
+
+indexsee =
+## A see-also phrase within an \elementref{indexmark}
+element indexsee { indexsee_attributes & indexsee_model }
+
+## Attributes for \elementref{indexsee}.
+indexsee_attributes =
+ Common.attributes &
+
+ ## a flattened form of the phrase for generating an \attr{ID}.
+ attribute key { text }? &
+
+ ## a name for the see phrase, such as "see also".
+ attribute name { text }?
+
+
+## Content model for \elementref{indexsee}.
+indexsee_model = Inline.model
+
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rng
new file mode 100644
index 00000000000..8c1d793a966
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-inline.rng
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-inline.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="Inline.class" combine="choice">
+ <a:documentation>The inline module defines basic inline elements used throughout </a:documentation>
+ <choice>
+ <ref name="text"/>
+ <ref name="emph"/>
+ <ref name="acronym"/>
+ <ref name="rule"/>
+ <ref name="anchor"/>
+ <ref name="ref"/>
+ <ref name="cite"/>
+ <ref name="bibref"/>
+ </choice>
+ </define>
+ <define name="Meta.class" combine="choice">
+ <a:documentation>Additionally, it defines these meta elements. These are generally hidden,
+and can appear in inline and block contexts.</a:documentation>
+ <choice>
+ <ref name="note"/>
+ <ref name="indexmark"/>
+ <ref name="ERROR"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="text">
+ <element name="text">
+ <a:documentation>General container for styled text.
+Attributes cover a variety of styling and position shifting properties.</a:documentation>
+ <ref name="text_attributes"/>
+ <ref name="text_model"/>
+ </element>
+ </define>
+ <define name="text_attributes">
+ <a:documentation>Attributes for \elementref{text}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="font">
+ <a:documentation>Indicates the font to use. It consists of a space separated sequence
+of values representing the
+family (\texttt{serif}, \texttt{sansserif}, \texttt{math}, \texttt{typewriter},
+ \texttt{caligraphic}, \texttt{fraktur}, \texttt{script}, \ldots),
+series (\texttt{medium}, \texttt{bold}, \ldots),
+and shape (\texttt{upright}, \texttt{italic}, \texttt{slanted}, \texttt{smallcaps}, \ldots).
+Only the values differing from the current context are given.
+Each component is open-ended, for extensibility; it is thus unclear
+whether unknown values specify family, series or shape.
+In postprocessing, these values are carried to the \attr{class} attribute,
+and can thus be effected by CSS.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. The values are modeled after the
+more abstract \LaTeX\ font size switches, rather than point-sizes.
+The values are open-ended for extensibility;
+In postprocessing, these values are carried to the \attr{class} attribute,
+and can thus be effected by CSS.</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.
+In postprocessing, these values are carried to the \attr{class} attribute,
+and can thus be effected by CSS.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="framed">
+ <a:documentation>the kind of frame or outline for the text.</a:documentation>
+ <choice>
+ <value>rectangle</value>
+ <value>underline</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="text_model">
+ <a:documentation>Content model for \elementref{text}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="emph">
+ <element name="emph">
+ <a:documentation>Emphasized text.</a:documentation>
+ <ref name="emph_attributes"/>
+ <ref name="emph_model"/>
+ </element>
+ </define>
+ <define name="emph_attributes">
+ <a:documentation>Attributes for \elementref{emph}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="emph_model">
+ <a:documentation>Content model for \elementref{emph}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="acronym">
+ <element name="acronym">
+ <a:documentation>Represents an acronym.</a:documentation>
+ <ref name="acronym_attributes"/>
+ <ref name="acronym_model"/>
+ </element>
+ </define>
+ <define name="acronym_attributes">
+ <a:documentation>Attributes for \elementref{acronym}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="name">
+ <a:documentation>should be used to indicate the expansion of the acronym.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="acronym_model">
+ <a:documentation>Content model for \elementref{acronym}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="rule">
+ <element name="rule">
+ <a:documentation>A Rule.</a:documentation>
+ <ref name="rule_attributes"/>
+ <ref name="rule_model"/>
+ </element>
+ </define>
+ <define name="rule_attributes">
+ <a:documentation>Attributes for \elementref{rule}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </define>
+ <define name="rule_model">
+ <a:documentation>Content model for \elementref{rule}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="ref">
+ <element name="ref">
+ <a:documentation>A hyperlink reference to some other object.
+When converted to HTML, the content would be the content of the anchor.
+The destination can be specified by one of the
+attributes \attr{labelref}, \attr{idref} or \attr{href};
+Missing fields will usually be filled in during postprocessing,
+based on data extracted from the document(s).</a:documentation>
+ <ref name="ref_attributes"/>
+ <ref name="ref_model"/>
+ </element>
+ </define>
+ <define name="ref_attributes">
+ <a:documentation>Attributes for \elementref{ref}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="IDREF.attributes">
+ <a:documentation>reference to an internal identifier.</a:documentation>
+ </ref>
+ <optional>
+ <attribute name="labelref">
+ <a:documentation>reference to a LaTeX labelled object;
+See the \attr{labels} attribute of \patternref{Labelled.attributes}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <a:documentation>reference to an arbitrary url.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="show">
+ <a:documentation>a pattern encoding how the text content should be filled in during
+postprocessing, if it is empty.
+It consists of the words
+ \texttt{type} (standing for the object type, eg. Ch.),
+ \texttt{refnum} and \texttt{title}
+mixed with arbitrary characters. The
+It can also be \texttt{fulltitle}, which indicates the title
+with prefix and type if section numbering is enabled.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title">
+ <a:documentation>gives a longer form description of the target,
+this would typically appear as a tooltip in HTML.
+Typically filled in by postprocessor.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ref_model">
+ <a:documentation>Content model for \elementref{ref}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="anchor">
+ <element name="anchor">
+ <a:documentation>Inline anchor.</a:documentation>
+ <ref name="anchor_attributes"/>
+ <ref name="anchor_model"/>
+ </element>
+ </define>
+ <define name="anchor_attributes">
+ <a:documentation>Attributes for \elementref{anchor}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="anchor_model">
+ <a:documentation>Content model for \elementref{anchor}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="cite">
+ <element name="cite">
+ <a:documentation>A container for a bibliographic citation. The model is inline to
+allow arbitrary comments before and after the expected \elementref{bibref}(s)
+which are the specific citation.</a:documentation>
+ <ref name="cite_attributes"/>
+ <ref name="cite_model"/>
+ </element>
+ </define>
+ <define name="cite_attributes">
+ <a:documentation>Attributes for \elementref{cite}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="cite_model">
+ <a:documentation>Content model for \elementref{cite}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bibref">
+ <element name="bibref">
+ <a:documentation>A bibliographic citation refering to a specific bibliographic item.</a:documentation>
+ <ref name="bibref_attributes"/>
+ <ref name="bibref_model"/>
+ </element>
+ </define>
+ <define name="bibref_attributes">
+ <a:documentation>Attributes for \elementref{bibref}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="IDREF.attributes"/>
+ <optional>
+ <attribute name="bibrefs">
+ <a:documentation>a comma separated list of bibliographic keys.
+(See the \attr{key} attribute of \elementref{bibitem} and \elementref{bibentry})</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="show">
+ <a:documentation>a pattern encoding how the text content (of an empty bibref) will be filled in.
+Consists of strings \texttt{author}, \texttt{fullauthor}, \texttt{year},
+\texttt{number} and \texttt{title}
+(to be replaced by data from the bibliographic item)
+mixed with arbitrary characters.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separator">
+ <a:documentation>separator between formatted references</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yyseparator">
+ <a:documentation>separator between formatted years when duplicate authors are combined.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibref_model">
+ <a:documentation>Content model for \elementref{bibref}.</a:documentation>
+ <zeroOrMore>
+ <ref name="bibrefphrase"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bibrefphrase">
+ <element name="bibrefphrase">
+ <a:documentation>A preceding or following phrase used in composing a bibliographic reference,
+such as listing pages or chapter.</a:documentation>
+ <ref name="bibrefphrase_attributes"/>
+ <ref name="bibrefphrase_model"/>
+ </element>
+ </define>
+ <define name="bibrefphrase_attributes">
+ <a:documentation>Attributes for \elementref{bibrefphrase}</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bibrefphrase_model">
+ <a:documentation>Content model for \elementref{bibrefphrase}</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="note">
+ <element name="note">
+ <a:documentation>Metadata that covers several `out of band' annotations.
+It's content allows both inline and block-level content.</a:documentation>
+ <ref name="note_attributes"/>
+ <ref name="note_model"/>
+ </element>
+ </define>
+ <define name="note_attributes">
+ <a:documentation>Attributes for \elementref{note}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="mark">
+ <a:documentation>indicates the desired visible marker to be linked to the note.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the kind of note</a:documentation>
+ <choice>
+ <value>footnote</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="note_model">
+ <a:documentation>Content model for \elementref{note}.</a:documentation>
+ <ref name="Flow.model"/>
+ </define>
+ <!-- should mark be more like label/refnum ? -->
+ <!-- ====================================================================== -->
+ <define name="ERROR">
+ <element name="ERROR">
+ <a:documentation>error object for undefined control sequences, or whatever</a:documentation>
+ <ref name="ERROR_attributes"/>
+ <ref name="ERROR_model"/>
+ </element>
+ </define>
+ <define name="ERROR_attributes">
+ <a:documentation>Attributes for \elementref{ERROR}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="ERROR_model">
+ <a:documentation>Content model for \elementref{ERROR}.</a:documentation>
+ <zeroOrMore>
+ <text/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="indexmark">
+ <element name="indexmark">
+ <a:documentation>Metadata to record an indexing position. The content is
+a sequence of \elementref{indexphrase}, each representing a level in
+a multilevel indexing entry.</a:documentation>
+ <ref name="indexmark_attributes"/>
+ <ref name="indexmark_model"/>
+ </element>
+ </define>
+ <define name="indexmark_attributes">
+ <a:documentation>Attributes for \elementref{indexmark}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="see_also">
+ <a:documentation>a flattened form (like \attr{key}) of another \elementref{indexmark},
+used to crossreference.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <a:documentation>NOTE: describe this.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="indexmark_model">
+ <a:documentation>Content model for \elementref{indexmark}.</a:documentation>
+ <zeroOrMore>
+ <ref name="indexphrase"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="indexsee"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="indexphrase">
+ <element name="indexphrase">
+ <a:documentation>A phrase within an \elementref{indexmark}</a:documentation>
+ <ref name="indexphrase_attributes"/>
+ <ref name="indexphrase_model"/>
+ </element>
+ </define>
+ <define name="indexphrase_attributes">
+ <a:documentation>Attributes for \elementref{indexphrase}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="key">
+ <a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="indexphrase_model">
+ <a:documentation>Content model for \elementref{indexphrase}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <define name="indexsee">
+ <element name="indexsee">
+ <a:documentation>A see-also phrase within an \elementref{indexmark}</a:documentation>
+ <ref name="indexsee_attributes"/>
+ <ref name="indexsee_model"/>
+ </element>
+ </define>
+ <define name="indexsee_attributes">
+ <a:documentation>Attributes for \elementref{indexsee}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="key">
+ <a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="name">
+ <a:documentation>a name for the see phrase, such as "see also".</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="indexsee_model">
+ <a:documentation>Content model for \elementref{indexsee}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rnc
new file mode 100644
index 00000000000..d310c3df53b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rnc
@@ -0,0 +1,374 @@
+# /=====================================================================\
+# | LaTeXML-math.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+## The math module defines LaTeXML's internal representation of mathematical
+## content, including the basic math container \elementref{Math}. This element is
+## considered inline, as it will be contained within some other block-level
+## element, eg. \elementref{equation} for display-math.
+Inline.class &= Math*
+
+## This class defines the content of the \elementref{Math} element.
+## Additionally, it could contain MathML or OpenMath, after postprocessing.
+Math.class = XMath
+
+## These elements comprise the internal math representation, being
+## the content of the \elementref{XMath} element.
+XMath.class = XMApp* & XMTok* & XMRef* & XMHint* & XMArg* & XMWrap* & XMDual* & XMText* & XMArray*
+
+#======================================================================
+
+Math =
+## Outer container for all math. This holds the internal
+## \elementref{XMath} representation, as well as image data and other representations.
+element Math { Math_attributes & Math_model }
+
+## Attributes for \elementref{Math}.
+Math_attributes =
+ Common.attributes &
+ Imageable.attributes &
+ ID.attributes &
+
+ ## display or inline mode.
+ attribute mode { "display" | "inline" }? &
+
+ ## reconstruction of the \TeX\ that generated the math.
+ attribute tex { text }? &
+
+ ## more semantic version of \attr{tex}.
+ attribute content-tex { text }? &
+
+ ## a textified representation of the math.
+ attribute text { text }?
+
+## Content model for \elementref{Math}.
+Math_model = Math.class
+
+#======================================================================
+XMath.attributes =
+
+ ## The role that this item plays in the Grammar.
+ attribute role { text }? &
+
+ ## an open delimiter to enclose the object;
+ attribute open { text }? &
+
+ ## an close delimiter to enclose the object;
+ attribute close { text }? &
+
+ ## an open delimiter to enclose the argument list,
+ ## when this token is applied to arguments with \elementref{XMApp}.
+ attribute argopen { text }? &
+
+ ## a close delimiter to enclose the argument list,
+ ## when this token is applied to arguments with \elementref{XMApp}.
+ attribute argclose { text }? &
+
+ ## characters to separate arguments,
+ ## when this token is applied to arguments with \elementref{XMApp}.
+ ## Can be multiple characters for different argument positions;
+ ## the last character is repeated if there aren't enough.
+ attribute separators { text }? &
+
+ ## trailing (presumably non-semantic) punctuation.
+ attribute punctuation { text }? &
+
+ ## an annotation placed by the parser when it suspects this token may be used as a function.
+ attribute possibleFunction { text }?
+
+#======================================================================
+
+XMath =
+## Internal representation of mathematics.
+element XMath { XMath_attributes & XMath_model }
+
+## Attributes for \elementref{XMath}.
+XMath_attributes = Common.attributes
+
+## Content model for \elementref{XMath}.
+XMath_model = XMath.class
+
+#======================================================================
+
+XMTok =
+## General mathematical token.
+element XMTok { XMTok_attributes & XMTok_model }
+
+## Attributes for \elementref{XMTok}.
+XMTok_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+
+ ## The name of the token, typically the control sequence that created it.
+ attribute name { text }? &
+
+ ## A more semantic name corresponding to the intended meaning,
+ ## such as the OpenMath name.
+ attribute meaning { text }? &
+
+ ## The OpenMath CD for which \attr{meaning} is a symbol.
+ attribute omcd { text }? &
+
+ ## Various random styling information. NOTE This needs to be made consistent.
+ attribute style { text }? &
+
+ ## The font, size a used for the symbol.
+ attribute font { text }? &
+
+ ## The size for the symbol, not presumed to be meaningful(?)
+ attribute size { text }? &
+
+ ## The color (CSS format) for the symbol, not presumed to be meaningful(?)
+ attribute color { text }? &
+
+ ## An encoding of the position of this token as a sub/superscript, used
+ ## to handle aligned and nested scripts, both pre and post.
+ ## It is a concatenation of (pre|mid|post), which indicates the horizontal
+ ## positioning of the script with relation to it's base, and a counter
+ ## indicating the level. These are used to position the scripts,
+ ## and to pair up aligned sub- and superscripts.
+ ## NOTE: Clarify where this appears: token, base, script operator, apply?
+ attribute scriptpos { text }? &
+
+ ## NOTE: How is this used?
+ attribute thickness { text }?
+
+## Content model for \elementref{XMTok}.
+XMTok_model = text*
+
+
+#======================================================================
+
+XMApp =
+## Generalized application of a function, operator, whatever (the first child)
+## to arguments (the remaining children).
+## The attributes are a subset of those for \elementref{XMTok}.
+element XMApp { XMApp_attributes & XMApp_model }
+
+## Attributes for \elementref{XMApp}.
+XMApp_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+
+ ## The name of the token, typically the control sequence that created it.
+ attribute name { text }? &
+
+ ## A more semantic name corresponding to the intended meaning,
+ ## such as the OpenMath name.
+ attribute meaning { text }? &
+
+ ## An encoding of the position of this token as a sub/superscript, used
+ ## to handle aligned and nested scripts, both pre and post.
+ ## (See \elementref{XMTok} for details)
+ attribute scriptpos { text }?
+
+## Content model for \elementref{XMApp}.
+XMApp_model = XMath.class
+
+#======================================================================
+
+XMDual =
+## Parallel markup of content (first child) and presentation (second child)
+## of a mathematical object.
+## Typically, the arguments are shared between the two branches:
+## they appear in the content branch, with \attr{id}'s,
+## and \elementref{XMRef} is used in the presentation branch
+element XMDual { XMDual_attributes & XMDual_model }
+
+## Attributes for \elementref{XMDual}.
+XMDual_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes
+
+## Content model for \elementref{XMDual}.
+XMDual_model = XMath.class, XMath.class
+
+#======================================================================
+
+XMHint =
+## Various spacing items, generally ignored in parsing.
+## The attributes are a subset of those for \elementref{XMTok}.
+element XMHint { XMHint_attributes & XMHint_model }
+
+## Attributes for \elementref{XMHint}.
+XMHint_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+ attribute name { text }? &
+ attribute meaning { text }? &
+ attribute style { text }?
+
+## Content model for \elementref{XMHint}.
+XMHint_model = empty
+
+#======================================================================
+
+XMText =
+## Text appearing within math.
+element XMText { XMText_attributes & XMText_model }
+
+## Attributes for \elementref{XMText}.
+XMText_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+
+ ## An encoding of the position of this token as a sub/superscript, used
+ ## to handle aligned and nested scripts, both pre and post.
+ ## (See \elementref{XMTok} for details)
+ attribute scriptpos { text }?
+
+## Content model for \elementref{XMText}.
+XMText_model = text & Inline.class & Misc.class
+
+#======================================================================
+
+XMWrap =
+## Wrapper for a sequence of tokens used to assert the role of the
+## contents in its parent. This element generally disappears after parsing.
+## The attributes are a subset of those for \elementref{XMTok}.
+element XMWrap { XMWrap_attributes & XMWrap_model }
+
+## Attributes for \elementref{XMWrap}.
+XMWrap_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+
+ attribute name { text }? &
+
+ ## A more semantic name corresponding to the intended meaning,
+ ## such as the OpenMath name.
+ attribute meaning { text }? &
+
+ attribute style { text }? &
+
+ ## An encoding of the position of this token as a sub/superscript, used
+ ## to handle aligned and nested scripts, both pre and post.
+ ## (See \elementref{XMTok} for details)
+ attribute scriptpos { text }?
+
+
+## Content model for \elementref{XMWrap}.
+XMWrap_model = XMath.class
+
+#======================================================================
+
+XMArg =
+## Wrapper for an argument to a structured macro.
+## It implies that its content can be parsed independently of its parent,
+## and thus generally disappears after parsing.
+element XMArg { XMArg_attributes & XMArg_model }
+
+## Attributes for \elementref{XMArg}.
+XMArg_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+ attribute rule { text }? &
+
+ ## An encoding of the position of this token as a sub/superscript, used
+ ## to handle aligned and nested scripts, both pre and post.
+ ## (See \elementref{XMTok} for details)
+ attribute scriptpos { text }?
+
+## Content model for \elementref{XMArg}.
+XMArg_model = XMath.class
+
+#======================================================================
+
+XMRef =
+## Structure sharing element typically used in the presentation
+## branch of an \elementref{XMDual} to refer to the arguments present in the content branch.
+element XMRef { XMRef_attributes & XMRef_model }
+
+## Attributes for \elementref{XMRef}.
+XMRef_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+ IDREF.attributes
+
+## Content model for \elementref{XMRef}.
+XMRef_model = empty
+
+#======================================================================
+
+XMArray =
+## Math Array/Alignment structure.
+# The attributes are a subset of those for \elementref{XMTok} or of \elementref{tabular}.
+element XMArray { XMArray_attributes & XMArray_model }
+
+## Attributes for \elementref{XMArray}.
+XMArray_attributes =
+ Common.attributes &
+ XMath.attributes &
+ ID.attributes &
+ attribute name { text }? &
+ attribute meaning { text }? &
+ attribute style { text }? &
+ attribute vattach { "top" | "bottom" }? &
+ attribute width { text }?
+
+## Content model for \elementref{XMArray}.
+XMArray_model = XMRow*
+
+#======================================================================
+XMRow =
+## A row in a math alignment.
+element XMRow { XMRow_attributes & XMRow_model }
+
+## Attributes for \elementref{XMRow}.
+XMRow_attributes = Common.attributes
+
+## Content model for \elementref{XMRow}.
+XMRow_model = XMCell*
+
+#======================================================================
+
+XMCell =
+## A cell in a row of a math alignment.
+element XMCell { XMCell_attributes & XMCell_model }
+
+## Attributes for \elementref{XMCell}.
+XMCell_attributes =
+ Common.attributes &
+
+ ## indicates how many columns this cell spans or covers.
+ attribute colspan { xsd:nonNegativeInteger }? &
+
+ ## indicates how many rows this cell spans or covers.
+ attribute rowpan { xsd:nonNegativeInteger }? &
+
+# This would have been clearer, but messes up conversion to dtd
+# attribute align { "left" | "right" | "center" | "justify" | text }? &
+ ## specifies the alignment of the content.
+ attribute align { text }? &
+
+ ## specifies the desired width for the column.
+ attribute width { text }? &
+
+ ## records a sequence of t or tt, r or rr, b or bb and l or ll
+ ## for borders or doubled borders on any side of the cell.
+ attribute border { text }? &
+
+ ## whether this cell corresponds to a table head or foot.
+ attribute thead {xsd:boolean}?
+
+## Content model for \elementref{XMCell}.
+XMCell_model = XMath.class
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rng
new file mode 100644
index 00000000000..c9e3babe837
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-math.rng
@@ -0,0 +1,557 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-math.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Inline.class" combine="choice">
+ <a:documentation>The math module defines LaTeXML's internal representation of mathematical
+content, including the basic math container \elementref{Math}. This element is
+considered inline, as it will be contained within some other block-level
+element, eg. \elementref{equation} for display-math.</a:documentation>
+ <ref name="Math"/>
+ </define>
+ <define name="Math.class">
+ <a:documentation>This class defines the content of the \elementref{Math} element.
+Additionally, it could contain MathML or OpenMath, after postprocessing.</a:documentation>
+ <ref name="XMath"/>
+ </define>
+ <define name="XMath.class">
+ <a:documentation>These elements comprise the internal math representation, being
+the content of the \elementref{XMath} element.</a:documentation>
+ <choice>
+ <ref name="XMApp"/>
+ <ref name="XMTok"/>
+ <ref name="XMRef"/>
+ <ref name="XMHint"/>
+ <ref name="XMArg"/>
+ <ref name="XMWrap"/>
+ <ref name="XMDual"/>
+ <ref name="XMText"/>
+ <ref name="XMArray"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Math">
+ <element name="Math">
+ <a:documentation>Outer container for all math. This holds the internal
+\elementref{XMath} representation, as well as image data and other representations.</a:documentation>
+ <ref name="Math_attributes"/>
+ <ref name="Math_model"/>
+ </element>
+ </define>
+ <define name="Math_attributes">
+ <a:documentation>Attributes for \elementref{Math}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Imageable.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="mode">
+ <a:documentation>display or inline mode.</a:documentation>
+ <choice>
+ <value>display</value>
+ <value>inline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tex">
+ <a:documentation>reconstruction of the \TeX\ that generated the math.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="content-tex">
+ <a:documentation>more semantic version of \attr{tex}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text">
+ <a:documentation>a textified representation of the math.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Math_model">
+ <a:documentation>Content model for \elementref{Math}.</a:documentation>
+ <zeroOrMore>
+ <ref name="Math.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMath.attributes">
+ <optional>
+ <attribute name="role">
+ <a:documentation>The role that this item plays in the Grammar.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="open">
+ <a:documentation>an open delimiter to enclose the object;</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close">
+ <a:documentation>an close delimiter to enclose the object;</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="argopen">
+ <a:documentation>an open delimiter to enclose the argument list,
+when this token is applied to arguments with \elementref{XMApp}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="argclose">
+ <a:documentation>a close delimiter to enclose the argument list,
+when this token is applied to arguments with \elementref{XMApp}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separators">
+ <a:documentation>characters to separate arguments,
+when this token is applied to arguments with \elementref{XMApp}.
+Can be multiple characters for different argument positions;
+the last character is repeated if there aren't enough.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="punctuation">
+ <a:documentation>trailing (presumably non-semantic) punctuation.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="possibleFunction">
+ <a:documentation>an annotation placed by the parser when it suspects this token may be used as a function.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMath">
+ <element name="XMath">
+ <a:documentation>Internal representation of mathematics.</a:documentation>
+ <ref name="XMath_attributes"/>
+ <ref name="XMath_model"/>
+ </element>
+ </define>
+ <define name="XMath_attributes">
+ <a:documentation>Attributes for \elementref{XMath}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="XMath_model">
+ <a:documentation>Content model for \elementref{XMath}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMath.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMTok">
+ <element name="XMTok">
+ <a:documentation>General mathematical token.</a:documentation>
+ <ref name="XMTok_attributes"/>
+ <ref name="XMTok_model"/>
+ </element>
+ </define>
+ <define name="XMTok_attributes">
+ <a:documentation>Attributes for \elementref{XMTok}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name">
+ <a:documentation>The name of the token, typically the control sequence that created it.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="meaning">
+ <a:documentation>A more semantic name corresponding to the intended meaning,
+such as the OpenMath name.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="omcd">
+ <a:documentation>The OpenMath CD for which \attr{meaning} is a symbol.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <a:documentation>Various random styling information. NOTE This needs to be made consistent.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font">
+ <a:documentation>The font, size a used for the symbol.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>The size for the symbol, not presumed to be meaningful(?)</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>The color (CSS format) for the symbol, not presumed to be meaningful(?)</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+It is a concatenation of (pre|mid|post), which indicates the horizontal
+positioning of the script with relation to it's base, and a counter
+indicating the level. These are used to position the scripts,
+and to pair up aligned sub- and superscripts.
+NOTE: Clarify where this appears: token, base, script operator, apply?</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thickness">
+ <a:documentation>NOTE: How is this used?</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="XMTok_model">
+ <a:documentation>Content model for \elementref{XMTok}.</a:documentation>
+ <zeroOrMore>
+ <text/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMApp">
+ <element name="XMApp">
+ <a:documentation>Generalized application of a function, operator, whatever (the first child)
+to arguments (the remaining children).
+The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
+ <ref name="XMApp_attributes"/>
+ <ref name="XMApp_model"/>
+ </element>
+ </define>
+ <define name="XMApp_attributes">
+ <a:documentation>Attributes for \elementref{XMApp}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name">
+ <a:documentation>The name of the token, typically the control sequence that created it.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="meaning">
+ <a:documentation>A more semantic name corresponding to the intended meaning,
+such as the OpenMath name.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="XMApp_model">
+ <a:documentation>Content model for \elementref{XMApp}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMath.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMDual">
+ <element name="XMDual">
+ <a:documentation>Parallel markup of content (first child) and presentation (second child)
+of a mathematical object.
+Typically, the arguments are shared between the two branches:
+they appear in the content branch, with \attr{id}'s,
+and \elementref{XMRef} is used in the presentation branch</a:documentation>
+ <ref name="XMDual_attributes"/>
+ <ref name="XMDual_model"/>
+ </element>
+ </define>
+ <define name="XMDual_attributes">
+ <a:documentation>Attributes for \elementref{XMDual}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="XMDual_model">
+ <a:documentation>Content model for \elementref{XMDual}.</a:documentation>
+ <ref name="XMath.class"/>
+ <ref name="XMath.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMHint">
+ <element name="XMHint">
+ <a:documentation>Various spacing items, generally ignored in parsing.
+The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
+ <ref name="XMHint_attributes"/>
+ <ref name="XMHint_model"/>
+ </element>
+ </define>
+ <define name="XMHint_attributes">
+ <a:documentation>Attributes for \elementref{XMHint}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="meaning"/>
+ </optional>
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ </define>
+ <define name="XMHint_model">
+ <a:documentation>Content model for \elementref{XMHint}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMText">
+ <element name="XMText">
+ <a:documentation>Text appearing within math.</a:documentation>
+ <ref name="XMText_attributes"/>
+ <ref name="XMText_model"/>
+ </element>
+ </define>
+ <define name="XMText_attributes">
+ <a:documentation>Attributes for \elementref{XMText}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="XMText_model">
+ <a:documentation>Content model for \elementref{XMText}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMWrap">
+ <element name="XMWrap">
+ <a:documentation>Wrapper for a sequence of tokens used to assert the role of the
+contents in its parent. This element generally disappears after parsing.
+The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
+ <ref name="XMWrap_attributes"/>
+ <ref name="XMWrap_model"/>
+ </element>
+ </define>
+ <define name="XMWrap_attributes">
+ <a:documentation>Attributes for \elementref{XMWrap}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="meaning">
+ <a:documentation>A more semantic name corresponding to the intended meaning,
+such as the OpenMath name.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="XMWrap_model">
+ <a:documentation>Content model for \elementref{XMWrap}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMath.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMArg">
+ <element name="XMArg">
+ <a:documentation>Wrapper for an argument to a structured macro.
+It implies that its content can be parsed independently of its parent,
+and thus generally disappears after parsing.</a:documentation>
+ <ref name="XMArg_attributes"/>
+ <ref name="XMArg_model"/>
+ </element>
+ </define>
+ <define name="XMArg_attributes">
+ <a:documentation>Attributes for \elementref{XMArg}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="rule"/>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="XMArg_model">
+ <a:documentation>Content model for \elementref{XMArg}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMath.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMRef">
+ <element name="XMRef">
+ <a:documentation>Structure sharing element typically used in the presentation
+branch of an \elementref{XMDual} to refer to the arguments present in the content branch.</a:documentation>
+ <ref name="XMRef_attributes"/>
+ <ref name="XMRef_model"/>
+ </element>
+ </define>
+ <define name="XMRef_attributes">
+ <a:documentation>Attributes for \elementref{XMRef}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="IDREF.attributes"/>
+ </define>
+ <define name="XMRef_model">
+ <a:documentation>Content model for \elementref{XMRef}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMArray">
+ <!-- The attributes are a subset of those for \elementref{XMTok} or of \elementref{tabular}. -->
+ <element name="XMArray">
+ <a:documentation>Math Array/Alignment structure.</a:documentation>
+ <ref name="XMArray_attributes"/>
+ <ref name="XMArray_model"/>
+ </element>
+ </define>
+ <define name="XMArray_attributes">
+ <a:documentation>Attributes for \elementref{XMArray}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="meaning"/>
+ </optional>
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ <optional>
+ <attribute name="vattach">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width"/>
+ </optional>
+ </define>
+ <define name="XMArray_model">
+ <a:documentation>Content model for \elementref{XMArray}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMRow"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMRow">
+ <element name="XMRow">
+ <a:documentation>A row in a math alignment.</a:documentation>
+ <ref name="XMRow_attributes"/>
+ <ref name="XMRow_model"/>
+ </element>
+ </define>
+ <define name="XMRow_attributes">
+ <a:documentation>Attributes for \elementref{XMRow}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="XMRow_model">
+ <a:documentation>Content model for \elementref{XMRow}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMCell"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMCell">
+ <element name="XMCell">
+ <a:documentation>A cell in a row of a math alignment.</a:documentation>
+ <ref name="XMCell_attributes"/>
+ <ref name="XMCell_model"/>
+ </element>
+ </define>
+ <define name="XMCell_attributes">
+ <a:documentation>Attributes for \elementref{XMCell}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="colspan">
+ <a:documentation>indicates how many columns this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowpan">
+ <a:documentation>indicates how many rows this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <!--
+ This would have been clearer, but messes up conversion to dtd
+ attribute align { "left" | "right" | "center" | "justify" | text }?,
+ -->
+ <attribute name="align">
+ <a:documentation> specifies the alignment of the content.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <a:documentation>specifies the desired width for the column.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="border">
+ <a:documentation>records a sequence of t or tt, r or rr, b or bb and l or ll
+for borders or doubled borders on any side of the cell.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thead">
+ <a:documentation>whether this cell corresponds to a table head or foot.</a:documentation>
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="XMCell_model">
+ <a:documentation>Content model for \elementref{XMCell}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMath.class"/>
+ </zeroOrMore>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rnc
new file mode 100644
index 00000000000..42c3c46f4be
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rnc
@@ -0,0 +1,193 @@
+# /=====================================================================\
+# | LaTeXML-para.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+## This module defines the following `logical' block elements.
+Para.class &= para*
+ & theorem* & proof*
+ & figure* & table* & float* & listing*
+
+## Additionally, it defines these miscellaneous elements that can appear
+## in both inline and block contexts.
+Misc.class &= inline-para*
+
+#======================================================================
+
+para =
+## A Logical paragraph. It has an \attr{id}, but not a \attr{label}.
+element para { para_attributes & para_model }
+
+## Attributes for \elementref{para}.
+para_attributes = Common.attributes & ID.attributes
+
+
+## Content model for \elementref{para}.
+para_model = Block.model
+
+#======================================================================
+
+inline-para =
+## An inline para. Actually, can appear in inline or block mode, but
+## typesets its contents as para.
+element inline-para { inline-para_attributes & inline-para_model }
+
+## Attributes for \elementref{inline-para}.
+inline-para_attributes = Common.attributes & Positionable.attributes
+
+## Content model for \elementref{inline-para}.
+inline-para_model = Para.model
+
+#======================================================================
+
+theorem =
+## A theorem or similar object. The \attr{class} attribute can be used to distinguish
+## different kinds of theorem.
+element theorem { theorem_attributes & theorem_model }
+
+## Attributes for \elementref{theorem}.
+theorem_attributes = Common.attributes & Labelled.attributes
+
+## Content model for \elementref{theorem}.
+theorem_model = title? & Para.model
+
+#======================================================================
+
+proof =
+## A proof or similar object. The \attr{class} attribute can be used to distinguish
+## different kinds of proof.
+element proof { proof_attributes & proof_model }
+
+## Attributes for \elementref{proof}.
+proof_attributes = Common.attributes & Labelled.attributes
+
+## Content model for \elementref{proof}.
+proof_model = title? & Para.model
+
+#======================================================================
+
+## These are the additional elements representing figure and
+## table captions.
+## NOTE: Could title sensibly be reused here, instead?
+## Or, should caption be used for theorem and proof?
+Caption.class = caption | toccaption
+
+#======================================================================
+
+figure =
+## A figure, possibly captioned.
+element figure { figure_attributes & figure_model }
+
+## Attributes for \elementref{figure}.
+figure_attributes =
+ Common.attributes &
+ Labelled.attributes &
+ Positionable.attributes &
+
+ ## the vertical floating placement parameter that determines where the object is displayed.
+ attribute placement { text }?
+
+### MiKo: only allowing one caption, is this right? same for table, float, and listing below
+## Content model for \elementref{figure}.
+figure_model = figure* & Block.model & Caption.class
+
+#======================================================================
+
+table =
+## A Table, possibly captioned. This is not necessarily a \elementref{tabular}.
+element table { table_attributes & table_model }
+
+## Attributes for \elementref{table}.
+table_attributes =
+ Common.attributes &
+ Labelled.attributes &
+ Positionable.attributes &
+
+ ## the vertical floating placement parameter that determines where the object is displayed.
+ attribute placement { text }?
+
+## Content model for \elementref{table}.
+table_model = table* & Block.model & Caption.class
+
+#======================================================================
+
+float =
+## A generic float, possibly captioned, something other than a table, figure or listing
+element float { float_attributes & float_model }
+
+## Attributes for \elementref{float}.
+float_attributes =
+ Common.attributes &
+ Labelled.attributes &
+ Positionable.attributes &
+
+ ## the vertical floating placement parameter that determines where the object is displayed.
+ attribute placement { text }?
+
+## Content model for \elementref{float}.
+float_model = float* & Block.model & Caption.class
+
+#======================================================================
+
+listing =
+## A Listing, possibly captioned.
+element listing { listing_attributes & listing_model }
+
+## Attributes for \elementref{listing}.
+listing_attributes =
+ Common.attributes &
+ Labelled.attributes &
+ Positionable.attributes &
+
+ ## the floating placement parameter that determines where the object is displayed.
+ attribute placement { text }?
+
+## Content model for \elementref{listing}.
+listing_model = Block.model & Caption.class
+
+#======================================================================
+
+caption =
+## A caption for a \elementref{table} or \elementref{figure}.
+element caption { caption_attributes & caption_model }
+
+## Attributes for \elementref{caption}.
+caption_attributes =
+ Common.attributes &
+ attribute font { text }? &
+
+ ## Indicates the text size to use. (See \elementref{text})
+ attribute size { "Huge" | "huge" | "LARGE" | "Large" | "large" | "normal"
+ | "small" | "footnote" | "tiny" | text }? &
+
+ ## the color to use; any CSS compatible color specification.
+ attribute color { text }?
+
+
+## Content model for \elementref{caption},
+## basically Inline.model with tag included (normally, but not necessarily, tag would come first).
+caption_model = tag* & text & Inline.class & Misc.class & Meta.class
+
+#======================================================================
+
+toccaption =
+## A short form of \elementref{table} or \elementref{figure} caption,
+## used for lists of figures or similar.
+element toccaption { toccaption_attributes & toccaption_model }
+
+## Attributes for \elementref{toccaption}.
+toccaption_attributes = Common.attributes
+
+### MiKo: here we allowed multiple tags, but now we can restrict, do we want that?
+## Content model for \elementref{toccaption}.
+toccaption_model = text & Inline.class & Misc.class & Meta.class & tag*
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rng
new file mode 100644
index 00000000000..a5cd7320bac
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-para.rng
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-para.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="Para.class" combine="choice">
+ <a:documentation>This module defines the following `logical' block elements.</a:documentation>
+ <choice>
+ <ref name="para"/>
+ <ref name="theorem"/>
+ <ref name="proof"/>
+ <ref name="figure"/>
+ <ref name="table"/>
+ <ref name="float"/>
+ <ref name="listing"/>
+ </choice>
+ </define>
+ <define name="Misc.class" combine="choice">
+ <a:documentation>Additionally, it defines these miscellaneous elements that can appear
+in both inline and block contexts.</a:documentation>
+ <ref name="inline-para"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="para">
+ <element name="para">
+ <a:documentation>A Logical paragraph. It has an \attr{id}, but not a \attr{label}.</a:documentation>
+ <ref name="para_attributes"/>
+ <ref name="para_model"/>
+ </element>
+ </define>
+ <define name="para_attributes">
+ <a:documentation>Attributes for \elementref{para}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="para_model">
+ <a:documentation>Content model for \elementref{para}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="inline-para">
+ <element name="inline-para">
+ <a:documentation>An inline para. Actually, can appear in inline or block mode, but
+typesets its contents as para.</a:documentation>
+ <ref name="inline-para_attributes"/>
+ <ref name="inline-para_model"/>
+ </element>
+ </define>
+ <define name="inline-para_attributes">
+ <a:documentation>Attributes for \elementref{inline-para}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </define>
+ <define name="inline-para_model">
+ <a:documentation>Content model for \elementref{inline-para}.</a:documentation>
+ <ref name="Para.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="theorem">
+ <element name="theorem">
+ <a:documentation>A theorem or similar object. The \attr{class} attribute can be used to distinguish
+different kinds of theorem.</a:documentation>
+ <ref name="theorem_attributes"/>
+ <ref name="theorem_model"/>
+ </element>
+ </define>
+ <define name="theorem_attributes">
+ <a:documentation>Attributes for \elementref{theorem}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="theorem_model">
+ <a:documentation>Content model for \elementref{theorem}.</a:documentation>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="Para.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="proof">
+ <element name="proof">
+ <a:documentation>A proof or similar object. The \attr{class} attribute can be used to distinguish
+different kinds of proof.</a:documentation>
+ <ref name="proof_attributes"/>
+ <ref name="proof_model"/>
+ </element>
+ </define>
+ <define name="proof_attributes">
+ <a:documentation>Attributes for \elementref{proof}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="proof_model">
+ <a:documentation>Content model for \elementref{proof}.</a:documentation>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="Para.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Caption.class">
+ <a:documentation>These are the additional elements representing figure and
+table captions.
+NOTE: Could title sensibly be reused here, instead?
+Or, should caption be used for theorem and proof?</a:documentation>
+ <choice>
+ <ref name="caption"/>
+ <ref name="toccaption"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="figure">
+ <element name="figure">
+ <a:documentation>A figure, possibly captioned.</a:documentation>
+ <ref name="figure_attributes"/>
+ <ref name="figure_model"/>
+ </element>
+ </define>
+ <define name="figure_attributes">
+ <a:documentation>Attributes for \elementref{figure}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="figure_model">
+ <a:documentation>Content model for \elementref{figure}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="figure"/>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="table">
+ <element name="table">
+ <a:documentation>A Table, possibly captioned. This is not necessarily a \elementref{tabular}.</a:documentation>
+ <ref name="table_attributes"/>
+ <ref name="table_model"/>
+ </element>
+ </define>
+ <define name="table_attributes">
+ <a:documentation>Attributes for \elementref{table}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="table_model">
+ <a:documentation>Content model for \elementref{table}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="table"/>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="float">
+ <element name="float">
+ <a:documentation>A generic float, possibly captioned, something other than a table, figure or listing</a:documentation>
+ <ref name="float_attributes"/>
+ <ref name="float_model"/>
+ </element>
+ </define>
+ <define name="float_attributes">
+ <a:documentation>Attributes for \elementref{float}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="float_model">
+ <a:documentation>Content model for \elementref{float}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="float"/>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="listing">
+ <element name="listing">
+ <a:documentation>A Listing, possibly captioned.</a:documentation>
+ <ref name="listing_attributes"/>
+ <ref name="listing_model"/>
+ </element>
+ </define>
+ <define name="listing_attributes">
+ <a:documentation>Attributes for \elementref{listing}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="listing_model">
+ <a:documentation>Content model for \elementref{listing}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="caption">
+ <element name="caption">
+ <a:documentation>A caption for a \elementref{table} or \elementref{figure}.</a:documentation>
+ <ref name="caption_attributes"/>
+ <ref name="caption_model"/>
+ </element>
+ </define>
+ <define name="caption_attributes">
+ <a:documentation>Attributes for \elementref{caption}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="font"/>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. (See \elementref{text})</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="caption_model">
+ <a:documentation>Content model for \elementref{caption},
+basically Inline.model with tag included (normally, but not necessarily, tag would come first).</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="tag"/>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="toccaption">
+ <element name="toccaption">
+ <a:documentation>A short form of \elementref{table} or \elementref{figure} caption,
+used for lists of figures or similar.</a:documentation>
+ <ref name="toccaption_attributes"/>
+ <ref name="toccaption_model"/>
+ </element>
+ </define>
+ <define name="toccaption_attributes">
+ <a:documentation>Attributes for \elementref{toccaption}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="toccaption_model">
+ <a:documentation>Content model for \elementref{toccaption}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ <ref name="tag"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rnc
new file mode 100644
index 00000000000..dcf8bf8cf15
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rnc
@@ -0,0 +1,285 @@
+# /=====================================================================\
+# | LaTeXML-picture.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+# ======================================================================
+# Picture; Experimental, possibly should evolve to SVG?
+# ======================================================================
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+## This module defines a picture environment, roughly a subset of SVG.
+## NOTE: Consider whether it is sensible to drop this and incorporate SVG itself.
+Misc.class &= picture*
+
+#======================================================================
+
+Picture.class =
+ g* & rect* & line* & circle* & path*
+ & arc* & wedge* & ellipse* & polygon* & bezier*
+ & parabola* & curve* & dots* & grid* & clip*
+
+## These attributes correspond roughly to SVG, but need documentation.
+Picture.attributes =
+ attribute x { text }? &
+ attribute y { text }? &
+ attribute r { text }? &
+ attribute rx { text }? &
+ attribute ry { text }? &
+ attribute width { text }? &
+ attribute height { text }? &
+ attribute fill { text }? &
+ attribute stroke { text }? &
+ attribute stroke-width { text }? &
+ attribute stroke-dasharray { text }? &
+ attribute transform { text }? &
+ attribute terminators { text }? &
+ attribute arrowlength { text }? &
+ attribute points { text }? &
+ attribute showpoints { text }? &
+ attribute displayedpoints { text }? &
+ attribute arc { text }? &
+ attribute angle1 { text }? &
+ attribute angle2 { text }? &
+ attribute arcsepA { text }? &
+ attribute arcsepB { text }? &
+ attribute curvature { text }?
+
+## These attributes correspond roughly to SVG, but need documentation.
+PictureGroup.attributes =
+ attribute pos { text }? &
+ attribute framed {xsd:boolean}? &
+ [ a:defaultValue = "rect" ]
+ attribute frametype { "rect" | "circle" | "oval" }? &
+ attribute fillframe {xsd:boolean }? &
+ attribute boxsep { text }? &
+ attribute shadowbox {xsd:boolean}? &
+ attribute doubleline {xsd:boolean}?
+
+#======================================================================
+
+picture =
+## A picture environment.
+element picture { picture_attributes & picture_model }
+
+## Attributes for \elementref{picture}.
+picture_attributes =
+ Common.attributes &
+ ID.attributes &
+ Picture.attributes &
+ Imageable.attributes &
+ attribute clip {xsd:boolean}? &
+ attribute baseline { text }? &
+ attribute unitlength { text }? &
+ attribute xunitlength { text }? &
+ attribute yunitlength { text }? &
+ attribute tex { text }? &
+ attribute content-tex { text }?
+
+## Content model for \elementref{picture}.
+picture_model = Picture.class & Inline.class & Misc.class & Meta.class
+
+#======================================================================
+
+g =
+## A graphical grouping; the content is inherits by the transformations,
+## positioning and other properties.
+element g { g_attributes & g_model }
+
+## Attributes for \elementref{g}.
+g_attributes = Common.attributes & Picture.attributes & PictureGroup.attributes
+
+## Content model for \elementref{g}.
+g_model = Picture.class & Inline.class & Misc.class & Meta.class
+
+#======================================================================
+
+rect =
+## A rectangle within a \elementref{picture}.
+element rect { rect_attributes & rect_model }
+
+## Attributes for \elementref{rect}.
+rect_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{rect}.
+rect_model = empty
+
+#======================================================================
+
+line =
+## A line within a \elementref{picture}.
+element line { line_attributes & line_model }
+
+## Attributes for \elementref{line}.
+line_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{line}.
+line_model = empty
+
+#======================================================================
+
+polygon =
+## A polygon within a \elementref{picture}.
+element polygon { polygon_attributes & polygon_model }
+
+## Attributes for \elementref{polygon}.
+polygon_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{polygon}.
+polygon_model = empty
+
+#======================================================================
+
+wedge =
+## A wedge within a \elementref{picture}.
+element wedge { wedge_attributes & wedge_model }
+
+## Attributes for \elementref{wedge}.
+wedge_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{wedge}.
+wedge_model = empty
+
+#======================================================================
+
+arc =
+## An arc within a \elementref{picture}.
+element arc { arc_attributes & arc_model }
+
+## Attributes for \elementref{arc}.
+arc_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{arc}.
+arc_model = empty
+
+#======================================================================
+
+circle =
+## A circle within a \elementref{picture}.
+element circle { circle_attributes & circle_model }
+
+## Attributes for \elementref{circle}.
+circle_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{circle}.
+circle_model = empty
+
+#======================================================================
+
+ellipse =
+## An ellipse within a \elementref{picture}.
+element ellipse { ellipse_attributes & ellipse_model }
+
+## Attributes for \elementref{ellipse}.
+ellipse_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{ellipse}.
+ellipse_model = empty
+
+#======================================================================
+
+path =
+## A path within a \elementref{picture}.
+element path { path_attributes & path_model }
+
+## Attributes for \elementref{path}.
+path_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{path}.
+path_model = empty
+
+#======================================================================
+
+bezier =
+## A bezier curve within a \elementref{picture}.
+element bezier { bezier_attributes & bezier_model }
+
+## Attributes for \elementref{bezier}.
+bezier_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{bezier}.
+bezier_model = empty
+
+#======================================================================
+
+curve =
+## A curve within a \elementref{picture}.
+element curve { curve_attributes & curve_model }
+
+## Attributes for \elementref{curve}.
+curve_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{curve}.
+curve_model = empty
+
+#======================================================================
+
+parabola =
+## A parabola curve within a \elementref{picture}.
+element parabola { parabola_attributes & parabola_model }
+
+## Attributes for \elementref{parabola}.
+parabola_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{parabola}.
+parabola_model = empty
+
+#======================================================================
+
+dots =
+## A sequence of dots (?) within a \elementref{picture}.
+element dots { dots_attributes & dots_model }
+
+## Attributes for \elementref{dots}.
+dots_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{dots}.
+dots_model = empty
+
+#======================================================================
+
+grid =
+## A grid within a \elementref{picture}.
+element grid { grid_attributes & grid_model }
+
+## Attributes for \elementref{grid}.
+grid_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{grid}.
+grid_model = empty
+
+#======================================================================
+
+clip =
+## Establishes a clipping region within a \elementref{picture}.
+element clip { clip_attributes & clip_model }
+
+## Attributes for \elementref{clip}.
+clip_attributes = Common.attributes & Picture.attributes
+
+
+## Content model for \elementref{clip}.
+clip_model = clippath*
+
+#======================================================================
+
+clippath =
+## Establishes a clipping region within a \elementref{picture}.
+element clippath { clippath_attributes & clippath_model }
+
+## Attributes for \elementref{clippath}.
+clippath_attributes = Common.attributes & Picture.attributes
+
+## Content model for \elementref{clippath}.
+clippath_model = Picture.class & Inline.class & Misc.class & Meta.class
+
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rng
new file mode 100644
index 00000000000..890d006110a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-picture.rng
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-picture.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<!--
+ ======================================================================
+ Picture; Experimental, possibly should evolve to SVG?
+ ======================================================================
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Misc.class" combine="choice">
+ <a:documentation>This module defines a picture environment, roughly a subset of SVG.
+NOTE: Consider whether it is sensible to drop this and incorporate SVG itself.</a:documentation>
+ <ref name="picture"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Picture.class">
+ <choice>
+ <ref name="g"/>
+ <ref name="rect"/>
+ <ref name="line"/>
+ <ref name="circle"/>
+ <ref name="path"/>
+ <ref name="arc"/>
+ <ref name="wedge"/>
+ <ref name="ellipse"/>
+ <ref name="polygon"/>
+ <ref name="bezier"/>
+ <ref name="parabola"/>
+ <ref name="curve"/>
+ <ref name="dots"/>
+ <ref name="grid"/>
+ <ref name="clip"/>
+ </choice>
+ </define>
+ <define name="Picture.attributes">
+ <a:documentation>These attributes correspond roughly to SVG, but need documentation.</a:documentation>
+ <optional>
+ <attribute name="x"/>
+ </optional>
+ <optional>
+ <attribute name="y"/>
+ </optional>
+ <optional>
+ <attribute name="r"/>
+ </optional>
+ <optional>
+ <attribute name="rx"/>
+ </optional>
+ <optional>
+ <attribute name="ry"/>
+ </optional>
+ <optional>
+ <attribute name="width"/>
+ </optional>
+ <optional>
+ <attribute name="height"/>
+ </optional>
+ <optional>
+ <attribute name="fill"/>
+ </optional>
+ <optional>
+ <attribute name="stroke"/>
+ </optional>
+ <optional>
+ <attribute name="stroke-width"/>
+ </optional>
+ <optional>
+ <attribute name="stroke-dasharray"/>
+ </optional>
+ <optional>
+ <attribute name="transform"/>
+ </optional>
+ <optional>
+ <attribute name="terminators"/>
+ </optional>
+ <optional>
+ <attribute name="arrowlength"/>
+ </optional>
+ <optional>
+ <attribute name="points"/>
+ </optional>
+ <optional>
+ <attribute name="showpoints"/>
+ </optional>
+ <optional>
+ <attribute name="displayedpoints"/>
+ </optional>
+ <optional>
+ <attribute name="arc"/>
+ </optional>
+ <optional>
+ <attribute name="angle1"/>
+ </optional>
+ <optional>
+ <attribute name="angle2"/>
+ </optional>
+ <optional>
+ <attribute name="arcsepA"/>
+ </optional>
+ <optional>
+ <attribute name="arcsepB"/>
+ </optional>
+ <optional>
+ <attribute name="curvature"/>
+ </optional>
+ </define>
+ <define name="PictureGroup.attributes">
+ <a:documentation>These attributes correspond roughly to SVG, but need documentation.</a:documentation>
+ <optional>
+ <attribute name="pos"/>
+ </optional>
+ <optional>
+ <attribute name="framed">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frametype" a:defaultValue="rect">
+ <choice>
+ <value>rect</value>
+ <value>circle</value>
+ <value>oval</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fillframe">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="boxsep"/>
+ </optional>
+ <optional>
+ <attribute name="shadowbox">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="doubleline">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="picture">
+ <element name="picture">
+ <a:documentation>A picture environment.</a:documentation>
+ <ref name="picture_attributes"/>
+ <ref name="picture_model"/>
+ </element>
+ </define>
+ <define name="picture_attributes">
+ <a:documentation>Attributes for \elementref{picture}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Picture.attributes"/>
+ <ref name="Imageable.attributes"/>
+ <optional>
+ <attribute name="clip">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseline"/>
+ </optional>
+ <optional>
+ <attribute name="unitlength"/>
+ </optional>
+ <optional>
+ <attribute name="xunitlength"/>
+ </optional>
+ <optional>
+ <attribute name="yunitlength"/>
+ </optional>
+ <optional>
+ <attribute name="tex"/>
+ </optional>
+ <optional>
+ <attribute name="content-tex"/>
+ </optional>
+ </define>
+ <define name="picture_model">
+ <a:documentation>Content model for \elementref{picture}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Picture.class"/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="g">
+ <element name="g">
+ <a:documentation>A graphical grouping; the content is inherits by the transformations,
+positioning and other properties.</a:documentation>
+ <ref name="g_attributes"/>
+ <ref name="g_model"/>
+ </element>
+ </define>
+ <define name="g_attributes">
+ <a:documentation>Attributes for \elementref{g}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ <ref name="PictureGroup.attributes"/>
+ </define>
+ <define name="g_model">
+ <a:documentation>Content model for \elementref{g}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Picture.class"/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="rect">
+ <element name="rect">
+ <a:documentation>A rectangle within a \elementref{picture}.</a:documentation>
+ <ref name="rect_attributes"/>
+ <ref name="rect_model"/>
+ </element>
+ </define>
+ <define name="rect_attributes">
+ <a:documentation>Attributes for \elementref{rect}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="rect_model">
+ <a:documentation>Content model for \elementref{rect}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="line">
+ <element name="line">
+ <a:documentation>A line within a \elementref{picture}.</a:documentation>
+ <ref name="line_attributes"/>
+ <ref name="line_model"/>
+ </element>
+ </define>
+ <define name="line_attributes">
+ <a:documentation>Attributes for \elementref{line}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="line_model">
+ <a:documentation>Content model for \elementref{line}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="polygon">
+ <element name="polygon">
+ <a:documentation>A polygon within a \elementref{picture}.</a:documentation>
+ <ref name="polygon_attributes"/>
+ <ref name="polygon_model"/>
+ </element>
+ </define>
+ <define name="polygon_attributes">
+ <a:documentation>Attributes for \elementref{polygon}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="polygon_model">
+ <a:documentation>Content model for \elementref{polygon}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="wedge">
+ <element name="wedge">
+ <a:documentation>A wedge within a \elementref{picture}.</a:documentation>
+ <ref name="wedge_attributes"/>
+ <ref name="wedge_model"/>
+ </element>
+ </define>
+ <define name="wedge_attributes">
+ <a:documentation>Attributes for \elementref{wedge}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="wedge_model">
+ <a:documentation>Content model for \elementref{wedge}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="arc">
+ <element name="arc">
+ <a:documentation>An arc within a \elementref{picture}.</a:documentation>
+ <ref name="arc_attributes"/>
+ <ref name="arc_model"/>
+ </element>
+ </define>
+ <define name="arc_attributes">
+ <a:documentation>Attributes for \elementref{arc}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="arc_model">
+ <a:documentation>Content model for \elementref{arc}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="circle">
+ <element name="circle">
+ <a:documentation>A circle within a \elementref{picture}.</a:documentation>
+ <ref name="circle_attributes"/>
+ <ref name="circle_model"/>
+ </element>
+ </define>
+ <define name="circle_attributes">
+ <a:documentation>Attributes for \elementref{circle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="circle_model">
+ <a:documentation>Content model for \elementref{circle}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="ellipse">
+ <element name="ellipse">
+ <a:documentation>An ellipse within a \elementref{picture}.</a:documentation>
+ <ref name="ellipse_attributes"/>
+ <ref name="ellipse_model"/>
+ </element>
+ </define>
+ <define name="ellipse_attributes">
+ <a:documentation>Attributes for \elementref{ellipse}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="ellipse_model">
+ <a:documentation>Content model for \elementref{ellipse}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="path">
+ <element name="path">
+ <a:documentation>A path within a \elementref{picture}.</a:documentation>
+ <ref name="path_attributes"/>
+ <ref name="path_model"/>
+ </element>
+ </define>
+ <define name="path_attributes">
+ <a:documentation>Attributes for \elementref{path}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="path_model">
+ <a:documentation>Content model for \elementref{path}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bezier">
+ <element name="bezier">
+ <a:documentation>A bezier curve within a \elementref{picture}.</a:documentation>
+ <ref name="bezier_attributes"/>
+ <ref name="bezier_model"/>
+ </element>
+ </define>
+ <define name="bezier_attributes">
+ <a:documentation>Attributes for \elementref{bezier}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="bezier_model">
+ <a:documentation>Content model for \elementref{bezier}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="curve">
+ <element name="curve">
+ <a:documentation>A curve within a \elementref{picture}.</a:documentation>
+ <ref name="curve_attributes"/>
+ <ref name="curve_model"/>
+ </element>
+ </define>
+ <define name="curve_attributes">
+ <a:documentation>Attributes for \elementref{curve}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="curve_model">
+ <a:documentation>Content model for \elementref{curve}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="parabola">
+ <element name="parabola">
+ <a:documentation>A parabola curve within a \elementref{picture}.</a:documentation>
+ <ref name="parabola_attributes"/>
+ <ref name="parabola_model"/>
+ </element>
+ </define>
+ <define name="parabola_attributes">
+ <a:documentation>Attributes for \elementref{parabola}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="parabola_model">
+ <a:documentation>Content model for \elementref{parabola}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="dots">
+ <element name="dots">
+ <a:documentation>A sequence of dots (?) within a \elementref{picture}.</a:documentation>
+ <ref name="dots_attributes"/>
+ <ref name="dots_model"/>
+ </element>
+ </define>
+ <define name="dots_attributes">
+ <a:documentation>Attributes for \elementref{dots}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="dots_model">
+ <a:documentation>Content model for \elementref{dots}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="grid">
+ <element name="grid">
+ <a:documentation>A grid within a \elementref{picture}.</a:documentation>
+ <ref name="grid_attributes"/>
+ <ref name="grid_model"/>
+ </element>
+ </define>
+ <define name="grid_attributes">
+ <a:documentation>Attributes for \elementref{grid}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="grid_model">
+ <a:documentation>Content model for \elementref{grid}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="clip">
+ <element name="clip">
+ <a:documentation>Establishes a clipping region within a \elementref{picture}.</a:documentation>
+ <ref name="clip_attributes"/>
+ <ref name="clip_model"/>
+ </element>
+ </define>
+ <define name="clip_attributes">
+ <a:documentation>Attributes for \elementref{clip}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="clip_model">
+ <a:documentation>Content model for \elementref{clip}.</a:documentation>
+ <zeroOrMore>
+ <ref name="clippath"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="clippath">
+ <element name="clippath">
+ <a:documentation>Establishes a clipping region within a \elementref{picture}.</a:documentation>
+ <ref name="clippath_attributes"/>
+ <ref name="clippath_model"/>
+ </element>
+ </define>
+ <define name="clippath_attributes">
+ <a:documentation>Attributes for \elementref{clippath}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </define>
+ <define name="clippath_model">
+ <a:documentation>Content model for \elementref{clippath}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Picture.class"/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rnc
new file mode 100644
index 00000000000..78e42ac8b73
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rnc
@@ -0,0 +1,513 @@
+# /=====================================================================\
+# | LaTeXML-structure.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+#======================================================================
+
+document =
+## The document root.
+element document { document_attributes & document_model }
+
+
+## The content allowable as the main body of the document.
+document.body.class = Para.model & paragraph* & subsubsection* & subsection* & section* & chapter* & part*
+
+## Attributes for \elementref{document}.
+document_attributes = Sectional.attributes
+
+
+## Content model for \elementref{document}.
+document_model =
+# (FrontMatter.class & SectionalFrontMatter.class & Meta.class & titlepage*),
+# document.body.class,
+ BackMatter.class
+
+#======================================================================
+
+part =
+## A part within a document.
+element part { part_attributes & part_model }
+
+## The content allowable as the main body of a part.
+part.body.class = Para.model & chapter*
+
+## Attributes for \elementref{part}.
+part_attributes = Sectional.attributes
+
+## Content model for \elementref{part}.
+part_model = SectionalFrontMatter.class, part.body.class
+
+#----------------------------------------------------------------------
+
+chapter =
+## A Chapter within a document.
+element chapter { chapter_attributes & chapter_model }
+
+## The content allowable as the main body of a chapter.
+chapter.body.class = Para.model & subparagraph* & paragraph* & subsubsection* & subsection* & section*
+
+## Attributes for \elementref{chapter}.
+chapter_attributes = Sectional.attributes
+
+## Content model for \elementref{chapter}.
+chapter_model = SectionalFrontMatter.class, chapter.body.class
+
+#----------------------------------------------------------------------
+
+section =
+## A Section within a document.
+element section { section_attributes & section_model }
+
+## The content allowable as the main body of a section.
+section.body.class = Para.model & subparagraph* & paragraph* & subsubsection* & subsection*
+
+## Attributes for \elementref{section}.
+section_attributes = Sectional.attributes
+
+## Content model for \elementref{section}.
+section_model = SectionalFrontMatter.class, section.body.class
+
+#----------------------------------------------------------------------
+
+subsection =
+## A Subsection within a document.
+element subsection { subsection_attributes & subsection_model }
+
+## The content allowable as the main body of a chapter.
+subsection.body.class = Para.model & subparagraph* & paragraph* & subsubsection*
+
+## Attributes for \elementref{subsection}.
+subsection_attributes = Sectional.attributes
+
+## Content model for \elementref{subsection}.
+subsection_model = SectionalFrontMatter.class, subsection.body.class
+
+#----------------------------------------------------------------------
+
+subsubsection =
+## A Subsubsection within a document.
+element subsubsection { subsubsection_attributes & subsubsection_model }
+
+## The content allowable as the main body of a chapter.
+subsubsection.body.class = Para.model & subparagraph* & paragraph*
+
+## Attributes for \elementref{subsubsection}.
+subsubsection_attributes = Sectional.attributes
+
+## Content model for \elementref{subsubsection}.
+subsubsection_model = SectionalFrontMatter.class, subsubsection.body.class
+
+#----------------------------------------------------------------------
+
+paragraph =
+## A Paragraph within a document. This corresponds to a `formal' marked, possibly labelled
+## LaTeX Paragraph, in distinction from an unlabelled logical paragraph.
+element paragraph { paragraph_attributes & paragraph_model }
+
+## The content allowable as the main body of a chapter.
+paragraph.body.class = Para.model & subparagraph*
+
+## Attributes for \elementref{paragraph}.
+paragraph_attributes = Sectional.attributes
+
+## Content model for \elementref{paragraph}.
+paragraph_model = SectionalFrontMatter.class, paragraph.body.class
+
+
+#----------------------------------------------------------------------
+
+subparagraph =
+## A Subparagraph within a document.
+element subparagraph { subparagraph_attributes & subparagraph_model }
+
+## The content allowable as the main body of a chapter.
+subparagraph.body.class = Para.model
+
+## Attributes for \elementref{subparagraph}.
+subparagraph_attributes = Sectional.attributes
+
+## Content model for \elementref{subparagraph}.
+subparagraph_model = SectionalFrontMatter.class, subparagraph.body.class
+
+#======================================================================
+
+appendix =
+## An Appendix within a document.
+element appendix { appendix_attributes & appendix_model }
+
+## The content allowable as the main body of a chapter.
+appendix.body.class = Para.model & subparagraph* & paragraph* & subsubsection* & subsection* & section*
+
+## Attributes for \elementref{appendix}.
+appendix_attributes = Sectional.attributes
+
+## Content model for \elementref{appendix}.
+appendix_model = SectionalFrontMatter.class, appendix.body.class
+
+#======================================================================
+
+bibliography =
+## A Bibliography within a document.
+element bibliography { bibliography_attributes & bibliography_model }
+
+## The content allowable as the main body of a chapter.
+bibliography.body.class = Para.model & biblist
+
+## Attributes for \elementref{bibliography}.
+bibliography_attributes =
+ Sectional.attributes &
+
+ ## the list of bib files used to create the bibliograph.
+ attribute files { text }?
+
+## Content model for \elementref{bibliography}.
+bibliography_model = FrontMatter.class, SectionalFrontMatter.class, bibliography.body.class
+
+#======================================================================
+
+index =
+## An Index within a document.
+element index { index_attributes & index_model }
+
+## The content allowable as the main body of a chapter.
+index.body.class = Para.model & indexlist*
+
+## Attributes for \elementref{index}.
+index_attributes = Sectional.attributes
+
+## Content model for \elementref{index}.
+index_model = SectionalFrontMatter.class, index.body.class
+
+#----------------------------------------------------------------------
+
+indexlist =
+## A heirarchical index generated. Typically generated during postprocessing
+## from the collection of \elementref{indexmark} in the document
+## (or document collection).
+element indexlist { indexlist_attributes & indexlist_model }
+
+## Attributes for \elementref{indexlist}.
+indexlist_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{indexlist}.
+indexlist_model = indexentry*
+
+#----------------------------------------------------------------------
+
+indexentry =
+## An entry in an \elementref{indexlist} consisting of a phrase, references to
+## points in the document where the phrase was found, and possibly
+## a nested \elementref{indexlist} represented index levels below this one.
+element indexentry { indexentry_attributes & indexentry_model }
+
+## Attributes for \elementref{indexentry}.
+indexentry_attributes = Common.attributes & ID.attributes
+
+## Content model for \elementref{indexentry}.
+indexentry_model = indexphrase, indexrefs? , indexlist?
+
+#----------------------------------------------------------------------
+
+indexrefs =
+## A container for the references (\elementref{ref}) to where an \elementref{indexphrase} was
+## encountered in the document. The model is Inline to allow
+## arbitrary text, in addition to the expected \elementref{ref}'s.
+element indexrefs { indexrefs_attributes & indexrefs_model }
+
+## Attributes for \elementref{indexrefs}.
+indexrefs_attributes = Common.attributes
+
+## Content model for \elementref{indexrefs}.
+indexrefs_model = Inline.model
+
+#======================================================================
+
+title =
+## The title of a document, section or similar document structure container.
+element title { title_attributes & title_model }
+
+## Attributes for \elementref{title}.
+title_attributes =
+ Common.attributes &
+
+ ## The font prefered for the title.
+ attribute font { text }? &
+
+ ## Indicates the text size to use. (See \elementref{text})
+ attribute size { "Huge" | "huge" | "LARGE" | "Large" | "large" | "normal"
+ | "small" | "footnote" | "tiny" | text }? &
+
+ ## the color to use; any CSS compatible color specification.
+ attribute color { text }?
+
+## Content model for \elementref{title},
+## basically Inline.model with tag included (normally, but not necessarily, tag would come first).
+title_model = tag* & text & Inline.class & Misc.class & Meta.class
+
+#----------------------------------------------------------------------
+
+toctitle =
+## The short form of a title, for use in tables of contents or similar.
+element toctitle { toctitle_attributes & toctitle_model }
+
+## Attributes for \elementref{toctitle}.
+toctitle_attributes = Common.attributes
+
+## Content model for \elementref{toctitle}.
+toctitle_model = text & Inline.class & Misc.class & Meta.class & tag*
+
+#----------------------------------------------------------------------
+
+subtitle =
+## A subtitle, or secondary title.
+element subtitle { subtitle_attributes & subtitle_model }
+
+## Attributes for \elementref{subtitle}.
+subtitle_attributes = Common.attributes
+
+## Content model for \elementref{subtitle}.
+subtitle_model = Inline.model
+
+#======================================================================
+
+creator =
+## Generalized document creator.
+element creator { creator_attributes & creator_model }
+
+## The content allowed in authors, editors, etc.
+Person.class = personname* & contact*
+
+## Attributes for \elementref{creator}.
+creator_attributes =
+ Common.attributes & FrontMatter.attributes &
+
+ ## indicates the role of the person in creating the docment.
+ ## Commonly useful values are specified, but is open-ended to support extension.
+ attribute role { "author" | "editor" | "translator" | "contributor" | "translator" | text }?
+
+## Content model for \elementref{creator}.
+creator_model = Person.class & Misc.class
+
+#----------------------------------------------------------------------
+# NOTE: This should be aligned with Bibname.
+
+personname =
+## A person's name.
+element personname { personname_attributes & personname_model }
+
+## Attributes for \elementref{personname}.
+personname_attributes = Common.attributes
+
+## Content model for \elementref{personname}.
+personname_model = Inline.model
+
+#----------------------------------------------------------------------
+
+contact =
+## Generalized contact information for a document creator.
+## Note that this element can be repeated to give different types
+## of contact information (using \attr{role}) for the same creator.
+element contact { contact_attributes & contact_model }
+
+## Attributes for \elementref{contact}.
+contact_attributes =
+ Common.attributes & FrontMatter.attributes &
+
+ ## indicates the type of contact information contained.
+ ## Commonly useful values are specified, but is open-ended to support extension.
+ attribute role { "affiliation" | "address" | "current_address" | "email" | "url"
+ | "thanks" | "dedicatory" | text }?
+
+## Content model for \elementref{contact}.
+contact_model = Inline.model
+
+#======================================================================
+
+date =
+## Generalized document date.
+## Note that this element can be repeated to give the dates
+## of different events (using \attr{role}) for the same document.
+element date { date_attributes & date_model }
+
+## Attributes for \elementref{date}.
+date_attributes =
+ Common.attributes & FrontMatter.attributes &
+
+ ## indicates the relevance of the date to the document.
+ ## Commonly useful values are specified, but is open-ended to support extension.
+ attribute role { "creation" | "conversion" | "posted" | "received"
+ | "revised" | "accepted" | text }?
+
+## Content model for \elementref{date}.
+date_model = Inline.model
+
+#======================================================================
+
+abstract =
+## A document abstract.
+element abstract { abstract_attributes & abstract_model }
+
+## Attributes for \elementref{abstract}.
+abstract_attributes = Common.attributes & FrontMatter.attributes
+
+## Content model for \elementref{abstract}.
+abstract_model = Block.model
+
+#======================================================================
+
+acknowledgements =
+## Acknowledgements for the document.
+element acknowledgements { acknowledgements_attributes & acknowledgements_model }
+
+## Attributes for \elementref{acknowledgements}.
+acknowledgements_attributes = Common.attributes & FrontMatter.attributes
+
+## Content model for \elementref{acknowledgements}.
+acknowledgements_model = Inline.model
+
+#======================================================================
+
+keywords =
+## Keywords for the document. The content is freeform.
+element keywords { keywords_attributes & keywords_model }
+
+## Attributes for \elementref{keywords}.
+keywords_attributes = Common.attributes & FrontMatter.attributes
+
+## Content model for \elementref{keywords}.
+keywords_model = Inline.model
+
+#======================================================================
+
+classification =
+## A classification of the document.
+element classification { classification_attributes & classification_model }
+
+## Attributes for \elementref{classification}.
+classification_attributes = Common.attributes & FrontMatter.attributes &
+
+ ## indicates what classification scheme was used.
+ attribute scheme { text }?
+
+## Content model for \elementref{classification}.
+classification_model = Inline.model
+
+#======================================================================
+# Fallback
+
+titlepage =
+## block of random stuff marked as a titlepage
+element titlepage { titlepage_attributes & titlepage_model }
+
+## Attributes for \elementref{titlepage}.
+titlepage_attributes = Sectional.attributes
+
+## Content model for \elementref{titlepage}.
+titlepage_model = FrontMatter.class & SectionalFrontMatter.class & Block.class
+
+#======================================================================
+# TOC & Navigation; generally added by postprocessing
+
+TOC =
+## (Generalized) Table Of Contents, represents table of contents
+## as well as list of figures, tables, and other such things.
+## This will generally be placed by a \cs{tableofcontents} command
+## and filled in by postprocessing.
+element TOC { TOC_attributes & TOC_model }
+
+## Attributes for \elementref{TOC}.
+TOC_attributes =
+ Common.attributes &
+ FrontMatter.attributes &
+
+ ## indicates the kind of list
+ attribute role { ("contents" | "figures" | "tables" | text) }? &
+
+ ## indicates what kind of document elements to list, in the form of
+ ## one or more tags such as \texttt{ltx:chapter} separated by \texttt{|}
+ ## (suggestive of an xpath expression).
+ attribute select { text }? &
+
+ ## indicates how to format the listing
+ attribute format { ("normal" | "short" | "veryshort" | text) }?
+
+## Content model for \elementref{TOC}.
+TOC_model = toclist?
+
+toclist =
+## The actual table of contents list, filled in.
+element toclist {toclist_attributes & toclist_model }
+
+## Attributes for \elementref{toclist}.
+toclist_attributes = Common.attributes
+
+## Content model for \elementref{toclist}.
+toclist_model = tocentry*
+
+tocentry =
+## An entry in a \elementref{toclist}.
+element tocentry { tocentry_attributes & tocentry_model }
+
+## Attributes for \elementref{tocentry}.
+tocentry_attributes = Common.attributes
+
+## Content model for \elementref{tocentry}.
+tocentry_model = ref* & toclist*
+
+
+navigation =
+## Records navigation cross-referencing information, links from the
+## current page or document to related ones, up, down, previous, next,
+## and so forth; these relations are recorded in the \attr{class} attribute
+## of the \elementref{ref}.
+##
+## \emph{Really?}; overload the class attribute!?
+## This should be \attr{role}!
+## Could also use a navigation name text or something?
+element navigation { navigation_attributes & navigation_model }
+
+## Attributes for \elementref{navigation}.
+navigation_attributes = Common.attributes
+
+## Content model for \elementref{navigation}.
+navigation_model = ref* & TOC*
+
+#======================================================================
+
+## Attributes shared by all sectional elements
+Sectional.attributes =
+ Common.attributes &
+ Labelled.attributes
+
+## Attributes for other elements that can be used in frontmatter.
+FrontMatter.attributes =
+ ## Records the name of the type of object this is to be used when composing the
+ ## presentation. The value of this attribute is often set by language localization packages.
+ attribute name { text }?
+
+## The content allowed for the front matter of each sectional unit,
+## and the document.
+SectionalFrontMatter.class = title* & toctitle* & creator*
+
+## The content allowed (in addition to \patternref{SectionalFrontMatter.class})
+## for the front matter of a document.
+FrontMatter.class = subtitle* & date* & abstract* & acknowledgements* & keywords* & classification
+
+## The content allowed a the end of a document.
+## Note that this includes random trailing Block and Para material,
+## to support articles with figures and similar data appearing `at end'.
+BackMatter.class = bibliography* & appendix* & index* & acknowledgements* & Para.class & Meta.class
+
+Para.class &= TOC* & navigation*
+
+#======================================================================
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rng
new file mode 100644
index 00000000000..edbb1a9322b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-structure.rng
@@ -0,0 +1,916 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-structure.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- ====================================================================== -->
+ <define name="document">
+ <element name="document">
+ <a:documentation>The document root.</a:documentation>
+ <ref name="document_attributes"/>
+ <ref name="document_model"/>
+ </element>
+ </define>
+ <define name="document.body.class">
+ <a:documentation>The content allowable as the main body of the document.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="paragraph"/>
+ <ref name="subsubsection"/>
+ <ref name="subsection"/>
+ <ref name="section"/>
+ <ref name="chapter"/>
+ <ref name="part"/>
+ </choice>
+ </define>
+ <define name="document_attributes">
+ <a:documentation>Attributes for \elementref{document}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="document_model">
+ <a:documentation>Content model for \elementref{document}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="FrontMatter.class"/>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="Meta.class"/>
+ <ref name="titlepage"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="document.body.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="BackMatter.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="part">
+ <element name="part">
+ <a:documentation>A part within a document.</a:documentation>
+ <ref name="part_attributes"/>
+ <ref name="part_model"/>
+ </element>
+ </define>
+ <define name="part.body.class">
+ <a:documentation>The content allowable as the main body of a part.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="chapter"/>
+ </choice>
+ </define>
+ <define name="part_attributes">
+ <a:documentation>Attributes for \elementref{part}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="part_model">
+ <a:documentation>Content model for \elementref{part}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="part.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="chapter">
+ <element name="chapter">
+ <a:documentation>A Chapter within a document.</a:documentation>
+ <ref name="chapter_attributes"/>
+ <ref name="chapter_model"/>
+ </element>
+ </define>
+ <define name="chapter.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="subparagraph"/>
+ <ref name="paragraph"/>
+ <ref name="subsubsection"/>
+ <ref name="subsection"/>
+ <ref name="section"/>
+ </choice>
+ </define>
+ <define name="chapter_attributes">
+ <a:documentation>Attributes for \elementref{chapter}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="chapter_model">
+ <a:documentation>Content model for \elementref{chapter}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="chapter.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="section">
+ <element name="section">
+ <a:documentation>A Section within a document.</a:documentation>
+ <ref name="section_attributes"/>
+ <ref name="section_model"/>
+ </element>
+ </define>
+ <define name="section.body.class">
+ <a:documentation>The content allowable as the main body of a section.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="subparagraph"/>
+ <ref name="paragraph"/>
+ <ref name="subsubsection"/>
+ <ref name="subsection"/>
+ </choice>
+ </define>
+ <define name="section_attributes">
+ <a:documentation>Attributes for \elementref{section}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="section_model">
+ <a:documentation>Content model for \elementref{section}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subsection">
+ <element name="subsection">
+ <a:documentation>A Subsection within a document.</a:documentation>
+ <ref name="subsection_attributes"/>
+ <ref name="subsection_model"/>
+ </element>
+ </define>
+ <define name="subsection.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="subparagraph"/>
+ <ref name="paragraph"/>
+ <ref name="subsubsection"/>
+ </choice>
+ </define>
+ <define name="subsection_attributes">
+ <a:documentation>Attributes for \elementref{subsection}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="subsection_model">
+ <a:documentation>Content model for \elementref{subsection}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsection.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subsubsection">
+ <element name="subsubsection">
+ <a:documentation>A Subsubsection within a document.</a:documentation>
+ <ref name="subsubsection_attributes"/>
+ <ref name="subsubsection_model"/>
+ </element>
+ </define>
+ <define name="subsubsection.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="subparagraph"/>
+ <ref name="paragraph"/>
+ </choice>
+ </define>
+ <define name="subsubsection_attributes">
+ <a:documentation>Attributes for \elementref{subsubsection}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="subsubsection_model">
+ <a:documentation>Content model for \elementref{subsubsection}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsubsection.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="paragraph">
+ <element name="paragraph">
+ <a:documentation>A Paragraph within a document. This corresponds to a `formal' marked, possibly labelled
+LaTeX Paragraph, in distinction from an unlabelled logical paragraph.</a:documentation>
+ <ref name="paragraph_attributes"/>
+ <ref name="paragraph_model"/>
+ </element>
+ </define>
+ <define name="paragraph.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="subparagraph"/>
+ </choice>
+ </define>
+ <define name="paragraph_attributes">
+ <a:documentation>Attributes for \elementref{paragraph}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="paragraph_model">
+ <a:documentation>Content model for \elementref{paragraph}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="paragraph.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subparagraph">
+ <element name="subparagraph">
+ <a:documentation>A Subparagraph within a document.</a:documentation>
+ <ref name="subparagraph_attributes"/>
+ <ref name="subparagraph_model"/>
+ </element>
+ </define>
+ <define name="subparagraph.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <ref name="Para.model"/>
+ </define>
+ <define name="subparagraph_attributes">
+ <a:documentation>Attributes for \elementref{subparagraph}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="subparagraph_model">
+ <a:documentation>Content model for \elementref{subparagraph}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subparagraph.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="appendix">
+ <element name="appendix">
+ <a:documentation>An Appendix within a document.</a:documentation>
+ <ref name="appendix_attributes"/>
+ <ref name="appendix_model"/>
+ </element>
+ </define>
+ <define name="appendix.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="subparagraph"/>
+ <ref name="paragraph"/>
+ <ref name="subsubsection"/>
+ <ref name="subsection"/>
+ <ref name="section"/>
+ </choice>
+ </define>
+ <define name="appendix_attributes">
+ <a:documentation>Attributes for \elementref{appendix}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="appendix_model">
+ <a:documentation>Content model for \elementref{appendix}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="appendix.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bibliography">
+ <element name="bibliography">
+ <a:documentation>A Bibliography within a document.</a:documentation>
+ <ref name="bibliography_attributes"/>
+ <ref name="bibliography_model"/>
+ </element>
+ </define>
+ <define name="bibliography.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="biblist"/>
+ </choice>
+ </define>
+ <define name="bibliography_attributes">
+ <a:documentation>Attributes for \elementref{bibliography}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ <optional>
+ <attribute name="files">
+ <a:documentation>the list of bib files used to create the bibliograph.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibliography_model">
+ <a:documentation>Content model for \elementref{bibliography}.</a:documentation>
+ <zeroOrMore>
+ <ref name="FrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bibliography.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="index">
+ <element name="index">
+ <a:documentation>An Index within a document.</a:documentation>
+ <ref name="index_attributes"/>
+ <ref name="index_model"/>
+ </element>
+ </define>
+ <define name="index.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <choice>
+ <ref name="Para.model"/>
+ <ref name="indexlist"/>
+ </choice>
+ </define>
+ <define name="index_attributes">
+ <a:documentation>Attributes for \elementref{index}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="index_model">
+ <a:documentation>Content model for \elementref{index}.</a:documentation>
+ <zeroOrMore>
+ <ref name="SectionalFrontMatter.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="index.body.class"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="indexlist">
+ <element name="indexlist">
+ <a:documentation>A heirarchical index generated. Typically generated during postprocessing
+from the collection of \elementref{indexmark} in the document
+(or document collection).</a:documentation>
+ <ref name="indexlist_attributes"/>
+ <ref name="indexlist_model"/>
+ </element>
+ </define>
+ <define name="indexlist_attributes">
+ <a:documentation>Attributes for \elementref{indexlist}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="indexlist_model">
+ <a:documentation>Content model for \elementref{indexlist}.</a:documentation>
+ <zeroOrMore>
+ <ref name="indexentry"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="indexentry">
+ <element name="indexentry">
+ <a:documentation>An entry in an \elementref{indexlist} consisting of a phrase, references to
+points in the document where the phrase was found, and possibly
+a nested \elementref{indexlist} represented index levels below this one.</a:documentation>
+ <ref name="indexentry_attributes"/>
+ <ref name="indexentry_model"/>
+ </element>
+ </define>
+ <define name="indexentry_attributes">
+ <a:documentation>Attributes for \elementref{indexentry}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </define>
+ <define name="indexentry_model">
+ <a:documentation>Content model for \elementref{indexentry}.</a:documentation>
+ <ref name="indexphrase"/>
+ <optional>
+ <ref name="indexrefs"/>
+ </optional>
+ <optional>
+ <ref name="indexlist"/>
+ </optional>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="indexrefs">
+ <element name="indexrefs">
+ <a:documentation>A container for the references (\elementref{ref}) to where an \elementref{indexphrase} was
+encountered in the document. The model is Inline to allow
+arbitrary text, in addition to the expected \elementref{ref}'s.</a:documentation>
+ <ref name="indexrefs_attributes"/>
+ <ref name="indexrefs_model"/>
+ </element>
+ </define>
+ <define name="indexrefs_attributes">
+ <a:documentation>Attributes for \elementref{indexrefs}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="indexrefs_model">
+ <a:documentation>Content model for \elementref{indexrefs}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="title">
+ <element name="title">
+ <a:documentation>The title of a document, section or similar document structure container.</a:documentation>
+ <ref name="title_attributes"/>
+ <ref name="title_model"/>
+ </element>
+ </define>
+ <define name="title_attributes">
+ <a:documentation>Attributes for \elementref{title}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="font">
+ <a:documentation>The font prefered for the title.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. (See \elementref{text})</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="title_model">
+ <a:documentation>Content model for \elementref{title},
+basically Inline.model with tag included (normally, but not necessarily, tag would come first).</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="tag"/>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="toctitle">
+ <element name="toctitle">
+ <a:documentation>The short form of a title, for use in tables of contents or similar.</a:documentation>
+ <ref name="toctitle_attributes"/>
+ <ref name="toctitle_model"/>
+ </element>
+ </define>
+ <define name="toctitle_attributes">
+ <a:documentation>Attributes for \elementref{toctitle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="toctitle_model">
+ <a:documentation>Content model for \elementref{toctitle}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ <ref name="tag"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subtitle">
+ <element name="subtitle">
+ <a:documentation>A subtitle, or secondary title.</a:documentation>
+ <ref name="subtitle_attributes"/>
+ <ref name="subtitle_model"/>
+ </element>
+ </define>
+ <define name="subtitle_attributes">
+ <a:documentation>Attributes for \elementref{subtitle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="subtitle_model">
+ <a:documentation>Content model for \elementref{subtitle}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="creator">
+ <element name="creator">
+ <a:documentation>Generalized document creator.</a:documentation>
+ <ref name="creator_attributes"/>
+ <ref name="creator_model"/>
+ </element>
+ </define>
+ <define name="Person.class">
+ <a:documentation>The content allowed in authors, editors, etc.</a:documentation>
+ <choice>
+ <ref name="personname"/>
+ <ref name="contact"/>
+ </choice>
+ </define>
+ <define name="creator_attributes">
+ <a:documentation>Attributes for \elementref{creator}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the role of the person in creating the docment.
+Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
+ <choice>
+ <value>author</value>
+ <value>editor</value>
+ <value>translator</value>
+ <value>contributor</value>
+ <value>translator</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="creator_model">
+ <a:documentation>Content model for \elementref{creator}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Person.class"/>
+ <ref name="Misc.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!--
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ NOTE: This should be aligned with Bibname.
+ -->
+ <define name="personname">
+ <element name="personname">
+ <a:documentation>A person's name.</a:documentation>
+ <ref name="personname_attributes"/>
+ <ref name="personname_model"/>
+ </element>
+ </define>
+ <define name="personname_attributes">
+ <a:documentation>Attributes for \elementref{personname}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="personname_model">
+ <a:documentation>Content model for \elementref{personname}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="contact">
+ <element name="contact">
+ <a:documentation>Generalized contact information for a document creator.
+Note that this element can be repeated to give different types
+of contact information (using \attr{role}) for the same creator.</a:documentation>
+ <ref name="contact_attributes"/>
+ <ref name="contact_model"/>
+ </element>
+ </define>
+ <define name="contact_attributes">
+ <a:documentation>Attributes for \elementref{contact}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the type of contact information contained.
+Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
+ <choice>
+ <value>affiliation</value>
+ <value>address</value>
+ <value>current_address</value>
+ <value>email</value>
+ <value>url</value>
+ <value>thanks</value>
+ <value>dedicatory</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="contact_model">
+ <a:documentation>Content model for \elementref{contact}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="date">
+ <element name="date">
+ <a:documentation>Generalized document date.
+Note that this element can be repeated to give the dates
+of different events (using \attr{role}) for the same document.</a:documentation>
+ <ref name="date_attributes"/>
+ <ref name="date_model"/>
+ </element>
+ </define>
+ <define name="date_attributes">
+ <a:documentation>Attributes for \elementref{date}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the relevance of the date to the document.
+Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
+ <choice>
+ <value>creation</value>
+ <value>conversion</value>
+ <value>posted</value>
+ <value>received</value>
+ <value>revised</value>
+ <value>accepted</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="date_model">
+ <a:documentation>Content model for \elementref{date}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="abstract">
+ <element name="abstract">
+ <a:documentation>A document abstract.</a:documentation>
+ <ref name="abstract_attributes"/>
+ <ref name="abstract_model"/>
+ </element>
+ </define>
+ <define name="abstract_attributes">
+ <a:documentation>Attributes for \elementref{abstract}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ </define>
+ <define name="abstract_model">
+ <a:documentation>Content model for \elementref{abstract}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="acknowledgements">
+ <element name="acknowledgements">
+ <a:documentation>Acknowledgements for the document.</a:documentation>
+ <ref name="acknowledgements_attributes"/>
+ <ref name="acknowledgements_model"/>
+ </element>
+ </define>
+ <define name="acknowledgements_attributes">
+ <a:documentation>Attributes for \elementref{acknowledgements}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ </define>
+ <define name="acknowledgements_model">
+ <a:documentation>Content model for \elementref{acknowledgements}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="keywords">
+ <element name="keywords">
+ <a:documentation>Keywords for the document. The content is freeform.</a:documentation>
+ <ref name="keywords_attributes"/>
+ <ref name="keywords_model"/>
+ </element>
+ </define>
+ <define name="keywords_attributes">
+ <a:documentation>Attributes for \elementref{keywords}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ </define>
+ <define name="keywords_model">
+ <a:documentation>Content model for \elementref{keywords}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="classification">
+ <element name="classification">
+ <a:documentation>A classification of the document.</a:documentation>
+ <ref name="classification_attributes"/>
+ <ref name="classification_model"/>
+ </element>
+ </define>
+ <define name="classification_attributes">
+ <a:documentation>Attributes for \elementref{classification}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="scheme">
+ <a:documentation>indicates what classification scheme was used.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="classification_model">
+ <a:documentation>Content model for \elementref{classification}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!--
+ ======================================================================
+ Fallback
+ -->
+ <define name="titlepage">
+ <element name="titlepage">
+ <a:documentation>block of random stuff marked as a titlepage</a:documentation>
+ <ref name="titlepage_attributes"/>
+ <ref name="titlepage_model"/>
+ </element>
+ </define>
+ <define name="titlepage_attributes">
+ <a:documentation>Attributes for \elementref{titlepage}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="titlepage_model">
+ <a:documentation>Content model for \elementref{titlepage}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="FrontMatter.class"/>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="Block.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!--
+ ======================================================================
+ TOC & Navigation; generally added by postprocessing
+ -->
+ <define name="TOC">
+ <element name="TOC">
+ <a:documentation>(Generalized) Table Of Contents, represents table of contents
+as well as list of figures, tables, and other such things.
+This will generally be placed by a \cs{tableofcontents} command
+and filled in by postprocessing.</a:documentation>
+ <ref name="TOC_attributes"/>
+ <ref name="TOC_model"/>
+ </element>
+ </define>
+ <define name="TOC_attributes">
+ <a:documentation>Attributes for \elementref{TOC}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the kind of list</a:documentation>
+ <choice>
+ <value>contents</value>
+ <value>figures</value>
+ <value>tables</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="select">
+ <a:documentation>indicates what kind of document elements to list, in the form of
+one or more tags such as \texttt{ltx:chapter} separated by \texttt{|}
+(suggestive of an xpath expression).</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="format">
+ <a:documentation>indicates how to format the listing</a:documentation>
+ <choice>
+ <value>normal</value>
+ <value>short</value>
+ <value>veryshort</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="TOC_model">
+ <a:documentation>Content model for \elementref{TOC}.</a:documentation>
+ <optional>
+ <ref name="toclist"/>
+ </optional>
+ </define>
+ <define name="toclist">
+ <element name="toclist">
+ <a:documentation>The actual table of contents list, filled in.</a:documentation>
+ <ref name="toclist_attributes"/>
+ <ref name="toclist_model"/>
+ </element>
+ </define>
+ <define name="toclist_attributes">
+ <a:documentation>Attributes for \elementref{toclist}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="toclist_model">
+ <a:documentation>Content model for \elementref{toclist}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tocentry"/>
+ </zeroOrMore>
+ </define>
+ <define name="tocentry">
+ <element name="tocentry">
+ <a:documentation>An entry in a \elementref{toclist}.</a:documentation>
+ <ref name="tocentry_attributes"/>
+ <ref name="tocentry_model"/>
+ </element>
+ </define>
+ <define name="tocentry_attributes">
+ <a:documentation>Attributes for \elementref{tocentry}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tocentry_model">
+ <a:documentation>Content model for \elementref{tocentry}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="ref"/>
+ <ref name="toclist"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="navigation">
+ <element name="navigation">
+ <a:documentation>Records navigation cross-referencing information, links from the
+current page or document to related ones, up, down, previous, next,
+and so forth; these relations are recorded in the \attr{class} attribute
+of the \elementref{ref}.
+
+\emph{Really?}; overload the class attribute!?
+This should be \attr{role}!
+Could also use a navigation name text or something?</a:documentation>
+ <ref name="navigation_attributes"/>
+ <ref name="navigation_model"/>
+ </element>
+ </define>
+ <define name="navigation_attributes">
+ <a:documentation>Attributes for \elementref{navigation}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="navigation_model">
+ <a:documentation>Content model for \elementref{navigation}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="ref"/>
+ <ref name="TOC"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Sectional.attributes">
+ <a:documentation>Attributes shared by all sectional elements</a:documentation>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </define>
+ <define name="FrontMatter.attributes">
+ <a:documentation>Attributes for other elements that can be used in frontmatter.</a:documentation>
+ <optional>
+ <attribute name="name">
+ <a:documentation>Records the name of the type of object this is to be used when composing the
+presentation. The value of this attribute is often set by language localization packages.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SectionalFrontMatter.class">
+ <a:documentation>The content allowed for the front matter of each sectional unit,
+and the document.</a:documentation>
+ <choice>
+ <ref name="title"/>
+ <ref name="toctitle"/>
+ <ref name="creator"/>
+ </choice>
+ </define>
+ <define name="FrontMatter.class">
+ <a:documentation>The content allowed (in addition to \patternref{SectionalFrontMatter.class})
+for the front matter of a document.</a:documentation>
+ <choice>
+ <ref name="subtitle"/>
+ <ref name="date"/>
+ <ref name="abstract"/>
+ <ref name="acknowledgements"/>
+ <ref name="keywords"/>
+ <ref name="classification"/>
+ </choice>
+ </define>
+ <define name="BackMatter.class">
+ <a:documentation>The content allowed a the end of a document.
+Note that this includes random trailing Block and Para material,
+to support articles with figures and similar data appearing `at end'.</a:documentation>
+ <choice>
+ <ref name="bibliography"/>
+ <ref name="appendix"/>
+ <ref name="index"/>
+ <ref name="acknowledgements"/>
+ <ref name="Para.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </define>
+ <define name="Para.class" combine="choice">
+ <choice>
+ <ref name="TOC"/>
+ <ref name="navigation"/>
+ </choice>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rnc
new file mode 100644
index 00000000000..4ff4bc3feab
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rnc
@@ -0,0 +1,124 @@
+# /=====================================================================\
+# | LaTeXML-tabular.rnc |
+# | RelaxNG model for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+## This module defines the basic tabular, or alignment, structure.
+## It is roughly parallel to the HTML model.
+Misc.class &= tabular*
+
+#======================================================================
+
+tabular =
+## An alignment structure corresponding to tabular or various similar forms.
+## The model is basically a copy of HTML4's table.
+element tabular { tabular_attributes & tabular_model }
+
+## Attributes for \elementref{tabular}.
+tabular_attributes =
+ Common.attributes &
+
+ ## which row's baseline aligns with the container's baseline.
+ attribute vattach { "top" | "middle" | "bottom" }? &
+
+ ## the desired width of the tabular.
+ attribute width { Length.type }?
+
+### MiKo: this can be tightened. Is it really true that we have more than one body?
+## Content model for \elementref{tabular}.
+tabular_model = thead* & tfoot* & tbody* & tr*
+
+#======================================================================
+
+thead =
+## A container for a set of rows that correspond to the header of the tabular.
+element thead { thead_attributes & thead_model }
+
+## Attributes for \elementref{thead}.
+thead_attributes = Common.attributes
+
+## Content model for \elementref{thead}.
+thead_model = tr*
+
+#======================================================================
+
+tfoot =
+## A container for a set of rows that correspond to the footer of the tabular.
+element tfoot { tfoot_attributes & tfoot_model }
+
+## Attributes for \elementref{tfoot}.
+tfoot_attributes = Common.attributes
+
+## Content model for \elementref{tfoot}.
+tfoot_model = tr*
+
+#======================================================================
+
+tbody =
+## A container for a set of rows corresponding to the body of the tabular.
+element tbody { tbody_attributes & tbody_model }
+
+## Attributes for \elementref{tbody}.
+tbody_attributes = Common.attributes
+
+## Content model for \elementref{tbody}.
+tbody_model = tr*
+
+#======================================================================
+
+tr =
+## A row of a tabular.
+element tr { tr_attributes & tr_model }
+
+## Attributes for \elementref{tr}.
+tr_attributes = Common.attributes
+
+## Content model for \elementref{tr}.
+tr_model = td*
+
+#======================================================================
+
+td =
+## A cell in a row of a tabular.
+element td { td_attributes & td_model }
+
+## Attributes for \elementref{td}.
+td_attributes =
+
+ Common.attributes &
+
+ ## indicates how many columns this cell spans or covers.
+ attribute colspan { xsd:nonNegativeInteger }? &
+
+ ## indicates how many rows this cell spans or covers.
+ attribute rowspan { xsd:nonNegativeInteger }? &
+
+# This would have been clearer, but messes up conversion to dtd
+# attribute align { "left" | "right" | "center" | "justify" | text }? &
+ ## specifies the alignment of the content.
+ attribute align { text }? &
+
+ ## specifies the desired width for the column.
+ attribute width { Length.type }? &
+
+ ## records a sequence of t or tt, r or rr, b or bb and l or ll
+ ## for borders or doubled borders on any side of the cell.
+ attribute border { text }? &
+
+ ## whether this cell corresponds to a table head or foot.
+ attribute thead {xsd:boolean}?
+
+## Content model for \elementref{td}.
+td_model = Flow.model
+
+#======================================================================
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rng
new file mode 100644
index 00000000000..325c64c302b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML-tabular.rng
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-tabular.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Misc.class" combine="choice">
+ <a:documentation>This module defines the basic tabular, or alignment, structure.
+It is roughly parallel to the HTML model.</a:documentation>
+ <ref name="tabular"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tabular">
+ <element name="tabular">
+ <a:documentation>An alignment structure corresponding to tabular or various similar forms.
+The model is basically a copy of HTML4's table.</a:documentation>
+ <ref name="tabular_attributes"/>
+ <ref name="tabular_model"/>
+ </element>
+ </define>
+ <define name="tabular_attributes">
+ <a:documentation>Attributes for \elementref{tabular}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="vattach">
+ <a:documentation>which row's baseline aligns with the container's baseline.</a:documentation>
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <a:documentation>the desired width of the tabular.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tabular_model">
+ <a:documentation>Content model for \elementref{tabular}.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="thead"/>
+ <ref name="tfoot"/>
+ <ref name="tbody"/>
+ <ref name="tr"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="thead">
+ <element name="thead">
+ <a:documentation>A container for a set of rows that correspond to the header of the tabular.</a:documentation>
+ <ref name="thead_attributes"/>
+ <ref name="thead_model"/>
+ </element>
+ </define>
+ <define name="thead_attributes">
+ <a:documentation>Attributes for \elementref{thead}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="thead_model">
+ <a:documentation>Content model for \elementref{thead}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tfoot">
+ <element name="tfoot">
+ <a:documentation>A container for a set of rows that correspond to the footer of the tabular.</a:documentation>
+ <ref name="tfoot_attributes"/>
+ <ref name="tfoot_model"/>
+ </element>
+ </define>
+ <define name="tfoot_attributes">
+ <a:documentation>Attributes for \elementref{tfoot}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tfoot_model">
+ <a:documentation>Content model for \elementref{tfoot}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tbody">
+ <element name="tbody">
+ <a:documentation>A container for a set of rows corresponding to the body of the tabular.</a:documentation>
+ <ref name="tbody_attributes"/>
+ <ref name="tbody_model"/>
+ </element>
+ </define>
+ <define name="tbody_attributes">
+ <a:documentation>Attributes for \elementref{tbody}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tbody_model">
+ <a:documentation>Content model for \elementref{tbody}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tr">
+ <element name="tr">
+ <a:documentation>A row of a tabular.</a:documentation>
+ <ref name="tr_attributes"/>
+ <ref name="tr_model"/>
+ </element>
+ </define>
+ <define name="tr_attributes">
+ <a:documentation>Attributes for \elementref{tr}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tr_model">
+ <a:documentation>Content model for \elementref{tr}.</a:documentation>
+ <zeroOrMore>
+ <ref name="td"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="td">
+ <element name="td">
+ <a:documentation>A cell in a row of a tabular.</a:documentation>
+ <ref name="td_attributes"/>
+ <ref name="td_model"/>
+ </element>
+ </define>
+ <define name="td_attributes">
+ <a:documentation>Attributes for \elementref{td}.</a:documentation>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="colspan">
+ <a:documentation>indicates how many columns this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowspan">
+ <a:documentation>indicates how many rows this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <!--
+ This would have been clearer, but messes up conversion to dtd
+ attribute align { "left" | "right" | "center" | "justify" | text }?,
+ -->
+ <attribute name="align">
+ <a:documentation> specifies the alignment of the content.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <a:documentation>specifies the desired width for the column.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="border">
+ <a:documentation>records a sequence of t or tt, r or rr, b or bb and l or ll
+for borders or doubled borders on any side of the cell.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thead">
+ <a:documentation>whether this cell corresponds to a table head or foot.</a:documentation>
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="td_model">
+ <a:documentation>Content model for \elementref{td}.</a:documentation>
+ <ref name="Flow.model"/>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rnc
new file mode 100644
index 00000000000..a17b0186c67
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rnc
@@ -0,0 +1,41 @@
+# /=====================================================================\
+# | LaTeXML.rnc |
+# | Document Type for LaTeXML generated documents |
+# |=====================================================================|
+# | Part of LaTeXML: |
+# | Public domain software, produced as part of work done by the |
+# | United States Government & not subject to copyright in the US. |
+# |=====================================================================|
+# | Bruce Miller <bruce.miller@nist.gov> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+namespace svg = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+include "LaTeXML-common.rnc"
+include "LaTeXML-inline.rnc"
+include "LaTeXML-block.rnc"
+include "LaTeXML-para.rnc"
+include "LaTeXML-math.rnc"
+
+include "LaTeXML-tabular.rnc"
+include "LaTeXML-picture.rnc"
+include "LaTeXML-structure.rnc"
+include "LaTeXML-bib.rnc"
+
+## Combined model for inline content.
+Inline.model = text & Inline.class & Misc.class & Meta.class
+
+## Combined model for physical block-level content.
+Block.model = Block.class & Misc.class & Meta.class
+
+## Combined model for general flow containing both inline and block level content.
+Flow.model = text & Inline.class & Block.class & Misc.class & Meta.class
+
+## Combined model for logical block-level context.
+Para.model = Para.class & Meta.class
+
+start = document
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rng
new file mode 100644
index 00000000000..acd16ea8706
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/LaTeXML.rng
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML.rnc |
+ | Document Type for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:svg="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="LaTeXML-common.rng"/>
+ <include href="LaTeXML-inline.rng"/>
+ <include href="LaTeXML-block.rng"/>
+ <include href="LaTeXML-para.rng"/>
+ <include href="LaTeXML-math.rng"/>
+ <include href="LaTeXML-tabular.rng"/>
+ <include href="LaTeXML-picture.rng"/>
+ <include href="LaTeXML-structure.rng"/>
+ <include href="LaTeXML-bib.rng"/>
+ <define name="Inline.model">
+ <a:documentation>Combined model for inline content.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="Block.model">
+ <a:documentation>Combined model for physical block-level content.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Block.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="Flow.model">
+ <a:documentation>Combined model for general flow containing both inline and block level content.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Block.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="Para.model">
+ <a:documentation>Combined model for logical block-level context.</a:documentation>
+ <zeroOrMore>
+ <choice>
+ <ref name="Para.class"/>
+ <ref name="Meta.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <start>
+ <ref name="document"/>
+ </start>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/TAGS b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/TAGS
new file mode 100644
index 00000000000..20723d5f92c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/TAGS
@@ -0,0 +1,33 @@
+
+LaTeXML-bib.rnc,26
+default namespace 13,816
+
+LaTeXML-block.rnc,26
+default namespace 13,816
+
+LaTeXML-graphics.rnc,26
+default namespace 13,816
+
+LaTeXML-index.rnc,26
+default namespace 13,816
+
+LaTeXML-inline.rnc,26
+default namespace 14,817
+
+LaTeXML-math.rnc,26
+default namespace 13,816
+
+LaTeXML-para.rnc,26
+default namespace 13,816
+
+LaTeXML-picture.rnc,27
+default namespace 17,1019
+
+LaTeXML.rnc,26
+default namespace 13,816
+
+LaTeXML-structure.rnc,26
+default namespace 13,816
+
+LaTeXML-tabular.rnc,26
+default namespace 13,816
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rnc
new file mode 100644
index 00000000000..89ef4dbea9e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rnc
@@ -0,0 +1,208 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Animation Module
+## file: svg-animation.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-animation.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Animation
+##
+## animate, set, animateMotion, animateColor, animateTransform, mpath
+##
+## This module declares markup to provide support for animation.
+##
+
+##
+## SVG.Animation.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Animation.extra.class = notAllowed
+ SVG.Animation.class |=
+ animate
+ | set
+ | animateMotion
+ | animateColor
+ | animateTransform
+ | SVG.Animation.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.Animation.attrib\x{a}" ~ " " ]
+ SVG.Animation.extra.attrib = empty
+ SVG.Animation.attrib = SVG.XLink.attrib, SVG.Animation.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationAttribute.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationAttribute.extra.attrib = empty
+ SVG.AnimationAttribute.attrib =
+ attribute attributeName { text },
+ attribute attributeType { text }?,
+ SVG.AnimationAttribute.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationTiming.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationTiming.extra.attrib = empty
+ SVG.AnimationTiming.attrib =
+ attribute begin { text }?,
+ attribute dur { text }?,
+ attribute end { text }?,
+ attribute min { text }?,
+ attribute max { text }?,
+ [ a:defaultValue = "always" ]
+ attribute restart { "always" | "never" | "whenNotActive" }?,
+ attribute repeatCount { text }?,
+ attribute repeatDur { text }?,
+ [ a:defaultValue = "remove" ]
+ attribute fill { "remove" | "freeze" }?,
+ SVG.AnimationTiming.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationValue.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationValue.extra.attrib = empty
+ SVG.AnimationValue.attrib =
+ [ a:defaultValue = "linear" ]
+ attribute calcMode { "discrete" | "linear" | "paced" | "spline" }?,
+ attribute values { text }?,
+ attribute keyTimes { text }?,
+ attribute keySplines { text }?,
+ attribute from { text }?,
+ attribute to { text }?,
+ attribute by { text }?,
+ SVG.AnimationValue.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationAddtion.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationAddtion.extra.attrib = empty
+ SVG.AnimationAddtion.attrib =
+ [ a:defaultValue = "replace" ]
+ attribute additive { "replace" | "sum" }?,
+ [ a:defaultValue = "none" ]
+ attribute accumulate { "none" | "sum" }?,
+ SVG.AnimationAddtion.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " animate: Animate Element\x{a}" ~
+ " "
+ ]
+ SVG.animate.content = SVG.Description.class*
+ animate = element animate { attlist.animate, SVG.animate.content }
+ attlist.animate &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationValue.attrib,
+ SVG.AnimationAddtion.attrib
+ a:documentation [ "\x{a}" ~ " set: Set Element\x{a}" ~ " " ]
+ SVG.set.content = SVG.Description.class*
+ set = element set { attlist.set, SVG.set.content }
+ attlist.set &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ attribute to { text }?
+ a:documentation [
+ "\x{a}" ~
+ " animateMotion: Animate Motion Element\x{a}" ~
+ " "
+ ]
+ SVG.animateMotion.content = SVG.Description.class*, mpath?
+ animateMotion =
+ element animateMotion {
+ attlist.animateMotion, SVG.animateMotion.content
+ }
+ attlist.animateMotion &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationAddtion.attrib,
+ [ a:defaultValue = "paced" ]
+ attribute calcMode { "discrete" | "linear" | "paced" | "spline" }?,
+ attribute values { text }?,
+ attribute keyTimes { text }?,
+ attribute keySplines { text }?,
+ attribute from { text }?,
+ attribute to { text }?,
+ attribute by { text }?,
+ attribute path { text }?,
+ attribute keyPoints { text }?,
+ attribute rotate { text }?,
+ attribute origin { text }?
+ a:documentation [
+ "\x{a}" ~
+ " animateColor: Animate Color Element\x{a}" ~
+ " "
+ ]
+ SVG.animateColor.content = SVG.Description.class*
+ animateColor =
+ element animateColor {
+ attlist.animateColor, SVG.animateColor.content
+ }
+ attlist.animateColor &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationValue.attrib,
+ SVG.AnimationAddtion.attrib
+ a:documentation [
+ "\x{a}" ~
+ " animateTransform: Animate Transform Element\x{a}" ~
+ " "
+ ]
+ SVG.animateTransform.content = SVG.Description.class*
+ animateTransform =
+ element animateTransform {
+ attlist.animateTransform, SVG.animateTransform.content
+ }
+ attlist.animateTransform &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationValue.attrib,
+ SVG.AnimationAddtion.attrib,
+ [ a:defaultValue = "translate" ]
+ attribute type {
+ "translate" | "scale" | "rotate" | "skewX" | "skewY"
+ }?
+ a:documentation [
+ "\x{a}" ~
+ " mpath: Motion Path Element\x{a}" ~
+ " "
+ ]
+ SVG.mpath.content = SVG.Description.class*
+ mpath = element mpath { attlist.mpath, SVG.mpath.content }
+ attlist.mpath &=
+ SVG.Core.attrib, SVG.XLinkRequired.attrib, SVG.External.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rng
new file mode 100644
index 00000000000..918313a71fe
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animation.rng
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Animation Module
+ file: svg-animation.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-animation.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Animation
+
+ animate, set, animateMotion, animateColor, animateTransform, mpath
+
+ This module declares markup to provide support for animation.
+ </a:documentation>
+ <a:documentation>
+ SVG.Animation.class
+ </a:documentation>
+ <define name="SVG.Animation.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Animation.class" combine="choice">
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateMotion"/>
+ <ref name="animateColor"/>
+ <ref name="animateTransform"/>
+ <ref name="SVG.Animation.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Animation.attrib
+ </a:documentation>
+ <define name="SVG.Animation.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Animation.attrib">
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.Animation.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationAttribute.attrib
+ </a:documentation>
+ <define name="SVG.AnimationAttribute.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationAttribute.attrib">
+ <attribute name="attributeName"/>
+ <optional>
+ <attribute name="attributeType"/>
+ </optional>
+ <ref name="SVG.AnimationAttribute.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationTiming.attrib
+ </a:documentation>
+ <define name="SVG.AnimationTiming.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationTiming.attrib">
+ <optional>
+ <attribute name="begin"/>
+ </optional>
+ <optional>
+ <attribute name="dur"/>
+ </optional>
+ <optional>
+ <attribute name="end"/>
+ </optional>
+ <optional>
+ <attribute name="min"/>
+ </optional>
+ <optional>
+ <attribute name="max"/>
+ </optional>
+ <optional>
+ <attribute name="restart" a:defaultValue="always">
+ <choice>
+ <value>always</value>
+ <value>never</value>
+ <value>whenNotActive</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="repeatCount"/>
+ </optional>
+ <optional>
+ <attribute name="repeatDur"/>
+ </optional>
+ <optional>
+ <attribute name="fill" a:defaultValue="remove">
+ <choice>
+ <value>remove</value>
+ <value>freeze</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.AnimationTiming.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationValue.attrib
+ </a:documentation>
+ <define name="SVG.AnimationValue.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationValue.attrib">
+ <optional>
+ <attribute name="calcMode" a:defaultValue="linear">
+ <choice>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>paced</value>
+ <value>spline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="values"/>
+ </optional>
+ <optional>
+ <attribute name="keyTimes"/>
+ </optional>
+ <optional>
+ <attribute name="keySplines"/>
+ </optional>
+ <optional>
+ <attribute name="from"/>
+ </optional>
+ <optional>
+ <attribute name="to"/>
+ </optional>
+ <optional>
+ <attribute name="by"/>
+ </optional>
+ <ref name="SVG.AnimationValue.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationAddtion.attrib
+ </a:documentation>
+ <define name="SVG.AnimationAddtion.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationAddtion.attrib">
+ <optional>
+ <attribute name="additive" a:defaultValue="replace">
+ <choice>
+ <value>replace</value>
+ <value>sum</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accumulate" a:defaultValue="none">
+ <choice>
+ <value>none</value>
+ <value>sum</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.AnimationAddtion.extra.attrib"/>
+ </define>
+ <a:documentation>
+ animate: Animate Element
+ </a:documentation>
+ <define name="SVG.animate.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="animate">
+ <element name="animate">
+ <ref name="attlist.animate"/>
+ <ref name="SVG.animate.content"/>
+ </element>
+ </define>
+ <define name="attlist.animate" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationValue.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ </define>
+ <a:documentation>
+ set: Set Element
+ </a:documentation>
+ <define name="SVG.set.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="set">
+ <element name="set">
+ <ref name="attlist.set"/>
+ <ref name="SVG.set.content"/>
+ </element>
+ </define>
+ <define name="attlist.set" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <optional>
+ <attribute name="to"/>
+ </optional>
+ </define>
+ <a:documentation>
+ animateMotion: Animate Motion Element
+ </a:documentation>
+ <define name="SVG.animateMotion.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="mpath"/>
+ </optional>
+ </define>
+ <define name="animateMotion">
+ <element name="animateMotion">
+ <ref name="attlist.animateMotion"/>
+ <ref name="SVG.animateMotion.content"/>
+ </element>
+ </define>
+ <define name="attlist.animateMotion" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ <optional>
+ <attribute name="calcMode" a:defaultValue="paced">
+ <choice>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>paced</value>
+ <value>spline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="values"/>
+ </optional>
+ <optional>
+ <attribute name="keyTimes"/>
+ </optional>
+ <optional>
+ <attribute name="keySplines"/>
+ </optional>
+ <optional>
+ <attribute name="from"/>
+ </optional>
+ <optional>
+ <attribute name="to"/>
+ </optional>
+ <optional>
+ <attribute name="by"/>
+ </optional>
+ <optional>
+ <attribute name="path"/>
+ </optional>
+ <optional>
+ <attribute name="keyPoints"/>
+ </optional>
+ <optional>
+ <attribute name="rotate"/>
+ </optional>
+ <optional>
+ <attribute name="origin"/>
+ </optional>
+ </define>
+ <a:documentation>
+ animateColor: Animate Color Element
+ </a:documentation>
+ <define name="SVG.animateColor.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="animateColor">
+ <element name="animateColor">
+ <ref name="attlist.animateColor"/>
+ <ref name="SVG.animateColor.content"/>
+ </element>
+ </define>
+ <define name="attlist.animateColor" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationValue.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ </define>
+ <a:documentation>
+ animateTransform: Animate Transform Element
+ </a:documentation>
+ <define name="SVG.animateTransform.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="animateTransform">
+ <element name="animateTransform">
+ <ref name="attlist.animateTransform"/>
+ <ref name="SVG.animateTransform.content"/>
+ </element>
+ </define>
+ <define name="attlist.animateTransform" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationValue.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ <optional>
+ <attribute name="type" a:defaultValue="translate">
+ <choice>
+ <value>translate</value>
+ <value>scale</value>
+ <value>rotate</value>
+ <value>skewX</value>
+ <value>skewY</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ mpath: Motion Path Element
+ </a:documentation>
+ <define name="SVG.mpath.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="mpath">
+ <element name="mpath">
+ <ref name="attlist.mpath"/>
+ <ref name="SVG.mpath.content"/>
+ </element>
+ </define>
+ <define name="attlist.mpath" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rnc
new file mode 100644
index 00000000000..efbbabc42c5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rnc
@@ -0,0 +1,33 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Animation Events Attribute Module
+## file: svg-animevents-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-animevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Animation Events Attribute
+##
+## onbegin, onend, onrepeat, onload
+##
+## This module defines the AnimationEvents attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.onbegin.attrib = attribute onbegin { Script.datatype }?
+ SVG.onend.attrib = attribute onend { Script.datatype }?
+ SVG.onrepeat.attrib = attribute onrepeat { Script.datatype }?
+ SVG.AnimationEvents.extra.attrib = empty
+ SVG.AnimationEvents.attrib &=
+ SVG.onbegin.attrib,
+ SVG.onend.attrib,
+ SVG.onrepeat.attrib,
+ SVG.onload.attrib,
+ SVG.AnimationEvents.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rng
new file mode 100644
index 00000000000..164414fe0fc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-animevents-attrib.rng
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Animation Events Attribute Module
+ file: svg-animevents-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-animevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Animation Events Attribute
+
+ onbegin, onend, onrepeat, onload
+
+ This module defines the AnimationEvents attribute set.
+ </a:documentation>
+ <define name="SVG.onbegin.attrib">
+ <optional>
+ <attribute name="onbegin">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onend.attrib">
+ <optional>
+ <attribute name="onend">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onrepeat.attrib">
+ <optional>
+ <attribute name="onrepeat">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.AnimationEvents.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationEvents.attrib" combine="interleave">
+ <ref name="SVG.onbegin.attrib"/>
+ <ref name="SVG.onend.attrib"/>
+ <ref name="SVG.onrepeat.attrib"/>
+ <ref name="SVG.onload.attrib"/>
+ <ref name="SVG.AnimationEvents.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rnc
new file mode 100644
index 00000000000..5471141c5fa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rnc
@@ -0,0 +1,64 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Clip Module
+## file: svg-basic-clip.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Clip
+##
+## clipPath
+##
+## This module declares markup to provide support for clipping.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ ClipPathValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Clip.attrib\x{a}" ~ " " ]
+ SVG.Clip.extra.attrib = empty
+ SVG.Clip.attrib &=
+ attribute clip-path { ClipPathValue.datatype }?,
+ attribute clip-rule { ClipFillRule.datatype }?,
+ SVG.Clip.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Clip.class\x{a}" ~ " " ]
+ SVG.Clip.extra.class = notAllowed
+ SVG.Clip.class |= clipPath | SVG.Clip.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " clipPath: Clip Path Element\x{a}" ~
+ " "
+ ]
+ SVG.clipPath.class = rect | SVG.Animation.class | SVG.Use.class
+ SVG.clipPath.content = SVG.Description.class*, SVG.clipPath.class*
+ clipPath = element clipPath { attlist.clipPath, SVG.clipPath.content }
+ attlist.clipPath &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Text.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?,
+ attribute clipPathUnits { "userSpaceOnUse" | "objectBoundingBox" }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rng
new file mode 100644
index 00000000000..0bb1333829f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-clip.rng
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Clip Module
+ file: svg-basic-clip.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Clip
+
+ clipPath
+
+ This module declares markup to provide support for clipping.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="ClipPathValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Clip.attrib
+ </a:documentation>
+ <define name="SVG.Clip.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Clip.attrib" combine="interleave">
+ <optional>
+ <attribute name="clip-path">
+ <ref name="ClipPathValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="clip-rule">
+ <ref name="ClipFillRule.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Clip.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Clip.class
+ </a:documentation>
+ <define name="SVG.Clip.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Clip.class" combine="choice">
+ <choice>
+ <ref name="clipPath"/>
+ <ref name="SVG.Clip.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ clipPath: Clip Path Element
+ </a:documentation>
+ <define name="SVG.clipPath.class">
+ <choice>
+ <ref name="rect"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Use.class"/>
+ </choice>
+ </define>
+ <define name="SVG.clipPath.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.clipPath.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="clipPath">
+ <element name="clipPath">
+ <ref name="attlist.clipPath"/>
+ <ref name="SVG.clipPath.content"/>
+ </element>
+ </define>
+ <define name="attlist.clipPath" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Text.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="clipPathUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rnc
new file mode 100644
index 00000000000..995c08e7daf
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rnc
@@ -0,0 +1,338 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Filter Module
+## file: svg-basic-filter.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Filter
+##
+## filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+## feFlood, feGaussianBlur, feImage, feMerge, feMergeNode, feOffset,
+## feTile, feFuncR, feFuncG, feFuncB, feFuncA
+##
+## This module declares markup to provide support for filter effect.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ FilterValue.datatype = xsd:string
+ NumberOptionalNumber.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Filter.attrib\x{a}" ~ " " ]
+ SVG.Filter.extra.attrib = empty
+ SVG.Filter.attrib &=
+ attribute filter { FilterValue.datatype }?,
+ SVG.Filter.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.FilterColor.attrib\x{a}" ~ " " ]
+ SVG.FilterColor.extra.attrib = empty
+ SVG.FilterColor.attrib &=
+ attribute color-interpolation-filters {
+ "auto" | "sRGB" | "linearRGB" | "inherit"
+ }?,
+ SVG.FilterColor.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Filter.class\x{a}" ~ " " ]
+ SVG.Filter.extra.class = notAllowed
+ SVG.Filter.class |= filter | SVG.Filter.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " SVG.FilterPrimitive.class\x{a}" ~
+ " "
+ ]
+ SVG.FilterPrimitive.extra.class = notAllowed
+ SVG.FilterPrimitive.class =
+ feBlend
+ | feColorMatrix
+ | feComponentTransfer
+ | feComposite
+ | feFlood
+ | feGaussianBlur
+ | feImage
+ | feMerge
+ | feOffset
+ | feTile
+ | SVG.FilterPrimitive.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " SVG.FilterPrimitive.attrib\x{a}" ~
+ " "
+ ]
+ SVG.FilterPrimitive.extra.attrib = empty
+ SVG.FilterPrimitive.attrib =
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute result { text }?,
+ SVG.FilterPrimitive.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.FilterPrimitiveWithIn.attrib\x{a}" ~
+ " "
+ ]
+ SVG.FilterPrimitiveWithIn.extra.attrib = empty
+ SVG.FilterPrimitiveWithIn.attrib =
+ SVG.FilterPrimitive.attrib,
+ attribute in { text }?,
+ SVG.FilterPrimitiveWithIn.extra.attrib
+ a:documentation [ "\x{a}" ~ " filter: Filter Element\x{a}" ~ " " ]
+ SVG.filter.content =
+ SVG.Description.class*, (animate | set | SVG.FilterPrimitive.class)*
+ filter = element filter { attlist.filter, SVG.filter.content }
+ attlist.filter &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute filterRes { NumberOptionalNumber.datatype }?,
+ attribute filterUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute primitiveUnits { "userSpaceOnUse" | "objectBoundingBox" }?
+ a:documentation [
+ "\x{a}" ~
+ " feBlend: Filter Effect Blend Element\x{a}" ~
+ " "
+ ]
+ SVG.feBlend.content = (animate | set)*
+ feBlend = element feBlend { attlist.feBlend, SVG.feBlend.content }
+ attlist.feBlend &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute in2 { text },
+ [ a:defaultValue = "normal" ]
+ attribute mode {
+ "normal" | "multiply" | "screen" | "darken" | "lighten"
+ }?
+ a:documentation [
+ "\x{a}" ~
+ " feColorMatrix: Filter Effect Color Matrix Element\x{a}" ~
+ " "
+ ]
+ SVG.feColorMatrix.content = (animate | set)*
+ feColorMatrix =
+ element feColorMatrix {
+ attlist.feColorMatrix, SVG.feColorMatrix.content
+ }
+ attlist.feColorMatrix &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ [ a:defaultValue = "matrix" ]
+ attribute type {
+ "matrix" | "saturate" | "hueRotate" | "luminanceToAlpha"
+ }?,
+ attribute values { text }?
+ a:documentation [
+ "\x{a}" ~
+ " feComponentTransfer: Filter Effect Component Transfer Element\x{a}" ~
+ " "
+ ]
+ SVG.feComponentTransfer.content =
+ feFuncR?, feFuncG?, feFuncB?, feFuncA?
+ feComponentTransfer =
+ element feComponentTransfer {
+ attlist.feComponentTransfer, SVG.feComponentTransfer.content
+ }
+ attlist.feComponentTransfer &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib
+ a:documentation [
+ "\x{a}" ~
+ " feComposite: Filter Effect Composite Element\x{a}" ~
+ " "
+ ]
+ SVG.feComposite.content = (animate | set)*
+ feComposite =
+ element feComposite { attlist.feComposite, SVG.feComposite.content }
+ attlist.feComposite &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute in2 { text },
+ [ a:defaultValue = "over" ]
+ attribute operator {
+ "over" | "in" | "out" | "atop" | "xor" | "arithmetic"
+ }?,
+ attribute k1 { Number.datatype }?,
+ attribute k2 { Number.datatype }?,
+ attribute k3 { Number.datatype }?,
+ attribute k4 { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFlood: Filter Effect Flood Element\x{a}" ~
+ " "
+ ]
+ SVG.feFlood.content = (animate | set | animateColor)*
+ feFlood = element feFlood { attlist.feFlood, SVG.feFlood.content }
+ attlist.feFlood &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute flood-color { SVGColor.datatype }?,
+ attribute flood-opacity { OpacityValue.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feGaussianBlur: Filter Effect Gaussian Blur Element\x{a}" ~
+ " "
+ ]
+ SVG.feGaussianBlur.content = (animate | set)*
+ feGaussianBlur =
+ element feGaussianBlur {
+ attlist.feGaussianBlur, SVG.feGaussianBlur.content
+ }
+ attlist.feGaussianBlur &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute stdDeviation { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feImage: Filter Effect Image Element\x{a}" ~
+ " "
+ ]
+ SVG.feImage.content = (animate | set | animateTransform)*
+ feImage = element feImage { attlist.feImage, SVG.feImage.content }
+ attlist.feImage &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.FilterPrimitive.attrib,
+ SVG.XLinkEmbed.attrib,
+ SVG.External.attrib,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feMerge: Filter Effect Merge Element\x{a}" ~
+ " "
+ ]
+ SVG.feMerge.content = feMergeNode*
+ feMerge = element feMerge { attlist.feMerge, SVG.feMerge.content }
+ attlist.feMerge &=
+ SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitive.attrib
+ a:documentation [
+ "\x{a}" ~
+ " feMergeNode: Filter Effect Merge Node Element\x{a}" ~
+ " "
+ ]
+ SVG.feMergeNode.content = (animate | set)*
+ feMergeNode =
+ element feMergeNode { attlist.feMergeNode, SVG.feMergeNode.content }
+ attlist.feMergeNode &=
+ SVG.Core.attrib,
+ attribute in { text }?
+ a:documentation [
+ "\x{a}" ~
+ " feOffset: Filter Effect Offset Element\x{a}" ~
+ " "
+ ]
+ SVG.feOffset.content = (animate | set)*
+ feOffset = element feOffset { attlist.feOffset, SVG.feOffset.content }
+ attlist.feOffset &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute dx { Number.datatype }?,
+ attribute dy { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feTile: Filter Effect Tile Element\x{a}" ~
+ " "
+ ]
+ SVG.feTile.content = (animate | set)*
+ feTile = element feTile { attlist.feTile, SVG.feTile.content }
+ attlist.feTile &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib
+ a:documentation [
+ "\x{a}" ~
+ " feFuncR: Filter Effect Function Red Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncR.content = (animate | set)*
+ feFuncR = element feFuncR { attlist.feFuncR, SVG.feFuncR.content }
+ attlist.feFuncR &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFuncG: Filter Effect Function Green Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncG.content = (animate | set)*
+ feFuncG = element feFuncG { attlist.feFuncG, SVG.feFuncG.content }
+ attlist.feFuncG &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFuncB: Filter Effect Function Blue Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncB.content = (animate | set)*
+ feFuncB = element feFuncB { attlist.feFuncB, SVG.feFuncB.content }
+ attlist.feFuncB &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFuncA: Filter Effect Function Alpha Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncA.content = (animate | set)*
+ feFuncA = element feFuncA { attlist.feFuncA, SVG.feFuncA.content }
+ attlist.feFuncA &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rng
new file mode 100644
index 00000000000..6e9a39b50fa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-filter.rng
@@ -0,0 +1,779 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Filter Module
+ file: svg-basic-filter.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Filter
+
+ filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+ feFlood, feGaussianBlur, feImage, feMerge, feMergeNode, feOffset,
+ feTile, feFuncR, feFuncG, feFuncB, feFuncA
+
+ This module declares markup to provide support for filter effect.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="FilterValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="NumberOptionalNumber.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Filter.attrib
+ </a:documentation>
+ <define name="SVG.Filter.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Filter.attrib" combine="interleave">
+ <optional>
+ <attribute name="filter">
+ <ref name="FilterValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Filter.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.FilterColor.attrib
+ </a:documentation>
+ <define name="SVG.FilterColor.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterColor.attrib" combine="interleave">
+ <optional>
+ <attribute name="color-interpolation-filters">
+ <choice>
+ <value>auto</value>
+ <value>sRGB</value>
+ <value>linearRGB</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.FilterColor.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Filter.class
+ </a:documentation>
+ <define name="SVG.Filter.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Filter.class" combine="choice">
+ <choice>
+ <ref name="filter"/>
+ <ref name="SVG.Filter.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.FilterPrimitive.class
+ </a:documentation>
+ <define name="SVG.FilterPrimitive.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.FilterPrimitive.class">
+ <choice>
+ <ref name="feBlend"/>
+ <ref name="feColorMatrix"/>
+ <ref name="feComponentTransfer"/>
+ <ref name="feComposite"/>
+ <ref name="feFlood"/>
+ <ref name="feGaussianBlur"/>
+ <ref name="feImage"/>
+ <ref name="feMerge"/>
+ <ref name="feOffset"/>
+ <ref name="feTile"/>
+ <ref name="SVG.FilterPrimitive.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.FilterPrimitive.attrib
+ </a:documentation>
+ <define name="SVG.FilterPrimitive.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterPrimitive.attrib">
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="result"/>
+ </optional>
+ <ref name="SVG.FilterPrimitive.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.FilterPrimitiveWithIn.attrib
+ </a:documentation>
+ <define name="SVG.FilterPrimitiveWithIn.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterPrimitiveWithIn.attrib">
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ <optional>
+ <attribute name="in"/>
+ </optional>
+ <ref name="SVG.FilterPrimitiveWithIn.extra.attrib"/>
+ </define>
+ <a:documentation>
+ filter: Filter Element
+ </a:documentation>
+ <define name="SVG.filter.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="SVG.FilterPrimitive.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="filter">
+ <element name="filter">
+ <ref name="attlist.filter"/>
+ <ref name="SVG.filter.content"/>
+ </element>
+ </define>
+ <define name="attlist.filter" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filterRes">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filterUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="primitiveUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feBlend: Filter Effect Blend Element
+ </a:documentation>
+ <define name="SVG.feBlend.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feBlend">
+ <element name="feBlend">
+ <ref name="attlist.feBlend"/>
+ <ref name="SVG.feBlend.content"/>
+ </element>
+ </define>
+ <define name="attlist.feBlend" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="in2"/>
+ <optional>
+ <attribute name="mode" a:defaultValue="normal">
+ <choice>
+ <value>normal</value>
+ <value>multiply</value>
+ <value>screen</value>
+ <value>darken</value>
+ <value>lighten</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feColorMatrix: Filter Effect Color Matrix Element
+ </a:documentation>
+ <define name="SVG.feColorMatrix.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feColorMatrix">
+ <element name="feColorMatrix">
+ <ref name="attlist.feColorMatrix"/>
+ <ref name="SVG.feColorMatrix.content"/>
+ </element>
+ </define>
+ <define name="attlist.feColorMatrix" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="type" a:defaultValue="matrix">
+ <choice>
+ <value>matrix</value>
+ <value>saturate</value>
+ <value>hueRotate</value>
+ <value>luminanceToAlpha</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="values"/>
+ </optional>
+ </define>
+ <a:documentation>
+ feComponentTransfer: Filter Effect Component Transfer Element
+ </a:documentation>
+ <define name="SVG.feComponentTransfer.content">
+ <optional>
+ <ref name="feFuncR"/>
+ </optional>
+ <optional>
+ <ref name="feFuncG"/>
+ </optional>
+ <optional>
+ <ref name="feFuncB"/>
+ </optional>
+ <optional>
+ <ref name="feFuncA"/>
+ </optional>
+ </define>
+ <define name="feComponentTransfer">
+ <element name="feComponentTransfer">
+ <ref name="attlist.feComponentTransfer"/>
+ <ref name="SVG.feComponentTransfer.content"/>
+ </element>
+ </define>
+ <define name="attlist.feComponentTransfer" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ </define>
+ <a:documentation>
+ feComposite: Filter Effect Composite Element
+ </a:documentation>
+ <define name="SVG.feComposite.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feComposite">
+ <element name="feComposite">
+ <ref name="attlist.feComposite"/>
+ <ref name="SVG.feComposite.content"/>
+ </element>
+ </define>
+ <define name="attlist.feComposite" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="in2"/>
+ <optional>
+ <attribute name="operator" a:defaultValue="over">
+ <choice>
+ <value>over</value>
+ <value>in</value>
+ <value>out</value>
+ <value>atop</value>
+ <value>xor</value>
+ <value>arithmetic</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k1">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k2">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k3">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k4">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFlood: Filter Effect Flood Element
+ </a:documentation>
+ <define name="SVG.feFlood.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFlood">
+ <element name="feFlood">
+ <ref name="attlist.feFlood"/>
+ <ref name="SVG.feFlood.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFlood" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="flood-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flood-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feGaussianBlur: Filter Effect Gaussian Blur Element
+ </a:documentation>
+ <define name="SVG.feGaussianBlur.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feGaussianBlur">
+ <element name="feGaussianBlur">
+ <ref name="attlist.feGaussianBlur"/>
+ <ref name="SVG.feGaussianBlur.content"/>
+ </element>
+ </define>
+ <define name="attlist.feGaussianBlur" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="stdDeviation">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feImage: Filter Effect Image Element
+ </a:documentation>
+ <define name="SVG.feImage.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateTransform"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feImage">
+ <element name="feImage">
+ <ref name="attlist.feImage"/>
+ <ref name="SVG.feImage.content"/>
+ </element>
+ </define>
+ <define name="attlist.feImage" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ <ref name="SVG.XLinkEmbed.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feMerge: Filter Effect Merge Element
+ </a:documentation>
+ <define name="SVG.feMerge.content">
+ <zeroOrMore>
+ <ref name="feMergeNode"/>
+ </zeroOrMore>
+ </define>
+ <define name="feMerge">
+ <element name="feMerge">
+ <ref name="attlist.feMerge"/>
+ <ref name="SVG.feMerge.content"/>
+ </element>
+ </define>
+ <define name="attlist.feMerge" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ </define>
+ <a:documentation>
+ feMergeNode: Filter Effect Merge Node Element
+ </a:documentation>
+ <define name="SVG.feMergeNode.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feMergeNode">
+ <element name="feMergeNode">
+ <ref name="attlist.feMergeNode"/>
+ <ref name="SVG.feMergeNode.content"/>
+ </element>
+ </define>
+ <define name="attlist.feMergeNode" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="in"/>
+ </optional>
+ </define>
+ <a:documentation>
+ feOffset: Filter Effect Offset Element
+ </a:documentation>
+ <define name="SVG.feOffset.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feOffset">
+ <element name="feOffset">
+ <ref name="attlist.feOffset"/>
+ <ref name="SVG.feOffset.content"/>
+ </element>
+ </define>
+ <define name="attlist.feOffset" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="dx">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feTile: Filter Effect Tile Element
+ </a:documentation>
+ <define name="SVG.feTile.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feTile">
+ <element name="feTile">
+ <ref name="attlist.feTile"/>
+ <ref name="SVG.feTile.content"/>
+ </element>
+ </define>
+ <define name="attlist.feTile" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ </define>
+ <a:documentation>
+ feFuncR: Filter Effect Function Red Element
+ </a:documentation>
+ <define name="SVG.feFuncR.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncR">
+ <element name="feFuncR">
+ <ref name="attlist.feFuncR"/>
+ <ref name="SVG.feFuncR.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncR" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFuncG: Filter Effect Function Green Element
+ </a:documentation>
+ <define name="SVG.feFuncG.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncG">
+ <element name="feFuncG">
+ <ref name="attlist.feFuncG"/>
+ <ref name="SVG.feFuncG.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncG" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFuncB: Filter Effect Function Blue Element
+ </a:documentation>
+ <define name="SVG.feFuncB.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncB">
+ <element name="feFuncB">
+ <ref name="attlist.feFuncB"/>
+ <ref name="SVG.feFuncB.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncB" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFuncA: Filter Effect Function Alpha Element
+ </a:documentation>
+ <define name="SVG.feFuncA.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncA">
+ <element name="feFuncA">
+ <ref name="attlist.feFuncA"/>
+ <ref name="SVG.feFuncA.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncA" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rnc
new file mode 100644
index 00000000000..a45d34e3c64
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rnc
@@ -0,0 +1,196 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Font Module
+## file: svg-basic-font.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Font
+##
+## font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+## font-face-uri, font-face-name
+##
+## This module declares markup to provide support for template.
+##
+
+##
+## SVG.Font.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Font.extra.class = notAllowed
+ SVG.Font.class |= font | font-face | SVG.Font.extra.class
+ a:documentation [ "\x{a}" ~ " font: Font Element\x{a}" ~ " " ]
+ SVG.font.content =
+ SVG.Description.class*,
+ font-face,
+ missing-glyph,
+ (glyph | hkern | vkern)*
+ font = element font { attlist.font, SVG.font.content }
+ attlist.font &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.External.attrib,
+ attribute horiz-origin-x { Number.datatype }?,
+ attribute horiz-origin-y { Number.datatype }?,
+ attribute horiz-adv-x { Number.datatype },
+ attribute vert-origin-x { Number.datatype }?,
+ attribute vert-origin-y { Number.datatype }?,
+ attribute vert-adv-y { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " font-face: Font Face Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face.extra.class = notAllowed
+ SVG.font-face.content =
+ SVG.Description.class*, font-face-src?, SVG.font-face.extra.class
+ font-face =
+ element font-face { attlist.font-face, SVG.font-face.content }
+ attlist.font-face &=
+ SVG.Core.attrib,
+ attribute font-family { text }?,
+ attribute font-style { text }?,
+ attribute font-variant { text }?,
+ attribute font-weight { text }?,
+ attribute font-stretch { text }?,
+ attribute font-size { text }?,
+ attribute unicode-range { text }?,
+ attribute units-per-em { Number.datatype }?,
+ attribute panose-1 { text }?,
+ attribute stemv { Number.datatype }?,
+ attribute stemh { Number.datatype }?,
+ attribute slope { Number.datatype }?,
+ attribute cap-height { Number.datatype }?,
+ attribute x-height { Number.datatype }?,
+ attribute accent-height { Number.datatype }?,
+ attribute ascent { Number.datatype }?,
+ attribute descent { Number.datatype }?,
+ attribute widths { text }?,
+ attribute bbox { text }?,
+ attribute ideographic { Number.datatype }?,
+ attribute alphabetic { Number.datatype }?,
+ attribute mathematical { Number.datatype }?,
+ attribute hanging { Number.datatype }?,
+ attribute v-ideographic { Number.datatype }?,
+ attribute v-alphabetic { Number.datatype }?,
+ attribute v-mathematical { Number.datatype }?,
+ attribute v-hanging { Number.datatype }?,
+ attribute underline-position { Number.datatype }?,
+ attribute underline-thickness { Number.datatype }?,
+ attribute strikethrough-position { Number.datatype }?,
+ attribute strikethrough-thickness { Number.datatype }?,
+ attribute overline-position { Number.datatype }?,
+ attribute overline-thickness { Number.datatype }?
+ a:documentation [ "\x{a}" ~ " glyph: Glyph Element\x{a}" ~ " " ]
+ SVG.glyph.class = notAllowed
+ SVG.glyph.content = SVG.Description.class*, SVG.glyph.class*
+ glyph = element glyph { attlist.glyph, SVG.glyph.content }
+ attlist.glyph &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ attribute unicode { text }?,
+ attribute glyph-name { text }?,
+ attribute d { PathData.datatype }?,
+ attribute orientation { text }?,
+ attribute arabic-form { text }?,
+ attribute lang { LanguageCodes.datatype }?,
+ attribute horiz-adv-x { Number.datatype }?,
+ attribute vert-origin-x { Number.datatype }?,
+ attribute vert-origin-y { Number.datatype }?,
+ attribute vert-adv-y { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " missing-glyph: Missing Glyph Element\x{a}" ~
+ " "
+ ]
+ SVG.missing-glyph.class = notAllowed
+ SVG.missing-glyph.content =
+ SVG.Description.class*, SVG.missing-glyph.class*
+ missing-glyph =
+ element missing-glyph {
+ attlist.missing-glyph, SVG.missing-glyph.content
+ }
+ attlist.missing-glyph &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ attribute d { PathData.datatype }?,
+ attribute horiz-adv-x { Number.datatype }?,
+ attribute vert-origin-x { Number.datatype }?,
+ attribute vert-origin-y { Number.datatype }?,
+ attribute vert-adv-y { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " hkern: Horizontal Kerning Element\x{a}" ~
+ " "
+ ]
+ SVG.hkern.content = empty
+ hkern = element hkern { attlist.hkern, SVG.hkern.content }
+ attlist.hkern &=
+ SVG.Core.attrib,
+ attribute u1 { text }?,
+ attribute g1 { text }?,
+ attribute u2 { text }?,
+ attribute g2 { text }?,
+ attribute k { Number.datatype }
+ a:documentation [
+ "\x{a}" ~
+ " vkern: Vertical Kerning Element\x{a}" ~
+ " "
+ ]
+ SVG.vkern.content = empty
+ vkern = element vkern { attlist.vkern, SVG.vkern.content }
+ attlist.vkern &=
+ SVG.Core.attrib,
+ attribute u1 { text }?,
+ attribute g1 { text }?,
+ attribute u2 { text }?,
+ attribute g2 { text }?,
+ attribute k { Number.datatype }
+ a:documentation [
+ "\x{a}" ~
+ " font-face-src: Font Face Source Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-src.content = (font-face-uri | font-face-name)+
+ font-face-src =
+ element font-face-src {
+ attlist.font-face-src, SVG.font-face-src.content
+ }
+ attlist.font-face-src &= SVG.Core.attrib
+ a:documentation [
+ "\x{a}" ~
+ " font-face-uri: Font Face URI Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-uri.content = empty
+ font-face-uri =
+ element font-face-uri {
+ attlist.font-face-uri, SVG.font-face-uri.content
+ }
+ attlist.font-face-uri &= SVG.Core.attrib, SVG.XLinkRequired.attrib
+ a:documentation [
+ "\x{a}" ~
+ " font-face-name: Font Face Name Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-name.content = empty
+ font-face-name =
+ element font-face-name {
+ attlist.font-face-name, SVG.font-face-name.content
+ }
+ attlist.font-face-name &=
+ SVG.Core.attrib,
+ attribute name { text }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rng
new file mode 100644
index 00000000000..da67018545f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-font.rng
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Basic Font Module
+ file: svg-basic-font.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Font
+
+ font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+ font-face-uri, font-face-name
+
+ This module declares markup to provide support for template.
+ </a:documentation>
+ <a:documentation>
+ SVG.Font.class
+ </a:documentation>
+ <define name="SVG.Font.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Font.class" combine="choice">
+ <choice>
+ <ref name="font"/>
+ <ref name="font-face"/>
+ <ref name="SVG.Font.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ font: Font Element
+ </a:documentation>
+ <define name="SVG.font.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <ref name="font-face"/>
+ <ref name="missing-glyph"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="glyph"/>
+ <ref name="hkern"/>
+ <ref name="vkern"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="font">
+ <element name="font">
+ <ref name="attlist.font"/>
+ <ref name="SVG.font.content"/>
+ </element>
+ </define>
+ <define name="attlist.font" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="horiz-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="horiz-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="horiz-adv-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="vert-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-adv-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ font-face: Font Face Element
+ </a:documentation>
+ <define name="SVG.font-face.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.font-face.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="font-face-src"/>
+ </optional>
+ <ref name="SVG.font-face.extra.class"/>
+ </define>
+ <define name="font-face">
+ <element name="font-face">
+ <ref name="attlist.font-face"/>
+ <ref name="SVG.font-face.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="font-family"/>
+ </optional>
+ <optional>
+ <attribute name="font-style"/>
+ </optional>
+ <optional>
+ <attribute name="font-variant"/>
+ </optional>
+ <optional>
+ <attribute name="font-weight"/>
+ </optional>
+ <optional>
+ <attribute name="font-stretch"/>
+ </optional>
+ <optional>
+ <attribute name="font-size"/>
+ </optional>
+ <optional>
+ <attribute name="unicode-range"/>
+ </optional>
+ <optional>
+ <attribute name="units-per-em">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="panose-1"/>
+ </optional>
+ <optional>
+ <attribute name="stemv">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stemh">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cap-height">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x-height">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accent-height">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ascent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="descent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="widths"/>
+ </optional>
+ <optional>
+ <attribute name="bbox"/>
+ </optional>
+ <optional>
+ <attribute name="ideographic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alphabetic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathematical">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hanging">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-ideographic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-alphabetic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-mathematical">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-hanging">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="underline-position">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="underline-thickness">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strikethrough-position">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strikethrough-thickness">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="overline-position">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="overline-thickness">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ glyph: Glyph Element
+ </a:documentation>
+ <define name="SVG.glyph.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.glyph.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.glyph.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="glyph">
+ <element name="glyph">
+ <ref name="attlist.glyph"/>
+ <ref name="SVG.glyph.content"/>
+ </element>
+ </define>
+ <define name="attlist.glyph" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <optional>
+ <attribute name="unicode"/>
+ </optional>
+ <optional>
+ <attribute name="glyph-name"/>
+ </optional>
+ <optional>
+ <attribute name="d">
+ <ref name="PathData.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orientation"/>
+ </optional>
+ <optional>
+ <attribute name="arabic-form"/>
+ </optional>
+ <optional>
+ <attribute name="lang">
+ <ref name="LanguageCodes.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="horiz-adv-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-adv-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ missing-glyph: Missing Glyph Element
+ </a:documentation>
+ <define name="SVG.missing-glyph.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.missing-glyph.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.missing-glyph.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="missing-glyph">
+ <element name="missing-glyph">
+ <ref name="attlist.missing-glyph"/>
+ <ref name="SVG.missing-glyph.content"/>
+ </element>
+ </define>
+ <define name="attlist.missing-glyph" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <optional>
+ <attribute name="d">
+ <ref name="PathData.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="horiz-adv-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-adv-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ hkern: Horizontal Kerning Element
+ </a:documentation>
+ <define name="SVG.hkern.content">
+ <empty/>
+ </define>
+ <define name="hkern">
+ <element name="hkern">
+ <ref name="attlist.hkern"/>
+ <ref name="SVG.hkern.content"/>
+ </element>
+ </define>
+ <define name="attlist.hkern" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="u1"/>
+ </optional>
+ <optional>
+ <attribute name="g1"/>
+ </optional>
+ <optional>
+ <attribute name="u2"/>
+ </optional>
+ <optional>
+ <attribute name="g2"/>
+ </optional>
+ <attribute name="k">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </define>
+ <a:documentation>
+ vkern: Vertical Kerning Element
+ </a:documentation>
+ <define name="SVG.vkern.content">
+ <empty/>
+ </define>
+ <define name="vkern">
+ <element name="vkern">
+ <ref name="attlist.vkern"/>
+ <ref name="SVG.vkern.content"/>
+ </element>
+ </define>
+ <define name="attlist.vkern" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="u1"/>
+ </optional>
+ <optional>
+ <attribute name="g1"/>
+ </optional>
+ <optional>
+ <attribute name="u2"/>
+ </optional>
+ <optional>
+ <attribute name="g2"/>
+ </optional>
+ <attribute name="k">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </define>
+ <a:documentation>
+ font-face-src: Font Face Source Element
+ </a:documentation>
+ <define name="SVG.font-face-src.content">
+ <oneOrMore>
+ <choice>
+ <ref name="font-face-uri"/>
+ <ref name="font-face-name"/>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="font-face-src">
+ <element name="font-face-src">
+ <ref name="attlist.font-face-src"/>
+ <ref name="SVG.font-face-src.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-src" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ font-face-uri: Font Face URI Element
+ </a:documentation>
+ <define name="SVG.font-face-uri.content">
+ <empty/>
+ </define>
+ <define name="font-face-uri">
+ <element name="font-face-uri">
+ <ref name="attlist.font-face-uri"/>
+ <ref name="SVG.font-face-uri.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-uri" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ </define>
+ <a:documentation>
+ font-face-name: Font Face Name Element
+ </a:documentation>
+ <define name="SVG.font-face-name.content">
+ <empty/>
+ </define>
+ <define name="font-face-name">
+ <element name="font-face-name">
+ <ref name="attlist.font-face-name"/>
+ <ref name="SVG.font-face-name.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-name" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rnc
new file mode 100644
index 00000000000..606e2e4e92d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rnc
@@ -0,0 +1,49 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Graphics Attribute Module
+## file: svg-basic-graphics-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Graphics Attribute
+##
+## display, visibility
+##
+## This module defines the Graphics attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.display.attrib =
+ attribute display {
+ "inline"
+ | "block"
+ | "list-item"
+ | "run-in"
+ | "compact"
+ | "marker"
+ | "table"
+ | "inline-table"
+ | "table-row-group"
+ | "table-header-group"
+ | "table-footer-group"
+ | "table-row"
+ | "table-column-group"
+ | "table-column"
+ | "table-cell"
+ | "table-caption"
+ | "none"
+ | "inherit"
+ }?
+ SVG.visibility.attrib =
+ attribute visibility { "visible" | "hidden" | "inherit" }?
+ SVG.Graphics.extra.attrib = empty
+ SVG.Graphics.attrib &=
+ SVG.display.attrib, SVG.visibility.attrib, SVG.Graphics.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rng
new file mode 100644
index 00000000000..20c40b3648c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-graphics-attrib.rng
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Basic Graphics Attribute Module
+ file: svg-basic-graphics-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Graphics Attribute
+
+ display, visibility
+
+ This module defines the Graphics attribute set.
+ </a:documentation>
+ <define name="SVG.display.attrib">
+ <optional>
+ <attribute name="display">
+ <choice>
+ <value>inline</value>
+ <value>block</value>
+ <value>list-item</value>
+ <value>run-in</value>
+ <value>compact</value>
+ <value>marker</value>
+ <value>table</value>
+ <value>inline-table</value>
+ <value>table-row-group</value>
+ <value>table-header-group</value>
+ <value>table-footer-group</value>
+ <value>table-row</value>
+ <value>table-column-group</value>
+ <value>table-column</value>
+ <value>table-cell</value>
+ <value>table-caption</value>
+ <value>none</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.visibility.attrib">
+ <optional>
+ <attribute name="visibility">
+ <choice>
+ <value>visible</value>
+ <value>hidden</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Graphics.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Graphics.attrib" combine="interleave">
+ <ref name="SVG.display.attrib"/>
+ <ref name="SVG.visibility.attrib"/>
+ <ref name="SVG.Graphics.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rnc
new file mode 100644
index 00000000000..67b94df81a1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rnc
@@ -0,0 +1,293 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Structure Module
+## file: svg-basic-structure.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Structure
+##
+## svg, g, defs, desc, title, metadata, use
+##
+## This module declares the major structural elements and their attributes.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## The root element is "svg".
+ ##
+ start = svg
+
+ ##
+ ## Include core set of modules
+ ##
+ div {
+
+ ##
+ ## Datatypes Module
+ ##
+ include "svg-datatypes.rnc"
+
+ ##
+ ## Core Attribute Module
+ ##
+ include "svg-core-attrib.rnc"
+ }
+ a:documentation [
+ "\x{a}" ~
+ " Content Models (Default)\x{a}" ~
+ " "
+ ]
+ SVG.Profile.class = notAllowed
+ SVG.Gradient.class = notAllowed
+ SVG.Pattern.class = notAllowed
+ SVG.Clip.class = notAllowed
+ SVG.Mask.class = notAllowed
+ SVG.Filter.class = notAllowed
+ SVG.Cursor.class = notAllowed
+ SVG.Marker.class = notAllowed
+ SVG.View.class = notAllowed
+ SVG.Script.class = notAllowed
+ SVG.Font.class = notAllowed
+ SVG.Extensibility.class = notAllowed
+ SVG.Conditional.class = notAllowed
+ SVG.Image.class = notAllowed
+ SVG.Style.class = notAllowed
+ SVG.Shape.class = notAllowed
+ SVG.Text.class = notAllowed
+ SVG.Hyperlink.class = notAllowed
+ SVG.Animation.class = notAllowed
+ a:documentation [
+ "\x{a}" ~
+ " Attribute Collections (Default)\x{a}" ~
+ " "
+ ]
+ SVG.Container.attrib = empty
+ SVG.Viewport.attrib = empty
+ SVG.Text.attrib = empty
+ SVG.TextContent.attrib = empty
+ SVG.Opacity.attrib = empty
+ SVG.Marker.attrib = empty
+ SVG.Profile.attrib = empty
+ SVG.Gradient.attrib = empty
+ SVG.Clip.attrib = empty
+ SVG.Mask.attrib = empty
+ SVG.Filter.attrib = empty
+ SVG.FilterColor.attrib = empty
+ SVG.Cursor.attrib = empty
+ SVG.External.attrib = empty
+ SVG.Conditional.attrib = empty
+ SVG.Color.attrib = empty
+ SVG.Paint.attrib = empty
+ SVG.Graphics.attrib = empty
+ SVG.DocumentEvents.attrib = empty
+ SVG.GraphicalEvents.attrib = empty
+ SVG.onload.attrib = empty
+ SVG.AnimationEvents.attrib = empty
+ SVG.XLink.attrib = empty
+ SVG.XLinkRequired.attrib = empty
+ SVG.XLinkEmbed.attrib = empty
+ SVG.XLinkReplace.attrib = empty
+ SVG.Style.attrib = empty
+ SVG.Font.attrib = empty
+ a:documentation [ "\x{a}" ~ " SVG.Description.class\x{a}" ~ " " ]
+ SVG.Description.extra.class = notAllowed
+ SVG.Description.class =
+ desc | title | metadata | SVG.Description.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.Use.class\x{a}" ~ " " ]
+ SVG.Use.extra.class = notAllowed
+ SVG.Use.class = use | SVG.Use.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.Structure.class\x{a}" ~ " " ]
+ SVG.Structure.extra.class = notAllowed
+ SVG.Structure.class =
+ svg | g | defs | SVG.Use.class | SVG.Structure.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " SVG.Presentation.attrib\x{a}" ~
+ " "
+ ]
+ SVG.Presentation.extra.attrib = empty
+ SVG.Presentation.attrib =
+ SVG.Container.attrib,
+ SVG.Viewport.attrib,
+ SVG.Text.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Profile.attrib,
+ SVG.Gradient.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.FilterColor.attrib,
+ SVG.Cursor.attrib,
+ attribute flood-color { SVGColor.datatype }?,
+ attribute flood-opacity { OpacityValue.datatype }?,
+ attribute lighting-color { SVGColor.datatype }?,
+ SVG.Presentation.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " svg: SVG Document Element\x{a}" ~
+ " "
+ ]
+ SVG.svg.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ svg = element svg { attlist.svg, SVG.svg.content }
+ attlist.svg &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.DocumentEvents.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?,
+ [ a:defaultValue = "magnify" ]
+ attribute zoomAndPan { "disable" | "magnify" }?,
+ [ a:defaultValue = "1.1" ] attribute version { xsd:string "1.1" }?,
+ attribute baseProfile { Text.datatype }?,
+ [ a:defaultValue = "text/ecmascript" ]
+ attribute contentScriptType { ContentType.datatype }?,
+ [ a:defaultValue = "text/css" ]
+ attribute contentStyleType { ContentType.datatype }?
+ a:documentation [ "\x{a}" ~ " g: Group Element\x{a}" ~ " " ]
+ SVG.g.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ g = element g { attlist.g, SVG.g.content }
+ attlist.g &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " defs: Definisions Element\x{a}" ~
+ " "
+ ]
+ SVG.defs.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ defs = element defs { attlist.defs, SVG.defs.content }
+ attlist.defs &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " desc: Description Element\x{a}" ~
+ " "
+ ]
+ SVG.desc.content = text
+ desc = element desc { attlist.desc, SVG.desc.content }
+ attlist.desc &= SVG.Core.attrib, SVG.Style.attrib
+ a:documentation [ "\x{a}" ~ " title: Title Element\x{a}" ~ " " ]
+ SVG.title.content = text
+ title = element title { attlist.title, SVG.title.content }
+ attlist.title &= SVG.Core.attrib, SVG.Style.attrib
+ a:documentation [
+ "\x{a}" ~
+ " metadata: Metadata Element\x{a}" ~
+ " "
+ ]
+ SVG.metadata.content = text
+ metadata = element metadata { attlist.metadata, SVG.metadata.content }
+ attlist.metadata &= SVG.Core.attrib
+ a:documentation [ "\x{a}" ~ " use: Use Element\x{a}" ~ " " ]
+ SVG.use.content = SVG.Description.class*, SVG.Animation.class*
+ use = element use { attlist.use, SVG.use.content }
+ attlist.use &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.XLinkEmbed.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rng
new file mode 100644
index 00000000000..65ee4f172f4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-structure.rng
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Structure Module
+ file: svg-basic-structure.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Structure
+
+ svg, g, defs, desc, title, metadata, use
+
+ This module declares the major structural elements and their attributes.
+ </a:documentation>
+ <start>
+ <a:documentation>
+ The root element is "svg".
+ </a:documentation>
+ <ref name="svg"/>
+ </start>
+ <div>
+ <a:documentation>
+ Include core set of modules
+ </a:documentation>
+ <include href="svg-datatypes.rng">
+ <a:documentation>
+ Datatypes Module
+ </a:documentation>
+ </include>
+ <include href="svg-core-attrib.rng">
+ <a:documentation>
+ Core Attribute Module
+ </a:documentation>
+ </include>
+ </div>
+ <a:documentation>
+ Content Models (Default)
+ </a:documentation>
+ <define name="SVG.Profile.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Gradient.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Pattern.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Clip.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Mask.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Filter.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Cursor.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Marker.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.View.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Script.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Font.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Extensibility.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Conditional.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Image.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Style.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Shape.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Text.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Hyperlink.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Animation.class">
+ <notAllowed/>
+ </define>
+ <a:documentation>
+ Attribute Collections (Default)
+ </a:documentation>
+ <define name="SVG.Container.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Viewport.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Text.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.TextContent.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Opacity.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Marker.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Profile.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Gradient.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Clip.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Mask.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Filter.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterColor.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Cursor.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.External.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Conditional.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Color.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Paint.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Graphics.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.DocumentEvents.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.GraphicalEvents.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.onload.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationEvents.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLink.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkRequired.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkEmbed.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkReplace.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Style.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Font.attrib">
+ <empty/>
+ </define>
+ <a:documentation>
+ SVG.Description.class
+ </a:documentation>
+ <define name="SVG.Description.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Description.class">
+ <choice>
+ <ref name="desc"/>
+ <ref name="title"/>
+ <ref name="metadata"/>
+ <ref name="SVG.Description.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Use.class
+ </a:documentation>
+ <define name="SVG.Use.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Use.class">
+ <choice>
+ <ref name="use"/>
+ <ref name="SVG.Use.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Structure.class
+ </a:documentation>
+ <define name="SVG.Structure.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Structure.class">
+ <choice>
+ <ref name="svg"/>
+ <ref name="g"/>
+ <ref name="defs"/>
+ <ref name="SVG.Use.class"/>
+ <ref name="SVG.Structure.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Presentation.attrib
+ </a:documentation>
+ <define name="SVG.Presentation.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Presentation.attrib">
+ <ref name="SVG.Container.attrib"/>
+ <ref name="SVG.Viewport.attrib"/>
+ <ref name="SVG.Text.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Profile.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <optional>
+ <attribute name="flood-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flood-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lighting-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Presentation.extra.attrib"/>
+ </define>
+ <a:documentation>
+ svg: SVG Document Element
+ </a:documentation>
+ <define name="SVG.svg.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="svg">
+ <element name="svg">
+ <ref name="attlist.svg"/>
+ <ref name="SVG.svg.content"/>
+ </element>
+ </define>
+ <define name="attlist.svg" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.DocumentEvents.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zoomAndPan" a:defaultValue="magnify">
+ <choice>
+ <value>disable</value>
+ <value>magnify</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="version" a:defaultValue="1.1">
+ <value type="string">1.1</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseProfile">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="contentScriptType" a:defaultValue="text/ecmascript">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="contentStyleType" a:defaultValue="text/css">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ g: Group Element
+ </a:documentation>
+ <define name="SVG.g.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="g">
+ <element name="g">
+ <ref name="attlist.g"/>
+ <ref name="SVG.g.content"/>
+ </element>
+ </define>
+ <define name="attlist.g" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ defs: Definisions Element
+ </a:documentation>
+ <define name="SVG.defs.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="defs">
+ <element name="defs">
+ <ref name="attlist.defs"/>
+ <ref name="SVG.defs.content"/>
+ </element>
+ </define>
+ <define name="attlist.defs" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ desc: Description Element
+ </a:documentation>
+ <define name="SVG.desc.content">
+ <text/>
+ </define>
+ <define name="desc">
+ <element name="desc">
+ <ref name="attlist.desc"/>
+ <ref name="SVG.desc.content"/>
+ </element>
+ </define>
+ <define name="attlist.desc" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ </define>
+ <a:documentation>
+ title: Title Element
+ </a:documentation>
+ <define name="SVG.title.content">
+ <text/>
+ </define>
+ <define name="title">
+ <element name="title">
+ <ref name="attlist.title"/>
+ <ref name="SVG.title.content"/>
+ </element>
+ </define>
+ <define name="attlist.title" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ </define>
+ <a:documentation>
+ metadata: Metadata Element
+ </a:documentation>
+ <define name="SVG.metadata.content">
+ <text/>
+ </define>
+ <define name="metadata">
+ <element name="metadata">
+ <ref name="attlist.metadata"/>
+ <ref name="SVG.metadata.content"/>
+ </element>
+ </define>
+ <define name="attlist.metadata" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ use: Use Element
+ </a:documentation>
+ <define name="SVG.use.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="use">
+ <element name="use">
+ <ref name="attlist.use"/>
+ <ref name="SVG.use.content"/>
+ </element>
+ </define>
+ <define name="attlist.use" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.XLinkEmbed.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rnc
new file mode 100644
index 00000000000..8e8b2c728bd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rnc
@@ -0,0 +1,137 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Text Module
+## file: svg-basic-text.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Text
+##
+## text, altGlyph, altGlyphDef, glyphRef
+##
+## This module declares markup to provide support for text.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ FontFamilyValue.datatype = xsd:string
+ FontSizeValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Font.attrib\x{a}" ~ " " ]
+ SVG.Font.extra.attrib = empty
+ SVG.Font.attrib &=
+ attribute font-family { FontFamilyValue.datatype }?,
+ attribute font-size { FontSizeValue.datatype }?,
+ attribute font-style {
+ "normal" | "italic" | "oblique" | "inherit"
+ }?,
+ attribute font-weight {
+ "normal"
+ | "bold"
+ | "bolder"
+ | "lighter"
+ | "100"
+ | "200"
+ | "300"
+ | "400"
+ | "500"
+ | "600"
+ | "700"
+ | "800"
+ | "900"
+ | "inherit"
+ }?,
+ SVG.Font.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Text.class\x{a}" ~ " " ]
+ SVG.Text.extra.class = notAllowed
+ SVG.Text.class |= \text | SVG.Text.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.TextContent.class\x{a}" ~ " " ]
+ SVG.TextContent.extra.class = notAllowed
+ SVG.TextContent.class = altGlyph | SVG.TextContent.extra.class
+ a:documentation [ "\x{a}" ~ " text: Text Element\x{a}" ~ " " ]
+ SVG.text.class =
+ text
+ | SVG.Description.class
+ | SVG.Animation.class
+ | # <ref name="SVG.TextContent.extra.class"/>
+ SVG.Hyperlink.class
+ SVG.text.content = SVG.text.class*
+ \text = element text { attlist.text, SVG.text.content }
+ attlist.text &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute rotate { Numbers.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyph: Alternate Glyph Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyph.content = text
+ altGlyph = element altGlyph { attlist.altGlyph, SVG.altGlyph.content }
+ attlist.altGlyph &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute glyphRef { text }?,
+ attribute format { text }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyphDef: Alternate Glyph Definition Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyphDef.content = glyphRef+
+ altGlyphDef =
+ element altGlyphDef { attlist.altGlyphDef, SVG.altGlyphDef.content }
+ attlist.altGlyphDef &= SVG.Core.attrib
+ a:documentation [
+ "\x{a}" ~
+ " glyphRef: Glyph Reference Element\x{a}" ~
+ " "
+ ]
+ SVG.glyphRef.content = empty
+ glyphRef = element glyphRef { attlist.glyphRef, SVG.glyphRef.content }
+ attlist.glyphRef &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Font.attrib,
+ SVG.XLink.attrib,
+ attribute glyphRef { text }?,
+ attribute format { text }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rng
new file mode 100644
index 00000000000..14771acea25
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-basic-text.rng
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Text Module
+ file: svg-basic-text.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Text
+
+ text, altGlyph, altGlyphDef, glyphRef
+
+ This module declares markup to provide support for text.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="FontFamilyValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="FontSizeValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Font.attrib
+ </a:documentation>
+ <define name="SVG.Font.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Font.attrib" combine="interleave">
+ <optional>
+ <attribute name="font-family">
+ <ref name="FontFamilyValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-size">
+ <ref name="FontSizeValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-style">
+ <choice>
+ <value>normal</value>
+ <value>italic</value>
+ <value>oblique</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-weight">
+ <choice>
+ <value>normal</value>
+ <value>bold</value>
+ <value>bolder</value>
+ <value>lighter</value>
+ <value>100</value>
+ <value>200</value>
+ <value>300</value>
+ <value>400</value>
+ <value>500</value>
+ <value>600</value>
+ <value>700</value>
+ <value>800</value>
+ <value>900</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.Font.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Text.class
+ </a:documentation>
+ <define name="SVG.Text.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Text.class" combine="choice">
+ <choice>
+ <ref name="text"/>
+ <ref name="SVG.Text.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.TextContent.class
+ </a:documentation>
+ <define name="SVG.TextContent.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.TextContent.class">
+ <choice>
+ <ref name="altGlyph"/>
+ <ref name="SVG.TextContent.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ text: Text Element
+ </a:documentation>
+ <define name="SVG.text.class">
+ <choice>
+ <text/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <!-- <ref name="SVG.TextContent.extra.class"/> -->
+ <ref name="SVG.Hyperlink.class"/>
+ </choice>
+ </define>
+ <define name="SVG.text.content">
+ <zeroOrMore>
+ <ref name="SVG.text.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="text">
+ <element name="text">
+ <ref name="attlist.text"/>
+ <ref name="SVG.text.content"/>
+ </element>
+ </define>
+ <define name="attlist.text" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyph: Alternate Glyph Element
+ </a:documentation>
+ <define name="SVG.altGlyph.content">
+ <text/>
+ </define>
+ <define name="altGlyph">
+ <element name="altGlyph">
+ <ref name="attlist.altGlyph"/>
+ <ref name="SVG.altGlyph.content"/>
+ </element>
+ </define>
+ <define name="attlist.altGlyph" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="glyphRef"/>
+ </optional>
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyphDef: Alternate Glyph Definition Element
+ </a:documentation>
+ <define name="SVG.altGlyphDef.content">
+ <oneOrMore>
+ <ref name="glyphRef"/>
+ </oneOrMore>
+ </define>
+ <define name="altGlyphDef">
+ <element name="altGlyphDef">
+ <ref name="attlist.altGlyphDef"/>
+ <ref name="SVG.altGlyphDef.content"/>
+ </element>
+ </define>
+ <define name="attlist.altGlyphDef" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ glyphRef: Glyph Reference Element
+ </a:documentation>
+ <define name="SVG.glyphRef.content">
+ <empty/>
+ </define>
+ <define name="glyphRef">
+ <element name="glyphRef">
+ <ref name="attlist.glyphRef"/>
+ <ref name="SVG.glyphRef.content"/>
+ </element>
+ </define>
+ <define name="attlist.glyphRef" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <optional>
+ <attribute name="glyphRef"/>
+ </optional>
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rnc
new file mode 100644
index 00000000000..50dd76142ea
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rnc
@@ -0,0 +1,30 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+
+
+##
+## SVG 1.1 Clip Module
+## file: svg-clip.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Clip
+##
+## clipPath
+##
+## This module declares markup to provide support for clipping.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-clip.rnc" inherit = ns1
+
+ ##
+ ## extend content model of clipPath
+ ##
+ SVG.clipPath.class |= SVG.Shape.class | SVG.Text.class
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rng
new file mode 100644
index 00000000000..da0d93c81ba
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-clip.rng
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Clip Module
+ file: svg-clip.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Clip
+
+ clipPath
+
+ This module declares markup to provide support for clipping.
+ </a:documentation>
+ <include href="svg-basic-clip.rng"/>
+ <define name="SVG.clipPath.class" combine="choice">
+ <a:documentation>
+ extend content model of clipPath
+ </a:documentation>
+ <choice>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rnc
new file mode 100644
index 00000000000..922554a6a8d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rnc
@@ -0,0 +1,62 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Conditional Processing Module
+## file: svg-conditional.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-conditional.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Conditional Processing
+##
+## switch
+##
+## This module declares markup to provide support for conditional processing.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ ExtensionList.datatype = xsd:string
+ FeatureList.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Conditional.attrib\x{a}" ~ " " ]
+ SVG.Conditional.extra.attrib = empty
+ SVG.Conditional.attrib &=
+ attribute requiredFeatures { FeatureList.datatype }?,
+ attribute requiredExtensions { ExtensionList.datatype }?,
+ attribute systemLanguage { LanguageCodes.datatype }?,
+ SVG.Conditional.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Conditional.class\x{a}" ~ " " ]
+ SVG.Conditional.extra.class = notAllowed
+ SVG.Conditional.class |= switch | SVG.Conditional.extra.class
+ a:documentation [ "\x{a}" ~ " switch: Switch Element\x{a}" ~ " " ]
+ SVG.switch.content =
+ SVG.Description.class*,
+ (svg
+ | g
+ | use
+ | \text
+ | SVG.Animation.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Shape.class
+ | SVG.Hyperlink.class
+ | SVG.Extensibility.class)*
+ switch = element switch { attlist.switch, SVG.switch.content }
+ attlist.switch &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rng
new file mode 100644
index 00000000000..8bfddf61491
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-conditional.rng
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Conditional Processing Module
+ file: svg-conditional.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-conditional.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Conditional Processing
+
+ switch
+
+ This module declares markup to provide support for conditional processing.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="ExtensionList.datatype">
+ <data type="string"/>
+ </define>
+ <define name="FeatureList.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Conditional.attrib
+ </a:documentation>
+ <define name="SVG.Conditional.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Conditional.attrib" combine="interleave">
+ <optional>
+ <attribute name="requiredFeatures">
+ <ref name="FeatureList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="requiredExtensions">
+ <ref name="ExtensionList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="systemLanguage">
+ <ref name="LanguageCodes.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Conditional.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Conditional.class
+ </a:documentation>
+ <define name="SVG.Conditional.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Conditional.class" combine="choice">
+ <choice>
+ <ref name="switch"/>
+ <ref name="SVG.Conditional.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ switch: Switch Element
+ </a:documentation>
+ <define name="SVG.switch.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="svg"/>
+ <ref name="g"/>
+ <ref name="use"/>
+ <ref name="text"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.Extensibility.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="switch">
+ <element name="switch">
+ <ref name="attlist.switch"/>
+ <ref name="SVG.switch.content"/>
+ </element>
+ </define>
+ <define name="attlist.switch" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rnc
new file mode 100644
index 00000000000..fb4ac5ff47f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rnc
@@ -0,0 +1,33 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Container Attribute Module
+## file: svg-container-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-container-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Container Attribute
+##
+## enable-background
+##
+## This module defines the Container attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## 'enable-background' property/attribute value (e.g., 'new', 'accumulate')
+ ##
+ EnableBackgroundValue.datatype = xsd:string
+ SVG.enable-background.attrib =
+ attribute enable-background { EnableBackgroundValue.datatype }?
+ SVG.Container.extra.attrib = empty
+ SVG.Container.attrib &=
+ SVG.enable-background.attrib, SVG.Container.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rng
new file mode 100644
index 00000000000..01847b07a90
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-container-attrib.rng
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Container Attribute Module
+ file: svg-container-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-container-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Container Attribute
+
+ enable-background
+
+ This module defines the Container attribute set.
+ </a:documentation>
+ <define name="EnableBackgroundValue.datatype">
+ <a:documentation>
+ 'enable-background' property/attribute value (e.g., 'new', 'accumulate')
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVG.enable-background.attrib">
+ <optional>
+ <attribute name="enable-background">
+ <ref name="EnableBackgroundValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Container.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Container.attrib" combine="interleave">
+ <ref name="SVG.enable-background.attrib"/>
+ <ref name="SVG.Container.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rnc
new file mode 100644
index 00000000000..e9d73f1601f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rnc
@@ -0,0 +1,35 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Core Attribute Module
+## file: svg-core-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-core-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Core Attribute
+##
+## id, xml:base, xml:lang, xml:space
+##
+## This module defines the core set of attributes that can be present on
+## any element.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.id.attrib = attribute id { xsd:ID }?
+ SVG.base.attrib = attribute xml:base { URI.datatype }?
+ SVG.lang.attrib = attribute xml:lang { LanguageCode.datatype }?
+ SVG.space.attrib = attribute xml:space { "default" | "preserve" }?
+ SVG.Core.extra.attrib = empty
+ SVG.Core.attrib =
+ SVG.id.attrib,
+ SVG.base.attrib,
+ SVG.lang.attrib,
+ SVG.space.attrib,
+ SVG.Core.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rng
new file mode 100644
index 00000000000..cf3e64fafd1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-core-attrib.rng
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Core Attribute Module
+ file: svg-core-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-core-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Core Attribute
+
+ id, xml:base, xml:lang, xml:space
+
+ This module defines the core set of attributes that can be present on
+ any element.
+ </a:documentation>
+ <define name="SVG.id.attrib">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.base.attrib">
+ <optional>
+ <attribute name="xml:base">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.lang.attrib">
+ <optional>
+ <attribute name="xml:lang">
+ <ref name="LanguageCode.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.space.attrib">
+ <optional>
+ <attribute name="xml:space">
+ <choice>
+ <value>default</value>
+ <value>preserve</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Core.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Core.attrib">
+ <ref name="SVG.id.attrib"/>
+ <ref name="SVG.base.attrib"/>
+ <ref name="SVG.lang.attrib"/>
+ <ref name="SVG.space.attrib"/>
+ <ref name="SVG.Core.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rnc
new file mode 100644
index 00000000000..50b42d15627
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rnc
@@ -0,0 +1,47 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Cursor Module
+## file: svg-cursor.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-cursor.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Cursor
+##
+## cursor
+##
+## This module declares markup to provide support for cursor.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ CursorValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Cursor.attrib\x{a}" ~ " " ]
+ SVG.Cursor.extra.attrib = empty
+ SVG.Cursor.attrib &=
+ attribute cursor { CursorValue.datatype }?,
+ SVG.Cursor.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Cursor.class\x{a}" ~ " " ]
+ SVG.Cursor.extra.class = notAllowed
+ SVG.Cursor.class |= cursor | SVG.Cursor.extra.class
+ a:documentation [ "\x{a}" ~ " cursor: Cursor Element\x{a}" ~ " " ]
+ SVG.cursor.content = SVG.Description.class*
+ cursor = element cursor { attlist.cursor, SVG.cursor.content }
+ attlist.cursor &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.XLinkRequired.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rng
new file mode 100644
index 00000000000..e3207ed6c92
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-cursor.rng
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Cursor Module
+ file: svg-cursor.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-cursor.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Cursor
+
+ cursor
+
+ This module declares markup to provide support for cursor.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="CursorValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Cursor.attrib
+ </a:documentation>
+ <define name="SVG.Cursor.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Cursor.attrib" combine="interleave">
+ <optional>
+ <attribute name="cursor">
+ <ref name="CursorValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Cursor.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Cursor.class
+ </a:documentation>
+ <define name="SVG.Cursor.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Cursor.class" combine="choice">
+ <choice>
+ <ref name="cursor"/>
+ <ref name="SVG.Cursor.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ cursor: Cursor Element
+ </a:documentation>
+ <define name="SVG.cursor.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="cursor">
+ <element name="cursor">
+ <ref name="attlist.cursor"/>
+ <ref name="SVG.cursor.content"/>
+ </element>
+ </define>
+ <define name="attlist.cursor" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rnc
new file mode 100644
index 00000000000..7a3ea4b659f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rnc
@@ -0,0 +1,135 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Datatypes Module
+## file: svg-datatypes.mod
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-datatypes.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Datatypes
+##
+## This module declares common data types for properties and attributes.
+##
+
+##
+## feature specification
+##
+[ xml:lang = "en" ]
+grammar {
+ Boolean.datatype = "false" | "true"
+
+ ##
+ ## 'clip-rule' or 'fill-rule' property/attribute value
+ ##
+ ClipFillRule.datatype = "nonzero" | "evenodd" | "inherit"
+
+ ##
+ ## media type, as per [RFC2045]
+ ##
+ ContentType.datatype = xsd:string
+
+ ##
+ ## a <coordinate>
+ ##
+ Coordinate.datatype = xsd:string
+
+ ##
+ ## a list of <coordinate>s
+ ##
+ Coordinates.datatype = xsd:string
+
+ ##
+ ## a <color> value
+ ##
+ Color.datatype = xsd:string
+
+ ##
+ ## a <integer>
+ ##
+ Integer.datatype = xsd:string
+
+ ##
+ ## a language code, as per [RFC3066]
+ ##
+ LanguageCode.datatype = xsd:language
+
+ ##
+ ## comma-separated list of language codes, as per [RFC3066]
+ ##
+ LanguageCodes.datatype = xsd:string
+
+ ##
+ ## a <ength>
+ ##
+ Length.datatype = xsd:string
+
+ ##
+ ## a list of <length>s
+ ##
+ Lengths.datatype = xsd:string
+
+ ##
+ ## a <number>
+ ##
+ Number.datatype = xsd:string
+
+ ##
+ ## a list of <number>s
+ ##
+ Numbers.datatype = xsd:string
+
+ ##
+ ## opacity value (e.g., <number>)
+ ##
+ OpacityValue.datatype = xsd:string
+
+ ##
+ ## a path data specification
+ ##
+ PathData.datatype = xsd:string
+
+ ##
+ ## 'preserveAspectRatio' attribute specification
+ ##
+ PreserveAspectRatioSpec.datatype =
+ xsd:string {
+ pattern =
+ "\s*(none|xMinYMin|xMidYMin|xMaxYMin|xMinYMid|xMidYMid|xMaxYMid|xMinYMax|xMidYMax|xMaxYMax)\s+(meet|slice)?\s*"
+ }
+
+ ##
+ ## script expression
+ ##
+ Script.datatype = xsd:string
+
+ ##
+ ## An SVG color value (RGB plus optional ICC)
+ ##
+ SVGColor.datatype = xsd:string
+
+ ##
+ ## arbitrary text string
+ ##
+ Text.datatype = xsd:string
+
+ ##
+ ## list of transforms
+ ##
+ TransformList.datatype = xsd:string
+
+ ##
+ ## a Uniform Resource Identifier, see [URI]
+ ##
+ URI.datatype = xsd:anyURI
+
+ ##
+ ## 'viewBox' attribute specification
+ ##
+ ViewBoxSpec.datatype = xsd:string
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rng
new file mode 100644
index 00000000000..dba1588d8d4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-datatypes.rng
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Datatypes Module
+ file: svg-datatypes.mod
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-datatypes.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+
+ This module declares common data types for properties and attributes.
+ </a:documentation>
+ <a:documentation>
+ feature specification
+ </a:documentation>
+ <define name="Boolean.datatype">
+ <choice>
+ <value>false</value>
+ <value>true</value>
+ </choice>
+ </define>
+ <define name="ClipFillRule.datatype">
+ <a:documentation>
+ 'clip-rule' or 'fill-rule' property/attribute value
+ </a:documentation>
+ <choice>
+ <value>nonzero</value>
+ <value>evenodd</value>
+ <value>inherit</value>
+ </choice>
+ </define>
+ <define name="ContentType.datatype">
+ <a:documentation>
+ media type, as per [RFC2045]
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Coordinate.datatype">
+ <a:documentation>
+ a &lt;coordinate&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Coordinates.datatype">
+ <a:documentation>
+ a list of &lt;coordinate&gt;s
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Color.datatype">
+ <a:documentation>
+ a &lt;color&gt; value
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Integer.datatype">
+ <a:documentation>
+ a &lt;integer&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="LanguageCode.datatype">
+ <a:documentation>
+ a language code, as per [RFC3066]
+ </a:documentation>
+ <data type="language"/>
+ </define>
+ <define name="LanguageCodes.datatype">
+ <a:documentation>
+ comma-separated list of language codes, as per [RFC3066]
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Length.datatype">
+ <a:documentation>
+ a &lt;ength&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Lengths.datatype">
+ <a:documentation>
+ a list of &lt;length&gt;s
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Number.datatype">
+ <a:documentation>
+ a &lt;number&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Numbers.datatype">
+ <a:documentation>
+ a list of &lt;number&gt;s
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="OpacityValue.datatype">
+ <a:documentation>
+ opacity value (e.g., &lt;number&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="PathData.datatype">
+ <a:documentation>
+ a path data specification
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="PreserveAspectRatioSpec.datatype">
+ <a:documentation>
+ 'preserveAspectRatio' attribute specification
+ </a:documentation>
+ <data type="string">
+ <param name="pattern">\s*(none|xMinYMin|xMidYMin|xMaxYMin|xMinYMid|xMidYMid|xMaxYMid|xMinYMax|xMidYMax|xMaxYMax)\s+(meet|slice)?\s*</param>
+ </data>
+ </define>
+ <define name="Script.datatype">
+ <a:documentation>
+ script expression
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVGColor.datatype">
+ <a:documentation>
+ An SVG color value (RGB plus optional ICC)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Text.datatype">
+ <a:documentation>
+ arbitrary text string
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="TransformList.datatype">
+ <a:documentation>
+ list of transforms
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="URI.datatype">
+ <a:documentation>
+ a Uniform Resource Identifier, see [URI]
+ </a:documentation>
+ <data type="anyURI"/>
+ </define>
+ <define name="ViewBoxSpec.datatype">
+ <a:documentation>
+ 'viewBox' attribute specification
+ </a:documentation>
+ <data type="string"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rnc
new file mode 100644
index 00000000000..a03b011c8d3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rnc
@@ -0,0 +1,38 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Document Events Attribute Module
+## file: svg-docevents-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-docevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Document Events Attribute
+##
+## onunload, onabort, onerror, onresize, onscroll, onzoom
+##
+## This module defines the DocumentEvents attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.onunload.attrib = attribute onunload { Script.datatype }?
+ SVG.onabort.attrib = attribute onabort { Script.datatype }?
+ SVG.onerror.attrib = attribute onerror { Script.datatype }?
+ SVG.onresize.attrib = attribute onresize { Script.datatype }?
+ SVG.onscroll.attrib = attribute onscroll { Script.datatype }?
+ SVG.onzoom.attrib = attribute onzoom { Script.datatype }?
+ SVG.DocumentEvents.extra.attrib = empty
+ SVG.DocumentEvents.attrib &=
+ SVG.onunload.attrib,
+ SVG.onabort.attrib,
+ SVG.onerror.attrib,
+ SVG.onresize.attrib,
+ SVG.onscroll.attrib,
+ SVG.onzoom.attrib,
+ SVG.DocumentEvents.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rng
new file mode 100644
index 00000000000..3d2eecea923
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-docevents-attrib.rng
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Document Events Attribute Module
+ file: svg-docevents-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-docevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Document Events Attribute
+
+ onunload, onabort, onerror, onresize, onscroll, onzoom
+
+ This module defines the DocumentEvents attribute set.
+ </a:documentation>
+ <define name="SVG.onunload.attrib">
+ <optional>
+ <attribute name="onunload">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onabort.attrib">
+ <optional>
+ <attribute name="onabort">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onerror.attrib">
+ <optional>
+ <attribute name="onerror">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onresize.attrib">
+ <optional>
+ <attribute name="onresize">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onscroll.attrib">
+ <optional>
+ <attribute name="onscroll">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onzoom.attrib">
+ <optional>
+ <attribute name="onzoom">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.DocumentEvents.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.DocumentEvents.attrib" combine="interleave">
+ <ref name="SVG.onunload.attrib"/>
+ <ref name="SVG.onabort.attrib"/>
+ <ref name="SVG.onerror.attrib"/>
+ <ref name="SVG.onresize.attrib"/>
+ <ref name="SVG.onscroll.attrib"/>
+ <ref name="SVG.onzoom.attrib"/>
+ <ref name="SVG.DocumentEvents.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rnc
new file mode 100644
index 00000000000..23ef64bf988
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rnc
@@ -0,0 +1,62 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+default namespace ns1 = "http://www.w3.org/2000/svg"
+
+a:documentation [
+ "\x{a}" ~
+ " SVG 1.1 Extensibility Module\x{a}" ~
+ " file: svg-extensibility.rng\x{a}" ~
+ "\x{a}" ~
+ " This is SVG, a language for describing two-dimensional graphics in XML.\x{a}" ~
+ " Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.\x{a}" ~
+ "\x{a}" ~
+ " $Id: svg-extensibility.rng,v 1.1 2003/07/15 07:11:10 dean Exp $\x{a}" ~
+ "\x{a}"
+]
+a:documentation [
+ "\x{a}" ~
+ " Extensibility\x{a}" ~
+ "\x{a}" ~
+ " foreignObject\x{a}" ~
+ "\x{a}" ~
+ " This module declares markup to provide support for extensibility.\x{a}" ~
+ " "
+]
+a:documentation [ "\x{a}" ~ " SVG.Extensibility.class\x{a}" ~ " " ]
+SVG.Extensibility.extra.class = notAllowed
+SVG.Extensibility.class |= foreignObject | SVG.Extensibility.extra.class
+a:documentation [
+ "\x{a}" ~
+ " foreignObject: Foreign Object Element\x{a}" ~
+ " "
+]
+SVG.foreignObject.content =
+ (text
+ | svg
+ # ref name="foreignElement"/
+ )*
+foreignObject =
+ element foreignObject {
+ attlist.foreignObject, SVG.foreignObject.content
+ }
+attlist.foreignObject &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype },
+ attribute height { Length.datatype },
+ attribute transform { TransformList.datatype }?
+
+##
+## any element in foreign namespace
+##
+foreignElement =
+ element * - ns1:* {
+ (attribute * - ns1:* { text }
+ | text
+ | foreignElement)*
+ }
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rng
new file mode 100644
index 00000000000..d63acf3deae
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extensibility.rng
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar ns="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Extensibility Module
+ file: svg-extensibility.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-extensibility.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+</a:documentation>
+ <a:documentation>
+ Extensibility
+
+ foreignObject
+
+ This module declares markup to provide support for extensibility.
+ </a:documentation>
+ <a:documentation>
+ SVG.Extensibility.class
+ </a:documentation>
+ <define name="SVG.Extensibility.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Extensibility.class" combine="choice">
+ <choice>
+ <ref name="foreignObject"/>
+ <ref name="SVG.Extensibility.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ foreignObject: Foreign Object Element
+ </a:documentation>
+ <define name="SVG.foreignObject.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="svg"/>
+ </choice>
+ <!-- ref name="foreignElement"/ -->
+ </zeroOrMore>
+ </define>
+ <define name="foreignObject">
+ <element name="foreignObject">
+ <ref name="attlist.foreignObject"/>
+ <ref name="SVG.foreignObject.content"/>
+ </element>
+ </define>
+ <define name="attlist.foreignObject" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="foreignElement">
+ <a:documentation>
+ any element in foreign namespace
+ </a:documentation>
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ </attribute>
+ <text/>
+ <ref name="foreignElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rnc
new file mode 100644
index 00000000000..6c1274e082a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rnc
@@ -0,0 +1,28 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 External Resources Attribute Module
+## file: svg-extresources-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-extresources-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## External Resources Attribute
+##
+## externalResourcesRequired
+##
+## This module defines the External attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.externalResourcesRequired.attrib =
+ attribute externalResourcesRequired { Boolean.datatype }?
+ SVG.External.extra.attrib = empty
+ SVG.External.attrib &=
+ SVG.externalResourcesRequired.attrib, SVG.External.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rng
new file mode 100644
index 00000000000..1fa08bfe7ba
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-extresources-attrib.rng
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 External Resources Attribute Module
+ file: svg-extresources-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-extresources-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ External Resources Attribute
+
+ externalResourcesRequired
+
+ This module defines the External attribute set.
+ </a:documentation>
+ <define name="SVG.externalResourcesRequired.attrib">
+ <optional>
+ <attribute name="externalResourcesRequired">
+ <ref name="Boolean.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.External.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.External.attrib" combine="interleave">
+ <ref name="SVG.externalResourcesRequired.attrib"/>
+ <ref name="SVG.External.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rnc
new file mode 100644
index 00000000000..9d4cc259ef4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rnc
@@ -0,0 +1,214 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Filter Module
+## file: svg-filter.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Filter
+##
+## filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+## feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feFlood,
+## feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset,
+## feSpecularLighting, feTile, feTurbulence, feDistantLight, fePointLight,
+## feSpotLight, feFuncR, feFuncG, feFuncB, feFuncA
+##
+## This module declares markup to provide support for filter effect.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-filter.rnc"
+
+ ##
+ ## extend SVG.FilterPrimitive.class
+ ##
+ SVG.FilterPrimitive.class |=
+ feConvolveMatrix
+ | feDiffuseLighting
+ | feDisplacementMap
+ | feMorphology
+ | feSpecularLighting
+ | feTurbulence
+ a:documentation [
+ "\x{a}" ~
+ " feConvolveMatrix: Filter Effect Convolve Matrix Element\x{a}" ~
+ " "
+ ]
+ SVG.feConvolveMatrix.content = (animate | set)*
+ feConvolveMatrix =
+ element feConvolveMatrix {
+ attlist.feConvolveMatrix, SVG.feConvolveMatrix.content
+ }
+ attlist.feConvolveMatrix &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute order { NumberOptionalNumber.datatype },
+ attribute kernelMatrix { text },
+ attribute divisor { Number.datatype }?,
+ attribute bias { Number.datatype }?,
+ attribute targetX { Integer.datatype }?,
+ attribute targetY { Integer.datatype }?,
+ [ a:defaultValue = "duplicate" ]
+ attribute edgeMode { "duplicate" | "wrap" | "none" }?,
+ attribute kernelUnitLength { NumberOptionalNumber.datatype }?,
+ attribute preserveAlpha { Boolean.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feDiffuseLighting: Filter Effect Diffuse Lighting Element\x{a}" ~
+ " "
+ ]
+ SVG.feDiffuseLighting.content =
+ (feDistantLight | fePointLight | feSpotLight),
+ (animate | set | animateColor)*
+ feDiffuseLighting =
+ element feDiffuseLighting {
+ attlist.feDiffuseLighting, SVG.feDiffuseLighting.content
+ }
+ attlist.feDiffuseLighting &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute lighting-color { SVGColor.datatype }?,
+ attribute surfaceScale { Number.datatype }?,
+ attribute diffuseConstant { Number.datatype }?,
+ attribute kernelUnitLength { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feDisplacementMap: Filter Effect Displacement Map Element\x{a}" ~
+ " "
+ ]
+ SVG.feDisplacementMap.content = (animate | set)*
+ feDisplacementMap =
+ element feDisplacementMap {
+ attlist.feDisplacementMap, SVG.feDisplacementMap.content
+ }
+ attlist.feDisplacementMap &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute in2 { text },
+ attribute scale { Number.datatype }?,
+ [ a:defaultValue = "A" ]
+ attribute xChannelSelector { "R" | "G" | "B" | "A" }?,
+ [ a:defaultValue = "A" ]
+ attribute yChannelSelector { "R" | "G" | "B" | "A" }?
+ a:documentation [
+ "\x{a}" ~
+ " feMorphology: Filter Effect Morphology Element\x{a}" ~
+ " "
+ ]
+ SVG.feMorphology.content = (animate | set)*
+ feMorphology =
+ element feMorphology {
+ attlist.feMorphology, SVG.feMorphology.content
+ }
+ attlist.feMorphology &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ [ a:defaultValue = "erode" ]
+ attribute operator { "erode" | "dilate" }?,
+ attribute radius { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feSpecularLighting: Filter Effect Specular Lighting Element\x{a}" ~
+ " "
+ ]
+ SVG.feSpecularLighting.content =
+ (feDistantLight | fePointLight | feSpotLight),
+ (animate | set | animateColor)*
+ feSpecularLighting =
+ element feSpecularLighting {
+ attlist.feSpecularLighting, SVG.feSpecularLighting.content
+ }
+ attlist.feSpecularLighting &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute lighting-color { SVGColor.datatype }?,
+ attribute surfaceScale { Number.datatype }?,
+ attribute specularConstant { Number.datatype }?,
+ attribute specularExponent { Number.datatype }?,
+ attribute kernelUnitLength { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feTurbulence: Filter Effect Turbulence Element\x{a}" ~
+ " "
+ ]
+ SVG.feTurbulence.content = (animate | set)*
+ feTurbulence =
+ element feTurbulence {
+ attlist.feTurbulence, SVG.feTurbulence.content
+ }
+ attlist.feTurbulence &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitive.attrib,
+ attribute baseFrequency { NumberOptionalNumber.datatype }?,
+ attribute numOctaves { Integer.datatype }?,
+ attribute seed { Number.datatype }?,
+ [ a:defaultValue = "noStitch" ]
+ attribute stitchTiles { "stitch" | "noStitch" }?,
+ [ a:defaultValue = "turbulence" ]
+ attribute type { "fractalNoise" | "turbulence" }?
+ a:documentation [
+ "\x{a}" ~
+ " feDistantLight: Filter Effect Distant Light Element\x{a}" ~
+ " "
+ ]
+ SVG.feDistantLight.content = (animate | set)*
+ feDistantLight =
+ element feDistantLight {
+ attlist.feDistantLight, SVG.feDistantLight.content
+ }
+ attlist.feDistantLight &=
+ SVG.Core.attrib,
+ attribute azimuth { Number.datatype }?,
+ attribute elevation { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " fePointLight: Filter Effect Point Light Element\x{a}" ~
+ " "
+ ]
+ SVG.fePointLight.content = (animate | set)*
+ fePointLight =
+ element fePointLight {
+ attlist.fePointLight, SVG.fePointLight.content
+ }
+ attlist.fePointLight &=
+ SVG.Core.attrib,
+ attribute x { Number.datatype }?,
+ attribute y { Number.datatype }?,
+ attribute z { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feSpotLight: Filter Effect Spot Light Element\x{a}" ~
+ " "
+ ]
+ SVG.feSpotLight.content = (animate | set)*
+ feSpotLight =
+ element feSpotLight { attlist.feSpotLight, SVG.feSpotLight.content }
+ attlist.feSpotLight &=
+ SVG.Core.attrib,
+ attribute x { Number.datatype }?,
+ attribute y { Number.datatype }?,
+ attribute z { Number.datatype }?,
+ attribute pointsAtX { Number.datatype }?,
+ attribute pointsAtY { Number.datatype }?,
+ attribute pointsAtZ { Number.datatype }?,
+ attribute specularExponent { Number.datatype }?,
+ attribute limitingConeAngle { Number.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rng
new file mode 100644
index 00000000000..72bc2c37c50
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-filter.rng
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Filter Module
+ file: svg-filter.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Filter
+
+ filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+ feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feFlood,
+ feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset,
+ feSpecularLighting, feTile, feTurbulence, feDistantLight, fePointLight,
+ feSpotLight, feFuncR, feFuncG, feFuncB, feFuncA
+
+ This module declares markup to provide support for filter effect.
+ </a:documentation>
+ <include href="svg-basic-filter.rng"/>
+ <define name="SVG.FilterPrimitive.class" combine="choice">
+ <a:documentation>
+ extend SVG.FilterPrimitive.class
+ </a:documentation>
+ <choice>
+ <ref name="feConvolveMatrix"/>
+ <ref name="feDiffuseLighting"/>
+ <ref name="feDisplacementMap"/>
+ <ref name="feMorphology"/>
+ <ref name="feSpecularLighting"/>
+ <ref name="feTurbulence"/>
+ </choice>
+ </define>
+ <a:documentation>
+ feConvolveMatrix: Filter Effect Convolve Matrix Element
+ </a:documentation>
+ <define name="SVG.feConvolveMatrix.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feConvolveMatrix">
+ <element name="feConvolveMatrix">
+ <ref name="attlist.feConvolveMatrix"/>
+ <ref name="SVG.feConvolveMatrix.content"/>
+ </element>
+ </define>
+ <define name="attlist.feConvolveMatrix" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="order">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ <attribute name="kernelMatrix"/>
+ <optional>
+ <attribute name="divisor">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bias">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="targetX">
+ <ref name="Integer.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="targetY">
+ <ref name="Integer.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="edgeMode" a:defaultValue="duplicate">
+ <choice>
+ <value>duplicate</value>
+ <value>wrap</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kernelUnitLength">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAlpha">
+ <ref name="Boolean.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feDiffuseLighting: Filter Effect Diffuse Lighting Element
+ </a:documentation>
+ <define name="SVG.feDiffuseLighting.content">
+ <choice>
+ <ref name="feDistantLight"/>
+ <ref name="fePointLight"/>
+ <ref name="feSpotLight"/>
+ </choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feDiffuseLighting">
+ <element name="feDiffuseLighting">
+ <ref name="attlist.feDiffuseLighting"/>
+ <ref name="SVG.feDiffuseLighting.content"/>
+ </element>
+ </define>
+ <define name="attlist.feDiffuseLighting" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="lighting-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="surfaceScale">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="diffuseConstant">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kernelUnitLength">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feDisplacementMap: Filter Effect Displacement Map Element
+ </a:documentation>
+ <define name="SVG.feDisplacementMap.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feDisplacementMap">
+ <element name="feDisplacementMap">
+ <ref name="attlist.feDisplacementMap"/>
+ <ref name="SVG.feDisplacementMap.content"/>
+ </element>
+ </define>
+ <define name="attlist.feDisplacementMap" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="in2"/>
+ <optional>
+ <attribute name="scale">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xChannelSelector" a:defaultValue="A">
+ <choice>
+ <value>R</value>
+ <value>G</value>
+ <value>B</value>
+ <value>A</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yChannelSelector" a:defaultValue="A">
+ <choice>
+ <value>R</value>
+ <value>G</value>
+ <value>B</value>
+ <value>A</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feMorphology: Filter Effect Morphology Element
+ </a:documentation>
+ <define name="SVG.feMorphology.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feMorphology">
+ <element name="feMorphology">
+ <ref name="attlist.feMorphology"/>
+ <ref name="SVG.feMorphology.content"/>
+ </element>
+ </define>
+ <define name="attlist.feMorphology" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="operator" a:defaultValue="erode">
+ <choice>
+ <value>erode</value>
+ <value>dilate</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="radius">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feSpecularLighting: Filter Effect Specular Lighting Element
+ </a:documentation>
+ <define name="SVG.feSpecularLighting.content">
+ <choice>
+ <ref name="feDistantLight"/>
+ <ref name="fePointLight"/>
+ <ref name="feSpotLight"/>
+ </choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feSpecularLighting">
+ <element name="feSpecularLighting">
+ <ref name="attlist.feSpecularLighting"/>
+ <ref name="SVG.feSpecularLighting.content"/>
+ </element>
+ </define>
+ <define name="attlist.feSpecularLighting" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="lighting-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="surfaceScale">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularConstant">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularExponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kernelUnitLength">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feTurbulence: Filter Effect Turbulence Element
+ </a:documentation>
+ <define name="SVG.feTurbulence.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feTurbulence">
+ <element name="feTurbulence">
+ <ref name="attlist.feTurbulence"/>
+ <ref name="SVG.feTurbulence.content"/>
+ </element>
+ </define>
+ <define name="attlist.feTurbulence" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ <optional>
+ <attribute name="baseFrequency">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="numOctaves">
+ <ref name="Integer.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="seed">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stitchTiles" a:defaultValue="noStitch">
+ <choice>
+ <value>stitch</value>
+ <value>noStitch</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type" a:defaultValue="turbulence">
+ <choice>
+ <value>fractalNoise</value>
+ <value>turbulence</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feDistantLight: Filter Effect Distant Light Element
+ </a:documentation>
+ <define name="SVG.feDistantLight.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feDistantLight">
+ <element name="feDistantLight">
+ <ref name="attlist.feDistantLight"/>
+ <ref name="SVG.feDistantLight.content"/>
+ </element>
+ </define>
+ <define name="attlist.feDistantLight" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="azimuth">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="elevation">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ fePointLight: Filter Effect Point Light Element
+ </a:documentation>
+ <define name="SVG.fePointLight.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="fePointLight">
+ <element name="fePointLight">
+ <ref name="attlist.fePointLight"/>
+ <ref name="SVG.fePointLight.content"/>
+ </element>
+ </define>
+ <define name="attlist.fePointLight" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="z">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feSpotLight: Filter Effect Spot Light Element
+ </a:documentation>
+ <define name="SVG.feSpotLight.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feSpotLight">
+ <element name="feSpotLight">
+ <ref name="attlist.feSpotLight"/>
+ <ref name="SVG.feSpotLight.content"/>
+ </element>
+ </define>
+ <define name="attlist.feSpotLight" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="z">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pointsAtX">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pointsAtY">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pointsAtZ">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularExponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="limitingConeAngle">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rnc
new file mode 100644
index 00000000000..f14e10c2342
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rnc
@@ -0,0 +1,108 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Font Module
+## file: svg-font.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Font
+##
+## font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+## font-face-uri, font-face-format, font-face-name, definition-src
+##
+## This module declares markup to provide support for template.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-font.rnc"
+ a:documentation [
+ "\x{a}" ~
+ " font-face: Font Face Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face.extra.class &= definition-src?
+ a:documentation [ "\x{a}" ~ " glyph: Glyph Element\x{a}" ~ " " ]
+ SVG.glyph.class |=
+ SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class
+ a:documentation [
+ "\x{a}" ~
+ " missing-glyph: Missing Glyph Element\x{a}" ~
+ " "
+ ]
+ SVG.missing-glyph.class |=
+ SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class
+ a:documentation [
+ "\x{a}" ~
+ " font-face-uri: Font Face URI Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-uri.content |= font-face-format*
+ a:documentation [
+ "\x{a}" ~
+ " font-face-format: Font Face Format Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-format.content = empty
+ font-face-format =
+ element font-face-format {
+ attlist.font-face-format, SVG.font-face-format.content
+ }
+ attlist.font-face-format &=
+ SVG.Core.attrib,
+ attribute string { text }?
+ a:documentation [
+ "\x{a}" ~
+ " definition-src: Definition Source Element\x{a}" ~
+ " "
+ ]
+ SVG.definition-src.content = empty
+ definition-src =
+ element definition-src {
+ attlist.definition-src, SVG.definition-src.content
+ }
+ attlist.definition-src &= SVG.Core.attrib, SVG.XLinkRequired.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rng
new file mode 100644
index 00000000000..f5da47c17ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-font.rng
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Font Module
+ file: svg-font.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Font
+
+ font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+ font-face-uri, font-face-format, font-face-name, definition-src
+
+ This module declares markup to provide support for template.
+ </a:documentation>
+ <include href="svg-basic-font.rng"/>
+ <a:documentation>
+ font-face: Font Face Element
+ </a:documentation>
+ <define name="SVG.font-face.extra.class" combine="interleave">
+ <optional>
+ <ref name="definition-src"/>
+ </optional>
+ </define>
+ <a:documentation>
+ glyph: Glyph Element
+ </a:documentation>
+ <define name="SVG.glyph.class" combine="choice">
+ <choice>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ missing-glyph: Missing Glyph Element
+ </a:documentation>
+ <define name="SVG.missing-glyph.class" combine="choice">
+ <choice>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ font-face-uri: Font Face URI Element
+ </a:documentation>
+ <define name="SVG.font-face-uri.content" combine="choice">
+ <zeroOrMore>
+ <ref name="font-face-format"/>
+ </zeroOrMore>
+ </define>
+ <a:documentation>
+ font-face-format: Font Face Format Element
+ </a:documentation>
+ <define name="SVG.font-face-format.content">
+ <empty/>
+ </define>
+ <define name="font-face-format">
+ <element name="font-face-format">
+ <ref name="attlist.font-face-format"/>
+ <ref name="SVG.font-face-format.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-format" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="string"/>
+ </optional>
+ </define>
+ <a:documentation>
+ definition-src: Definition Source Element
+ </a:documentation>
+ <define name="SVG.definition-src.content">
+ <empty/>
+ </define>
+ <define name="definition-src">
+ <element name="definition-src">
+ <ref name="attlist.definition-src"/>
+ <ref name="SVG.definition-src.content"/>
+ </element>
+ </define>
+ <define name="attlist.definition-src" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rnc
new file mode 100644
index 00000000000..e8c6e60525f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rnc
@@ -0,0 +1,99 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Gradient Module
+## file: svg-gradient.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-gradient.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Gradient
+##
+## linearGradient, radialGradient, stop
+##
+## This module declares markup to provide support for gradient fill.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ NumberOrPercentage.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Gradient.attrib\x{a}" ~ " " ]
+ SVG.Gradient.extra.attrib = empty
+ SVG.Gradient.attrib &=
+ attribute stop-color { SVGColor.datatype }?,
+ attribute stop-opacity { OpacityValue.datatype }?,
+ SVG.Gradient.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Gradient.class\x{a}" ~ " " ]
+ SVG.Gradient.extra.class = notAllowed
+ SVG.Gradient.class |=
+ linearGradient | radialGradient | SVG.Gradient.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " linearGradient: Linear Gradient Element\x{a}" ~
+ " "
+ ]
+ SVG.linearGradient.content =
+ SVG.Description.class*, (stop | animate | set | animateTransform)*
+ linearGradient =
+ element linearGradient {
+ attlist.linearGradient, SVG.linearGradient.content
+ }
+ attlist.linearGradient &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.Gradient.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute x1 { Coordinate.datatype }?,
+ attribute y1 { Coordinate.datatype }?,
+ attribute x2 { Coordinate.datatype }?,
+ attribute y2 { Coordinate.datatype }?,
+ attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute gradientTransform { TransformList.datatype }?,
+ attribute spreadMethod { "pad" | "reflect" | "repeat" }?
+ a:documentation [
+ "\x{a}" ~
+ " radialGradient: Radial Gradient Element\x{a}" ~
+ " "
+ ]
+ SVG.radialGradient.content =
+ SVG.Description.class*, (stop | animate | set | animateTransform)*
+ radialGradient =
+ element radialGradient {
+ attlist.radialGradient, SVG.radialGradient.content
+ }
+ attlist.radialGradient &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.Gradient.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute cx { Coordinate.datatype }?,
+ attribute cy { Coordinate.datatype }?,
+ attribute r { Length.datatype }?,
+ attribute fx { Coordinate.datatype }?,
+ attribute fy { Coordinate.datatype }?,
+ attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute gradientTransform { TransformList.datatype }?,
+ attribute spreadMethod { "pad" | "reflect" | "repeat" }?
+ a:documentation [ "\x{a}" ~ " stop: Stop Element\x{a}" ~ " " ]
+ SVG.stop.content = (animate | set | animateColor)*
+ stop = element stop { attlist.stop, SVG.stop.content }
+ attlist.stop &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.Gradient.attrib,
+ attribute offset { NumberOrPercentage.datatype }
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rng
new file mode 100644
index 00000000000..a13c68f8341
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-gradient.rng
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Gradient Module
+ file: svg-gradient.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-gradient.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Gradient
+
+ linearGradient, radialGradient, stop
+
+ This module declares markup to provide support for gradient fill.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="NumberOrPercentage.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Gradient.attrib
+ </a:documentation>
+ <define name="SVG.Gradient.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Gradient.attrib" combine="interleave">
+ <optional>
+ <attribute name="stop-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stop-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Gradient.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Gradient.class
+ </a:documentation>
+ <define name="SVG.Gradient.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Gradient.class" combine="choice">
+ <choice>
+ <ref name="linearGradient"/>
+ <ref name="radialGradient"/>
+ <ref name="SVG.Gradient.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ linearGradient: Linear Gradient Element
+ </a:documentation>
+ <define name="SVG.linearGradient.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="stop"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateTransform"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="linearGradient">
+ <element name="linearGradient">
+ <ref name="attlist.linearGradient"/>
+ <ref name="SVG.linearGradient.content"/>
+ </element>
+ </define>
+ <define name="attlist.linearGradient" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientTransform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spreadMethod">
+ <choice>
+ <value>pad</value>
+ <value>reflect</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ radialGradient: Radial Gradient Element
+ </a:documentation>
+ <define name="SVG.radialGradient.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="stop"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateTransform"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="radialGradient">
+ <element name="radialGradient">
+ <ref name="attlist.radialGradient"/>
+ <ref name="SVG.radialGradient.content"/>
+ </element>
+ </define>
+ <define name="attlist.radialGradient" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="cx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientTransform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spreadMethod">
+ <choice>
+ <value>pad</value>
+ <value>reflect</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ stop: Stop Element
+ </a:documentation>
+ <define name="SVG.stop.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="stop">
+ <element name="stop">
+ <ref name="attlist.stop"/>
+ <ref name="SVG.stop.content"/>
+ </element>
+ </define>
+ <define name="attlist.stop" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <attribute name="offset">
+ <ref name="NumberOrPercentage.datatype"/>
+ </attribute>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rnc
new file mode 100644
index 00000000000..e5828f3dab8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rnc
@@ -0,0 +1,47 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Graphical Element Events Attribute Module
+## file: svg-graphevents-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-graphevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Graphical Element Events Attribute
+##
+## onfocusin, onfocusout, onactivate, onclick, onmousedown, onmouseup,
+## onmouseover, onmousemove, onmouseout, onload
+##
+## This module defines the GraphicalEvents attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.onfocusin.attrib = attribute onfocusin { Script.datatype }?
+ SVG.onfocusout.attrib = attribute onfocusout { Script.datatype }?
+ SVG.onactivate.attrib = attribute onactivate { Script.datatype }?
+ SVG.onclick.attrib = attribute onclick { Script.datatype }?
+ SVG.onmousedown.attrib = attribute onmousedown { Script.datatype }?
+ SVG.onmouseup.attrib = attribute onmouseup { Script.datatype }?
+ SVG.onmouseover.attrib = attribute onmouseover { Script.datatype }?
+ SVG.onmousemove.attrib = attribute onmousemove { Script.datatype }?
+ SVG.onmouseout.attrib = attribute onmouseout { Script.datatype }?
+ SVG.onload.attrib &= attribute onload { Script.datatype }?
+ SVG.GraphicalEvents.extra.attrib = empty
+ SVG.GraphicalEvents.attrib &=
+ SVG.onfocusin.attrib,
+ SVG.onfocusout.attrib,
+ SVG.onactivate.attrib,
+ SVG.onclick.attrib,
+ SVG.onmousedown.attrib,
+ SVG.onmouseup.attrib,
+ SVG.onmouseover.attrib,
+ SVG.onmousemove.attrib,
+ SVG.onmouseout.attrib,
+ SVG.onload.attrib,
+ SVG.GraphicalEvents.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rng
new file mode 100644
index 00000000000..4a69371858f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphevents-attrib.rng
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Graphical Element Events Attribute Module
+ file: svg-graphevents-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-graphevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Graphical Element Events Attribute
+
+ onfocusin, onfocusout, onactivate, onclick, onmousedown, onmouseup,
+ onmouseover, onmousemove, onmouseout, onload
+
+ This module defines the GraphicalEvents attribute set.
+ </a:documentation>
+ <define name="SVG.onfocusin.attrib">
+ <optional>
+ <attribute name="onfocusin">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onfocusout.attrib">
+ <optional>
+ <attribute name="onfocusout">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onactivate.attrib">
+ <optional>
+ <attribute name="onactivate">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onclick.attrib">
+ <optional>
+ <attribute name="onclick">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmousedown.attrib">
+ <optional>
+ <attribute name="onmousedown">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmouseup.attrib">
+ <optional>
+ <attribute name="onmouseup">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmouseover.attrib">
+ <optional>
+ <attribute name="onmouseover">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmousemove.attrib">
+ <optional>
+ <attribute name="onmousemove">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmouseout.attrib">
+ <optional>
+ <attribute name="onmouseout">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onload.attrib" combine="interleave">
+ <optional>
+ <attribute name="onload">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.GraphicalEvents.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.GraphicalEvents.attrib" combine="interleave">
+ <ref name="SVG.onfocusin.attrib"/>
+ <ref name="SVG.onfocusout.attrib"/>
+ <ref name="SVG.onactivate.attrib"/>
+ <ref name="SVG.onclick.attrib"/>
+ <ref name="SVG.onmousedown.attrib"/>
+ <ref name="SVG.onmouseup.attrib"/>
+ <ref name="SVG.onmouseover.attrib"/>
+ <ref name="SVG.onmousemove.attrib"/>
+ <ref name="SVG.onmouseout.attrib"/>
+ <ref name="SVG.onload.attrib"/>
+ <ref name="SVG.GraphicalEvents.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rnc
new file mode 100644
index 00000000000..bbf132ab971
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rnc
@@ -0,0 +1,64 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+
+
+##
+## SVG 1.1 Graphics Attribute Module
+## file: svg-graphics-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Graphics Attribute
+##
+## display, image-rendering, pointer-events, shape-rendering,
+## text-rendering, visibility
+##
+## This module defines the Graphics attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-graphics-attrib.rnc" inherit = ns1
+ SVG.image-rendering.attrib =
+ attribute image-rendering {
+ "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
+ }?
+ SVG.pointer-events.attrib =
+ attribute pointer-events {
+ "visiblePainted"
+ | "visibleFill"
+ | "visibleStroke"
+ | "visible"
+ | "painted"
+ | "fill"
+ | "stroke"
+ | "all"
+ | "none"
+ | "inherit"
+ }?
+ SVG.shape-rendering.attrib =
+ attribute shape-rendering {
+ "auto"
+ | "optimizeSpeed"
+ | "crispEdges"
+ | "geometricPrecision"
+ | "inherit"
+ }?
+ SVG.text-rendering.attrib =
+ attribute text-rendering {
+ "auto"
+ | "optimizeSpeed"
+ | "optimizeLegibility"
+ | "geometricPrecision"
+ | "inherit"
+ }?
+ SVG.Graphics.attrib &=
+ SVG.image-rendering.attrib,
+ SVG.pointer-events.attrib,
+ SVG.shape-rendering.attrib,
+ SVG.text-rendering.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rng
new file mode 100644
index 00000000000..fb8b6c62348
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-graphics-attrib.rng
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Graphics Attribute Module
+ file: svg-graphics-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Graphics Attribute
+
+ display, image-rendering, pointer-events, shape-rendering,
+ text-rendering, visibility
+
+ This module defines the Graphics attribute set.
+ </a:documentation>
+ <include href="svg-basic-graphics-attrib.rng"/>
+ <define name="SVG.image-rendering.attrib">
+ <optional>
+ <attribute name="image-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>optimizeQuality</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.pointer-events.attrib">
+ <optional>
+ <attribute name="pointer-events">
+ <choice>
+ <value>visiblePainted</value>
+ <value>visibleFill</value>
+ <value>visibleStroke</value>
+ <value>visible</value>
+ <value>painted</value>
+ <value>fill</value>
+ <value>stroke</value>
+ <value>all</value>
+ <value>none</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.shape-rendering.attrib">
+ <optional>
+ <attribute name="shape-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>crispEdges</value>
+ <value>geometricPrecision</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.text-rendering.attrib">
+ <optional>
+ <attribute name="text-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>optimizeLegibility</value>
+ <value>geometricPrecision</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Graphics.attrib" combine="interleave">
+ <ref name="SVG.image-rendering.attrib"/>
+ <ref name="SVG.pointer-events.attrib"/>
+ <ref name="SVG.shape-rendering.attrib"/>
+ <ref name="SVG.text-rendering.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rnc
new file mode 100644
index 00000000000..705e3e3334d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rnc
@@ -0,0 +1,66 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Hyperlinking Module
+## file: svg-hyperlink.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-hyperlink.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Hyperlinking
+##
+## a
+##
+## This module declares markup to provide support for hyper linking.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## link to this target
+ ##
+ LinkTarget.datatype = xsd:NMTOKEN
+ a:documentation [ "\x{a}" ~ " SVG.Hyperlink.class\x{a}" ~ " " ]
+ SVG.Hyperlink.extra.class = notAllowed
+ SVG.Hyperlink.class |= a | SVG.Hyperlink.extra.class
+ a:documentation [ "\x{a}" ~ " a: Anchor Element\x{a}" ~ " " ]
+ SVG.a.content =
+ (text
+ | SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ a = element a { attlist.a, SVG.a.content }
+ attlist.a &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.XLinkReplace.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?,
+ attribute target { LinkTarget.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rng
new file mode 100644
index 00000000000..1e0c1807091
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-hyperlink.rng
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Hyperlinking Module
+ file: svg-hyperlink.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-hyperlink.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Hyperlinking
+
+ a
+
+ This module declares markup to provide support for hyper linking.
+ </a:documentation>
+ <define name="LinkTarget.datatype">
+ <a:documentation>
+ link to this target
+ </a:documentation>
+ <data type="NMTOKEN"/>
+ </define>
+ <a:documentation>
+ SVG.Hyperlink.class
+ </a:documentation>
+ <define name="SVG.Hyperlink.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Hyperlink.class" combine="choice">
+ <choice>
+ <ref name="a"/>
+ <ref name="SVG.Hyperlink.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ a: Anchor Element
+ </a:documentation>
+ <define name="SVG.a.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="a">
+ <element name="a">
+ <ref name="attlist.a"/>
+ <ref name="SVG.a.content"/>
+ </element>
+ </define>
+ <define name="attlist.a" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.XLinkReplace.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="target">
+ <ref name="LinkTarget.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rnc
new file mode 100644
index 00000000000..0dffc8e1b92
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rnc
@@ -0,0 +1,56 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Image Module
+## file: svg-image.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-image.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Image
+##
+## image
+##
+## This module declares markup to provide support for image.
+##
+
+##
+## SVG.Image.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Image.extra.class = notAllowed
+ SVG.Image.class |= image | SVG.Image.extra.class
+ a:documentation [ "\x{a}" ~ " image: Image Element\x{a}" ~ " " ]
+ SVG.image.content = SVG.Description.class*, SVG.Animation.class*
+ image = element image { attlist.image, SVG.image.content }
+ attlist.image &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Viewport.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Profile.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLinkEmbed.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype },
+ attribute height { Length.datatype },
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?,
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rng
new file mode 100644
index 00000000000..8b02c532890
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-image.rng
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Image Module
+ file: svg-image.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-image.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Image
+
+ image
+
+ This module declares markup to provide support for image.
+ </a:documentation>
+ <a:documentation>
+ SVG.Image.class
+ </a:documentation>
+ <define name="SVG.Image.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Image.class" combine="choice">
+ <choice>
+ <ref name="image"/>
+ <ref name="SVG.Image.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ image: Image Element
+ </a:documentation>
+ <define name="SVG.image.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="image">
+ <element name="image">
+ <ref name="attlist.image"/>
+ <ref name="SVG.image.content"/>
+ </element>
+ </define>
+ <define name="attlist.image" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Viewport.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Profile.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLinkEmbed.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rnc
new file mode 100644
index 00000000000..bfb7c316bd5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rnc
@@ -0,0 +1,76 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Marker Module
+## file: svg-marker.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-marker.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Marker
+##
+## marker
+##
+## This module declares markup to provide support for marker.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ MarkerValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Marker.attrib\x{a}" ~ " " ]
+ SVG.Marker.extra.attrib = empty
+ SVG.Marker.attrib &=
+ attribute marker-start { MarkerValue.datatype }?,
+ attribute marker-mid { MarkerValue.datatype }?,
+ attribute marker-end { MarkerValue.datatype }?,
+ SVG.Marker.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Marker.class\x{a}" ~ " " ]
+ SVG.Marker.extra.class = notAllowed
+ SVG.Marker.class |= marker | SVG.Marker.extra.class
+ a:documentation [ "\x{a}" ~ " marker: Marker Element\x{a}" ~ " " ]
+ SVG.marker.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ marker = element marker { attlist.marker, SVG.marker.content }
+ attlist.marker &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.External.attrib,
+ attribute refX { Coordinate.datatype }?,
+ attribute refY { Coordinate.datatype }?,
+ attribute markerUnits { "strokeWidth" | "userSpaceOnUse" }?,
+ attribute markerWidth { Length.datatype }?,
+ attribute markerHeight { Length.datatype }?,
+ attribute orient { text }?,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rng
new file mode 100644
index 00000000000..ef30e1d60c1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-marker.rng
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Marker Module
+ file: svg-marker.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-marker.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Marker
+
+ marker
+
+ This module declares markup to provide support for marker.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="MarkerValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Marker.attrib
+ </a:documentation>
+ <define name="SVG.Marker.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Marker.attrib" combine="interleave">
+ <optional>
+ <attribute name="marker-start">
+ <ref name="MarkerValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="marker-mid">
+ <ref name="MarkerValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="marker-end">
+ <ref name="MarkerValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Marker.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Marker.class
+ </a:documentation>
+ <define name="SVG.Marker.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Marker.class" combine="choice">
+ <choice>
+ <ref name="marker"/>
+ <ref name="SVG.Marker.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ marker: Marker Element
+ </a:documentation>
+ <define name="SVG.marker.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="marker">
+ <element name="marker">
+ <ref name="attlist.marker"/>
+ <ref name="SVG.marker.content"/>
+ </element>
+ </define>
+ <define name="attlist.marker" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="refX">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="refY">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="markerUnits">
+ <choice>
+ <value>strokeWidth</value>
+ <value>userSpaceOnUse</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="markerWidth">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="markerHeight">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orient"/>
+ </optional>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rnc
new file mode 100644
index 00000000000..c5b8722bf8f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rnc
@@ -0,0 +1,74 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Mask Module
+## file: svg-mask.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-mask.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Mask
+##
+## mask
+##
+## This module declares markup to provide support for masking.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ MaskValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Mask.attrib\x{a}" ~ " " ]
+ SVG.Mask.extra.attrib = empty
+ SVG.Mask.attrib &=
+ attribute mask { MaskValue.datatype }?,
+ SVG.Mask.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Mask.class\x{a}" ~ " " ]
+ SVG.Mask.extra.class = notAllowed
+ SVG.Mask.class |= mask | SVG.Mask.extra.class
+ a:documentation [ "\x{a}" ~ " mask: Mask Element\x{a}" ~ " " ]
+ SVG.mask.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ mask = element mask { attlist.mask, SVG.mask.content }
+ attlist.mask &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute maskUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute maskContentUnits {
+ "userSpaceOnUse" | "objectBoundingBox"
+ }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rng
new file mode 100644
index 00000000000..ca25e47915d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-mask.rng
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Mask Module
+ file: svg-mask.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-mask.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Mask
+
+ mask
+
+ This module declares markup to provide support for masking.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="MaskValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Mask.attrib
+ </a:documentation>
+ <define name="SVG.Mask.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Mask.attrib" combine="interleave">
+ <optional>
+ <attribute name="mask">
+ <ref name="MaskValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Mask.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Mask.class
+ </a:documentation>
+ <define name="SVG.Mask.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Mask.class" combine="choice">
+ <choice>
+ <ref name="mask"/>
+ <ref name="SVG.Mask.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ mask: Mask Element
+ </a:documentation>
+ <define name="SVG.mask.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="mask">
+ <element name="mask">
+ <ref name="attlist.mask"/>
+ <ref name="SVG.mask.content"/>
+ </element>
+ </define>
+ <define name="attlist.mask" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maskUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maskContentUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rnc
new file mode 100644
index 00000000000..c794117b5fa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rnc
@@ -0,0 +1,34 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Paint Opacity Attribute Module
+## file: svg-opacity-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-opacity-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Paint Opacity Attribute
+##
+## opacity, fill-opacity, stroke-opacity
+##
+## This module defines the Opacity attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.opacity.attrib = attribute opacity { OpacityValue.datatype }?
+ SVG.fill-opacity.attrib =
+ attribute fill-opacity { OpacityValue.datatype }?
+ SVG.stroke-opacity.attrib =
+ attribute stroke-opacity { OpacityValue.datatype }?
+ SVG.Opacity.extra.attrib = empty
+ SVG.Opacity.attrib &=
+ SVG.opacity.attrib,
+ SVG.fill-opacity.attrib,
+ SVG.stroke-opacity.attrib,
+ SVG.Opacity.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rng
new file mode 100644
index 00000000000..44458f8b805
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-opacity-attrib.rng
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Paint Opacity Attribute Module
+ file: svg-opacity-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-opacity-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Paint Opacity Attribute
+
+ opacity, fill-opacity, stroke-opacity
+
+ This module defines the Opacity attribute set.
+ </a:documentation>
+ <define name="SVG.opacity.attrib">
+ <optional>
+ <attribute name="opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.fill-opacity.attrib">
+ <optional>
+ <attribute name="fill-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-opacity.attrib">
+ <optional>
+ <attribute name="stroke-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Opacity.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Opacity.attrib" combine="interleave">
+ <ref name="SVG.opacity.attrib"/>
+ <ref name="SVG.fill-opacity.attrib"/>
+ <ref name="SVG.stroke-opacity.attrib"/>
+ <ref name="SVG.Opacity.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rnc
new file mode 100644
index 00000000000..bcb9ccce9e4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rnc
@@ -0,0 +1,97 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Paint Attribute Module
+## file: svg-paint-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-paint-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Paint Attribute
+##
+## fill, fill-rule, stroke, stroke-dasharray, stroke-dashoffset,
+## stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-width, color,
+## color-interpolation, color-rendering
+##
+## This module defines the Paint and Color attribute sets.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## a 'fill' or 'stroke' property/attribute value: <paint>
+ ##
+ Paint.datatype = xsd:string
+
+ ##
+ ## 'stroke-dasharray' property/attribute value
+ ## (e.g., 'none', list of <number>s)
+ ##
+ StrokeDashArrayValue.datatype = xsd:string
+
+ ##
+ ## 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>)
+ ##
+ StrokeDashOffsetValue.datatype = xsd:string
+
+ ##
+ ## 'stroke-miterlimit' property/attribute value (e.g., <number>)
+ ##
+ StrokeMiterLimitValue.datatype = xsd:string
+
+ ##
+ ## 'stroke-width' property/attribute value (e.g., <length>)
+ ##
+ StrokeWidthValue.datatype = xsd:string
+ SVG.fill.attrib = attribute fill { Paint.datatype }?
+ SVG.fill-rule.attrib = attribute fill-rule { ClipFillRule.datatype }?
+ SVG.stroke.attrib = attribute stroke { Paint.datatype }?
+ SVG.stroke-dasharray.attrib =
+ attribute stroke-dasharray { StrokeDashArrayValue.datatype }?
+ SVG.stroke-dashoffset.attrib =
+ attribute stroke-dashoffset { StrokeDashOffsetValue.datatype }?
+ SVG.stroke-linecap.attrib =
+ attribute stroke-linecap {
+ "butt" | "round" | "square" | "inherit"
+ }?
+ SVG.stroke-linejoin.attrib =
+ attribute stroke-linejoin {
+ "miter" | "round" | "bevel" | "inherit"
+ }?
+ SVG.stroke-miterlimit.attrib =
+ attribute stroke-miterlimit { StrokeMiterLimitValue.datatype }?
+ SVG.stroke-width.attrib =
+ attribute stroke-width { StrokeWidthValue.datatype }?
+ SVG.Paint.extra.attrib = empty
+ SVG.Paint.attrib &=
+ SVG.fill.attrib,
+ SVG.fill-rule.attrib,
+ SVG.stroke.attrib,
+ SVG.stroke-dasharray.attrib,
+ SVG.stroke-dashoffset.attrib,
+ SVG.stroke-linecap.attrib,
+ SVG.stroke-linejoin.attrib,
+ SVG.stroke-miterlimit.attrib,
+ SVG.stroke-width.attrib,
+ SVG.Paint.extra.attrib
+ SVG.color.attrib = attribute color { Color.datatype }?
+ SVG.color-interpolation.attrib =
+ attribute color-interpolation {
+ "auto" | "sRGB" | "linearRGB" | "inherit"
+ }?
+ SVG.color-rendering.attrib =
+ attribute color-rendering {
+ "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
+ }?
+ SVG.Color.extra.attrib = empty
+ SVG.Color.attrib &=
+ SVG.color.attrib,
+ SVG.color-interpolation.attrib,
+ SVG.color-rendering.attrib,
+ SVG.Color.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rng
new file mode 100644
index 00000000000..fe9d499edca
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-paint-attrib.rng
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Paint Attribute Module
+ file: svg-paint-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-paint-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Paint Attribute
+
+ fill, fill-rule, stroke, stroke-dasharray, stroke-dashoffset,
+ stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-width, color,
+ color-interpolation, color-rendering
+
+ This module defines the Paint and Color attribute sets.
+ </a:documentation>
+ <define name="Paint.datatype">
+ <a:documentation>
+ a 'fill' or 'stroke' property/attribute value: &lt;paint&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeDashArrayValue.datatype">
+ <a:documentation>
+ 'stroke-dasharray' property/attribute value
+ (e.g., 'none', list of &lt;number&gt;s)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeDashOffsetValue.datatype">
+ <a:documentation>
+ 'stroke-dashoffset' property/attribute value (e.g., 'none', &lt;legnth&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeMiterLimitValue.datatype">
+ <a:documentation>
+ 'stroke-miterlimit' property/attribute value (e.g., &lt;number&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeWidthValue.datatype">
+ <a:documentation>
+ 'stroke-width' property/attribute value (e.g., &lt;length&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVG.fill.attrib">
+ <optional>
+ <attribute name="fill">
+ <ref name="Paint.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.fill-rule.attrib">
+ <optional>
+ <attribute name="fill-rule">
+ <ref name="ClipFillRule.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke.attrib">
+ <optional>
+ <attribute name="stroke">
+ <ref name="Paint.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-dasharray.attrib">
+ <optional>
+ <attribute name="stroke-dasharray">
+ <ref name="StrokeDashArrayValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-dashoffset.attrib">
+ <optional>
+ <attribute name="stroke-dashoffset">
+ <ref name="StrokeDashOffsetValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-linecap.attrib">
+ <optional>
+ <attribute name="stroke-linecap">
+ <choice>
+ <value>butt</value>
+ <value>round</value>
+ <value>square</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-linejoin.attrib">
+ <optional>
+ <attribute name="stroke-linejoin">
+ <choice>
+ <value>miter</value>
+ <value>round</value>
+ <value>bevel</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-miterlimit.attrib">
+ <optional>
+ <attribute name="stroke-miterlimit">
+ <ref name="StrokeMiterLimitValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-width.attrib">
+ <optional>
+ <attribute name="stroke-width">
+ <ref name="StrokeWidthValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Paint.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Paint.attrib" combine="interleave">
+ <ref name="SVG.fill.attrib"/>
+ <ref name="SVG.fill-rule.attrib"/>
+ <ref name="SVG.stroke.attrib"/>
+ <ref name="SVG.stroke-dasharray.attrib"/>
+ <ref name="SVG.stroke-dashoffset.attrib"/>
+ <ref name="SVG.stroke-linecap.attrib"/>
+ <ref name="SVG.stroke-linejoin.attrib"/>
+ <ref name="SVG.stroke-miterlimit.attrib"/>
+ <ref name="SVG.stroke-width.attrib"/>
+ <ref name="SVG.Paint.extra.attrib"/>
+ </define>
+ <define name="SVG.color.attrib">
+ <optional>
+ <attribute name="color">
+ <ref name="Color.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.color-interpolation.attrib">
+ <optional>
+ <attribute name="color-interpolation">
+ <choice>
+ <value>auto</value>
+ <value>sRGB</value>
+ <value>linearRGB</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.color-rendering.attrib">
+ <optional>
+ <attribute name="color-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>optimizeQuality</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Color.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Color.attrib" combine="interleave">
+ <ref name="SVG.color.attrib"/>
+ <ref name="SVG.color-interpolation.attrib"/>
+ <ref name="SVG.color-rendering.attrib"/>
+ <ref name="SVG.Color.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rnc
new file mode 100644
index 00000000000..0a538fe96a8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rnc
@@ -0,0 +1,76 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Pattern Module
+## file: svg-pattern.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-pattern.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Pattern
+##
+## pattern
+##
+## This module declares markup to provide support for pattern fill.
+##
+
+##
+## SVG.Pattern.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Pattern.extra.class = notAllowed
+ SVG.Pattern.class |= pattern | SVG.Pattern.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " pattern: Pattern Element\x{a}" ~
+ " "
+ ]
+ SVG.pattern.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ pattern = element pattern { attlist.pattern, SVG.pattern.content }
+ attlist.pattern &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute patternUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute patternContentUnits {
+ "userSpaceOnUse" | "objectBoundingBox"
+ }?,
+ attribute patternTransform { TransformList.datatype }?,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rng
new file mode 100644
index 00000000000..371521b1688
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-pattern.rng
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Pattern Module
+ file: svg-pattern.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-pattern.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Pattern
+
+ pattern
+
+ This module declares markup to provide support for pattern fill.
+ </a:documentation>
+ <a:documentation>
+ SVG.Pattern.class
+ </a:documentation>
+ <define name="SVG.Pattern.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Pattern.class" combine="choice">
+ <choice>
+ <ref name="pattern"/>
+ <ref name="SVG.Pattern.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ pattern: Pattern Element
+ </a:documentation>
+ <define name="SVG.pattern.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="pattern">
+ <element name="pattern">
+ <ref name="attlist.pattern"/>
+ <ref name="SVG.pattern.content"/>
+ </element>
+ </define>
+ <define name="attlist.pattern" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="patternUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="patternContentUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="patternTransform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rnc
new file mode 100644
index 00000000000..ba154bdca8b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rnc
@@ -0,0 +1,58 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Color Profile Module
+## file: svg-profile.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-profile.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Color Profile
+##
+## color-profile
+##
+## This module declares markup to provide support for color profile.
+##
+
+##
+## SVG.Profile.attrib
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Profile.extra.attrib = empty
+ SVG.Profile.attrib &=
+ attribute color-profile { text }?,
+ SVG.Profile.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Profile.class\x{a}" ~ " " ]
+ SVG.Profile.extra.class = notAllowed
+ SVG.Profile.class |= color-profile | SVG.Profile.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " color-profile: Color Profile Element\x{a}" ~
+ " "
+ ]
+ SVG.color-profile.content = SVG.Description.class*
+ color-profile =
+ element color-profile {
+ attlist.color-profile, SVG.color-profile.content
+ }
+ attlist.color-profile &=
+ SVG.Core.attrib,
+ SVG.XLink.attrib,
+ attribute local { text }?,
+ attribute name { text },
+ [ a:defaultValue = "auto" ]
+ attribute rendering-intent {
+ "auto"
+ | "perceptual"
+ | "relative-colorimetric"
+ | "saturation"
+ | "absolute-colorimetric"
+ }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rng
new file mode 100644
index 00000000000..11834192f0f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-profile.rng
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Color Profile Module
+ file: svg-profile.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-profile.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Color Profile
+
+ color-profile
+
+ This module declares markup to provide support for color profile.
+ </a:documentation>
+ <a:documentation>
+ SVG.Profile.attrib
+ </a:documentation>
+ <define name="SVG.Profile.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Profile.attrib" combine="interleave">
+ <optional>
+ <attribute name="color-profile"/>
+ </optional>
+ <ref name="SVG.Profile.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Profile.class
+ </a:documentation>
+ <define name="SVG.Profile.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Profile.class" combine="choice">
+ <choice>
+ <ref name="color-profile"/>
+ <ref name="SVG.Profile.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ color-profile: Color Profile Element
+ </a:documentation>
+ <define name="SVG.color-profile.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="color-profile">
+ <element name="color-profile">
+ <ref name="attlist.color-profile"/>
+ <ref name="SVG.color-profile.content"/>
+ </element>
+ </define>
+ <define name="attlist.color-profile" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <optional>
+ <attribute name="local"/>
+ </optional>
+ <attribute name="name"/>
+ <optional>
+ <attribute name="rendering-intent" a:defaultValue="auto">
+ <choice>
+ <value>auto</value>
+ <value>perceptual</value>
+ <value>relative-colorimetric</value>
+ <value>saturation</value>
+ <value>absolute-colorimetric</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-qname.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-qname.rng
new file mode 100644
index 00000000000..e4a9e19f87c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-qname.rng
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" ns="http://www.w3.org/2000/svg">
+<!-- ....................................................................... -->
+<!-- SVG 1.1 Qualified Name Module ......................................... -->
+<!-- file: svg-qname.mod
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+ Revision: $Id: svg-qname.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//ENTITIES SVG 1.1 Qualified Name//EN"
+ SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg-qname.mod"
+
+ ....................................................................... -->
+<!-- Qualified Name
+
+ This module is contained in two parts, labeled Section 'A' and 'B':
+
+ Section A declares parameter entities to support namespace-
+ qualified names, namespace declarations, and name prefixing
+ for SVG and extensions.
+
+ Section B declares parameter entities used to provide
+ namespace-qualified names for all SVG element types:
+-->
+<!-- Section A: SVG XML Namespace Framework :::::::::::::::::::::: -->
+<!-- 1. Declare a %SVG.prefixed; conditional section keyword, used
+ to activate namespace prefixing. The default value should
+ inherit '%NS.prefixed;' from the DTD driver, so that unless
+ overridden, the default behaviour follows the overall DTD
+ prefixing scheme.
+-->
+<!-- 2. Declare a parameter entity (eg., %SVG.xmlns;) containing
+ the URI reference used to identify the SVG namespace:
+-->
+<!-- 3. Declare parameter entities (eg., %SVG.prefix;) containing
+ the default namespace prefix string(s) to use when prefixing
+ is enabled. This may be overridden in the DTD driver or the
+ internal subset of an document instance. If no default prefix
+ is desired, this may be declared as an empty string.
+-->
+<!-- 4. Declare parameter entities (eg., %SVG.pfx;) containing the
+ colonized prefix(es) (eg., '%SVG.prefix;:') used when
+ prefixing is active, an empty string when it is not.
+-->
+<!-- 5. The parameter entity %SVG.xmlns.extra.attrib; may be
+ redeclared to contain any non-SVG namespace declaration
+ attributes for namespaces embedded in SVG. The default
+ is an empty string.
+-->
+<!-- Declare a parameter entity XLINK.xmlns.attrib containing
+ the XML Namespace declarations for XLink.
+-->
+ <define name="XLINK.xmlns.attrib">
+ <empty/>
+ </define>
+<!-- Declare a parameter entity %NS.decl.attrib; containing
+ all XML Namespace declarations used in the DTD, plus the
+ xmlns declaration for SVG, its form dependent on whether
+ prefixing is active.
+-->
+<!-- Declare a parameter entity %SVG.xmlns.attrib; containing
+ all XML namespace declaration attributes used by SVG,
+ including a default xmlns attribute when prefixing is
+ inactive.
+-->
+ <define name="SVG.xmlns.attrib">
+ <empty/>
+ <ref name="XLINK.xmlns.attrib"/>
+ </define>
+<!-- Section B: SVG Qualified Names :::::::::::::::::::::::::::::: -->
+<!-- 6. This section declares parameter entities used to provide
+ namespace-qualified names for all SVG element types.
+-->
+<!-- module: svg-structure.mod ......................... -->
+<!-- module: svg-conditional.mod ....................... -->
+<!-- module: svg-image.mod ............................. -->
+<!-- module: svg-style.mod ............................. -->
+<!-- module: svg-shape.mod ............................. -->
+<!-- module: svg-text.mod .............................. -->
+<!-- module: svg-marker.mod ............................ -->
+<!-- module: svg-profile.mod ........................... -->
+<!-- module: svg-gradient.mod .......................... -->
+<!-- module: svg-pattern.mod ........................... -->
+<!-- module: svg-clip.mod .............................. -->
+<!-- module: svg-mask.mod .............................. -->
+<!-- module: svg-filter.mod ............................ -->
+<!-- module: svg-cursor.mod ............................ -->
+<!-- module: svg-hyperlink.mod ......................... -->
+<!-- module: svg-view.mod .............................. -->
+<!-- module: svg-script.mod ............................ -->
+<!-- module: svg-animation.mod ......................... -->
+<!-- module: svg-font.mod .............................. -->
+<!-- module: svg-extensibility.mod ..................... -->
+<!-- end of svg-qname.mod -->
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rnc
new file mode 100644
index 00000000000..a990e5497fc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rnc
@@ -0,0 +1,38 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Scripting Module
+## file: svg-script.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-script.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Scripting
+##
+## script
+##
+## This module declares markup to provide support for scripting.
+##
+
+##
+## SVG.Script.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Script.extra.class = notAllowed
+ SVG.Script.class |= script | SVG.Script.extra.class
+ a:documentation [ "\x{a}" ~ " script: Script Element\x{a}" ~ " " ]
+ SVG.script.content = text
+ script = element script { attlist.script, SVG.script.content }
+ attlist.script &=
+ SVG.Core.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute type { ContentType.datatype }
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rng
new file mode 100644
index 00000000000..4e21020a398
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-script.rng
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Scripting Module
+ file: svg-script.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-script.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Scripting
+
+ script
+
+ This module declares markup to provide support for scripting.
+ </a:documentation>
+ <a:documentation>
+ SVG.Script.class
+ </a:documentation>
+ <define name="SVG.Script.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Script.class" combine="choice">
+ <choice>
+ <ref name="script"/>
+ <ref name="SVG.Script.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ script: Script Element
+ </a:documentation>
+ <define name="SVG.script.content">
+ <text/>
+ </define>
+ <define name="script">
+ <element name="script">
+ <ref name="attlist.script"/>
+ <ref name="SVG.script.content"/>
+ </element>
+ </define>
+ <define name="attlist.script" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rnc
new file mode 100644
index 00000000000..cc80462b97d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rnc
@@ -0,0 +1,207 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Shape Module
+## file: svg-shape.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-shape.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Shape
+##
+## path, rect, circle, line, ellipse, polyline, polygon
+##
+## This module declares markup to provide support for graphical shapes.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## a list of points
+ ##
+ Points.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Shape.class\x{a}" ~ " " ]
+ SVG.Shape.extra.class = notAllowed
+ SVG.Shape.class |=
+ path
+ | rect
+ | circle
+ | line
+ | ellipse
+ | polyline
+ | polygon
+ | SVG.Shape.extra.class
+ a:documentation [ "\x{a}" ~ " path: Path Element\x{a}" ~ " " ]
+ SVG.path.content = SVG.Description.class*, SVG.Animation.class*
+ path = element path { attlist.path, SVG.path.content }
+ attlist.path &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute d { PathData.datatype },
+ attribute pathLength { Number.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " rect: Rectangle Element\x{a}" ~
+ " "
+ ]
+ SVG.rect.content = SVG.Description.class*, SVG.Animation.class*
+ rect = element rect { attlist.rect, SVG.rect.content }
+ attlist.rect &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype },
+ attribute height { Length.datatype },
+ attribute rx { Length.datatype }?,
+ attribute ry { Length.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [ "\x{a}" ~ " circle: Circle Element\x{a}" ~ " " ]
+ SVG.circle.content = SVG.Description.class*, SVG.Animation.class*
+ circle = element circle { attlist.circle, SVG.circle.content }
+ attlist.circle &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute cx { Coordinate.datatype }?,
+ attribute cy { Coordinate.datatype }?,
+ attribute r { Length.datatype },
+ attribute transform { TransformList.datatype }?
+ a:documentation [ "\x{a}" ~ " line: Line Element\x{a}" ~ " " ]
+ SVG.line.content = SVG.Description.class*, SVG.Animation.class*
+ line = element line { attlist.line, SVG.line.content }
+ attlist.line &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x1 { Coordinate.datatype }?,
+ attribute y1 { Coordinate.datatype }?,
+ attribute x2 { Coordinate.datatype }?,
+ attribute y2 { Coordinate.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " ellipse: Ellipse Element\x{a}" ~
+ " "
+ ]
+ SVG.ellipse.content = SVG.Description.class*, SVG.Animation.class*
+ ellipse = element ellipse { attlist.ellipse, SVG.ellipse.content }
+ attlist.ellipse &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute cx { Coordinate.datatype }?,
+ attribute cy { Coordinate.datatype }?,
+ attribute rx { Length.datatype },
+ attribute ry { Length.datatype },
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " polyline: Polyline Element\x{a}" ~
+ " "
+ ]
+ SVG.polyline.content = SVG.Description.class*, SVG.Animation.class*
+ polyline = element polyline { attlist.polyline, SVG.polyline.content }
+ attlist.polyline &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute points { Points.datatype },
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " polygon: Polygon Element\x{a}" ~
+ " "
+ ]
+ SVG.polygon.content = SVG.Description.class*, SVG.Animation.class*
+ polygon = element polygon { attlist.polygon, SVG.polygon.content }
+ attlist.polygon &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute points { Points.datatype },
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rng
new file mode 100644
index 00000000000..c931bab7ae2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-shape.rng
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Shape Module
+ file: svg-shape.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-shape.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Shape
+
+ path, rect, circle, line, ellipse, polyline, polygon
+
+ This module declares markup to provide support for graphical shapes.
+ </a:documentation>
+ <define name="Points.datatype">
+ <a:documentation>
+ a list of points
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Shape.class
+ </a:documentation>
+ <define name="SVG.Shape.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Shape.class" combine="choice">
+ <choice>
+ <ref name="path"/>
+ <ref name="rect"/>
+ <ref name="circle"/>
+ <ref name="line"/>
+ <ref name="ellipse"/>
+ <ref name="polyline"/>
+ <ref name="polygon"/>
+ <ref name="SVG.Shape.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ path: Path Element
+ </a:documentation>
+ <define name="SVG.path.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="path">
+ <element name="path">
+ <ref name="attlist.path"/>
+ <ref name="SVG.path.content"/>
+ </element>
+ </define>
+ <define name="attlist.path" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="d">
+ <ref name="PathData.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="pathLength">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ rect: Rectangle Element
+ </a:documentation>
+ <define name="SVG.rect.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="rect">
+ <element name="rect">
+ <ref name="attlist.rect"/>
+ <ref name="SVG.rect.content"/>
+ </element>
+ </define>
+ <define name="attlist.rect" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="rx">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ry">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ circle: Circle Element
+ </a:documentation>
+ <define name="SVG.circle.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="circle">
+ <element name="circle">
+ <ref name="attlist.circle"/>
+ <ref name="SVG.circle.content"/>
+ </element>
+ </define>
+ <define name="attlist.circle" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="cx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="r">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ line: Line Element
+ </a:documentation>
+ <define name="SVG.line.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="line">
+ <element name="line">
+ <ref name="attlist.line"/>
+ <ref name="SVG.line.content"/>
+ </element>
+ </define>
+ <define name="attlist.line" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ ellipse: Ellipse Element
+ </a:documentation>
+ <define name="SVG.ellipse.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="ellipse">
+ <element name="ellipse">
+ <ref name="attlist.ellipse"/>
+ <ref name="SVG.ellipse.content"/>
+ </element>
+ </define>
+ <define name="attlist.ellipse" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="cx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="rx">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="ry">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ polyline: Polyline Element
+ </a:documentation>
+ <define name="SVG.polyline.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="polyline">
+ <element name="polyline">
+ <ref name="attlist.polyline"/>
+ <ref name="SVG.polyline.content"/>
+ </element>
+ </define>
+ <define name="attlist.polyline" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="points">
+ <ref name="Points.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ polygon: Polygon Element
+ </a:documentation>
+ <define name="SVG.polygon.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="polygon">
+ <element name="polygon">
+ <ref name="attlist.polygon"/>
+ <ref name="SVG.polygon.content"/>
+ </element>
+ </define>
+ <define name="attlist.polygon" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="points">
+ <ref name="Points.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rnc
new file mode 100644
index 00000000000..370c4259c05
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rnc
@@ -0,0 +1,62 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Structure Module
+## file: svg-structure.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Structure
+##
+## svg, g, defs, desc, title, metadata, symbol, use
+##
+## This module declares the major structural elements and their attributes.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-structure.rnc"
+
+ ##
+ ## extend SVG.Structure.class
+ ##
+ SVG.Structure.class |= symbol
+ a:documentation [ "\x{a}" ~ " symbol: Symbol Element\x{a}" ~ " " ]
+ SVG.symbol.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ symbol = element symbol { attlist.symbol, SVG.symbol.content }
+ attlist.symbol &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rng
new file mode 100644
index 00000000000..533d3462646
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-structure.rng
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Structure Module
+ file: svg-structure.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Structure
+
+ svg, g, defs, desc, title, metadata, symbol, use
+
+ This module declares the major structural elements and their attributes.
+ </a:documentation>
+ <include href="svg-basic-structure.rng"/>
+ <define name="SVG.Structure.class" combine="choice">
+ <a:documentation>
+ extend SVG.Structure.class
+ </a:documentation>
+ <ref name="symbol"/>
+ </define>
+ <a:documentation>
+ symbol: Symbol Element
+ </a:documentation>
+ <define name="SVG.symbol.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="symbol">
+ <element name="symbol">
+ <ref name="attlist.symbol"/>
+ <ref name="SVG.symbol.content"/>
+ </element>
+ </define>
+ <define name="attlist.symbol" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rnc
new file mode 100644
index 00000000000..68c7f48c1a3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rnc
@@ -0,0 +1,56 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Style Module
+## file: svg-style.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-style.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Style
+##
+## style
+##
+## This module declares markup to provide support for stylesheet.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ ClassList.datatype = xsd:NMTOKENS
+ StyleSheet.datatype = xsd:string
+
+ ##
+ ## comma-separated list of media descriptors.
+ ##
+ MediaDesc.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Style.attrib\x{a}" ~ " " ]
+ SVG.Style.extra.attrib = empty
+ SVG.Style.attrib &=
+ attribute style { StyleSheet.datatype }?,
+ attribute class { ClassList.datatype }?,
+ SVG.Style.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Style.class\x{a}" ~ " " ]
+ SVG.Style.extra.class = notAllowed
+ SVG.Style.class |= style | SVG.Style.extra.class
+ a:documentation [ "\x{a}" ~ " style: Style Element\x{a}" ~ " " ]
+ SVG.style.content = text
+ style = element style { attlist.style, SVG.style.content }
+ attlist.style &=
+ [ a:defaultValue = "preserve" ] attribute xml:space { "preserve" }?,
+ SVG.id.attrib,
+ SVG.base.attrib,
+ SVG.lang.attrib,
+ SVG.Core.extra.attrib,
+ attribute type { ContentType.datatype },
+ attribute media { MediaDesc.datatype }?,
+ attribute title { Text.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rng
new file mode 100644
index 00000000000..bc9b9a736f6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-style.rng
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Style Module
+ file: svg-style.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-style.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Style
+
+ style
+
+ This module declares markup to provide support for stylesheet.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="ClassList.datatype">
+ <data type="NMTOKENS"/>
+ </define>
+ <define name="StyleSheet.datatype">
+ <data type="string"/>
+ </define>
+ <define name="MediaDesc.datatype">
+ <a:documentation>
+ comma-separated list of media descriptors.
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Style.attrib
+ </a:documentation>
+ <define name="SVG.Style.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Style.attrib" combine="interleave">
+ <optional>
+ <attribute name="style">
+ <ref name="StyleSheet.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <ref name="ClassList.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Style.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Style.class
+ </a:documentation>
+ <define name="SVG.Style.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Style.class" combine="choice">
+ <choice>
+ <ref name="style"/>
+ <ref name="SVG.Style.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ style: Style Element
+ </a:documentation>
+ <define name="SVG.style.content">
+ <text/>
+ </define>
+ <define name="style">
+ <element name="style">
+ <ref name="attlist.style"/>
+ <ref name="SVG.style.content"/>
+ </element>
+ </define>
+ <define name="attlist.style" combine="interleave">
+ <optional>
+ <attribute name="xml:space" a:defaultValue="preserve">
+ <value>preserve</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.id.attrib"/>
+ <ref name="SVG.base.attrib"/>
+ <ref name="SVG.lang.attrib"/>
+ <ref name="SVG.Core.extra.attrib"/>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="media">
+ <ref name="MediaDesc.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rnc
new file mode 100644
index 00000000000..b9d52e14420
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rnc
@@ -0,0 +1,275 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Text Module
+## file: svg-text.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Text
+##
+## text, tspan, tref, textPath, altGlyph, altGlyphDef, altGlyphItem,
+## glyphRef
+##
+## This module declares markup to provide support for alternate glyph.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-text.rnc"
+ a:documentation [ "\x{a}" ~ " Datatypes\x{a}" ~ " " ]
+ BaselineShiftValue.datatype = xsd:string
+ FontSizeAdjustValue.datatype = xsd:string
+ GlyphOrientationHorizontalValue.datatype = xsd:string
+ GlyphOrientationVerticalValue.datatype = xsd:string
+ KerningValue.datatype = xsd:string
+ SpacingValue.datatype = xsd:string
+ TextDecorationValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Text.attrib\x{a}" ~ " " ]
+ SVG.Text.extra.attrib = empty
+ SVG.Text.attrib &=
+ attribute writing-mode {
+ "lr-tb" | "rl-tb" | "tb-rl" | "lr" | "rl" | "tb" | "inherit"
+ }?,
+ SVG.Text.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.TextContent.attrib\x{a}" ~ " " ]
+ SVG.TextContent.extra.attrib = empty
+ SVG.TextContent.attrib &=
+ attribute alignment-baseline {
+ "auto"
+ | "baseline"
+ | "before-edge"
+ | "text-before-edge"
+ | "middle"
+ | "central"
+ | "after-edge"
+ | "text-after-edge"
+ | "ideographic"
+ | "alphabetic"
+ | "hanging"
+ | "mathematical"
+ | "inherit"
+ }?,
+ attribute baseline-shift { BaselineShiftValue.datatype }?,
+ attribute direction { "ltr" | "rtl" | "inherit" }?,
+ attribute dominant-baseline {
+ "auto"
+ | "use-script"
+ | "no-change"
+ | "reset-size"
+ | "ideographic"
+ | "alphabetic"
+ | "hanging"
+ | "mathematical"
+ | "central"
+ | "middle"
+ | "text-after-edge"
+ | "text-before-edge"
+ | "inherit"
+ }?,
+ attribute glyph-orientation-horizontal {
+ GlyphOrientationHorizontalValue.datatype
+ }?,
+ attribute glyph-orientation-vertical {
+ GlyphOrientationVerticalValue.datatype
+ }?,
+ attribute kerning { KerningValue.datatype }?,
+ attribute letter-spacing { SpacingValue.datatype }?,
+ attribute text-anchor { "start" | "middle" | "end" | "inherit" }?,
+ attribute text-decoration { TextDecorationValue.datatype }?,
+ attribute unicode-bidi {
+ "normal" | "embed" | "bidi-override" | "inherit"
+ }?,
+ attribute word-spacing { SpacingValue.datatype }?,
+ SVG.TextContent.extra.attrib
+ SVG.Font.attrib &=
+ attribute font-size-adjust { FontSizeAdjustValue.datatype }?,
+ attribute font-stretch {
+ "normal"
+ | "wider"
+ | "narrower"
+ | "ultra-condensed"
+ | "extra-condensed"
+ | "condensed"
+ | "semi-condensed"
+ | "semi-expanded"
+ | "expanded"
+ | "extra-expanded"
+ | "ultra-expanded"
+ | "inherit"
+ }?,
+ attribute font-variant { "normal" | "small-caps" | "inherit" }?
+
+ ##
+ ## extend SVG.Text.class
+ ##
+ SVG.Text.class |= altGlyphDef
+
+ ##
+ ## extend SVG.TextContent.class
+ ##
+ SVG.TextContent.class |= tspan | tref | textPath
+ a:documentation [ "\x{a}" ~ " text: Text Element\x{a}" ~ " " ]
+ SVG.text.class |= SVG.TextContent.class
+ attlist.text &=
+ SVG.Text.attrib,
+ SVG.TextContent.attrib,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?
+ a:documentation [
+ "\x{a}" ~
+ " tspan: Text Span Element\x{a}" ~
+ " "
+ ]
+ SVG.tspan.content =
+ (text
+ | tspan
+ | tref
+ | altGlyph
+ | animate
+ | set
+ | animateColor
+ | SVG.Description.class
+ | SVG.Hyperlink.class)*
+ tspan = element tspan { attlist.tspan, SVG.tspan.content }
+ attlist.tspan &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute rotate { Numbers.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?
+ a:documentation [
+ "\x{a}" ~
+ " tref: Text Reference Element\x{a}" ~
+ " "
+ ]
+ SVG.tref.content =
+ (animate | set | animateColor | SVG.Description.class)*
+ tref = element tref { attlist.tref, SVG.tref.content }
+ attlist.tref &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLinkRequired.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute rotate { Numbers.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?
+ a:documentation [
+ "\x{a}" ~
+ " textPath: Text Path Element\x{a}" ~
+ " "
+ ]
+ SVG.textPath.content =
+ (text
+ | tspan
+ | tref
+ | altGlyph
+ | animate
+ | set
+ | animateColor
+ | SVG.Description.class
+ | SVG.Hyperlink.class)*
+ textPath = element textPath { attlist.textPath, SVG.textPath.content }
+ attlist.textPath &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLinkRequired.attrib,
+ SVG.External.attrib,
+ attribute startOffset { Length.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?,
+ attribute method { "align" | "stretch" }?,
+ attribute spacing { "auto" | "exact" }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyph: Alternate Glyph Element\x{a}" ~
+ " "
+ ]
+ attlist.altGlyph &=
+ SVG.TextContent.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute rotate { Numbers.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyphDef: Alternate Glyph Definition Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyphDef.content |= altGlyphItem+
+ a:documentation [
+ "\x{a}" ~
+ " altGlyphItem: Alternate Glyph Item Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyphItem.content = glyphRef+
+ altGlyphItem =
+ element altGlyphItem {
+ attlist.altGlyphItem, SVG.altGlyphItem.content
+ }
+ attlist.altGlyphItem &= SVG.Core.attrib
+ a:documentation [
+ "\x{a}" ~
+ " glyphRef: Glyph Reference Element\x{a}" ~
+ " "
+ ]
+ attlist.glyphRef &=
+ attribute x { Number.datatype }?,
+ attribute y { Number.datatype }?,
+ attribute dx { Number.datatype }?,
+ attribute dy { Number.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rng
new file mode 100644
index 00000000000..d0740889641
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-text.rng
@@ -0,0 +1,572 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Text Module
+ file: svg-text.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Text
+
+ text, tspan, tref, textPath, altGlyph, altGlyphDef, altGlyphItem,
+ glyphRef
+
+ This module declares markup to provide support for alternate glyph.
+ </a:documentation>
+ <include href="svg-basic-text.rng"/>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="BaselineShiftValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="FontSizeAdjustValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="GlyphOrientationHorizontalValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="GlyphOrientationVerticalValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="KerningValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="SpacingValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="TextDecorationValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Text.attrib
+ </a:documentation>
+ <define name="SVG.Text.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Text.attrib" combine="interleave">
+ <optional>
+ <attribute name="writing-mode">
+ <choice>
+ <value>lr-tb</value>
+ <value>rl-tb</value>
+ <value>tb-rl</value>
+ <value>lr</value>
+ <value>rl</value>
+ <value>tb</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.Text.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.TextContent.attrib
+ </a:documentation>
+ <define name="SVG.TextContent.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.TextContent.attrib" combine="interleave">
+ <optional>
+ <attribute name="alignment-baseline">
+ <choice>
+ <value>auto</value>
+ <value>baseline</value>
+ <value>before-edge</value>
+ <value>text-before-edge</value>
+ <value>middle</value>
+ <value>central</value>
+ <value>after-edge</value>
+ <value>text-after-edge</value>
+ <value>ideographic</value>
+ <value>alphabetic</value>
+ <value>hanging</value>
+ <value>mathematical</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseline-shift">
+ <ref name="BaselineShiftValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="direction">
+ <choice>
+ <value>ltr</value>
+ <value>rtl</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dominant-baseline">
+ <choice>
+ <value>auto</value>
+ <value>use-script</value>
+ <value>no-change</value>
+ <value>reset-size</value>
+ <value>ideographic</value>
+ <value>alphabetic</value>
+ <value>hanging</value>
+ <value>mathematical</value>
+ <value>central</value>
+ <value>middle</value>
+ <value>text-after-edge</value>
+ <value>text-before-edge</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="glyph-orientation-horizontal">
+ <ref name="GlyphOrientationHorizontalValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="glyph-orientation-vertical">
+ <ref name="GlyphOrientationVerticalValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kerning">
+ <ref name="KerningValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="letter-spacing">
+ <ref name="SpacingValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text-anchor">
+ <choice>
+ <value>start</value>
+ <value>middle</value>
+ <value>end</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text-decoration">
+ <ref name="TextDecorationValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="unicode-bidi">
+ <choice>
+ <value>normal</value>
+ <value>embed</value>
+ <value>bidi-override</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="word-spacing">
+ <ref name="SpacingValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.TextContent.extra.attrib"/>
+ </define>
+ <define name="SVG.Font.attrib" combine="interleave">
+ <optional>
+ <attribute name="font-size-adjust">
+ <ref name="FontSizeAdjustValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-stretch">
+ <choice>
+ <value>normal</value>
+ <value>wider</value>
+ <value>narrower</value>
+ <value>ultra-condensed</value>
+ <value>extra-condensed</value>
+ <value>condensed</value>
+ <value>semi-condensed</value>
+ <value>semi-expanded</value>
+ <value>expanded</value>
+ <value>extra-expanded</value>
+ <value>ultra-expanded</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-variant">
+ <choice>
+ <value>normal</value>
+ <value>small-caps</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Text.class" combine="choice">
+ <a:documentation>
+ extend SVG.Text.class
+ </a:documentation>
+ <ref name="altGlyphDef"/>
+ </define>
+ <define name="SVG.TextContent.class" combine="choice">
+ <a:documentation>
+ extend SVG.TextContent.class
+ </a:documentation>
+ <choice>
+ <ref name="tspan"/>
+ <ref name="tref"/>
+ <ref name="textPath"/>
+ </choice>
+ </define>
+ <a:documentation>
+ text: Text Element
+ </a:documentation>
+ <define name="SVG.text.class" combine="choice">
+ <ref name="SVG.TextContent.class"/>
+ </define>
+ <define name="attlist.text" combine="interleave">
+ <ref name="SVG.Text.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ tspan: Text Span Element
+ </a:documentation>
+ <define name="SVG.tspan.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="tspan"/>
+ <ref name="tref"/>
+ <ref name="altGlyph"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="tspan">
+ <element name="tspan">
+ <ref name="attlist.tspan"/>
+ <ref name="SVG.tspan.content"/>
+ </element>
+ </define>
+ <define name="attlist.tspan" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ tref: Text Reference Element
+ </a:documentation>
+ <define name="SVG.tref.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ <ref name="SVG.Description.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="tref">
+ <element name="tref">
+ <ref name="attlist.tref"/>
+ <ref name="SVG.tref.content"/>
+ </element>
+ </define>
+ <define name="attlist.tref" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ textPath: Text Path Element
+ </a:documentation>
+ <define name="SVG.textPath.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="tspan"/>
+ <ref name="tref"/>
+ <ref name="altGlyph"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="textPath">
+ <element name="textPath">
+ <ref name="attlist.textPath"/>
+ <ref name="SVG.textPath.content"/>
+ </element>
+ </define>
+ <define name="attlist.textPath" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="startOffset">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="method">
+ <choice>
+ <value>align</value>
+ <value>stretch</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spacing">
+ <choice>
+ <value>auto</value>
+ <value>exact</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyph: Alternate Glyph Element
+ </a:documentation>
+ <define name="attlist.altGlyph" combine="interleave">
+ <ref name="SVG.TextContent.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyphDef: Alternate Glyph Definition Element
+ </a:documentation>
+ <define name="SVG.altGlyphDef.content" combine="choice">
+ <oneOrMore>
+ <ref name="altGlyphItem"/>
+ </oneOrMore>
+ </define>
+ <a:documentation>
+ altGlyphItem: Alternate Glyph Item Element
+ </a:documentation>
+ <define name="SVG.altGlyphItem.content">
+ <oneOrMore>
+ <ref name="glyphRef"/>
+ </oneOrMore>
+ </define>
+ <define name="altGlyphItem">
+ <element name="altGlyphItem">
+ <ref name="attlist.altGlyphItem"/>
+ <ref name="SVG.altGlyphItem.content"/>
+ </element>
+ </define>
+ <define name="attlist.altGlyphItem" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ glyphRef: Glyph Reference Element
+ </a:documentation>
+ <define name="attlist.glyphRef" combine="interleave">
+ <optional>
+ <attribute name="x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rnc
new file mode 100644
index 00000000000..41501c31f92
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rnc
@@ -0,0 +1,42 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 View Module
+## file: svg-view.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-view.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## View
+##
+## view
+##
+## This module declares markup to provide support for view.
+##
+
+##
+## SVG.View.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.View.extra.class = notAllowed
+ SVG.View.class |= view | SVG.View.extra.class
+ a:documentation [ "\x{a}" ~ " view: View Element\x{a}" ~ " " ]
+ SVG.view.content = SVG.Description.class*
+ view = element view { attlist.view, SVG.view.content }
+ attlist.view &=
+ SVG.Core.attrib,
+ SVG.External.attrib,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?,
+ [ a:defaultValue = "magnify" ]
+ attribute zoomAndPan { "disable" | "magnify" }?,
+ attribute viewTarget { text }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rng
new file mode 100644
index 00000000000..2b26547d2f8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-view.rng
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 View Module
+ file: svg-view.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-view.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ View
+
+ view
+
+ This module declares markup to provide support for view.
+ </a:documentation>
+ <a:documentation>
+ SVG.View.class
+ </a:documentation>
+ <define name="SVG.View.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.View.class" combine="choice">
+ <choice>
+ <ref name="view"/>
+ <ref name="SVG.View.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ view: View Element
+ </a:documentation>
+ <define name="SVG.view.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="view">
+ <element name="view">
+ <ref name="attlist.view"/>
+ <ref name="SVG.view.content"/>
+ </element>
+ </define>
+ <define name="attlist.view" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zoomAndPan" a:defaultValue="magnify">
+ <choice>
+ <value>disable</value>
+ <value>magnify</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewTarget"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rnc
new file mode 100644
index 00000000000..d7acd96d7c5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rnc
@@ -0,0 +1,36 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Viewport Attribute Module
+## file: svg-viewport-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-viewport-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Viewport Attribute
+##
+## clip, overflow
+##
+## This module defines the Viewport attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## 'clip' property/attribute value (e.g., 'auto', rect(...))
+ ##
+ ClipValue.datatype = xsd:string
+ SVG.clip.attrib = attribute clip { ClipValue.datatype }?
+ SVG.overflow.attrib =
+ attribute overflow {
+ "visible" | "hidden" | "scroll" | "auto" | "inherit"
+ }?
+ SVG.Viewport.extra.attrib = empty
+ SVG.Viewport.attrib &=
+ SVG.clip.attrib, SVG.overflow.attrib, SVG.Viewport.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rng
new file mode 100644
index 00000000000..1578d27ceb3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-viewport-attrib.rng
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Viewport Attribute Module
+ file: svg-viewport-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-viewport-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Viewport Attribute
+
+ clip, overflow
+
+ This module defines the Viewport attribute set.
+ </a:documentation>
+ <define name="ClipValue.datatype">
+ <a:documentation>
+ 'clip' property/attribute value (e.g., 'auto', rect(...))
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVG.clip.attrib">
+ <optional>
+ <attribute name="clip">
+ <ref name="ClipValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.overflow.attrib">
+ <optional>
+ <attribute name="overflow">
+ <choice>
+ <value>visible</value>
+ <value>hidden</value>
+ <value>scroll</value>
+ <value>auto</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Viewport.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Viewport.attrib" combine="interleave">
+ <ref name="SVG.clip.attrib"/>
+ <ref name="SVG.overflow.attrib"/>
+ <ref name="SVG.Viewport.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rnc
new file mode 100644
index 00000000000..c31505e04d2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rnc
@@ -0,0 +1,67 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+
+##
+## SVG 1.1 XLink Attribute Module
+## file: svg-xlink-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-xlink-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## XLink Attribute
+##
+## type, href, role, arcrole, title, show, actuate
+##
+## This module defines the XLink, XLinkRequired, XLinkEmbed, and
+## XLinkReplace attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.XLink.extra.attrib = empty
+ SVG.XLink.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype }?,
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "other" ] attribute xlink:show { "other" }?,
+ [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?,
+ SVG.XLink.extra.attrib
+ SVG.XLinkRequired.extra.attrib = empty
+ SVG.XLinkRequired.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype },
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "other" ] attribute xlink:show { "other" }?,
+ [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?,
+ SVG.XLinkRequired.extra.attrib
+ SVG.XLinkEmbed.extra.attrib = empty
+ SVG.XLinkEmbed.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype },
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?,
+ [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?,
+ SVG.XLinkEmbed.extra.attrib
+ SVG.XLinkReplace.extra.attrib = empty
+ SVG.XLinkReplace.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype },
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "replace" ]
+ attribute xlink:show { "new" | "replace" }?,
+ [ a:defaultValue = "onRequest" ]
+ attribute xlink:actuate { "onRequest" }?,
+ SVG.XLinkReplace.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rng
new file mode 100644
index 00000000000..0f1a65dffef
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg-xlink-attrib.rng
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 XLink Attribute Module
+ file: svg-xlink-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-xlink-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ XLink Attribute
+
+ type, href, role, arcrole, title, show, actuate
+
+ This module defines the XLink, XLinkRequired, XLinkEmbed, and
+ XLinkReplace attribute set.
+ </a:documentation>
+ <define name="SVG.XLink.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLink.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="other">
+ <value>other</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onLoad">
+ <value>onLoad</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLink.extra.attrib"/>
+ </define>
+ <define name="SVG.XLinkRequired.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkRequired.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="other">
+ <value>other</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onLoad">
+ <value>onLoad</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLinkRequired.extra.attrib"/>
+ </define>
+ <define name="SVG.XLinkEmbed.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkEmbed.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="embed">
+ <value>embed</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onLoad">
+ <value>onLoad</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLinkEmbed.extra.attrib"/>
+ </define>
+ <define name="SVG.XLinkReplace.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkReplace.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="replace">
+ <choice>
+ <value>new</value>
+ <value>replace</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onRequest">
+ <value>onRequest</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLinkReplace.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-basic.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-basic.rng
new file mode 100644
index 00000000000..bacfea8f65e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-basic.rng
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE grammar SYSTEM "../relaxng.dtd">
+<grammar ns="http://www.w3.org/2000/svg" xml:lang="en"
+ xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <a:documentation>
+ RELAX NG schema for SVG 1.1 Basic
+ file: svg11-basic.rng
+
+ This is SVG Basic, a proper subset of SVG.
+
+ The Scalable Vector Graphics (SVG)
+ Copyright 2001, 2002 World Wide Web Consortium
+ (Massachusetts Institute of Technology, Institut National de
+ Recherche en Informatique et en Automatique, Keio University).
+ All Rights Reserved.
+
+ Permission to use, copy, modify and distribute this RELAX NG schema
+ for SVG and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright holders
+ nor the author make no representation about the suitability of this
+ RELAX NG schema for any purpose.
+
+ It is provided "as is" without expressed or implied warranty.
+
+ Author: Masayasu Ishikawa (mimasa@w3.org)
+ $Id: svg11-basic.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+ This is the driver file for version 1.1 of the SVG Basic RELAX NG schema.
+
+ The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
+ SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd"
+
+ Use this URI to identify the default namespace:
+
+ "http://www.w3.org/2000/svg"
+ </a:documentation>
+
+ <include href="svg-viewport-attrib.rng">
+ <a:documentation>
+ Viewport Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-paint-attrib.rng">
+ <a:documentation>
+ Paint Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-opacity-attrib.rng">
+ <a:documentation>
+ Opacity Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-graphics-attrib.rng">
+ <a:documentation>
+ Graphics Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-docevents-attrib.rng">
+ <a:documentation>
+ Document Events Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-graphevents-attrib.rng">
+ <a:documentation>
+ Graphical Element Events Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-animevents-attrib.rng">
+ <a:documentation>
+ Animation Events Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-xlink-attrib.rng">
+ <a:documentation>
+ XLink Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-extresources-attrib.rng">
+ <a:documentation>
+ External Resources Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-structure.rng">
+ <a:documentation>
+ Structure Module (required)
+ </a:documentation>
+ </include>
+
+ <include href="svg-conditional.rng">
+ <a:documentation>
+ Conditional Processing Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-image.rng">
+ <a:documentation>
+ Image Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-style.rng">
+ <a:documentation>
+ Style Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-shape.rng">
+ <a:documentation>
+ Shape Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-text.rng">
+ <a:documentation>
+ Text Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-profile.rng">
+ <a:documentation>
+ Color Profile Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-gradient.rng">
+ <a:documentation>
+ Gradient Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-pattern.rng">
+ <a:documentation>
+ Pattern Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-basic-clip.rng">
+ <a:documentation>
+ Basic Clip Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-mask.rng">
+ <a:documentation>
+ Mask Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-basic-filter.rng">
+ <a:documentation>
+ Basic Filter Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-cursor.rng">
+ <a:documentation>
+ Cursor Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-hyperlink.rng">
+ <a:documentation>
+ Hyperlinking Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-view.rng">
+ <a:documentation>
+ View Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-script.rng">
+ <a:documentation>
+ Scripting Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-animation.rng">
+ <a:documentation>
+ Animation Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-font.rng">
+ <a:documentation>
+ Font Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-extensibility.rng">
+ <a:documentation>
+ Extensibility Module
+ </a:documentation>
+ </include>
+
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-tiny.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-tiny.rng
new file mode 100644
index 00000000000..6d7a30bf346
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11-tiny.rng
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE grammar SYSTEM "../relaxng.dtd">
+<grammar ns="http://www.w3.org/2000/svg" xml:lang="en"
+ xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <a:documentation>
+ RELAX NG schema for SVG 1.1 Tiny
+ file: svg11-tiny.rng
+
+ This is SVG Tiny, a proper subset of SVG.
+
+ The Scalable Vector Graphics (SVG)
+ Copyright 2001, 2002 World Wide Web Consortium
+ (Massachusetts Institute of Technology, Institut National de
+ Recherche en Informatique et en Automatique, Keio University).
+ All Rights Reserved.
+
+ Permission to use, copy, modify and distribute this RELAX NG schema
+ for SVG and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright holders
+ nor the author make no representation about the suitability of this
+ RELAX NG schema for any purpose.
+
+ It is provided "as is" without expressed or implied warranty.
+
+ Author: Masayasu Ishikawa (mimasa@w3.org)
+ $Id: svg11-tiny.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+ This is the driver file for version 1.1 of the SVG Tiny RELAX NG schema.
+
+ The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
+ SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"
+
+ Use this URI to identify the default namespace:
+
+ "http://www.w3.org/2000/svg"
+ </a:documentation>
+
+ <include href="svg-paint-attrib.rng">
+ <a:documentation>
+ Paint Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-basic-graphics-attrib.rng">
+ <a:documentation>
+ Basic Graphics Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-docevents-attrib.rng">
+ <a:documentation>
+ Document Events Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-graphevents-attrib.rng">
+ <a:documentation>
+ Graphical Element Events Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-animevents-attrib.rng">
+ <a:documentation>
+ Animation Events Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-xlink-attrib.rng">
+ <a:documentation>
+ XLink Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-extresources-attrib.rng">
+ <a:documentation>
+ External Resources Attribute Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-basic-structure.rng">
+ <a:documentation>
+ Basic Structure Module (required)
+ </a:documentation>
+ </include>
+
+ <include href="svg-conditional.rng">
+ <a:documentation>
+ Conditional Processing Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-image.rng">
+ <a:documentation>
+ Image Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-style.rng">
+ <a:documentation>
+ Style Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-shape.rng">
+ <a:documentation>
+ Shape Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-basic-text.rng">
+ <a:documentation>
+ Basic Text Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-hyperlink.rng">
+ <a:documentation>
+ Hyperlinking Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-view.rng">
+ <a:documentation>
+ View Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-script.rng">
+ <a:documentation>
+ Scripting Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-animation.rng">
+ <a:documentation>
+ Animation Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-basic-font.rng">
+ <a:documentation>
+ Basic Font Module
+ </a:documentation>
+ </include>
+
+ <include href="svg-extensibility.rng">
+ <a:documentation>
+ Extensibility Module
+ </a:documentation>
+ </include>
+
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rnc
new file mode 100644
index 00000000000..a4b74cdc9a4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rnc
@@ -0,0 +1,193 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+
+##
+## RELAX NG schema for SVG 1.1
+## file: svg11.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+##
+## The Scalable Vector Graphics (SVG)
+## Copyright 2001, 2002 World Wide Web Consortium
+## (Massachusetts Institute of Technology, Institut National de
+## Recherche en Informatique et en Automatique, Keio University).
+## All Rights Reserved.
+##
+## Permission to use, copy, modify and distribute this RELAX NG schema
+## for SVG and its accompanying documentation for any purpose and without
+## fee is hereby granted in perpetuity, provided that the above copyright
+## notice and this paragraph appear in all copies. The copyright holders
+## nor the author make no representation about the suitability of this
+## RELAX NG schema for any purpose.
+##
+## It is provided "as is" without expressed or implied warranty.
+##
+## Author: Masayasu Ishikawa (mimasa@w3.org)
+## $Id: svg11.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+## This is the driver file for version 1.1 of the SVG RELAX NG schema.
+##
+## The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+##
+## PUBLIC "-//W3C//DTD SVG 1.1//EN"
+## SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
+##
+## Use this URI to identify the default namespace:
+##
+## "http://www.w3.org/2000/svg"
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## Container Attribute Module
+ ##
+ include "svg-container-attrib.rnc" inherit = ns1
+
+ ##
+ ## Viewport Attribute Module
+ ##
+ include "svg-viewport-attrib.rnc" inherit = ns1
+
+ ##
+ ## Paint Attribute Module
+ ##
+ include "svg-paint-attrib.rnc" inherit = ns1
+
+ ##
+ ## Paint Opacity Attribute Module
+ ##
+ include "svg-opacity-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphics Attribute Module
+ ##
+ include "svg-graphics-attrib.rnc" inherit = ns1
+
+ ##
+ ## Document Events Attribute Module
+ ##
+ include "svg-docevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphical Element Events Attribute Module
+ ##
+ include "svg-graphevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Animation Events Attribute Module
+ ##
+ include "svg-animevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## XLink Attribute Module
+ ##
+ include "svg-xlink-attrib.rnc" inherit = ns1
+
+ ##
+ ## External Resources Attribute Module
+ ##
+ include "svg-extresources-attrib.rnc" inherit = ns1
+
+ ##
+ ## Structure Module (required)
+ ##
+ include "svg-structure.rnc" inherit = ns1
+
+ ##
+ ## Conditional Processing Module
+ ##
+ include "svg-conditional.rnc" inherit = ns1
+
+ ##
+ ## Image Module
+ ##
+ include "svg-image.rnc" inherit = ns1
+
+ ##
+ ## Style Module
+ ##
+ include "svg-style.rnc" inherit = ns1
+
+ ##
+ ## Shape Module
+ ##
+ include "svg-shape.rnc" inherit = ns1
+
+ ##
+ ## Text Module
+ ##
+ include "svg-text.rnc" inherit = ns1
+
+ ##
+ ## Marker Module
+ ##
+ include "svg-marker.rnc" inherit = ns1
+
+ ##
+ ## Color Profile Module
+ ##
+ include "svg-profile.rnc" inherit = ns1
+
+ ##
+ ## Gradient Module
+ ##
+ include "svg-gradient.rnc" inherit = ns1
+
+ ##
+ ## Pattern Module
+ ##
+ include "svg-pattern.rnc" inherit = ns1
+
+ ##
+ ## Clip Module
+ ##
+ include "svg-clip.rnc" inherit = ns1
+
+ ##
+ ## Mask Module
+ ##
+ include "svg-mask.rnc" inherit = ns1
+
+ ##
+ ## Filter Module
+ ##
+ include "svg-filter.rnc" inherit = ns1
+
+ ##
+ ## Cursor Module
+ ##
+ include "svg-cursor.rnc" inherit = ns1
+
+ ##
+ ## Hyperlinking Module
+ ##
+ include "svg-hyperlink.rnc" inherit = ns1
+
+ ##
+ ## View Module
+ ##
+ include "svg-view.rnc" inherit = ns1
+
+ ##
+ ## Scripting Module
+ ##
+ include "svg-script.rnc" inherit = ns1
+
+ ##
+ ## Animation Module
+ ##
+ include "svg-animation.rnc" inherit = ns1
+
+ ##
+ ## Font Module
+ ##
+ include "svg-font.rnc" inherit = ns1
+
+ ##
+ ## Extensibility Module
+ ##
+ include "svg-extensibility.rnc" inherit = ns1
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rng b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rng
new file mode 100644
index 00000000000..4b643a943b3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/LaTeXML/svg11.rng
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ RELAX NG schema for SVG 1.1
+ file: svg11.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+
+ The Scalable Vector Graphics (SVG)
+ Copyright 2001, 2002 World Wide Web Consortium
+ (Massachusetts Institute of Technology, Institut National de
+ Recherche en Informatique et en Automatique, Keio University).
+ All Rights Reserved.
+
+ Permission to use, copy, modify and distribute this RELAX NG schema
+ for SVG and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright holders
+ nor the author make no representation about the suitability of this
+ RELAX NG schema for any purpose.
+
+ It is provided "as is" without expressed or implied warranty.
+
+ Author: Masayasu Ishikawa (mimasa@w3.org)
+ $Id: svg11.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+ This is the driver file for version 1.1 of the SVG RELAX NG schema.
+
+ The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
+
+ Use this URI to identify the default namespace:
+
+ "http://www.w3.org/2000/svg"
+ </a:documentation>
+ <include href="svg-container-attrib.rng">
+ <a:documentation>
+ Container Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-viewport-attrib.rng">
+ <a:documentation>
+ Viewport Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-paint-attrib.rng">
+ <a:documentation>
+ Paint Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-opacity-attrib.rng">
+ <a:documentation>
+ Paint Opacity Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-graphics-attrib.rng">
+ <a:documentation>
+ Graphics Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-docevents-attrib.rng">
+ <a:documentation>
+ Document Events Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-graphevents-attrib.rng">
+ <a:documentation>
+ Graphical Element Events Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-animevents-attrib.rng">
+ <a:documentation>
+ Animation Events Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-xlink-attrib.rng">
+ <a:documentation>
+ XLink Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-extresources-attrib.rng">
+ <a:documentation>
+ External Resources Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-structure.rng">
+ <a:documentation>
+ Structure Module (required)
+ </a:documentation>
+ </include>
+ <include href="svg-conditional.rng">
+ <a:documentation>
+ Conditional Processing Module
+ </a:documentation>
+ </include>
+ <include href="svg-image.rng">
+ <a:documentation>
+ Image Module
+ </a:documentation>
+ </include>
+ <include href="svg-style.rng">
+ <a:documentation>
+ Style Module
+ </a:documentation>
+ </include>
+ <include href="svg-shape.rng">
+ <a:documentation>
+ Shape Module
+ </a:documentation>
+ </include>
+ <include href="svg-text.rng">
+ <a:documentation>
+ Text Module
+ </a:documentation>
+ </include>
+ <include href="svg-marker.rng">
+ <a:documentation>
+ Marker Module
+ </a:documentation>
+ </include>
+ <include href="svg-profile.rng">
+ <a:documentation>
+ Color Profile Module
+ </a:documentation>
+ </include>
+ <include href="svg-gradient.rng">
+ <a:documentation>
+ Gradient Module
+ </a:documentation>
+ </include>
+ <include href="svg-pattern.rng">
+ <a:documentation>
+ Pattern Module
+ </a:documentation>
+ </include>
+ <include href="svg-clip.rng">
+ <a:documentation>
+ Clip Module
+ </a:documentation>
+ </include>
+ <include href="svg-mask.rng">
+ <a:documentation>
+ Mask Module
+ </a:documentation>
+ </include>
+ <include href="svg-filter.rng">
+ <a:documentation>
+ Filter Module
+ </a:documentation>
+ </include>
+ <include href="svg-cursor.rng">
+ <a:documentation>
+ Cursor Module
+ </a:documentation>
+ </include>
+ <include href="svg-hyperlink.rng">
+ <a:documentation>
+ Hyperlinking Module
+ </a:documentation>
+ </include>
+ <include href="svg-view.rng">
+ <a:documentation>
+ View Module
+ </a:documentation>
+ </include>
+ <include href="svg-script.rng">
+ <a:documentation>
+ Scripting Module
+ </a:documentation>
+ </include>
+ <include href="svg-animation.rng">
+ <a:documentation>
+ Animation Module
+ </a:documentation>
+ </include>
+ <include href="svg-font.rng">
+ <a:documentation>
+ Font Module
+ </a:documentation>
+ </include>
+ <include href="svg-extensibility.rng">
+ <a:documentation>
+ Extensibility Module
+ </a:documentation>
+ </include>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/Makefile b/Master/texmf-dist/source/latex/stex/schema/rnc/Makefile
new file mode 100644
index 00000000000..b5848cdf65c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/Makefile
@@ -0,0 +1,6 @@
+all:
+
+clean:
+ rm -f *~
+distclean: clean
+ rm -f *.dtd *.xsd *.rng
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/metadata.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/metadata.rnc
new file mode 100644
index 00000000000..18f2461ec6c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/metadata.rnc
@@ -0,0 +1,41 @@
+# /=====================================================================\
+# | Metadata for LaTeXML |
+# |=====================================================================|
+# | Not Part of LaTeXML: |
+# | Copyright (c) 2005 Michael Kohlhase |
+# | Released under the Gnu Public License (GPL) |
+# |=====================================================================|
+# | Michael Kohlhase <m.kohlhase@iu-bremen.de> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+dc.class = Creator | Contributor | Title | Subject |
+ Description | Publisher | Date | Type |
+ Identifier | Source | Language | Relation |
+ Rights | license
+
+metadata = element metadata {Common.attribs,(dc.class)*}
+
+
+Creator = element Creator {Common.attribs,(text|Inline.class)*}
+Contributor = element Contributor {Common.attribs,(text|Inline.class)*}
+Title = element Title {Common.attribs,(text|Inline.class)*}
+Subject = element Subject {Common.attribs,(text|Inline.class)*}
+Description = element Description {Common.attribs,(text|Inline.class)*}
+Publisher = element Publisher {Common.attribs,(text|Inline.class)*}
+Date = element Date {Common.attribs,(text|Inline.class)*}
+Type = element Type {Common.attribs,(text|Inline.class)*}
+Identifier = element Identifier {Common.attribs,(text|Inline.class)*}
+Source = element Source {Common.attribs,(text|Inline.class)*}
+Language = element Language {Common.attribs,(text|Inline.class)*}
+Relation = element Relation {Common.attribs,(text|Inline.class)*}
+Rights = element Rights {Common.attribs,(text | Inline.class)*}
+
+license = element license {Common.attribs,(attribution|noncommercial|sharealike|noderivativeworks)*}
+attribution = element attribution {Common.attribs}
+noncommercial = element noncommercial {Common.attribs}
+sharealike = element sharealike {Common.attribs}
+noderivativeworks = element noderivativeworks {Common.attribs}
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc+ltxml.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc+ltxml.rnc
new file mode 100644
index 00000000000..20616411787
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc+ltxml.rnc
@@ -0,0 +1,149 @@
+# A RelaxNG for Open Mathematical documents (OMDoc 1.2) with LaTeXML
+# $Id: omdoc+ltxml.rnc 1884 2011-09-09 12:45:49Z kohlhase $
+# $HeadURL: https://svn.kwarc.info/repos/stex/trunk/schema/rnc/omdoc+ltxml.rnc $
+# See the documentation and examples at http://omdoc.org
+# (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+## we include the OMDoc Schema, but we allow the sectioning elements defined below
+## as document structuring elements as well.
+include "omdoc/omdoc.rnc" {docstruct.class = omgroup* & lechapter*}
+
+## we extend the Math Objects by the ones introduced by LaTeXML
+mobj |= grammar {
+ include "LaTeXML/LaTeXML-common.rnc"
+ include "LaTeXML/LaTeXML-math.rnc"
+ start = Math}
+
+## we extend the model of rendering elements by XMath, and we extend the XMath there, so
+## that we can cope with piecewise and friends at the intermediate level.
+render.class |= grammar {
+ include "LaTeXML/LaTeXML.rnc"
+ {#XMath.class &= XMRow* & XMCell*
+# XMRow_model &= element XMTok {attribute role {xsd:string {pattern = "ID"}}}
+# XMArray_model &= element XMTok {attribute role {xsd:string {pattern = "ID"}}}
+ XMTok_attributes &= parent ntn.attrib
+ start = Math | \text}}
+
+## we extend the core structural classes of OMDoc with various LaTeXML counterparts. These
+## are usful, since sTeX defers to LaTeXML to generate these, and in a later pass (the
+## XSLTs) replaces them by their OMDoc counterparts. The rules below, have another
+## purpose: in the OMDoc schema (which is the primary one here, we use the & operator for
+## making classes, whereas the LaTeXML schema uses the less flexible | operator. Therefore
+## we need to construct conjunctive extensions in start macro.
+
+inline.class &= grammar {
+ include "LaTeXML/LaTeXML.rnc"
+ {Common.attributes &=parent id.attribs
+ Inline.class = parent inline.class
+ text_model = parent inline.model
+ start=bibref* & break* & ref* & cite* & \text* & emph*}}
+
+plike.class &= grammar {
+ include "LaTeXML/LaTeXML.rnc"
+ {Common.attributes =parent id.attribs
+ Inline.class = parent inline.class
+ Block.class = parent plike.class
+# Flow.class = parent flow.class
+ text_model = parent inline.model
+ listingblock_model = parent plike.class
+ start = p* & tabular* &
+ equation* & equationgroup* &
+ figure* & graphics* & verbatim* & listingblock* & listing* &
+ itemize* & enumerate* & description*}}
+
+
+tikz = element tikz {text}
+
+## we allow various LaTeXML elements as a top-level elements,
+## they will be converted by XSLT later
+omdoc.class &= grammar {include "LaTeXML/LaTeXML.rnc" {
+ Common.attributes &=parent id.attribs
+ Inline.class = parent inline.class
+ Block.class = parent plike.class
+ Para.class = parent omdoc.class
+# Flow.class = parent flow.class
+ text_model = parent inline.model
+ listingblock_model = parent plike.class
+ start= para* & figure* & table* & listing* &
+ itemize* & enumerate* & description*}}
+
+backmatter &= grammar {include "LaTeXML/LaTeXML.rnc" {
+ Common.attributes &=parent id.attribs
+ Inline.class = parent inline.class
+ Block.class = parent plike.class
+ Para.class = parent omdoc.class
+# Flow.class = parent flow.class
+ text_model = parent inline.model
+ listingblock_model = parent plike.class
+ start= bibliography*}}
+
+
+## we prepare some nested content models for sectioning elements
+lesubparagraph = subparagraph*
+leparagraph = paragraph* & lesubparagraph
+lesubsubsection = subsubsection* & leparagraph
+lesubsection = subsection* & lesubsubsection
+lesection = section* & lesubsection
+lechapter = chapter* & lesection
+
+## they need to be able to nest theories transparently
+theory.chapter = element theory {theory.attribs &
+ metadata.class &
+ omdoc.class &
+ constitutive.class &
+ lesection}
+theory.section = element theory {theory.attribs &
+ metadata.class &
+ omdoc.class &
+ constitutive.class &
+ lesubsection}
+theory.subsection = element theory {theory.attribs &
+ metadata.class &
+ omdoc.class &
+ constitutive.class &
+ lesubsubsection}
+theory.subsubsection = element theory {theory.attribs &
+ metadata.class &
+ omdoc.class &
+ constitutive.class &
+ leparagraph}
+theory.paragraph = element theory {theory.attribs &
+ metadata.class &
+ omdoc.class &
+ constitutive.class &
+ lesubparagraph}
+theory.subparagraph = element theory {theory.attribs &
+ metadata.class &
+ omdoc.class &
+ constitutive.class}
+
+sectional.attribs = id.attribs
+
+## and now the elemens themselves
+chapter = element chapter {sectional.attribs &
+ metadata.class &
+ omdoc.class &
+ theory.chapter*}
+section= element section{sectional.attribs &
+ metadata.class &
+ omdoc.class &
+ theory.section*}
+subsection= element subsection {sectional.attribs &
+ metadata.class &
+ omdoc.class &
+ theory.subsection*}
+subsubsection= element subsubsection {sectional.attribs &
+ metadata.class &
+ omdoc.class &
+ theory.subsubsection*}
+paragraph= element paragraph {sectional.attribs &
+ metadata.class &
+ omdoc.class &
+ theory.paragraph*}
+subparagraph= element subparagraph {sectional.attribs &
+ metadata.class &
+ omdoc.class &
+ theory.subparagraph*}
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/MARCRelators.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/MARCRelators.rnc
new file mode 100644
index 00000000000..e3d7c72dbd8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/MARCRelators.rnc
@@ -0,0 +1,23 @@
+# the MARC relator set; see http://www.loc.gov/marc/relators
+MARCRelators =
+ "act" | "adp" | "aft" | "ann" | "ant" | "app" | "aqt" |
+ "arc" | "arr" | "art" | "asg" | "asn" | "att" | "auc" | "aud" | "aui" |
+ "aus" | "aut" | "bdd" | "bjd" | "bkd" | "bkp" | "bnd" | "bpd" | "bsl" |
+ "ccp" | "chr" | "clb" | "cli" | "cll" | "clt" | "cmm" | "cmp" | "cmt" |
+ "cnd" | "cns" | "coe" | "col" | "com" | "cos" | "cot" | "cov" | "cpc" |
+ "cpe" | "cph" | "cpl" | "cpt" | "cre" | "crp" | "crr" | "csl" | "csp" |
+ "cst" | "ctb" | "cte" | "ctg" | "ctr" | "cts" | "ctt" | "cur" | "cwt" |
+ "dfd" | "dfe" | "dft" | "dgg" | "dis" | "dln" | "dnc" | "dnr" | "dpc" |
+ "dpt" | "drm" | "drt" | "dsr" | "dst" | "dte" | "dto" | "dub" | "edt" |
+ "egr" | "elt" | "eng" | "etr" | "exp" | "fac" | "flm" | "fmo" | "fnd" |
+ "fpy" | "frg" | "hnr" | "hst" | "ill" | "ilu" | "ins" | "inv" | "itr" |
+ "ive" | "ivr" | "lbt" | "lee" | "lel" | "len" | "let" | "lie" | "lil" |
+ "lit" | "lsa" | "lse" | "lso" | "ltg" | "lyr" | "mdc" | "mod" | "mon" |
+ "mrk" | "mte" | "mus" | "nrt" | "opn" | "org" | "orm" | "oth" | "own" |
+ "pat" | "pbd" | "pbl" | "pfr" | "pht" | "plt" | "pop" | "ppm" | "prc" |
+ "prd" | "prf" | "prg" | "prm" | "pro" | "prt" | "pta" | "pte" | "ptf" |
+ "pth" | "ptt" | "rbr" | "rce" | "rcp" | "red" | "ren" | "res" | "rev" |
+ "rpt" | "rpy" | "rse" | "rsp" | "rst" | "rth" | "rtm" | "sad" | "sce" |
+ "scl" | "scr" | "sec" | "sgn" | "sng" | "spk" | "spn" | "spy" | "srv" |
+ "stl" | "stn" | "str" | "ths" | "trc" | "trl" | "tyd" | "tyg" | "voc" |
+ "wam" | "wdc" | "wde" | "wit"
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/Makefile b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/Makefile
new file mode 100644
index 00000000000..0a4cef88b07
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/Makefile
@@ -0,0 +1,11 @@
+RNC = $(shell ls *.rnc)
+
+all: #$(RNG) #$(XSD) #omdoc.xsd $(TARGET.dtd)
+
+clean:
+ rm -f *~
+distclean: clean
+
+# no longer adequate
+# install: $(SRC.rnc) $(SRC.rng) #$(SRC.xsd)
+# cp $(RNC) $(RNG) $(HOME)/vc/svn/omdoc.org/www/rnc
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/README b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/README
new file mode 100644
index 00000000000..d9f6d4f0209
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/README
@@ -0,0 +1,3 @@
+This directory contains a RelaxNG schema for OMDoc in compact form.
+It includes parts of the XHTML schema slightly edited for embeddability and
+the MathML3 schema in original form.
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/arith1.omdoc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/arith1.omdoc
new file mode 100644
index 00000000000..d7aa94849ff
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/arith1.omdoc
@@ -0,0 +1,1672 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<omdoc xml:id="arith1-omdoc" version="1.3"
+ modules="CD"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns"
+ xmlns:om="http://www.openmath.org/OpenMath"
+ xmlns:m="http://www.w3.org/1998/Math/MathML"
+ xmlns:o="http://omdoc.org/ns"
+ xmlns:xh="http://www.w3.org/1999/xhtml"
+ xmlns="http://omdoc.org/ns">
+
+<metadata>
+ <dc:title>The OpenMath Content Dictionary arith1.ocd in OMDoc form</dc:title>
+ <dc:creator role="trl">Michael Kohlhase</dc:creator>
+ <dc:creator role="ant">The OpenMath Society</dc:creator>
+ <dc:date action="updated">2004-07-13</dc:date>
+ <dc:source>Derived from the OpenMath CD http://www.openmath.org/cd/arith1.ocd.</dc:source>
+ <dc:type>Text</dc:type>
+ <dc:format>application/omdoc+xml</dc:format>
+ <dc:rights>
+ <xh:p>Copyright (c) 2000-2002 Michael Kohlhase;
+ This OMDoc content dictionary is released under the OpenMath license:
+ http://monet.nag.co.uk/openmath/cdfiles/license.html
+ </xh:p>
+ </dc:rights>
+ <dc:description><xh:p>This CD defines symbols for common arithmetic functions.</xh:p></dc:description>
+</metadata>
+
+<theory xml:id="arith1">
+ <imports from="integer1.omdoc#integer1"/>
+ <imports from="interval1.omdoc#interval1"/>
+ <imports from="fns1.omdoc#fns1"/>
+ <imports from="relation1.omdoc#relation1"/>
+
+<symbol name="lcm" xml:id="lcm">
+ <metadata>
+ <dc:description>
+ <xh:p>The symbol to represent the n-ary function to return the
+ <term cd="arith1" name="lcm" role="definiens">least common multiple</term> of its arguments.
+ </xh:p>
+ </dc:description>
+ <dc:description xml:lang="de">
+ <xh:p>
+ Das Symbol f"ur das <term cd="arith1" name="lcm" role="definiens">kleinste
+ gemeinsame Vielfache</term> (als n-aere Funktion).
+ </xh:p>
+ </dc:description>
+ <dc:subject>lcm</dc:subject>
+ <dc:subject xml:lang="de">kgV</dc:subject>
+ </metadata>
+ <type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMA>
+ <OMS name="nassoc" cd="sts"/>
+ <OMV name="SemiGroup"/>
+ </OMA>
+ <OMV name="SemiGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="lcm"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">lcm</m:csymbol>
+ </prototype>
+ <rendering xml:lang="en">
+ <m:mo>lcm</m:mo>
+ </rendering>
+ <rendering xml:lang="de">
+ <m:mo>kgV</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-lcm">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+<assertion xml:id="lcm-prop-1" type="lemma">
+ <CMP>
+ <xh:p>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMR href="lcm-prop-1.O"/></OMOBJ>
+ for all integers <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="b"/></OMOBJ>.
+ </xh:p>
+ </CMP>
+ <CMP xml:lang="de">
+ <xh:p>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR
+ href="lcm-prop-1.O"/></OMOBJ> fuer alle ganzen Zahlen <OMOBJ
+ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ> und <OMOBJ
+ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ>.
+ </xh:p>
+ </CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA id="lcm-prop-1.O">
+ <OMS cd="relation1" name="eq"/>
+ <OMA><OMS cd="arith1" name="lcm"/><OMV name="a"/><OMV name="b"/></OMA>
+ <OMA>
+ <OMS cd="arith1" name="divide"/>
+ <OMA><OMS cd="arith1" name="times"/><OMV name="a"/><OMV name="b"/></OMA>
+ <OMA><OMS cd="arith1" name="gcd"/><OMV name="a"/><OMV name="b"/></OMA>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+ </FMP>
+</assertion>
+
+<assertion xml:id="lcm-prop-3" type="lemma">
+ <CMP>
+ <xh:p>
+ For all integers a,b there is no <OMOBJ
+ xmlns="http://www.openmath.org/OpenMath"><OMR href="#lcm-prop-3.1"/></OMOBJ> such
+ that <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR
+ href="lcm-prop-3.2"/></OMOBJ> and <OMOBJ
+ xmlns="http://www.openmath.org/OpenMath"><OMR href="#lcm-prop-3.3"/></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR
+ href="lcm-prop-3.4"/></OMOBJ>.
+ </xh:p>
+ </CMP>
+ <CMP xml:lang="de">
+ <xh:p>
+ Fuer alle ganzen Zahlen a,b gibt es kein <OMOBJ
+ xmlns="http://www.openmath.org/OpenMath"><OMR href="#lcm-prop-3.1"/></OMOBJ> mit
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR
+ href="lcm-prop-3.2"/></OMOBJ> und <OMOBJ
+ xmlns="http://www.openmath.org/OpenMath"><OMR href="#lcm-prop-3.3"/></OMOBJ> und
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR
+ href="lcm-prop-3.4"/></OMOBJ>.
+ </xh:p>
+ </CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="logic1" name="implies"/>
+ <OMA>
+ <OMS cd="logic1" name="and"/>
+ <OMA>
+ <OMS cd="set1" name="in"/>
+ <OMV name="a"/>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ <OMA>
+ <OMS cd="set1" name="in"/>
+ <OMV name="b"/>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="logic1" name="not"/>
+ <OMBIND>
+ <OMS cd="quant1" name="exists"/>
+ <OMBVAR>
+ <OMV name="c"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="logic1" name="and"/>
+ <OMA id="lcm-prop-3.1">
+ <OMS cd="relation1" name="gt"/>
+ <OMV name="c"/>
+ <OMI>0</OMI>
+ </OMA>
+ <OMA id="lcm-prop-3.2">
+ <OMS cd="integer1" name="factorof"/>
+ <OMV name="a"/>
+ <OMV name="c"/>
+ </OMA>
+ <OMA id="lcm-prop-3.3">
+ <OMS cd="integer1" name="factorof"/>
+ <OMV name="b"/>
+ <OMV name="c"/>
+ </OMA>
+ <OMA id="lcm-prop-3.4">
+ <OMS cd="relation1" name="lt"/>
+ <OMV name="c"/>
+ <OMA>
+ <OMS cd="arith1" name="lcm"/>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+<symbol name="gcd" xml:id="gcd">
+ <metadata>
+ <dc:description>
+ <xh:p>
+ The symbol to represent the n-ary function to return the gcd (greatest
+ common divisor) of its arguments.
+ </xh:p>
+ </dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMA>
+ <OMS name="nassoc" cd="sts"/>
+ <OMV name="SemiGroup"/>
+ </OMA>
+ <OMV name="SemiGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="gcd"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">gcd</m:csymbol>
+ </prototype>
+ <rendering xml:lang="en">
+ <m:mo>gcd</m:mo>
+ </rendering>
+ <rendering xml:lang="de">
+ <m:mo>ggT</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-gcd">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+<assertion xml:id="gcd-prop-1" type="lemma">
+ <CMP>
+ <xh:p>
+ For all integers a,b there is no c
+ such that <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#gcd-prop-1.1"/></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#gcd-prop-1.2"/></OMOBJ> but
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#gcd-prop-1.3"/></OMOBJ>.
+
+ Note that this implies that
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="relation1" name="gt"/>
+ <OMA><OMS cd="arith1" name="gcd"/><OMV name="a"/><OMV name="b"/></OMA>
+ <OMI>0</OMI>
+ </OMA>
+ </OMOBJ>.
+ </xh:p>
+</CMP>
+<FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="logic1" name="implies"/>
+ <OMA>
+ <OMS cd="logic1" name="and"/>
+ <OMA>
+ <OMS cd="set1" name="in"/>
+ <OMV name="a"/>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ <OMA>
+ <OMS cd="set1" name="in"/>
+ <OMV name="b"/>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="logic1" name="not"/>
+ <OMBIND>
+ <OMS cd="quant1" name="exists"/>
+ <OMBVAR>
+ <OMV name="c"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="logic1" name="and"/>
+ <OMA id="gcd-prop-1.1">
+ <OMS cd="set1" name="in"/>
+ <OMA>
+ <OMS cd="arith1" name="divide"/>
+ <OMV name="a"/>
+ <OMV name="c"/>
+ </OMA>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ <OMA id="gcd-prop-1.2">
+ <OMS cd="set1" name="in"/>
+ <OMA>
+ <OMS cd="arith1" name="divide"/>
+ <OMV name="b"/>
+ <OMV name="c"/>
+ </OMA>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ <OMA id="gcd-prop-1.3">
+ <OMS cd="relation1" name="gt"/>
+ <OMV name="c"/>
+ <OMA>
+ <OMS cd="arith1" name="gcd"/>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+</FMP>
+</assertion>
+
+<example xml:id="gcd-ex-3" type="for" for="#gcd">
+ <CMP>
+ <xh:p>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#gcd-ex-3.1"/></OMOBJ>
+ </xh:p>
+ </CMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA id="gcd-ex-3.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="gcd"/>
+ <OMI> 6 </OMI>
+ <OMI> 9 </OMI>
+ </OMA>
+ <OMI> 3 </OMI>
+ </OMA>
+ </OMOBJ>
+</example>
+</theory>
+
+<symbol name="plus" xml:id="plus">
+ <metadata>
+ <dc:description><xh:p>The symbol representing an n-ary commutative function plus.</xh:p></dc:description>
+ <dc:subject>plus</dc:subject>
+ </metadata>
+ <type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMA>
+ <OMS name="nassoc" cd="sts"/>
+ <OMV name="AbelianSemiGroup"/>
+ </OMA>
+ <OMV name="AbelianSemiGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="plus" o:cr="fun"/>
+ <exprlist name="args">
+ <expr name="arg"/>
+ </exprlist>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">plus</m:csymbol>
+ <exprlist name="args">
+ <expr name="arg"/>
+ </exprlist>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:mo o:egroup="fence" fence="true">(</m:mo>
+ <iterate name="args" precedence="500">
+ <separator><m:mo o:cr="fun">+</m:mo></separator>
+ <render name="arg"/>
+ </iterate>
+ <m:mo o:egroup="fence" fence="true">)</m:mo>
+ </m:mrow>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="plus"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">plus</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>+</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-plus">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+<assertion xml:id="plus-prop-1" type="lemma">
+ <CMP><xh:p>For all <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ> and <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="b"/></OMOBJ>,
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#plus-prop-1.1"/></OMOBJ>
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMBVAR>
+ <OMA id="plus-prop-1.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMV name="b"/>
+ <OMV name="a"/>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+<symbol name="unary_minus" xml:id="unary_minus">
+ <metadata>
+ <dc:description><xh:p> This symbol denotes unary minus, i.e. the additive inverse.</xh:p></dc:description><dc:subject>unary minus</dc:subject></metadata>
+ <type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMV name="AbelianGroup"/>
+ <OMV name="AbelianGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="unary_minus" o:cr="fun"/>
+ <expr name="arg"/>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">unary_minus</m:csymbol>
+ <expr name="arg"/>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:mo o:cr="fun">-</m:mo>
+ <m:mo o:egroup="fence" fence="true">(</m:mo>
+ <render name="arg"/>
+ <m:mo o:egroup="fence" fence="true">)</m:mo>
+ </m:mrow>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="unary_minus"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">unary_minus</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>-</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-uminus">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+<assertion xml:id="unary_minus-prop-1" type="lemma">
+ <CMP><xh:p><OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#unary_minus-prop-1.1"/></OMOBJ> for all
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ </OMBVAR>
+ <OMA id="unary_minus-prop-1.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMV name="a"/>
+ <OMA>
+ <OMS cd="arith1" name="unary_minus"/>
+ <OMV name="a"/>
+ </OMA>
+ </OMA>
+ <OMS cd="alg1" name="zero"/>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+
+<symbol name="minus" xml:id="minus">
+ <metadata>
+ <dc:description><xh:p> The symbol representing a binary minus function. This is equivalent to
+ adding the additive inverse.
+ </xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMV name="AbelianGroup"/>
+ <OMV name="AbelianGroup"/>
+ <OMV name="AbelianGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="minus" o:cr="fun"/>
+ <expr name="arg1"/>
+ <expr name="arg2"/>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">minus</m:csymbol>
+ <expr name="arg1"/>
+ <expr name="arg2"/>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:mo o:egroup="fence" fence="true">(</m:mo>
+ <render name="arg1" precedence="500"/>
+ <m:mo o:cr="fun">-</m:mo>
+ <render name="arg2" precedence="500"/>
+ <m:mo o:egroup="fence" fence="true">)</m:mo>
+ </m:mrow>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="minus"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">minus</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>-</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-minus">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+
+<assertion xml:id="minus-prop-1" type="lemma">
+ <CMP><xh:p>
+ For all <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ> and <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="b"/></OMOBJ>,
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#minus-prop-1.1"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMBVAR>
+ <OMA id="minus-prop-1.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="minus"/>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMV name="a"/>
+ <OMA>
+ <OMS cd="arith1" name="unary_minus"/>
+ <OMV name="b"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+<symbol name="times" xml:id="times">
+ <metadata>
+ <dc:description><xh:p> The symbol representing an n-ary multiplication function.</xh:p></dc:description><dc:subject>times</dc:subject></metadata>
+ <type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMA>
+ <OMS name="nassoc" cd="sts"/>
+ <OMV name="SemiGroup"/>
+ </OMA>
+ <OMV name="SemiGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="times"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">times</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>⁢</m:mo>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="times" o:cr="fun"/>
+ <exprlist name="args">
+ <expr name="arg"/>
+ </exprlist>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">times</m:csymbol>
+ <exprlist name="args">
+ <expr name="arg"/>
+ </exprlist>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:mo o:egroup="fence" fence="true">(</m:mo>
+ <iterate name="args" precedence="400">
+ <separator>
+ <m:mo o:cr="fun">⁢</m:mo>
+ </separator>
+ <render name="arg"/>
+ </iterate>
+ <m:mo o:egroup="fence" fence="true">)</m:mo>
+ </m:mrow>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-times">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+<imports from="linalg2.omdoc#linalg2"/>
+
+<example xml:id="times-ex-1" type="for" for="#times">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath" style="display:block">
+ <OMA>
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrix"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 1 </OMI>
+ <OMI> 2 </OMI>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 3 </OMI>
+ <OMI> 4 </OMI>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrix"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 5 </OMI>
+ <OMI> 6 </OMI>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 7 </OMI>
+ <OMI> 8 </OMI>
+ </OMA>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrix"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 19 </OMI>
+ <OMI> 20 </OMI>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 43 </OMI>
+ <OMI> 50 </OMI>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+</example>
+
+<assertion xml:id="times-prop-2" type="lemma">
+ <CMP><xh:p> for all <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ> and <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="b"/></OMOBJ>,
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#times-prop-2.1"/></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#times-prop-2.2"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="logic1" name="and"/>
+ <OMA id="times-prop-2.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="a"/>
+ <OMS cd="alg1" name="zero"/>
+ </OMA>
+ <OMS cd="alg1" name="zero"/>
+ </OMA>
+ <OMA id="times-prop-2.2">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="a"/>
+ <OMA>
+ <OMS cd="arith1" name="minus"/>
+ <OMV name="b"/>
+ <OMS cd="alg1" name="one"/>
+ </OMA>
+ </OMA>
+ <OMV name="a"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+<assertion xml:id="times-prop-4" type="lemma">
+ <CMP><xh:p>For all <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ>,
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="b"/></OMOBJ>,
+ and <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="a"/></OMOBJ>, we
+ have
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#times-prop-4.1"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ <OMV name="c"/>
+ </OMBVAR>
+ <OMA id="times-prop-4.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="a"/>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMV name="b"/>
+ <OMV name="c"/>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="a"/>
+ <OMV name="b"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="a"/>
+ <OMV name="c"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+<symbol name="divide" xml:id="divide">
+<metadata>
+<dc:description><xh:p>
+ This symbol represents a (binary) division function denoting the first argument
+ right-divided by the second, i.e. divide(a,b)=a*inverse(b). It is the
+ inverse of the multiplication function defined by the symbol times in this CD.
+</xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMV name="AbelianGroup"/>
+ <OMV name="AbelianGroup"/>
+ <OMV name="AbelianGroup"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="divide"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">divide</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>/</m:mo>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="divide"/>
+ <expr name="arg1"/>
+ <expr name="arg2"/>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1">divide</m:csymbol>
+ <expr name="arg1"/>
+ <expr name="arg2"/>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mfrac>
+ <render name="arg1"/>
+ <render name="arg2"/>
+ </m:mfrac>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-divide">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+<assertion xml:id="divide-prop-1" type="lemma">
+ <CMP><xh:p>If <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#divide-prop-1.1"/></OMOBJ> then
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#divide-prop-1.2"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="logic1" name="implies"/>
+ <OMA id="divide-prop-1.1">
+ <OMS cd="relation1" name="neq"/>
+ <OMV name="a"/>
+ <OMS cd="alg1" name="zero"/>
+ </OMA>
+ <OMA id="divide-prop-1.2">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="divide"/>
+ <OMV name="a"/>
+ <OMV name="a"/>
+ </OMA>
+ <OMS cd="alg1" name="one"/>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+<symbol name="power" xml:id="power">
+<metadata>
+<dc:description><xh:p>
+ This symbol represents a power function. The first argument is raised
+ to the power of the second argument. When the second argument is not
+ an integer, powering is defined in terms of exponentials and
+ logarithms for the complex and real numbers.
+ This operator can represent general powering.
+</xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMS name="NumericalValue" cd="sts"/>
+ <OMS name="NumericalValue" cd="sts"/>
+ <OMS name="NumericalValue" cd="sts"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="power"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">power</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>power</m:mo>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="power"/>
+ <expr name="arg1"/>
+ <expr name="arg2"/>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1">power</m:csymbol>
+ <expr name="arg1"/>
+ <expr name="arg2"/>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:msup>
+ <render name="arg1"/>
+ <render name="arg2"/>
+ </m:msup>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-power">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+<imports from="linalg2.omdoc#linalg2"/>
+<imports from="nums1.omdoc#nums1"/>
+
+<assertion xml:id="power-prop-1" type="lemma">
+ <CMP><xh:p><OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#power-prop-1.1"/></OMOBJ> implies
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#power-prop-1.2"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="logic1" name="implies"/>
+ <OMA id="power-prop-1.1">
+ <OMS cd="set1" name="in"/>
+ <OMV name="x"/>
+ <OMS cd="setname1" name="C"/>
+ </OMA>
+ <OMA id="power-prop-1.2">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS name="power" cd="arith1"/>
+ <OMV name="x"/>
+ <OMV name="a"/>
+ </OMA>
+ <OMA>
+ <OMS name="exp" cd="transc1"/>
+ <OMA>
+ <OMS name="times" cd="arith1"/>
+ <OMV name="a"/>
+ <OMA>
+ <OMS name="ln" cd="transc1"/>
+ <OMV name="x"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+ </FMP>
+</assertion>
+<assertion xml:id="power-prop-3" type="lemma">
+ <CMP><xh:p>If <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="n"/></OMOBJ> is an integer then
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#power-prop-3.1"/></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#power-prop-3.2"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="logic1" name="implies"/>
+ <OMA>
+ <OMS cd="set1" name="in"/>
+ <OMV name="n"/>
+ <OMS cd="setname1" name="Z"/>
+ </OMA>
+ <OMA>
+ <OMS cd="logic1" name="and"/>
+ <OMA id="power-prop-3.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="power"/>
+ <OMV name="x"/>
+ <OMI>0</OMI>
+ </OMA>
+ <OMS cd="alg1" name="one"/>
+ </OMA>
+ <OMA id="power-prop-3.2">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="power"/>
+ <OMV name="x"/>
+ <OMV name="n"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMV name="x"/>
+ <OMA>
+ <OMS cd="arith1" name="power"/>
+ <OMV name="x"/>
+ <OMA>
+ <OMS cd="arith1" name="minus"/>
+ <OMV name="n"/>
+ <OMI>1</OMI>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+ </FMP>
+</assertion>
+
+ <example xml:id="power-ex-5" type="for" for="#power">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath" style="display:block">
+ <OMA>
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="power"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrix"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 1 </OMI>
+ <OMI> 2 </OMI>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 3 </OMI>
+ <OMI> 4 </OMI>
+ </OMA>
+ </OMA>
+ <OMI>3</OMI>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrix"/>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 37 </OMI>
+ <OMI> 54 </OMI>
+ </OMA>
+ <OMA>
+ <OMS cd="linalg2" name="matrixrow"/>
+ <OMI> 81 </OMI>
+ <OMI> 118 </OMI>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+</example>
+
+<example xml:id="power-ex-6" type="for" for="#power">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="power"/>
+ <OMS cd="nums1" name="e"/>
+ <OMA>
+ <OMS cd="arith1" name="times"/>
+ <OMS cd="nums1" name="i"/>
+ <OMS cd="nums1" name="pi"/>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="unary_minus"/>
+ <OMS cd="alg1" name="one"/>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+</example>
+</theory>
+
+<symbol name="abs" xml:id="abs">
+<metadata>
+<dc:description><xh:p>
+ A unary operator which represents the absolute value of its
+ argument. The argument should be numerically valued.
+ In the complex case this is often referred to as the modulus.
+</xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMS name="C" cd="setname1"/>
+ <OMS name="R" cd="setname1"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="abs"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">abs</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>abs</m:mo>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="abs" o:cr="fun"/>
+ <expr name="arg"/>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1">abs</m:csymbol>
+ <expr name="arg"/>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow><m:mo>|</m:mo><render name="arg"/><m:mo>|</m:mo></m:mrow>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-abs">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+<assertion xml:id="abs-prop-1" type="lemma">
+ <CMP><xh:p>For all <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="x"/></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV name="y"/></OMOBJ> we
+ have <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR
+ href="abs-prop-1.1"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="x"/>
+ <OMV name="y"/>
+ </OMBVAR>
+ <OMA id="abs-prop-1.1">
+ <OMS cd="relation1" name="geq"/>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMA>
+ <OMS cd="arith1" name="abs"/>
+ <OMV name="x"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="abs"/>
+ <OMV name="y"/>
+ </OMA>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="abs"/>
+ <OMA>
+ <OMS cd="arith1" name="plus"/>
+ <OMV name="x"/>
+ <OMV name="y"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+
+<symbol name="root" xml:id="root">
+<metadata>
+<dc:description><xh:p>
+ A binary operator which represents its first argument "lowered" to its
+ n'th root where n is the second argument. This is the inverse of the operation
+ represented by the power symbol defined in this CD.
+
+ Care should be taken as to the precise meaning of this operator, in particular
+ which root is represented, however it is here to represent the general notion of
+ taking n'th roots. As inferred by the signature relevant to this symbol, the
+ function represented by this symbol is the single valued function, the specific
+ root returned is the one indicated by the first CMP. Note also that the converse
+ of the second CMP is not valid in general.
+</xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMS name="NumericalValue" cd="sts"/>
+ <OMS name="NumericalValue" cd="sts"/>
+ <OMS name="NumericalValue" cd="sts"/>
+ </OMA>
+ </OMOBJ>
+</type>
+</symbol>
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="root"/>
+ <expr name="arg"/>
+ <expr name="n"/>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1">root</m:csymbol>
+ <expr name="arg"/>
+ <expr name="n"/>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mroot>
+ <render name="arg"/>
+ <render name="n"/>
+ </m:mroot>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="root"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">root</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>√</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="arith1-root">
+<imports from="alg1.omdoc#alg1"/>
+<imports from="logic1.omdoc#logic1"/>
+<imports from="quant1.omdoc#quant1"/>
+<imports from="set1.omdoc#set1"/>
+<imports from="transc1.omdoc#transc1"/>
+
+
+<assertion xml:id="root-prop-1" type="lemma">
+ <CMP><xh:p> <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#root-prop-1.1"/></OMOBJ> implies
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#root-prop-1.2"/></OMOBJ>.
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="logic1" name="implies"/>
+ <OMA id="root-prop-1.1">
+ <OMS cd="set1" name="in"/>
+ <OMV name="x"/>
+ <OMS cd="setname1" name="C"/>
+ </OMA>
+ <OMA id="root-prop-1.2">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="root"/>
+ <OMV name="x"/>
+ <OMV name="n"/>
+ </OMA>
+ <OMA>
+ <OMS name="exp" cd="transc1"/>
+ <OMA>
+ <OMS name="divide" cd="arith1"/>
+ <OMA>
+ <OMS name="ln" cd="transc1"/>
+ <OMV name="x"/>
+ </OMA>
+ <OMV name="n"/>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+ </FMP>
+</assertion>
+<assertion xml:id="root-prop-3" type="lemma">
+ <CMP><xh:p>
+ For all <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV
+ name="a"/></OMOBJ> and <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMV
+ name="n"/></OMOBJ>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMR href="#root-prop-3.1"/></OMOBJ> (if the root exists!).
+ </xh:p></CMP>
+ <FMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMBIND>
+ <OMS cd="quant1" name="forall"/>
+ <OMBVAR>
+ <OMV name="a"/>
+ <OMV name="n"/>
+ </OMBVAR>
+ <OMA id="root-prop-3.1">
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="arith1" name="power"/>
+ <OMA>
+ <OMS cd="arith1" name="root"/>
+ <OMV name="a"/>
+ <OMV name="n"/>
+ </OMA>
+ <OMV name="n"/>
+ </OMA>
+ <OMV name="a"/>
+ </OMA>
+ </OMBIND>
+ </OMOBJ>
+ </FMP>
+</assertion>
+</theory>
+
+<symbol name="sum" xml:id="sum">
+<metadata>
+<dc:description><xh:p>
+ An operator taking two arguments, the first being the range of summation,
+ e.g. an integral interval, the second being the function to be
+ summed. Note that the sum may be over an infinite interval.
+</xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMV name="IntegerRange"/>
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMS name="Z" cd="setname1"/>
+ <OMV name="AbelianMonoid"/>
+ </OMA>
+ <OMV name="AbelianMonoid"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="sum" o:cr="fun"/>
+ <om:OMA>
+ <om:OMS cd="interval1" name="integer_interval"/>
+ <expr name="low"/>
+ <expr name="high"/>
+ </om:OMA>
+ <om:OMBIND>
+ <om:OMS cd="fns1" name="lambda"/>
+ <om:OMBVAR><expr name="var"/></om:OMBVAR>
+ <expr name="scope"/>
+ </om:OMBIND>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">sum</m:csymbol>
+ <m:apply>
+ <m:csymbol cd="interval1">integer_interval</m:csymbol>
+ <expr name="low"/>
+ <expr name="high"/>
+ </m:apply>
+ <m:bind>
+ <m:csymbol cd="fns1">lambda</m:csymbol>
+ <m:bvar><expr name="var"/></m:bvar>
+ <expr name="scope"/>
+ </m:bind>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:munderover>
+ <m:mo o:cr="fun">∑</m:mo>
+ <m:mrow>
+ <render name="var"/>
+ <m:mo>=</m:mo>
+ <render name="low"/>
+ </m:mrow>
+ <render name="high"/>
+ </m:munderover>
+ <render name="scope"/>
+ </m:mrow>
+ </rendering>
+ </notation>
+
+<!-- not over an interval -->
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="sum" o:cr="fun"/>
+ <expr name="range"/>
+ <om:OMBIND>
+ <om:OMS cd="fns1" name="lambda"/>
+ <om:OMBVAR><expr name="var"/></om:OMBVAR>
+ <expr name="scope"/>
+ </om:OMBIND>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">sum</m:csymbol>
+ <expr name="range"/>
+ <m:bind>
+ <m:csymbol cd="fns1">lambda</m:csymbol>
+ <m:bvar><expr name="var"/></m:bvar>
+ <expr name="scope"/>
+ </m:bind>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:munder>
+ <m:mo o:cr="fun">∑</m:mo>
+ <m:mrow><render name="var"/><m:mo>&#x2208;</m:mo><render name="range"/></m:mrow>
+ </m:munder>
+ <render name="scope"/>
+ </m:mrow>
+ </rendering>
+ </notation>
+
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="sum"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">sum</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>∑</m:mo>
+ </rendering>
+ </notation>
+
+
+<theory xml:id="sum-ex.theory">
+<imports xml:id="sum-ex-imports-fns1" from="fns1.omdoc#fns1"/>
+<imports xml:id="sum-ex-imports-interval1" from="interval1.omdoc#interval1"/>
+
+<example xml:id="sum-ex-1" type="for" for="#sum">
+ <CMP><xh:p>
+ This represents the summation of the reciprocals of all the integers between
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMI>1</OMI></OMOBJ> and
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath"><OMI>10</OMI></OMOBJ>
+ inclusive.
+ </xh:p></CMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="arith1" name="sum"/>
+ <OMA>
+ <OMS cd="interval1" name="integer_interval"/>
+ <OMI> 1 </OMI>
+ <OMI> 10 </OMI>
+ </OMA>
+ <OMBIND>
+ <OMS cd="fns1" name="lambda"/>
+ <OMBVAR>
+ <OMV name="x"/>
+ </OMBVAR>
+ <OMA>
+ <OMS cd="arith1" name="divide"/>
+ <OMI> 1 </OMI>
+ <OMV name="x"/>
+ </OMA>
+ </OMBIND>
+ </OMA>
+ </OMOBJ>
+</example>
+</theory>
+
+<symbol name="product" xml:id="product">
+<metadata>
+<dc:description><xh:p>
+ An operator taking two arguments, the first being the range of multiplication
+ e.g. an integral interval, the second being the function to
+ be multiplied. Note that the product may be over an infinite interval.
+</xh:p></dc:description>
+</metadata>
+<type system="sts.omdoc#sts">
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMV name="IntegerRange"/>
+ <OMA>
+ <OMS name="mapsto" cd="sts"/>
+ <OMS name="Z" cd="setname1"/>
+ <OMV name="AbelianMonoid"/>
+ </OMA>
+ <OMV name="AbelianMonoid"/>
+ </OMA>
+ </OMOBJ>
+ </type>
+</symbol>
+
+ <notation>
+ <prototype>
+ <om:OMA>
+ <om:OMS cd="arith1" name="product" o:cr="fun"/>
+ <om:OMA>
+ <om:OMS cd="interval1" name="integer_interval"/>
+ <expr name="low"/>
+ <expr name="high"/>
+ </om:OMA>
+ <om:OMBIND>
+ <om:OMS cd="fns1" name="lambda"/>
+ <om:OMBVAR><expr name="var"/></om:OMBVAR>
+ <expr name="scope"/>
+ </om:OMBIND>
+ </om:OMA>
+ </prototype>
+ <prototype>
+ <m:apply>
+ <m:csymbol cd="arith1" o:cr="fun">product</m:csymbol>
+ <m:apply>
+ <m:csymbol cd="interval1">integer_interval</m:csymbol>
+ <expr name="low"/>
+ <expr name="high"/>
+ </m:apply>
+ <m:bind>
+ <m:csymbol cd="fns1">lambda</m:csymbol>
+ <m:bvar><expr name="var"/></m:bvar>
+ <expr name="scope"/>
+ </m:bind>
+ </m:apply>
+ </prototype>
+ <rendering>
+ <m:mrow>
+ <m:munderover>
+ <m:mo o:cr="fun">∏</m:mo>
+ <m:mrow>
+ <render name="var"/>
+ <m:mo>=</m:mo>
+ <render name="low"/>
+ </m:mrow>
+ <render name="high"/>
+ </m:munderover>
+ <render name="scope"/>
+ </m:mrow>
+ </rendering>
+ </notation>
+ <notation>
+ <prototype>
+ <om:OMS cd="arith1" name="product"/>
+ </prototype>
+ <prototype>
+ <m:csymbol cd="arith1">product</m:csymbol>
+ </prototype>
+ <rendering>
+ <m:mo>∏</m:mo>
+ </rendering>
+ </notation>
+
+<theory xml:id="product-ex.theory">
+ <imports xml:id="product-ex-imports-interval1" from="interval1.omdoc#interval1"/>
+ <imports xml:id="product-ex-imports-fns1" from="fns1.omdoc#fns1"/>
+<example xml:id="product-ex-1" type="for" for="#product">
+ <CMP><xh:p>
+ This represents the statement that the
+ <term cd="integer1" name="factorial">factorial</term> of n is equal to the
+ <term cd="arith1" name="product">product</term>
+ of all the integers between 1 and n inclusive.
+ </xh:p></CMP>
+ <OMOBJ xmlns="http://www.openmath.org/OpenMath">
+ <OMA>
+ <OMS cd="relation1" name="eq"/>
+ <OMA>
+ <OMS cd="integer1" name="factorial"/>
+ <OMV name="n"/>
+ </OMA>
+ <OMA>
+ <OMS cd="arith1" name="product"/>
+ <OMA>
+ <OMS cd="interval1" name="integer_interval"/>
+ <OMI> 1 </OMI>
+ <OMV name="n"/>
+ </OMA>
+ <OMBIND>
+ <OMS cd="fns1" name="lambda"/>
+ <OMBVAR>
+ <OMV name="i"/>
+ </OMBVAR>
+ <OMV name="i"/>
+ </OMBIND>
+ </OMA>
+ </OMA>
+ </OMOBJ>
+</example>
+</theory>
+</theory>
+
+
+</omdoc>
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/creativecommons.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/creativecommons.rnc
new file mode 100644
index 00000000000..078d80e4a3b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/creativecommons.rnc
@@ -0,0 +1,48 @@
+# A RelaxNG for Creative Commons License Specifications
+# $Id: creativecommons.rnc 8550 2009-11-07 06:38:23Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/trunk/schema/rnc/pragmatic/creativecommons.rnc $
+# Copyright (c) 2008 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace cc = "http://creativecommons.org/ns"
+
+iana.tld = ("ac"|"ad"|"ae"|"af"|"ag"|"ai"|"al"|"am"|"an"|"ao"|"aq"|"ar"|"as"|"at"|"au"|"aw"|"ax"|"az"|
+ "ba"|"bb"|"bd"|"be"|"bf"|"bg"|"bh"|"bi"|"bj"|"bm"|"bn"|"bo"|"br"|"bs"|"bt"|"bv"|"bw"|"by"|"bz"|
+ "ca"|"cc"|"cd"|"cf"|"cg"|"ch"|"ci"|"ck"|"cl"|"cm"|"cn"|"co"|"cr"|"cs"|"cu"|"cv"|"cx"|"cy"|"cz"|
+ "de"|"dj"|"dk"|"dm"|"do"|"dz"|"ec"|"ee"|"eg"|"eh"|"er"|"es"|"et"|"fi"|"fj"|"fk"|"fm"|"fo"|"fr"|
+ "ga"|"gb"|"gd"|"ge"|"gf"|"gg"|"gh"|"gi"|"gl"|"gm"|"gn"|"gp"|"gq"|"gr"|"gs"|"gt"|"gu"|"gw"|"gy"|
+ "hk"|"hm"|"hn"|"hr"|"ht"|"hu"|"id"|"ie"|"il"|"im"|"in"|"io"|"iq"|"ir"|"is"|"it"|"je"|"jm"|"jo"|"jp"|
+ "ke"|"kg"|"kh"|"ki"|"km"|"kn"|"kp"|"kr"|"kw"|"ky"|"kz"|"la"|"lb"|
+ "lc"|"li"|"lk"|"lr"|"ls"|"lt"|"lu"|"lv"|"ly"|
+ "ma"|"mc"|"md"|"mg"|"mh"|"mk"|"ml"|"mm"|"mn"|"mo"|"mp"|"mq"|"mr"|"ms"|"mt"|"mu"|"mv"|"mw"|"mx"|"my"|"mz"|
+ "na"|"nc"|"ne"|"nf"|"ng"|"ni"|"nl"|"no"|"np"|"nr"|"nu"|"nz"|"om"|
+ "pa"|"pe"|"pf"|"pg"|"ph"|"pk"|"pl"|"pm"|"pn"|"pr"|"ps"|"pt"|"pw"|"py"|"qa"|"re"|"ro"|"ru"|"rw"|
+ "sa"|"sb"|"sc"|"sd"|"se"|"sg"|"sh"|"si"|"sj"|"sk"|"sl"|"sm"|"sn"|"so"|"sr"|"st"|"sv"|"sy"|"sz"|
+ "tc"|"td"|"tf"|"tg"|"th"|"tj"|"tk"|"tl"|"tm"|"tn"|"to"|"tp"|"tr"|"tt"|"tv"|"tw"|"tz"|"ua"|
+ "ug"|"uk"|"um"|"us"|"uy"|"uz"|"va"|"vc"|"ve"|"vg"|"vi"|"vn"|"vu"|"wf"|"ws"|"ye"|"yt"|"yu"|"za"|"zm"|"zw")
+
+license.attribs = attribute jurisdiction {iana.tld}? &
+ attribute version {xsd:string}?
+license.model = permissions,prohibitions,requirements,description
+license = element license {license.attribs& license.model}
+
+permissions.attribs= attribute reproduction {"permitted" |" prohibited"} &
+ attribute distribution {"permitted" |" prohibited"} &
+ attribute derivative_works {"permitted" | "prohibited"}
+permissions.model = description
+permissions = element permissions {permissions.attribs & permissions.model}
+
+prohibitions.attribs = attribute commercial_use {"prohibited" | "permitted"}
+prohibitions.model = description
+prohibitions = element prohibitions {prohibitions.attribs & prohibitions.model}
+
+requirements.attribs = attribute notice {"required" | "not_required"} &
+ attribute attribution {"required" | "not_required"} &
+ attribute copyleft {"required" | "not_required"}
+requirements.model = description
+requirements = element requirements {requirements.attribs & requirements.model}
+
+description.attribs = empty
+description.model = text
+description = element description {description.attribs & description.model}
+
+start = license
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/dublincore.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/dublincore.rnc
new file mode 100644
index 00000000000..2402ddb1e7c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/dublincore.rnc
@@ -0,0 +1,42 @@
+# A RelaxNG schema for the Dublin Core elements
+# $Id: dublincore.rnc 8550 2009-11-07 06:38:23Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/trunk/schema/rnc/pragmatic/dublincore.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2008 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace dc = "http://purl.org/dc/elements/1.1/"
+
+## the various content models, specialize for integration
+dc.person = text
+dc.publisher = text
+dc.text = text
+dc.inline = text
+dc.format = text
+dc.source = text
+dc.language = text
+dc.rights = text
+dc.relation = text
+dc.date = xsd:dateTime
+dc.type = text
+dc.identifier = text
+
+# the model of the Dublin Metadata initiative (http://purl.org/dc)
+start = contributor* & creator* & rights* & subject* & title* & description* &
+ publisher* & date* & type* & format* & identifier* & source* & language* & relation*
+
+contributor = element contributor {dc.person}
+creator = element creator {dc.person}
+title = element title {dc.inline}
+subject = element subject {dc.inline}
+description = element description {dc.text}
+publisher = element publisher {dc.publisher}
+type = element type {dc.type}
+format = element format {dc.format}
+source = element source {dc.source}
+language = element language {dc.language}
+relation = element relation {dc.relation}
+rights = element rights {dc.rights}
+date = element date {dc.date}
+identifier = element identifier {dc.identifier}
+
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-common.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-common.rnc
new file mode 100644
index 00000000000..3d18ae1d3f8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-common.rnc
@@ -0,0 +1,84 @@
+# This is the Mathematical Markup Language (MathML) 3.0, an XML
+# application for describing mathematical notation and capturing
+# both its structure and content.
+#
+# Copyright 1998-2009 W3C (MIT, ERCIM, Keio)
+#
+# Use and distribution of this code are permitted under the terms
+# W3C Software Notice and License
+# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+
+default namespace m = "http://www.w3.org/1998/Math/MathML"
+namespace local = ""
+
+start = math
+
+math = element math {math.attributes,MathExpression*}
+MathExpression = semantics
+
+NonMathMLAtt = attribute (* - (local:*|m:*)) {xsd:string}
+
+CommonDeprecatedAtt = attribute other {text}?
+
+CommonAtt = attribute id {xsd:ID}?,
+ attribute xref {text}?,
+ attribute class {xsd:NMTOKENS}?,
+ attribute style {xsd:string}?,
+ attribute href {xsd:anyURI}?,
+ CommonDeprecatedAtt,
+ NonMathMLAtt*
+
+
+math.attributes = CommonAtt,
+ attribute display {"block" | "inline"}?,
+ attribute maxwidth {length}?,
+ attribute overflow {"linebreak" | "scroll" | "elide" | "truncate" | "scale"}?,
+ attribute altimg {xsd:anyURI}?,
+ attribute altimg-width {length}?,
+ attribute altimg-height {length}?,
+ attribute altimg-valign {length | "top" | "middle" | "bottom"}?,
+ attribute alttext {text}?,
+ attribute cdgroup {xsd:anyURI}?,
+ math.deprecatedattributes
+
+# the mathml3-presentation schema adds additional attributes
+# to the math element, all those valid on mstyle
+
+math.deprecatedattributes = attribute mode {xsd:string}?,
+ attribute macros {xsd:string}?
+
+
+name = attribute name {xsd:NCName}
+cd = attribute cd {xsd:NCName}
+
+src = attribute src {xsd:anyURI}?
+
+annotation = element annotation {annotation.attributes,text}
+
+annotation-xml.model = (MathExpression|anyElement)*
+
+anyElement = element (* - m:*) {(attribute * {text}|text| anyElement)*}
+
+annotation-xml = element annotation-xml {annotation.attributes,
+ annotation-xml.model}
+annotation.attributes = CommonAtt,
+ cd?,
+ name?,
+ DefEncAtt,
+ src?
+
+DefEncAtt = attribute encoding {xsd:string}?,
+ attribute definitionURL {xsd:anyURI}?
+
+semantics = element semantics {semantics.attributes,
+ MathExpression,
+ (annotation|annotation-xml)*}
+semantics.attributes = CommonAtt,DefEncAtt,cd?,name?
+
+
+
+length = xsd:string {
+ pattern = '\s*((-?[0-9]*(\.[0-9]*)?(e[mx]|in|cm|mm|p[xtc]|%)?)|(negative)?((very){0,2}thi(n|ck)|medium)mathspace)\s*'
+}
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-content.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-content.rnc
new file mode 100755
index 00000000000..3facbfd5567
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-content.rnc
@@ -0,0 +1,373 @@
+
+# This is the Mathematical Markup Language (MathML) 3.0, an XML
+# application for describing mathematical notation and capturing
+# both its structure and content.
+#
+# Copyright 1998-2010 W3C (MIT, ERCIM, Keio)
+#
+# Use and distribution of this code are permitted under the terms
+# W3C Software Notice and License
+# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+include "mathml3-strict-content.rnc"{
+ cn.content = (text | mglyph | sep | PresentationExpression)*
+ cn.attributes = CommonAtt, DefEncAtt, attribute type {text}?, base?
+
+ ci.attributes = CommonAtt, DefEncAtt, ci.type?
+ ci.type = attribute type {text}
+ ci.content = (text | mglyph | PresentationExpression)*
+
+ csymbol.attributes = CommonAtt, DefEncAtt, attribute type {text}?,cd?
+ csymbol.content = (text | mglyph | PresentationExpression)*
+
+ bvar = element bvar { (ci | semantics-ci) & degree?}
+
+ cbytes.attributes = CommonAtt, DefEncAtt
+
+ cs.attributes = CommonAtt, DefEncAtt
+
+ apply.content = ContExp+ | (ContExp, BvarQ, Qualifier*, ContExp*)
+
+ bind.content = apply.content
+}
+
+base = attribute base {text}
+
+
+sep = element sep {empty}
+PresentationExpression |= notAllowed
+
+
+DomainQ = (domainofapplication|condition|interval|(lowlimit,uplimit?))*
+domainofapplication = element domainofapplication {ContExp}
+condition = element condition {ContExp}
+uplimit = element uplimit {ContExp}
+lowlimit = element lowlimit {ContExp}
+
+Qualifier = DomainQ|degree|momentabout|logbase
+degree = element degree {ContExp}
+momentabout = element momentabout {ContExp}
+logbase = element logbase {ContExp}
+
+type = attribute type {text}
+order = attribute order {"numeric" | "lexicographic"}
+closure = attribute closure {text}
+
+
+ContExp |= piecewise
+
+
+piecewise = element piecewise {CommonAtt, DefEncAtt,(piece* & otherwise?)}
+
+piece = element piece {CommonAtt, DefEncAtt, ContExp, ContExp}
+
+otherwise = element otherwise {CommonAtt, DefEncAtt, ContExp}
+
+
+DeprecatedContExp = reln | fn | declare
+ContExp |= DeprecatedContExp
+
+reln = element reln {ContExp*}
+fn = element fn {ContExp}
+declare = element declare {attribute type {xsd:string}?,
+ attribute scope {xsd:string}?,
+ attribute nargs {xsd:nonNegativeInteger}?,
+ attribute occurrence {"prefix"|"infix"|"function-model"}?,
+ DefEncAtt,
+ ContExp+}
+
+
+interval.class = interval
+ContExp |= interval.class
+
+
+interval = element interval { CommonAtt, DefEncAtt,closure?, ContExp,ContExp}
+
+unary-functional.class = inverse | ident | domain | codomain | image | ln | log | moment
+ContExp |= unary-functional.class
+
+
+inverse = element inverse { CommonAtt, DefEncAtt, empty}
+ident = element ident { CommonAtt, DefEncAtt, empty}
+domain = element domain { CommonAtt, DefEncAtt, empty}
+codomain = element codomain { CommonAtt, DefEncAtt, empty}
+image = element image { CommonAtt, DefEncAtt, empty}
+ln = element ln { CommonAtt, DefEncAtt, empty}
+log = element log { CommonAtt, DefEncAtt, empty}
+moment = element moment { CommonAtt, DefEncAtt, empty}
+
+lambda.class = lambda
+ContExp |= lambda.class
+
+
+lambda = element lambda { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp}
+
+nary-functional.class = compose
+ContExp |= nary-functional.class
+
+
+compose = element compose { CommonAtt, DefEncAtt, empty}
+
+binary-arith.class = quotient | divide | minus | power | rem | root
+ContExp |= binary-arith.class
+
+
+quotient = element quotient { CommonAtt, DefEncAtt, empty}
+divide = element divide { CommonAtt, DefEncAtt, empty}
+minus = element minus { CommonAtt, DefEncAtt, empty}
+power = element power { CommonAtt, DefEncAtt, empty}
+rem = element rem { CommonAtt, DefEncAtt, empty}
+root = element root { CommonAtt, DefEncAtt, empty}
+
+unary-arith.class = factorial | minus | root | abs | conjugate | arg | real | imaginary | floor | ceiling | exp
+ContExp |= unary-arith.class
+
+
+factorial = element factorial { CommonAtt, DefEncAtt, empty}
+abs = element abs { CommonAtt, DefEncAtt, empty}
+conjugate = element conjugate { CommonAtt, DefEncAtt, empty}
+arg = element arg { CommonAtt, DefEncAtt, empty}
+real = element real { CommonAtt, DefEncAtt, empty}
+imaginary = element imaginary { CommonAtt, DefEncAtt, empty}
+floor = element floor { CommonAtt, DefEncAtt, empty}
+ceiling = element ceiling { CommonAtt, DefEncAtt, empty}
+exp = element exp { CommonAtt, DefEncAtt, empty}
+
+nary-minmax.class = max | min
+ContExp |= nary-minmax.class
+
+
+max = element max { CommonAtt, DefEncAtt, empty}
+min = element min { CommonAtt, DefEncAtt, empty}
+
+nary-arith.class = plus | times | gcd | lcm
+ContExp |= nary-arith.class
+
+
+plus = element plus { CommonAtt, DefEncAtt, empty}
+times = element times { CommonAtt, DefEncAtt, empty}
+gcd = element gcd { CommonAtt, DefEncAtt, empty}
+lcm = element lcm { CommonAtt, DefEncAtt, empty}
+
+nary-logical.class = and | or | xor
+ContExp |= nary-logical.class
+
+
+and = element and { CommonAtt, DefEncAtt, empty}
+or = element or { CommonAtt, DefEncAtt, empty}
+xor = element xor { CommonAtt, DefEncAtt, empty}
+
+unary-logical.class = not
+ContExp |= unary-logical.class
+
+
+not = element not { CommonAtt, DefEncAtt, empty}
+
+binary-logical.class = implies | equivalent
+ContExp |= binary-logical.class
+
+
+implies = element implies { CommonAtt, DefEncAtt, empty}
+equivalent = element equivalent { CommonAtt, DefEncAtt, empty}
+
+quantifier.class = forall | exists
+ContExp |= quantifier.class
+
+
+forall = element forall { CommonAtt, DefEncAtt, empty}
+exists = element exists { CommonAtt, DefEncAtt, empty}
+
+nary-reln.class = eq | gt | lt | geq | leq
+ContExp |= nary-reln.class
+
+
+eq = element eq { CommonAtt, DefEncAtt, empty}
+gt = element gt { CommonAtt, DefEncAtt, empty}
+lt = element lt { CommonAtt, DefEncAtt, empty}
+geq = element geq { CommonAtt, DefEncAtt, empty}
+leq = element leq { CommonAtt, DefEncAtt, empty}
+
+binary-reln.class = neq | approx | factorof | tendsto
+ContExp |= binary-reln.class
+
+
+neq = element neq { CommonAtt, DefEncAtt, empty}
+approx = element approx { CommonAtt, DefEncAtt, empty}
+factorof = element factorof { CommonAtt, DefEncAtt, empty}
+tendsto = element tendsto { CommonAtt, DefEncAtt, type?, empty}
+
+int.class = int
+ContExp |= int.class
+
+
+int = element int { CommonAtt, DefEncAtt, empty}
+
+Differential-Operator.class = diff
+ContExp |= Differential-Operator.class
+
+
+diff = element diff { CommonAtt, DefEncAtt, empty}
+
+partialdiff.class = partialdiff
+ContExp |= partialdiff.class
+
+
+partialdiff = element partialdiff { CommonAtt, DefEncAtt, empty}
+
+unary-veccalc.class = divergence | grad | curl | laplacian
+ContExp |= unary-veccalc.class
+
+
+divergence = element divergence { CommonAtt, DefEncAtt, empty}
+grad = element grad { CommonAtt, DefEncAtt, empty}
+curl = element curl { CommonAtt, DefEncAtt, empty}
+laplacian = element laplacian { CommonAtt, DefEncAtt, empty}
+
+nary-setlist-constructor.class = set | \list
+ContExp |= nary-setlist-constructor.class
+
+
+set = element set { CommonAtt, DefEncAtt, type?, BvarQ*, DomainQ*, ContExp*}
+\list = element \list { CommonAtt, DefEncAtt, order?, BvarQ*, DomainQ*, ContExp*}
+
+nary-set.class = union | intersect | cartesianproduct
+ContExp |= nary-set.class
+
+
+union = element union { CommonAtt, DefEncAtt, empty}
+intersect = element intersect { CommonAtt, DefEncAtt, empty}
+cartesianproduct = element cartesianproduct { CommonAtt, DefEncAtt, empty}
+
+binary-set.class = in | notin | notsubset | notprsubset | setdiff
+ContExp |= binary-set.class
+
+
+in = element in { CommonAtt, DefEncAtt, empty}
+notin = element notin { CommonAtt, DefEncAtt, empty}
+notsubset = element notsubset { CommonAtt, DefEncAtt, empty}
+notprsubset = element notprsubset { CommonAtt, DefEncAtt, empty}
+setdiff = element setdiff { CommonAtt, DefEncAtt, empty}
+
+nary-set-reln.class = subset | prsubset
+ContExp |= nary-set-reln.class
+
+
+subset = element subset { CommonAtt, DefEncAtt, empty}
+prsubset = element prsubset { CommonAtt, DefEncAtt, empty}
+
+unary-set.class = card
+ContExp |= unary-set.class
+
+
+card = element card { CommonAtt, DefEncAtt, empty}
+
+sum.class = sum
+ContExp |= sum.class
+
+
+sum = element sum { CommonAtt, DefEncAtt, empty}
+
+product.class = product
+ContExp |= product.class
+
+
+product = element product { CommonAtt, DefEncAtt, empty}
+
+limit.class = limit
+ContExp |= limit.class
+
+
+limit = element limit { CommonAtt, DefEncAtt, empty}
+
+unary-elementary.class = sin | cos | tan | sec | csc | cot | sinh | cosh | tanh | sech | csch | coth | arcsin | arccos | arctan | arccosh | arccot | arccoth | arccsc | arccsch | arcsec | arcsech | arcsinh | arctanh
+ContExp |= unary-elementary.class
+
+
+sin = element sin { CommonAtt, DefEncAtt, empty}
+cos = element cos { CommonAtt, DefEncAtt, empty}
+tan = element tan { CommonAtt, DefEncAtt, empty}
+sec = element sec { CommonAtt, DefEncAtt, empty}
+csc = element csc { CommonAtt, DefEncAtt, empty}
+cot = element cot { CommonAtt, DefEncAtt, empty}
+sinh = element sinh { CommonAtt, DefEncAtt, empty}
+cosh = element cosh { CommonAtt, DefEncAtt, empty}
+tanh = element tanh { CommonAtt, DefEncAtt, empty}
+sech = element sech { CommonAtt, DefEncAtt, empty}
+csch = element csch { CommonAtt, DefEncAtt, empty}
+coth = element coth { CommonAtt, DefEncAtt, empty}
+arcsin = element arcsin { CommonAtt, DefEncAtt, empty}
+arccos = element arccos { CommonAtt, DefEncAtt, empty}
+arctan = element arctan { CommonAtt, DefEncAtt, empty}
+arccosh = element arccosh { CommonAtt, DefEncAtt, empty}
+arccot = element arccot { CommonAtt, DefEncAtt, empty}
+arccoth = element arccoth { CommonAtt, DefEncAtt, empty}
+arccsc = element arccsc { CommonAtt, DefEncAtt, empty}
+arccsch = element arccsch { CommonAtt, DefEncAtt, empty}
+arcsec = element arcsec { CommonAtt, DefEncAtt, empty}
+arcsech = element arcsech { CommonAtt, DefEncAtt, empty}
+arcsinh = element arcsinh { CommonAtt, DefEncAtt, empty}
+arctanh = element arctanh { CommonAtt, DefEncAtt, empty}
+
+nary-stats.class = mean | sdev | variance | median | mode
+ContExp |= nary-stats.class
+
+
+mean = element mean { CommonAtt, DefEncAtt, empty}
+sdev = element sdev { CommonAtt, DefEncAtt, empty}
+variance = element variance { CommonAtt, DefEncAtt, empty}
+median = element median { CommonAtt, DefEncAtt, empty}
+mode = element mode { CommonAtt, DefEncAtt, empty}
+
+nary-constructor.class = vector | matrix | matrixrow
+ContExp |= nary-constructor.class
+
+
+vector = element vector { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp*}
+matrix = element matrix { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp*}
+matrixrow = element matrixrow { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp*}
+
+unary-linalg.class = determinant | transpose
+ContExp |= unary-linalg.class
+
+
+determinant = element determinant { CommonAtt, DefEncAtt, empty}
+transpose = element transpose { CommonAtt, DefEncAtt, empty}
+
+nary-linalg.class = selector
+ContExp |= nary-linalg.class
+
+
+selector = element selector { CommonAtt, DefEncAtt, empty}
+
+binary-linalg.class = vectorproduct | scalarproduct | outerproduct
+ContExp |= binary-linalg.class
+
+
+vectorproduct = element vectorproduct { CommonAtt, DefEncAtt, empty}
+scalarproduct = element scalarproduct { CommonAtt, DefEncAtt, empty}
+outerproduct = element outerproduct { CommonAtt, DefEncAtt, empty}
+
+constant-set.class = integers | reals | rationals | naturalnumbers | complexes | primes | emptyset
+ContExp |= constant-set.class
+
+
+integers = element integers { CommonAtt, DefEncAtt, empty}
+reals = element reals { CommonAtt, DefEncAtt, empty}
+rationals = element rationals { CommonAtt, DefEncAtt, empty}
+naturalnumbers = element naturalnumbers { CommonAtt, DefEncAtt, empty}
+complexes = element complexes { CommonAtt, DefEncAtt, empty}
+primes = element primes { CommonAtt, DefEncAtt, empty}
+emptyset = element emptyset { CommonAtt, DefEncAtt, empty}
+
+constant-arith.class = exponentiale | imaginaryi | notanumber | true | false | pi | eulergamma | infinity
+ContExp |= constant-arith.class
+
+
+exponentiale = element exponentiale { CommonAtt, DefEncAtt, empty}
+imaginaryi = element imaginaryi { CommonAtt, DefEncAtt, empty}
+notanumber = element notanumber { CommonAtt, DefEncAtt, empty}
+true = element true { CommonAtt, DefEncAtt, empty}
+false = element false { CommonAtt, DefEncAtt, empty}
+pi = element pi { CommonAtt, DefEncAtt, empty}
+eulergamma = element eulergamma { CommonAtt, DefEncAtt, empty}
+infinity = element infinity { CommonAtt, DefEncAtt, empty} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-presentation.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-presentation.rnc
new file mode 100644
index 00000000000..5fa56e7b3d9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-presentation.rnc
@@ -0,0 +1,536 @@
+
+# This is the Mathematical Markup Language (MathML) 3.0, an XML
+# application for describing mathematical notation and capturing
+# both its structure and content.
+#
+# Copyright 1998-2010 W3C (MIT, ERCIM, Keio)
+#
+# Use and distribution of this code are permitted under the terms
+# W3C Software Notice and License
+# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+default namespace m = "http://www.w3.org/1998/Math/MathML"
+
+MathExpression |= PresentationExpression
+
+ImpliedMrow = MathExpression*
+
+TableRowExpression = mtr|mlabeledtr
+
+TableCellExpression = mtd
+
+MstackExpression = MathExpression|mscarries|msline|msrow|msgroup
+
+MsrowExpression = MathExpression|none
+
+MultiScriptExpression = (MathExpression|none),(MathExpression|none)
+
+mpadded-length = xsd:string {
+ pattern = '\s*([\+\-]?[0-9]*(\.[0-9]*)?\s*((%?\s*(height|depth|width)?)|e[mx]|in|cm|mm|p[xtc]|((negative)?((very){0,2}thi(n|ck)|medium)mathspace)))\s*' }
+
+linestyle = "none" | "solid" | "dashed"
+
+verticalalign =
+ "top" |
+ "bottom" |
+ "center" |
+ "baseline" |
+ "axis"
+
+columnalignstyle = "left" | "center" | "right"
+
+notationstyle =
+ "longdiv" |
+ "actuarial" |
+ "radical" |
+ "box" |
+ "roundedbox" |
+ "circle" |
+ "left" |
+ "right" |
+ "top" |
+ "bottom" |
+ "updiagonalstrike" |
+ "downdiagonalstrike" |
+ "verticalstrike" |
+ "horizontalstrike" |
+ "madruwb"
+
+idref = text
+unsigned-integer = xsd:unsignedLong
+integer = xsd:integer
+number = xsd:decimal
+
+character = xsd:string {
+ pattern = '\s*\S\s*'}
+
+color = xsd:string {
+ pattern = '\s*((#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?)|[aA][qQ][uU][aA]|[bB][lL][aA][cC][kK]|[bB][lL][uU][eE]|[fF][uU][cC][hH][sS][iI][aA]|[gG][rR][aA][yY]|[gG][rR][eE][eE][nN]|[lL][iI][mM][eE]|[mM][aA][rR][oO][oO][nN]|[nN][aA][vV][yY]|[oO][lL][iI][vV][eE]|[pP][uU][rR][pP][lL][eE]|[rR][eE][dD]|[sS][iI][lL][vV][eE][rR]|[tT][eE][aA][lL]|[wW][hH][iI][tT][eE]|[yY][eE][lL][lL][oO][wW])\s*'}
+
+
+group-alignment = "left" | "center" | "right" | "decimalpoint"
+group-alignment-list = list {group-alignment+}
+group-alignment-list-list = xsd:string {
+ pattern = '(\s*\{\s*(left|center|right|decimalpoint)(\s+(left|center|right|decimalpoint))*\})*\s*' }
+positive-integer = xsd:positiveInteger
+
+
+TokenExpression = mi|mn|mo|mtext|mspace|ms
+
+token.content = mglyph|malignmark|text
+
+mi = element mi {mi.attributes, token.content*}
+mi.attributes =
+ CommonAtt,
+ CommonPresAtt,
+ TokenAtt
+
+
+mn = element mn {mn.attributes, token.content*}
+mn.attributes =
+ CommonAtt,
+ CommonPresAtt,
+ TokenAtt
+
+
+mo = element mo {mo.attributes, token.content*}
+mo.attributes =
+ CommonAtt,
+ CommonPresAtt,
+ TokenAtt,
+ attribute form {"prefix" | "infix" | "postfix"}?,
+ attribute fence {"true" | "false"}?,
+ attribute separator {"true" | "false"}?,
+ attribute lspace {length}?,
+ attribute rspace {length}?,
+ attribute stretchy {"true" | "false"}?,
+ attribute symmetric {"true" | "false"}?,
+ attribute maxsize {length | "infinity"}?,
+ attribute minsize {length}?,
+ attribute largeop {"true" | "false"}?,
+ attribute movablelimits {"true" | "false"}?,
+ attribute accent {"true" | "false"}?,
+ attribute linebreak {"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak"}?,
+ attribute lineleading {length}?,
+ attribute linebreakstyle {"before" | "after" | "duplicate" | "infixlinebreakstyle"}?,
+ attribute linebreakmultchar {text}?,
+ attribute indentalign {"left" | "center" | "right" | "auto" | "id"}?,
+ attribute indentshift {length}?,
+ attribute indenttarget {idref}?,
+ attribute indentalignfirst {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?,
+ attribute indentshiftfirst {length | "indentshift"}?,
+ attribute indentalignlast {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?,
+ attribute indentshiftlast {length | "indentshift"}?
+
+
+mtext = element mtext {mtext.attributes, token.content*}
+mtext.attributes =
+ CommonAtt,
+ CommonPresAtt,
+ TokenAtt
+
+
+mspace = element mspace {mspace.attributes, empty}
+mspace.attributes =
+ CommonAtt,
+ CommonPresAtt,
+ TokenAtt,
+ attribute width {length}?,
+ attribute height {length}?,
+ attribute depth {length}?,
+ attribute linebreak {"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak" | "indentingnewline"}?
+
+
+ms = element ms {ms.attributes, token.content*}
+ms.attributes =
+ CommonAtt,
+ CommonPresAtt,
+ TokenAtt,
+ attribute lquote {text}?,
+ attribute rquote {text}?
+
+
+mglyph = element mglyph {mglyph.attributes,mglyph.deprecatedattributes,empty}
+mglyph.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute src {xsd:anyURI}?,
+ attribute width {length}?,
+ attribute height {length}?,
+ attribute valign {length}?,
+ attribute alt {text}?
+mglyph.deprecatedattributes =
+ attribute index {integer}?,
+ attribute mathvariant {"normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"}?,
+ attribute mathsize {"small" | "normal" | "big" | length}?,
+ DeprecatedTokenAtt
+
+msline = element msline {msline.attributes,empty}
+msline.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute position {integer}?,
+ attribute length {unsigned-integer}?,
+ attribute leftoverhang {length}?,
+ attribute rightoverhang {length}?,
+ attribute mslinethickness {length | "thin" | "medium" | "thick"}?
+
+none = element none {none.attributes,empty}
+none.attributes =
+ CommonAtt,
+ CommonPresAtt
+
+mprescripts = element mprescripts {mprescripts.attributes,empty}
+mprescripts.attributes =
+ CommonAtt,
+ CommonPresAtt
+
+
+CommonPresAtt =
+ attribute mathcolor {color}?,
+ attribute mathbackground {color | "transparent"}?
+
+TokenAtt =
+ attribute mathvariant {"normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"}?,
+ attribute mathsize {"small" | "normal" | "big" | length}?,
+ attribute dir {"ltr" | "rtl"}?,
+ DeprecatedTokenAtt
+
+DeprecatedTokenAtt =
+ attribute fontfamily {text}?,
+ attribute fontweight {"normal" | "bold"}?,
+ attribute fontstyle {"normal" | "italic"}?,
+ attribute fontsize {length}?,
+ attribute color {color}?,
+ attribute background {color | "transparent"}?
+
+MalignExpression = maligngroup|malignmark
+
+malignmark = element malignmark {malignmark.attributes, empty}
+malignmark.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute edge {"left" | "right"}?
+
+
+maligngroup = element maligngroup {maligngroup.attributes, empty}
+maligngroup.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute groupalign {"left" | "center" | "right" | "decimalpoint"}?
+
+
+PresentationExpression = TokenExpression|MalignExpression|
+ mrow|mfrac|msqrt|mroot|mstyle|merror|mpadded|mphantom|
+ mfenced|menclose|msub|msup|msubsup|munder|mover|munderover|
+ mmultiscripts|mtable|mstack|mlongdiv|maction
+
+
+
+mrow = element mrow {mrow.attributes, MathExpression*}
+mrow.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute dir {"ltr" | "rtl"}?
+
+
+mfrac = element mfrac {mfrac.attributes, MathExpression, MathExpression}
+mfrac.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute linethickness {length | "thin" | "medium" | "thick"}?,
+ attribute numalign {"left" | "center" | "right"}?,
+ attribute denomalign {"left" | "center" | "right"}?,
+ attribute bevelled {"true" | "false"}?
+
+
+msqrt = element msqrt {msqrt.attributes, ImpliedMrow}
+msqrt.attributes =
+ CommonAtt, CommonPresAtt
+
+
+mroot = element mroot {mroot.attributes, MathExpression, MathExpression}
+mroot.attributes =
+ CommonAtt, CommonPresAtt
+
+
+mstyle = element mstyle {mstyle.attributes, ImpliedMrow}
+mstyle.attributes =
+ CommonAtt, CommonPresAtt,
+ mstyle.specificattributes,
+ mstyle.generalattributes,
+ mstyle.deprecatedattributes
+
+mstyle.specificattributes =
+ attribute scriptlevel {integer}?,
+ attribute displaystyle {"true" | "false"}?,
+ attribute scriptsizemultiplier {number}?,
+ attribute scriptminsize {length}?,
+ attribute infixlinebreakstyle {"before" | "after" | "duplicate"}?,
+ attribute decimalpoint {character}?
+
+mstyle.generalattributes =
+ attribute accent {"true" | "false"}?,
+ attribute accentunder {"true" | "false"}?,
+ attribute align {"left" | "right" | "center"}?,
+ attribute alignmentscope {list {("true" | "false") +}}?,
+ attribute bevelled {"true" | "false"}?,
+ attribute charalign {"left" | "center" | "right"}?,
+ attribute charspacing {length | "loose" | "medium" | "tight"}?,
+ attribute close {text}?,
+ attribute columnalign {list {columnalignstyle+} }?,
+ attribute columnlines {list {linestyle +}}?,
+ attribute columnspacing {list {(length) +}}?,
+ attribute columnspan {positive-integer}?,
+ attribute columnwidth {list {("auto" | length | "fit") +}}?,
+ attribute crossout {list {("none" | "updiagonalstrike" | "downdiagonalstrike" | "verticalstrike" | "horizontalstrike")*}}?,
+ attribute denomalign {"left" | "center" | "right"}?,
+ attribute depth {length}?,
+ attribute dir {"ltr" | "rtl"}?,
+ attribute edge {"left" | "right"}?,
+ attribute equalcolumns {"true" | "false"}?,
+ attribute equalrows {"true" | "false"}?,
+ attribute fence {"true" | "false"}?,
+ attribute form {"prefix" | "infix" | "postfix"}?,
+ attribute frame {linestyle}?,
+ attribute framespacing {list {length, length}}?,
+ attribute groupalign {group-alignment-list-list}?,
+ attribute height {length}?,
+ attribute indentalign {"left" | "center" | "right" | "auto" | "id"}?,
+ attribute indentalignfirst {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?,
+ attribute indentalignlast {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?,
+ attribute indentshift {length}?,
+ attribute indentshiftfirst {length | "indentshift"}?,
+ attribute indentshiftlast {length | "indentshift"}?,
+ attribute indenttarget {idref}?,
+ attribute largeop {"true" | "false"}?,
+ attribute leftoverhang {length}?,
+ attribute length {unsigned-integer}?,
+ attribute linebreak {"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak"}?,
+ attribute linebreakmultchar {text}?,
+ attribute linebreakstyle {"before" | "after" | "duplicate" | "infixlinebreakstyle"}?,
+ attribute lineleading {length}?,
+ attribute linethickness {length | "thin" | "medium" | "thick"}?,
+ attribute location {"w" | "nw" | "n" | "ne" | "e" | "se" | "s" | "sw"}?,
+ attribute longdivstyle {"lefttop" | "stackedrightright" | "mediumstackedrightright" | "shortstackedrightright" | "righttop" | "left/\right" | "left)(right" | ":right=right" | "stackedleftleft" | "stackedleftlinetop"}?,
+ attribute lquote {text}?,
+ attribute lspace {length}?,
+ attribute mathsize {"small" | "normal" | "big" | length}?,
+ attribute mathvariant {"normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"}?,
+ attribute maxsize {length | "infinity"}?,
+ attribute minlabelspacing {length}?,
+ attribute minsize {length}?,
+ attribute movablelimits {"true" | "false"}?,
+ attribute mslinethickness {length | "thin" | "medium" | "thick"}?,
+ attribute notation {text}?,
+ attribute numalign {"left" | "center" | "right"}?,
+ attribute open {text}?,
+ attribute position {integer}?,
+ attribute rightoverhang {length}?,
+ attribute rowalign {list {verticalalign+} }?,
+ attribute rowlines {list {linestyle +}}?,
+ attribute rowspacing {list {(length) +}}?,
+ attribute rowspan {positive-integer}?,
+ attribute rquote {text}?,
+ attribute rspace {length}?,
+ attribute selection {positive-integer}?,
+ attribute separator {"true" | "false"}?,
+ attribute separators {text}?,
+ attribute shift {integer}?,
+ attribute side {"left" | "right" | "leftoverlap" | "rightoverlap"}?,
+ attribute stackalign {"left" | "center" | "right" | "decimalpoint"}?,
+ attribute stretchy {"true" | "false"}?,
+ attribute subscriptshift {length}?,
+ attribute superscriptshift {length}?,
+ attribute symmetric {"true" | "false"}?,
+ attribute valign {length}?,
+ attribute width {length}?
+
+mstyle.deprecatedattributes =
+ DeprecatedTokenAtt,
+ attribute veryverythinmathspace {length}?,
+ attribute verythinmathspace {length}?,
+ attribute thinmathspace {length}?,
+ attribute mediummathspace {length}?,
+ attribute thickmathspace {length}?,
+ attribute verythickmathspace {length}?,
+ attribute veryverythickmathspace {length}?
+
+math.attributes &= CommonPresAtt
+math.attributes &= mstyle.specificattributes
+math.attributes &= mstyle.generalattributes
+
+
+
+
+merror = element merror {merror.attributes, ImpliedMrow}
+merror.attributes =
+ CommonAtt, CommonPresAtt
+
+
+mpadded = element mpadded {mpadded.attributes, ImpliedMrow}
+mpadded.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute height {mpadded-length}?,
+ attribute depth {mpadded-length}?,
+ attribute width {mpadded-length}?,
+ attribute lspace {mpadded-length}?,
+ attribute voffset {mpadded-length}?
+
+
+mphantom = element mphantom {mphantom.attributes, ImpliedMrow}
+mphantom.attributes =
+ CommonAtt, CommonPresAtt
+
+
+mfenced = element mfenced {mfenced.attributes, MathExpression*}
+mfenced.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute open {text}?,
+ attribute close {text}?,
+ attribute separators {text}?
+
+
+menclose = element menclose {menclose.attributes, ImpliedMrow}
+menclose.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute notation {text}?
+
+
+msub = element msub {msub.attributes, MathExpression, MathExpression}
+msub.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute subscriptshift {length}?
+
+
+msup = element msup {msup.attributes, MathExpression, MathExpression}
+msup.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute superscriptshift {length}?
+
+
+msubsup = element msubsup {msubsup.attributes, MathExpression, MathExpression, MathExpression}
+msubsup.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute subscriptshift {length}?,
+ attribute superscriptshift {length}?
+
+
+munder = element munder {munder.attributes, MathExpression, MathExpression}
+munder.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute accentunder {"true" | "false"}?,
+ attribute align {"left" | "right" | "center"}?
+
+
+mover = element mover {mover.attributes, MathExpression, MathExpression}
+mover.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute accent {"true" | "false"}?,
+ attribute align {"left" | "right" | "center"}?
+
+
+munderover = element munderover {munderover.attributes, MathExpression, MathExpression, MathExpression}
+munderover.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute accent {"true" | "false"}?,
+ attribute accentunder {"true" | "false"}?,
+ attribute align {"left" | "right" | "center"}?
+
+
+mmultiscripts = element mmultiscripts {mmultiscripts.attributes, MathExpression,MultiScriptExpression*,(mprescripts,MultiScriptExpression*)?}
+mmultiscripts.attributes =
+ msubsup.attributes
+
+
+mtable = element mtable {mtable.attributes, TableRowExpression*}
+mtable.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute align {xsd:string {
+ pattern ='\s*(top|bottom|center|baseline|axis)\s*[0-9]*'}}?,
+ attribute rowalign {list {verticalalign+} }?,
+ attribute columnalign {list {columnalignstyle+} }?,
+ attribute groupalign {group-alignment-list-list}?,
+ attribute alignmentscope {list {("true" | "false") +}}?,
+ attribute columnwidth {list {("auto" | length | "fit") +}}?,
+ attribute width {"auto" | length}?,
+ attribute rowspacing {list {(length) +}}?,
+ attribute columnspacing {list {(length) +}}?,
+ attribute rowlines {list {linestyle +}}?,
+ attribute columnlines {list {linestyle +}}?,
+ attribute frame {linestyle}?,
+ attribute framespacing {list {length, length}}?,
+ attribute equalrows {"true" | "false"}?,
+ attribute equalcolumns {"true" | "false"}?,
+ attribute displaystyle {"true" | "false"}?,
+ attribute side {"left" | "right" | "leftoverlap" | "rightoverlap"}?,
+ attribute minlabelspacing {length}?
+
+
+mlabeledtr = element mlabeledtr {mlabeledtr.attributes, TableCellExpression+}
+mlabeledtr.attributes =
+ mtr.attributes
+
+
+mtr = element mtr {mtr.attributes, TableCellExpression*}
+mtr.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute rowalign {"top" | "bottom" | "center" | "baseline" | "axis"}?,
+ attribute columnalign {list {columnalignstyle+} }?,
+ attribute groupalign {group-alignment-list-list}?
+
+
+mtd = element mtd {mtd.attributes, ImpliedMrow}
+mtd.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute rowspan {positive-integer}?,
+ attribute columnspan {positive-integer}?,
+ attribute rowalign {"top" | "bottom" | "center" | "baseline" | "axis"}?,
+ attribute columnalign {columnalignstyle}?,
+ attribute groupalign {group-alignment-list}?
+
+
+mstack = element mstack {mstack.attributes, MstackExpression*}
+mstack.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute align {xsd:string {
+ pattern ='\s*(top|bottom|center|baseline|axis)\s*[0-9]*'}}?,
+ attribute stackalign {"left" | "center" | "right" | "decimalpoint"}?,
+ attribute charalign {"left" | "center" | "right"}?,
+ attribute charspacing {length | "loose" | "medium" | "tight"}?
+
+
+mlongdiv = element mlongdiv {mlongdiv.attributes, MstackExpression,MstackExpression,MstackExpression+}
+mlongdiv.attributes =
+ msgroup.attributes,
+ attribute longdivstyle {"lefttop" | "stackedrightright" | "mediumstackedrightright" | "shortstackedrightright" | "righttop" | "left/\right" | "left)(right" | ":right=right" | "stackedleftleft" | "stackedleftlinetop"}?
+
+
+msgroup = element msgroup {msgroup.attributes, MstackExpression*}
+msgroup.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute position {integer}?,
+ attribute shift {integer}?
+
+
+msrow = element msrow {msrow.attributes, MsrowExpression*}
+msrow.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute position {integer}?
+
+
+mscarries = element mscarries {mscarries.attributes, (MsrowExpression|mscarry)*}
+mscarries.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute position {integer}?,
+ attribute location {"w" | "nw" | "n" | "ne" | "e" | "se" | "s" | "sw"}?,
+ attribute crossout {list {("none" | "updiagonalstrike" | "downdiagonalstrike" | "verticalstrike" | "horizontalstrike")*}}?,
+ attribute scriptsizemultiplier {number}?
+
+
+mscarry = element mscarry {mscarry.attributes, MsrowExpression*}
+mscarry.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute location {"w" | "nw" | "n" | "ne" | "e" | "se" | "s" | "sw"}?,
+ attribute crossout {list {("none" | "updiagonalstrike" | "downdiagonalstrike" | "verticalstrike" | "horizontalstrike")*}}?
+
+
+maction = element maction {maction.attributes, MathExpression+}
+maction.attributes =
+ CommonAtt, CommonPresAtt,
+ attribute actiontype {text}?,
+ attribute selection {positive-integer}?
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict-content.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict-content.rnc
new file mode 100755
index 00000000000..e854b1cd13a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict-content.rnc
@@ -0,0 +1,60 @@
+# This is the Mathematical Markup Language (MathML) 3.0, an XML
+# application for describing mathematical notation and capturing
+# both its structure and content.
+#
+# Copyright 1998-2009 W3C (MIT, ERCIM, Keio)
+#
+# Use and distribution of this code are permitted under the terms
+# W3C Software Notice and License
+# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+
+default namespace m = "http://www.w3.org/1998/Math/MathML"
+
+ContExp = semantics-contexp | cn | ci | csymbol | apply | bind | share | cerror | cbytes | cs
+
+cn = element cn {cn.attributes,cn.content}
+cn.content = text
+cn.attributes = attribute type {"integer" | "real" | "double" | "hexdouble"}
+
+semantics-ci = element semantics {semantics.attributes,(ci|semantics-ci),
+ (annotation|annotation-xml)*}
+
+semantics-contexp = element semantics {semantics.attributes,ContExp,
+ (annotation|annotation-xml)*}
+
+ci = element ci {ci.attributes, ci.content}
+ci.attributes = CommonAtt, ci.type?
+ci.type = attribute type {"integer" | "rational" | "real" | "complex" | "complex-polar" | "complex-cartesian" | "constant" | "function" | "vector" | "list" | "set" | "matrix"}
+ci.content = text
+
+
+csymbol = element csymbol {csymbol.attributes,csymbol.content}
+
+SymbolName = xsd:NCName
+csymbol.attributes = CommonAtt, cd
+csymbol.content = SymbolName
+
+BvarQ = bvar*
+bvar = element bvar { ci | semantics-ci}
+
+apply = element apply {CommonAtt,apply.content}
+apply.content = ContExp+
+
+
+bind = element bind {CommonAtt,bind.content}
+bind.content = ContExp,bvar*,ContExp
+
+share = element share {CommonAtt, src, empty}
+
+cerror = element cerror {cerror.attributes, csymbol, ContExp*}
+cerror.attributes = CommonAtt
+
+cbytes = element cbytes {cbytes.attributes, base64}
+cbytes.attributes = CommonAtt
+base64 = xsd:base64Binary
+
+cs = element cs {cs.attributes, text}
+cs.attributes = CommonAtt
+
+MathExpression |= ContExp
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict.rnc
new file mode 100644
index 00000000000..31d2ad40051
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3-strict.rnc
@@ -0,0 +1,80 @@
+# This is the Mathematical Markup Language (MathML) 3.0, an XML
+# application for describing mathematical notation and capturing
+# both its structure and content.
+#
+# Copyright 1998-2008 W3C (MIT, ERCIM, Keio)
+#
+# Use and distribution of this code are permitted under the terms
+# W3C Software Notice and License
+# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+#
+#
+# Revision: $Id: mathml3-strict.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+#
+# Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase
+#
+# This is the RelaxNG schema module for the strict content part of MathML.
+
+default namespace m = "http://www.w3.org/1998/Math/MathML"
+
+include "mathml3-common.rnc"
+
+math.content |= ContExp
+
+#ednote(rnc:opel-content) What is the content of a operator element, currently all text?
+opel.content = text
+
+# we want to extend this in pragmatic CMathML, so we introduce abbrevs here.
+#ednote(rnc:cn-content) What is the content of a cn?
+cn.content = text |(cn,cn)
+cn.type.vals = "integer"|"real"|"double"
+
+cn = element cn {attribute base {text}?,
+ attribute type {cn.type.vals}?,
+ Definition.attrib,
+ MathML.Common.attrib,
+ (cn.content)*}
+
+ci = element ci {attribute type {xsd:string}?,
+ attribute nargs {xsd:string}?,
+ attribute occurrence {xsd:string}?,
+ Definition.attrib,
+ MathML.Common.attrib,
+ opel.content,
+ name.attrib?}
+
+cdname.attrib = attribute cd {xsd:NCName}
+
+csymbol = element csymbol {MathML.Common.attrib,
+ Definition.attrib,cdname.attrib?,cdbase.attrib?,
+ opel.content}
+
+# the content of the apply element, leave it empty and extend it later
+apply = element apply {MathML.Common.attrib,cdbase.attrib?,apply.content}
+apply-head = apply|bind|ci|csymbol|semantics-apply
+apply.content = apply-head,ContExp*
+semantics-apply = element semantics {semantics.attribs,apply-head, semantics-annotation*}
+
+qualifier = notAllowed
+
+# the content of the bind element, leave it empty and extend it later
+bind = element bind {MathML.Common.attrib,cdbase.attrib?,bind.content}
+bind-head = apply|csymbol|semantics-bind
+bind.content = bind-head,bvar*,qualifier?,ContExp
+semantics-bind = element semantics {semantics.attribs,bind-head, semantics-annotation*}
+
+bvar = element bvar {MathML.Common.attrib,cdbase.attrib?,bvar-head}
+bvar-head = ci|semantics-bvar
+semantics-bvar = element semantics {semantics.attribs,bvar-head, semantics-annotation*}
+
+share = element share {MathML.Common.attrib,attribute href {xsd:anyURI}}
+
+# the content of the cerror element, leave it empty and extend it later
+cerror = element cerror {MathML.Common.attrib,cdbase.attrib?,cerror.content}
+cerror-head = csymbol|apply|semantics-cerror
+cerror.content = cerror-head,ContExp*
+semantics-cerror = element semantics {semantics.attribs,cerror-head, semantics-annotation*}
+
+semantics-cmml = element semantics {semantics.attribs,ContExp, semantics-annotation*}
+
+ContExp = cn| ci | csymbol | apply | bind | share | cerror | semantics-cmml
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3.rnc
new file mode 100644
index 00000000000..317db3dd468
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mathml3.rnc
@@ -0,0 +1,21 @@
+# This is the Mathematical Markup Language (MathML) 3.0, an XML
+# application for describing mathematical notation and capturing
+# both its structure and content.
+#
+# Copyright 1998-2009 W3C (MIT, ERCIM, Keio)
+#
+# Use and distribution of this code are permitted under the terms
+# W3C Software Notice and License
+# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+
+default namespace m = "http://www.w3.org/1998/Math/MathML"
+
+## Content MathML
+include "mathml3-content.rnc"
+
+## Presentation MathML
+include "mathml3-presentation.rnc"
+
+## math and semantics common to both Content and Presentation
+include "mathml3-common.rnc"
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mocksoap.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mocksoap.rnc
new file mode 100644
index 00000000000..745ee82d7ce
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/mocksoap.rnc
@@ -0,0 +1,39 @@
+# A RelaxNG schema for Mock Soap with OMDoc content (OMDoc 1.3)
+# $Id: mocksoap.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/mocksoap.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+namespace omdoc = "http://omdoc.org/ns"
+namespace env = "http://www.w3.org/2003/05/soap-envelope"
+namespace ws = "http://www.mathweb.org/ws-fictional"
+
+start = Envelope
+
+include "omdoc-common.rnc"
+include "omdocmobj.rnc"
+include "omdocdoc.rnc"
+include "omdocdc.rnc"
+include "omdoccc.rnc"
+include "omdocmtxt.rnc"
+include "omdocst.rnc"
+include "omdocpf.rnc"
+
+
+Envelope = element env:Envelope {Body}
+Body = element env:Body {(prover|prove|proof|theory)*}
+prover = element ws:prover {attribute env:encodingStyle {xsd:anyURI}?,
+ name?,version?,URL?,uptime?,sysinfo?}
+name = element ws:name {text}
+version = element ws:version {text}
+URL = element ws:URL {text}
+uptime = element ws:uptime {text}
+sysinfo = element ws:sysinfo {ostype?,mips?}
+ostype = element ws:ostype {text}
+mips = element ws:mips {text}
+
+prove = element ws:prove {attribute env:encodingStyle {xsd:anyURI}?,
+ (assertion|replyWith|timeout)*}
+replyWith = element ws:replyWith {state*}
+timeout = element ws:timeout {text}
+state = element ws:state {text}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcd2.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcd2.rnc
new file mode 100644
index 00000000000..2a2b64e4371
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcd2.rnc
@@ -0,0 +1,59 @@
+# *********************************************
+#
+# Relax NG Schema for OpenMath CD
+#
+# *********************************************
+
+default namespace = "http://www.openmath.org/OpenMathCD"
+
+include "openmath2.rnc"
+
+start = CD
+
+CDComment = element CDComment { text }
+CDName = element CDName { xsd:NCName }
+CDUses = element CDUses { CDName* }
+CDURL = element CDURL { xsd:anyURI }
+CDBase = element CDBase { xsd:anyURI }
+text-or-om = (text | OMOBJ)*
+CDReviewDate = element CDReviewDate { xsd:date }
+CDDate = element CDDate { xsd:date }
+CDVersion = element CDVersion { xsd:nonNegativeInteger }
+CDRevision = element CDRevision { xsd:nonNegativeInteger }
+CDStatus = element CDStatus {
+ "official" |
+ "experimental" |
+ "private" |
+ "obsolete"}
+Description = element Description { text }
+Name = element Name { xsd:NCName }
+Role = element Role {
+ "binder" |
+ "attribution" |
+ "semantic-attribution" |
+ "error" |
+ "application" |
+ "constant" }
+CMP = element CMP { text }
+FMP = element FMP {
+ attribute kind {xsd:string}?,
+ OMOBJ
+ }
+# allow embedded OM
+Example = element Example { text-or-om }
+CDDefinition =
+ element CDDefinition {
+ CDComment*,
+ (Name & Role? & Description),
+ (CDComment | Example | FMP | CMP)*
+ }
+CD =
+ element CD {
+ (CDComment* & Description? &
+ CDName & CDURL? & CDBase? &
+ CDReviewDate? & CDDate & CDStatus &
+ CDUses? &
+ CDVersion & CDRevision),
+ ( CDDefinition,CDComment* )+
+ }
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdgroup2.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdgroup2.rnc
new file mode 100644
index 00000000000..3b6754e471d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdgroup2.rnc
@@ -0,0 +1,33 @@
+
+# Schema for OpenMath CD groups
+
+# info on the CD group itself
+
+default namespace = "http://www.openmath.org/OpenMathCDG"
+
+CDGroupName = element CDGroupName { xsd:NCName }
+CDGroupVersion = element CDGroupVersion { xsd:nonNegativeInteger }
+CDGroupRevision = element CDGroupRevision { xsd:nonNegativeInteger }
+CDGroupURL = element CDGroupURL { text }
+CDGroupDescription = element CDGroupDescription { text }
+# info on the CDs in the group
+CDComment = element CDComment { text }
+CDGroupMember =
+ element CDGroupMember {
+ CDComment?, CDName, CDVersion?, CDURL?
+ }
+CDName = element CDName { xsd:NCName }
+CDVersion = element CDVersion { xsd:nonNegativeInteger }
+CDURL = element CDURL { text }
+# structure of the group
+CDGroup =
+ element CDGroup {
+ CDGroupName,
+ CDGroupVersion,
+ CDGroupRevision?,
+ CDGroupURL,
+ CDGroupDescription,
+ (CDGroupMember | CDComment)*
+ }
+start = CDGroup
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdsig2.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdsig2.rnc
new file mode 100644
index 00000000000..32aa235cc76
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omcdsig2.rnc
@@ -0,0 +1,32 @@
+# *********************************************
+#
+# Relax NG Schema for OpenMath CD Signatures
+#
+# *********************************************
+
+default namespace = "http://www.openmath.org/OpenMathCDS"
+
+include "openmath2.rnc"
+
+start = CDSignatures
+
+CDSComment = element CDSComment { text }
+CDSReviewDate = element CDSReviewDate { text }
+CDSStatus = element CDSStatus {
+ "official" |
+ "experimental" |
+ "private" |
+ "obsolete"}
+CDSignatures =
+ element CDSignatures {
+ attlist.CDSignatures,
+ (CDSComment)*,
+ (CDSReviewDate? & CDSStatus),
+ (CDSComment | Signature)*
+ }
+attlist.CDSignatures =
+ attribute cd { xsd:NCName },
+ attribute type { xsd:NCName }
+Signature = element Signature { attlist.Signature, OMOBJ? }
+attlist.Signature = attribute name { text }
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc-common.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc-common.rnc
new file mode 100644
index 00000000000..eef4f53b04e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc-common.rnc
@@ -0,0 +1,66 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Common attributes
+# $Id: omdoc-common.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoc-common.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+namespace local = ""
+
+# all the explicitly namespaced attributes, except xml:lang, which
+# is handled explicitly
+nonlocal.attribs = attribute * - (local:* | xml:*) {xsd:string}*
+
+# the attributes for CSS and PRES styling
+css.attribs = attribute style {xsd:string}? & attribute class {xsd:string}?
+
+omdocref = xsd:anyURI # an URI reference pointing to an OMDoc fragment
+omdocrefs = list {xsd:anyURI*} # a whitespace-separated list of omdocref
+
+xref.attrib = attribute xref {omdocref}
+tref = attribute tref {omdocref}
+
+# for the moment, we may get regexp at some point.
+curie = xsd:string
+curies = xsd:string
+safecurie = xsd:string
+
+about.attrib = attribute about {xsd:anyURI|safecurie}
+xmlbase.attrib = attribute xml:base {xsd:anyURI}
+xmlid.attrib = attribute xml:id {xsd:ID}
+
+idrest.attribs = css.attribs & nonlocal.attribs & about.attrib? & xmlbase.attrib?
+
+id.attribs = xmlid.attrib? & idrest.attribs
+
+toplevel.attribs = id.attribs, attribute generated-from {omdocref}?
+
+iso639 = "aa" | "ab" | "af" | "am" | "ar" | "as" |
+"ay" | "az" | "ba" | "be" | "bg" | "bh" | "bi" | "bn" | "bo" | "br" | "ca" | "co"
+| "cs" | "cy" | "da" | "de" | "dz" | "el" | "en" | "eo" | "es" | "et" | "eu" |
+"fa" | "fi" | "fj" | "fo" | "fr" | "fy" | "ga" | "gd" | "gl" | "gn" | "gu" | "ha"
+| "he" | "hi" | "hr" | "hu" | "hy" | "ia" | "ie" | "ik" | "id" | "is" | "it" |
+"iu" | "ja" | "jv" | "ka" | "kk" | "kl" | "km" | "kn" | "ko" | "ks" | "ku" | "ky"
+| "la" | "ln" | "lo" | "lt" | "lv" | "mg" | "mi" | "mk" | "ml" | "mn" | "mo" |
+"mr" | "ms" | "mt" | "my" | "na" | "ne" | "nl" | "no" | "oc" | "om" | "or" | "pa"
+| "pl" | "ps" | "pt" | "qu" | "rm" | "rn" | "ro" | "ru" | "rw" | "sa" | "sd" |
+"sg" | "sh" | "si" | "sk" | "sl" | "sm" | "sn" | "so" | "sq" | "sr" | "ss" | "st"
+| "su" | "sv" | "sw" | "ta" | "te" | "tg" | "th" | "ti" | "tk" | "tl" | "tn" |
+"to" | "tr" | "ts" | "tt" | "tw" | "ug" | "uk" | "ur" | "uz" | "vi" | "vo" | "wo"
+| "xh" | "yi" | "yo" | "za" | "zh" | "zu"
+
+xml.lang.attrib = attribute xml:lang {iso639}?
+
+Anything = (AnyElement|text)*
+AnyElement = element * {AnyAttribute,(text | AnyElement)*}
+AnyAttribute = attribute * { text }*
+
+## useful classes to be extended in the modules
+inline.class = empty
+omdoc.class = empty
+plike.class = empty
+
+## mixed models
+inline.model = text & inline.class
+
+metadata.model &= dublincore
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc.rnc
new file mode 100644
index 00000000000..0616aaf0147
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoc.rnc
@@ -0,0 +1,24 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3)
+# $Id: omdoc.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoc.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+start = omdoc
+
+include "omdoc-common.rnc"
+include "omdocmobj.rnc"
+include "omdocmeta.rnc"
+include "omdocdoc.rnc"
+include "omdocdc.rnc"
+include "omdoccc.rnc"
+include "omdocmtxt.rnc"
+include "omdocrt.rnc"
+include "omdocpres.rnc"
+include "omdocst.rnc"
+include "omdoccth.rnc"
+include "omdocdg.rnc"
+include "omdocpf.rnc"
+include "omdocadt.rnc"
+include "omdocext.rnc"
+include "omdocquiz.rnc"
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocadt.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocadt.rnc
new file mode 100644
index 00000000000..131df5606ff
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocadt.rnc
@@ -0,0 +1,49 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module ADT
+# $Id: omdocadt.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocadt.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+omdoc.class &= adt*
+
+adt.sym.attrib = id.attribs,scope.attrib,attribute name {xsd:NCName}
+
+# adts are abstract data types, they are short forms for groups of symbols
+# and their definitions, therefore, they have much the same attributes.
+
+adt.attribs = toplevel.attribs &
+ attribute parameters {list {xsd:NCName*}}?
+adt.class = sortdef+
+adt.model = metadata.class & adt.class
+adt = element adt {tref|(adt.attribs & adt.model)}
+
+adttype = "loose" | "generated" | "free"
+sortdef.attribs = adt.sym.attrib &
+ attribute role {"sort"}? &
+ attribute type {adttype}?
+sortdef.model = metadata.class & constructor* & insort* & recognizer?
+sortdef = element sortdef {tref|(sortdef.attribs &sortdef.model)}
+
+insort.attribs = attribute for {omdocref}
+insort.model = empty
+insort = element insort {tref|(insort.attribs & insort.model)}
+
+constructor.attribs = adt.sym.attrib & sym.role.attrib?
+constructor.model = metadata.class & argument*
+constructor = element constructor {tref|(constructor.attribs & constructor.model)}
+
+recognizer.attribs = adt.sym.attrib & sym.role.attrib?
+recognizer.model = metadata.class
+recognizer = element recognizer {tref|(recognizer.attribs & recognizer.model)}
+
+argument.attribs = empty
+argument.model = type & selector?
+argument = element argument {tref|(argument.attribs & argument.model)}
+
+selector.attribs = adt.sym.attrib &
+ sym.role.attrib? &
+ attribute total {"yes" | "no"}?
+selector.model = metadata.class
+selector = element selector {tref|(selector.attribs & selector.model)}
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccc.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccc.rnc
new file mode 100644
index 00000000000..3828aec5a6d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccc.rnc
@@ -0,0 +1,10 @@
+# A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module CC
+# $Id: omdoccc.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoccc.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+# we include the OMDoc version of cc metadata and specialize the description
+license = grammar {include "creativecommons.rnc" {description = parent plike.class}}
+
+metadata.class &= license*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccth.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccth.rnc
new file mode 100644
index 00000000000..8e52773b51d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdoccth.rnc
@@ -0,0 +1,53 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module CTH
+# $Id: omdoccth.rnc 8979 2011-11-29 04:56:59Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoccth.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+constitutive.class &= inclusion*
+imports.model &= morphism? &
+ attribute type { "local" | "global"}? &
+ attribute conservativity {"conservative" | "monomorphism" | "definitional"}? &
+ attribute conservativity-just {omdocref}?
+
+toplevel.attribs &= attribute generated-via {omdocref}?
+constitutive.attribs &= attribute generated-via {omdocref}?
+
+omdoc.class &= theory-inclusion* & axiom-inclusion*
+theory-inclusion.justification = obligation*
+axiom-inclusion.justification = obligation*
+
+fromto.attrib = from.attrib & attribute to {omdocref}
+# attributes 'to' and 'from' are URIref
+
+morphism.attribs = id.attribs &
+ attribute hiding {omdocrefs}? &
+ attribute base {omdocrefs}?
+morphism.model = def.eq?
+morphism = element morphism {tref|(morphism.attribs & morphism.model)}
+# base points to some other morphism it extends
+
+inclusion.attribs = id.attribs & attribute via {omdocref}
+inclusion.model = empty
+inclusion = element inclusion {tref|(inclusion.attribs & inclusion.model)}
+# via points to a theory-inclusion
+
+theory-inclusion.attribs = toplevel.attribs & fromto.attrib
+theory-inclusion.model = metadata? & morphism? & theory-inclusion.justification
+theory-inclusion = element theory-inclusion {tref|(theory-inclusion.attribs & theory-inclusion.model)}
+
+axiom-inclusion.attribs = toplevel.attribs & fromto.attrib
+axiom-inclusion.model = metadata? & morphism? & axiom-inclusion.justification
+axiom-inclusion = element theory-inclusion {tref|(axiom-inclusion.attribs & axiom-inclusion.model)}
+
+obligation.attribs = id.attribs &
+ attribute induced-by {omdocref} &
+ attribute assertion {omdocref}
+obligation.model = empty
+obligation = element obligation {tref|(obligation.attribs & obligation.model)}
+# attribute 'assertion' is a URIref, points to an assertion
+# that is the proof obligation induced by the axiom or definition
+# specified by 'induced-by'.
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdc.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdc.rnc
new file mode 100644
index 00000000000..7d91738da37
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdc.rnc
@@ -0,0 +1,29 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module DC
+# $Id: omdocdc.rnc 8968 2011-09-07 05:37:09Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocdc.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+# we include the dublin core and MARC elements, filling them with our content types
+dc.common = id.attribs & nonlocal.attribs
+dc.comlang =dc.common & xml.lang.attrib
+
+dublincore = grammar {include "MARCRelators.rnc"
+ include "dublincore.rnc"
+ {dc.date = parent dc.common &
+ attribute action {xsd:NMTOKEN}? &
+ attribute who {xsd:anyURI}? &
+ (xsd:date|xsd:dateTime)
+ dc.identifier = parent tref|(parent dc.common &
+ attribute scheme {xsd:NMTOKEN} &
+ text)
+ dc.type = parent tref|(parent dc.common & ("Dataset" | "Text" | "Collection"))
+ dc.inline = parent tref|(parent dc.comlang & parent inline.model)
+ dc.text = parent tref|(parent dc.comlang & parent plike.class)
+ dc.person = parent tref|(parent dc.common &
+ attribute role {MARCRelators}? &
+ parent inline.model)
+ dc.rights = parent tref|(parent dc.comlang & parent plike.class)
+ dc.source = parent plike.class}}
+
+metadata.model &= dublincore
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdg.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdg.rnc
new file mode 100644
index 00000000000..af5cfe2fc5b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdg.rnc
@@ -0,0 +1,28 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module CTH
+# $Id: omdocdg.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocdg.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+omdoc.class &= decomposition* & path-just*
+omdoccth.theory-inclusion.justification &= decomposition*
+omdoccth.axiom-inclusion.justification &= path-just*
+
+decomposition.attribs = toplevel.attribs & for.attrib? &
+ attribute links {omdocrefs}
+decomposition.model = empty
+decomposition = element decomposition {tref|(decomposition.attribs & decomposition.model)}
+# attribute 'for' points to a 'theory-inclusion', which this
+# element justifies; attribute 'links' is an URIrefs, points to a
+# list of axiom-inlcusions and theory-inclusions
+
+path-just.attribs = for.attrib? & id.attribs &
+ attribute local {omdocref} &
+ attribute globals {omdocrefs}
+path-just.model = empty
+path-just = element path-just {tref|(path-just.attribs & path-just.model)}
+# attribute 'local' is an URIref, points to axiom-inclusion
+# 'globals' is an URIrefs, points to a list of theory-inclusions
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdoc.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdoc.rnc
new file mode 100644
index 00000000000..77215095b2b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocdoc.rnc
@@ -0,0 +1,62 @@
+# A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module DOC
+# $Id: omdocdoc.rnc 8972 2011-09-09 11:36:34Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocdoc.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+# extend the stuff that can go into a mathematical text
+
+omdoc.class &= ignore* & tableofcontents*
+
+ignore.attribs = id.attribs &
+ attribute type {xsd:string}? &
+ attribute comment {xsd:string}?
+ignore.model = Anything
+ignore = element ignore {tref|(ignore.attribs & ignore.model)}
+
+tableofcontents.attribs = attribute level {xsd:nonNegativeInteger}?
+tableofcontents.model = empty
+tableofcontents = element tableofcontents {tref|(tableofcontents.attribs & tableofcontents.model)}
+
+index.attribs = id.attribs
+index.model = empty
+index = element index {tref|(index.attribs & index.model)}
+
+bibliography.attribs = id.attribs, attribute files {text}
+bibliography.model = empty
+bibliography = element bibliography {tref|(bibliography.attribs & bibliography.model)}
+
+
+group.attribs = id.attribs,
+ attribute type {xsd:anyURI}?,
+ attribute modules {xsd:anyURI}?,
+ attribute layout {text}?
+
+## The <omdoc> and <omgroup> elements allow frontmatter and backmatter,
+## which we will now define
+frontmatter = metadata.class & tableofcontents?
+backmatter = index? & bibliography?
+docstruct.class = omgroup*
+omdoc.class &= docstruct.class
+mainmatter = omdoc.class
+
+omgroup.attribs = toplevel.attribs & group.attribs
+omgroup.model = frontmatter,mainmatter,backmatter
+omgroup = element omgroup {tref|(omgroup.attribs & omgroup.model)}
+
+## the model of the document root only differs from <omgroup> in the version attribute
+omdoc.attribs = toplevel.attribs & group.attribs &
+ attribute version {xsd:string {pattern = "1.3"}}?
+omdoc.model =frontmatter,mainmatter,backmatter
+omdoc = element omdoc {tref|(omdoc.attribs & omdoc.model)}
+
+
+############################## deprecated ################################
+# the following is for legacy only, and will be removed soon.
+ref.attribs = id.attribs & xref.attrib & attribute type {"include" | "cite"}
+ref.model = empty
+ref = element ref{ref.attribs & ref.model}
+
+omdoc.class &= ref*
+inline.class &= ref*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocext.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocext.rnc
new file mode 100644
index 00000000000..8b37d56603b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocext.rnc
@@ -0,0 +1,64 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module EXT
+# $Id: omdocext.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocext.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+plike.class &= omlet*
+omdoc.class &= private* & code*
+
+private.attribs = toplevel.attribs &
+ for.attrib? &
+ attribute requires {omdocref}? &
+ attribute reformulates {omdocref}?
+private.model = metadata.class & data+
+private = element private {tref|(private.attribs & private.model)}
+# reformulates is a URIref to the omdoc elements that are reformulated by the
+# system-specific information in this element
+
+code.attribs = private.attribs
+code.model = metadata.class & data* & input* & output* & effect*
+code = element code {tref|(code.attribs & code.model)}
+
+input.attribs = id.attribs
+input.model = mcf.class
+input = element input {tref|(input.attribs & input.model)}
+
+output.attribs = id.attribs
+output.model = mcf.class
+output = element output {tref|(output.attribs & output.model)}
+
+effect.attribs = id.attribs
+effect.model = mcf.class
+effect = element effect {tref|(effect.attribs & effect.model)}
+
+data.attribs = id.attribs &
+ attribute href {xsd:anyURI}? &
+ attribute size {xsd:string}? &
+ attribute pto {xsd:string}? &
+ attribute pto-version {xsd:string}? &
+ attribute original {"external" | "local"}?
+
+data.textformat = "TeX"
+data.text = data.attribs & attribute format {data.textformat}? & text
+data.any = data.attribs & attribute format {xsd:anyURI}? & Anything
+data.model = data.text | data.any
+data = element data {tref|data.model}
+
+omlet.attribs = id.attribs &
+ attribute action {"display" | "execute" | "other"}? &
+ attribute show {"new" | "replace" | "embed" | "other"}? &
+ attribute actuate {"onPresent" | "onLoad" | "onRequest" | "other"}?
+omlet.param = text & inline.class & param*
+omlet.data = attribute data {xsd:anyURI}|(private|code)
+omlet.model = metadata.class & omlet.param & omlet.data
+omlet = element omlet {tref|(omlet.attribs & omlet.model)}
+
+param.attribs = id.attribs &
+ attribute name {xsd:string} &
+ attribute value {xsd:string}? &
+ attribute valuetype {"data" | "ref" | "object"}?
+param.model = mobj?
+param = element param {tref|(param.attribs & param.model)}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmeta.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmeta.rnc
new file mode 100644
index 00000000000..a77d98d65d4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmeta.rnc
@@ -0,0 +1,39 @@
+# A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module META
+# $Id: omdocmeta.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocmeta.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2007-2008 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+rel.attrib = attribute rel {curies}
+rev.attrib = attribute rev {curies}
+content.attrib = attribute content {xsd:string}
+resource.attrib = attribute resource {xsd:anyURI|safecurie}
+property.attrib = attribute property {curies}
+datatype.attrib = attribute datatype {curie}
+typeof.attrib = attribute typeof {curies}
+
+meta.attribs = id.attribs & property.attrib?& datatype.attrib? & xml.lang.attrib
+meta.model = content.attrib | Anything | (content.attrib & Anything)
+meta = element meta {tref|(meta.attribs & meta.model)}
+
+mlink.attribs = id.attribs & rel.attrib? & rev.attrib? & resource.attrib?
+mlink.class = resource* & mlink* & meta*
+mlink.model = attribute href {curie}|mlink.class
+mlink = element link {tref|(mlink.attribs,mlink.model)}
+
+resource.attribs = id.attribs & typeof.attrib? & about.attrib?
+resource.class = meta* & mlink*
+resource = element resource {tref|(resource.attribs & resource.class)}
+
+metadata.class = metadata? & meta* & mlink*
+metadata.model = metadata.class
+metadata.attribs = id.attribs
+metadata = element metadata {tref|(metadata.attribs & metadata.model)}
+
+rdfa.attribs = rel.attrib? & rev.attrib? & content.attrib? & about.attrib?
+ & resource.attrib? & property.attrib? & datatype.attrib?
+ & typeof.attrib?
+
+id.attribs &= rdfa.attribs
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmobj.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmobj.rnc
new file mode 100644
index 00000000000..dfe54e9d1ac
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmobj.rnc
@@ -0,0 +1,27 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module MOBJ
+# $Id: omdocmobj.rnc 8973 2011-09-09 12:45:16Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocmobj.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2009 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+namespace om = "http://www.openmath.org/OpenMath"
+namespace local = ""
+
+# the legacy element, it can encapsulate the non-migrated formats
+legacy.attribs = id.attribs &
+ attribute formalism {xsd:anyURI}? &
+ attribute format {xsd:anyURI}
+legacy.model = Anything
+legacy = element legacy {tref|(legacy.attribs & legacy.model)}
+
+nonom.attribs = attribute * - (local:* | om:*) {text}*
+extom.attribs = idrest.attribs & nonom.attribs
+omobj = grammar {include "openmath2.rnc"
+ common.attributes &= parent extom.attribs}
+
+cmml = grammar {include "mathml3-common.rnc"
+ include "mathml3-strict-content.rnc"}
+
+mobj = legacy | omobj | cmml
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmtxt.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmtxt.rnc
new file mode 100644
index 00000000000..e4130acab1c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocmtxt.rnc
@@ -0,0 +1,105 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module MTXT
+# $Id: omdocmtxt.rnc 8967 2011-09-02 12:41:47Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocmtxt.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+omdoc.class &= omtext*
+
+#attribute for is a whitespace-separated list of URIrefs
+for.attrib = attribute for {omdocrefs}
+from.attrib = attribute from {omdocref}
+mc.class = metadata.class & CMP*
+mcf.class = mc.class & FMP*
+
+rsttype = "abstract" | "introduction" | "annote" |
+ "conclusion" | "thesis" | "comment" | "antithesis" |
+ "elaboration" | "motivation" | "evidence" | "note" |
+ "warning" | "question" | "answer" | "transition"
+
+statementtype = "axiom" | "definition" | "example" | "proof" |
+ "derive" | "hypothesis" | "notation"
+
+assertiontype = "assertion" | "theorem" | "lemma" | "corollary" | "proposition" |
+ "conjecture" | "false-conjecture" | "obligation" |
+ "postulate" | "formula" | "assumption" | "rule"
+
+verbalizes.attrib = attribute verbalizes {omdocrefs}
+omtext.type.attrib = attribute type {rsttype | statementtype | assertiontype | xsd:anyURI}
+index.attrib = attribute index {xsd:NMTOKEN}
+parallel.attribs = verbalizes.attrib? & index.attrib? & omtext.type.attrib?
+
+omtext.attribs = toplevel.attribs &
+ omtext.type.attrib? &
+ attribute for {omdocref}? &
+ attribute from {omdocref}? &
+ verbalizes.attrib?
+omtext.model = mcf.class
+omtext = element omtext {tref|(omtext.attribs & omtext.model)}
+
+CMP.attribs = xml.lang.attrib & id.attribs
+CMP.model = plike.class
+CMP = element CMP {tref|(CMP.attribs & CMP.model)}
+
+term.attribs = id.attribs &
+ attribute role {text}? &
+ attribute cdbase {xsd:anyURI}? &
+ attribute cd {xsd:NCName} &
+ attribute name {xsd:NCName}
+term.model = inline.model
+term = element term {tref|(term.attribs & term.model)}
+
+FMP.attribs = id.attribs & attribute logic {xsd:NMTOKEN}?
+FMP.model = (assumption*,conclusion*)|mobj
+FMP = element FMP {tref|(FMP.attribs & FMP.model)}
+
+assumption.attribs = id.attribs &
+ attribute inductive {"yes" | "no"}?
+assumption.model = mobj
+assumption = element assumption {tref|(assumption.attribs & assumption.model)}
+
+conclusion.attribs = id.attribs
+conclusion.model = mobj
+conclusion = element conclusion {tref|(conclusion.attribs & conclusion.model)}
+
+note.attribs = id.attribs & for.attrib? & parallel.attribs & attribute type {xsd:NMTOKEN}?
+note.model = inline.model
+note = element note {tref|(note.attribs & note.model)}
+
+# index
+index.att = attribute sort-by {text}? &
+ attribute see {omdocrefs}? &
+ attribute seealso {omdocrefs}? &
+ attribute links {list {xsd:anyURI*}}?
+
+idx.attribs = id.attribs|xref.attrib
+idx.model = idt? & ide+
+idx = element idx {tref|(idx.attribs & idx.model)}
+
+ide.attribs = (id.attribs & index.att & index.attrib) | xref.attrib
+ide.model = idp*
+ide = element ide {tref|(ide.attribs & ide.model)}
+
+idt.attribs = id.attribs|xref.attrib
+idt.model = inline.model
+idt = element idt {tref|(idt.attribs & idt.model)}
+
+idp.attribs = index.att
+idp.model = inline.model
+idp = element idp {tref|(idp.attribs & idp.model)}
+
+# citations
+citation.attribs = id.attribs & attribute bibrefs {text}
+citation.model = empty
+citation = element citation {tref|(citation.attribs & citation.model)}
+
+# citations
+oref.attribs = id.attribs & attribute href {xsd:anyURI}
+oref.model = empty
+oref = element oref {tref|(oref.attribs & oref.model)}
+
+# what can go into a mathematical text
+op.class = \term* & mobj* & note* & idx* & citation* & oref*
+inline.class &=op.class
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpf.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpf.rnc
new file mode 100644
index 00000000000..d10b6e89600
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpf.rnc
@@ -0,0 +1,39 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module PF
+# $Id: omdocpf.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocpf.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+omdocpf.opt.content &= proof* & proofobject*
+omdoc.class &= proof* & proofobject*
+
+proof.attribs = toplevel.attribs & for.attrib?
+proof.model = metadata.class & omtext* & symbol* & definition* & derive* & hypothesis*
+proof = element proof {tref|(proof.attribs & proof.model)}
+
+proofobject.attribs = proof.attribs
+proofobject.model = metadata.class & mobj
+proofobject = element proofobject {tref|(proofobject.attribs & proofobject.model)}
+
+derive.attribs = id.attribs & attribute type {"conclusion" | "gap"}?
+derive.model = mcf.class & method?
+derive = element derive {tref|(derive.attribs & derive.model)}
+
+hypothesis.attribs = id.attribs & attribute inductive {"yes" | "no"}?
+hypothesis.model = mcf.class
+hypothesis = element hypothesis {tref|(hypothesis.attribs & hypothesis.model)}
+
+method.attribs = id.attribs & xref.attrib?
+method.model = mobj* & premise* & proof* & proofobject*
+method = element method {tref|(method.attribs & method.model)}
+
+premise.attribs = xref.attrib & attribute rank {xsd:nonNegativeInteger}?
+premise.model = empty
+premise = element premise {tref|(premise.attribs & premise.model)}
+
+# The rank of a premise specifies its importance in the inference rule.
+# Rank 0 (the default) is a real premise, whereas positive rank signifies
+# sideconditions of varying degree.
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocphys.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocphys.rnc
new file mode 100644
index 00000000000..88c30df8169
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocphys.rnc
@@ -0,0 +1,47 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module PHYS
+# $Id: omdocphys.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocphys.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+system.attribs = id.attribs &
+ attribute type {"ideal" | "real"}
+system.model = metadata.class &
+ observable* & improvement? & algebra? & realization?
+system = element system {tref|(system.attribs & system.model)}
+
+observable.attribs = id.attribs &
+ attribute low {xsd:float} &
+ attribute high {xsd:float}
+observable.model = mobj,mobj
+observable = element observable {tref|(observable.attribs & observable.model)}
+
+improvement.attribs = id.attribs
+improvement.model = mcf.class
+improvement = element improvement {tref|(improvement.attribs & improvement.model)}
+
+realization.attribs = id.attribs
+realization.model = mcf.class
+realization = element realization {tref|(realization.attribs & realization.model)}
+
+interpretation.attribs = id.attribs
+interpretation.model = mcf.class
+interpretation = element interpretation {tref|(interpretation.attribs & interpretation.model)}
+
+state.attribs = id.attribs & attribute of {omdocref}
+state.model = metadata.class & value*
+state = element state {tref|(state.attribs & state.model)}
+
+value.attribs = id.attribs &
+ attribute for {omdocref} &
+ attribute num {xsd:float}
+value.model = metadata.class
+value = element value {tref|(value.attribs & value.model)}
+
+experiment.attribs = id.attribs
+experiment.model = mcf.class,state,state
+experiment = element experiment {tref|(experiment.attribs & experiment.model)}
+
+evidence.attribs = id.attribs & attribute for {omdocref}
+evidence.model = experiment*,interpretation
+evidence = element evidence {tref|(evidence.attribs & evidence.model)}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpres.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpres.rnc
new file mode 100644
index 00000000000..2d2b26db632
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocpres.rnc
@@ -0,0 +1,91 @@
+# A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module PRES
+# $Id: omdocpres.rnc 8973 2011-09-09 12:45:16Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocpres.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2008 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+omdoc.class &= notation*
+
+## we first add the ic and ec attributes for notation contexts everywhere
+ic.attrib = attribute ic {text}
+ec.attrib = attribute ec {text}
+idrest.attribs &= ic.attrib? & ec.attrib?
+
+prototype.attribs = empty
+prototype.model = protoexp
+prototype = element prototype {tref|(prototype.attribs & prototype.model)}
+
+protoexp = grammar {include "openmath2.rnc"
+ {start = omel
+ common.attributes = parent id.attribs}
+ omel |= parent proto.class
+ omvar |= parent proto.class
+ common.attributes &= parent ntn.attrib}
+ | grammar {include "mathml3.rnc" {start = ContExp}
+ ContExp |= parent proto.class
+ ci |= parent proto.class
+ CommonAtt &= parent ntn.attrib}
+
+precedence.att = attribute precedence {xsd:integer} | attribute argprec {xsd:integer}
+context.att = attribute xml:lang {text}? &
+ attribute context {text}? &
+ attribute variant {text}?
+
+format.att = attribute format {text}?
+
+rendering.attribs = precedence.att? & context.att & format.att
+rendering.model = renderexp
+
+rendering = element rendering {tref|(rendering.attribs & rendering.model)}
+
+renderexp = grammar {include "mathml3-common.rnc" {start = PresentationExpression}
+ include "mathml3-presentation.rnc"
+ PresentationExpression |= parent render.class
+ CommonAtt &= parent ntn.attrib
+ mtable.content.class |= parent render.class
+ mtr.content.class |= parent render.class}
+ | (pdata|render.class)*
+
+pdata.attribs = empty
+pdata.model = text
+pdata = element pdata {pdata.attribs & pdata.model}
+
+iterexp = grammar {include "mathml3.rnc"
+ {start = PresentationExpression|mtr|mlabeledtr|mtd}
+ PresentationExpression |= parent render.class
+ MathML.Common.attrib &= parent ntn.attrib
+ mtable.content.class |= parent render.class
+ mtr.content.class |= parent render.class}
+
+ name.attrib = attribute name {xsd:NCName}?
+ triple.att = attribute cdbase {xsd:anyURI}? & name.attrib & attribute cd {xsd:NCName}?
+
+notation.attribs = id.attribs & triple.att
+notation.model = metadata.class & CMP* & prototype+ & rendering*
+notation = element notation {tref|(notation.attribs & notation.model)}
+
+# we extend the content and presentation models by metavariables
+proto.class = exprlist | expr
+render.class = render | iterate
+ntn.attrib = attribute cr {text}? & attribute egroup {text}?
+
+exprlist.attribs = name.attrib
+exprlist.model = protoexp*
+exprlist = element exprlist {exprlist.attribs & exprlist.model}
+
+expr.attribs = name.attrib
+expr.model = empty
+expr = element expr {tref|(expr.attribs & expr.model)}
+
+iterate.attribs = name.attrib & precedence.att?
+iterate.model = separator & iterexp*
+iterate = element iterate {tref|(iterate.attribs & iterate.model)}
+
+render.attribs = name.attrib & precedence.att?
+render.model = empty
+render = element render {tref|(render.attribs & render.model)}
+
+separator.attribs = empty
+separator.model = renderexp*
+separator = element separator {tref|(separator.attribs & separator.model)}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocquiz.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocquiz.rnc
new file mode 100644
index 00000000000..176ce32feae
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocquiz.rnc
@@ -0,0 +1,37 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module QUIZ
+# $Id: omdocquiz.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocquiz.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+omdoc.class &= exercise* & hint* & mc* & solution*
+plike.class &= hint*
+
+exercise.attribs = toplevel.attribs & for.attrib?
+exercise.model = mcf.class | omdoc.class
+exercise = element exercise {tref|(exercise.attribs & exercise.model)}
+
+omdocpf.opt.content = notAllowed
+
+hint.attribs = toplevel.attribs & for.attrib?
+hint.model = mcf.class
+hint = element hint {tref|(hint.attribs & hint.model)}
+
+solution.attribs = toplevel.attribs & for.attrib?
+solution.model = mcf.class | omdoc.class
+solution = element solution {tref|(solution.attribs & solution.model)}
+
+mc.attribs = toplevel.attribs & for.attrib?
+mc.model = choice,hint?,answer
+mc = element mc {tref|(mc.attribs & mc.model)}
+
+choice.attribs = id.attribs
+choice.model = mcf.class
+choice = element choice {tref|(choice.attribs & choice.model)}
+
+answer.attribs = id.attribs & attribute verdict {"true" | "false"}?
+answer.model = mcf.class
+answer = element answer {tref|(answer.attribs & answer.model)}
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocrt.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocrt.rnc
new file mode 100644
index 00000000000..ac7c3010494
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocrt.rnc
@@ -0,0 +1,32 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module RT
+# $Id: omdocrt.rnc 8973 2011-09-09 12:45:16Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocrt.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+rst.attribs = verbalizes.attrib?
+
+## We extend the three main content models by xhtml elements
+inline.class &= grammar {include "pxhtml.rnc"
+ {Inline.model = text & parent metadata.class & Inline.class}
+ Inline.class &= parent op.class
+ span.attlist &= parent rst.attribs
+ start = Inline.class}
+
+plike.class &= grammar {include "pxhtml.rnc"
+ {Inline.model = text & parent metadata.class & Inline.class}
+ Common.attrib &= parent idrest.attribs & parent parallel.attribs
+ Inline.class &= parent op.class
+ span.attlist &= parent rst.attribs
+ start = Block.class}
+
+omdoc.class &= grammar {include "pxhtml.rnc"
+ {Inline.model = text & parent metadata.class & Inline.class}
+ Common.attrib &= parent idrest.attribs & parent parallel.attribs
+ Inline.class &= parent op.class
+ Block.cass &= parent plike.class
+ Flow.model &= parent omdoc.class
+ span.attlist &= parent rst.attribs
+ start = List.class}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocst.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocst.rnc
new file mode 100644
index 00000000000..46419186d52
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/omdocst.rnc
@@ -0,0 +1,135 @@
+# A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module ST
+# $Id: omdocst.rnc 8972 2011-09-09 11:36:34Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocst.rnc $
+# See the documentation and examples at http://www.omdoc.org
+# Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace omdoc = "http://omdoc.org/ns"
+
+omdoc.class &= symbol* & axiom* & definition* & imports* & assertion* & type* & alternative* & example* & theory*
+
+constitutive.attribs = id.attribs & attribute generated-from {omdocref}?
+sym.role.attrib = attribute role {"type" | "sort" | "object" |
+ "binder" | "attribution" | "application" | "constant" |
+ "semantic-attribution" | "error"}
+theory-unique = xsd:NCName
+scope.attrib = attribute scope {"global" | "local"}?
+symbol.attribs = scope.attrib &
+ attribute name {theory-unique}? &
+ constitutive.attribs &
+ sym.role.attrib?
+symbol.model = metadata.class & type*
+symbol = element symbol {tref|(symbol.attribs & symbol.model)}
+
+forname.attrib = attribute for {list {xsd:NCName+}}
+axiom.attribs = constitutive.attribs & forname.attrib & attribute type {xsd:string}?
+axiom.model = metadata.class & mcf.class
+axiom = element axiom {tref|(axiom.attribs & axiom.model)}
+
+#informal definitions
+def.informal = attribute type {"informal"}?
+
+#simple definitions
+def.simple.attribs = attribute type {"simple"}
+def.simple = def.simple.attribs & mobj
+
+#implicit definitions
+exists.attrib = attribute existence {omdocref}
+unique.attrib = attribute uniqueness {omdocref}
+def.implicit.attribs = attribute type {"implicit"} & exists.attrib? & unique.attrib?
+def.implicit = def.implicit.attribs & FMP*
+
+exhaust.attrib = attribute exhaustivity {omdocref}
+consist.attrib = attribute consistency {omdocref}
+
+def.pattern.attribs = attribute type {"pattern"}? & exhaust.attrib? & consist.attrib?
+def.pattern.model = requation*
+def.pattern = def.pattern.attribs & def.pattern.model
+
+def.inductive.attribs = attribute type {"inductive"}? & exhaust.attrib? & consist.attrib?
+def.inductive.model = requation* & measure? & ordering?
+def.inductive = def.inductive.attribs & def.inductive.model
+
+def.eq = def.pattern | def.inductive
+
+#all definition forms, add more by extending this.
+defs.all = def.informal | def.simple | def.implicit | def.eq
+
+# Definitions contain CMPs, FMPs and concept specifications.
+# The latter define the set of concepts defined in this element.
+# They can be reached under this name in the content dictionary
+# of the name specified in the theory attribute of the definition.
+definition.attribs = constitutive.attribs & forname.attrib
+definition = element definition {tref|(definition.attribs & mc.class & defs.all)}
+
+requation.attribs = id.attribs
+requation.model = mobj,mobj
+requation = element requation {tref|(requation.attribs & requation.model)}
+
+measure.attribs = id.attribs
+measure.model = mobj
+measure = element measure {tref|(measure.attribs & measure.model)}
+
+ordering.attribs = id.attribs & attribute terminating {omdocref}?
+ordering.model = mobj
+ordering = element ordering {tref|(ordering.attribs & ordering.model)}
+
+# the non-constitutive statements, they need a theory attribute
+toplevel.attribs &= attribute theory {omdocref}?
+
+ded.status.class = "satisfiable" | "counter-satisfiable" | "no-consequence" |
+ "theorem" | "conter-theorem" | "contradictory-axioms" |
+ "tautologous-conclusion" | " tautology" | "equivalent" |
+ "conunter-equivalent" | "unsatisfiable-conclusion" | "unsatisfiable"
+
+just-by.attrib = attribute just-by {omdocref}
+assertion.attribs = toplevel.attribs &
+ attribute type {assertiontype}? &
+ attribute status {ded.status.class}? &
+ just-by.attrib?
+assertion.model = mcf.class
+assertion = element assertion {tref|(assertion.attribs & assertion.model)}
+# the assertiontype has no formal meaning yet, it is solely for human consumption.
+# 'just-by' is a list of URIRefs that point to proof objects, etc that justifies the status.
+
+type.attribs = toplevel.attribs & just-by.attrib? &
+ attribute system {omdocref}? &
+ attribute for {omdocref}?
+type.model = mc.class, mobj, mobj?
+type = element type {tref|(type.attribs & type.model)}
+
+##just-by, points to the theorem justifying well-definedness
+## entailed-by, entails, point to other (equivalent definitions
+## entailed-by-thm, entails-thm point to the theorems justifying
+## the entailment relation)
+alternative.attribs = toplevel.attribs & for.attrib &
+ ((attribute equivalence {omdocref},
+ attribute equivalence-thm {omdocref}) |
+ (attribute entailed-by {omdocref} &
+ attribute entails {omdocref} &
+ attribute entailed-by-thm {omdocref} &
+ attribute entails-thm {omdocref}))
+alternative.model = mc.class & defs.all
+alternative = element alternative {tref|(alternative.attribs & alternative.model)}
+
+example.attribs = toplevel.attribs & for.attrib &
+ attribute type {"for" | "against" }? &
+ attribute assertion {omdocref}?
+example.model = mc.class,mobj*
+example = element example {tref|(example.attribs & example.model)}
+
+theory.attribs = id.attribs &
+ attribute cdurl {xsd:anyURI}? &
+ attribute cdbase {xsd:anyURI}? &
+ attribute cdreviewdate {xsd:date}? &
+ attribute cdversion {xsd:nonNegativeInteger}? &
+ attribute cdrevision {xsd:nonNegativeInteger}? &
+ attribute cdstatus {"official" | "experimental" |"private" | "obsolete"}?
+theory.model = metadata.class & omdoc.class
+theory = element theory {tref|(theory.attribs & theory.model)}
+
+imports.attribs = id.attribs & from.attrib
+imports.model = metadata.class
+imports = element imports {tref|(imports.attribs & imports.model)}
+
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/openmath2.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/openmath2.rnc
new file mode 100644
index 00000000000..2d07eb14148
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/openmath2.rnc
@@ -0,0 +1,89 @@
+# RELAX NG Schema for OpenMath 2
+# $Id: openmath2.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+# $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/openmath2.rnc $
+# See the documentation and examples at http://www.openmath.org
+
+default namespace om = "http://www.openmath.org/OpenMath"
+
+start = OMOBJ
+
+# OpenMath object constructor
+OMOBJ = element OMOBJ { compound.attributes,
+ attribute version { xsd:string }?,
+ omel }
+
+# Elements which can appear inside an OpenMath object
+omel =
+ OMS | OMV | OMI | OMB | OMSTR | OMF | OMA | OMBIND | OME | OMATTR |OMR
+
+# things which can be variables
+omvar = OMV | attvar
+
+attvar = element OMATTR { common.attributes,(OMATP , (OMV | attvar))}
+
+
+cdbase = attribute cdbase { xsd:anyURI}?
+
+# attributes common to all elements
+common.attributes = (attribute id { xsd:ID })?
+
+# attributes common to all elements that construct compount OM objects.
+compound.attributes = common.attributes,cdbase
+
+# symbol
+OMS = element OMS { common.attributes,
+ attribute name {xsd:NCName},
+ attribute cd {xsd:NCName},
+ cdbase }
+
+# variable
+OMV = element OMV { common.attributes,
+ attribute name { xsd:NCName} }
+
+# integer
+OMI = element OMI { common.attributes,
+ xsd:string {pattern = "\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*"}}
+# byte array
+OMB = element OMB { common.attributes, xsd:base64Binary }
+
+# string
+OMSTR = element OMSTR { common.attributes, text }
+
+# IEEE floating point number
+OMF = element OMF { common.attributes,
+ ( attribute dec { xsd:double } |
+ attribute hex { xsd:string {pattern = "[0-9A-F]+"}}) }
+
+# apply constructor
+OMA = element OMA { compound.attributes, omel+ }
+
+# binding constructor
+OMBIND = element OMBIND { compound.attributes, omel, OMBVAR, omel }
+
+# variables used in binding constructor
+OMBVAR = element OMBVAR { common.attributes, omvar+ }
+
+# error constructor
+OME = element OME { common.attributes, OMS, (omel|OMFOREIGN)* }
+
+# attribution constructor and attribute pair constructor
+OMATTR = element OMATTR { compound.attributes, OMATP, omel }
+
+OMATP = element OMATP { compound.attributes, (OMS, (omel | OMFOREIGN) )+ }
+
+# foreign constructor
+OMFOREIGN = element OMFOREIGN {
+ compound.attributes, attribute encoding {xsd:string}?,
+ (omel|notom)* }
+
+# Any elements not in the om namespace
+# (valid om is allowed as a descendant)
+notom =
+ (element * - om:* {attribute * { text }*,(omel|notom)*}
+ | text)
+
+# reference constructor
+OMR = element OMR { common.attributes,
+ attribute href { xsd:anyURI }
+ }
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/pxhtml.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/pxhtml.rnc
new file mode 100644
index 00000000000..f9758a57506
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/pxhtml.rnc
@@ -0,0 +1,17 @@
+# XHTML for paragraphs in OMDoc
+# this is a subset of the xhtml RelaxNG schema for XHTML we use it for paragraphs in OMDoc1.3
+
+default namespace xhtml = "http://www.w3.org/1999/xhtml"
+
+include "xhtml-datatypes.rnc"
+include "xhtml-attribs.rnc"
+include "xhtml-text.rnc"
+include "xhtml-hypertext.rnc"
+include "xhtml-list.rnc"
+include "xhtml-image.rnc"
+include "xhtml-param.rnc"
+include "xhtml-object.rnc"
+include "xhtml-bdo.rnc"
+include "xhtml-applet.rnc"
+include "xhtml-table.rnc"
+include "xhtml-inlstyle.rnc"
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/schemas.xml b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/schemas.xml
new file mode 100644
index 00000000000..7709ff94ead
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/schemas.xml
@@ -0,0 +1,4 @@
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+ <uri pattern="*.omdoc" typeId="OMDoc"/>
+ <typeId id="OMDoc" uri="omdoc.rnc"/>
+</locatingRules>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo
new file mode 100644
index 00000000000..1d7969e6fd5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo
@@ -0,0 +1,3 @@
+- maybe move metadata back into omdoc-core.mod
+- is omgroup.... really conditional now?
+- integrate MathML
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo.txt b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo.txt
new file mode 100644
index 00000000000..1b4aec578a8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/todo.txt
@@ -0,0 +1,2 @@
+- tighten up the grammar for definition, we can make the relation between
+ type and content explicit now
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-applet.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-applet.rnc
new file mode 100644
index 00000000000..eaaa1a15a52
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-applet.rnc
@@ -0,0 +1,19 @@
+# Applet Module
+
+applet =
+ element applet {
+ applet.attlist,
+ # No restrictions on mixed content in TREX.
+ param*,
+ Flow.model
+ }
+applet.attlist =
+ Core.attrib &
+ attribute alt { Text.datatype } &
+ attribute archive { text }? &
+ attribute code { text }? &
+ attribute codebase { URI.datatype }? &
+ attribute object { text }? &
+ attribute height { Length.datatype } &
+ attribute width { Length.datatype }
+Inline.class &= applet*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-attribs.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-attribs.rnc
new file mode 100644
index 00000000000..0aa6e323164
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-attribs.rnc
@@ -0,0 +1,14 @@
+# Common Attributes Module
+
+id.attrib = attribute id { ID.datatype }?
+class.attrib = attribute class { NMTOKENS.datatype }?
+title.attrib = attribute title { Text.datatype }?
+Core.attrib = id.attrib & class.attrib & title.attrib
+lang.attrib = attribute xml:lang { LanguageCode.datatype }?
+I18n.attrib = lang.attrib
+Common.attrib = Core.attrib & I18n.attrib
+CommonIdRequired.attrib =
+ attribute id { ID.datatype } &
+ class.attrib &
+ title.attrib &
+ I18n.attrib
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-basic-table.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-basic-table.rnc
new file mode 100644
index 00000000000..c0205d29716
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-basic-table.rnc
@@ -0,0 +1,28 @@
+# Basic Tables Module
+
+table = element table { table.attlist & caption? & tr+ }
+table.attlist =
+ Common.attrib &
+ attribute summary { Text.datatype }?
+caption = element caption { caption.attlist, Inline.model }
+caption.attlist = Common.attrib
+tr = element tr { tr.attlist & (th | td)+ }
+tr.attlist = Common.attrib & CellHAlign.attrib & CellVAlign.attrib
+th = element th { th.attlist & Flow.model }
+th.attlist = Cell.attrib
+td = element td { td.attlist & Flow.model }
+td.attlist = Cell.attrib
+Cell.attrib =
+ Common.attrib &
+ attribute abbr { Text.datatype }? &
+ attribute axis { text }? &
+ attribute headers { IDREFS.datatype }? &
+ scope.attrib &
+ attribute rowspan { Number.datatype }? &
+ attribute colspan { Number.datatype }? &
+ CellHAlign.attrib &
+ CellVAlign.attrib
+CellHAlign.attrib = attribute align { "left" | "center" | "right" }?
+CellVAlign.attrib = attribute valign { "top" | "middle" | "bottom" }?
+scope.attrib = attribute scope { "row" | "col" }?
+Block.class &= table*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-bdo.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-bdo.rnc
new file mode 100644
index 00000000000..96bd91e378d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-bdo.rnc
@@ -0,0 +1,7 @@
+# Bi-directional Module
+
+bdo = element bdo { bdo.attlist & Inline.model }
+bdo.attlist = Core.attrib & lang.attrib & dir.attrib
+dir.attrib = attribute dir { "ltr" | "rtl" }
+I18n.attrib &= dir.attrib?
+Inline.class &= bdo*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-datatypes.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-datatypes.rnc
new file mode 100644
index 00000000000..596598039dd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-datatypes.rnc
@@ -0,0 +1,47 @@
+# Datatypes Module
+
+# Length defined for cellpadding/cellspacing
+
+# nn for pixels or nn% for percentage length
+Length.datatype = text
+# space-separated list of link types
+LinkTypes.datatype = NMTOKENS.datatype
+# single or comma-separated list of media descriptors
+MediaDesc.datatype = text
+# pixel, percentage, or relative
+MultiLength.datatype = text
+# one or more digits (NUMBER)
+Number.datatype = text
+# integer representing length in pixels
+Pixels.datatype = text
+# script expression
+Script.datatype = text
+# textual content
+Text.datatype = text
+# Imported Datatypes ................................
+
+# a single character from [ISO10646]
+Character.datatype = text
+# a character encoding, as per [RFC2045]
+Charset.datatype = text
+# a space separated list of character encodings, as per [RFC2045]
+Charsets.datatype = text
+# media type, as per [RFC2045]
+ContentType.datatype = text
+# comma-separated list of media types, as per [RFC2045]
+ContentTypes.datatype = text
+# date and time information. ISO date format
+Datetime.datatype = text
+# formal public identifier, as per [ISO8879]
+FPI.datatype = text
+# a language code, as per [RFC1766]
+LanguageCode.datatype = xsd:language
+# a Uniform Resource Identifier, see [URI]
+URI.datatype = xsd:anyURI
+# a space-separated list of Uniform Resource Identifiers, see [URI]
+URIs.datatype = text
+NMTOKEN.datatype = xsd:NMTOKEN
+NMTOKENS.datatype = xsd:NMTOKENS
+ID.datatype = xsd:ID
+IDREF.datatype = xsd:IDREF
+IDREFS.datatype = xsd:IDREFS
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-hypertext.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-hypertext.rnc
new file mode 100644
index 00000000000..0dc78e6161f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-hypertext.rnc
@@ -0,0 +1,16 @@
+# Hypertext Module
+
+# Depends on text module.
+
+a = element a { a.attlist & Inline.model }
+a.attlist =
+ Common.attrib &
+ attribute href { URI.datatype }? &
+ attribute charset { Charset.datatype }? &
+ attribute type { ContentType.datatype }? &
+ attribute hreflang { LanguageCode.datatype }? &
+ attribute rel { LinkTypes.datatype }? &
+ attribute rev { LinkTypes.datatype }? &
+ attribute accesskey { Character.datatype }? &
+ attribute tabindex { Number.datatype }?
+Inline.class &= a*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-image.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-image.rnc
new file mode 100644
index 00000000000..f897cc6d956
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-image.rnc
@@ -0,0 +1,11 @@
+# Image Module
+
+img = element img { img.attlist }
+img.attlist =
+ Common.attrib &
+ attribute src { URI.datatype } &
+ attribute alt { Text.datatype } &
+ attribute longdesc { URI.datatype }? &
+ attribute height { Length.datatype }? &
+ attribute width { Length.datatype }?
+Inline.class &= img*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-inlstyle.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-inlstyle.rnc
new file mode 100644
index 00000000000..aa69b75ab61
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-inlstyle.rnc
@@ -0,0 +1,3 @@
+# Inline Style Module
+
+Core.attrib &= attribute style { text }?
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-list.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-list.rnc
new file mode 100644
index 00000000000..ce20fc89884
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-list.rnc
@@ -0,0 +1,16 @@
+# List Module
+
+dl = element dl { dl.attlist & (dt | dd)+ }
+dl.attlist = Common.attrib
+dt = element dt { dt.attlist & Inline.model }
+dt.attlist = Common.attrib
+dd = element dd { dd.attlist &Flow.model }
+dd.attlist = Common.attrib
+ol = element ol { ol.attlist & li+ }
+ol.attlist = Common.attrib
+ul = element ul { ul.attlist & li+ }
+ul.attlist = Common.attrib
+li = element li { li.attlist & Flow.model }
+li.attlist = Common.attrib
+List.class = ul* & ol* & dl*
+Block.class &= List.class
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-object.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-object.rnc
new file mode 100644
index 00000000000..2ec52ecf798
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-object.rnc
@@ -0,0 +1,24 @@
+# Object Module
+
+object =
+ element object {
+ object.attlist,
+ # No restrictions on mixed content in TREX.
+ param*,
+ Flow.model
+ }
+object.attlist =
+ Common.attrib &
+ attribute declare { "declare" }? &
+ attribute classid { URI.datatype }? &
+ attribute codebase { URI.datatype }? &
+ attribute data { URI.datatype }? &
+ attribute type { ContentType.datatype }? &
+ attribute codetype { ContentType.datatype }? &
+ attribute archive { URIs.datatype }? &
+ attribute standby { Text.datatype }? &
+ attribute height { Length.datatype }? &
+ attribute width { Length.datatype }? &
+ attribute name { text }? &
+ attribute tabindex { Number.datatype }?
+Inline.class &= object*
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-param.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-param.rnc
new file mode 100644
index 00000000000..641f695eab8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-param.rnc
@@ -0,0 +1,9 @@
+# Param Module
+
+param = element param { param.attlist }
+param.attlist =
+ id.attrib &
+ attribute name { text } &
+ attribute value { text }? &
+ attribute valuetype { "data" | "ref" | "object" }? &
+ attribute type { ContentType.datatype }?
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-table.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-table.rnc
new file mode 100644
index 00000000000..ab2b4d20ee4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-table.rnc
@@ -0,0 +1,67 @@
+# Tables Module
+
+# This builds on the basic tables module, unlike with the DTD
+# implementation.
+
+include "xhtml-basic-table.rnc" {
+ table =
+ element table {
+ table.attlist,
+ caption?,
+ (col* | colgroup*),
+ ((thead?, tfoot?, tbody+) | tr+)
+ }
+ th = element th { th.attlist & Flow.model }
+ td = element td { td.attlist & Flow.model }
+ CellHAlign.attrib =
+ attribute align {
+ "left" | "center" | "right" | "justify" | "char"
+ }? &
+ attribute char { Character.datatype }? &
+ attribute charoff { Length.datatype }?
+ CellVAlign.attrib =
+ attribute valign { "top" | "middle" | "bottom" | "baseline" }?
+ scope.attrib =
+ attribute scope { "row" | "col" | "rowgroup" | "colgroup" }?
+}
+table.attlist &=
+ attribute width { Length.datatype }? &
+ attribute border { Pixels.datatype }? &
+ frame.attrib &
+ rules.attrib &
+ attribute cellspacing { Length.datatype }? &
+ attribute cellpadding { Length.datatype }?
+col = element col { col.attlist }
+col.attlist =
+ Common.attrib &
+ attribute span { Number.datatype }? &
+ attribute width { MultiLength.datatype }? &
+ CellHAlign.attrib &
+ CellVAlign.attrib
+colgroup = element colgroup { colgroup.attlist & col* }
+colgroup.attlist =
+ Common.attrib &
+ attribute span { Number.datatype }? &
+ attribute width { MultiLength.datatype }? &
+ CellHAlign.attrib &
+ CellVAlign.attrib
+tbody = element tbody { tbody.attlist & tr+ }
+tbody.attlist = Common.attrib & CellHAlign.attrib & CellVAlign.attrib
+thead = element thead { thead.attlist & tr+ }
+thead.attlist = Common.attrib & CellHAlign.attrib & CellVAlign.attrib
+tfoot = element tfoot { tfoot.attlist & tr+ }
+tfoot.attlist = Common.attrib & CellHAlign.attrib & CellVAlign.attrib
+frame.attrib =
+ attribute frame {
+ "void"
+ | "above"
+ | "below"
+ | "hsides"
+ | "lhs"
+ | "rhs"
+ | "vsides"
+ | "box"
+ | "border"
+ }?
+rules.attrib =
+ attribute rules { "none" | "groups" | "rows" | "cols" | "all" }?
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-text.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-text.rnc
new file mode 100644
index 00000000000..b9e999be009
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/omdoc/xhtml-text.rnc
@@ -0,0 +1,86 @@
+# Text Module
+br = element br { br.attlist & empty }
+br.attlist = Core.attrib
+
+span = element span { span.attlist & Inline.model }
+span.attlist = Common.attrib
+
+abbr = element abbr { abbr.attlist & Inline.model }
+abbr.attlist = Common.attrib
+
+acronym = element acronym { acronym.attlist & Inline.model }
+acronym.attlist = Common.attrib
+
+cite = element cite { cite.attlist & Inline.model }
+cite.attlist = Common.attrib
+
+code = element code { code.attlist & Inline.model }
+code.attlist = Common.attrib
+
+dfn = element dfn { dfn.attlist & Inline.model }
+dfn.attlist = Common.attrib
+
+em = element em { em.attlist & Inline.model }
+em.attlist = Common.attrib
+
+kbd = element kbd { kbd.attlist & Inline.model }
+kbd.attlist = Common.attrib
+
+q = element q { q.attlist & Inline.model }
+q.attlist =
+ Common.attrib &
+ attribute cite { URI.datatype }?
+
+samp = element samp { samp.attlist & Inline.model }
+samp.attlist = Common.attrib
+
+strong = element strong { strong.attlist & Inline.model }
+strong.attlist = Common.attrib
+
+var = element var { var.attlist & Inline.model }
+var.attlist = Common.attrib
+
+\div = element div { div.attlist & Flow.model }
+div.attlist = Common.attrib
+
+p = element p { p.attlist & Inline.model }
+p.attlist = Common.attrib
+
+address = element address { address.attlist & Inline.model }
+address.attlist = Common.attrib
+
+blockquote = element blockquote { blockquote.attlist & Block.model }
+blockquote.attlist =
+ Common.attrib &
+ attribute cite { URI.datatype }?
+
+pre = element pre { pre.attlist & Inline.model }
+pre.attlist =
+ Common.attrib &
+ attribute xml:space { "preserve" }?
+
+Block.class = address* & blockquote* & \div* & p* & pre*
+
+Inline.class =
+ abbr*
+ & acronym*
+ & br*
+ & cite*
+ & code*
+ & dfn*
+ & em*
+ & kbd*
+ & q*
+ & samp*
+ & span*
+ & strong*
+ & var*
+
+Inline.model = text & Inline.class
+# This is redefined by the legacy module to include inlines.
+
+Block.mix = Block.class
+
+Block.model = Block.mix+
+
+Flow.model = text & Inline.class & Block.class
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/owl.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/owl.rnc
new file mode 100644
index 00000000000..a262df3fc31
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/owl.rnc
@@ -0,0 +1,44 @@
+# A simplified RelaxNG for OWL (so that we can generate OWL from sTeX
+# https://kwarc.info/repos/kwarc/repos/stex/rnc/omdoc+ltxml.rnc
+# (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+namespace owl = "http://www.w3.org/2002/07/owl#"
+namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+namespace rdfs = "http://www.w3.org/2000/01/rdf-schema#"
+namespace stex = "http://kwarc.info/ns/sTeX"
+namespace local = ""
+
+nonlocal-attribs = attribute * - (local:* | owl:* | rdf:* | rdfs:*) {xsd:string}
+
+start = RDF
+
+RDF = element rdf:RDF {nonlocal-attribs & Ontology}
+
+Ontology.attribs = nonlocal-attribs* & about.attrib?
+Ontology.model = Class* & Property*
+Ontology = element owl:Ontology {Ontology.attribs & Ontology.model}
+
+about.attrib = attribute rdf:about {xsd:anyURI}
+resource.attrib = attribute rdf:resource {xsd:anyURI}
+label.attrib = attribute rdfs:label {text}
+comment.attrib = attribute rdfs:comment {text}
+
+
+Class.attribs = nonlocal-attribs* & about.attrib? & label.attrib? & comment.attrib?
+Class.model = rdftype* & subClassOf* & disjointWith* & isDefinedBy?
+Class = element rdfs:Class {Class.attribs & Class.model}
+
+Property.attribs = nonlocal-attribs* & about.attrib? & label.attrib? & comment.attrib?
+Property.model = rdftype* & domain? & range & isDefinedBy?
+Property = element rdf:Property {Property.attribs & Property.model}
+
+rdftype.attribs = nonlocal-attribs* & resource.attrib
+#rdftype.model = notAllowed
+rdftype = element rdf:type {rdftype.attribs}
+
+subClassOf = element rdfs:subClassOf {resource.attrib}
+isDefinedBy = element rdfs:isDefinedBy {resource.attrib}
+disjointWith = element owl:disjointWith {resource.attrib}
+
+range = element rdfs:range {resource.attrib}
+domain = element rdfs:domain {resource.attrib}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/owl2+ltxml.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/owl2+ltxml.rnc
new file mode 100644
index 00000000000..4a2259005d8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/owl2+ltxml.rnc
@@ -0,0 +1,15 @@
+# A simplified RelaxNG for OWL2 (so that we can generate OWL from sTeX
+# https://kwarc.info/repos/kwarc/repos/stex/rnc/omdoc+ltxml.rnc
+# (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+namespace owl = "http://www.w3.org/2002/07/owl#"
+
+include "owl2xml.rnc"
+
+LTXML.Math = grammar {
+ include "LaTeXML/LaTeXML-common.rnc"
+ include "LaTeXML/LaTeXML-math.rnc"
+ start = Math}
+Ontology.model &=LTXML.Math & axiom
+
+axiom = element owl:Axiom { LTXML.Math& Annotation}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/owl2-xml.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/owl2-xml.rnc
new file mode 100644
index 00000000000..cf0bb9c5774
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/owl2-xml.rnc
@@ -0,0 +1,532 @@
+# From: http://www.w3.org/TR/rdf-sparql-query/#grammar
+# The entities implement productions [95] (PN_CHARS_BASE), [96] (PN_CHARS_U), [98] (PN_CHARS), [99] (PN_PREFIX),
+# [100] (PN_LOCAL), [71] (PNAME_NS), [72] (PNAME_LN) and [68] (PrefixedName)
+#
+# PN_PREFIX is roughly equivalent to NCName.
+
+default namespace = "http://www.w3.org/2002/07/owl#"
+
+# The ontology
+Prefix.type =
+ attribute name {
+ xsd:string {
+ pattern =
+ "([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀] ))?|"
+ }
+ },
+ attribute IRI { xsd:anyURI }
+start |= Prefix
+Prefix = element Prefix { Prefix.type }
+Import.type = attribute specialAttrs { text }
+start |= Import
+Import = element Import { Import.type }
+Ontology.type =
+ Prefix*,
+ Import*,
+ ontologyAnnotations,
+ Axiom*,
+ attribute ontologyIRI { xsd:anyURI }?,
+ attribute versionIRI { xsd:anyURI }?,
+ attribute specialAttrs { text }
+start |= Ontology
+Ontology = element Ontology { Ontology.type }
+# Entities, anonymous individuals, and literals
+
+# Note that the "Entity" group does not have a corresponding abstract type.
+# This is due to the fact that XML Schema does not support multiple inheritence.
+# "owl:Class" is both an entity and a class expression. The authors of this schema
+# determined it was more useful to be able to retrieve "owl:Class" in such queries
+# as schema(*, owl:ClassExpression).
+Entity =
+ Class
+ | Datatype
+ | ObjectProperty
+ | DataProperty
+ | AnnotationProperty
+ | NamedIndividual
+# This is the type for the attribute. The complex type for the element is capitalized.
+abbreviatedIRI =
+ xsd:string {
+ pattern =
+ "(((([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀] ))?)?:)(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|[0-9])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]))?))|((([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀] ))?)?:)"
+ }
+Class.type =
+ ClassExpression,
+ attribute IRI { xsd:anyURI }?,
+ attribute abbreviatedIRI { abbreviatedIRI }?
+start |= Class
+Class = element Class { Class.type }
+Datatype.type =
+ DataRange,
+ attribute IRI { xsd:anyURI }?,
+ attribute abbreviatedIRI { abbreviatedIRI }?
+start |= Datatype
+Datatype = element Datatype { Datatype.type }
+ObjectProperty.type =
+ ObjectPropertyExpression,
+ attribute IRI { xsd:anyURI }?,
+ attribute abbreviatedIRI { abbreviatedIRI }?
+start |= ObjectProperty
+ObjectProperty = element ObjectProperty { ObjectProperty.type }
+DataProperty.type =
+ DataPropertyExpression,
+ attribute IRI { xsd:anyURI }?,
+ attribute abbreviatedIRI { abbreviatedIRI }?
+start |= DataProperty
+DataProperty = element DataProperty { DataProperty.type }
+AnnotationProperty.type =
+ attribute IRI { xsd:anyURI }?,
+ attribute abbreviatedIRI { abbreviatedIRI }?,
+ attribute specialAttrs { text }
+start |= AnnotationProperty
+AnnotationProperty = element AnnotationProperty { AnnotationProperty.type }
+Individual = attribute specialAttrs { text }, (NamedIndividual | AnonymousIndividual)
+NamedIndividual.type =
+ Individual,
+ attribute IRI { xsd:anyURI }?,
+ attribute abbreviatedIRI { abbreviatedIRI }?
+start |= NamedIndividual
+NamedIndividual = element NamedIndividual { NamedIndividual.type }
+AnonymousIndividual.type =
+ Individual,
+ attribute nodeID { xsd:NCName }
+start |= AnonymousIndividual
+AnonymousIndividual =
+ element AnonymousIndividual { AnonymousIndividual.type }
+Literal.type =
+ attribute datatypeIRI { xsd:anyURI },
+ attribute specialAttrs { text }
+start |= Literal
+Literal = element Literal { Literal.type }
+# Declarations
+Declaration.type = Axiom, Entity
+start |= Declaration
+Declaration = element Declaration { Declaration.type }
+# Object property expressions
+ObjectPropertyExpression = attribute specialAttrs { text }, (ObjectProperty | ObjectInverseOf)
+ObjectInverseOf.type = ObjectPropertyExpression, ObjectProperty
+start |= ObjectInverseOf
+ObjectInverseOf = element ObjectInverseOf { ObjectInverseOf.type }
+# Data property expressions
+DataPropertyExpression = attribute specialAttrs { text }, DataProperty
+# Data ranges
+DataRange = attribute specialAttrs { text },
+ (Datatype
+ | DataIntersectionOf
+ | DataUnionOf
+ | DataComplementOf
+ | DataOneOf
+ | DatatypeRestriction)
+DataIntersectionOf.type = DataRange, DataRange+
+start |= DataIntersectionOf
+DataIntersectionOf = element DataIntersectionOf { DataIntersectionOf.type }
+DataUnionOf.type = DataRange, DataRange+
+start |= DataUnionOf
+DataUnionOf = element DataUnionOf { DataUnionOf.type }
+DataComplementOf.type = DataRange, DataRange
+start |= DataComplementOf
+DataComplementOf = element DataComplementOf { DataComplementOf.type }
+DataOneOf.type = DataRange, Literal+
+start |= DataOneOf
+DataOneOf = element DataOneOf { DataOneOf.type }
+DatatypeRestriction.type =
+ DataRange,
+ Datatype,
+ element FacetRestriction { FacetRestriction }+
+start |= DatatypeRestriction
+DatatypeRestriction =
+ element DatatypeRestriction { DatatypeRestriction.type }
+FacetRestriction =
+ Literal,
+ attribute facet { xsd:anyURI },
+ attribute specialAttrs { text }
+# Class expressions
+ClassExpression = attribute specialAttrs { text },
+ (Class
+ | ObjectIntersectionOf
+ | ObjectUnionOf
+ | ObjectComplementOf
+ | ObjectOneOf
+ | ObjectSomeValuesFrom
+ | ObjectAllValuesFrom
+ | ObjectHasValue
+ | ObjectHasSelf
+ | ObjectMinCardinality
+ | ObjectMaxCardinality
+ | ObjectExactCardinality
+ | DataSomeValuesFrom
+ | DataAllValuesFrom
+ | DataHasValue
+ | DataMinCardinality
+ | DataMaxCardinality
+ | DataExactCardinality)
+ObjectIntersectionOf.type = ClassExpression, ClassExpression+
+start |= ObjectIntersectionOf
+ObjectIntersectionOf =
+ element ObjectIntersectionOf { ObjectIntersectionOf.type }
+ObjectUnionOf.type = ClassExpression, ClassExpression+
+start |= ObjectUnionOf
+ObjectUnionOf = element ObjectUnionOf { ObjectUnionOf.type }
+ObjectComplementOf.type = ClassExpression, ClassExpression
+start |= ObjectComplementOf
+ObjectComplementOf = element ObjectComplementOf { ObjectComplementOf.type }
+ObjectOneOf.type = ClassExpression, Individual+
+start |= ObjectOneOf
+ObjectOneOf = element ObjectOneOf { ObjectOneOf.type }
+ObjectSomeValuesFrom.type =
+ ClassExpression, ObjectPropertyExpression, ClassExpression
+start |= ObjectSomeValuesFrom
+ObjectSomeValuesFrom =
+ element ObjectSomeValuesFrom { ObjectSomeValuesFrom.type }
+ObjectAllValuesFrom.type =
+ ClassExpression, ObjectPropertyExpression, ClassExpression
+start |= ObjectAllValuesFrom
+ObjectAllValuesFrom =
+ element ObjectAllValuesFrom { ObjectAllValuesFrom.type }
+ObjectHasValue.type = ClassExpression, ObjectPropertyExpression, Individual
+start |= ObjectHasValue
+ObjectHasValue = element ObjectHasValue { ObjectHasValue.type }
+ObjectHasSelf.type = ClassExpression, ObjectPropertyExpression
+start |= ObjectHasSelf
+ObjectHasSelf = element ObjectHasSelf { ObjectHasSelf.type }
+ObjectMinCardinality.type =
+ ClassExpression,
+ ObjectPropertyExpression,
+ ClassExpression?,
+ attribute cardinality { xsd:nonNegativeInteger }
+start |= ObjectMinCardinality
+ObjectMinCardinality =
+ element ObjectMinCardinality { ObjectMinCardinality.type }
+ObjectMaxCardinality.type =
+ ClassExpression,
+ ObjectPropertyExpression,
+ ClassExpression?,
+ attribute cardinality { xsd:nonNegativeInteger }
+start |= ObjectMaxCardinality
+ObjectMaxCardinality =
+ element ObjectMaxCardinality { ObjectMaxCardinality.type }
+ObjectExactCardinality.type =
+ ClassExpression,
+ ObjectPropertyExpression,
+ ClassExpression?,
+ attribute cardinality { xsd:nonNegativeInteger }
+start |= ObjectExactCardinality
+ObjectExactCardinality =
+ element ObjectExactCardinality { ObjectExactCardinality.type }
+DataSomeValuesFrom.type = ClassExpression, DataPropertyExpression+, DataRange
+start |= DataSomeValuesFrom
+DataSomeValuesFrom = element DataSomeValuesFrom { DataSomeValuesFrom.type }
+DataAllValuesFrom.type = ClassExpression, DataPropertyExpression+, DataRange
+start |= DataAllValuesFrom
+DataAllValuesFrom = element DataAllValuesFrom { DataAllValuesFrom.type }
+DataHasValue.type = ClassExpression, DataPropertyExpression, Literal
+start |= DataHasValue
+DataHasValue = element DataHasValue { DataHasValue.type }
+DataMinCardinality.type =
+ ClassExpression,
+ DataPropertyExpression,
+ DataRange?,
+ attribute cardinality { xsd:nonNegativeInteger }
+start |= DataMinCardinality
+DataMinCardinality = element DataMinCardinality { DataMinCardinality.type }
+DataMaxCardinality.type =
+ ClassExpression,
+ DataPropertyExpression,
+ DataRange?,
+ attribute cardinality { xsd:nonNegativeInteger }
+start |= DataMaxCardinality
+DataMaxCardinality = element DataMaxCardinality { DataMaxCardinality.type }
+DataExactCardinality.type =
+ ClassExpression,
+ DataPropertyExpression,
+ DataRange?,
+ attribute cardinality { xsd:nonNegativeInteger }
+start |= DataExactCardinality
+DataExactCardinality =
+ element DataExactCardinality { DataExactCardinality.type }
+# Axioms
+Axiom = axiomAnnotations, attribute specialAttrs { text },
+ (Declaration
+ | ClassAxiom
+ | ObjectPropertyAxiom
+ | DataPropertyAxiom
+ | DatatypeDefinition
+ | HasKey
+ | Assertion
+ | AnnotationAxiom)
+# Class expression axioms
+ClassAxiom = Axiom | SubClassOf | EquivalentClasses | DisjointClasses | DisjointUnion
+SubClassOf.type =
+ ClassAxiom,
+ ClassExpression,
+ # This is the subexpression
+ ClassExpression
+ # This is the superexpression
+
+start |= SubClassOf
+SubClassOf = element SubClassOf { SubClassOf.type }
+EquivalentClasses.type = ClassAxiom, ClassExpression+
+start |= EquivalentClasses
+EquivalentClasses = element EquivalentClasses { EquivalentClasses.type }
+DisjointClasses.type = ClassAxiom, ClassExpression+
+start |= DisjointClasses
+DisjointClasses = element DisjointClasses { DisjointClasses.type }
+DisjointUnion.type = ClassAxiom, Class, ClassExpression+
+start |= DisjointUnion
+DisjointUnion = element DisjointUnion { DisjointUnion.type }
+# Object property axioms
+ObjectPropertyAxiom = Axiom|
+ SubObjectPropertyOf
+ | EquivalentObjectProperties
+ | DisjointObjectProperties
+ | InverseObjectProperties
+ | ObjectPropertyDomain
+ | ObjectPropertyRange
+ | FunctionalObjectProperty
+ | InverseFunctionalObjectProperty
+ | ReflexiveObjectProperty
+ | IrreflexiveObjectProperty
+ | SymmetricObjectProperty
+ | AsymmetricObjectProperty
+ | TransitiveObjectProperty
+SubObjectPropertyOf.type =
+ ObjectPropertyAxiom,
+ (# This is the subproperty expression or the property chain
+ ObjectPropertyExpression
+ | element ObjectPropertyChain { ObjectPropertyChain.type }),
+ ObjectPropertyExpression
+ # This is the superproperty expression
+
+start |= SubObjectPropertyOf
+SubObjectPropertyOf =
+ element SubObjectPropertyOf { SubObjectPropertyOf.type }
+ObjectPropertyChain.type =
+ ObjectPropertyExpression+,
+ attribute specialAttrs { text }
+EquivalentObjectProperties.type =
+ ObjectPropertyAxiom, ObjectPropertyExpression+
+start |= EquivalentObjectProperties
+EquivalentObjectProperties =
+ element EquivalentObjectProperties { EquivalentObjectProperties.type }
+DisjointObjectProperties.type =
+ ObjectPropertyAxiom, ObjectPropertyExpression+
+start |= DisjointObjectProperties
+DisjointObjectProperties =
+ element DisjointObjectProperties { DisjointObjectProperties.type }
+ObjectPropertyDomain.type =
+ ObjectPropertyAxiom, ObjectPropertyExpression, ClassExpression
+start |= ObjectPropertyDomain
+ObjectPropertyDomain =
+ element ObjectPropertyDomain { ObjectPropertyDomain.type }
+ObjectPropertyRange.type =
+ ObjectPropertyAxiom, ObjectPropertyExpression, ClassExpression
+start |= ObjectPropertyRange
+ObjectPropertyRange =
+ element ObjectPropertyRange { ObjectPropertyRange.type }
+InverseObjectProperties.type =
+ ObjectPropertyAxiom,
+ ObjectPropertyExpression,
+ ObjectPropertyExpression
+start |= InverseObjectProperties
+InverseObjectProperties =
+ element InverseObjectProperties { InverseObjectProperties.type }
+FunctionalObjectProperty.type = ObjectPropertyAxiom, ObjectPropertyExpression
+start |= FunctionalObjectProperty
+FunctionalObjectProperty =
+ element FunctionalObjectProperty { FunctionalObjectProperty.type }
+InverseFunctionalObjectProperty.type =
+ ObjectPropertyAxiom, ObjectPropertyExpression
+start |= InverseFunctionalObjectProperty
+InverseFunctionalObjectProperty =
+ element InverseFunctionalObjectProperty {
+ InverseFunctionalObjectProperty.type
+ }
+ReflexiveObjectProperty.type = ObjectPropertyAxiom, ObjectPropertyExpression
+start |= ReflexiveObjectProperty
+ReflexiveObjectProperty =
+ element ReflexiveObjectProperty { ReflexiveObjectProperty.type }
+IrreflexiveObjectProperty.type =
+ ObjectPropertyAxiom, ObjectPropertyExpression
+start |= IrreflexiveObjectProperty
+IrreflexiveObjectProperty =
+ element IrreflexiveObjectProperty { IrreflexiveObjectProperty.type }
+SymmetricObjectProperty.type = ObjectPropertyAxiom, ObjectPropertyExpression
+start |= SymmetricObjectProperty
+SymmetricObjectProperty =
+ element SymmetricObjectProperty { SymmetricObjectProperty.type }
+AsymmetricObjectProperty.type = ObjectPropertyAxiom, ObjectPropertyExpression
+start |= AsymmetricObjectProperty
+AsymmetricObjectProperty =
+ element AsymmetricObjectProperty { AsymmetricObjectProperty.type }
+TransitiveObjectProperty.type = ObjectPropertyAxiom, ObjectPropertyExpression
+start |= TransitiveObjectProperty
+TransitiveObjectProperty =
+ element TransitiveObjectProperty { TransitiveObjectProperty.type }
+# Data property axioms
+DataPropertyAxiom = Axiom |
+ SubDataPropertyOf
+ | EquivalentDataProperties
+ | DisjointDataProperties
+ | DataPropertyDomain
+ | DataPropertyRange
+ | FunctionalDataProperty
+SubDataPropertyOf.type =
+ DataPropertyAxiom,
+ DataPropertyExpression,
+ # This is the subproperty expression
+ DataPropertyExpression
+ # This is the superproperty expression
+
+start |= SubDataPropertyOf
+SubDataPropertyOf = element SubDataPropertyOf { SubDataPropertyOf.type }
+EquivalentDataProperties.type = DataPropertyAxiom, DataPropertyExpression+
+start |= EquivalentDataProperties
+EquivalentDataProperties =
+ element EquivalentDataProperties { EquivalentDataProperties.type }
+DisjointDataProperties.type = DataPropertyAxiom, DataPropertyExpression+
+start |= DisjointDataProperties
+DisjointDataProperties =
+ element DisjointDataProperties { DisjointDataProperties.type }
+DataPropertyDomain.type =
+ DataPropertyAxiom, DataPropertyExpression, ClassExpression
+start |= DataPropertyDomain
+DataPropertyDomain = element DataPropertyDomain { DataPropertyDomain.type}
+DataPropertyRange.type = DataPropertyAxiom, DataPropertyExpression, DataRange
+start |= DataPropertyRange
+DataPropertyRange = element DataPropertyRange { DataPropertyRange.type }
+FunctionalDataProperty.type = DataPropertyAxiom, DataPropertyExpression
+start |= FunctionalDataProperty
+FunctionalDataProperty =
+ element FunctionalDataProperty { FunctionalDataProperty.type }
+# Datatype definitions
+DatatypeDefinition.type = Axiom, Datatype, DataRange
+start |= DatatypeDefinition
+DatatypeDefinition = element DatatypeDefinition { DatatypeDefinition.type }
+# Key axioms
+HasKey.type =
+ Axiom,
+ ClassExpression,
+ ObjectPropertyExpression*,
+ DataPropertyExpression*
+start |= HasKey
+HasKey = element HasKey { HasKey.type }
+# Assertions
+Assertion = Axiom |
+ SameIndividual
+ | DifferentIndividuals
+ | ClassAssertion
+ | ObjectPropertyAssertion
+ | NegativeObjectPropertyAssertion
+ | DataPropertyAssertion
+ | NegativeDataPropertyAssertion
+SameIndividual.type = Assertion, Individual+
+start |= SameIndividual
+SameIndividual = element SameIndividual { SameIndividual.type }
+DifferentIndividuals.type = Assertion, Individual+
+start |= DifferentIndividuals
+DifferentIndividuals =
+ element DifferentIndividuals { DifferentIndividuals.type }
+ClassAssertion.type = Assertion, ClassExpression, Individual
+start |= ClassAssertion
+ClassAssertion = element ClassAssertion { ClassAssertion.type }
+ObjectPropertyAssertion.type =
+ Assertion,
+ ObjectPropertyExpression,
+ Individual,
+ # This is the source invididual
+ Individual
+ # This is the target individual
+
+start |= ObjectPropertyAssertion
+ObjectPropertyAssertion =
+ element ObjectPropertyAssertion { ObjectPropertyAssertion.type }
+NegativeObjectPropertyAssertion.type =
+ Assertion,
+ ObjectPropertyExpression,
+ Individual,
+ # This is the source invididual
+ Individual
+ # This is the target individual
+
+start |= NegativeObjectPropertyAssertion
+NegativeObjectPropertyAssertion =
+ element NegativeObjectPropertyAssertion {
+ NegativeObjectPropertyAssertion.type
+ }
+DataPropertyAssertion.type =
+ Assertion,
+ DataPropertyExpression,
+ Individual,
+ # This is the source invididual
+ Literal
+ # This is the target individual
+
+start |= DataPropertyAssertion
+DataPropertyAssertion =
+ element DataPropertyAssertion { DataPropertyAssertion.type }
+NegativeDataPropertyAssertion.type =
+ Assertion,
+ DataPropertyExpression,
+ Individual,
+ # This is the source invididual
+ Literal
+ # This is the target individual
+
+start |= NegativeDataPropertyAssertion
+NegativeDataPropertyAssertion =
+ element NegativeDataPropertyAssertion {
+ NegativeDataPropertyAssertion.type
+ }
+# Annotations
+IRI.type = attribute specialAttrs { text }
+start |= IRI
+IRI = element IRI { IRI.type }
+AbbreviatedIRI.type = attribute specialAttrs { text }
+start |= AbbreviatedIRI
+AbbreviatedIRI = element AbbreviatedIRI { AbbreviatedIRI.type }
+AnnotationSubject = IRI | AbbreviatedIRI | AnonymousIndividual
+AnnotationValue = IRI | AbbreviatedIRI | AnonymousIndividual | Literal
+Annotation.type =
+ annotationAnnotations,
+ AnnotationProperty,
+ AnnotationValue,
+ attribute specialAttrs { text }
+start |= Annotation
+Annotation = element Annotation { Annotation.type }
+axiomAnnotations = Annotation*
+ontologyAnnotations = Annotation*
+annotationAnnotations = Annotation*
+# Annotation axioms
+AnnotationAxiom = Axiom |
+ AnnotationAssertion
+ | SubAnnotationPropertyOf
+ | AnnotationPropertyDomain
+ | AnnotationPropertyRange
+AnnotationAssertion.type =
+ AnnotationAxiom,
+ AnnotationProperty,
+ AnnotationSubject,
+ AnnotationValue
+start |= AnnotationAssertion
+AnnotationAssertion =
+ element AnnotationAssertion { AnnotationAssertion.type }
+SubAnnotationPropertyOf.type =
+ AnnotationAxiom,
+ AnnotationProperty,
+ # This is the subproperty
+ AnnotationProperty
+ # This is the superproperty
+
+start |= SubAnnotationPropertyOf
+SubAnnotationPropertyOf =
+ element SubAnnotationPropertyOf { SubAnnotationPropertyOf.type }
+AnnotationPropertyDomain.type =
+ AnnotationAxiom, AnnotationProperty, IRI, AbbreviatedIRI
+start |= AnnotationPropertyDomain
+AnnotationPropertyDomain =
+ element AnnotationPropertyDomain { AnnotationPropertyDomain.type }
+AnnotationPropertyRange.type =
+ AnnotationAxiom, AnnotationProperty, IRI, AbbreviatedIRI
+start |= AnnotationPropertyRange
+AnnotationPropertyRange =
+ element AnnotationPropertyRange { AnnotationPropertyRange.type }
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/owl2xml.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/owl2xml.rnc
new file mode 100644
index 00000000000..73b0ba51cc9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/owl2xml.rnc
@@ -0,0 +1,138 @@
+# A simplified RelaxNG for OWL2 (so that we can generate OWL from sTeX
+# https://kwarc.info/repos/kwarc/repos/stex/rnc/omdoc+ltxml.rnc
+# (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+
+default namespace owl = "http://www.w3.org/2002/07/owl#"
+namespace local = ""
+
+nonlocal-attribs = attribute * - (local:* | owl:*) {xsd:string}
+
+start = Ontology
+
+base.attrib = element xml:base {xsd:anyURI}
+ontologyIRI.attrib = attribute ontologyIRI {xsd:anyURI}
+IRI.attrib = attribute IRI {text} | attribute abbreviatedIRI {text}
+datatypeIRI.attrib = attribute datatypeIRI {text}
+name.attrib = attribute name {text}
+facet.attrib = attribute facet {xsd:anyURI}
+cardinality.attrib = attribute cardinality {xsd:integer}
+
+Ontology.attribs = ontologyIRI.attrib? & base.attrib?
+Ontology.model = Prefix* & Declaration* & Import* & Axioms*
+
+Axioms = AnnotationAssertion*
+ & DatatypeDefinition* & HasKey* & SubClassOf* & EquivalentClasses*
+ & ObjectProperties* & DataProperties*
+ & DisjointClasses* & DifferentIndividuals* & SameIndividual*
+ & ObjectPropertyAssertion* & DataPropertyAssertion* & ClassAssertion*
+ & NegativeObjectPropertyAssertion* & NegativeDataPropertyAssertion* & NegativeClassAssertion*
+
+Ontology = element Ontology {Ontology.attribs & Ontology.model}
+
+Prefix = element Prefix {name.attrib & IRI.attrib}
+Import = element Import {xsd:anyURI}
+ObjectProperties = SymmetricObjectProperty* & AsymmetricObjectProperty* & ReflexiveObjectProperty*
+ & IrreflexiveObjectProperty* & FunctionalObjectProperty* & InverseObjectProperty*
+ & DisjointObjectProperties* & InverseFunctionalObjectProperty* & TransitiveObjectProperty*
+ & TransitiveObjectProperty* & ObjectPropertyDomain* & ObjectPropertyRange*
+ & InverseObjectProperties* & SubObjectPropertyOf* & EquivalentObjectProperties*
+DataProperties = SymmetricDataProperty* & AsymmetricDataProperty* & ReflexiveDataProperty*
+ & IrreflexiveDataProperty* & FunctionalDataProperty* & InverseDataProperty*
+ & DisjointDataProperties* & InverseFunctionalDataProperty* & TransitiveDataProperty*
+ & TransitiveDataProperty* & DataPropertyDomain* & DataPropertyRange*
+ & InverseDataProperties* & SubDataPropertyOf* & EquivalentDataProperties*
+
+Declaration.model = Class.model | Data.model
+Declaration = element Declaration {Declaration.model}
+NamedIndividual = element NamedIndividual {IRI.attrib}
+ClassAssertion = element ClassAssertion {Class.model,Ind.class}
+NegativeClassAssertion = element NegativeClassAssertion {Class.model,Ind.class}
+
+ObjectProperty = element ObjectProperty {IRI.attrib}
+SymmetricObjectProperty = element SymmetricObjectProperty {ObjectProperty*}
+AsymmetricObjectProperty = element AsymmetricObjectProperty {ObjectProperty*}
+DisjointObjectProperties = element DisjointObjectProperties {ObjectProperty*}
+ReflexiveObjectProperty = element ReflexiveObjectProperty {ObjectProperty}
+IrreflexiveObjectProperty = element IrreflexiveObjectProperty {ObjectProperty}
+FunctionalObjectProperty = element FunctionalObjectProperty {ObjectProperty}
+InverseFunctionalObjectProperty = element InverseFunctionalObjectProperty {ObjectProperty}
+InverseObjectProperty = element InverseObjectProperty {ObjectProperty}
+InverseObjectProperties = element InverseObjectProperties {ObjectProperty*}
+TransitiveObjectProperty = element TransitiveObjectProperty {ObjectProperty*}
+EquivalentObjectProperties = element EquivalentObjectProperties {ObjectProperty*}
+ObjectPropertyDomain = element ObjectPropertyDomain {ObjectProperty,Class}
+ObjectPropertyRange = element ObjectPropertyRange {ObjectProperty,Class}
+SubObjectPropertyOf = element SubObjectPropertyOf {(ObjectProperty|ObjectPropertyChain),ObjectProperty}
+ObjectPropertyChain = element ObjectPropertyChain {ObjectProperty*}
+ObjectPropertyAssertion = element ObjectPropertyAssertion {ObjectProperty*,Ind.class,Ind.class}
+NegativeObjectPropertyAssertion = element NegativeObjectPropertyAssertion {ObjectProperty*,Ind.class,Ind.class}
+
+SymmetricDataProperty = element SymmetricDataProperty {DataProperty*}
+AsymmetricDataProperty = element AsymmetricDataProperty {DataProperty*}
+DisjointDataProperties = element DisjointDataProperties {DataProperty*}
+ReflexiveDataProperty = element ReflexiveDataProperty {DataProperty}
+IrreflexiveDataProperty = element IrreflexiveDataProperty {DataProperty}
+FunctionalDataProperty = element FunctionalDataProperty {DataProperty}
+InverseFunctionalDataProperty = element InverseFunctionalDataProperty {DataProperty}
+InverseDataProperty = element InverseDataProperty {DataProperty}
+InverseDataProperties = element InverseDataProperties {DataProperty*}
+TransitiveDataProperty = element TransitiveDataProperty {DataProperty*}
+EquivalentDataProperties = element EquivalentDataProperties {DataProperty*}
+DataPropertyDomain = element DataPropertyDomain {DataProperty,Class}
+DataPropertyRange = element DataPropertyRange {DataProperty,Datatype}
+SubDataPropertyOf = element SubDataPropertyOf {(DataProperty|DataPropertyChain),DataProperty}
+DataPropertyChain = element DataPropertyChain {DataProperty*}
+DataPropertyAssertion = element DataPropertyAssertion {DataProperty*,Ind.class,Literal}
+NegativeDataPropertyAssertion = element NegativeDataPropertyAssertion {DataProperty*,Ind.class,Literal}
+
+
+DataProperty = element DataProperty {IRI.attrib}
+Datatype = element Datatype {IRI.attrib}
+Class= element Class{IRI.attrib}
+
+Annotation = element Annotation {AnnotationProperty & Literal}
+AnnotationAssertion= element AnnotationAssertion {AnnotationProperty,IRI,Literal}
+AnnotationProperty= element AnnotationProperty {IRI.attrib}
+IRI = element IRI {xsd:anyURI}
+Literal = element Literal {datatypeIRI.attrib? & text}
+
+DatatypeDefinition.model = Datatype* & DatatypeRestriction* & DataComplementOf* & DataIntersectionOf* & DataOneOf*
+DatatypeDefinition = element DatatypeDefinition {DatatypeDefinition.model}
+DatatypeRestriction = element DatatypeRestriction {Datatype & FacetRestriction*}
+FacetRestriction = element FacetRestriction {facet.attrib & Literal}
+DataIntersectionOf = element DataIntersectionOf {Data.model*}
+DataComplementOf = element DataComplementOf {Data.model*}
+DataOneOf = element DataOneOf {Literal*}
+DataSomeValuesFrom = element DataSomeValuesFrom {Data.model*}
+DataAllValuesFrom = element DataAllValuesFrom {Data.model*}
+Data.model = DataProperty | Datatype | DataOneOf | DataSomeValuesFrom
+ | DataAllValuesFrom | DataComplementOf | DatatypeRestriction
+
+
+HasKey = element HasKey {Class, ObjectProperty}
+SubClassOf = element SubClassOf {Annotation*,Class.model,(Data.model | Class.model)}
+EquivalentClasses = element EquivalentClasses{Class.model*}
+
+ObjectIntersectionOf = element ObjectIntersectionOf {Class.model*}
+ObjectComplementOf = element ObjectComplementOf {Class.model*}
+ObjectSomeValuesFrom = element ObjectSomeValuesFrom {Class.model*}
+ObjectAllValuesFrom = element ObjectAllValuesFrom {Class.model*}
+ObjectOneOf = element ObjectOneOf {Class.model*}
+ObjectInverseOf = element ObjectInverseOf {Class.model*}
+ObjectMaxCardinality = element ObjectMaxCardinality{cardinality.attrib & Class.model*}
+ObjectMinCardinality = element ObjectMinCardinality{cardinality.attrib & Class.model*}
+ObjectExactCardinality = element ObjectExactCardinality{cardinality.attrib & Class.model*}
+ObjectHasValue = element ObjectHasValue {ObjectProperty,Ind.class}
+ObjectHasSelf = element ObjectHasSelf {ObjectProperty}
+ObjectUnionOf = element ObjectUnionOf {Class.model*}
+Class.model = Class | ObjectIntersectionOf | ObjectComplementOf
+ | ObjectSomeValuesFrom | ObjectAllValuesFrom
+ | ObjectOneOf | Ind.class| ObjectInverseOf | ObjectProperty
+ | ObjectMaxCardinality | ObjectMinCardinality | ObjectExactCardinality
+ | ObjectHasValue | ObjectHasSelf | ObjectUnionOf
+
+DisjointClasses = element DisjointClasses {Annotation?,Class.model*}
+DifferentIndividuals = element DifferentIndividuals {Ind.class*}
+SameIndividual = element SameIndividual {Ind.class*}
+
+Ind.class = NamedIndividual
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/schemas.xml b/Master/texmf-dist/source/latex/stex/schema/rnc/schemas.xml
new file mode 100644
index 00000000000..301ddb0abc7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/schemas.xml
@@ -0,0 +1,6 @@
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+ <transformURI fromPattern="*.xml" toPattern="*.rnc"/>
+
+ <uri pattern="*.tex.xml" typeId="OMDoc+ltxml"/>
+ <typeId id="OMDoc+ltxml" uri="omdoc+ltxml.rnc"/>
+</locatingRules>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/statements.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/statements.rnc
new file mode 100644
index 00000000000..dd29b4819e4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/statements.rnc
@@ -0,0 +1,50 @@
+# /=====================================================================\
+# | Mathematical Statements for LaTeXML |
+# |=====================================================================|
+# | Not Part of LaTeXML: |
+# | Copyright (c) 2005 Michael Kohlhase |
+# | Released under the Gnu Public License (GPL) |
+# |=====================================================================|
+# | Michael Kohlhase <m.kohlhase@iu-bremen.de> #_# |
+# | http://dlmf.nist.gov/LaTeXML/ (o o) |
+# \=========================================================ooo==U==ooo=/
+
+default namespace = "http://dlmf.nist.gov/LaTeXML"
+
+statement.model = text|Flow.class
+
+example = element example {Common.attribs,attribute for {xsd:string},metadata?,(statement.model)*}
+definition = element definition {Common.attribs,attribute for {xsd:string},metadata?,(statement.model)*}
+definiens = element definiens {attribute name {xsd:string},(statement.model)*}
+termin = element termin {attribute cd {xsd:NCName},attribute name {xsd:NCName},
+ (statement.model|Math)*}
+
+notation = element notation {Common.attribs,attribute for {xsd:string},(statement.model)*}
+notemph = element notemph {(statement.model|Math)*}
+
+statement-group = element statement-group
+ {Common.attribs,metadata?,
+ (omtext | example | definition | symbol | assertion |
+ notation | itemize | enumerate | description)*}
+
+symbol = element symbol {attribute name {xsd:string}}
+
+assertion = element assertion {Common.attribs,attribute type {xsd:string}?,metadata?,(statement.model)*}
+axiom = element axiom {Common.attribs,(statement.model)*}
+
+proof.model = omtext|step|cases
+proof = element proof {Common.attribs,attribute for {xsd:string}?,metadata?,(proof.model)*}
+cases = element cases {(case|omtext)*}
+case = element case {Common.attribs,attribute for {xsd:string}?,(proof.model)*}
+step = element step {Common.attribs,(statement.model|method)*}
+method = element method {Common.attribs,attribute xref {xsd:string},(text|Math|proof|premise)*}
+premise = element premise {Common.attribs,attribute xref {xsd:string}}
+
+omtext = element omtext {Common.attribs,attribute for {xsd:string}?,
+ attribute from {xsd:string}?,attribute type {xsd:string}?,
+ metadata?,(text|Flow.class)*}
+
+statements.Block.class |= example | definition | notation | symbol | assertion | proof
+ | axiom | omtext | statement-group
+statements.Inline.class |= definiens | notemph | termin | method
+
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animation.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animation.rnc
new file mode 100644
index 00000000000..89ef4dbea9e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animation.rnc
@@ -0,0 +1,208 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Animation Module
+## file: svg-animation.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-animation.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Animation
+##
+## animate, set, animateMotion, animateColor, animateTransform, mpath
+##
+## This module declares markup to provide support for animation.
+##
+
+##
+## SVG.Animation.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Animation.extra.class = notAllowed
+ SVG.Animation.class |=
+ animate
+ | set
+ | animateMotion
+ | animateColor
+ | animateTransform
+ | SVG.Animation.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.Animation.attrib\x{a}" ~ " " ]
+ SVG.Animation.extra.attrib = empty
+ SVG.Animation.attrib = SVG.XLink.attrib, SVG.Animation.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationAttribute.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationAttribute.extra.attrib = empty
+ SVG.AnimationAttribute.attrib =
+ attribute attributeName { text },
+ attribute attributeType { text }?,
+ SVG.AnimationAttribute.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationTiming.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationTiming.extra.attrib = empty
+ SVG.AnimationTiming.attrib =
+ attribute begin { text }?,
+ attribute dur { text }?,
+ attribute end { text }?,
+ attribute min { text }?,
+ attribute max { text }?,
+ [ a:defaultValue = "always" ]
+ attribute restart { "always" | "never" | "whenNotActive" }?,
+ attribute repeatCount { text }?,
+ attribute repeatDur { text }?,
+ [ a:defaultValue = "remove" ]
+ attribute fill { "remove" | "freeze" }?,
+ SVG.AnimationTiming.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationValue.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationValue.extra.attrib = empty
+ SVG.AnimationValue.attrib =
+ [ a:defaultValue = "linear" ]
+ attribute calcMode { "discrete" | "linear" | "paced" | "spline" }?,
+ attribute values { text }?,
+ attribute keyTimes { text }?,
+ attribute keySplines { text }?,
+ attribute from { text }?,
+ attribute to { text }?,
+ attribute by { text }?,
+ SVG.AnimationValue.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.AnimationAddtion.attrib\x{a}" ~
+ " "
+ ]
+ SVG.AnimationAddtion.extra.attrib = empty
+ SVG.AnimationAddtion.attrib =
+ [ a:defaultValue = "replace" ]
+ attribute additive { "replace" | "sum" }?,
+ [ a:defaultValue = "none" ]
+ attribute accumulate { "none" | "sum" }?,
+ SVG.AnimationAddtion.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " animate: Animate Element\x{a}" ~
+ " "
+ ]
+ SVG.animate.content = SVG.Description.class*
+ animate = element animate { attlist.animate, SVG.animate.content }
+ attlist.animate &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationValue.attrib,
+ SVG.AnimationAddtion.attrib
+ a:documentation [ "\x{a}" ~ " set: Set Element\x{a}" ~ " " ]
+ SVG.set.content = SVG.Description.class*
+ set = element set { attlist.set, SVG.set.content }
+ attlist.set &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ attribute to { text }?
+ a:documentation [
+ "\x{a}" ~
+ " animateMotion: Animate Motion Element\x{a}" ~
+ " "
+ ]
+ SVG.animateMotion.content = SVG.Description.class*, mpath?
+ animateMotion =
+ element animateMotion {
+ attlist.animateMotion, SVG.animateMotion.content
+ }
+ attlist.animateMotion &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationAddtion.attrib,
+ [ a:defaultValue = "paced" ]
+ attribute calcMode { "discrete" | "linear" | "paced" | "spline" }?,
+ attribute values { text }?,
+ attribute keyTimes { text }?,
+ attribute keySplines { text }?,
+ attribute from { text }?,
+ attribute to { text }?,
+ attribute by { text }?,
+ attribute path { text }?,
+ attribute keyPoints { text }?,
+ attribute rotate { text }?,
+ attribute origin { text }?
+ a:documentation [
+ "\x{a}" ~
+ " animateColor: Animate Color Element\x{a}" ~
+ " "
+ ]
+ SVG.animateColor.content = SVG.Description.class*
+ animateColor =
+ element animateColor {
+ attlist.animateColor, SVG.animateColor.content
+ }
+ attlist.animateColor &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationValue.attrib,
+ SVG.AnimationAddtion.attrib
+ a:documentation [
+ "\x{a}" ~
+ " animateTransform: Animate Transform Element\x{a}" ~
+ " "
+ ]
+ SVG.animateTransform.content = SVG.Description.class*
+ animateTransform =
+ element animateTransform {
+ attlist.animateTransform, SVG.animateTransform.content
+ }
+ attlist.animateTransform &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.AnimationEvents.attrib,
+ SVG.External.attrib,
+ SVG.Animation.attrib,
+ SVG.AnimationAttribute.attrib,
+ SVG.AnimationTiming.attrib,
+ SVG.AnimationValue.attrib,
+ SVG.AnimationAddtion.attrib,
+ [ a:defaultValue = "translate" ]
+ attribute type {
+ "translate" | "scale" | "rotate" | "skewX" | "skewY"
+ }?
+ a:documentation [
+ "\x{a}" ~
+ " mpath: Motion Path Element\x{a}" ~
+ " "
+ ]
+ SVG.mpath.content = SVG.Description.class*
+ mpath = element mpath { attlist.mpath, SVG.mpath.content }
+ attlist.mpath &=
+ SVG.Core.attrib, SVG.XLinkRequired.attrib, SVG.External.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animevents-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animevents-attrib.rnc
new file mode 100644
index 00000000000..efbbabc42c5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-animevents-attrib.rnc
@@ -0,0 +1,33 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Animation Events Attribute Module
+## file: svg-animevents-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-animevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Animation Events Attribute
+##
+## onbegin, onend, onrepeat, onload
+##
+## This module defines the AnimationEvents attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.onbegin.attrib = attribute onbegin { Script.datatype }?
+ SVG.onend.attrib = attribute onend { Script.datatype }?
+ SVG.onrepeat.attrib = attribute onrepeat { Script.datatype }?
+ SVG.AnimationEvents.extra.attrib = empty
+ SVG.AnimationEvents.attrib &=
+ SVG.onbegin.attrib,
+ SVG.onend.attrib,
+ SVG.onrepeat.attrib,
+ SVG.onload.attrib,
+ SVG.AnimationEvents.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-clip.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-clip.rnc
new file mode 100644
index 00000000000..5471141c5fa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-clip.rnc
@@ -0,0 +1,64 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Clip Module
+## file: svg-basic-clip.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Clip
+##
+## clipPath
+##
+## This module declares markup to provide support for clipping.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ ClipPathValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Clip.attrib\x{a}" ~ " " ]
+ SVG.Clip.extra.attrib = empty
+ SVG.Clip.attrib &=
+ attribute clip-path { ClipPathValue.datatype }?,
+ attribute clip-rule { ClipFillRule.datatype }?,
+ SVG.Clip.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Clip.class\x{a}" ~ " " ]
+ SVG.Clip.extra.class = notAllowed
+ SVG.Clip.class |= clipPath | SVG.Clip.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " clipPath: Clip Path Element\x{a}" ~
+ " "
+ ]
+ SVG.clipPath.class = rect | SVG.Animation.class | SVG.Use.class
+ SVG.clipPath.content = SVG.Description.class*, SVG.clipPath.class*
+ clipPath = element clipPath { attlist.clipPath, SVG.clipPath.content }
+ attlist.clipPath &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Text.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?,
+ attribute clipPathUnits { "userSpaceOnUse" | "objectBoundingBox" }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-filter.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-filter.rnc
new file mode 100644
index 00000000000..995c08e7daf
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-filter.rnc
@@ -0,0 +1,338 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Filter Module
+## file: svg-basic-filter.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Filter
+##
+## filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+## feFlood, feGaussianBlur, feImage, feMerge, feMergeNode, feOffset,
+## feTile, feFuncR, feFuncG, feFuncB, feFuncA
+##
+## This module declares markup to provide support for filter effect.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ FilterValue.datatype = xsd:string
+ NumberOptionalNumber.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Filter.attrib\x{a}" ~ " " ]
+ SVG.Filter.extra.attrib = empty
+ SVG.Filter.attrib &=
+ attribute filter { FilterValue.datatype }?,
+ SVG.Filter.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.FilterColor.attrib\x{a}" ~ " " ]
+ SVG.FilterColor.extra.attrib = empty
+ SVG.FilterColor.attrib &=
+ attribute color-interpolation-filters {
+ "auto" | "sRGB" | "linearRGB" | "inherit"
+ }?,
+ SVG.FilterColor.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Filter.class\x{a}" ~ " " ]
+ SVG.Filter.extra.class = notAllowed
+ SVG.Filter.class |= filter | SVG.Filter.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " SVG.FilterPrimitive.class\x{a}" ~
+ " "
+ ]
+ SVG.FilterPrimitive.extra.class = notAllowed
+ SVG.FilterPrimitive.class =
+ feBlend
+ | feColorMatrix
+ | feComponentTransfer
+ | feComposite
+ | feFlood
+ | feGaussianBlur
+ | feImage
+ | feMerge
+ | feOffset
+ | feTile
+ | SVG.FilterPrimitive.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " SVG.FilterPrimitive.attrib\x{a}" ~
+ " "
+ ]
+ SVG.FilterPrimitive.extra.attrib = empty
+ SVG.FilterPrimitive.attrib =
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute result { text }?,
+ SVG.FilterPrimitive.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " SVG.FilterPrimitiveWithIn.attrib\x{a}" ~
+ " "
+ ]
+ SVG.FilterPrimitiveWithIn.extra.attrib = empty
+ SVG.FilterPrimitiveWithIn.attrib =
+ SVG.FilterPrimitive.attrib,
+ attribute in { text }?,
+ SVG.FilterPrimitiveWithIn.extra.attrib
+ a:documentation [ "\x{a}" ~ " filter: Filter Element\x{a}" ~ " " ]
+ SVG.filter.content =
+ SVG.Description.class*, (animate | set | SVG.FilterPrimitive.class)*
+ filter = element filter { attlist.filter, SVG.filter.content }
+ attlist.filter &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute filterRes { NumberOptionalNumber.datatype }?,
+ attribute filterUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute primitiveUnits { "userSpaceOnUse" | "objectBoundingBox" }?
+ a:documentation [
+ "\x{a}" ~
+ " feBlend: Filter Effect Blend Element\x{a}" ~
+ " "
+ ]
+ SVG.feBlend.content = (animate | set)*
+ feBlend = element feBlend { attlist.feBlend, SVG.feBlend.content }
+ attlist.feBlend &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute in2 { text },
+ [ a:defaultValue = "normal" ]
+ attribute mode {
+ "normal" | "multiply" | "screen" | "darken" | "lighten"
+ }?
+ a:documentation [
+ "\x{a}" ~
+ " feColorMatrix: Filter Effect Color Matrix Element\x{a}" ~
+ " "
+ ]
+ SVG.feColorMatrix.content = (animate | set)*
+ feColorMatrix =
+ element feColorMatrix {
+ attlist.feColorMatrix, SVG.feColorMatrix.content
+ }
+ attlist.feColorMatrix &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ [ a:defaultValue = "matrix" ]
+ attribute type {
+ "matrix" | "saturate" | "hueRotate" | "luminanceToAlpha"
+ }?,
+ attribute values { text }?
+ a:documentation [
+ "\x{a}" ~
+ " feComponentTransfer: Filter Effect Component Transfer Element\x{a}" ~
+ " "
+ ]
+ SVG.feComponentTransfer.content =
+ feFuncR?, feFuncG?, feFuncB?, feFuncA?
+ feComponentTransfer =
+ element feComponentTransfer {
+ attlist.feComponentTransfer, SVG.feComponentTransfer.content
+ }
+ attlist.feComponentTransfer &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib
+ a:documentation [
+ "\x{a}" ~
+ " feComposite: Filter Effect Composite Element\x{a}" ~
+ " "
+ ]
+ SVG.feComposite.content = (animate | set)*
+ feComposite =
+ element feComposite { attlist.feComposite, SVG.feComposite.content }
+ attlist.feComposite &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute in2 { text },
+ [ a:defaultValue = "over" ]
+ attribute operator {
+ "over" | "in" | "out" | "atop" | "xor" | "arithmetic"
+ }?,
+ attribute k1 { Number.datatype }?,
+ attribute k2 { Number.datatype }?,
+ attribute k3 { Number.datatype }?,
+ attribute k4 { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFlood: Filter Effect Flood Element\x{a}" ~
+ " "
+ ]
+ SVG.feFlood.content = (animate | set | animateColor)*
+ feFlood = element feFlood { attlist.feFlood, SVG.feFlood.content }
+ attlist.feFlood &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute flood-color { SVGColor.datatype }?,
+ attribute flood-opacity { OpacityValue.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feGaussianBlur: Filter Effect Gaussian Blur Element\x{a}" ~
+ " "
+ ]
+ SVG.feGaussianBlur.content = (animate | set)*
+ feGaussianBlur =
+ element feGaussianBlur {
+ attlist.feGaussianBlur, SVG.feGaussianBlur.content
+ }
+ attlist.feGaussianBlur &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute stdDeviation { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feImage: Filter Effect Image Element\x{a}" ~
+ " "
+ ]
+ SVG.feImage.content = (animate | set | animateTransform)*
+ feImage = element feImage { attlist.feImage, SVG.feImage.content }
+ attlist.feImage &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.FilterPrimitive.attrib,
+ SVG.XLinkEmbed.attrib,
+ SVG.External.attrib,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feMerge: Filter Effect Merge Element\x{a}" ~
+ " "
+ ]
+ SVG.feMerge.content = feMergeNode*
+ feMerge = element feMerge { attlist.feMerge, SVG.feMerge.content }
+ attlist.feMerge &=
+ SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitive.attrib
+ a:documentation [
+ "\x{a}" ~
+ " feMergeNode: Filter Effect Merge Node Element\x{a}" ~
+ " "
+ ]
+ SVG.feMergeNode.content = (animate | set)*
+ feMergeNode =
+ element feMergeNode { attlist.feMergeNode, SVG.feMergeNode.content }
+ attlist.feMergeNode &=
+ SVG.Core.attrib,
+ attribute in { text }?
+ a:documentation [
+ "\x{a}" ~
+ " feOffset: Filter Effect Offset Element\x{a}" ~
+ " "
+ ]
+ SVG.feOffset.content = (animate | set)*
+ feOffset = element feOffset { attlist.feOffset, SVG.feOffset.content }
+ attlist.feOffset &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute dx { Number.datatype }?,
+ attribute dy { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feTile: Filter Effect Tile Element\x{a}" ~
+ " "
+ ]
+ SVG.feTile.content = (animate | set)*
+ feTile = element feTile { attlist.feTile, SVG.feTile.content }
+ attlist.feTile &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib
+ a:documentation [
+ "\x{a}" ~
+ " feFuncR: Filter Effect Function Red Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncR.content = (animate | set)*
+ feFuncR = element feFuncR { attlist.feFuncR, SVG.feFuncR.content }
+ attlist.feFuncR &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFuncG: Filter Effect Function Green Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncG.content = (animate | set)*
+ feFuncG = element feFuncG { attlist.feFuncG, SVG.feFuncG.content }
+ attlist.feFuncG &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFuncB: Filter Effect Function Blue Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncB.content = (animate | set)*
+ feFuncB = element feFuncB { attlist.feFuncB, SVG.feFuncB.content }
+ attlist.feFuncB &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feFuncA: Filter Effect Function Alpha Element\x{a}" ~
+ " "
+ ]
+ SVG.feFuncA.content = (animate | set)*
+ feFuncA = element feFuncA { attlist.feFuncA, SVG.feFuncA.content }
+ attlist.feFuncA &=
+ SVG.Core.attrib,
+ attribute type {
+ "identity" | "table" | "discrete" | "linear" | "gamma"
+ },
+ attribute tableValues { text }?,
+ attribute slope { Number.datatype }?,
+ attribute intercept { Number.datatype }?,
+ attribute amplitude { Number.datatype }?,
+ attribute exponent { Number.datatype }?,
+ attribute offset { Number.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-font.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-font.rnc
new file mode 100644
index 00000000000..a45d34e3c64
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-font.rnc
@@ -0,0 +1,196 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Font Module
+## file: svg-basic-font.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Font
+##
+## font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+## font-face-uri, font-face-name
+##
+## This module declares markup to provide support for template.
+##
+
+##
+## SVG.Font.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Font.extra.class = notAllowed
+ SVG.Font.class |= font | font-face | SVG.Font.extra.class
+ a:documentation [ "\x{a}" ~ " font: Font Element\x{a}" ~ " " ]
+ SVG.font.content =
+ SVG.Description.class*,
+ font-face,
+ missing-glyph,
+ (glyph | hkern | vkern)*
+ font = element font { attlist.font, SVG.font.content }
+ attlist.font &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.External.attrib,
+ attribute horiz-origin-x { Number.datatype }?,
+ attribute horiz-origin-y { Number.datatype }?,
+ attribute horiz-adv-x { Number.datatype },
+ attribute vert-origin-x { Number.datatype }?,
+ attribute vert-origin-y { Number.datatype }?,
+ attribute vert-adv-y { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " font-face: Font Face Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face.extra.class = notAllowed
+ SVG.font-face.content =
+ SVG.Description.class*, font-face-src?, SVG.font-face.extra.class
+ font-face =
+ element font-face { attlist.font-face, SVG.font-face.content }
+ attlist.font-face &=
+ SVG.Core.attrib,
+ attribute font-family { text }?,
+ attribute font-style { text }?,
+ attribute font-variant { text }?,
+ attribute font-weight { text }?,
+ attribute font-stretch { text }?,
+ attribute font-size { text }?,
+ attribute unicode-range { text }?,
+ attribute units-per-em { Number.datatype }?,
+ attribute panose-1 { text }?,
+ attribute stemv { Number.datatype }?,
+ attribute stemh { Number.datatype }?,
+ attribute slope { Number.datatype }?,
+ attribute cap-height { Number.datatype }?,
+ attribute x-height { Number.datatype }?,
+ attribute accent-height { Number.datatype }?,
+ attribute ascent { Number.datatype }?,
+ attribute descent { Number.datatype }?,
+ attribute widths { text }?,
+ attribute bbox { text }?,
+ attribute ideographic { Number.datatype }?,
+ attribute alphabetic { Number.datatype }?,
+ attribute mathematical { Number.datatype }?,
+ attribute hanging { Number.datatype }?,
+ attribute v-ideographic { Number.datatype }?,
+ attribute v-alphabetic { Number.datatype }?,
+ attribute v-mathematical { Number.datatype }?,
+ attribute v-hanging { Number.datatype }?,
+ attribute underline-position { Number.datatype }?,
+ attribute underline-thickness { Number.datatype }?,
+ attribute strikethrough-position { Number.datatype }?,
+ attribute strikethrough-thickness { Number.datatype }?,
+ attribute overline-position { Number.datatype }?,
+ attribute overline-thickness { Number.datatype }?
+ a:documentation [ "\x{a}" ~ " glyph: Glyph Element\x{a}" ~ " " ]
+ SVG.glyph.class = notAllowed
+ SVG.glyph.content = SVG.Description.class*, SVG.glyph.class*
+ glyph = element glyph { attlist.glyph, SVG.glyph.content }
+ attlist.glyph &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ attribute unicode { text }?,
+ attribute glyph-name { text }?,
+ attribute d { PathData.datatype }?,
+ attribute orientation { text }?,
+ attribute arabic-form { text }?,
+ attribute lang { LanguageCodes.datatype }?,
+ attribute horiz-adv-x { Number.datatype }?,
+ attribute vert-origin-x { Number.datatype }?,
+ attribute vert-origin-y { Number.datatype }?,
+ attribute vert-adv-y { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " missing-glyph: Missing Glyph Element\x{a}" ~
+ " "
+ ]
+ SVG.missing-glyph.class = notAllowed
+ SVG.missing-glyph.content =
+ SVG.Description.class*, SVG.missing-glyph.class*
+ missing-glyph =
+ element missing-glyph {
+ attlist.missing-glyph, SVG.missing-glyph.content
+ }
+ attlist.missing-glyph &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ attribute d { PathData.datatype }?,
+ attribute horiz-adv-x { Number.datatype }?,
+ attribute vert-origin-x { Number.datatype }?,
+ attribute vert-origin-y { Number.datatype }?,
+ attribute vert-adv-y { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " hkern: Horizontal Kerning Element\x{a}" ~
+ " "
+ ]
+ SVG.hkern.content = empty
+ hkern = element hkern { attlist.hkern, SVG.hkern.content }
+ attlist.hkern &=
+ SVG.Core.attrib,
+ attribute u1 { text }?,
+ attribute g1 { text }?,
+ attribute u2 { text }?,
+ attribute g2 { text }?,
+ attribute k { Number.datatype }
+ a:documentation [
+ "\x{a}" ~
+ " vkern: Vertical Kerning Element\x{a}" ~
+ " "
+ ]
+ SVG.vkern.content = empty
+ vkern = element vkern { attlist.vkern, SVG.vkern.content }
+ attlist.vkern &=
+ SVG.Core.attrib,
+ attribute u1 { text }?,
+ attribute g1 { text }?,
+ attribute u2 { text }?,
+ attribute g2 { text }?,
+ attribute k { Number.datatype }
+ a:documentation [
+ "\x{a}" ~
+ " font-face-src: Font Face Source Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-src.content = (font-face-uri | font-face-name)+
+ font-face-src =
+ element font-face-src {
+ attlist.font-face-src, SVG.font-face-src.content
+ }
+ attlist.font-face-src &= SVG.Core.attrib
+ a:documentation [
+ "\x{a}" ~
+ " font-face-uri: Font Face URI Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-uri.content = empty
+ font-face-uri =
+ element font-face-uri {
+ attlist.font-face-uri, SVG.font-face-uri.content
+ }
+ attlist.font-face-uri &= SVG.Core.attrib, SVG.XLinkRequired.attrib
+ a:documentation [
+ "\x{a}" ~
+ " font-face-name: Font Face Name Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-name.content = empty
+ font-face-name =
+ element font-face-name {
+ attlist.font-face-name, SVG.font-face-name.content
+ }
+ attlist.font-face-name &=
+ SVG.Core.attrib,
+ attribute name { text }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-graphics-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-graphics-attrib.rnc
new file mode 100644
index 00000000000..606e2e4e92d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-graphics-attrib.rnc
@@ -0,0 +1,49 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Graphics Attribute Module
+## file: svg-basic-graphics-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Graphics Attribute
+##
+## display, visibility
+##
+## This module defines the Graphics attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.display.attrib =
+ attribute display {
+ "inline"
+ | "block"
+ | "list-item"
+ | "run-in"
+ | "compact"
+ | "marker"
+ | "table"
+ | "inline-table"
+ | "table-row-group"
+ | "table-header-group"
+ | "table-footer-group"
+ | "table-row"
+ | "table-column-group"
+ | "table-column"
+ | "table-cell"
+ | "table-caption"
+ | "none"
+ | "inherit"
+ }?
+ SVG.visibility.attrib =
+ attribute visibility { "visible" | "hidden" | "inherit" }?
+ SVG.Graphics.extra.attrib = empty
+ SVG.Graphics.attrib &=
+ SVG.display.attrib, SVG.visibility.attrib, SVG.Graphics.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-structure.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-structure.rnc
new file mode 100644
index 00000000000..67b94df81a1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-structure.rnc
@@ -0,0 +1,293 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Structure Module
+## file: svg-basic-structure.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Structure
+##
+## svg, g, defs, desc, title, metadata, use
+##
+## This module declares the major structural elements and their attributes.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## The root element is "svg".
+ ##
+ start = svg
+
+ ##
+ ## Include core set of modules
+ ##
+ div {
+
+ ##
+ ## Datatypes Module
+ ##
+ include "svg-datatypes.rnc"
+
+ ##
+ ## Core Attribute Module
+ ##
+ include "svg-core-attrib.rnc"
+ }
+ a:documentation [
+ "\x{a}" ~
+ " Content Models (Default)\x{a}" ~
+ " "
+ ]
+ SVG.Profile.class = notAllowed
+ SVG.Gradient.class = notAllowed
+ SVG.Pattern.class = notAllowed
+ SVG.Clip.class = notAllowed
+ SVG.Mask.class = notAllowed
+ SVG.Filter.class = notAllowed
+ SVG.Cursor.class = notAllowed
+ SVG.Marker.class = notAllowed
+ SVG.View.class = notAllowed
+ SVG.Script.class = notAllowed
+ SVG.Font.class = notAllowed
+ SVG.Extensibility.class = notAllowed
+ SVG.Conditional.class = notAllowed
+ SVG.Image.class = notAllowed
+ SVG.Style.class = notAllowed
+ SVG.Shape.class = notAllowed
+ SVG.Text.class = notAllowed
+ SVG.Hyperlink.class = notAllowed
+ SVG.Animation.class = notAllowed
+ a:documentation [
+ "\x{a}" ~
+ " Attribute Collections (Default)\x{a}" ~
+ " "
+ ]
+ SVG.Container.attrib = empty
+ SVG.Viewport.attrib = empty
+ SVG.Text.attrib = empty
+ SVG.TextContent.attrib = empty
+ SVG.Opacity.attrib = empty
+ SVG.Marker.attrib = empty
+ SVG.Profile.attrib = empty
+ SVG.Gradient.attrib = empty
+ SVG.Clip.attrib = empty
+ SVG.Mask.attrib = empty
+ SVG.Filter.attrib = empty
+ SVG.FilterColor.attrib = empty
+ SVG.Cursor.attrib = empty
+ SVG.External.attrib = empty
+ SVG.Conditional.attrib = empty
+ SVG.Color.attrib = empty
+ SVG.Paint.attrib = empty
+ SVG.Graphics.attrib = empty
+ SVG.DocumentEvents.attrib = empty
+ SVG.GraphicalEvents.attrib = empty
+ SVG.onload.attrib = empty
+ SVG.AnimationEvents.attrib = empty
+ SVG.XLink.attrib = empty
+ SVG.XLinkRequired.attrib = empty
+ SVG.XLinkEmbed.attrib = empty
+ SVG.XLinkReplace.attrib = empty
+ SVG.Style.attrib = empty
+ SVG.Font.attrib = empty
+ a:documentation [ "\x{a}" ~ " SVG.Description.class\x{a}" ~ " " ]
+ SVG.Description.extra.class = notAllowed
+ SVG.Description.class =
+ desc | title | metadata | SVG.Description.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.Use.class\x{a}" ~ " " ]
+ SVG.Use.extra.class = notAllowed
+ SVG.Use.class = use | SVG.Use.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.Structure.class\x{a}" ~ " " ]
+ SVG.Structure.extra.class = notAllowed
+ SVG.Structure.class =
+ svg | g | defs | SVG.Use.class | SVG.Structure.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " SVG.Presentation.attrib\x{a}" ~
+ " "
+ ]
+ SVG.Presentation.extra.attrib = empty
+ SVG.Presentation.attrib =
+ SVG.Container.attrib,
+ SVG.Viewport.attrib,
+ SVG.Text.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Profile.attrib,
+ SVG.Gradient.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.FilterColor.attrib,
+ SVG.Cursor.attrib,
+ attribute flood-color { SVGColor.datatype }?,
+ attribute flood-opacity { OpacityValue.datatype }?,
+ attribute lighting-color { SVGColor.datatype }?,
+ SVG.Presentation.extra.attrib
+ a:documentation [
+ "\x{a}" ~
+ " svg: SVG Document Element\x{a}" ~
+ " "
+ ]
+ SVG.svg.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ svg = element svg { attlist.svg, SVG.svg.content }
+ attlist.svg &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.DocumentEvents.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?,
+ [ a:defaultValue = "magnify" ]
+ attribute zoomAndPan { "disable" | "magnify" }?,
+ [ a:defaultValue = "1.1" ] attribute version { xsd:string "1.1" }?,
+ attribute baseProfile { Text.datatype }?,
+ [ a:defaultValue = "text/ecmascript" ]
+ attribute contentScriptType { ContentType.datatype }?,
+ [ a:defaultValue = "text/css" ]
+ attribute contentStyleType { ContentType.datatype }?
+ a:documentation [ "\x{a}" ~ " g: Group Element\x{a}" ~ " " ]
+ SVG.g.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ g = element g { attlist.g, SVG.g.content }
+ attlist.g &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " defs: Definisions Element\x{a}" ~
+ " "
+ ]
+ SVG.defs.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ defs = element defs { attlist.defs, SVG.defs.content }
+ attlist.defs &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " desc: Description Element\x{a}" ~
+ " "
+ ]
+ SVG.desc.content = text
+ desc = element desc { attlist.desc, SVG.desc.content }
+ attlist.desc &= SVG.Core.attrib, SVG.Style.attrib
+ a:documentation [ "\x{a}" ~ " title: Title Element\x{a}" ~ " " ]
+ SVG.title.content = text
+ title = element title { attlist.title, SVG.title.content }
+ attlist.title &= SVG.Core.attrib, SVG.Style.attrib
+ a:documentation [
+ "\x{a}" ~
+ " metadata: Metadata Element\x{a}" ~
+ " "
+ ]
+ SVG.metadata.content = text
+ metadata = element metadata { attlist.metadata, SVG.metadata.content }
+ attlist.metadata &= SVG.Core.attrib
+ a:documentation [ "\x{a}" ~ " use: Use Element\x{a}" ~ " " ]
+ SVG.use.content = SVG.Description.class*, SVG.Animation.class*
+ use = element use { attlist.use, SVG.use.content }
+ attlist.use &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.XLinkEmbed.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-text.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-text.rnc
new file mode 100644
index 00000000000..8e8b2c728bd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-basic-text.rnc
@@ -0,0 +1,137 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Basic Text Module
+## file: svg-basic-text.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-basic-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Basic Text
+##
+## text, altGlyph, altGlyphDef, glyphRef
+##
+## This module declares markup to provide support for text.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ FontFamilyValue.datatype = xsd:string
+ FontSizeValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Font.attrib\x{a}" ~ " " ]
+ SVG.Font.extra.attrib = empty
+ SVG.Font.attrib &=
+ attribute font-family { FontFamilyValue.datatype }?,
+ attribute font-size { FontSizeValue.datatype }?,
+ attribute font-style {
+ "normal" | "italic" | "oblique" | "inherit"
+ }?,
+ attribute font-weight {
+ "normal"
+ | "bold"
+ | "bolder"
+ | "lighter"
+ | "100"
+ | "200"
+ | "300"
+ | "400"
+ | "500"
+ | "600"
+ | "700"
+ | "800"
+ | "900"
+ | "inherit"
+ }?,
+ SVG.Font.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Text.class\x{a}" ~ " " ]
+ SVG.Text.extra.class = notAllowed
+ SVG.Text.class |= \text | SVG.Text.extra.class
+ a:documentation [ "\x{a}" ~ " SVG.TextContent.class\x{a}" ~ " " ]
+ SVG.TextContent.extra.class = notAllowed
+ SVG.TextContent.class = altGlyph | SVG.TextContent.extra.class
+ a:documentation [ "\x{a}" ~ " text: Text Element\x{a}" ~ " " ]
+ SVG.text.class =
+ text
+ | SVG.Description.class
+ | SVG.Animation.class
+ | # <ref name="SVG.TextContent.extra.class"/>
+ SVG.Hyperlink.class
+ SVG.text.content = SVG.text.class*
+ \text = element text { attlist.text, SVG.text.content }
+ attlist.text &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute rotate { Numbers.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyph: Alternate Glyph Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyph.content = text
+ altGlyph = element altGlyph { attlist.altGlyph, SVG.altGlyph.content }
+ attlist.altGlyph &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute glyphRef { text }?,
+ attribute format { text }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyphDef: Alternate Glyph Definition Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyphDef.content = glyphRef+
+ altGlyphDef =
+ element altGlyphDef { attlist.altGlyphDef, SVG.altGlyphDef.content }
+ attlist.altGlyphDef &= SVG.Core.attrib
+ a:documentation [
+ "\x{a}" ~
+ " glyphRef: Glyph Reference Element\x{a}" ~
+ " "
+ ]
+ SVG.glyphRef.content = empty
+ glyphRef = element glyphRef { attlist.glyphRef, SVG.glyphRef.content }
+ attlist.glyphRef &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Font.attrib,
+ SVG.XLink.attrib,
+ attribute glyphRef { text }?,
+ attribute format { text }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-clip.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-clip.rnc
new file mode 100644
index 00000000000..50dd76142ea
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-clip.rnc
@@ -0,0 +1,30 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+
+
+##
+## SVG 1.1 Clip Module
+## file: svg-clip.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Clip
+##
+## clipPath
+##
+## This module declares markup to provide support for clipping.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-clip.rnc" inherit = ns1
+
+ ##
+ ## extend content model of clipPath
+ ##
+ SVG.clipPath.class |= SVG.Shape.class | SVG.Text.class
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-conditional.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-conditional.rnc
new file mode 100644
index 00000000000..922554a6a8d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-conditional.rnc
@@ -0,0 +1,62 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Conditional Processing Module
+## file: svg-conditional.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-conditional.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Conditional Processing
+##
+## switch
+##
+## This module declares markup to provide support for conditional processing.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ ExtensionList.datatype = xsd:string
+ FeatureList.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Conditional.attrib\x{a}" ~ " " ]
+ SVG.Conditional.extra.attrib = empty
+ SVG.Conditional.attrib &=
+ attribute requiredFeatures { FeatureList.datatype }?,
+ attribute requiredExtensions { ExtensionList.datatype }?,
+ attribute systemLanguage { LanguageCodes.datatype }?,
+ SVG.Conditional.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Conditional.class\x{a}" ~ " " ]
+ SVG.Conditional.extra.class = notAllowed
+ SVG.Conditional.class |= switch | SVG.Conditional.extra.class
+ a:documentation [ "\x{a}" ~ " switch: Switch Element\x{a}" ~ " " ]
+ SVG.switch.content =
+ SVG.Description.class*,
+ (svg
+ | g
+ | use
+ | \text
+ | SVG.Animation.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Shape.class
+ | SVG.Hyperlink.class
+ | SVG.Extensibility.class)*
+ switch = element switch { attlist.switch, SVG.switch.content }
+ attlist.switch &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-container-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-container-attrib.rnc
new file mode 100644
index 00000000000..fb4ac5ff47f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-container-attrib.rnc
@@ -0,0 +1,33 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Container Attribute Module
+## file: svg-container-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-container-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Container Attribute
+##
+## enable-background
+##
+## This module defines the Container attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## 'enable-background' property/attribute value (e.g., 'new', 'accumulate')
+ ##
+ EnableBackgroundValue.datatype = xsd:string
+ SVG.enable-background.attrib =
+ attribute enable-background { EnableBackgroundValue.datatype }?
+ SVG.Container.extra.attrib = empty
+ SVG.Container.attrib &=
+ SVG.enable-background.attrib, SVG.Container.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-core-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-core-attrib.rnc
new file mode 100644
index 00000000000..e9d73f1601f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-core-attrib.rnc
@@ -0,0 +1,35 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Core Attribute Module
+## file: svg-core-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-core-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Core Attribute
+##
+## id, xml:base, xml:lang, xml:space
+##
+## This module defines the core set of attributes that can be present on
+## any element.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.id.attrib = attribute id { xsd:ID }?
+ SVG.base.attrib = attribute xml:base { URI.datatype }?
+ SVG.lang.attrib = attribute xml:lang { LanguageCode.datatype }?
+ SVG.space.attrib = attribute xml:space { "default" | "preserve" }?
+ SVG.Core.extra.attrib = empty
+ SVG.Core.attrib =
+ SVG.id.attrib,
+ SVG.base.attrib,
+ SVG.lang.attrib,
+ SVG.space.attrib,
+ SVG.Core.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-cursor.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-cursor.rnc
new file mode 100644
index 00000000000..50b42d15627
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-cursor.rnc
@@ -0,0 +1,47 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Cursor Module
+## file: svg-cursor.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-cursor.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Cursor
+##
+## cursor
+##
+## This module declares markup to provide support for cursor.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ CursorValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Cursor.attrib\x{a}" ~ " " ]
+ SVG.Cursor.extra.attrib = empty
+ SVG.Cursor.attrib &=
+ attribute cursor { CursorValue.datatype }?,
+ SVG.Cursor.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Cursor.class\x{a}" ~ " " ]
+ SVG.Cursor.extra.class = notAllowed
+ SVG.Cursor.class |= cursor | SVG.Cursor.extra.class
+ a:documentation [ "\x{a}" ~ " cursor: Cursor Element\x{a}" ~ " " ]
+ SVG.cursor.content = SVG.Description.class*
+ cursor = element cursor { attlist.cursor, SVG.cursor.content }
+ attlist.cursor &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.XLinkRequired.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-datatypes.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-datatypes.rnc
new file mode 100644
index 00000000000..7a3ea4b659f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-datatypes.rnc
@@ -0,0 +1,135 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Datatypes Module
+## file: svg-datatypes.mod
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-datatypes.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Datatypes
+##
+## This module declares common data types for properties and attributes.
+##
+
+##
+## feature specification
+##
+[ xml:lang = "en" ]
+grammar {
+ Boolean.datatype = "false" | "true"
+
+ ##
+ ## 'clip-rule' or 'fill-rule' property/attribute value
+ ##
+ ClipFillRule.datatype = "nonzero" | "evenodd" | "inherit"
+
+ ##
+ ## media type, as per [RFC2045]
+ ##
+ ContentType.datatype = xsd:string
+
+ ##
+ ## a <coordinate>
+ ##
+ Coordinate.datatype = xsd:string
+
+ ##
+ ## a list of <coordinate>s
+ ##
+ Coordinates.datatype = xsd:string
+
+ ##
+ ## a <color> value
+ ##
+ Color.datatype = xsd:string
+
+ ##
+ ## a <integer>
+ ##
+ Integer.datatype = xsd:string
+
+ ##
+ ## a language code, as per [RFC3066]
+ ##
+ LanguageCode.datatype = xsd:language
+
+ ##
+ ## comma-separated list of language codes, as per [RFC3066]
+ ##
+ LanguageCodes.datatype = xsd:string
+
+ ##
+ ## a <ength>
+ ##
+ Length.datatype = xsd:string
+
+ ##
+ ## a list of <length>s
+ ##
+ Lengths.datatype = xsd:string
+
+ ##
+ ## a <number>
+ ##
+ Number.datatype = xsd:string
+
+ ##
+ ## a list of <number>s
+ ##
+ Numbers.datatype = xsd:string
+
+ ##
+ ## opacity value (e.g., <number>)
+ ##
+ OpacityValue.datatype = xsd:string
+
+ ##
+ ## a path data specification
+ ##
+ PathData.datatype = xsd:string
+
+ ##
+ ## 'preserveAspectRatio' attribute specification
+ ##
+ PreserveAspectRatioSpec.datatype =
+ xsd:string {
+ pattern =
+ "\s*(none|xMinYMin|xMidYMin|xMaxYMin|xMinYMid|xMidYMid|xMaxYMid|xMinYMax|xMidYMax|xMaxYMax)\s+(meet|slice)?\s*"
+ }
+
+ ##
+ ## script expression
+ ##
+ Script.datatype = xsd:string
+
+ ##
+ ## An SVG color value (RGB plus optional ICC)
+ ##
+ SVGColor.datatype = xsd:string
+
+ ##
+ ## arbitrary text string
+ ##
+ Text.datatype = xsd:string
+
+ ##
+ ## list of transforms
+ ##
+ TransformList.datatype = xsd:string
+
+ ##
+ ## a Uniform Resource Identifier, see [URI]
+ ##
+ URI.datatype = xsd:anyURI
+
+ ##
+ ## 'viewBox' attribute specification
+ ##
+ ViewBoxSpec.datatype = xsd:string
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-docevents-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-docevents-attrib.rnc
new file mode 100644
index 00000000000..a03b011c8d3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-docevents-attrib.rnc
@@ -0,0 +1,38 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Document Events Attribute Module
+## file: svg-docevents-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-docevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Document Events Attribute
+##
+## onunload, onabort, onerror, onresize, onscroll, onzoom
+##
+## This module defines the DocumentEvents attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.onunload.attrib = attribute onunload { Script.datatype }?
+ SVG.onabort.attrib = attribute onabort { Script.datatype }?
+ SVG.onerror.attrib = attribute onerror { Script.datatype }?
+ SVG.onresize.attrib = attribute onresize { Script.datatype }?
+ SVG.onscroll.attrib = attribute onscroll { Script.datatype }?
+ SVG.onzoom.attrib = attribute onzoom { Script.datatype }?
+ SVG.DocumentEvents.extra.attrib = empty
+ SVG.DocumentEvents.attrib &=
+ SVG.onunload.attrib,
+ SVG.onabort.attrib,
+ SVG.onerror.attrib,
+ SVG.onresize.attrib,
+ SVG.onscroll.attrib,
+ SVG.onzoom.attrib,
+ SVG.DocumentEvents.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extensibility.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extensibility.rnc
new file mode 100644
index 00000000000..23ef64bf988
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extensibility.rnc
@@ -0,0 +1,62 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+default namespace ns1 = "http://www.w3.org/2000/svg"
+
+a:documentation [
+ "\x{a}" ~
+ " SVG 1.1 Extensibility Module\x{a}" ~
+ " file: svg-extensibility.rng\x{a}" ~
+ "\x{a}" ~
+ " This is SVG, a language for describing two-dimensional graphics in XML.\x{a}" ~
+ " Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.\x{a}" ~
+ "\x{a}" ~
+ " $Id: svg-extensibility.rng,v 1.1 2003/07/15 07:11:10 dean Exp $\x{a}" ~
+ "\x{a}"
+]
+a:documentation [
+ "\x{a}" ~
+ " Extensibility\x{a}" ~
+ "\x{a}" ~
+ " foreignObject\x{a}" ~
+ "\x{a}" ~
+ " This module declares markup to provide support for extensibility.\x{a}" ~
+ " "
+]
+a:documentation [ "\x{a}" ~ " SVG.Extensibility.class\x{a}" ~ " " ]
+SVG.Extensibility.extra.class = notAllowed
+SVG.Extensibility.class |= foreignObject | SVG.Extensibility.extra.class
+a:documentation [
+ "\x{a}" ~
+ " foreignObject: Foreign Object Element\x{a}" ~
+ " "
+]
+SVG.foreignObject.content =
+ (text
+ | svg
+ # ref name="foreignElement"/
+ )*
+foreignObject =
+ element foreignObject {
+ attlist.foreignObject, SVG.foreignObject.content
+ }
+attlist.foreignObject &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype },
+ attribute height { Length.datatype },
+ attribute transform { TransformList.datatype }?
+
+##
+## any element in foreign namespace
+##
+foreignElement =
+ element * - ns1:* {
+ (attribute * - ns1:* { text }
+ | text
+ | foreignElement)*
+ }
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extresources-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extresources-attrib.rnc
new file mode 100644
index 00000000000..6c1274e082a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-extresources-attrib.rnc
@@ -0,0 +1,28 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 External Resources Attribute Module
+## file: svg-extresources-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-extresources-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## External Resources Attribute
+##
+## externalResourcesRequired
+##
+## This module defines the External attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.externalResourcesRequired.attrib =
+ attribute externalResourcesRequired { Boolean.datatype }?
+ SVG.External.extra.attrib = empty
+ SVG.External.attrib &=
+ SVG.externalResourcesRequired.attrib, SVG.External.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-filter.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-filter.rnc
new file mode 100644
index 00000000000..9d4cc259ef4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-filter.rnc
@@ -0,0 +1,214 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Filter Module
+## file: svg-filter.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Filter
+##
+## filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+## feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feFlood,
+## feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset,
+## feSpecularLighting, feTile, feTurbulence, feDistantLight, fePointLight,
+## feSpotLight, feFuncR, feFuncG, feFuncB, feFuncA
+##
+## This module declares markup to provide support for filter effect.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-filter.rnc"
+
+ ##
+ ## extend SVG.FilterPrimitive.class
+ ##
+ SVG.FilterPrimitive.class |=
+ feConvolveMatrix
+ | feDiffuseLighting
+ | feDisplacementMap
+ | feMorphology
+ | feSpecularLighting
+ | feTurbulence
+ a:documentation [
+ "\x{a}" ~
+ " feConvolveMatrix: Filter Effect Convolve Matrix Element\x{a}" ~
+ " "
+ ]
+ SVG.feConvolveMatrix.content = (animate | set)*
+ feConvolveMatrix =
+ element feConvolveMatrix {
+ attlist.feConvolveMatrix, SVG.feConvolveMatrix.content
+ }
+ attlist.feConvolveMatrix &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute order { NumberOptionalNumber.datatype },
+ attribute kernelMatrix { text },
+ attribute divisor { Number.datatype }?,
+ attribute bias { Number.datatype }?,
+ attribute targetX { Integer.datatype }?,
+ attribute targetY { Integer.datatype }?,
+ [ a:defaultValue = "duplicate" ]
+ attribute edgeMode { "duplicate" | "wrap" | "none" }?,
+ attribute kernelUnitLength { NumberOptionalNumber.datatype }?,
+ attribute preserveAlpha { Boolean.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feDiffuseLighting: Filter Effect Diffuse Lighting Element\x{a}" ~
+ " "
+ ]
+ SVG.feDiffuseLighting.content =
+ (feDistantLight | fePointLight | feSpotLight),
+ (animate | set | animateColor)*
+ feDiffuseLighting =
+ element feDiffuseLighting {
+ attlist.feDiffuseLighting, SVG.feDiffuseLighting.content
+ }
+ attlist.feDiffuseLighting &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute lighting-color { SVGColor.datatype }?,
+ attribute surfaceScale { Number.datatype }?,
+ attribute diffuseConstant { Number.datatype }?,
+ attribute kernelUnitLength { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feDisplacementMap: Filter Effect Displacement Map Element\x{a}" ~
+ " "
+ ]
+ SVG.feDisplacementMap.content = (animate | set)*
+ feDisplacementMap =
+ element feDisplacementMap {
+ attlist.feDisplacementMap, SVG.feDisplacementMap.content
+ }
+ attlist.feDisplacementMap &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute in2 { text },
+ attribute scale { Number.datatype }?,
+ [ a:defaultValue = "A" ]
+ attribute xChannelSelector { "R" | "G" | "B" | "A" }?,
+ [ a:defaultValue = "A" ]
+ attribute yChannelSelector { "R" | "G" | "B" | "A" }?
+ a:documentation [
+ "\x{a}" ~
+ " feMorphology: Filter Effect Morphology Element\x{a}" ~
+ " "
+ ]
+ SVG.feMorphology.content = (animate | set)*
+ feMorphology =
+ element feMorphology {
+ attlist.feMorphology, SVG.feMorphology.content
+ }
+ attlist.feMorphology &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ [ a:defaultValue = "erode" ]
+ attribute operator { "erode" | "dilate" }?,
+ attribute radius { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feSpecularLighting: Filter Effect Specular Lighting Element\x{a}" ~
+ " "
+ ]
+ SVG.feSpecularLighting.content =
+ (feDistantLight | fePointLight | feSpotLight),
+ (animate | set | animateColor)*
+ feSpecularLighting =
+ element feSpecularLighting {
+ attlist.feSpecularLighting, SVG.feSpecularLighting.content
+ }
+ attlist.feSpecularLighting &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitiveWithIn.attrib,
+ attribute lighting-color { SVGColor.datatype }?,
+ attribute surfaceScale { Number.datatype }?,
+ attribute specularConstant { Number.datatype }?,
+ attribute specularExponent { Number.datatype }?,
+ attribute kernelUnitLength { NumberOptionalNumber.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feTurbulence: Filter Effect Turbulence Element\x{a}" ~
+ " "
+ ]
+ SVG.feTurbulence.content = (animate | set)*
+ feTurbulence =
+ element feTurbulence {
+ attlist.feTurbulence, SVG.feTurbulence.content
+ }
+ attlist.feTurbulence &=
+ SVG.Core.attrib,
+ SVG.FilterColor.attrib,
+ SVG.FilterPrimitive.attrib,
+ attribute baseFrequency { NumberOptionalNumber.datatype }?,
+ attribute numOctaves { Integer.datatype }?,
+ attribute seed { Number.datatype }?,
+ [ a:defaultValue = "noStitch" ]
+ attribute stitchTiles { "stitch" | "noStitch" }?,
+ [ a:defaultValue = "turbulence" ]
+ attribute type { "fractalNoise" | "turbulence" }?
+ a:documentation [
+ "\x{a}" ~
+ " feDistantLight: Filter Effect Distant Light Element\x{a}" ~
+ " "
+ ]
+ SVG.feDistantLight.content = (animate | set)*
+ feDistantLight =
+ element feDistantLight {
+ attlist.feDistantLight, SVG.feDistantLight.content
+ }
+ attlist.feDistantLight &=
+ SVG.Core.attrib,
+ attribute azimuth { Number.datatype }?,
+ attribute elevation { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " fePointLight: Filter Effect Point Light Element\x{a}" ~
+ " "
+ ]
+ SVG.fePointLight.content = (animate | set)*
+ fePointLight =
+ element fePointLight {
+ attlist.fePointLight, SVG.fePointLight.content
+ }
+ attlist.fePointLight &=
+ SVG.Core.attrib,
+ attribute x { Number.datatype }?,
+ attribute y { Number.datatype }?,
+ attribute z { Number.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " feSpotLight: Filter Effect Spot Light Element\x{a}" ~
+ " "
+ ]
+ SVG.feSpotLight.content = (animate | set)*
+ feSpotLight =
+ element feSpotLight { attlist.feSpotLight, SVG.feSpotLight.content }
+ attlist.feSpotLight &=
+ SVG.Core.attrib,
+ attribute x { Number.datatype }?,
+ attribute y { Number.datatype }?,
+ attribute z { Number.datatype }?,
+ attribute pointsAtX { Number.datatype }?,
+ attribute pointsAtY { Number.datatype }?,
+ attribute pointsAtZ { Number.datatype }?,
+ attribute specularExponent { Number.datatype }?,
+ attribute limitingConeAngle { Number.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-font.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-font.rnc
new file mode 100644
index 00000000000..f14e10c2342
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-font.rnc
@@ -0,0 +1,108 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Font Module
+## file: svg-font.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Font
+##
+## font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+## font-face-uri, font-face-format, font-face-name, definition-src
+##
+## This module declares markup to provide support for template.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-font.rnc"
+ a:documentation [
+ "\x{a}" ~
+ " font-face: Font Face Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face.extra.class &= definition-src?
+ a:documentation [ "\x{a}" ~ " glyph: Glyph Element\x{a}" ~ " " ]
+ SVG.glyph.class |=
+ SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class
+ a:documentation [
+ "\x{a}" ~
+ " missing-glyph: Missing Glyph Element\x{a}" ~
+ " "
+ ]
+ SVG.missing-glyph.class |=
+ SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class
+ a:documentation [
+ "\x{a}" ~
+ " font-face-uri: Font Face URI Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-uri.content |= font-face-format*
+ a:documentation [
+ "\x{a}" ~
+ " font-face-format: Font Face Format Element\x{a}" ~
+ " "
+ ]
+ SVG.font-face-format.content = empty
+ font-face-format =
+ element font-face-format {
+ attlist.font-face-format, SVG.font-face-format.content
+ }
+ attlist.font-face-format &=
+ SVG.Core.attrib,
+ attribute string { text }?
+ a:documentation [
+ "\x{a}" ~
+ " definition-src: Definition Source Element\x{a}" ~
+ " "
+ ]
+ SVG.definition-src.content = empty
+ definition-src =
+ element definition-src {
+ attlist.definition-src, SVG.definition-src.content
+ }
+ attlist.definition-src &= SVG.Core.attrib, SVG.XLinkRequired.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-gradient.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-gradient.rnc
new file mode 100644
index 00000000000..e8c6e60525f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-gradient.rnc
@@ -0,0 +1,99 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Gradient Module
+## file: svg-gradient.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-gradient.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Gradient
+##
+## linearGradient, radialGradient, stop
+##
+## This module declares markup to provide support for gradient fill.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ NumberOrPercentage.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Gradient.attrib\x{a}" ~ " " ]
+ SVG.Gradient.extra.attrib = empty
+ SVG.Gradient.attrib &=
+ attribute stop-color { SVGColor.datatype }?,
+ attribute stop-opacity { OpacityValue.datatype }?,
+ SVG.Gradient.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Gradient.class\x{a}" ~ " " ]
+ SVG.Gradient.extra.class = notAllowed
+ SVG.Gradient.class |=
+ linearGradient | radialGradient | SVG.Gradient.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " linearGradient: Linear Gradient Element\x{a}" ~
+ " "
+ ]
+ SVG.linearGradient.content =
+ SVG.Description.class*, (stop | animate | set | animateTransform)*
+ linearGradient =
+ element linearGradient {
+ attlist.linearGradient, SVG.linearGradient.content
+ }
+ attlist.linearGradient &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.Gradient.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute x1 { Coordinate.datatype }?,
+ attribute y1 { Coordinate.datatype }?,
+ attribute x2 { Coordinate.datatype }?,
+ attribute y2 { Coordinate.datatype }?,
+ attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute gradientTransform { TransformList.datatype }?,
+ attribute spreadMethod { "pad" | "reflect" | "repeat" }?
+ a:documentation [
+ "\x{a}" ~
+ " radialGradient: Radial Gradient Element\x{a}" ~
+ " "
+ ]
+ SVG.radialGradient.content =
+ SVG.Description.class*, (stop | animate | set | animateTransform)*
+ radialGradient =
+ element radialGradient {
+ attlist.radialGradient, SVG.radialGradient.content
+ }
+ attlist.radialGradient &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.Gradient.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute cx { Coordinate.datatype }?,
+ attribute cy { Coordinate.datatype }?,
+ attribute r { Length.datatype }?,
+ attribute fx { Coordinate.datatype }?,
+ attribute fy { Coordinate.datatype }?,
+ attribute gradientUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute gradientTransform { TransformList.datatype }?,
+ attribute spreadMethod { "pad" | "reflect" | "repeat" }?
+ a:documentation [ "\x{a}" ~ " stop: Stop Element\x{a}" ~ " " ]
+ SVG.stop.content = (animate | set | animateColor)*
+ stop = element stop { attlist.stop, SVG.stop.content }
+ attlist.stop &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Color.attrib,
+ SVG.Gradient.attrib,
+ attribute offset { NumberOrPercentage.datatype }
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphevents-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphevents-attrib.rnc
new file mode 100644
index 00000000000..e5828f3dab8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphevents-attrib.rnc
@@ -0,0 +1,47 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Graphical Element Events Attribute Module
+## file: svg-graphevents-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-graphevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Graphical Element Events Attribute
+##
+## onfocusin, onfocusout, onactivate, onclick, onmousedown, onmouseup,
+## onmouseover, onmousemove, onmouseout, onload
+##
+## This module defines the GraphicalEvents attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.onfocusin.attrib = attribute onfocusin { Script.datatype }?
+ SVG.onfocusout.attrib = attribute onfocusout { Script.datatype }?
+ SVG.onactivate.attrib = attribute onactivate { Script.datatype }?
+ SVG.onclick.attrib = attribute onclick { Script.datatype }?
+ SVG.onmousedown.attrib = attribute onmousedown { Script.datatype }?
+ SVG.onmouseup.attrib = attribute onmouseup { Script.datatype }?
+ SVG.onmouseover.attrib = attribute onmouseover { Script.datatype }?
+ SVG.onmousemove.attrib = attribute onmousemove { Script.datatype }?
+ SVG.onmouseout.attrib = attribute onmouseout { Script.datatype }?
+ SVG.onload.attrib &= attribute onload { Script.datatype }?
+ SVG.GraphicalEvents.extra.attrib = empty
+ SVG.GraphicalEvents.attrib &=
+ SVG.onfocusin.attrib,
+ SVG.onfocusout.attrib,
+ SVG.onactivate.attrib,
+ SVG.onclick.attrib,
+ SVG.onmousedown.attrib,
+ SVG.onmouseup.attrib,
+ SVG.onmouseover.attrib,
+ SVG.onmousemove.attrib,
+ SVG.onmouseout.attrib,
+ SVG.onload.attrib,
+ SVG.GraphicalEvents.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphics-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphics-attrib.rnc
new file mode 100644
index 00000000000..bbf132ab971
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-graphics-attrib.rnc
@@ -0,0 +1,64 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+
+
+##
+## SVG 1.1 Graphics Attribute Module
+## file: svg-graphics-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Graphics Attribute
+##
+## display, image-rendering, pointer-events, shape-rendering,
+## text-rendering, visibility
+##
+## This module defines the Graphics attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-graphics-attrib.rnc" inherit = ns1
+ SVG.image-rendering.attrib =
+ attribute image-rendering {
+ "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
+ }?
+ SVG.pointer-events.attrib =
+ attribute pointer-events {
+ "visiblePainted"
+ | "visibleFill"
+ | "visibleStroke"
+ | "visible"
+ | "painted"
+ | "fill"
+ | "stroke"
+ | "all"
+ | "none"
+ | "inherit"
+ }?
+ SVG.shape-rendering.attrib =
+ attribute shape-rendering {
+ "auto"
+ | "optimizeSpeed"
+ | "crispEdges"
+ | "geometricPrecision"
+ | "inherit"
+ }?
+ SVG.text-rendering.attrib =
+ attribute text-rendering {
+ "auto"
+ | "optimizeSpeed"
+ | "optimizeLegibility"
+ | "geometricPrecision"
+ | "inherit"
+ }?
+ SVG.Graphics.attrib &=
+ SVG.image-rendering.attrib,
+ SVG.pointer-events.attrib,
+ SVG.shape-rendering.attrib,
+ SVG.text-rendering.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-hyperlink.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-hyperlink.rnc
new file mode 100644
index 00000000000..705e3e3334d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-hyperlink.rnc
@@ -0,0 +1,66 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Hyperlinking Module
+## file: svg-hyperlink.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-hyperlink.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Hyperlinking
+##
+## a
+##
+## This module declares markup to provide support for hyper linking.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## link to this target
+ ##
+ LinkTarget.datatype = xsd:NMTOKEN
+ a:documentation [ "\x{a}" ~ " SVG.Hyperlink.class\x{a}" ~ " " ]
+ SVG.Hyperlink.extra.class = notAllowed
+ SVG.Hyperlink.class |= a | SVG.Hyperlink.extra.class
+ a:documentation [ "\x{a}" ~ " a: Anchor Element\x{a}" ~ " " ]
+ SVG.a.content =
+ (text
+ | SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ a = element a { attlist.a, SVG.a.content }
+ attlist.a &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.XLinkReplace.attrib,
+ SVG.External.attrib,
+ attribute transform { TransformList.datatype }?,
+ attribute target { LinkTarget.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-image.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-image.rnc
new file mode 100644
index 00000000000..0dffc8e1b92
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-image.rnc
@@ -0,0 +1,56 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Image Module
+## file: svg-image.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-image.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Image
+##
+## image
+##
+## This module declares markup to provide support for image.
+##
+
+##
+## SVG.Image.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Image.extra.class = notAllowed
+ SVG.Image.class |= image | SVG.Image.extra.class
+ a:documentation [ "\x{a}" ~ " image: Image Element\x{a}" ~ " " ]
+ SVG.image.content = SVG.Description.class*, SVG.Animation.class*
+ image = element image { attlist.image, SVG.image.content }
+ attlist.image &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Viewport.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Profile.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLinkEmbed.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype },
+ attribute height { Length.datatype },
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?,
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-marker.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-marker.rnc
new file mode 100644
index 00000000000..bfb7c316bd5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-marker.rnc
@@ -0,0 +1,76 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Marker Module
+## file: svg-marker.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-marker.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Marker
+##
+## marker
+##
+## This module declares markup to provide support for marker.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ MarkerValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Marker.attrib\x{a}" ~ " " ]
+ SVG.Marker.extra.attrib = empty
+ SVG.Marker.attrib &=
+ attribute marker-start { MarkerValue.datatype }?,
+ attribute marker-mid { MarkerValue.datatype }?,
+ attribute marker-end { MarkerValue.datatype }?,
+ SVG.Marker.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Marker.class\x{a}" ~ " " ]
+ SVG.Marker.extra.class = notAllowed
+ SVG.Marker.class |= marker | SVG.Marker.extra.class
+ a:documentation [ "\x{a}" ~ " marker: Marker Element\x{a}" ~ " " ]
+ SVG.marker.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ marker = element marker { attlist.marker, SVG.marker.content }
+ attlist.marker &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.External.attrib,
+ attribute refX { Coordinate.datatype }?,
+ attribute refY { Coordinate.datatype }?,
+ attribute markerUnits { "strokeWidth" | "userSpaceOnUse" }?,
+ attribute markerWidth { Length.datatype }?,
+ attribute markerHeight { Length.datatype }?,
+ attribute orient { text }?,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-mask.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-mask.rnc
new file mode 100644
index 00000000000..c5b8722bf8f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-mask.rnc
@@ -0,0 +1,74 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Mask Module
+## file: svg-mask.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-mask.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Mask
+##
+## mask
+##
+## This module declares markup to provide support for masking.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ MaskValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Mask.attrib\x{a}" ~ " " ]
+ SVG.Mask.extra.attrib = empty
+ SVG.Mask.attrib &=
+ attribute mask { MaskValue.datatype }?,
+ SVG.Mask.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Mask.class\x{a}" ~ " " ]
+ SVG.Mask.extra.class = notAllowed
+ SVG.Mask.class |= mask | SVG.Mask.extra.class
+ a:documentation [ "\x{a}" ~ " mask: Mask Element\x{a}" ~ " " ]
+ SVG.mask.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ mask = element mask { attlist.mask, SVG.mask.content }
+ attlist.mask &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute maskUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute maskContentUnits {
+ "userSpaceOnUse" | "objectBoundingBox"
+ }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-opacity-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-opacity-attrib.rnc
new file mode 100644
index 00000000000..c794117b5fa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-opacity-attrib.rnc
@@ -0,0 +1,34 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Paint Opacity Attribute Module
+## file: svg-opacity-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-opacity-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Paint Opacity Attribute
+##
+## opacity, fill-opacity, stroke-opacity
+##
+## This module defines the Opacity attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.opacity.attrib = attribute opacity { OpacityValue.datatype }?
+ SVG.fill-opacity.attrib =
+ attribute fill-opacity { OpacityValue.datatype }?
+ SVG.stroke-opacity.attrib =
+ attribute stroke-opacity { OpacityValue.datatype }?
+ SVG.Opacity.extra.attrib = empty
+ SVG.Opacity.attrib &=
+ SVG.opacity.attrib,
+ SVG.fill-opacity.attrib,
+ SVG.stroke-opacity.attrib,
+ SVG.Opacity.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-paint-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-paint-attrib.rnc
new file mode 100644
index 00000000000..bcb9ccce9e4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-paint-attrib.rnc
@@ -0,0 +1,97 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Paint Attribute Module
+## file: svg-paint-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-paint-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Paint Attribute
+##
+## fill, fill-rule, stroke, stroke-dasharray, stroke-dashoffset,
+## stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-width, color,
+## color-interpolation, color-rendering
+##
+## This module defines the Paint and Color attribute sets.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## a 'fill' or 'stroke' property/attribute value: <paint>
+ ##
+ Paint.datatype = xsd:string
+
+ ##
+ ## 'stroke-dasharray' property/attribute value
+ ## (e.g., 'none', list of <number>s)
+ ##
+ StrokeDashArrayValue.datatype = xsd:string
+
+ ##
+ ## 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>)
+ ##
+ StrokeDashOffsetValue.datatype = xsd:string
+
+ ##
+ ## 'stroke-miterlimit' property/attribute value (e.g., <number>)
+ ##
+ StrokeMiterLimitValue.datatype = xsd:string
+
+ ##
+ ## 'stroke-width' property/attribute value (e.g., <length>)
+ ##
+ StrokeWidthValue.datatype = xsd:string
+ SVG.fill.attrib = attribute fill { Paint.datatype }?
+ SVG.fill-rule.attrib = attribute fill-rule { ClipFillRule.datatype }?
+ SVG.stroke.attrib = attribute stroke { Paint.datatype }?
+ SVG.stroke-dasharray.attrib =
+ attribute stroke-dasharray { StrokeDashArrayValue.datatype }?
+ SVG.stroke-dashoffset.attrib =
+ attribute stroke-dashoffset { StrokeDashOffsetValue.datatype }?
+ SVG.stroke-linecap.attrib =
+ attribute stroke-linecap {
+ "butt" | "round" | "square" | "inherit"
+ }?
+ SVG.stroke-linejoin.attrib =
+ attribute stroke-linejoin {
+ "miter" | "round" | "bevel" | "inherit"
+ }?
+ SVG.stroke-miterlimit.attrib =
+ attribute stroke-miterlimit { StrokeMiterLimitValue.datatype }?
+ SVG.stroke-width.attrib =
+ attribute stroke-width { StrokeWidthValue.datatype }?
+ SVG.Paint.extra.attrib = empty
+ SVG.Paint.attrib &=
+ SVG.fill.attrib,
+ SVG.fill-rule.attrib,
+ SVG.stroke.attrib,
+ SVG.stroke-dasharray.attrib,
+ SVG.stroke-dashoffset.attrib,
+ SVG.stroke-linecap.attrib,
+ SVG.stroke-linejoin.attrib,
+ SVG.stroke-miterlimit.attrib,
+ SVG.stroke-width.attrib,
+ SVG.Paint.extra.attrib
+ SVG.color.attrib = attribute color { Color.datatype }?
+ SVG.color-interpolation.attrib =
+ attribute color-interpolation {
+ "auto" | "sRGB" | "linearRGB" | "inherit"
+ }?
+ SVG.color-rendering.attrib =
+ attribute color-rendering {
+ "auto" | "optimizeSpeed" | "optimizeQuality" | "inherit"
+ }?
+ SVG.Color.extra.attrib = empty
+ SVG.Color.attrib &=
+ SVG.color.attrib,
+ SVG.color-interpolation.attrib,
+ SVG.color-rendering.attrib,
+ SVG.Color.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-pattern.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-pattern.rnc
new file mode 100644
index 00000000000..0a538fe96a8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-pattern.rnc
@@ -0,0 +1,76 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Pattern Module
+## file: svg-pattern.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-pattern.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Pattern
+##
+## pattern
+##
+## This module declares markup to provide support for pattern fill.
+##
+
+##
+## SVG.Pattern.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Pattern.extra.class = notAllowed
+ SVG.Pattern.class |= pattern | SVG.Pattern.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " pattern: Pattern Element\x{a}" ~
+ " "
+ ]
+ SVG.pattern.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ pattern = element pattern { attlist.pattern, SVG.pattern.content }
+ attlist.pattern &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype }?,
+ attribute height { Length.datatype }?,
+ attribute patternUnits { "userSpaceOnUse" | "objectBoundingBox" }?,
+ attribute patternContentUnits {
+ "userSpaceOnUse" | "objectBoundingBox"
+ }?,
+ attribute patternTransform { TransformList.datatype }?,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-profile.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-profile.rnc
new file mode 100644
index 00000000000..ba154bdca8b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-profile.rnc
@@ -0,0 +1,58 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Color Profile Module
+## file: svg-profile.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-profile.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Color Profile
+##
+## color-profile
+##
+## This module declares markup to provide support for color profile.
+##
+
+##
+## SVG.Profile.attrib
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Profile.extra.attrib = empty
+ SVG.Profile.attrib &=
+ attribute color-profile { text }?,
+ SVG.Profile.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Profile.class\x{a}" ~ " " ]
+ SVG.Profile.extra.class = notAllowed
+ SVG.Profile.class |= color-profile | SVG.Profile.extra.class
+ a:documentation [
+ "\x{a}" ~
+ " color-profile: Color Profile Element\x{a}" ~
+ " "
+ ]
+ SVG.color-profile.content = SVG.Description.class*
+ color-profile =
+ element color-profile {
+ attlist.color-profile, SVG.color-profile.content
+ }
+ attlist.color-profile &=
+ SVG.Core.attrib,
+ SVG.XLink.attrib,
+ attribute local { text }?,
+ attribute name { text },
+ [ a:defaultValue = "auto" ]
+ attribute rendering-intent {
+ "auto"
+ | "perceptual"
+ | "relative-colorimetric"
+ | "saturation"
+ | "absolute-colorimetric"
+ }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-qname.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-qname.rnc
new file mode 100644
index 00000000000..884c76d157d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-qname.rnc
@@ -0,0 +1,116 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+# .......................................................................
+
+# SVG 1.1 Qualified Name Module .........................................
+
+# file: svg-qname.mod
+#
+# This is SVG, a language for describing two-dimensional graphics in XML.
+# Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+# Revision: $Id: svg-qname.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+#
+# This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+#
+# PUBLIC "-//W3C//ENTITIES SVG 1.1 Qualified Name//EN"
+# SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg-qname.mod"
+#
+# .......................................................................
+
+# Qualified Name
+#
+# This module is contained in two parts, labeled Section 'A' and 'B':
+#
+# Section A declares parameter entities to support namespace-
+# qualified names, namespace declarations, and name prefixing
+# for SVG and extensions.
+#
+# Section B declares parameter entities used to provide
+# namespace-qualified names for all SVG element types:
+
+# Section A: SVG XML Namespace Framework ::::::::::::::::::::::
+
+# 1. Declare a %SVG.prefixed; conditional section keyword, used
+# to activate namespace prefixing. The default value should
+# inherit '%NS.prefixed;' from the DTD driver, so that unless
+# overridden, the default behaviour follows the overall DTD
+# prefixing scheme.
+
+# 2. Declare a parameter entity (eg., %SVG.xmlns;) containing
+# the URI reference used to identify the SVG namespace:
+
+# 3. Declare parameter entities (eg., %SVG.prefix;) containing
+# the default namespace prefix string(s) to use when prefixing
+# is enabled. This may be overridden in the DTD driver or the
+# internal subset of an document instance. If no default prefix
+# is desired, this may be declared as an empty string.
+
+# 4. Declare parameter entities (eg., %SVG.pfx;) containing the
+# colonized prefix(es) (eg., '%SVG.prefix;:') used when
+# prefixing is active, an empty string when it is not.
+
+# 5. The parameter entity %SVG.xmlns.extra.attrib; may be
+# redeclared to contain any non-SVG namespace declaration
+# attributes for namespaces embedded in SVG. The default
+# is an empty string.
+
+# Declare a parameter entity XLINK.xmlns.attrib containing
+# the XML Namespace declarations for XLink.
+XLINK.xmlns.attrib = empty
+# Declare a parameter entity %NS.decl.attrib; containing
+# all XML Namespace declarations used in the DTD, plus the
+# xmlns declaration for SVG, its form dependent on whether
+# prefixing is active.
+
+# Declare a parameter entity %SVG.xmlns.attrib; containing
+# all XML namespace declaration attributes used by SVG,
+# including a default xmlns attribute when prefixing is
+# inactive.
+SVG.xmlns.attrib = empty, XLINK.xmlns.attrib
+# Section B: SVG Qualified Names ::::::::::::::::::::::::::::::
+
+# 6. This section declares parameter entities used to provide
+# namespace-qualified names for all SVG element types.
+
+# module: svg-structure.mod .........................
+
+# module: svg-conditional.mod .......................
+
+# module: svg-image.mod .............................
+
+# module: svg-style.mod .............................
+
+# module: svg-shape.mod .............................
+
+# module: svg-text.mod ..............................
+
+# module: svg-marker.mod ............................
+
+# module: svg-profile.mod ...........................
+
+# module: svg-gradient.mod ..........................
+
+# module: svg-pattern.mod ...........................
+
+# module: svg-clip.mod ..............................
+
+# module: svg-mask.mod ..............................
+
+# module: svg-filter.mod ............................
+
+# module: svg-cursor.mod ............................
+
+# module: svg-hyperlink.mod .........................
+
+# module: svg-view.mod ..............................
+
+# module: svg-script.mod ............................
+
+# module: svg-animation.mod .........................
+
+# module: svg-font.mod ..............................
+
+# module: svg-extensibility.mod .....................
+
+# end of svg-qname.mod
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-script.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-script.rnc
new file mode 100644
index 00000000000..a990e5497fc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-script.rnc
@@ -0,0 +1,38 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Scripting Module
+## file: svg-script.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-script.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Scripting
+##
+## script
+##
+## This module declares markup to provide support for scripting.
+##
+
+##
+## SVG.Script.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.Script.extra.class = notAllowed
+ SVG.Script.class |= script | SVG.Script.extra.class
+ a:documentation [ "\x{a}" ~ " script: Script Element\x{a}" ~ " " ]
+ SVG.script.content = text
+ script = element script { attlist.script, SVG.script.content }
+ attlist.script &=
+ SVG.Core.attrib,
+ SVG.XLink.attrib,
+ SVG.External.attrib,
+ attribute type { ContentType.datatype }
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-shape.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-shape.rnc
new file mode 100644
index 00000000000..cc80462b97d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-shape.rnc
@@ -0,0 +1,207 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Shape Module
+## file: svg-shape.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-shape.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Shape
+##
+## path, rect, circle, line, ellipse, polyline, polygon
+##
+## This module declares markup to provide support for graphical shapes.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## a list of points
+ ##
+ Points.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Shape.class\x{a}" ~ " " ]
+ SVG.Shape.extra.class = notAllowed
+ SVG.Shape.class |=
+ path
+ | rect
+ | circle
+ | line
+ | ellipse
+ | polyline
+ | polygon
+ | SVG.Shape.extra.class
+ a:documentation [ "\x{a}" ~ " path: Path Element\x{a}" ~ " " ]
+ SVG.path.content = SVG.Description.class*, SVG.Animation.class*
+ path = element path { attlist.path, SVG.path.content }
+ attlist.path &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute d { PathData.datatype },
+ attribute pathLength { Number.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " rect: Rectangle Element\x{a}" ~
+ " "
+ ]
+ SVG.rect.content = SVG.Description.class*, SVG.Animation.class*
+ rect = element rect { attlist.rect, SVG.rect.content }
+ attlist.rect &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinate.datatype }?,
+ attribute y { Coordinate.datatype }?,
+ attribute width { Length.datatype },
+ attribute height { Length.datatype },
+ attribute rx { Length.datatype }?,
+ attribute ry { Length.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [ "\x{a}" ~ " circle: Circle Element\x{a}" ~ " " ]
+ SVG.circle.content = SVG.Description.class*, SVG.Animation.class*
+ circle = element circle { attlist.circle, SVG.circle.content }
+ attlist.circle &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute cx { Coordinate.datatype }?,
+ attribute cy { Coordinate.datatype }?,
+ attribute r { Length.datatype },
+ attribute transform { TransformList.datatype }?
+ a:documentation [ "\x{a}" ~ " line: Line Element\x{a}" ~ " " ]
+ SVG.line.content = SVG.Description.class*, SVG.Animation.class*
+ line = element line { attlist.line, SVG.line.content }
+ attlist.line &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x1 { Coordinate.datatype }?,
+ attribute y1 { Coordinate.datatype }?,
+ attribute x2 { Coordinate.datatype }?,
+ attribute y2 { Coordinate.datatype }?,
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " ellipse: Ellipse Element\x{a}" ~
+ " "
+ ]
+ SVG.ellipse.content = SVG.Description.class*, SVG.Animation.class*
+ ellipse = element ellipse { attlist.ellipse, SVG.ellipse.content }
+ attlist.ellipse &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute cx { Coordinate.datatype }?,
+ attribute cy { Coordinate.datatype }?,
+ attribute rx { Length.datatype },
+ attribute ry { Length.datatype },
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " polyline: Polyline Element\x{a}" ~
+ " "
+ ]
+ SVG.polyline.content = SVG.Description.class*, SVG.Animation.class*
+ polyline = element polyline { attlist.polyline, SVG.polyline.content }
+ attlist.polyline &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute points { Points.datatype },
+ attribute transform { TransformList.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " polygon: Polygon Element\x{a}" ~
+ " "
+ ]
+ SVG.polygon.content = SVG.Description.class*, SVG.Animation.class*
+ polygon = element polygon { attlist.polygon, SVG.polygon.content }
+ attlist.polygon &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Marker.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute points { Points.datatype },
+ attribute transform { TransformList.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-structure.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-structure.rnc
new file mode 100644
index 00000000000..370c4259c05
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-structure.rnc
@@ -0,0 +1,62 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Structure Module
+## file: svg-structure.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Structure
+##
+## svg, g, defs, desc, title, metadata, symbol, use
+##
+## This module declares the major structural elements and their attributes.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-structure.rnc"
+
+ ##
+ ## extend SVG.Structure.class
+ ##
+ SVG.Structure.class |= symbol
+ a:documentation [ "\x{a}" ~ " symbol: Symbol Element\x{a}" ~ " " ]
+ SVG.symbol.content =
+ (SVG.Description.class
+ | SVG.Animation.class
+ | SVG.Structure.class
+ | SVG.Conditional.class
+ | SVG.Image.class
+ | SVG.Style.class
+ | SVG.Shape.class
+ | SVG.Text.class
+ | SVG.Marker.class
+ | SVG.Profile.class
+ | SVG.Gradient.class
+ | SVG.Pattern.class
+ | SVG.Clip.class
+ | SVG.Mask.class
+ | SVG.Filter.class
+ | SVG.Cursor.class
+ | SVG.Hyperlink.class
+ | SVG.View.class
+ | SVG.Script.class
+ | SVG.Font.class)*
+ symbol = element symbol { attlist.symbol, SVG.symbol.content }
+ attlist.symbol &=
+ SVG.Core.attrib,
+ SVG.Style.attrib,
+ SVG.Presentation.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.External.attrib,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-style.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-style.rnc
new file mode 100644
index 00000000000..68c7f48c1a3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-style.rnc
@@ -0,0 +1,56 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Style Module
+## file: svg-style.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-style.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Style
+##
+## style
+##
+## This module declares markup to provide support for stylesheet.
+##
+
+##
+## Datatypes
+##
+[ xml:lang = "en" ]
+grammar {
+ ClassList.datatype = xsd:NMTOKENS
+ StyleSheet.datatype = xsd:string
+
+ ##
+ ## comma-separated list of media descriptors.
+ ##
+ MediaDesc.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Style.attrib\x{a}" ~ " " ]
+ SVG.Style.extra.attrib = empty
+ SVG.Style.attrib &=
+ attribute style { StyleSheet.datatype }?,
+ attribute class { ClassList.datatype }?,
+ SVG.Style.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.Style.class\x{a}" ~ " " ]
+ SVG.Style.extra.class = notAllowed
+ SVG.Style.class |= style | SVG.Style.extra.class
+ a:documentation [ "\x{a}" ~ " style: Style Element\x{a}" ~ " " ]
+ SVG.style.content = text
+ style = element style { attlist.style, SVG.style.content }
+ attlist.style &=
+ [ a:defaultValue = "preserve" ] attribute xml:space { "preserve" }?,
+ SVG.id.attrib,
+ SVG.base.attrib,
+ SVG.lang.attrib,
+ SVG.Core.extra.attrib,
+ attribute type { ContentType.datatype },
+ attribute media { MediaDesc.datatype }?,
+ attribute title { Text.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-text.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-text.rnc
new file mode 100644
index 00000000000..b9d52e14420
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-text.rnc
@@ -0,0 +1,275 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Text Module
+## file: svg-text.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Text
+##
+## text, tspan, tref, textPath, altGlyph, altGlyphDef, altGlyphItem,
+## glyphRef
+##
+## This module declares markup to provide support for alternate glyph.
+##
+[ xml:lang = "en" ]
+grammar {
+ include "svg-basic-text.rnc"
+ a:documentation [ "\x{a}" ~ " Datatypes\x{a}" ~ " " ]
+ BaselineShiftValue.datatype = xsd:string
+ FontSizeAdjustValue.datatype = xsd:string
+ GlyphOrientationHorizontalValue.datatype = xsd:string
+ GlyphOrientationVerticalValue.datatype = xsd:string
+ KerningValue.datatype = xsd:string
+ SpacingValue.datatype = xsd:string
+ TextDecorationValue.datatype = xsd:string
+ a:documentation [ "\x{a}" ~ " SVG.Text.attrib\x{a}" ~ " " ]
+ SVG.Text.extra.attrib = empty
+ SVG.Text.attrib &=
+ attribute writing-mode {
+ "lr-tb" | "rl-tb" | "tb-rl" | "lr" | "rl" | "tb" | "inherit"
+ }?,
+ SVG.Text.extra.attrib
+ a:documentation [ "\x{a}" ~ " SVG.TextContent.attrib\x{a}" ~ " " ]
+ SVG.TextContent.extra.attrib = empty
+ SVG.TextContent.attrib &=
+ attribute alignment-baseline {
+ "auto"
+ | "baseline"
+ | "before-edge"
+ | "text-before-edge"
+ | "middle"
+ | "central"
+ | "after-edge"
+ | "text-after-edge"
+ | "ideographic"
+ | "alphabetic"
+ | "hanging"
+ | "mathematical"
+ | "inherit"
+ }?,
+ attribute baseline-shift { BaselineShiftValue.datatype }?,
+ attribute direction { "ltr" | "rtl" | "inherit" }?,
+ attribute dominant-baseline {
+ "auto"
+ | "use-script"
+ | "no-change"
+ | "reset-size"
+ | "ideographic"
+ | "alphabetic"
+ | "hanging"
+ | "mathematical"
+ | "central"
+ | "middle"
+ | "text-after-edge"
+ | "text-before-edge"
+ | "inherit"
+ }?,
+ attribute glyph-orientation-horizontal {
+ GlyphOrientationHorizontalValue.datatype
+ }?,
+ attribute glyph-orientation-vertical {
+ GlyphOrientationVerticalValue.datatype
+ }?,
+ attribute kerning { KerningValue.datatype }?,
+ attribute letter-spacing { SpacingValue.datatype }?,
+ attribute text-anchor { "start" | "middle" | "end" | "inherit" }?,
+ attribute text-decoration { TextDecorationValue.datatype }?,
+ attribute unicode-bidi {
+ "normal" | "embed" | "bidi-override" | "inherit"
+ }?,
+ attribute word-spacing { SpacingValue.datatype }?,
+ SVG.TextContent.extra.attrib
+ SVG.Font.attrib &=
+ attribute font-size-adjust { FontSizeAdjustValue.datatype }?,
+ attribute font-stretch {
+ "normal"
+ | "wider"
+ | "narrower"
+ | "ultra-condensed"
+ | "extra-condensed"
+ | "condensed"
+ | "semi-condensed"
+ | "semi-expanded"
+ | "expanded"
+ | "extra-expanded"
+ | "ultra-expanded"
+ | "inherit"
+ }?,
+ attribute font-variant { "normal" | "small-caps" | "inherit" }?
+
+ ##
+ ## extend SVG.Text.class
+ ##
+ SVG.Text.class |= altGlyphDef
+
+ ##
+ ## extend SVG.TextContent.class
+ ##
+ SVG.TextContent.class |= tspan | tref | textPath
+ a:documentation [ "\x{a}" ~ " text: Text Element\x{a}" ~ " " ]
+ SVG.text.class |= SVG.TextContent.class
+ attlist.text &=
+ SVG.Text.attrib,
+ SVG.TextContent.attrib,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?
+ a:documentation [
+ "\x{a}" ~
+ " tspan: Text Span Element\x{a}" ~
+ " "
+ ]
+ SVG.tspan.content =
+ (text
+ | tspan
+ | tref
+ | altGlyph
+ | animate
+ | set
+ | animateColor
+ | SVG.Description.class
+ | SVG.Hyperlink.class)*
+ tspan = element tspan { attlist.tspan, SVG.tspan.content }
+ attlist.tspan &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute rotate { Numbers.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?
+ a:documentation [
+ "\x{a}" ~
+ " tref: Text Reference Element\x{a}" ~
+ " "
+ ]
+ SVG.tref.content =
+ (animate | set | animateColor | SVG.Description.class)*
+ tref = element tref { attlist.tref, SVG.tref.content }
+ attlist.tref &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLinkRequired.attrib,
+ SVG.External.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute rotate { Numbers.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?
+ a:documentation [
+ "\x{a}" ~
+ " textPath: Text Path Element\x{a}" ~
+ " "
+ ]
+ SVG.textPath.content =
+ (text
+ | tspan
+ | tref
+ | altGlyph
+ | animate
+ | set
+ | animateColor
+ | SVG.Description.class
+ | SVG.Hyperlink.class)*
+ textPath = element textPath { attlist.textPath, SVG.textPath.content }
+ attlist.textPath &=
+ SVG.Core.attrib,
+ SVG.Conditional.attrib,
+ SVG.Style.attrib,
+ SVG.TextContent.attrib,
+ SVG.Font.attrib,
+ SVG.Paint.attrib,
+ SVG.Color.attrib,
+ SVG.Opacity.attrib,
+ SVG.Graphics.attrib,
+ SVG.Clip.attrib,
+ SVG.Mask.attrib,
+ SVG.Filter.attrib,
+ SVG.GraphicalEvents.attrib,
+ SVG.Cursor.attrib,
+ SVG.XLinkRequired.attrib,
+ SVG.External.attrib,
+ attribute startOffset { Length.datatype }?,
+ attribute textLength { Length.datatype }?,
+ attribute lengthAdjust { "spacing" | "spacingAndGlyphs" }?,
+ attribute method { "align" | "stretch" }?,
+ attribute spacing { "auto" | "exact" }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyph: Alternate Glyph Element\x{a}" ~
+ " "
+ ]
+ attlist.altGlyph &=
+ SVG.TextContent.attrib,
+ attribute x { Coordinates.datatype }?,
+ attribute y { Coordinates.datatype }?,
+ attribute dx { Lengths.datatype }?,
+ attribute dy { Lengths.datatype }?,
+ attribute rotate { Numbers.datatype }?
+ a:documentation [
+ "\x{a}" ~
+ " altGlyphDef: Alternate Glyph Definition Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyphDef.content |= altGlyphItem+
+ a:documentation [
+ "\x{a}" ~
+ " altGlyphItem: Alternate Glyph Item Element\x{a}" ~
+ " "
+ ]
+ SVG.altGlyphItem.content = glyphRef+
+ altGlyphItem =
+ element altGlyphItem {
+ attlist.altGlyphItem, SVG.altGlyphItem.content
+ }
+ attlist.altGlyphItem &= SVG.Core.attrib
+ a:documentation [
+ "\x{a}" ~
+ " glyphRef: Glyph Reference Element\x{a}" ~
+ " "
+ ]
+ attlist.glyphRef &=
+ attribute x { Number.datatype }?,
+ attribute y { Number.datatype }?,
+ attribute dx { Number.datatype }?,
+ attribute dy { Number.datatype }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-view.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-view.rnc
new file mode 100644
index 00000000000..41501c31f92
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-view.rnc
@@ -0,0 +1,42 @@
+default namespace = "http://www.w3.org/2000/svg"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 View Module
+## file: svg-view.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-view.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## View
+##
+## view
+##
+## This module declares markup to provide support for view.
+##
+
+##
+## SVG.View.class
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.View.extra.class = notAllowed
+ SVG.View.class |= view | SVG.View.extra.class
+ a:documentation [ "\x{a}" ~ " view: View Element\x{a}" ~ " " ]
+ SVG.view.content = SVG.Description.class*
+ view = element view { attlist.view, SVG.view.content }
+ attlist.view &=
+ SVG.Core.attrib,
+ SVG.External.attrib,
+ attribute viewBox { ViewBoxSpec.datatype }?,
+ [ a:defaultValue = "xMidYMid meet" ]
+ attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }?,
+ [ a:defaultValue = "magnify" ]
+ attribute zoomAndPan { "disable" | "magnify" }?,
+ attribute viewTarget { text }?
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-viewport-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-viewport-attrib.rnc
new file mode 100644
index 00000000000..d7acd96d7c5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-viewport-attrib.rnc
@@ -0,0 +1,36 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+
+##
+## SVG 1.1 Viewport Attribute Module
+## file: svg-viewport-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-viewport-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## Viewport Attribute
+##
+## clip, overflow
+##
+## This module defines the Viewport attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## 'clip' property/attribute value (e.g., 'auto', rect(...))
+ ##
+ ClipValue.datatype = xsd:string
+ SVG.clip.attrib = attribute clip { ClipValue.datatype }?
+ SVG.overflow.attrib =
+ attribute overflow {
+ "visible" | "hidden" | "scroll" | "auto" | "inherit"
+ }?
+ SVG.Viewport.extra.attrib = empty
+ SVG.Viewport.attrib &=
+ SVG.clip.attrib, SVG.overflow.attrib, SVG.Viewport.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-xlink-attrib.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-xlink-attrib.rnc
new file mode 100644
index 00000000000..c31505e04d2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg-xlink-attrib.rnc
@@ -0,0 +1,67 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+
+##
+## SVG 1.1 XLink Attribute Module
+## file: svg-xlink-attrib.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+##
+## $Id: svg-xlink-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+
+##
+## XLink Attribute
+##
+## type, href, role, arcrole, title, show, actuate
+##
+## This module defines the XLink, XLinkRequired, XLinkEmbed, and
+## XLinkReplace attribute set.
+##
+[ xml:lang = "en" ]
+grammar {
+ SVG.XLink.extra.attrib = empty
+ SVG.XLink.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype }?,
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "other" ] attribute xlink:show { "other" }?,
+ [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?,
+ SVG.XLink.extra.attrib
+ SVG.XLinkRequired.extra.attrib = empty
+ SVG.XLinkRequired.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype },
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "other" ] attribute xlink:show { "other" }?,
+ [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?,
+ SVG.XLinkRequired.extra.attrib
+ SVG.XLinkEmbed.extra.attrib = empty
+ SVG.XLinkEmbed.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype },
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?,
+ [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?,
+ SVG.XLinkEmbed.extra.attrib
+ SVG.XLinkReplace.extra.attrib = empty
+ SVG.XLinkReplace.attrib &=
+ [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?,
+ attribute xlink:href { URI.datatype },
+ attribute xlink:role { URI.datatype }?,
+ attribute xlink:arcrole { URI.datatype }?,
+ attribute xlink:title { text }?,
+ [ a:defaultValue = "replace" ]
+ attribute xlink:show { "new" | "replace" }?,
+ [ a:defaultValue = "onRequest" ]
+ attribute xlink:actuate { "onRequest" }?,
+ SVG.XLinkReplace.extra.attrib
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-basic.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-basic.rnc
new file mode 100644
index 00000000000..846970b1357
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-basic.rnc
@@ -0,0 +1,183 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+
+##
+## RELAX NG schema for SVG 1.1 Basic
+## file: svg11-basic.rng
+##
+## This is SVG Basic, a proper subset of SVG.
+##
+## The Scalable Vector Graphics (SVG)
+## Copyright 2001, 2002 World Wide Web Consortium
+## (Massachusetts Institute of Technology, Institut National de
+## Recherche en Informatique et en Automatique, Keio University).
+## All Rights Reserved.
+##
+## Permission to use, copy, modify and distribute this RELAX NG schema
+## for SVG and its accompanying documentation for any purpose and without
+## fee is hereby granted in perpetuity, provided that the above copyright
+## notice and this paragraph appear in all copies. The copyright holders
+## nor the author make no representation about the suitability of this
+## RELAX NG schema for any purpose.
+##
+## It is provided "as is" without expressed or implied warranty.
+##
+## Author: Masayasu Ishikawa (mimasa@w3.org)
+## $Id: svg11-basic.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+## This is the driver file for version 1.1 of the SVG Basic RELAX NG schema.
+##
+## The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+##
+## PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
+## SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd"
+##
+## Use this URI to identify the default namespace:
+##
+## "http://www.w3.org/2000/svg"
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## Viewport Attribute Module
+ ##
+ include "svg-viewport-attrib.rnc" inherit = ns1
+
+ ##
+ ## Paint Attribute Module
+ ##
+ include "svg-paint-attrib.rnc" inherit = ns1
+
+ ##
+ ## Opacity Attribute Module
+ ##
+ include "svg-opacity-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphics Attribute Module
+ ##
+ include "svg-graphics-attrib.rnc" inherit = ns1
+
+ ##
+ ## Document Events Attribute Module
+ ##
+ include "svg-docevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphical Element Events Attribute Module
+ ##
+ include "svg-graphevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Animation Events Attribute Module
+ ##
+ include "svg-animevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## XLink Attribute Module
+ ##
+ include "svg-xlink-attrib.rnc" inherit = ns1
+
+ ##
+ ## External Resources Attribute Module
+ ##
+ include "svg-extresources-attrib.rnc" inherit = ns1
+
+ ##
+ ## Structure Module (required)
+ ##
+ include "svg-structure.rnc" inherit = ns1
+
+ ##
+ ## Conditional Processing Module
+ ##
+ include "svg-conditional.rnc" inherit = ns1
+
+ ##
+ ## Image Module
+ ##
+ include "svg-image.rnc" inherit = ns1
+
+ ##
+ ## Style Module
+ ##
+ include "svg-style.rnc" inherit = ns1
+
+ ##
+ ## Shape Module
+ ##
+ include "svg-shape.rnc" inherit = ns1
+
+ ##
+ ## Text Module
+ ##
+ include "svg-text.rnc" inherit = ns1
+
+ ##
+ ## Color Profile Module
+ ##
+ include "svg-profile.rnc" inherit = ns1
+
+ ##
+ ## Gradient Module
+ ##
+ include "svg-gradient.rnc" inherit = ns1
+
+ ##
+ ## Pattern Module
+ ##
+ include "svg-pattern.rnc" inherit = ns1
+
+ ##
+ ## Basic Clip Module
+ ##
+ include "svg-basic-clip.rnc" inherit = ns1
+
+ ##
+ ## Mask Module
+ ##
+ include "svg-mask.rnc" inherit = ns1
+
+ ##
+ ## Basic Filter Module
+ ##
+ include "svg-basic-filter.rnc" inherit = ns1
+
+ ##
+ ## Cursor Module
+ ##
+ include "svg-cursor.rnc" inherit = ns1
+
+ ##
+ ## Hyperlinking Module
+ ##
+ include "svg-hyperlink.rnc" inherit = ns1
+
+ ##
+ ## View Module
+ ##
+ include "svg-view.rnc" inherit = ns1
+
+ ##
+ ## Scripting Module
+ ##
+ include "svg-script.rnc" inherit = ns1
+
+ ##
+ ## Animation Module
+ ##
+ include "svg-animation.rnc" inherit = ns1
+
+ ##
+ ## Font Module
+ ##
+ include "svg-font.rnc" inherit = ns1
+
+ ##
+ ## Extensibility Module
+ ##
+ include "svg-extensibility.rnc" inherit = ns1
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-tiny.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-tiny.rnc
new file mode 100644
index 00000000000..40ff52469a1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11-tiny.rnc
@@ -0,0 +1,138 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+
+##
+## RELAX NG schema for SVG 1.1 Tiny
+## file: svg11-tiny.rng
+##
+## This is SVG Tiny, a proper subset of SVG.
+##
+## The Scalable Vector Graphics (SVG)
+## Copyright 2001, 2002 World Wide Web Consortium
+## (Massachusetts Institute of Technology, Institut National de
+## Recherche en Informatique et en Automatique, Keio University).
+## All Rights Reserved.
+##
+## Permission to use, copy, modify and distribute this RELAX NG schema
+## for SVG and its accompanying documentation for any purpose and without
+## fee is hereby granted in perpetuity, provided that the above copyright
+## notice and this paragraph appear in all copies. The copyright holders
+## nor the author make no representation about the suitability of this
+## RELAX NG schema for any purpose.
+##
+## It is provided "as is" without expressed or implied warranty.
+##
+## Author: Masayasu Ishikawa (mimasa@w3.org)
+## $Id: svg11-tiny.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+## This is the driver file for version 1.1 of the SVG Tiny RELAX NG schema.
+##
+## The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+##
+## PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
+## SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"
+##
+## Use this URI to identify the default namespace:
+##
+## "http://www.w3.org/2000/svg"
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## Paint Attribute Module
+ ##
+ include "svg-paint-attrib.rnc" inherit = ns1
+
+ ##
+ ## Basic Graphics Attribute Module
+ ##
+ include "svg-basic-graphics-attrib.rnc" inherit = ns1
+
+ ##
+ ## Document Events Attribute Module
+ ##
+ include "svg-docevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphical Element Events Attribute Module
+ ##
+ include "svg-graphevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Animation Events Attribute Module
+ ##
+ include "svg-animevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## XLink Attribute Module
+ ##
+ include "svg-xlink-attrib.rnc" inherit = ns1
+
+ ##
+ ## External Resources Attribute Module
+ ##
+ include "svg-extresources-attrib.rnc" inherit = ns1
+
+ ##
+ ## Basic Structure Module (required)
+ ##
+ include "svg-basic-structure.rnc" inherit = ns1
+
+ ##
+ ## Conditional Processing Module
+ ##
+ include "svg-conditional.rnc" inherit = ns1
+
+ ##
+ ## Image Module
+ ##
+ include "svg-image.rnc" inherit = ns1
+
+ ##
+ ## Style Module
+ ##
+ include "svg-style.rnc" inherit = ns1
+
+ ##
+ ## Shape Module
+ ##
+ include "svg-shape.rnc" inherit = ns1
+
+ ##
+ ## Basic Text Module
+ ##
+ include "svg-basic-text.rnc" inherit = ns1
+
+ ##
+ ## Hyperlinking Module
+ ##
+ include "svg-hyperlink.rnc" inherit = ns1
+
+ ##
+ ## View Module
+ ##
+ include "svg-view.rnc" inherit = ns1
+
+ ##
+ ## Scripting Module
+ ##
+ include "svg-script.rnc" inherit = ns1
+
+ ##
+ ## Animation Module
+ ##
+ include "svg-animation.rnc" inherit = ns1
+
+ ##
+ ## Basic Font Module
+ ##
+ include "svg-basic-font.rnc" inherit = ns1
+
+ ##
+ ## Extensibility Module
+ ##
+ include "svg-extensibility.rnc" inherit = ns1
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11.rnc b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11.rnc
new file mode 100644
index 00000000000..4e3f3b4366a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rnc/svg/svg11.rnc
@@ -0,0 +1,193 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+namespace ns1 = "http://www.w3.org/2000/svg"
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+
+##
+## RELAX NG schema for SVG 1.1
+## file: svg11.rng
+##
+## This is SVG, a language for describing two-dimensional graphics in XML.
+##
+## The Scalable Vector Graphics (SVG)
+## Copyright 2001, 2002 World Wide Web Consortium
+## (Massachusetts Institute of Technology, Institut National de
+## Recherche en Informatique et en Automatique, Keio University).
+## All Rights Reserved.
+##
+## Permission to use, copy, modify and distribute this RELAX NG schema
+## for SVG and its accompanying documentation for any purpose and without
+## fee is hereby granted in perpetuity, provided that the above copyright
+## notice and this paragraph appear in all copies. The copyright holders
+## nor the author make no representation about the suitability of this
+## RELAX NG schema for any purpose.
+##
+## It is provided "as is" without expressed or implied warranty.
+##
+## Author: Masayasu Ishikawa (mimasa@w3.org)
+## $Id: svg11.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+##
+## This is the driver file for version 1.1 of the SVG RELAX NG schema.
+##
+## The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+##
+## PUBLIC "-//W3C//DTD SVG 1.1//EN"
+## SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
+##
+## Use this URI to identify the default namespace:
+##
+## "http://www.w3.org/2000/svg"
+##
+[ xml:lang = "en" ]
+grammar {
+
+ ##
+ ## Container Attribute Module
+ ##
+ include "svg-container-attrib.rnc" inherit = ns1
+
+ ##
+ ## Viewport Attribute Module
+ ##
+ include "svg-viewport-attrib.rnc" inherit = ns1
+
+ ##
+ ## Paint Attribute Module
+ ##
+ include "svg-paint-attrib.rnc" inherit = ns1
+
+ ##
+ ## Paint Opacity Attribute Module
+ ##
+ include "svg-opacity-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphics Attribute Module
+ ##
+ include "svg-graphics-attrib.rnc" inherit = ns1
+
+ ##
+ ## Document Events Attribute Module
+ ##
+ include "svg-docevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Graphical Element Events Attribute Module
+ ##
+ include "svg-graphevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## Animation Events Attribute Module
+ ##
+ include "svg-animevents-attrib.rnc" inherit = ns1
+
+ ##
+ ## XLink Attribute Module
+ ##
+ include "svg-xlink-attrib.rnc" inherit = ns1
+
+ ##
+ ## External Resources Attribute Module
+ ##
+ include "svg-extresources-attrib.rnc" inherit = ns1
+
+ ##
+ ## Structure Module (required)
+ ##
+ include "svg-structure.rnc" inherit = ns1
+
+ ##
+ ## Conditional Processing Module
+ ##
+ include "svg-conditional.rnc" inherit = ns1
+
+ ##
+ ## Image Module
+ ##
+ include "svg-image.rnc" inherit = ns1
+
+ ##
+ ## Style Module
+ ##
+ include "svg-style.rnc" inherit = ns1
+
+ ##
+ ## Shape Module
+ ##
+ include "svg-shape.rnc" inherit = ns1
+
+ ##
+ ## Text Module
+ ##
+ include "svg-text.rnc" inherit = ns1
+
+ ##
+ ## Marker Module
+ ##
+ include "svg-marker.rnc" inherit = ns1
+
+ ##
+ ## Color Profile Module
+ ##
+ include "svg-profile.rnc" inherit = ns1
+
+ ##
+ ## Gradient Module
+ ##
+ Include "svg-gradient.rnc" inherit = ns1
+
+ ##
+ ## Pattern Module
+ ##
+ include "svg-pattern.rnc" inherit = ns1
+
+ ##
+ ## Clip Module
+ ##
+ include "svg-clip.rnc" inherit = ns1
+
+ ##
+ ## Mask Module
+ ##
+ include "svg-mask.rnc" inherit = ns1
+
+ ##
+ ## Filter Module
+ ##
+ include "svg-filter.rnc" inherit = ns1
+
+ ##
+ ## Cursor Module
+ ##
+ include "svg-cursor.rnc" inherit = ns1
+
+ ##
+ ## Hyperlinking Module
+ ##
+ include "svg-hyperlink.rnc" inherit = ns1
+
+ ##
+ ## View Module
+ ##
+ include "svg-view.rnc" inherit = ns1
+
+ ##
+ ## Scripting Module
+ ##
+ include "svg-script.rnc" inherit = ns1
+
+ ##
+ ## Animation Module
+ ##
+ include "svg-animation.rnc" inherit = ns1
+
+ ##
+ ## Font Module
+ ##
+ include "svg-font.rnc" inherit = ns1
+
+ ##
+ ## Extensibility Module
+ ##
+ include "svg-extensibility.rnc" inherit = ns1
+}
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-bib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-bib.rng
new file mode 100644
index 00000000000..b44216f22d0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-bib.rng
@@ -0,0 +1,900 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-bib.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Would be nice to use somebody elses already-developed DTD... -->
+ <!--
+ Some notes:
+ There're two classes of things here:
+ bibentry : which would be the translation of a .bib file
+ bibitem : which would be the formatted items in a latex bibliography environment.
+ This latter has typically lost much information during formatting.
+ -->
+ <define name="biblist">
+ <element name="biblist">
+ <a:documentation>A list of bibliographic \elementref{bibentry} or \elementref{bibitem}.</a:documentation>
+ <interleave>
+ <ref name="biblist_attributes"/>
+ <ref name="biblist_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="biblist_attributes">
+ <a:documentation>Attributes for \elementref{biblist}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="biblist_model">
+ <a:documentation>Content model for \elementref{biblist}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="bibentry"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bibitem"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!--
+ ======================================================================
+ bibitem is the formatted, presentation, form, typically information has been lost;
+ it basically contains a biblabel and several bibblock's
+ ======================================================================
+ -->
+ <define name="bibitem">
+ <element name="bibitem">
+ <a:documentation>A formatted bibliographic item, typically as written explicit
+in a LaTeX article. This has generally lost most of the semantics
+present in the BibTeX data.</a:documentation>
+ <interleave>
+ <ref name="bibitem_attributes"/>
+ <ref name="bibitem_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibitem_attributes">
+ <a:documentation>Attributes for \elementref{bibitem}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="key">
+ <a:documentation>The unique key for this object; this key is referenced by the
+\attr{bibrefs} attribute of \elementref{bibref}.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bibitem_model">
+ <a:documentation>Content model for \elementref{bibitem}.</a:documentation>
+ <zeroOrMore>
+ <ref name="bibtag"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bibblock"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bibtag">
+ <element name="bibtag">
+ <a:documentation>Various formatted tags for bibliographic items.
+Typically @role refnum is shown in the displayed bibliography,
+as the beginning of the item. Other roles
+(eg. number, authors, fullauthors, year, title) record formatted
+info to be used for filling in citations (\elementref{bibref}).</a:documentation>
+ <interleave>
+ <ref name="bibtag_attributes"/>
+ <ref name="bibtag_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibtag_attributes">
+ <a:documentation>Attributes for \elementref{bibtag}.</a:documentation>
+ <interleave>
+ <optional>
+ <attribute name="role">
+ <choice>
+ <value>number</value>
+ <value>authors</value>
+ <value>fullauthors</value>
+ <value>key</value>
+ <value>year</value>
+ <value>bibtype</value>
+ <value>title</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="open">
+ <a:documentation>A delimiter for formatting the refnum in the bibliography</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close">
+ <a:documentation>A delimiter for formatting the refnum in the bibliography</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bibtag_model">
+ <a:documentation>Content model for \elementref{bibtag}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bibblock">
+ <element name="bibblock">
+ <a:documentation>A block of data appearing within a \elementref{bibitem}.</a:documentation>
+ <interleave>
+ <ref name="bibblock_attributes"/>
+ <ref name="bibblock_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibblock_attributes">
+ <a:documentation>Attributes for \elementref{bibblock}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="bibblock_model">
+ <a:documentation>Content model for \elementref{bibblock}.</a:documentation>
+ <ref name="Flow.model"/>
+ </define>
+ <!--
+ bibblock's model was this:
+ Inline.model }
+ -->
+ <!--
+ ======================================================================
+ bibentry is the (more) semantic form, typically extracted from bibtex.
+ ======================================================================
+ -->
+ <define name="bibentry">
+ <element name="bibentry">
+ <a:documentation>Semantic representation of a bibliography entry,
+typically resulting from parsing BibTeX</a:documentation>
+ <interleave>
+ <ref name="bibentry_attributes"/>
+ <ref name="bibentry_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibentry.type">
+ <choice>
+ <value>article</value>
+ <value>book</value>
+ <value>booklet</value>
+ <value>conference</value>
+ <value>inbook</value>
+ <value>incollection</value>
+ <value>inproceedings</value>
+ <value>manual</value>
+ <value>mastersthesis</value>
+ <value>misc</value>
+ <value>phdthesis</value>
+ <value>proceedings</value>
+ <value>techreport</value>
+ <value>unpublished</value>
+ <value>report</value>
+ <value>thesis</value>
+ <value>website</value>
+ <value>software</value>
+ <value>periodical</value>
+ <value>collection</value>
+ <value>collection.article</value>
+ <value>proceedings.article</value>
+ <text/>
+ </choice>
+ </define>
+ <define name="bibentry_attributes">
+ <a:documentation>Attributes for \elementref{bibentry}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <attribute name="key">
+ <a:documentation>The unique key for this object; this key is referenced by the
+\attr{bibrefs} attribute of \elementref{bibref}.</a:documentation>
+ </attribute>
+ <attribute name="type">
+ <a:documentation>The type of the referenced object. The values are a superset of
+those types recognized by BibTeX, but is also open-ended for extensibility.</a:documentation>
+ <ref name="bibentry.type"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="bibentry_model">
+ <a:documentation>Content model for \elementref{bibentry}.</a:documentation>
+ <ref name="Bibentry.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <!-- Name related information -->
+ <define name="bib-name">
+ <element name="bib-name">
+ <a:documentation>Name of some participant in creating a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-name_attributes"/>
+ <ref name="bib-name_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-name_attributes">
+ <a:documentation>Attributes for \elementref{bib-name}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>The role that this participant played in creating the entry.</a:documentation>
+ <choice>
+ <value>author</value>
+ <value>editor</value>
+ <value>translator</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-name_model">
+ <a:documentation>Content model for \elementref{bib-name}.</a:documentation>
+ <ref name="Bibname.model"/>
+ </define>
+ <define name="Bibname.model">
+ <a:documentation>The content model of the bibliographic name fields (\elementref{bib-name})</a:documentation>
+ <interleave>
+ <ref name="surname"/>
+ <optional>
+ <ref name="givenname"/>
+ </optional>
+ <optional>
+ <ref name="lineage"/>
+ </optional>
+ </interleave>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="surname">
+ <element name="surname">
+ <a:documentation>Surname of a participant (\elementref{bib-name}).</a:documentation>
+ <interleave>
+ <ref name="surname_attributes"/>
+ <ref name="surname_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="surname_attributes">
+ <a:documentation>Attributes for \elementref{surname}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="surname_model">
+ <a:documentation>Content model for \elementref{surname}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="givenname">
+ <element name="givenname">
+ <a:documentation>Given name of a participant (\elementref{bib-name}).</a:documentation>
+ <interleave>
+ <ref name="givenname_attributes"/>
+ <ref name="givenname_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="givenname_attributes">
+ <a:documentation>Attributes for \elementref{givenname}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="givenname_model">
+ <a:documentation>Content model for \elementref{givenname}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="lineage">
+ <element name="lineage">
+ <a:documentation>Lineage of a participant (\elementref{bib-name}), eg. Jr. or similar.</a:documentation>
+ <interleave>
+ <ref name="lineage_attributes"/>
+ <ref name="lineage_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="lineage_attributes">
+ <a:documentation>Attributes for \elementref{lineage}.</a:documentation>
+ <empty/>
+ </define>
+ <define name="lineage_model">
+ <a:documentation>Content model for \elementref{lineage}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <!-- Title related information -->
+ <define name="bib-title">
+ <element name="bib-title">
+ <a:documentation>Title of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-title_attributes"/>
+ <ref name="bib-title_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-title_attributes">
+ <a:documentation>Attributes for \elementref{bib-title}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-title_model">
+ <a:documentation>Content model for \elementref{bib-title}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-subtitle">
+ <element name="bib-subtitle">
+ <a:documentation>Subtitle of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-subtitle_attributes"/>
+ <ref name="bib-subtitle_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-subtitle_attributes">
+ <a:documentation>Attributes for \elementref{bib-subtitle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-subtitle_model">
+ <a:documentation>Content model for \elementref{bib-subtitle}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-key">
+ <element name="bib-key">
+ <a:documentation>Unique key of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-key_attributes"/>
+ <ref name="bib-key_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-key_attributes">
+ <a:documentation>Attributes for \elementref{bib-key}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-key_model">
+ <a:documentation>Content model for \elementref{bib-key}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-type">
+ <element name="bib-type">
+ <a:documentation>Type of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-type_attributes"/>
+ <ref name="bib-type_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-type_attributes">
+ <a:documentation>Attributes for \elementref{bib-type}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-type_model">
+ <a:documentation>Content model for \elementref{bib-type}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-date">
+ <element name="bib-date">
+ <a:documentation>Date of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-date_attributes"/>
+ <ref name="bib-date_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-date_attributes">
+ <a:documentation>Attributes for \elementref{bib-date}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>characterizes what happened on the given date</a:documentation>
+ <choice>
+ <value>publication</value>
+ <value>copyright</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-date_model">
+ <a:documentation>Content model for \elementref{bib-date}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-publisher">
+ <element name="bib-publisher">
+ <a:documentation>Publisher of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-publisher_attributes"/>
+ <ref name="bib-publisher_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-publisher_attributes">
+ <a:documentation>Attributes for \elementref{bib-publisher}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-publisher_model">
+ <a:documentation>Content model for \elementref{bib-publisher}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-organization">
+ <element name="bib-organization">
+ <a:documentation>Organization responsible for a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-organization_attributes"/>
+ <ref name="bib-organization_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-organization_attributes">
+ <a:documentation>Attributes for \elementref{bib-organization}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-organization_model">
+ <a:documentation>Content model for \elementref{bib-organization}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-place">
+ <element name="bib-place">
+ <a:documentation>Location of publisher or event</a:documentation>
+ <interleave>
+ <ref name="bib-place_attributes"/>
+ <ref name="bib-place_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-place_attributes">
+ <a:documentation>Attributes for \elementref{bib-place}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-place_model">
+ <a:documentation>Content model for \elementref{bib-place}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-related">
+ <element name="bib-related">
+ <a:documentation>A Related bibliographic object, such as the book or journal
+that the current item is related to.</a:documentation>
+ <interleave>
+ <ref name="bib-related_attributes"/>
+ <ref name="bib-related_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-related_attributes">
+ <a:documentation>Attributes for \elementref{bib-related}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="type">
+ <a:documentation>The type of this related entry.</a:documentation>
+ <ref name="bibentry.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="role">
+ <a:documentation>How this object relates to the containing object.
+Particularly important is \attrval{host} which indicates that
+the outer object is a part of this object.</a:documentation>
+ <choice>
+ <value>host</value>
+ <value>event</value>
+ <value>original</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bibrefs">
+ <a:documentation>If the bibrefs attribute is given, it is the key of another object in the bibliography,
+and this element should be empty; otherwise the object should be described by
+the content of the element.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-related_model">
+ <a:documentation>Content model for \elementref{bib-related}.</a:documentation>
+ <ref name="Bibentry.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-part">
+ <element name="bib-part">
+ <a:documentation>Describes how the current object is related to a related (\elementref{bib-related})
+object, in particular page, part, volume numbers and similar.</a:documentation>
+ <interleave>
+ <ref name="bib-part_attributes"/>
+ <ref name="bib-part_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-part_attributes">
+ <a:documentation>Attributes for \elementref{bib-part}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates how the value partitions the containing object.</a:documentation>
+ <choice>
+ <value>pages</value>
+ <value>part</value>
+ <value>volume</value>
+ <value>issue</value>
+ <value>number</value>
+ <value>chapter</value>
+ <value>section</value>
+ <value>paragraph</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-part_model">
+ <a:documentation>Content model for \elementref{bib-part}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!--
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ -->
+ <define name="bib-edition">
+ <element name="bib-edition">
+ <a:documentation>Edition of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-edition_attributes"/>
+ <ref name="bib-edition_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-edition_attributes">
+ <a:documentation>Attributes for \elementref{bib-edition}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-edition_model">
+ <a:documentation>Content model for \elementref{bib-edition}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-status">
+ <element name="bib-status">
+ <a:documentation>Status of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-status_attributes"/>
+ <ref name="bib-status_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-status_attributes">
+ <a:documentation>Attributes for \elementref{bib-status}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-status_model">
+ <a:documentation>Content model for \elementref{bib-status}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-identifier">
+ <element name="bib-identifier">
+ <a:documentation>Some form of document identfier. The content is descriptive.</a:documentation>
+ <interleave>
+ <ref name="bib-identifier_attributes"/>
+ <ref name="bib-identifier_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-identifier_attributes">
+ <a:documentation>Attributes for \elementref{bib-identifier}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="scheme">
+ <a:documentation>indicates what sort of identifier it is; it is open-ended for extensibility.</a:documentation>
+ <choice>
+ <value>doi</value>
+ <value>issn</value>
+ <value>isbn</value>
+ <value>mr</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="id">
+ <a:documentation>the identifier.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <a:documentation>a url to the document, if available</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-identifier_model">
+ <a:documentation>Content model for \elementref{bib-identifier}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-review">
+ <element name="bib-review">
+ <a:documentation>Review of a bibliographic entry. The content is descriptive.</a:documentation>
+ <interleave>
+ <ref name="bib-review_attributes"/>
+ <ref name="bib-review_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-review_attributes">
+ <a:documentation>Attributes for \elementref{bib-review}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="scheme">
+ <a:documentation>indicates what sort of identifier it is; it is open-ended for extensibility.</a:documentation>
+ <choice>
+ <value>doi</value>
+ <value>issn</value>
+ <value>isbn</value>
+ <value>mr</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="id">
+ <a:documentation>the identifier.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <a:documentation>a url to the review, if available</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-review_model">
+ <a:documentation>Content model for \elementref{bib-review}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-links">
+ <element name="bib-links">
+ <a:documentation>Links to other things like preprints, source code, etc.</a:documentation>
+ <interleave>
+ <ref name="bib-links_attributes"/>
+ <ref name="bib-links_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-links_attributes">
+ <a:documentation>Attributes for \elementref{bib-links}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-links_model">
+ <a:documentation>Content model for \elementref{bib-links}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-language">
+ <element name="bib-language">
+ <a:documentation>Language of a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-language_attributes"/>
+ <ref name="bib-language_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-language_attributes">
+ <a:documentation>Attributes for \elementref{bib-language}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bib-language_model">
+ <a:documentation>Content model for \elementref{bib-language}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-url">
+ <element name="bib-url">
+ <a:documentation>A URL for a bibliographic entry. The content is descriptive</a:documentation>
+ <interleave>
+ <ref name="bib-url_attributes"/>
+ <ref name="bib-url_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-url_attributes">
+ <a:documentation>Attributes for \elementref{bib-url}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="href"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-url_model">
+ <a:documentation>Content model for \elementref{bib-url}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-extract">
+ <element name="bib-extract">
+ <a:documentation>An extract from the referenced object.</a:documentation>
+ <interleave>
+ <ref name="bib-extract_attributes"/>
+ <ref name="bib-extract_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-extract_attributes">
+ <a:documentation>Attributes for \elementref{bib-extract}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>Classify what kind of extract</a:documentation>
+ <choice>
+ <value>keywords</value>
+ <value>abstract</value>
+ <value>contents</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-extract_model">
+ <a:documentation>Content model for \elementref{bib-extract}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-note">
+ <element name="bib-note">
+ <a:documentation>Notes about a bibliographic entry.</a:documentation>
+ <interleave>
+ <ref name="bib-note_attributes"/>
+ <ref name="bib-note_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-note_attributes">
+ <a:documentation>Attributes for \elementref{bib-note}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>Classify the kind of note</a:documentation>
+ <choice>
+ <value>annotation</value>
+ <value>publication</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-note_model">
+ <a:documentation>Content model for \elementref{bib-note}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="bib-data">
+ <element name="bib-data">
+ <a:documentation>Random data, not necessarily even text.
+(future questions: should model be text or ANY? maybe should have encoding attribute?).</a:documentation>
+ <interleave>
+ <ref name="bib-data_attributes"/>
+ <ref name="bib-data_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bib-data_attributes">
+ <a:documentation>Attributes for \elementref{bib-data}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>Classify the relationship of the data to the entry.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <a:documentation>Classify the type of the data.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bib-data_model">
+ <a:documentation>Content model for \elementref{bib-data}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Bibentry.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="bib-name"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-title"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-subtitle"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-key"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-type"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-date"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-publisher"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-organization"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-place"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-part"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-related"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-edition"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-status"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-language"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-url"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-note"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-extract"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-identifier"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-review"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-links"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bib-data"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-block.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-block.rng
new file mode 100644
index 00000000000..bb3b97ed755
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-block.rng
@@ -0,0 +1,589 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-block.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Block.class" combine="interleave">
+ <a:documentation>The block module defines the following `physical' block elements.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="p"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="equation"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="equationgroup"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="quote"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="block"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="listingblock"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="itemize"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="enumerate"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="description"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Misc.class" combine="interleave">
+ <a:documentation>Additionally, it defines these miscellaneous elements that can appear
+in both inline and block contexts.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="inline-block"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="verbatim"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="break"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="graphics"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="svg"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="EquationMeta.class">
+ <a:documentation>Additional Metadata that can be present in equations.</a:documentation>
+ <ref name="constraint"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="p">
+ <element name="p">
+ <a:documentation>A physical paragraph.</a:documentation>
+ <interleave>
+ <ref name="p_attributes"/>
+ <ref name="p_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="p_attributes">
+ <a:documentation>Attributes for \elementref{p}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </interleave>
+ </define>
+ <define name="p_model">
+ <a:documentation>Content model for \elementref{p}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="constraint">
+ <element name="constraint">
+ <a:documentation>A constraint upon an equation.</a:documentation>
+ <interleave>
+ <ref name="constraint_attributes"/>
+ <ref name="constraint_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="constraint_attributes">
+ <a:documentation>Attributes for \elementref{constraint}.</a:documentation>
+ <optional>
+ <attribute name="hidden">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="constraint_model">
+ <a:documentation>Content model for \elementref{constraint}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="equation">
+ <element name="equation">
+ <a:documentation>An Equation. The model is just Inline which includes \elementref{Math},
+the main expected ingredient.
+However, other things can end up in display math, too, so we use Inline.
+Note that tabular is here only because it's a common, if misguided, idiom;
+the processor will lift such elements out of math, when possible</a:documentation>
+ <interleave>
+ <ref name="equation_attributes"/>
+ <ref name="equation_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="equation_attributes">
+ <a:documentation>Attributes for \elementref{equation}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="equation_model">
+ <a:documentation>Content model for \elementref{equation}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="Math"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="MathFork"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="text"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tabular"/>
+ </zeroOrMore>
+ <ref name="Meta.class"/>
+ <ref name="EquationMeta.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="equationgroup">
+ <element name="equationgroup">
+ <a:documentation>A group of equations, perhaps aligned (Though this is nowhere recorded).</a:documentation>
+ <interleave>
+ <ref name="equationgroup_attributes"/>
+ <ref name="equationgroup_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="equationgroup_attributes">
+ <a:documentation>Attributes for \elementref{equationgroup}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="equationgroup_model">
+ <a:documentation>Content model for \elementref{equationgroup}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="equationgroup"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="equation"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="p"/>
+ </zeroOrMore>
+ <ref name="Meta.class"/>
+ <ref name="EquationMeta.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="MathFork">
+ <element name="MathFork">
+ <a:documentation>A wrapper for Math that provides alternative,
+but typically less semantically meaningful,
+formatted representations.
+The first child is the meaningful form,
+the extra children provide formatted forms,
+for example being table rows or cells arising from an eqnarray.</a:documentation>
+ <interleave>
+ <ref name="MathFork_attributes"/>
+ <ref name="MathFork_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="MathFork_attributes">
+ <a:documentation>Attributes for \elementref{MathFork}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="MathFork_model">
+ <a:documentation>Content model for \elementref{MathFork}.</a:documentation>
+ <ref name="Math"/>
+ <zeroOrMore>
+ <ref name="MathBranch"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="MathBranch">
+ <element name="MathBranch">
+ <a:documentation>A container for an alternatively formatted math representation.</a:documentation>
+ <interleave>
+ <ref name="MathBranch_attributes"/>
+ <ref name="MathBranch_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="MathBranch_attributes">
+ <a:documentation>Attributes for \elementref{MathBranch}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="MathBranch_model">
+ <a:documentation>Content model for \elementref{MathBranch}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="Math"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="td"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="quote">
+ <element name="quote">
+ <a:documentation>A quotation.</a:documentation>
+ <interleave>
+ <ref name="quote_attributes"/>
+ <ref name="quote_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="quote_attributes">
+ <a:documentation>Attributes for \elementref{quote}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="quote_model">
+ <a:documentation>Content model for \elementref{quote}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!--
+ This was Inline.model, but since quotes can be arbitrarily complex
+ including equations, etc, not just verse, should be Block.model, perhaps even Para.model?
+ -->
+ <!-- ====================================================================== -->
+ <define name="block">
+ <element name="block">
+ <a:documentation>A generic block (fallback).</a:documentation>
+ <interleave>
+ <ref name="block_attributes"/>
+ <ref name="block_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="block_attributes">
+ <a:documentation>Attributes for \elementref{block}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </interleave>
+ </define>
+ <define name="block_model">
+ <a:documentation>Content model for \elementref{block}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="listingblock">
+ <element name="listingblock">
+ <a:documentation>An in-block Listing, without caption</a:documentation>
+ <interleave>
+ <ref name="listingblock_attributes"/>
+ <ref name="listingblock_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="listingblock_attributes">
+ <a:documentation>Attributes for \elementref{listingblock}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="listingblock_model">
+ <a:documentation>Content model for \elementref{listingblock}.</a:documentation>
+ <zeroOrMore>
+ <ref name="Block.model"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="break">
+ <element name="break">
+ <a:documentation>A forced line break.</a:documentation>
+ <interleave>
+ <ref name="break_attributes"/>
+ <ref name="break_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="break_attributes">
+ <a:documentation>Attributes for \elementref{break}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="break_model">
+ <a:documentation>Content model for \elementref{break}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="inline-block">
+ <element name="inline-block">
+ <a:documentation>An inline block. Actually, can appear in inline or block mode, but
+typesets its contents as a block.</a:documentation>
+ <interleave>
+ <ref name="inline-block_attributes"/>
+ <ref name="inline-block_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="inline-block_attributes">
+ <a:documentation>Attributes for \elementref{inline-block}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </interleave>
+ </define>
+ <define name="inline-block_model">
+ <a:documentation>Content model for \elementref{inline-block}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="verbatim">
+ <element name="verbatim">
+ <a:documentation>Verbatim content</a:documentation>
+ <interleave>
+ <ref name="verbatim_attributes"/>
+ <ref name="verbatim_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="verbatim_attributes">
+ <a:documentation>Attributes for \elementref{verbatim}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="font">
+ <a:documentation>the font to use; generally typewriter.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. (See \elementref{text})</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="verbatim_model">
+ <a:documentation>Content model for \elementref{verbatim}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="itemize">
+ <element name="itemize">
+ <a:documentation>An itemized list.</a:documentation>
+ <interleave>
+ <ref name="itemize_attributes"/>
+ <ref name="itemize_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="itemize_attributes">
+ <a:documentation>Attributes for \elementref{itemize}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="itemize_model">
+ <a:documentation>Content model for \elementref{itemize}.</a:documentation>
+ <zeroOrMore>
+ <ref name="item"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="enumerate">
+ <element name="enumerate">
+ <a:documentation>An enumerated list.</a:documentation>
+ <interleave>
+ <ref name="enumerate_attributes"/>
+ <ref name="enumerate_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="enumerate_attributes">
+ <a:documentation>Attributes for \elementref{enumerate}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="enumerate_model">
+ <a:documentation>Content model for \elementref{enumerate}.</a:documentation>
+ <zeroOrMore>
+ <ref name="item"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="description">
+ <element name="description">
+ <a:documentation>A description list. The \elementref{item}s within are expected to have a \elementref{tag}
+which represents the term being described in each \elementref{item}.</a:documentation>
+ <interleave>
+ <ref name="description_attributes"/>
+ <ref name="description_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="description_attributes">
+ <a:documentation>Attributes for \elementref{description}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="description_model">
+ <a:documentation>Content model for \elementref{description}.</a:documentation>
+ <zeroOrMore>
+ <ref name="item"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="item">
+ <element name="item">
+ <a:documentation>An item within a list.</a:documentation>
+ <interleave>
+ <ref name="item_attributes"/>
+ <ref name="item_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="item_attributes">
+ <a:documentation>Attributes for \elementref{item}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="item_model">
+ <a:documentation>Content model for \elementref{item}.</a:documentation>
+ <interleave>
+ <optional>
+ <ref name="tag"/>
+ </optional>
+ <ref name="Para.model"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tag">
+ <element name="tag">
+ <a:documentation>A tag within an item indicating the term or bullet for a given item.</a:documentation>
+ <interleave>
+ <ref name="tag_attributes"/>
+ <ref name="tag_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="tag_attributes">
+ <a:documentation>Attributes for \elementref{tag}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="open">
+ <a:documentation>specifies an open delimiters used to display the tag.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close">
+ <a:documentation>specifies an close delimiters used to display the tag.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="tag_model">
+ <a:documentation>Content model for \elementref{tag}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="graphics">
+ <element name="graphics">
+ <a:documentation>A graphical insertion of an external file. </a:documentation>
+ <interleave>
+ <ref name="graphics_attributes"/>
+ <ref name="graphics_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="graphics_attributes">
+ <a:documentation>Attributes for \elementref{graphics}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Imageable.attributes"/>
+ <optional>
+ <attribute name="graphic">
+ <a:documentation>the path to the graphics file. This is the (often minimally specified) path
+to a graphics file omitting the type extension. Once resolved to a specific
+image file, the \attr{imagesrc} (from Imageable.attributes) is used.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="candidates">
+ <a:documentation>a comma separated list of candidate graphics files that could be used to
+for \attr{graphic}. A post-processor or application may choose from these,
+or may make its own selection or synthesis to implement the graphic for a given target.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="options">
+ <a:documentation>an encoding of the scaling and positioning options
+to be used in processing the graphic.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="graphics_model">
+ <a:documentation>Content model for \elementref{graphics}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="svg">
+ <grammar>
+ <a:documentation>An SVG (Scalable Vector Graphics) object
+[eventually must adapt to put LaTeXML objects in foreignObject]</a:documentation>
+ <include href="svg11.rng">
+ <define name="SVG.foreignObject.content">
+ <parentRef name="Flow.model"/>
+ </define>
+ </include>
+ </grammar>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-common.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-common.rng
new file mode 100644
index 00000000000..a46741628a9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-common.rng
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-classes.rnc |
+ | Document Type for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- Basic element classes: -->
+ <define name="Inline.class">
+ <a:documentation>All strictly inline elements.</a:documentation>
+ <empty/>
+ </define>
+ <define name="Block.class">
+ <a:documentation>All `physical' block elements.
+A physical block is typically displayed as a block, but
+may not constitute a complete logical unit.</a:documentation>
+ <empty/>
+ </define>
+ <define name="Misc.class">
+ <a:documentation>Additional miscellaneous elements that can appear in
+both inline and block contexts.</a:documentation>
+ <empty/>
+ </define>
+ <define name="Para.class">
+ <a:documentation>All logical block level elements.
+A logical block typically contains one or more physical block elements.
+For example, a common situation might be \elementref{p},\elementref{equation},\elementref{p},
+where the entire sequence comprises a single sentence.</a:documentation>
+ <empty/>
+ </define>
+ <define name="Meta.class">
+ <a:documentation>All metadata elements, typically representing hidden data.</a:documentation>
+ <empty/>
+ </define>
+ <!--
+ ======================================================================
+ Attribute types
+ -->
+ <define name="Length.type">
+ <a:documentation>The type for attributes specifying a length.
+Should be a number followed by a length, typically px.
+NOTE: To be narrowed later.</a:documentation>
+ <text/>
+ </define>
+ <define name="Color.type">
+ <a:documentation>The type for attributes specifying a color.
+NOTE: To be narrowed later.</a:documentation>
+ <text/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Common.attributes">
+ <a:documentation>Attributes shared by ALL elements.</a:documentation>
+ <optional>
+ <!--
+ ## provides for namespace declaration.
+ attribute xmlns { text }? &
+ -->
+ <attribute name="class">
+ <a:documentation>a space separated list of tokens, as in CSS.
+The \attr{class} can be used to add differentiate different instances of elements
+without introducing new element declarations.
+However, this generally shouldn't be used for deep semantic distinctions.
+This attribute is carried over to HTML and can be used for CSS selection.
+[Note that the default XSLT stylesheets for html and xhtml
+add the latexml element names to the class of html elements
+for more convenience in using CSS.]</a:documentation>
+ <data type="NMTOKENS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ID.attributes">
+ <a:documentation>Attributes for elements that can be cross-referenced
+from inside or outside the document.</a:documentation>
+ <optional>
+ <attribute name="xml:id">
+ <a:documentation>the unique identifier of the element,
+usually generated automatically by the latexml.</a:documentation>
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="IDREF.attributes">
+ <a:documentation>Attributes for elements that can cross-reference other elements.</a:documentation>
+ <optional>
+ <attribute name="idref">
+ <a:documentation>the identifier of the referred-to element.</a:documentation>
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Labelled.attributes">
+ <a:documentation>Attributes for elements that can be labelled from within LaTeX.
+These attributes deal with assigning a label and generating cross references.</a:documentation>
+ <interleave>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="labels">
+ <a:documentation>Records the various labels that LaTeX uses for crossreferencing.
+(note that \cs{label} can associate more than one label with an object!)
+It consists of space separated labels for the element.
+The \cs{label} macro provides the label prefixed by \texttt{LABEL:};
+Spaces in a label are replaced by underscore.
+Other mechanisms (like acro?) might use other prefixes (but \texttt{ID:} is reserved!)</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="refnum">
+ <a:documentation>the reference number (ie. section number, equation number, etc) of the object.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frefnum">
+ <a:documentation>the formatted reference number of the object, typically this is the refnum with
+the object type prepended, such as "Chapter 2"</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Positionable.attributes">
+ <a:documentation>Attributes shared by low-level, generic inline and block elements
+that can be sized or shifted.</a:documentation>
+ <interleave>
+ <optional>
+ <attribute name="width">
+ <a:documentation>the desired width of the box</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <a:documentation>the desired height of the box</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <a:documentation>the desired depth of the box</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pad-width">
+ <a:documentation>extra width beyond the boxes natural size.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pad-height">
+ <a:documentation>extra height beyond the boxes natural size.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xoffset">
+ <a:documentation>horizontal shift the position of the box.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yoffset">
+ <a:documentation>vertical shift the position of the box.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <a:documentation>alignment of material within the box.</a:documentation>
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>justified</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vattach">
+ <a:documentation>specifies which line of the box is aligned to the baseline of the containing object.</a:documentation>
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="float">
+ <a:documentation>the horizontal floating placement parameter that determines where the object is displayed.</a:documentation>
+ <choice>
+ <value>right</value>
+ <value>left</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Imageable.attributes">
+ <a:documentation>Attributes for elements that may be converted to image form
+during postprocessing, such as math, graphics, pictures, etc.</a:documentation>
+ <interleave>
+ <optional>
+ <attribute name="imagesrc">
+ <a:documentation>the file, possibly generated from other data.</a:documentation>
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imagewidth">
+ <a:documentation>the width in pixels of \attr{imagesrc}.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="imageheight">
+ <a:documentation>the height in pixels of \attr{imagesrc}.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="description">
+ <a:documentation>a description of the image</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-inline.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-inline.rng
new file mode 100644
index 00000000000..01cb51dcae1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-inline.rng
@@ -0,0 +1,514 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-inline.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="Inline.class" combine="interleave">
+ <a:documentation>The inline module defines basic inline elements used throughout </a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="text"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="emph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="acronym"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="rule"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="anchor"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ref"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="cite"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bibref"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Meta.class" combine="interleave">
+ <a:documentation>Additionally, it defines these meta elements. These are generally hidden,
+and can appear in inline and block contexts.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="note"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="indexmark"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ERROR"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="text">
+ <element name="text">
+ <a:documentation>General container for styled text.
+Attributes cover a variety of styling and position shifting properties.</a:documentation>
+ <interleave>
+ <ref name="text_attributes"/>
+ <ref name="text_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="text_attributes">
+ <a:documentation>Attributes for \elementref{text}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="font">
+ <a:documentation>Indicates the font to use. It consists of a space separated sequence
+of values representing the
+family (\texttt{serif}, \texttt{sansserif}, \texttt{math}, \texttt{typewriter},
+ \texttt{caligraphic}, \texttt{fraktur}, \texttt{script}, \ldots),
+series (\texttt{medium}, \texttt{bold}, \ldots),
+and shape (\texttt{upright}, \texttt{italic}, \texttt{slanted}, \texttt{smallcaps}, \ldots).
+Only the values differing from the current context are given.
+Each component is open-ended, for extensibility; it is thus unclear
+whether unknown values specify family, series or shape.
+In postprocessing, these values are carried to the \attr{class} attribute,
+and can thus be effected by CSS.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. The values are modeled after the
+more abstract \LaTeX\ font size switches, rather than point-sizes.
+The values are open-ended for extensibility;
+In postprocessing, these values are carried to the \attr{class} attribute,
+and can thus be effected by CSS.</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.
+In postprocessing, these values are carried to the \attr{class} attribute,
+and can thus be effected by CSS.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="framed">
+ <a:documentation>the kind of frame or outline for the text.</a:documentation>
+ <choice>
+ <value>rectangle</value>
+ <value>underline</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="text_model">
+ <a:documentation>Content model for \elementref{text}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="emph">
+ <element name="emph">
+ <a:documentation>Emphasized text.</a:documentation>
+ <interleave>
+ <ref name="emph_attributes"/>
+ <ref name="emph_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="emph_attributes">
+ <a:documentation>Attributes for \elementref{emph}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="emph_model">
+ <a:documentation>Content model for \elementref{emph}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="acronym">
+ <element name="acronym">
+ <a:documentation>Represents an acronym.</a:documentation>
+ <interleave>
+ <ref name="acronym_attributes"/>
+ <ref name="acronym_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="acronym_attributes">
+ <a:documentation>Attributes for \elementref{acronym}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="name">
+ <a:documentation>should be used to indicate the expansion of the acronym.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="acronym_model">
+ <a:documentation>Content model for \elementref{acronym}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="rule">
+ <element name="rule">
+ <a:documentation>A Rule.</a:documentation>
+ <interleave>
+ <ref name="rule_attributes"/>
+ <ref name="rule_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="rule_attributes">
+ <a:documentation>Attributes for \elementref{rule}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </interleave>
+ </define>
+ <define name="rule_model">
+ <a:documentation>Content model for \elementref{rule}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="ref">
+ <element name="ref">
+ <a:documentation>A hyperlink reference to some other object.
+When converted to HTML, the content would be the content of the anchor.
+The destination can be specified by one of the
+attributes \attr{labelref}, \attr{idref} or \attr{href};
+Missing fields will usually be filled in during postprocessing,
+based on data extracted from the document(s).</a:documentation>
+ <interleave>
+ <ref name="ref_attributes"/>
+ <ref name="ref_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="ref_attributes">
+ <a:documentation>Attributes for \elementref{ref}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="IDREF.attributes">
+ <a:documentation>reference to an internal identifier.</a:documentation>
+ </ref>
+ <optional>
+ <attribute name="labelref">
+ <a:documentation>reference to a LaTeX labelled object;
+See the \attr{labels} attribute of \patternref{Labelled.attributes}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <a:documentation>reference to an arbitrary url.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="show">
+ <a:documentation>a pattern encoding how the text content should be filled in during
+postprocessing, if it is empty.
+It consists of the words
+ \texttt{type} (standing for the object type, eg. Ch.),
+ \texttt{refnum} and \texttt{title}
+mixed with arbitrary characters. The
+It can also be \texttt{fulltitle}, which indicates the title
+with prefix and type if section numbering is enabled.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title">
+ <a:documentation>gives a longer form description of the target,
+this would typically appear as a tooltip in HTML.
+Typically filled in by postprocessor.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="ref_model">
+ <a:documentation>Content model for \elementref{ref}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="anchor">
+ <element name="anchor">
+ <a:documentation>Inline anchor.</a:documentation>
+ <interleave>
+ <ref name="anchor_attributes"/>
+ <ref name="anchor_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="anchor_attributes">
+ <a:documentation>Attributes for \elementref{anchor}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="anchor_model">
+ <a:documentation>Content model for \elementref{anchor}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="cite">
+ <element name="cite">
+ <a:documentation>A container for a bibliographic citation. The model is inline to
+allow arbitrary comments before and after the expected \elementref{bibref}(s)
+which are the specific citation.</a:documentation>
+ <interleave>
+ <ref name="cite_attributes"/>
+ <ref name="cite_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="cite_attributes">
+ <a:documentation>Attributes for \elementref{cite}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="cite_model">
+ <a:documentation>Content model for \elementref{cite}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bibref">
+ <element name="bibref">
+ <a:documentation>A bibliographic citation refering to a specific bibliographic item.</a:documentation>
+ <interleave>
+ <ref name="bibref_attributes"/>
+ <ref name="bibref_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibref_attributes">
+ <a:documentation>Attributes for \elementref{bibref}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="IDREF.attributes"/>
+ <optional>
+ <attribute name="bibrefs">
+ <a:documentation>a comma separated list of bibliographic keys.
+(See the \attr{key} attribute of \elementref{bibitem} and \elementref{bibentry})</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="show">
+ <a:documentation>a pattern encoding how the text content (of an empty bibref) will be filled in.
+Consists of strings \texttt{author}, \texttt{fullauthor}, \texttt{year},
+\texttt{number} and \texttt{title}
+(to be replaced by data from the bibliographic item)
+mixed with arbitrary characters.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separator">
+ <a:documentation>separator between formatted references</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yyseparator">
+ <a:documentation>separator between formatted years when duplicate authors are combined.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bibref_model">
+ <a:documentation>Content model for \elementref{bibref}.</a:documentation>
+ <zeroOrMore>
+ <ref name="bibrefphrase"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bibrefphrase">
+ <element name="bibrefphrase">
+ <a:documentation>A preceding or following phrase used in composing a bibliographic reference,
+such as listing pages or chapter.</a:documentation>
+ <interleave>
+ <ref name="bibrefphrase_attributes"/>
+ <ref name="bibrefphrase_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibrefphrase_attributes">
+ <a:documentation>Attributes for \elementref{bibrefphrase}</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="bibrefphrase_model">
+ <a:documentation>Content model for \elementref{bibrefphrase}</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="note">
+ <element name="note">
+ <a:documentation>Metadata that covers several `out of band' annotations.
+It's content allows both inline and block-level content.</a:documentation>
+ <interleave>
+ <ref name="note_attributes"/>
+ <ref name="note_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="note_attributes">
+ <a:documentation>Attributes for \elementref{note}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="mark">
+ <a:documentation>indicates the desired visible marker to be linked to the note.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the kind of note</a:documentation>
+ <choice>
+ <value>footnote</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="note_model">
+ <a:documentation>Content model for \elementref{note}.</a:documentation>
+ <ref name="Flow.model"/>
+ </define>
+ <!-- should mark be more like label/refnum ? -->
+ <!-- ====================================================================== -->
+ <define name="ERROR">
+ <element name="ERROR">
+ <a:documentation>error object for undefined control sequences, or whatever</a:documentation>
+ <interleave>
+ <ref name="ERROR_attributes"/>
+ <ref name="ERROR_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="ERROR_attributes">
+ <a:documentation>Attributes for \elementref{ERROR}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="ERROR_model">
+ <a:documentation>Content model for \elementref{ERROR}.</a:documentation>
+ <zeroOrMore>
+ <text/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="indexmark">
+ <element name="indexmark">
+ <a:documentation>Metadata to record an indexing position. The content is
+a sequence of \elementref{indexphrase}, each representing a level in
+a multilevel indexing entry.</a:documentation>
+ <interleave>
+ <ref name="indexmark_attributes"/>
+ <ref name="indexmark_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="indexmark_attributes">
+ <a:documentation>Attributes for \elementref{indexmark}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="see_also">
+ <a:documentation>a flattened form (like \attr{key}) of another \elementref{indexmark},
+used to crossreference.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <a:documentation>NOTE: describe this.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="indexmark_model">
+ <a:documentation>Content model for \elementref{indexmark}.</a:documentation>
+ <zeroOrMore>
+ <ref name="indexphrase"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="indexsee"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="indexphrase">
+ <element name="indexphrase">
+ <a:documentation>A phrase within an \elementref{indexmark}</a:documentation>
+ <interleave>
+ <ref name="indexphrase_attributes"/>
+ <ref name="indexphrase_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="indexphrase_attributes">
+ <a:documentation>Attributes for \elementref{indexphrase}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="key">
+ <a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="indexphrase_model">
+ <a:documentation>Content model for \elementref{indexphrase}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <define name="indexsee">
+ <element name="indexsee">
+ <a:documentation>A see-also phrase within an \elementref{indexmark}</a:documentation>
+ <interleave>
+ <ref name="indexsee_attributes"/>
+ <ref name="indexsee_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="indexsee_attributes">
+ <a:documentation>Attributes for \elementref{indexsee}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="key">
+ <a:documentation>a flattened form of the phrase for generating an \attr{ID}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="name">
+ <a:documentation>a name for the see phrase, such as "see also".</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="indexsee_model">
+ <a:documentation>Content model for \elementref{indexsee}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-math.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-math.rng
new file mode 100644
index 00000000000..b88c8d11194
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-math.rng
@@ -0,0 +1,613 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-math.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Inline.class" combine="interleave">
+ <a:documentation>The math module defines LaTeXML's internal representation of mathematical
+content, including the basic math container \elementref{Math}. This element is
+considered inline, as it will be contained within some other block-level
+element, eg. \elementref{equation} for display-math.</a:documentation>
+ <zeroOrMore>
+ <ref name="Math"/>
+ </zeroOrMore>
+ </define>
+ <define name="Math.class">
+ <a:documentation>This class defines the content of the \elementref{Math} element.
+Additionally, it could contain MathML or OpenMath, after postprocessing.</a:documentation>
+ <ref name="XMath"/>
+ </define>
+ <define name="XMath.class">
+ <a:documentation>These elements comprise the internal math representation, being
+the content of the \elementref{XMath} element.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="XMApp"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMTok"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMRef"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMHint"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMArg"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMWrap"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMDual"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMText"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="XMArray"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Math">
+ <element name="Math">
+ <a:documentation>Outer container for all math. This holds the internal
+\elementref{XMath} representation, as well as image data and other representations.</a:documentation>
+ <interleave>
+ <ref name="Math_attributes"/>
+ <ref name="Math_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="Math_attributes">
+ <a:documentation>Attributes for \elementref{Math}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Imageable.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="mode">
+ <a:documentation>display or inline mode.</a:documentation>
+ <choice>
+ <value>display</value>
+ <value>inline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tex">
+ <a:documentation>reconstruction of the \TeX\ that generated the math.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="content-tex">
+ <a:documentation>more semantic version of \attr{tex}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text">
+ <a:documentation>a textified representation of the math.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Math_model">
+ <a:documentation>Content model for \elementref{Math}.</a:documentation>
+ <ref name="Math.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMath.attributes">
+ <interleave>
+ <optional>
+ <attribute name="role">
+ <a:documentation>The role that this item plays in the Grammar.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="open">
+ <a:documentation>an open delimiter to enclose the object;</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close">
+ <a:documentation>an close delimiter to enclose the object;</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="argopen">
+ <a:documentation>an open delimiter to enclose the argument list,
+when this token is applied to arguments with \elementref{XMApp}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="argclose">
+ <a:documentation>a close delimiter to enclose the argument list,
+when this token is applied to arguments with \elementref{XMApp}.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separators">
+ <a:documentation>characters to separate arguments,
+when this token is applied to arguments with \elementref{XMApp}.
+Can be multiple characters for different argument positions;
+the last character is repeated if there aren't enough.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="punctuation">
+ <a:documentation>trailing (presumably non-semantic) punctuation.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="possibleFunction">
+ <a:documentation>an annotation placed by the parser when it suspects this token may be used as a function.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMath">
+ <element name="XMath">
+ <a:documentation>Internal representation of mathematics.</a:documentation>
+ <interleave>
+ <ref name="XMath_attributes"/>
+ <ref name="XMath_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMath_attributes">
+ <a:documentation>Attributes for \elementref{XMath}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="XMath_model">
+ <a:documentation>Content model for \elementref{XMath}.</a:documentation>
+ <ref name="XMath.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMTok">
+ <element name="XMTok">
+ <a:documentation>General mathematical token.</a:documentation>
+ <interleave>
+ <ref name="XMTok_attributes"/>
+ <ref name="XMTok_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMTok_attributes">
+ <a:documentation>Attributes for \elementref{XMTok}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name">
+ <a:documentation>The name of the token, typically the control sequence that created it.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="meaning">
+ <a:documentation>A more semantic name corresponding to the intended meaning,
+such as the OpenMath name.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="omcd">
+ <a:documentation>The OpenMath CD for which \attr{meaning} is a symbol.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <a:documentation>Various random styling information. NOTE This needs to be made consistent.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font">
+ <a:documentation>The font, size a used for the symbol.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>The size for the symbol, not presumed to be meaningful(?)</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>The color (CSS format) for the symbol, not presumed to be meaningful(?)</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+It is a concatenation of (pre|mid|post), which indicates the horizontal
+positioning of the script with relation to it's base, and a counter
+indicating the level. These are used to position the scripts,
+and to pair up aligned sub- and superscripts.
+NOTE: Clarify where this appears: token, base, script operator, apply?</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thickness">
+ <a:documentation>NOTE: How is this used?</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMTok_model">
+ <a:documentation>Content model for \elementref{XMTok}.</a:documentation>
+ <zeroOrMore>
+ <text/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMApp">
+ <element name="XMApp">
+ <a:documentation>Generalized application of a function, operator, whatever (the first child)
+to arguments (the remaining children).
+The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
+ <interleave>
+ <ref name="XMApp_attributes"/>
+ <ref name="XMApp_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMApp_attributes">
+ <a:documentation>Attributes for \elementref{XMApp}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name">
+ <a:documentation>The name of the token, typically the control sequence that created it.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="meaning">
+ <a:documentation>A more semantic name corresponding to the intended meaning,
+such as the OpenMath name.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMApp_model">
+ <a:documentation>Content model for \elementref{XMApp}.</a:documentation>
+ <ref name="XMath.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMDual">
+ <element name="XMDual">
+ <a:documentation>Parallel markup of content (first child) and presentation (second child)
+of a mathematical object.
+Typically, the arguments are shared between the two branches:
+they appear in the content branch, with \attr{id}'s,
+and \elementref{XMRef} is used in the presentation branch</a:documentation>
+ <interleave>
+ <ref name="XMDual_attributes"/>
+ <ref name="XMDual_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMDual_attributes">
+ <a:documentation>Attributes for \elementref{XMDual}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="XMDual_model">
+ <a:documentation>Content model for \elementref{XMDual}.</a:documentation>
+ <ref name="XMath.class"/>
+ <ref name="XMath.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMHint">
+ <element name="XMHint">
+ <a:documentation>Various spacing items, generally ignored in parsing.
+The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
+ <interleave>
+ <ref name="XMHint_attributes"/>
+ <ref name="XMHint_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMHint_attributes">
+ <a:documentation>Attributes for \elementref{XMHint}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="meaning"/>
+ </optional>
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMHint_model">
+ <a:documentation>Content model for \elementref{XMHint}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMText">
+ <element name="XMText">
+ <a:documentation>Text appearing within math.</a:documentation>
+ <interleave>
+ <ref name="XMText_attributes"/>
+ <ref name="XMText_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMText_attributes">
+ <a:documentation>Attributes for \elementref{XMText}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMText_model">
+ <a:documentation>Content model for \elementref{XMText}.</a:documentation>
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMWrap">
+ <element name="XMWrap">
+ <a:documentation>Wrapper for a sequence of tokens used to assert the role of the
+contents in its parent. This element generally disappears after parsing.
+The attributes are a subset of those for \elementref{XMTok}.</a:documentation>
+ <interleave>
+ <ref name="XMWrap_attributes"/>
+ <ref name="XMWrap_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMWrap_attributes">
+ <a:documentation>Attributes for \elementref{XMWrap}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="meaning">
+ <a:documentation>A more semantic name corresponding to the intended meaning,
+such as the OpenMath name.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMWrap_model">
+ <a:documentation>Content model for \elementref{XMWrap}.</a:documentation>
+ <ref name="XMath.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMArg">
+ <element name="XMArg">
+ <a:documentation>Wrapper for an argument to a structured macro.
+It implies that its content can be parsed independently of its parent,
+and thus generally disappears after parsing.</a:documentation>
+ <interleave>
+ <ref name="XMArg_attributes"/>
+ <ref name="XMArg_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMArg_attributes">
+ <a:documentation>Attributes for \elementref{XMArg}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="rule"/>
+ </optional>
+ <optional>
+ <attribute name="scriptpos">
+ <a:documentation>An encoding of the position of this token as a sub/superscript, used
+to handle aligned and nested scripts, both pre and post.
+(See \elementref{XMTok} for details)</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMArg_model">
+ <a:documentation>Content model for \elementref{XMArg}.</a:documentation>
+ <ref name="XMath.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMRef">
+ <element name="XMRef">
+ <a:documentation>Structure sharing element typically used in the presentation
+branch of an \elementref{XMDual} to refer to the arguments present in the content branch.</a:documentation>
+ <interleave>
+ <ref name="XMRef_attributes"/>
+ <ref name="XMRef_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMRef_attributes">
+ <a:documentation>Attributes for \elementref{XMRef}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="IDREF.attributes"/>
+ </interleave>
+ </define>
+ <define name="XMRef_model">
+ <a:documentation>Content model for \elementref{XMRef}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMArray">
+ <!-- The attributes are a subset of those for \elementref{XMTok} or of \elementref{tabular}. -->
+ <element name="XMArray">
+ <a:documentation>Math Array/Alignment structure.</a:documentation>
+ <interleave>
+ <ref name="XMArray_attributes"/>
+ <ref name="XMArray_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMArray_attributes">
+ <a:documentation>Attributes for \elementref{XMArray}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="XMath.attributes"/>
+ <ref name="ID.attributes"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="meaning"/>
+ </optional>
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ <optional>
+ <attribute name="vattach">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMArray_model">
+ <a:documentation>Content model for \elementref{XMArray}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMRow"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMRow">
+ <element name="XMRow">
+ <a:documentation>A row in a math alignment.</a:documentation>
+ <interleave>
+ <ref name="XMRow_attributes"/>
+ <ref name="XMRow_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMRow_attributes">
+ <a:documentation>Attributes for \elementref{XMRow}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="XMRow_model">
+ <a:documentation>Content model for \elementref{XMRow}.</a:documentation>
+ <zeroOrMore>
+ <ref name="XMCell"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="XMCell">
+ <element name="XMCell">
+ <a:documentation>A cell in a row of a math alignment.</a:documentation>
+ <interleave>
+ <ref name="XMCell_attributes"/>
+ <ref name="XMCell_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="XMCell_attributes">
+ <a:documentation>Attributes for \elementref{XMCell}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="colspan">
+ <a:documentation>indicates how many columns this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowpan">
+ <a:documentation>indicates how many rows this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <!--
+ This would have been clearer, but messes up conversion to dtd
+ attribute align { "left" | "right" | "center" | "justify" | text }? &
+ -->
+ <attribute name="align">
+ <a:documentation> specifies the alignment of the content.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <a:documentation>specifies the desired width for the column.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="border">
+ <a:documentation>records a sequence of t or tt, r or rr, b or bb and l or ll
+for borders or doubled borders on any side of the cell.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thead">
+ <a:documentation>whether this cell corresponds to a table head or foot.</a:documentation>
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="XMCell_model">
+ <a:documentation>Content model for \elementref{XMCell}.</a:documentation>
+ <ref name="XMath.class"/>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-para.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-para.rng
new file mode 100644
index 00000000000..5b54f77ddfe
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-para.rng
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-para.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="Para.class" combine="interleave">
+ <a:documentation>This module defines the following `logical' block elements.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="para"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="theorem"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="proof"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="figure"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="table"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="float"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="listing"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Misc.class" combine="interleave">
+ <a:documentation>Additionally, it defines these miscellaneous elements that can appear
+in both inline and block contexts.</a:documentation>
+ <zeroOrMore>
+ <ref name="inline-para"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="para">
+ <element name="para">
+ <a:documentation>A Logical paragraph. It has an \attr{id}, but not a \attr{label}.</a:documentation>
+ <interleave>
+ <ref name="para_attributes"/>
+ <ref name="para_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="para_attributes">
+ <a:documentation>Attributes for \elementref{para}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="para_model">
+ <a:documentation>Content model for \elementref{para}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="inline-para">
+ <element name="inline-para">
+ <a:documentation>An inline para. Actually, can appear in inline or block mode, but
+typesets its contents as para.</a:documentation>
+ <interleave>
+ <ref name="inline-para_attributes"/>
+ <ref name="inline-para_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="inline-para_attributes">
+ <a:documentation>Attributes for \elementref{inline-para}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Positionable.attributes"/>
+ </interleave>
+ </define>
+ <define name="inline-para_model">
+ <a:documentation>Content model for \elementref{inline-para}.</a:documentation>
+ <ref name="Para.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="theorem">
+ <element name="theorem">
+ <a:documentation>A theorem or similar object. The \attr{class} attribute can be used to distinguish
+different kinds of theorem.</a:documentation>
+ <interleave>
+ <ref name="theorem_attributes"/>
+ <ref name="theorem_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="theorem_attributes">
+ <a:documentation>Attributes for \elementref{theorem}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="theorem_model">
+ <a:documentation>Content model for \elementref{theorem}.</a:documentation>
+ <interleave>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="Para.model"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="proof">
+ <element name="proof">
+ <a:documentation>A proof or similar object. The \attr{class} attribute can be used to distinguish
+different kinds of proof.</a:documentation>
+ <interleave>
+ <ref name="proof_attributes"/>
+ <ref name="proof_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="proof_attributes">
+ <a:documentation>Attributes for \elementref{proof}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="proof_model">
+ <a:documentation>Content model for \elementref{proof}.</a:documentation>
+ <interleave>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="Para.model"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Caption.class">
+ <a:documentation>These are the additional elements representing figure and
+table captions.
+NOTE: Could title sensibly be reused here, instead?
+Or, should caption be used for theorem and proof?</a:documentation>
+ <choice>
+ <ref name="caption"/>
+ <ref name="toccaption"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="figure">
+ <element name="figure">
+ <a:documentation>A figure, possibly captioned.</a:documentation>
+ <interleave>
+ <ref name="figure_attributes"/>
+ <ref name="figure_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="figure_attributes">
+ <a:documentation>Attributes for \elementref{figure}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="figure_model">
+ <a:documentation>MiKo: only allowing one caption, is this right? same for table, float, and listing below
+Content model for \elementref{figure}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="figure"/>
+ </zeroOrMore>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="table">
+ <element name="table">
+ <a:documentation>A Table, possibly captioned. This is not necessarily a \elementref{tabular}.</a:documentation>
+ <interleave>
+ <ref name="table_attributes"/>
+ <ref name="table_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="table_attributes">
+ <a:documentation>Attributes for \elementref{table}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="table_model">
+ <a:documentation>Content model for \elementref{table}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="table"/>
+ </zeroOrMore>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="float">
+ <element name="float">
+ <a:documentation>A generic float, possibly captioned, something other than a table, figure or listing</a:documentation>
+ <interleave>
+ <ref name="float_attributes"/>
+ <ref name="float_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="float_attributes">
+ <a:documentation>Attributes for \elementref{float}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the vertical floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="float_model">
+ <a:documentation>Content model for \elementref{float}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="float"/>
+ </zeroOrMore>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="listing">
+ <element name="listing">
+ <a:documentation>A Listing, possibly captioned.</a:documentation>
+ <interleave>
+ <ref name="listing_attributes"/>
+ <ref name="listing_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="listing_attributes">
+ <a:documentation>Attributes for \elementref{listing}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ <ref name="Positionable.attributes"/>
+ <optional>
+ <attribute name="placement">
+ <a:documentation>the floating placement parameter that determines where the object is displayed.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="listing_model">
+ <a:documentation>Content model for \elementref{listing}.</a:documentation>
+ <interleave>
+ <ref name="Block.model"/>
+ <ref name="Caption.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="caption">
+ <element name="caption">
+ <a:documentation>A caption for a \elementref{table} or \elementref{figure}.</a:documentation>
+ <interleave>
+ <ref name="caption_attributes"/>
+ <ref name="caption_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="caption_attributes">
+ <a:documentation>Attributes for \elementref{caption}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="font"/>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. (See \elementref{text})</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="caption_model">
+ <a:documentation>Content model for \elementref{caption},
+basically Inline.model with tag included (normally, but not necessarily, tag would come first).</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="tag"/>
+ </zeroOrMore>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="toccaption">
+ <element name="toccaption">
+ <a:documentation>A short form of \elementref{table} or \elementref{figure} caption,
+used for lists of figures or similar.</a:documentation>
+ <interleave>
+ <ref name="toccaption_attributes"/>
+ <ref name="toccaption_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="toccaption_attributes">
+ <a:documentation>Attributes for \elementref{toccaption}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="toccaption_model">
+ <a:documentation>MiKo: here we allowed multiple tags, but now we can restrict, do we want that?
+Content model for \elementref{toccaption}.</a:documentation>
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ <zeroOrMore>
+ <ref name="tag"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-picture.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-picture.rng
new file mode 100644
index 00000000000..d5f5ea15dc3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-picture.rng
@@ -0,0 +1,594 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-picture.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<!--
+ ======================================================================
+ Picture; Experimental, possibly should evolve to SVG?
+ ======================================================================
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Misc.class" combine="interleave">
+ <a:documentation>This module defines a picture environment, roughly a subset of SVG.
+NOTE: Consider whether it is sensible to drop this and incorporate SVG itself.</a:documentation>
+ <zeroOrMore>
+ <ref name="picture"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Picture.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="g"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="rect"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="line"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="circle"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="path"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="arc"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="wedge"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ellipse"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="polygon"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="bezier"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="parabola"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="curve"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="dots"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="grid"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="clip"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Picture.attributes">
+ <a:documentation>These attributes correspond roughly to SVG, but need documentation.</a:documentation>
+ <interleave>
+ <optional>
+ <attribute name="x"/>
+ </optional>
+ <optional>
+ <attribute name="y"/>
+ </optional>
+ <optional>
+ <attribute name="r"/>
+ </optional>
+ <optional>
+ <attribute name="rx"/>
+ </optional>
+ <optional>
+ <attribute name="ry"/>
+ </optional>
+ <optional>
+ <attribute name="width"/>
+ </optional>
+ <optional>
+ <attribute name="height"/>
+ </optional>
+ <optional>
+ <attribute name="fill"/>
+ </optional>
+ <optional>
+ <attribute name="stroke"/>
+ </optional>
+ <optional>
+ <attribute name="stroke-width"/>
+ </optional>
+ <optional>
+ <attribute name="stroke-dasharray"/>
+ </optional>
+ <optional>
+ <attribute name="transform"/>
+ </optional>
+ <optional>
+ <attribute name="terminators"/>
+ </optional>
+ <optional>
+ <attribute name="arrowlength"/>
+ </optional>
+ <optional>
+ <attribute name="points"/>
+ </optional>
+ <optional>
+ <attribute name="showpoints"/>
+ </optional>
+ <optional>
+ <attribute name="displayedpoints"/>
+ </optional>
+ <optional>
+ <attribute name="arc"/>
+ </optional>
+ <optional>
+ <attribute name="angle1"/>
+ </optional>
+ <optional>
+ <attribute name="angle2"/>
+ </optional>
+ <optional>
+ <attribute name="arcsepA"/>
+ </optional>
+ <optional>
+ <attribute name="arcsepB"/>
+ </optional>
+ <optional>
+ <attribute name="curvature"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="PictureGroup.attributes">
+ <a:documentation>These attributes correspond roughly to SVG, but need documentation.</a:documentation>
+ <interleave>
+ <optional>
+ <attribute name="pos"/>
+ </optional>
+ <optional>
+ <attribute name="framed">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frametype" a:defaultValue="rect">
+ <choice>
+ <value>rect</value>
+ <value>circle</value>
+ <value>oval</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fillframe">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="boxsep"/>
+ </optional>
+ <optional>
+ <attribute name="shadowbox">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="doubleline">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="picture">
+ <element name="picture">
+ <a:documentation>A picture environment.</a:documentation>
+ <interleave>
+ <ref name="picture_attributes"/>
+ <ref name="picture_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="picture_attributes">
+ <a:documentation>Attributes for \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ <ref name="Picture.attributes"/>
+ <ref name="Imageable.attributes"/>
+ <optional>
+ <attribute name="clip">
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseline"/>
+ </optional>
+ <optional>
+ <attribute name="unitlength"/>
+ </optional>
+ <optional>
+ <attribute name="xunitlength"/>
+ </optional>
+ <optional>
+ <attribute name="yunitlength"/>
+ </optional>
+ <optional>
+ <attribute name="tex"/>
+ </optional>
+ <optional>
+ <attribute name="content-tex"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="picture_model">
+ <a:documentation>Content model for \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="Picture.class"/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="g">
+ <element name="g">
+ <a:documentation>A graphical grouping; the content is inherits by the transformations,
+positioning and other properties.</a:documentation>
+ <interleave>
+ <ref name="g_attributes"/>
+ <ref name="g_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="g_attributes">
+ <a:documentation>Attributes for \elementref{g}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ <ref name="PictureGroup.attributes"/>
+ </interleave>
+ </define>
+ <define name="g_model">
+ <a:documentation>Content model for \elementref{g}.</a:documentation>
+ <interleave>
+ <ref name="Picture.class"/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="rect">
+ <element name="rect">
+ <a:documentation>A rectangle within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="rect_attributes"/>
+ <ref name="rect_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="rect_attributes">
+ <a:documentation>Attributes for \elementref{rect}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="rect_model">
+ <a:documentation>Content model for \elementref{rect}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="line">
+ <element name="line">
+ <a:documentation>A line within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="line_attributes"/>
+ <ref name="line_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="line_attributes">
+ <a:documentation>Attributes for \elementref{line}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="line_model">
+ <a:documentation>Content model for \elementref{line}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="polygon">
+ <element name="polygon">
+ <a:documentation>A polygon within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="polygon_attributes"/>
+ <ref name="polygon_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="polygon_attributes">
+ <a:documentation>Attributes for \elementref{polygon}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="polygon_model">
+ <a:documentation>Content model for \elementref{polygon}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="wedge">
+ <element name="wedge">
+ <a:documentation>A wedge within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="wedge_attributes"/>
+ <ref name="wedge_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="wedge_attributes">
+ <a:documentation>Attributes for \elementref{wedge}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="wedge_model">
+ <a:documentation>Content model for \elementref{wedge}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="arc">
+ <element name="arc">
+ <a:documentation>An arc within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="arc_attributes"/>
+ <ref name="arc_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="arc_attributes">
+ <a:documentation>Attributes for \elementref{arc}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="arc_model">
+ <a:documentation>Content model for \elementref{arc}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="circle">
+ <element name="circle">
+ <a:documentation>A circle within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="circle_attributes"/>
+ <ref name="circle_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="circle_attributes">
+ <a:documentation>Attributes for \elementref{circle}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="circle_model">
+ <a:documentation>Content model for \elementref{circle}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="ellipse">
+ <element name="ellipse">
+ <a:documentation>An ellipse within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="ellipse_attributes"/>
+ <ref name="ellipse_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="ellipse_attributes">
+ <a:documentation>Attributes for \elementref{ellipse}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="ellipse_model">
+ <a:documentation>Content model for \elementref{ellipse}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="path">
+ <element name="path">
+ <a:documentation>A path within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="path_attributes"/>
+ <ref name="path_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="path_attributes">
+ <a:documentation>Attributes for \elementref{path}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="path_model">
+ <a:documentation>Content model for \elementref{path}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bezier">
+ <element name="bezier">
+ <a:documentation>A bezier curve within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="bezier_attributes"/>
+ <ref name="bezier_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bezier_attributes">
+ <a:documentation>Attributes for \elementref{bezier}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="bezier_model">
+ <a:documentation>Content model for \elementref{bezier}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="curve">
+ <element name="curve">
+ <a:documentation>A curve within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="curve_attributes"/>
+ <ref name="curve_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="curve_attributes">
+ <a:documentation>Attributes for \elementref{curve}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="curve_model">
+ <a:documentation>Content model for \elementref{curve}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="parabola">
+ <element name="parabola">
+ <a:documentation>A parabola curve within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="parabola_attributes"/>
+ <ref name="parabola_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="parabola_attributes">
+ <a:documentation>Attributes for \elementref{parabola}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="parabola_model">
+ <a:documentation>Content model for \elementref{parabola}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="dots">
+ <element name="dots">
+ <a:documentation>A sequence of dots (?) within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="dots_attributes"/>
+ <ref name="dots_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="dots_attributes">
+ <a:documentation>Attributes for \elementref{dots}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="dots_model">
+ <a:documentation>Content model for \elementref{dots}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="grid">
+ <element name="grid">
+ <a:documentation>A grid within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="grid_attributes"/>
+ <ref name="grid_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="grid_attributes">
+ <a:documentation>Attributes for \elementref{grid}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="grid_model">
+ <a:documentation>Content model for \elementref{grid}.</a:documentation>
+ <empty/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="clip">
+ <element name="clip">
+ <a:documentation>Establishes a clipping region within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="clip_attributes"/>
+ <ref name="clip_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="clip_attributes">
+ <a:documentation>Attributes for \elementref{clip}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="clip_model">
+ <a:documentation>Content model for \elementref{clip}.</a:documentation>
+ <zeroOrMore>
+ <ref name="clippath"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="clippath">
+ <element name="clippath">
+ <a:documentation>Establishes a clipping region within a \elementref{picture}.</a:documentation>
+ <interleave>
+ <ref name="clippath_attributes"/>
+ <ref name="clippath_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="clippath_attributes">
+ <a:documentation>Attributes for \elementref{clippath}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Picture.attributes"/>
+ </interleave>
+ </define>
+ <define name="clippath_model">
+ <a:documentation>Content model for \elementref{clippath}.</a:documentation>
+ <interleave>
+ <ref name="Picture.class"/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-structure.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-structure.rng
new file mode 100644
index 00000000000..dae5c993de1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-structure.rng
@@ -0,0 +1,1039 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-structure.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- ====================================================================== -->
+ <define name="document">
+ <element name="document">
+ <a:documentation>The document root.</a:documentation>
+ <interleave>
+ <ref name="document_attributes"/>
+ <ref name="document_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="document.body.class">
+ <a:documentation>The content allowable as the main body of the document.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsubsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="chapter"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="part"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="document_attributes">
+ <a:documentation>Attributes for \elementref{document}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="document_model">
+ <a:documentation>Content model for \elementref{document}.</a:documentation>
+ <!--
+ (FrontMatter.class & SectionalFrontMatter.class & Meta.class & titlepage*),
+ document.body.class,
+ -->
+ <ref name="BackMatter.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="part">
+ <element name="part">
+ <a:documentation>A part within a document.</a:documentation>
+ <interleave>
+ <ref name="part_attributes"/>
+ <ref name="part_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="part.body.class">
+ <a:documentation>The content allowable as the main body of a part.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="chapter"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="part_attributes">
+ <a:documentation>Attributes for \elementref{part}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="part_model">
+ <a:documentation>Content model for \elementref{part}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="part.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="chapter">
+ <element name="chapter">
+ <a:documentation>A Chapter within a document.</a:documentation>
+ <interleave>
+ <ref name="chapter_attributes"/>
+ <ref name="chapter_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="chapter.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsubsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="chapter_attributes">
+ <a:documentation>Attributes for \elementref{chapter}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="chapter_model">
+ <a:documentation>Content model for \elementref{chapter}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="chapter.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="section">
+ <element name="section">
+ <a:documentation>A Section within a document.</a:documentation>
+ <interleave>
+ <ref name="section_attributes"/>
+ <ref name="section_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="section.body.class">
+ <a:documentation>The content allowable as the main body of a section.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsubsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsection"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="section_attributes">
+ <a:documentation>Attributes for \elementref{section}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="section_model">
+ <a:documentation>Content model for \elementref{section}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="section.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subsection">
+ <element name="subsection">
+ <a:documentation>A Subsection within a document.</a:documentation>
+ <interleave>
+ <ref name="subsection_attributes"/>
+ <ref name="subsection_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="subsection.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsubsection"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="subsection_attributes">
+ <a:documentation>Attributes for \elementref{subsection}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="subsection_model">
+ <a:documentation>Content model for \elementref{subsection}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="subsection.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subsubsection">
+ <element name="subsubsection">
+ <a:documentation>A Subsubsection within a document.</a:documentation>
+ <interleave>
+ <ref name="subsubsection_attributes"/>
+ <ref name="subsubsection_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="subsubsection.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="subsubsection_attributes">
+ <a:documentation>Attributes for \elementref{subsubsection}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="subsubsection_model">
+ <a:documentation>Content model for \elementref{subsubsection}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="subsubsection.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="paragraph">
+ <element name="paragraph">
+ <a:documentation>A Paragraph within a document. This corresponds to a `formal' marked, possibly labelled
+LaTeX Paragraph, in distinction from an unlabelled logical paragraph.</a:documentation>
+ <interleave>
+ <ref name="paragraph_attributes"/>
+ <ref name="paragraph_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="paragraph.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="paragraph_attributes">
+ <a:documentation>Attributes for \elementref{paragraph}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="paragraph_model">
+ <a:documentation>Content model for \elementref{paragraph}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="paragraph.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subparagraph">
+ <element name="subparagraph">
+ <a:documentation>A Subparagraph within a document.</a:documentation>
+ <interleave>
+ <ref name="subparagraph_attributes"/>
+ <ref name="subparagraph_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="subparagraph.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <ref name="Para.model"/>
+ </define>
+ <define name="subparagraph_attributes">
+ <a:documentation>Attributes for \elementref{subparagraph}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="subparagraph_model">
+ <a:documentation>Content model for \elementref{subparagraph}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="subparagraph.body.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="appendix">
+ <element name="appendix">
+ <a:documentation>An Appendix within a document.</a:documentation>
+ <interleave>
+ <ref name="appendix_attributes"/>
+ <ref name="appendix_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="appendix.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsubsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subsection"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="appendix_attributes">
+ <a:documentation>Attributes for \elementref{appendix}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="appendix_model">
+ <a:documentation>Content model for \elementref{appendix}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="appendix.body.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="bibliography">
+ <element name="bibliography">
+ <a:documentation>A Bibliography within a document.</a:documentation>
+ <interleave>
+ <ref name="bibliography_attributes"/>
+ <ref name="bibliography_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bibliography.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <ref name="biblist"/>
+ </interleave>
+ </define>
+ <define name="bibliography_attributes">
+ <a:documentation>Attributes for \elementref{bibliography}.</a:documentation>
+ <interleave>
+ <ref name="Sectional.attributes"/>
+ <optional>
+ <attribute name="files">
+ <a:documentation>the list of bib files used to create the bibliograph.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="bibliography_model">
+ <a:documentation>Content model for \elementref{bibliography}.</a:documentation>
+ <ref name="FrontMatter.class"/>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="bibliography.body.class"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="index">
+ <element name="index">
+ <a:documentation>An Index within a document.</a:documentation>
+ <interleave>
+ <ref name="index_attributes"/>
+ <ref name="index_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="index.body.class">
+ <a:documentation>The content allowable as the main body of a chapter.</a:documentation>
+ <interleave>
+ <ref name="Para.model"/>
+ <zeroOrMore>
+ <ref name="indexlist"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="index_attributes">
+ <a:documentation>Attributes for \elementref{index}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="index_model">
+ <a:documentation>Content model for \elementref{index}.</a:documentation>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="index.body.class"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="indexlist">
+ <element name="indexlist">
+ <a:documentation>A heirarchical index generated. Typically generated during postprocessing
+from the collection of \elementref{indexmark} in the document
+(or document collection).</a:documentation>
+ <interleave>
+ <ref name="indexlist_attributes"/>
+ <ref name="indexlist_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="indexlist_attributes">
+ <a:documentation>Attributes for \elementref{indexlist}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="indexlist_model">
+ <a:documentation>Content model for \elementref{indexlist}.</a:documentation>
+ <zeroOrMore>
+ <ref name="indexentry"/>
+ </zeroOrMore>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="indexentry">
+ <element name="indexentry">
+ <a:documentation>An entry in an \elementref{indexlist} consisting of a phrase, references to
+points in the document where the phrase was found, and possibly
+a nested \elementref{indexlist} represented index levels below this one.</a:documentation>
+ <interleave>
+ <ref name="indexentry_attributes"/>
+ <ref name="indexentry_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="indexentry_attributes">
+ <a:documentation>Attributes for \elementref{indexentry}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="ID.attributes"/>
+ </interleave>
+ </define>
+ <define name="indexentry_model">
+ <a:documentation>Content model for \elementref{indexentry}.</a:documentation>
+ <ref name="indexphrase"/>
+ <optional>
+ <ref name="indexrefs"/>
+ </optional>
+ <optional>
+ <ref name="indexlist"/>
+ </optional>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="indexrefs">
+ <element name="indexrefs">
+ <a:documentation>A container for the references (\elementref{ref}) to where an \elementref{indexphrase} was
+encountered in the document. The model is Inline to allow
+arbitrary text, in addition to the expected \elementref{ref}'s.</a:documentation>
+ <interleave>
+ <ref name="indexrefs_attributes"/>
+ <ref name="indexrefs_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="indexrefs_attributes">
+ <a:documentation>Attributes for \elementref{indexrefs}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="indexrefs_model">
+ <a:documentation>Content model for \elementref{indexrefs}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="title">
+ <element name="title">
+ <a:documentation>The title of a document, section or similar document structure container.</a:documentation>
+ <interleave>
+ <ref name="title_attributes"/>
+ <ref name="title_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="title_attributes">
+ <a:documentation>Attributes for \elementref{title}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="font">
+ <a:documentation>The font prefered for the title.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <a:documentation>Indicates the text size to use. (See \elementref{text})</a:documentation>
+ <choice>
+ <value>Huge</value>
+ <value>huge</value>
+ <value>LARGE</value>
+ <value>Large</value>
+ <value>large</value>
+ <value>normal</value>
+ <value>small</value>
+ <value>footnote</value>
+ <value>tiny</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <a:documentation>the color to use; any CSS compatible color specification.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="title_model">
+ <a:documentation>Content model for \elementref{title},
+basically Inline.model with tag included (normally, but not necessarily, tag would come first).</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="tag"/>
+ </zeroOrMore>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="toctitle">
+ <element name="toctitle">
+ <a:documentation>The short form of a title, for use in tables of contents or similar.</a:documentation>
+ <interleave>
+ <ref name="toctitle_attributes"/>
+ <ref name="toctitle_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="toctitle_attributes">
+ <a:documentation>Attributes for \elementref{toctitle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="toctitle_model">
+ <a:documentation>Content model for \elementref{toctitle}.</a:documentation>
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ <zeroOrMore>
+ <ref name="tag"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="subtitle">
+ <element name="subtitle">
+ <a:documentation>A subtitle, or secondary title.</a:documentation>
+ <interleave>
+ <ref name="subtitle_attributes"/>
+ <ref name="subtitle_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="subtitle_attributes">
+ <a:documentation>Attributes for \elementref{subtitle}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="subtitle_model">
+ <a:documentation>Content model for \elementref{subtitle}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="creator">
+ <element name="creator">
+ <a:documentation>Generalized document creator.</a:documentation>
+ <interleave>
+ <ref name="creator_attributes"/>
+ <ref name="creator_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="Person.class">
+ <a:documentation>The content allowed in authors, editors, etc.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="personname"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="contact"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="creator_attributes">
+ <a:documentation>Attributes for \elementref{creator}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the role of the person in creating the docment.
+Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
+ <choice>
+ <value>author</value>
+ <value>editor</value>
+ <value>translator</value>
+ <value>contributor</value>
+ <value>translator</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="creator_model">
+ <a:documentation>Content model for \elementref{creator}.</a:documentation>
+ <interleave>
+ <ref name="Person.class"/>
+ <ref name="Misc.class"/>
+ </interleave>
+ </define>
+ <!--
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ NOTE: This should be aligned with Bibname.
+ -->
+ <define name="personname">
+ <element name="personname">
+ <a:documentation>A person's name.</a:documentation>
+ <interleave>
+ <ref name="personname_attributes"/>
+ <ref name="personname_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="personname_attributes">
+ <a:documentation>Attributes for \elementref{personname}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="personname_model">
+ <a:documentation>Content model for \elementref{personname}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <define name="contact">
+ <element name="contact">
+ <a:documentation>Generalized contact information for a document creator.
+Note that this element can be repeated to give different types
+of contact information (using \attr{role}) for the same creator.</a:documentation>
+ <interleave>
+ <ref name="contact_attributes"/>
+ <ref name="contact_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="contact_attributes">
+ <a:documentation>Attributes for \elementref{contact}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the type of contact information contained.
+Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
+ <choice>
+ <value>affiliation</value>
+ <value>address</value>
+ <value>current_address</value>
+ <value>email</value>
+ <value>url</value>
+ <value>thanks</value>
+ <value>dedicatory</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="contact_model">
+ <a:documentation>Content model for \elementref{contact}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="date">
+ <element name="date">
+ <a:documentation>Generalized document date.
+Note that this element can be repeated to give the dates
+of different events (using \attr{role}) for the same document.</a:documentation>
+ <interleave>
+ <ref name="date_attributes"/>
+ <ref name="date_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="date_attributes">
+ <a:documentation>Attributes for \elementref{date}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the relevance of the date to the document.
+Commonly useful values are specified, but is open-ended to support extension.</a:documentation>
+ <choice>
+ <value>creation</value>
+ <value>conversion</value>
+ <value>posted</value>
+ <value>received</value>
+ <value>revised</value>
+ <value>accepted</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="date_model">
+ <a:documentation>Content model for \elementref{date}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="abstract">
+ <element name="abstract">
+ <a:documentation>A document abstract.</a:documentation>
+ <interleave>
+ <ref name="abstract_attributes"/>
+ <ref name="abstract_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="abstract_attributes">
+ <a:documentation>Attributes for \elementref{abstract}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ </interleave>
+ </define>
+ <define name="abstract_model">
+ <a:documentation>Content model for \elementref{abstract}.</a:documentation>
+ <ref name="Block.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="acknowledgements">
+ <element name="acknowledgements">
+ <a:documentation>Acknowledgements for the document.</a:documentation>
+ <interleave>
+ <ref name="acknowledgements_attributes"/>
+ <ref name="acknowledgements_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="acknowledgements_attributes">
+ <a:documentation>Attributes for \elementref{acknowledgements}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ </interleave>
+ </define>
+ <define name="acknowledgements_model">
+ <a:documentation>Content model for \elementref{acknowledgements}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="keywords">
+ <element name="keywords">
+ <a:documentation>Keywords for the document. The content is freeform.</a:documentation>
+ <interleave>
+ <ref name="keywords_attributes"/>
+ <ref name="keywords_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="keywords_attributes">
+ <a:documentation>Attributes for \elementref{keywords}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ </interleave>
+ </define>
+ <define name="keywords_model">
+ <a:documentation>Content model for \elementref{keywords}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="classification">
+ <element name="classification">
+ <a:documentation>A classification of the document.</a:documentation>
+ <interleave>
+ <ref name="classification_attributes"/>
+ <ref name="classification_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="classification_attributes">
+ <a:documentation>Attributes for \elementref{classification}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="scheme">
+ <a:documentation>indicates what classification scheme was used.</a:documentation>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="classification_model">
+ <a:documentation>Content model for \elementref{classification}.</a:documentation>
+ <ref name="Inline.model"/>
+ </define>
+ <!--
+ ======================================================================
+ Fallback
+ -->
+ <define name="titlepage">
+ <element name="titlepage">
+ <a:documentation>block of random stuff marked as a titlepage</a:documentation>
+ <interleave>
+ <ref name="titlepage_attributes"/>
+ <ref name="titlepage_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="titlepage_attributes">
+ <a:documentation>Attributes for \elementref{titlepage}.</a:documentation>
+ <ref name="Sectional.attributes"/>
+ </define>
+ <define name="titlepage_model">
+ <a:documentation>Content model for \elementref{titlepage}.</a:documentation>
+ <interleave>
+ <ref name="FrontMatter.class"/>
+ <ref name="SectionalFrontMatter.class"/>
+ <ref name="Block.class"/>
+ </interleave>
+ </define>
+ <!--
+ ======================================================================
+ TOC & Navigation; generally added by postprocessing
+ -->
+ <define name="TOC">
+ <element name="TOC">
+ <a:documentation>(Generalized) Table Of Contents, represents table of contents
+as well as list of figures, tables, and other such things.
+This will generally be placed by a \cs{tableofcontents} command
+and filled in by postprocessing.</a:documentation>
+ <interleave>
+ <ref name="TOC_attributes"/>
+ <ref name="TOC_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="TOC_attributes">
+ <a:documentation>Attributes for \elementref{TOC}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="FrontMatter.attributes"/>
+ <optional>
+ <attribute name="role">
+ <a:documentation>indicates the kind of list</a:documentation>
+ <choice>
+ <value>contents</value>
+ <value>figures</value>
+ <value>tables</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="select">
+ <a:documentation>indicates what kind of document elements to list, in the form of
+one or more tags such as \texttt{ltx:chapter} separated by \texttt{|}
+(suggestive of an xpath expression).</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="format">
+ <a:documentation>indicates how to format the listing</a:documentation>
+ <choice>
+ <value>normal</value>
+ <value>short</value>
+ <value>veryshort</value>
+ <text/>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="TOC_model">
+ <a:documentation>Content model for \elementref{TOC}.</a:documentation>
+ <optional>
+ <ref name="toclist"/>
+ </optional>
+ </define>
+ <define name="toclist">
+ <element name="toclist">
+ <a:documentation>The actual table of contents list, filled in.</a:documentation>
+ <interleave>
+ <ref name="toclist_attributes"/>
+ <ref name="toclist_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="toclist_attributes">
+ <a:documentation>Attributes for \elementref{toclist}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="toclist_model">
+ <a:documentation>Content model for \elementref{toclist}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tocentry"/>
+ </zeroOrMore>
+ </define>
+ <define name="tocentry">
+ <element name="tocentry">
+ <a:documentation>An entry in a \elementref{toclist}.</a:documentation>
+ <interleave>
+ <ref name="tocentry_attributes"/>
+ <ref name="tocentry_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="tocentry_attributes">
+ <a:documentation>Attributes for \elementref{tocentry}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tocentry_model">
+ <a:documentation>Content model for \elementref{tocentry}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="ref"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="toclist"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="navigation">
+ <element name="navigation">
+ <a:documentation>Records navigation cross-referencing information, links from the
+current page or document to related ones, up, down, previous, next,
+and so forth; these relations are recorded in the \attr{class} attribute
+of the \elementref{ref}.
+
+\emph{Really?}; overload the class attribute!?
+This should be \attr{role}!
+Could also use a navigation name text or something?</a:documentation>
+ <interleave>
+ <ref name="navigation_attributes"/>
+ <ref name="navigation_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="navigation_attributes">
+ <a:documentation>Attributes for \elementref{navigation}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="navigation_model">
+ <a:documentation>Content model for \elementref{navigation}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="ref"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="TOC"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="Sectional.attributes">
+ <a:documentation>Attributes shared by all sectional elements</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <ref name="Labelled.attributes"/>
+ </interleave>
+ </define>
+ <define name="FrontMatter.attributes">
+ <a:documentation>Attributes for other elements that can be used in frontmatter.</a:documentation>
+ <optional>
+ <attribute name="name">
+ <a:documentation>Records the name of the type of object this is to be used when composing the
+presentation. The value of this attribute is often set by language localization packages.</a:documentation>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SectionalFrontMatter.class">
+ <a:documentation>The content allowed for the front matter of each sectional unit,
+and the document.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="title"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="toctitle"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="creator"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="FrontMatter.class">
+ <a:documentation>The content allowed (in addition to \patternref{SectionalFrontMatter.class})
+for the front matter of a document.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="subtitle"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="date"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="abstract"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="acknowledgements"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="keywords"/>
+ </zeroOrMore>
+ <ref name="classification"/>
+ </interleave>
+ </define>
+ <define name="BackMatter.class">
+ <a:documentation>The content allowed a the end of a document.
+Note that this includes random trailing Block and Para material,
+to support articles with figures and similar data appearing `at end'.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="bibliography"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="appendix"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="index"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="acknowledgements"/>
+ </zeroOrMore>
+ <ref name="Para.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <define name="Para.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="TOC"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="navigation"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-tabular.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-tabular.rng
new file mode 100644
index 00000000000..c7c653612a4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML-tabular.rng
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML-tabular.rnc |
+ | RelaxNG model for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="Misc.class" combine="interleave">
+ <a:documentation>This module defines the basic tabular, or alignment, structure.
+It is roughly parallel to the HTML model.</a:documentation>
+ <zeroOrMore>
+ <ref name="tabular"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tabular">
+ <element name="tabular">
+ <a:documentation>An alignment structure corresponding to tabular or various similar forms.
+The model is basically a copy of HTML4's table.</a:documentation>
+ <interleave>
+ <ref name="tabular_attributes"/>
+ <ref name="tabular_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="tabular_attributes">
+ <a:documentation>Attributes for \elementref{tabular}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="vattach">
+ <a:documentation>which row's baseline aligns with the container's baseline.</a:documentation>
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <a:documentation>the desired width of the tabular.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="tabular_model">
+ <a:documentation>MiKo: this can be tightened. Is it really true that we have more than one body?
+Content model for \elementref{tabular}.</a:documentation>
+ <interleave>
+ <zeroOrMore>
+ <ref name="thead"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tfoot"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tbody"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="thead">
+ <element name="thead">
+ <a:documentation>A container for a set of rows that correspond to the header of the tabular.</a:documentation>
+ <interleave>
+ <ref name="thead_attributes"/>
+ <ref name="thead_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="thead_attributes">
+ <a:documentation>Attributes for \elementref{thead}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="thead_model">
+ <a:documentation>Content model for \elementref{thead}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tfoot">
+ <element name="tfoot">
+ <a:documentation>A container for a set of rows that correspond to the footer of the tabular.</a:documentation>
+ <interleave>
+ <ref name="tfoot_attributes"/>
+ <ref name="tfoot_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="tfoot_attributes">
+ <a:documentation>Attributes for \elementref{tfoot}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tfoot_model">
+ <a:documentation>Content model for \elementref{tfoot}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tbody">
+ <element name="tbody">
+ <a:documentation>A container for a set of rows corresponding to the body of the tabular.</a:documentation>
+ <interleave>
+ <ref name="tbody_attributes"/>
+ <ref name="tbody_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="tbody_attributes">
+ <a:documentation>Attributes for \elementref{tbody}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tbody_model">
+ <a:documentation>Content model for \elementref{tbody}.</a:documentation>
+ <zeroOrMore>
+ <ref name="tr"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="tr">
+ <element name="tr">
+ <a:documentation>A row of a tabular.</a:documentation>
+ <interleave>
+ <ref name="tr_attributes"/>
+ <ref name="tr_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="tr_attributes">
+ <a:documentation>Attributes for \elementref{tr}.</a:documentation>
+ <ref name="Common.attributes"/>
+ </define>
+ <define name="tr_model">
+ <a:documentation>Content model for \elementref{tr}.</a:documentation>
+ <zeroOrMore>
+ <ref name="td"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="td">
+ <element name="td">
+ <a:documentation>A cell in a row of a tabular.</a:documentation>
+ <interleave>
+ <ref name="td_attributes"/>
+ <ref name="td_model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="td_attributes">
+ <a:documentation>Attributes for \elementref{td}.</a:documentation>
+ <interleave>
+ <ref name="Common.attributes"/>
+ <optional>
+ <attribute name="colspan">
+ <a:documentation>indicates how many columns this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowspan">
+ <a:documentation>indicates how many rows this cell spans or covers.</a:documentation>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <!--
+ This would have been clearer, but messes up conversion to dtd
+ attribute align { "left" | "right" | "center" | "justify" | text }? &
+ -->
+ <attribute name="align">
+ <a:documentation> specifies the alignment of the content.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <a:documentation>specifies the desired width for the column.</a:documentation>
+ <ref name="Length.type"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="border">
+ <a:documentation>records a sequence of t or tt, r or rr, b or bb and l or ll
+for borders or doubled borders on any side of the cell.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thead">
+ <a:documentation>whether this cell corresponds to a table head or foot.</a:documentation>
+ <data type="boolean"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="td_model">
+ <a:documentation>Content model for \elementref{td}.</a:documentation>
+ <ref name="Flow.model"/>
+ </define>
+</grammar>
+<!-- ====================================================================== -->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML.rng b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML.rng
new file mode 100644
index 00000000000..646aea4b6ce
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/LaTeXML.rng
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | LaTeXML.rnc |
+ | Document Type for LaTeXML generated documents |
+ |=====================================================================|
+ | Part of LaTeXML: |
+ | Public domain software, produced as part of work done by the |
+ | United States Government & not subject to copyright in the US. |
+ |=====================================================================|
+ | Bruce Miller <bruce.miller@nist.gov> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar xmlns:svg="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="LaTeXML-common.rng"/>
+ <include href="LaTeXML-inline.rng"/>
+ <include href="LaTeXML-block.rng"/>
+ <include href="LaTeXML-para.rng"/>
+ <include href="LaTeXML-math.rng"/>
+ <include href="LaTeXML-tabular.rng"/>
+ <include href="LaTeXML-picture.rng"/>
+ <include href="LaTeXML-structure.rng"/>
+ <include href="LaTeXML-bib.rng"/>
+ <define name="Inline.model">
+ <a:documentation>Combined model for inline content.</a:documentation>
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <define name="Block.model">
+ <a:documentation>Combined model for physical block-level content.</a:documentation>
+ <interleave>
+ <ref name="Block.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <define name="Flow.model">
+ <a:documentation>Combined model for general flow containing both inline and block level content.</a:documentation>
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Block.class"/>
+ <ref name="Misc.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <define name="Para.model">
+ <a:documentation>Combined model for logical block-level context.</a:documentation>
+ <interleave>
+ <ref name="Para.class"/>
+ <ref name="Meta.class"/>
+ </interleave>
+ </define>
+ <start>
+ <ref name="document"/>
+ </start>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/MARCRelators.rng b/Master/texmf-dist/source/latex/stex/schema/rng/MARCRelators.rng
new file mode 100644
index 00000000000..44a616795dd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/MARCRelators.rng
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- the MARC relator set; see http://www.loc.gov/marc/relators -->
+ <define name="MARCRelators">
+ <choice>
+ <value>act</value>
+ <value>adp</value>
+ <value>aft</value>
+ <value>ann</value>
+ <value>ant</value>
+ <value>app</value>
+ <value>aqt</value>
+ <value>arc</value>
+ <value>arr</value>
+ <value>art</value>
+ <value>asg</value>
+ <value>asn</value>
+ <value>att</value>
+ <value>auc</value>
+ <value>aud</value>
+ <value>aui</value>
+ <value>aus</value>
+ <value>aut</value>
+ <value>bdd</value>
+ <value>bjd</value>
+ <value>bkd</value>
+ <value>bkp</value>
+ <value>bnd</value>
+ <value>bpd</value>
+ <value>bsl</value>
+ <value>ccp</value>
+ <value>chr</value>
+ <value>clb</value>
+ <value>cli</value>
+ <value>cll</value>
+ <value>clt</value>
+ <value>cmm</value>
+ <value>cmp</value>
+ <value>cmt</value>
+ <value>cnd</value>
+ <value>cns</value>
+ <value>coe</value>
+ <value>col</value>
+ <value>com</value>
+ <value>cos</value>
+ <value>cot</value>
+ <value>cov</value>
+ <value>cpc</value>
+ <value>cpe</value>
+ <value>cph</value>
+ <value>cpl</value>
+ <value>cpt</value>
+ <value>cre</value>
+ <value>crp</value>
+ <value>crr</value>
+ <value>csl</value>
+ <value>csp</value>
+ <value>cst</value>
+ <value>ctb</value>
+ <value>cte</value>
+ <value>ctg</value>
+ <value>ctr</value>
+ <value>cts</value>
+ <value>ctt</value>
+ <value>cur</value>
+ <value>cwt</value>
+ <value>dfd</value>
+ <value>dfe</value>
+ <value>dft</value>
+ <value>dgg</value>
+ <value>dis</value>
+ <value>dln</value>
+ <value>dnc</value>
+ <value>dnr</value>
+ <value>dpc</value>
+ <value>dpt</value>
+ <value>drm</value>
+ <value>drt</value>
+ <value>dsr</value>
+ <value>dst</value>
+ <value>dte</value>
+ <value>dto</value>
+ <value>dub</value>
+ <value>edt</value>
+ <value>egr</value>
+ <value>elt</value>
+ <value>eng</value>
+ <value>etr</value>
+ <value>exp</value>
+ <value>fac</value>
+ <value>flm</value>
+ <value>fmo</value>
+ <value>fnd</value>
+ <value>fpy</value>
+ <value>frg</value>
+ <value>hnr</value>
+ <value>hst</value>
+ <value>ill</value>
+ <value>ilu</value>
+ <value>ins</value>
+ <value>inv</value>
+ <value>itr</value>
+ <value>ive</value>
+ <value>ivr</value>
+ <value>lbt</value>
+ <value>lee</value>
+ <value>lel</value>
+ <value>len</value>
+ <value>let</value>
+ <value>lie</value>
+ <value>lil</value>
+ <value>lit</value>
+ <value>lsa</value>
+ <value>lse</value>
+ <value>lso</value>
+ <value>ltg</value>
+ <value>lyr</value>
+ <value>mdc</value>
+ <value>mod</value>
+ <value>mon</value>
+ <value>mrk</value>
+ <value>mte</value>
+ <value>mus</value>
+ <value>nrt</value>
+ <value>opn</value>
+ <value>org</value>
+ <value>orm</value>
+ <value>oth</value>
+ <value>own</value>
+ <value>pat</value>
+ <value>pbd</value>
+ <value>pbl</value>
+ <value>pfr</value>
+ <value>pht</value>
+ <value>plt</value>
+ <value>pop</value>
+ <value>ppm</value>
+ <value>prc</value>
+ <value>prd</value>
+ <value>prf</value>
+ <value>prg</value>
+ <value>prm</value>
+ <value>pro</value>
+ <value>prt</value>
+ <value>pta</value>
+ <value>pte</value>
+ <value>ptf</value>
+ <value>pth</value>
+ <value>ptt</value>
+ <value>rbr</value>
+ <value>rce</value>
+ <value>rcp</value>
+ <value>red</value>
+ <value>ren</value>
+ <value>res</value>
+ <value>rev</value>
+ <value>rpt</value>
+ <value>rpy</value>
+ <value>rse</value>
+ <value>rsp</value>
+ <value>rst</value>
+ <value>rth</value>
+ <value>rtm</value>
+ <value>sad</value>
+ <value>sce</value>
+ <value>scl</value>
+ <value>scr</value>
+ <value>sec</value>
+ <value>sgn</value>
+ <value>sng</value>
+ <value>spk</value>
+ <value>spn</value>
+ <value>spy</value>
+ <value>srv</value>
+ <value>stl</value>
+ <value>stn</value>
+ <value>str</value>
+ <value>ths</value>
+ <value>trc</value>
+ <value>trl</value>
+ <value>tyd</value>
+ <value>tyg</value>
+ <value>voc</value>
+ <value>wam</value>
+ <value>wdc</value>
+ <value>wde</value>
+ <value>wit</value>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/Makefile b/Master/texmf-dist/source/latex/stex/schema/rng/Makefile
new file mode 100644
index 00000000000..051561e50af
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/Makefile
@@ -0,0 +1,23 @@
+RNCDIR = ../rnc
+BUT.rnc =
+OMDOC.rnc = $(shell ls $(RNCDIR)/omdoc/*rnc)
+LATEXML.rnc = $(shell ls $(RNCDIR)/LaTeXML/*rnc)
+SRC.rnc = $(RNCDIR)/omdoc+ltxml.rnc #$(filter-out $(BUT.rnc), $(shell ls $(RNCDIR)/*.rnc))
+SRC.rng = $(SRC.rnc:%.rnc=%.rng)
+
+all: $(SRC.rng) #$(TARGET.xsd)
+
+clean:
+ rm -f *~
+distclean: clean
+
+# for the moment we do not install
+# install: $(SRC.rnc) $(SRC.rng)
+# cp $(SRC.rnc) $(SRC.rng) $(HOME)/vc/svn/omdoc.org/www/rnc
+
+test:
+
+$(SRC.rng): %.rng: %.rnc $(OMDOC.rnc) $(LATEXML.rnc)
+# rnc2rng $< $@
+ trang -I rnc -O rng $< $@
+ mv ../rnc/*.rng .
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/creativecommons.rng b/Master/texmf-dist/source/latex/stex/schema/rng/creativecommons.rng
new file mode 100644
index 00000000000..3b5080e9653
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/creativecommons.rng
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG for Creative Commons License Specifications
+ $Id: creativecommons.rnc 8550 2009-11-07 06:38:23Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/trunk/schema/rnc/pragmatic/creativecommons.rnc $
+ Copyright (c) 2008 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://creativecommons.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="iana.tld">
+ <choice>
+ <value>ac</value>
+ <value>ad</value>
+ <value>ae</value>
+ <value>af</value>
+ <value>ag</value>
+ <value>ai</value>
+ <value>al</value>
+ <value>am</value>
+ <value>an</value>
+ <value>ao</value>
+ <value>aq</value>
+ <value>ar</value>
+ <value>as</value>
+ <value>at</value>
+ <value>au</value>
+ <value>aw</value>
+ <value>ax</value>
+ <value>az</value>
+ <value>ba</value>
+ <value>bb</value>
+ <value>bd</value>
+ <value>be</value>
+ <value>bf</value>
+ <value>bg</value>
+ <value>bh</value>
+ <value>bi</value>
+ <value>bj</value>
+ <value>bm</value>
+ <value>bn</value>
+ <value>bo</value>
+ <value>br</value>
+ <value>bs</value>
+ <value>bt</value>
+ <value>bv</value>
+ <value>bw</value>
+ <value>by</value>
+ <value>bz</value>
+ <value>ca</value>
+ <value>cc</value>
+ <value>cd</value>
+ <value>cf</value>
+ <value>cg</value>
+ <value>ch</value>
+ <value>ci</value>
+ <value>ck</value>
+ <value>cl</value>
+ <value>cm</value>
+ <value>cn</value>
+ <value>co</value>
+ <value>cr</value>
+ <value>cs</value>
+ <value>cu</value>
+ <value>cv</value>
+ <value>cx</value>
+ <value>cy</value>
+ <value>cz</value>
+ <value>de</value>
+ <value>dj</value>
+ <value>dk</value>
+ <value>dm</value>
+ <value>do</value>
+ <value>dz</value>
+ <value>ec</value>
+ <value>ee</value>
+ <value>eg</value>
+ <value>eh</value>
+ <value>er</value>
+ <value>es</value>
+ <value>et</value>
+ <value>fi</value>
+ <value>fj</value>
+ <value>fk</value>
+ <value>fm</value>
+ <value>fo</value>
+ <value>fr</value>
+ <value>ga</value>
+ <value>gb</value>
+ <value>gd</value>
+ <value>ge</value>
+ <value>gf</value>
+ <value>gg</value>
+ <value>gh</value>
+ <value>gi</value>
+ <value>gl</value>
+ <value>gm</value>
+ <value>gn</value>
+ <value>gp</value>
+ <value>gq</value>
+ <value>gr</value>
+ <value>gs</value>
+ <value>gt</value>
+ <value>gu</value>
+ <value>gw</value>
+ <value>gy</value>
+ <value>hk</value>
+ <value>hm</value>
+ <value>hn</value>
+ <value>hr</value>
+ <value>ht</value>
+ <value>hu</value>
+ <value>id</value>
+ <value>ie</value>
+ <value>il</value>
+ <value>im</value>
+ <value>in</value>
+ <value>io</value>
+ <value>iq</value>
+ <value>ir</value>
+ <value>is</value>
+ <value>it</value>
+ <value>je</value>
+ <value>jm</value>
+ <value>jo</value>
+ <value>jp</value>
+ <value>ke</value>
+ <value>kg</value>
+ <value>kh</value>
+ <value>ki</value>
+ <value>km</value>
+ <value>kn</value>
+ <value>kp</value>
+ <value>kr</value>
+ <value>kw</value>
+ <value>ky</value>
+ <value>kz</value>
+ <value>la</value>
+ <value>lb</value>
+ <value>lc</value>
+ <value>li</value>
+ <value>lk</value>
+ <value>lr</value>
+ <value>ls</value>
+ <value>lt</value>
+ <value>lu</value>
+ <value>lv</value>
+ <value>ly</value>
+ <value>ma</value>
+ <value>mc</value>
+ <value>md</value>
+ <value>mg</value>
+ <value>mh</value>
+ <value>mk</value>
+ <value>ml</value>
+ <value>mm</value>
+ <value>mn</value>
+ <value>mo</value>
+ <value>mp</value>
+ <value>mq</value>
+ <value>mr</value>
+ <value>ms</value>
+ <value>mt</value>
+ <value>mu</value>
+ <value>mv</value>
+ <value>mw</value>
+ <value>mx</value>
+ <value>my</value>
+ <value>mz</value>
+ <value>na</value>
+ <value>nc</value>
+ <value>ne</value>
+ <value>nf</value>
+ <value>ng</value>
+ <value>ni</value>
+ <value>nl</value>
+ <value>no</value>
+ <value>np</value>
+ <value>nr</value>
+ <value>nu</value>
+ <value>nz</value>
+ <value>om</value>
+ <value>pa</value>
+ <value>pe</value>
+ <value>pf</value>
+ <value>pg</value>
+ <value>ph</value>
+ <value>pk</value>
+ <value>pl</value>
+ <value>pm</value>
+ <value>pn</value>
+ <value>pr</value>
+ <value>ps</value>
+ <value>pt</value>
+ <value>pw</value>
+ <value>py</value>
+ <value>qa</value>
+ <value>re</value>
+ <value>ro</value>
+ <value>ru</value>
+ <value>rw</value>
+ <value>sa</value>
+ <value>sb</value>
+ <value>sc</value>
+ <value>sd</value>
+ <value>se</value>
+ <value>sg</value>
+ <value>sh</value>
+ <value>si</value>
+ <value>sj</value>
+ <value>sk</value>
+ <value>sl</value>
+ <value>sm</value>
+ <value>sn</value>
+ <value>so</value>
+ <value>sr</value>
+ <value>st</value>
+ <value>sv</value>
+ <value>sy</value>
+ <value>sz</value>
+ <value>tc</value>
+ <value>td</value>
+ <value>tf</value>
+ <value>tg</value>
+ <value>th</value>
+ <value>tj</value>
+ <value>tk</value>
+ <value>tl</value>
+ <value>tm</value>
+ <value>tn</value>
+ <value>to</value>
+ <value>tp</value>
+ <value>tr</value>
+ <value>tt</value>
+ <value>tv</value>
+ <value>tw</value>
+ <value>tz</value>
+ <value>ua</value>
+ <value>ug</value>
+ <value>uk</value>
+ <value>um</value>
+ <value>us</value>
+ <value>uy</value>
+ <value>uz</value>
+ <value>va</value>
+ <value>vc</value>
+ <value>ve</value>
+ <value>vg</value>
+ <value>vi</value>
+ <value>vn</value>
+ <value>vu</value>
+ <value>wf</value>
+ <value>ws</value>
+ <value>ye</value>
+ <value>yt</value>
+ <value>yu</value>
+ <value>za</value>
+ <value>zm</value>
+ <value>zw</value>
+ </choice>
+ </define>
+ <define name="license.attribs">
+ <interleave>
+ <optional>
+ <attribute name="jurisdiction">
+ <ref name="iana.tld"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="version">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="license.model">
+ <ref name="permissions"/>
+ <ref name="prohibitions"/>
+ <ref name="requirements"/>
+ <ref name="description"/>
+ </define>
+ <define name="license">
+ <element name="license">
+ <interleave>
+ <ref name="license.attribs"/>
+ <ref name="license.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="permissions.attribs">
+ <interleave>
+ <attribute name="reproduction">
+ <choice>
+ <value>permitted</value>
+ <value> prohibited</value>
+ </choice>
+ </attribute>
+ <attribute name="distribution">
+ <choice>
+ <value>permitted</value>
+ <value> prohibited</value>
+ </choice>
+ </attribute>
+ <attribute name="derivative_works">
+ <choice>
+ <value>permitted</value>
+ <value>prohibited</value>
+ </choice>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="permissions.model">
+ <ref name="description"/>
+ </define>
+ <define name="permissions">
+ <element name="permissions">
+ <interleave>
+ <ref name="permissions.attribs"/>
+ <ref name="permissions.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="prohibitions.attribs">
+ <attribute name="commercial_use">
+ <choice>
+ <value>prohibited</value>
+ <value>permitted</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="prohibitions.model">
+ <ref name="description"/>
+ </define>
+ <define name="prohibitions">
+ <element name="prohibitions">
+ <interleave>
+ <ref name="prohibitions.attribs"/>
+ <ref name="prohibitions.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="requirements.attribs">
+ <interleave>
+ <attribute name="notice">
+ <choice>
+ <value>required</value>
+ <value>not_required</value>
+ </choice>
+ </attribute>
+ <attribute name="attribution">
+ <choice>
+ <value>required</value>
+ <value>not_required</value>
+ </choice>
+ </attribute>
+ <attribute name="copyleft">
+ <choice>
+ <value>required</value>
+ <value>not_required</value>
+ </choice>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="requirements.model">
+ <ref name="description"/>
+ </define>
+ <define name="requirements">
+ <element name="requirements">
+ <interleave>
+ <ref name="requirements.attribs"/>
+ <ref name="requirements.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="description.attribs">
+ <empty/>
+ </define>
+ <define name="description.model">
+ <text/>
+ </define>
+ <define name="description">
+ <element name="description">
+ <interleave>
+ <ref name="description.attribs"/>
+ <ref name="description.model"/>
+ </interleave>
+ </element>
+ </define>
+ <start>
+ <ref name="license"/>
+ </start>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/dublincore.rng b/Master/texmf-dist/source/latex/stex/schema/rng/dublincore.rng
new file mode 100644
index 00000000000..e9841803f4d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/dublincore.rng
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for the Dublin Core elements
+ $Id: dublincore.rnc 8550 2009-11-07 06:38:23Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/trunk/schema/rnc/pragmatic/dublincore.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2008 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://purl.org/dc/elements/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="dc.person">
+ <a:documentation>the various content models, specialize for integration</a:documentation>
+ <text/>
+ </define>
+ <define name="dc.publisher">
+ <text/>
+ </define>
+ <define name="dc.text">
+ <text/>
+ </define>
+ <define name="dc.inline">
+ <text/>
+ </define>
+ <define name="dc.format">
+ <text/>
+ </define>
+ <define name="dc.source">
+ <text/>
+ </define>
+ <define name="dc.language">
+ <text/>
+ </define>
+ <define name="dc.rights">
+ <text/>
+ </define>
+ <define name="dc.relation">
+ <text/>
+ </define>
+ <define name="dc.date">
+ <data type="dateTime"/>
+ </define>
+ <define name="dc.type">
+ <text/>
+ </define>
+ <define name="dc.identifier">
+ <text/>
+ </define>
+ <!-- the model of the Dublin Metadata initiative (http://purl.org/dc) -->
+ <start>
+ <interleave>
+ <zeroOrMore>
+ <ref name="contributor"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="creator"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="rights"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subject"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="title"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="description"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="publisher"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="date"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="type"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="format"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="identifier"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="source"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="language"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="relation"/>
+ </zeroOrMore>
+ </interleave>
+ </start>
+ <define name="contributor">
+ <element name="contributor">
+ <ref name="dc.person"/>
+ </element>
+ </define>
+ <define name="creator">
+ <element name="creator">
+ <ref name="dc.person"/>
+ </element>
+ </define>
+ <define name="title">
+ <element name="title">
+ <ref name="dc.inline"/>
+ </element>
+ </define>
+ <define name="subject">
+ <element name="subject">
+ <ref name="dc.inline"/>
+ </element>
+ </define>
+ <define name="description">
+ <element name="description">
+ <ref name="dc.text"/>
+ </element>
+ </define>
+ <define name="publisher">
+ <element name="publisher">
+ <ref name="dc.publisher"/>
+ </element>
+ </define>
+ <define name="type">
+ <element name="type">
+ <ref name="dc.type"/>
+ </element>
+ </define>
+ <define name="format">
+ <element name="format">
+ <ref name="dc.format"/>
+ </element>
+ </define>
+ <define name="source">
+ <element name="source">
+ <ref name="dc.source"/>
+ </element>
+ </define>
+ <define name="language">
+ <element name="language">
+ <ref name="dc.language"/>
+ </element>
+ </define>
+ <define name="relation">
+ <element name="relation">
+ <ref name="dc.relation"/>
+ </element>
+ </define>
+ <define name="rights">
+ <element name="rights">
+ <ref name="dc.rights"/>
+ </element>
+ </define>
+ <define name="date">
+ <element name="date">
+ <ref name="dc.date"/>
+ </element>
+ </define>
+ <define name="identifier">
+ <element name="identifier">
+ <ref name="dc.identifier"/>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-cds-pragmatic.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-cds-pragmatic.rng
new file mode 100644
index 00000000000..4c46d7ce35d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-cds-pragmatic.rng
@@ -0,0 +1,2899 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="opel.application" combine="choice">
+ <ref name="lcm_arith1_elt"/>
+ </define>
+ <define name="lcm_arith1_elt" combine="choice">
+ <element name="m:lcm">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="lcm_arith1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="gcd_arith1_elt"/>
+ </define>
+ <define name="gcd_arith1_elt" combine="choice">
+ <element name="m:gcd">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="gcd_arith1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="plus_arith1_elt"/>
+ </define>
+ <define name="plus_arith1_elt" combine="choice">
+ <element name="m:plus">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="minus_arith1_elt"/>
+ </define>
+ <define name="minus_arith1_elt" combine="choice">
+ <element name="m:minus">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="times_arith1_elt"/>
+ </define>
+ <define name="times_arith1_elt" combine="choice">
+ <element name="m:times">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="divide_arith1_elt"/>
+ </define>
+ <define name="divide_arith1_elt" combine="choice">
+ <element name="m:divide">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="power_arith1_elt"/>
+ </define>
+ <define name="power_arith1_elt" combine="choice">
+ <element name="m:power">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="abs_arith1_elt"/>
+ </define>
+ <define name="abs_arith1_elt" combine="choice">
+ <element name="m:abs">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="root_arith1_elt"/>
+ </define>
+ <define name="root_arith1_elt" combine="choice">
+ <element name="m:root">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>real</value>
+ <value>complex</value>
+ <value>principal_branch</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sum_arith1_elt"/>
+ </define>
+ <define name="sum_arith1_elt" combine="choice">
+ <element name="m:sum">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="sum_arith1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="product_arith1_elt"/>
+ </define>
+ <define name="product_arith1_elt" combine="choice">
+ <element name="m:product">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="product_arith1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="diff_calculus1_elt"/>
+ </define>
+ <define name="diff_calculus1_elt" combine="choice">
+ <element name="m:diff">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>function</value>
+ <value>algebraic</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="diff_calculus1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="partialdiff_calculus1_elt"/>
+ </define>
+ <define name="partialdiff_calculus1_elt" combine="choice">
+ <element name="m:partialdiff">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>function</value>
+ <value>algebraic</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="int_calculus1_elt"/>
+ </define>
+ <define name="int_calculus1_elt" combine="choice">
+ <element name="m:int">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="defint_calculus1_elt"/>
+ </define>
+ <define name="defint_calculus1_elt" combine="choice">
+ <element name="m:defint">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="diff_calculus3_elt"/>
+ </define>
+ <define name="diff_calculus3_elt" combine="choice">
+ <element name="m:diff">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>function</value>
+ <value>algebraic</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="diff_calculus3_elt"/>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="partialdiff_calculus3_elt"/>
+ </define>
+ <define name="partialdiff_calculus3_elt" combine="choice">
+ <element name="m:partialdiff">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>function</value>
+ <value>algebraic</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="int_calculus3_elt"/>
+ </define>
+ <define name="int_calculus3_elt" combine="choice">
+ <element name="m:int">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="defint_calculus3_elt"/>
+ </define>
+ <define name="defint_calculus3_elt" combine="choice">
+ <element name="m:defint">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="real_complex1_elt"/>
+ </define>
+ <define name="real_complex1_elt" combine="choice">
+ <element name="m:real">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="imaginary_complex1_elt"/>
+ </define>
+ <define name="imaginary_complex1_elt" combine="choice">
+ <element name="m:imaginary">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="argument_complex1_elt"/>
+ </define>
+ <define name="argument_complex1_elt" combine="choice">
+ <element name="m:arg">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="conjugate_complex1_elt"/>
+ </define>
+ <define name="conjugate_complex1_elt" combine="choice">
+ <element name="m:conjugate">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="domain_fns1_elt"/>
+ </define>
+ <define name="domain_fns1_elt" combine="choice">
+ <element name="m:domain">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="range_fns1_elt"/>
+ </define>
+ <define name="range_fns1_elt" combine="choice">
+ <element name="m:codomain">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="image_fns1_elt"/>
+ </define>
+ <define name="image_fns1_elt" combine="choice">
+ <element name="m:image">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="identity_fns1_elt"/>
+ </define>
+ <define name="identity_fns1_elt" combine="choice">
+ <element name="m:ident">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="inverse_fns1_elt"/>
+ </define>
+ <define name="inverse_fns1_elt" combine="choice">
+ <element name="m:inverse">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="left_compose_fns1_elt"/>
+ </define>
+ <define name="left_compose_fns1_elt" combine="choice">
+ <element name="m:compose">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="compose_fns1_elt"/>
+ </define>
+ <define name="compose_fns1_elt" combine="choice">
+ <element name="m:compose">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="lambda_fns1_elt"/>
+ </define>
+ <define name="lambda_fns1_elt" combine="choice">
+ <element name="m:lambda">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="lambda_fns1_elt" combine="choice">
+ <element name="m:lambda">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="lambda_fns1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="condition_fns1_elt"/>
+ </define>
+ <define name="condition_fns1_elt" combine="choice">
+ <element name="m:lambda">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="condition_fns1_elt" combine="choice">
+ <element name="m:lambda">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="condition_fns1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="factorof_integer1_elt"/>
+ </define>
+ <define name="factorof_integer1_elt" combine="choice">
+ <element name="m:factorof">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="factorial_integer1_elt"/>
+ </define>
+ <define name="factorial_integer1_elt" combine="choice">
+ <element name="m:factorial">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="quotient_integer1_elt"/>
+ </define>
+ <define name="quotient_integer1_elt" combine="choice">
+ <element name="m:quotient">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="remainder_integer1_elt"/>
+ </define>
+ <define name="remainder_integer1_elt" combine="choice">
+ <element name="m:rem">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="interval_interval1_elt"/>
+ </define>
+ <define name="interval_interval1_elt" combine="choice">
+ <element name="m:interval">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>closed</value>
+ <value>open</value>
+ <value>open-closed</value>
+ <value>closed-open</value>
+ <value>integer</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="interval_interval1_elt" combine="choice">
+ <element name="m:interval">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>closed</value>
+ <value>open</value>
+ <value>open-closed</value>
+ <value>closed-open</value>
+ <value>integer</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="interval_interval1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="interval_oo_interval1_elt"/>
+ </define>
+ <define name="interval_oo_interval1_elt" combine="choice">
+ <element name="m:interval">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="closure">
+ <value>open</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="interval_cc_interval1_elt"/>
+ </define>
+ <define name="interval_cc_interval1_elt" combine="choice">
+ <element name="m:interval">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="closure">
+ <value>closed</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="interval_oc_interval1_elt"/>
+ </define>
+ <define name="interval_oc_interval1_elt" combine="choice">
+ <element name="m:interval">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="closure">
+ <value>open-closed</value>
+ </attribute>
+ <ref name="ContExp"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="interval_co_interval1_elt"/>
+ </define>
+ <define name="interval_co_interval1_elt" combine="choice">
+ <element name="m:interval">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="closure">
+ <value>closed-open</value>
+ </attribute>
+ <ref name="ContExp"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="limit_limit1_elt"/>
+ </define>
+ <define name="limit_limit1_elt" combine="choice">
+ <element name="m:limit">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="limit_limit1_elt"/>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="above_limit1_elt"/>
+ </define>
+ <define name="above_limit1_elt" combine="choice">
+ <element name="m:above">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="below_limit1_elt"/>
+ </define>
+ <define name="below_limit1_elt" combine="choice">
+ <element name="m:below">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="null_limit1_elt"/>
+ </define>
+ <define name="null_limit1_elt" combine="choice">
+ <element name="m:null">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="tendsto_limit1_elt"/>
+ </define>
+ <define name="tendsto_limit1_elt" combine="choice">
+ <element name="m:tendsto">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>above</value>
+ <value>below</value>
+ <value>two-sided</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="vectorproduct_linalg1_elt"/>
+ </define>
+ <define name="vectorproduct_linalg1_elt" combine="choice">
+ <element name="m:vectorproduct">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="scalarproduct_linalg1_elt"/>
+ </define>
+ <define name="scalarproduct_linalg1_elt" combine="choice">
+ <element name="m:scalarproduct">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="scalarproduct_linalg1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="outerproduct_linalg1_elt"/>
+ </define>
+ <define name="outerproduct_linalg1_elt" combine="choice">
+ <element name="m:outerproduct">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="outerproduct_linalg1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="transpose_linalg1_elt"/>
+ </define>
+ <define name="transpose_linalg1_elt" combine="choice">
+ <element name="m:transpose">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="determinant_linalg1_elt"/>
+ </define>
+ <define name="determinant_linalg1_elt" combine="choice">
+ <element name="m:determinant">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="vector_selector_linalg1_elt"/>
+ </define>
+ <define name="vector_selector_linalg1_elt" combine="choice">
+ <element name="m:selector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="vector_linalg2_elt"/>
+ </define>
+ <define name="vector_linalg2_elt" combine="choice">
+ <element name="m:vector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>row</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="vector_linalg2_elt" combine="choice">
+ <element name="m:vector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>row</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="vector_linalg2_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="matrixrow_linalg2_elt"/>
+ </define>
+ <define name="matrixrow_linalg2_elt" combine="choice">
+ <element name="m:matrixrow">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="matrixrow_linalg2_elt" combine="choice">
+ <element name="m:matrixrow">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="matrixrow_linalg2_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="matrix_linalg2_elt"/>
+ </define>
+ <define name="matrix_linalg2_elt" combine="choice">
+ <element name="m:matrix">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>real</value>
+ <value>complex</value>
+ <value>integer</value>
+ <value>symbolic</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="matrix_linalg2_elt" combine="choice">
+ <element name="m:matrix">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>real</value>
+ <value>complex</value>
+ <value>integer</value>
+ <value>symbolic</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="matrix_linalg2_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="vector_linalg3_elt"/>
+ </define>
+ <define name="vector_linalg3_elt" combine="choice">
+ <element name="m:vector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>column</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="vector_linalg3_elt" combine="choice">
+ <element name="m:vector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>column</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="vector_linalg3_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="matrixcolumn_linalg3_elt"/>
+ </define>
+ <define name="matrixcolumn_linalg3_elt" combine="choice">
+ <element name="m:matrixcolumn">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="matrix_linalg3_elt"/>
+ </define>
+ <define name="matrix_linalg3_elt" combine="choice">
+ <element name="m:matrix">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="vector_linalg6_elt"/>
+ </define>
+ <define name="vector_linalg6_elt" combine="choice">
+ <element name="m:vector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>row</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="vector_linalg6_elt" combine="choice">
+ <element name="m:vector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>row</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="vector_linalg6_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="matrix_linalg6_elt"/>
+ </define>
+ <define name="matrix_linalg6_elt" combine="choice">
+ <element name="m:matrix">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>real</value>
+ <value>complex</value>
+ <value>integer</value>
+ <value>symbolic</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="matrix_linalg6_elt" combine="choice">
+ <element name="m:matrix">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>real</value>
+ <value>complex</value>
+ <value>integer</value>
+ <value>symbolic</value>
+ <ref name="MathMLType"/>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="matrix_linalg6_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="list_list1_elt"/>
+ </define>
+ <define name="list_list1_elt" combine="choice">
+ <element name="m:list">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="order">
+ <choice>
+ <value>lexicographic</value>
+ <value>numeric</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="list_list1_elt" combine="choice">
+ <element name="m:list">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="order">
+ <choice>
+ <value>lexicographic</value>
+ <value>numeric</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="list_list1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="list_selector_list2_elt"/>
+ </define>
+ <define name="list_selector_list2_elt" combine="choice">
+ <element name="m:selector">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="equivalent_logic1_elt"/>
+ </define>
+ <define name="equivalent_logic1_elt" combine="choice">
+ <element name="m:equivalent">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="equivalent_logic1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="not_logic1_elt"/>
+ </define>
+ <define name="not_logic1_elt" combine="choice">
+ <element name="m:not">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="and_logic1_elt"/>
+ </define>
+ <define name="and_logic1_elt" combine="choice">
+ <element name="m:and">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="and_logic1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="xor_logic1_elt"/>
+ </define>
+ <define name="xor_logic1_elt" combine="choice">
+ <element name="m:xor">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="xor_logic1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="or_logic1_elt"/>
+ </define>
+ <define name="or_logic1_elt" combine="choice">
+ <element name="m:or">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="or_logic1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="implies_logic1_elt"/>
+ </define>
+ <define name="implies_logic1_elt" combine="choice">
+ <element name="m:implies">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="true_logic1_elt"/>
+ </define>
+ <define name="true_logic1_elt" combine="choice">
+ <element name="m:true">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="false_logic1_elt"/>
+ </define>
+ <define name="false_logic1_elt" combine="choice">
+ <element name="m:false">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.semantic-attribution" combine="choice">
+ <ref name="type_mathmltypes_elt"/>
+ </define>
+ <define name="type_mathmltypes_elt" combine="choice">
+ <element name="m:type">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="min_minmax1_elt"/>
+ </define>
+ <define name="min_minmax1_elt" combine="choice">
+ <element name="m:min">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="min_minmax1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="max_minmax1_elt"/>
+ </define>
+ <define name="max_minmax1_elt" combine="choice">
+ <element name="m:max">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="max_minmax1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="cartesian_product_multiset1_elt"/>
+ </define>
+ <define name="cartesian_product_multiset1_elt" combine="choice">
+ <element name="m:cartesianproduct">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="cartesian_product_multiset1_elt"/>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="emptyset_multiset1_elt"/>
+ </define>
+ <define name="emptyset_multiset1_elt" combine="choice">
+ <element name="m:emptyset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="map_multiset1_elt"/>
+ </define>
+ <define name="map_multiset1_elt" combine="choice">
+ <element name="m:map">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="size_multiset1_elt"/>
+ </define>
+ <define name="size_multiset1_elt" combine="choice">
+ <element name="m:card">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="suchthat_multiset1_elt"/>
+ </define>
+ <define name="suchthat_multiset1_elt" combine="choice">
+ <element name="m:suchthat">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="multiset_multiset1_elt"/>
+ </define>
+ <define name="multiset_multiset1_elt" combine="choice">
+ <element name="m:multiset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="multiset_multiset1_elt" combine="choice">
+ <element name="m:multiset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="multiset_multiset1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="intersect_multiset1_elt"/>
+ </define>
+ <define name="intersect_multiset1_elt" combine="choice">
+ <element name="m:intersect">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="intersect_multiset1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="union_multiset1_elt"/>
+ </define>
+ <define name="union_multiset1_elt" combine="choice">
+ <element name="m:union">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="union_multiset1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="setdiff_multiset1_elt"/>
+ </define>
+ <define name="setdiff_multiset1_elt" combine="choice">
+ <element name="m:setdiff">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="subset_multiset1_elt"/>
+ </define>
+ <define name="subset_multiset1_elt" combine="choice">
+ <element name="m:subset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="subset_multiset1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="in_multiset1_elt"/>
+ </define>
+ <define name="in_multiset1_elt" combine="choice">
+ <element name="m:in">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="notin_multiset1_elt"/>
+ </define>
+ <define name="notin_multiset1_elt" combine="choice">
+ <element name="m:notin">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="prsubset_multiset1_elt"/>
+ </define>
+ <define name="prsubset_multiset1_elt" combine="choice">
+ <element name="m:prsubset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="prsubset_multiset1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="notsubset_multiset1_elt"/>
+ </define>
+ <define name="notsubset_multiset1_elt" combine="choice">
+ <element name="m:notsubset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="notprsubset_multiset1_elt"/>
+ </define>
+ <define name="notprsubset_multiset1_elt" combine="choice">
+ <element name="m:notprsubset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <attribute name="type">
+ <value>multiset</value>
+ </attribute>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="rational_nums1_elt"/>
+ </define>
+ <define name="rational_nums1_elt" combine="choice">
+ <element name="m:rational">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="infinity_nums1_elt"/>
+ </define>
+ <define name="infinity_nums1_elt" combine="choice">
+ <element name="m:infinity">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="e_nums1_elt"/>
+ </define>
+ <define name="e_nums1_elt" combine="choice">
+ <element name="m:exponentiale">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="i_nums1_elt"/>
+ </define>
+ <define name="i_nums1_elt" combine="choice">
+ <element name="m:imaginaryi">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="pi_nums1_elt"/>
+ </define>
+ <define name="pi_nums1_elt" combine="choice">
+ <element name="m:pi">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="gamma_nums1_elt"/>
+ </define>
+ <define name="gamma_nums1_elt" combine="choice">
+ <element name="m:eulergamma">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="NaN_nums1_elt"/>
+ </define>
+ <define name="NaN_nums1_elt" combine="choice">
+ <element name="m:notanumber">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="omtype_omtypes_elt"/>
+ </define>
+ <define name="omtype_omtypes_elt" combine="choice">
+ <element name="m:omtype">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="integer_omtypes_elt"/>
+ </define>
+ <define name="integer_omtypes_elt" combine="choice">
+ <element name="m:integer">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="float_omtypes_elt"/>
+ </define>
+ <define name="float_omtypes_elt" combine="choice">
+ <element name="m:float">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="string_omtypes_elt"/>
+ </define>
+ <define name="string_omtypes_elt" combine="choice">
+ <element name="m:string">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="bytearray_omtypes_elt"/>
+ </define>
+ <define name="bytearray_omtypes_elt" combine="choice">
+ <element name="m:bytearray">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="piecewise_piece1_elt"/>
+ </define>
+ <define name="piecewise_piece1_elt" combine="choice">
+ <element name="m:piecewise">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="piecewise_piece1_elt" combine="choice">
+ <element name="m:piecewise">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="piecewise_piece1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="piece_piece1_elt"/>
+ </define>
+ <define name="piece_piece1_elt" combine="choice">
+ <element name="m:piece">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="piece_piece1_elt" combine="choice">
+ <element name="m:piece">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="piece_piece1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="otherwise_piece1_elt"/>
+ </define>
+ <define name="otherwise_piece1_elt" combine="choice">
+ <element name="m:otherwise">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="otherwise_piece1_elt" combine="choice">
+ <element name="m:otherwise">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="otherwise_piece1_elt"/>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="forall_quant1_elt"/>
+ </define>
+ <define name="forall_quant1_elt" combine="choice">
+ <element name="m:forall">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="exists_quant1_elt"/>
+ </define>
+ <define name="exists_quant1_elt" combine="choice">
+ <element name="m:exists">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="eq_relation1_elt"/>
+ </define>
+ <define name="eq_relation1_elt" combine="choice">
+ <element name="m:eq">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="eq_relation1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="lt_relation1_elt"/>
+ </define>
+ <define name="lt_relation1_elt" combine="choice">
+ <element name="m:lt">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="lt_relation1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="gt_relation1_elt"/>
+ </define>
+ <define name="gt_relation1_elt" combine="choice">
+ <element name="m:gt">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="gt_relation1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="neq_relation1_elt"/>
+ </define>
+ <define name="neq_relation1_elt" combine="choice">
+ <element name="m:neq">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="leq_relation1_elt"/>
+ </define>
+ <define name="leq_relation1_elt" combine="choice">
+ <element name="m:leq">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="leq_relation1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="geq_relation1_elt"/>
+ </define>
+ <define name="geq_relation1_elt" combine="choice">
+ <element name="m:geq">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="geq_relation1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="approx_relation1_elt"/>
+ </define>
+ <define name="approx_relation1_elt" combine="choice">
+ <element name="m:approx">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="approx_relation1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="ceiling_rounding1_elt"/>
+ </define>
+ <define name="ceiling_rounding1_elt" combine="choice">
+ <element name="m:ceiling">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="floor_rounding1_elt"/>
+ </define>
+ <define name="floor_rounding1_elt" combine="choice">
+ <element name="m:floor">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="MathMLType"/>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="trunc_rounding1_elt"/>
+ </define>
+ <define name="trunc_rounding1_elt" combine="choice">
+ <element name="m:trunc">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="round_rounding1_elt"/>
+ </define>
+ <define name="round_rounding1_elt" combine="choice">
+ <element name="m:round">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="mean_s_data1_elt"/>
+ </define>
+ <define name="mean_s_data1_elt" combine="choice">
+ <element name="m:mean">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sdev_s_data1_elt"/>
+ </define>
+ <define name="sdev_s_data1_elt" combine="choice">
+ <element name="m:sdev">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="variance_s_data1_elt"/>
+ </define>
+ <define name="variance_s_data1_elt" combine="choice">
+ <element name="m:variance">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="mode_s_data1_elt"/>
+ </define>
+ <define name="mode_s_data1_elt" combine="choice">
+ <element name="m:mode">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="median_s_data1_elt"/>
+ </define>
+ <define name="median_s_data1_elt" combine="choice">
+ <element name="m:median">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="moment_s_data1_elt"/>
+ </define>
+ <define name="moment_s_data1_elt" combine="choice">
+ <element name="m:moment">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="mean_s_dist1_elt"/>
+ </define>
+ <define name="mean_s_dist1_elt" combine="choice">
+ <element name="m:mean">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sdev_s_dist1_elt"/>
+ </define>
+ <define name="sdev_s_dist1_elt" combine="choice">
+ <element name="m:sdev">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="variance_s_dist1_elt"/>
+ </define>
+ <define name="variance_s_dist1_elt" combine="choice">
+ <element name="m:variance">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="moment_s_dist1_elt"/>
+ </define>
+ <define name="moment_s_dist1_elt" combine="choice">
+ <element name="m:moment">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="cartesian_product_set1_elt"/>
+ </define>
+ <define name="cartesian_product_set1_elt" combine="choice">
+ <element name="m:cartesianproduct">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="cartesian_product_set1_elt"/>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="emptyset_set1_elt"/>
+ </define>
+ <define name="emptyset_set1_elt" combine="choice">
+ <element name="m:emptyset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="map_set1_elt"/>
+ </define>
+ <define name="map_set1_elt" combine="choice">
+ <element name="m:map">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="size_set1_elt"/>
+ </define>
+ <define name="size_set1_elt" combine="choice">
+ <element name="m:card">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="suchthat_set1_elt"/>
+ </define>
+ <define name="suchthat_set1_elt" combine="choice">
+ <element name="m:suchthat">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="set_set1_elt"/>
+ </define>
+ <define name="set_set1_elt" combine="choice">
+ <element name="m:set">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="set_set1_elt" combine="choice">
+ <element name="m:set">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="container" combine="choice">
+ <ref name="set_set1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="intersect_set1_elt"/>
+ </define>
+ <define name="intersect_set1_elt" combine="choice">
+ <element name="m:intersect">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="intersect_set1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="union_set1_elt"/>
+ </define>
+ <define name="union_set1_elt" combine="choice">
+ <element name="m:union">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="union_set1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="setdiff_set1_elt"/>
+ </define>
+ <define name="setdiff_set1_elt" combine="choice">
+ <element name="m:setdiff">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="subset_set1_elt"/>
+ </define>
+ <define name="subset_set1_elt" combine="choice">
+ <element name="m:subset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="subset_set1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="in_set1_elt"/>
+ </define>
+ <define name="in_set1_elt" combine="choice">
+ <element name="m:in">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="notin_set1_elt"/>
+ </define>
+ <define name="notin_set1_elt" combine="choice">
+ <element name="m:notin">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="prsubset_set1_elt"/>
+ </define>
+ <define name="prsubset_set1_elt" combine="choice">
+ <element name="m:prsubset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.binder" combine="choice">
+ <ref name="prsubset_set1_elt"/>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="notsubset_set1_elt"/>
+ </define>
+ <define name="notsubset_set1_elt" combine="choice">
+ <element name="m:notsubset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="notprsubset_set1_elt"/>
+ </define>
+ <define name="notprsubset_set1_elt" combine="choice">
+ <element name="m:notprsubset">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>normal</value>
+ <value>multiset</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="P_setname1_elt"/>
+ </define>
+ <define name="P_setname1_elt" combine="choice">
+ <element name="m:primes">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="N_setname1_elt"/>
+ </define>
+ <define name="N_setname1_elt" combine="choice">
+ <element name="m:naturalnumbers">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="Z_setname1_elt"/>
+ </define>
+ <define name="Z_setname1_elt" combine="choice">
+ <element name="m:integers">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="rationials_setname1_elt"/>
+ </define>
+ <define name="rationials_setname1_elt" combine="choice">
+ <element name="m:rationals">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="R_setname1_elt"/>
+ </define>
+ <define name="R_setname1_elt" combine="choice">
+ <element name="m:reals">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.constant" combine="choice">
+ <ref name="complexes_setname1_elt"/>
+ </define>
+ <define name="complexes_setname1_elt" combine="choice">
+ <element name="m:complexes">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="log_transc1_elt"/>
+ </define>
+ <define name="log_transc1_elt" combine="choice">
+ <element name="m:log">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="ln_transc1_elt"/>
+ </define>
+ <define name="ln_transc1_elt" combine="choice">
+ <element name="m:ln">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="exp_transc1_elt"/>
+ </define>
+ <define name="exp_transc1_elt" combine="choice">
+ <element name="m:exp">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sin_transc1_elt"/>
+ </define>
+ <define name="sin_transc1_elt" combine="choice">
+ <element name="m:sin">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="cos_transc1_elt"/>
+ </define>
+ <define name="cos_transc1_elt" combine="choice">
+ <element name="m:cos">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="tan_transc1_elt"/>
+ </define>
+ <define name="tan_transc1_elt" combine="choice">
+ <element name="m:tan">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sec_transc1_elt"/>
+ </define>
+ <define name="sec_transc1_elt" combine="choice">
+ <element name="m:sec">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="csc_transc1_elt"/>
+ </define>
+ <define name="csc_transc1_elt" combine="choice">
+ <element name="m:csc">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="cot_transc1_elt"/>
+ </define>
+ <define name="cot_transc1_elt" combine="choice">
+ <element name="m:cot">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sinh_transc1_elt"/>
+ </define>
+ <define name="sinh_transc1_elt" combine="choice">
+ <element name="m:sinh">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="cosh_transc1_elt"/>
+ </define>
+ <define name="cosh_transc1_elt" combine="choice">
+ <element name="m:cosh">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="tanh_transc1_elt"/>
+ </define>
+ <define name="tanh_transc1_elt" combine="choice">
+ <element name="m:tanh">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="sech_transc1_elt"/>
+ </define>
+ <define name="sech_transc1_elt" combine="choice">
+ <element name="m:sech">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="csch_transc1_elt"/>
+ </define>
+ <define name="csch_transc1_elt" combine="choice">
+ <element name="m:csch">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="coth_transc1_elt"/>
+ </define>
+ <define name="coth_transc1_elt" combine="choice">
+ <element name="m:coth">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arcsin_transc1_elt"/>
+ </define>
+ <define name="arcsin_transc1_elt" combine="choice">
+ <element name="m:arcsin">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arccos_transc1_elt"/>
+ </define>
+ <define name="arccos_transc1_elt" combine="choice">
+ <element name="m:arccos">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arctan_transc1_elt"/>
+ </define>
+ <define name="arctan_transc1_elt" combine="choice">
+ <element name="m:arctan">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arcsec_transc1_elt"/>
+ </define>
+ <define name="arcsec_transc1_elt" combine="choice">
+ <element name="m:arcsec">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arccsc_transc1_elt"/>
+ </define>
+ <define name="arccsc_transc1_elt" combine="choice">
+ <element name="m:arccsc">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arccot_transc1_elt"/>
+ </define>
+ <define name="arccot_transc1_elt" combine="choice">
+ <element name="m:arccot">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arcsinh_transc1_elt"/>
+ </define>
+ <define name="arcsinh_transc1_elt" combine="choice">
+ <element name="m:arcsinh">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arccosh_transc1_elt"/>
+ </define>
+ <define name="arccosh_transc1_elt" combine="choice">
+ <element name="m:arccosh">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arctanh_transc1_elt"/>
+ </define>
+ <define name="arctanh_transc1_elt" combine="choice">
+ <element name="m:arctanh">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arcsech_transc1_elt"/>
+ </define>
+ <define name="arcsech_transc1_elt" combine="choice">
+ <element name="m:arcsech">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arccsch_transc1_elt"/>
+ </define>
+ <define name="arccsch_transc1_elt" combine="choice">
+ <element name="m:arccsch">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="arccoth_transc1_elt"/>
+ </define>
+ <define name="arccoth_transc1_elt" combine="choice">
+ <element name="m:arccoth">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="divergence_veccalc1_elt"/>
+ </define>
+ <define name="divergence_veccalc1_elt" combine="choice">
+ <element name="m:divergence">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="grad_veccalc1_elt"/>
+ </define>
+ <define name="grad_veccalc1_elt" combine="choice">
+ <element name="m:grad">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="curl_veccalc1_elt"/>
+ </define>
+ <define name="curl_veccalc1_elt" combine="choice">
+ <element name="m:curl">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="opel.application" combine="choice">
+ <ref name="Laplacian_veccalc1_elt"/>
+ </define>
+ <define name="Laplacian_veccalc1_elt" combine="choice">
+ <element name="m:laplacian">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="Definition.attrib"/>
+ </optional>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-common.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-common.rng
new file mode 100644
index 00000000000..612e635a83d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-common.rng
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2009 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+-->
+<grammar ns="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="math"/>
+ </start>
+ <define name="math">
+ <element name="math">
+ <ref name="math.attributes"/>
+ <zeroOrMore>
+ <ref name="MathExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="MathExpression">
+ <ref name="semantics"/>
+ </define>
+ <define name="NonMathMLAtt">
+ <attribute>
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ <nsName/>
+ </except>
+ </anyName>
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="CommonDeprecatedAtt">
+ <optional>
+ <attribute name="other"/>
+ </optional>
+ </define>
+ <define name="CommonAtt">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xref"/>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <data type="NMTOKENS"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <ref name="CommonDeprecatedAtt"/>
+ <zeroOrMore>
+ <ref name="NonMathMLAtt"/>
+ </zeroOrMore>
+ </define>
+ <define name="math.attributes">
+ <ref name="CommonAtt"/>
+ <optional>
+ <attribute name="display">
+ <choice>
+ <value>block</value>
+ <value>inline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxwidth">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="overflow">
+ <choice>
+ <value>linebreak</value>
+ <value>scroll</value>
+ <value>elide</value>
+ <value>truncate</value>
+ <value>scale</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="altimg">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="altimg-width">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="altimg-height">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="altimg-valign">
+ <choice>
+ <ref name="length"/>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alttext"/>
+ </optional>
+ <optional>
+ <attribute name="cdgroup">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <ref name="math.deprecatedattributes"/>
+ </define>
+ <!--
+ the mathml3-presentation schema adds additional attributes
+ to the math element, all those valid on mstyle
+ -->
+ <define name="math.deprecatedattributes">
+ <optional>
+ <attribute name="mode">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="macros">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="name">
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </define>
+ <define name="cd">
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ </define>
+ <define name="src">
+ <optional>
+ <attribute name="src">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="annotation">
+ <element name="annotation">
+ <ref name="annotation.attributes"/>
+ <text/>
+ </element>
+ </define>
+ <define name="annotation-xml.model">
+ <zeroOrMore>
+ <choice>
+ <ref name="MathExpression"/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="anyElement">
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="annotation-xml">
+ <element name="annotation-xml">
+ <ref name="annotation.attributes"/>
+ <ref name="annotation-xml.model"/>
+ </element>
+ </define>
+ <define name="annotation.attributes">
+ <ref name="CommonAtt"/>
+ <optional>
+ <ref name="cd"/>
+ </optional>
+ <optional>
+ <ref name="name"/>
+ </optional>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="src"/>
+ </optional>
+ </define>
+ <define name="DefEncAtt">
+ <optional>
+ <attribute name="encoding">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="definitionURL">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="semantics">
+ <element name="semantics">
+ <ref name="semantics.attributes"/>
+ <ref name="MathExpression"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="annotation"/>
+ <ref name="annotation-xml"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="semantics.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="cd"/>
+ </optional>
+ <optional>
+ <ref name="name"/>
+ </optional>
+ </define>
+ <define name="length">
+ <data type="string">
+ <param name="pattern">\s*((-?[0-9]*(\.[0-9]*)?(e[mx]|in|cm|mm|p[xtc]|%)?)|(negative)?((very){0,2}thi(n|ck)|medium)mathspace)\s*</param>
+ </data>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-content.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-content.rng
new file mode 100644
index 00000000000..f32cf7b023b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-content.rng
@@ -0,0 +1,1543 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2010 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+ -->
+ <include href="mathml3-strict-content.rng">
+ <define name="cn.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="mglyph"/>
+ <ref name="sep"/>
+ <ref name="PresentationExpression"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="cn.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <attribute name="type"/>
+ </optional>
+ <optional>
+ <ref name="base"/>
+ </optional>
+ </define>
+ <define name="ci.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="ci.type"/>
+ </optional>
+ </define>
+ <define name="ci.type">
+ <attribute name="type"/>
+ </define>
+ <define name="ci.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="mglyph"/>
+ <ref name="PresentationExpression"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="csymbol.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <attribute name="type"/>
+ </optional>
+ <optional>
+ <ref name="cd"/>
+ </optional>
+ </define>
+ <define name="csymbol.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="mglyph"/>
+ <ref name="PresentationExpression"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="bvar">
+ <element name="bvar">
+ <interleave>
+ <choice>
+ <ref name="ci"/>
+ <ref name="semantics-ci"/>
+ </choice>
+ <optional>
+ <ref name="degree"/>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+ <define name="cbytes.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ </define>
+ <define name="cs.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ </define>
+ <define name="apply.content">
+ <choice>
+ <oneOrMore>
+ <ref name="ContExp"/>
+ </oneOrMore>
+ <group>
+ <ref name="ContExp"/>
+ <ref name="BvarQ"/>
+ <zeroOrMore>
+ <ref name="Qualifier"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </define>
+ <define name="bind.content">
+ <ref name="apply.content"/>
+ </define>
+ </include>
+ <define name="base">
+ <attribute name="base"/>
+ </define>
+ <define name="sep">
+ <element name="sep">
+ <empty/>
+ </element>
+ </define>
+ <define name="PresentationExpression" combine="choice">
+ <notAllowed/>
+ </define>
+ <define name="DomainQ">
+ <zeroOrMore>
+ <choice>
+ <ref name="domainofapplication"/>
+ <ref name="condition"/>
+ <ref name="interval"/>
+ <group>
+ <ref name="lowlimit"/>
+ <optional>
+ <ref name="uplimit"/>
+ </optional>
+ </group>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="domainofapplication">
+ <element name="domainofapplication">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="condition">
+ <element name="condition">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="uplimit">
+ <element name="uplimit">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="lowlimit">
+ <element name="lowlimit">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="Qualifier">
+ <choice>
+ <ref name="DomainQ"/>
+ <ref name="degree"/>
+ <ref name="momentabout"/>
+ <ref name="logbase"/>
+ </choice>
+ </define>
+ <define name="degree">
+ <element name="degree">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="momentabout">
+ <element name="momentabout">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="logbase">
+ <element name="logbase">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="type">
+ <attribute name="type"/>
+ </define>
+ <define name="order">
+ <attribute name="order">
+ <choice>
+ <value>numeric</value>
+ <value>lexicographic</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="closure">
+ <attribute name="closure"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="piecewise"/>
+ </define>
+ <define name="piecewise">
+ <element name="piecewise">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <interleave>
+ <zeroOrMore>
+ <ref name="piece"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="otherwise"/>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+ <define name="piece">
+ <element name="piece">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <ref name="ContExp"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="otherwise">
+ <element name="otherwise">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="DeprecatedContExp">
+ <choice>
+ <ref name="reln"/>
+ <ref name="fn"/>
+ <ref name="declare"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="DeprecatedContExp"/>
+ </define>
+ <define name="reln">
+ <element name="reln">
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="fn">
+ <element name="fn">
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="declare">
+ <element name="declare">
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scope">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="nargs">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="occurrence">
+ <choice>
+ <value>prefix</value>
+ <value>infix</value>
+ <value>function-model</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="DefEncAtt"/>
+ <oneOrMore>
+ <ref name="ContExp"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="interval.class">
+ <ref name="interval"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="interval.class"/>
+ </define>
+ <define name="interval">
+ <element name="interval">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="closure"/>
+ </optional>
+ <ref name="ContExp"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="unary-functional.class">
+ <choice>
+ <ref name="inverse"/>
+ <ref name="ident"/>
+ <ref name="domain"/>
+ <ref name="codomain"/>
+ <ref name="image"/>
+ <ref name="ln"/>
+ <ref name="log"/>
+ <ref name="moment"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-functional.class"/>
+ </define>
+ <define name="inverse">
+ <element name="inverse">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="ident">
+ <element name="ident">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="domain">
+ <element name="domain">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="codomain">
+ <element name="codomain">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="image">
+ <element name="image">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="ln">
+ <element name="ln">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="log">
+ <element name="log">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="moment">
+ <element name="moment">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="lambda.class">
+ <ref name="lambda"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="lambda.class"/>
+ </define>
+ <define name="lambda">
+ <element name="lambda">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <ref name="BvarQ"/>
+ <ref name="DomainQ"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="nary-functional.class">
+ <ref name="compose"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-functional.class"/>
+ </define>
+ <define name="compose">
+ <element name="compose">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="binary-arith.class">
+ <choice>
+ <ref name="quotient"/>
+ <ref name="divide"/>
+ <ref name="minus"/>
+ <ref name="power"/>
+ <ref name="rem"/>
+ <ref name="root"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="binary-arith.class"/>
+ </define>
+ <define name="quotient">
+ <element name="quotient">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="divide">
+ <element name="divide">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="minus">
+ <element name="minus">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="power">
+ <element name="power">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="rem">
+ <element name="rem">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="root">
+ <element name="root">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="unary-arith.class">
+ <choice>
+ <ref name="factorial"/>
+ <ref name="minus"/>
+ <ref name="root"/>
+ <ref name="abs"/>
+ <ref name="conjugate"/>
+ <ref name="arg"/>
+ <ref name="real"/>
+ <ref name="imaginary"/>
+ <ref name="floor"/>
+ <ref name="ceiling"/>
+ <ref name="exp"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-arith.class"/>
+ </define>
+ <define name="factorial">
+ <element name="factorial">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="abs">
+ <element name="abs">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="conjugate">
+ <element name="conjugate">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arg">
+ <element name="arg">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="real">
+ <element name="real">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="imaginary">
+ <element name="imaginary">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="floor">
+ <element name="floor">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="ceiling">
+ <element name="ceiling">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="exp">
+ <element name="exp">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-minmax.class">
+ <choice>
+ <ref name="max"/>
+ <ref name="min"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-minmax.class"/>
+ </define>
+ <define name="max">
+ <element name="max">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="min">
+ <element name="min">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-arith.class">
+ <choice>
+ <ref name="plus"/>
+ <ref name="times"/>
+ <ref name="gcd"/>
+ <ref name="lcm"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-arith.class"/>
+ </define>
+ <define name="plus">
+ <element name="plus">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="times">
+ <element name="times">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="gcd">
+ <element name="gcd">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="lcm">
+ <element name="lcm">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-logical.class">
+ <choice>
+ <ref name="and"/>
+ <ref name="or"/>
+ <ref name="xor"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-logical.class"/>
+ </define>
+ <define name="and">
+ <element name="and">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="or">
+ <element name="or">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="xor">
+ <element name="xor">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="unary-logical.class">
+ <ref name="not"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-logical.class"/>
+ </define>
+ <define name="not">
+ <element name="not">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="binary-logical.class">
+ <choice>
+ <ref name="implies"/>
+ <ref name="equivalent"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="binary-logical.class"/>
+ </define>
+ <define name="implies">
+ <element name="implies">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="equivalent">
+ <element name="equivalent">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="quantifier.class">
+ <choice>
+ <ref name="forall"/>
+ <ref name="exists"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="quantifier.class"/>
+ </define>
+ <define name="forall">
+ <element name="forall">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="exists">
+ <element name="exists">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-reln.class">
+ <choice>
+ <ref name="eq"/>
+ <ref name="gt"/>
+ <ref name="lt"/>
+ <ref name="geq"/>
+ <ref name="leq"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-reln.class"/>
+ </define>
+ <define name="eq">
+ <element name="eq">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="gt">
+ <element name="gt">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="lt">
+ <element name="lt">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="geq">
+ <element name="geq">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="leq">
+ <element name="leq">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="binary-reln.class">
+ <choice>
+ <ref name="neq"/>
+ <ref name="approx"/>
+ <ref name="factorof"/>
+ <ref name="tendsto"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="binary-reln.class"/>
+ </define>
+ <define name="neq">
+ <element name="neq">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="approx">
+ <element name="approx">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="factorof">
+ <element name="factorof">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="tendsto">
+ <element name="tendsto">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="type"/>
+ </optional>
+ <empty/>
+ </element>
+ </define>
+ <define name="int.class">
+ <ref name="int"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="int.class"/>
+ </define>
+ <define name="int">
+ <element name="int">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="Differential-Operator.class">
+ <ref name="diff"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="Differential-Operator.class"/>
+ </define>
+ <define name="diff">
+ <element name="diff">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="partialdiff.class">
+ <ref name="partialdiff"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="partialdiff.class"/>
+ </define>
+ <define name="partialdiff">
+ <element name="partialdiff">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="unary-veccalc.class">
+ <choice>
+ <ref name="divergence"/>
+ <ref name="grad"/>
+ <ref name="curl"/>
+ <ref name="laplacian"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-veccalc.class"/>
+ </define>
+ <define name="divergence">
+ <element name="divergence">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="grad">
+ <element name="grad">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="curl">
+ <element name="curl">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="laplacian">
+ <element name="laplacian">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-setlist-constructor.class">
+ <choice>
+ <ref name="set"/>
+ <ref name="list"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-setlist-constructor.class"/>
+ </define>
+ <define name="set">
+ <element name="set">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="type"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="BvarQ"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DomainQ"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="list">
+ <element name="list">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <optional>
+ <ref name="order"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="BvarQ"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DomainQ"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="nary-set.class">
+ <choice>
+ <ref name="union"/>
+ <ref name="intersect"/>
+ <ref name="cartesianproduct"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-set.class"/>
+ </define>
+ <define name="union">
+ <element name="union">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="intersect">
+ <element name="intersect">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="cartesianproduct">
+ <element name="cartesianproduct">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="binary-set.class">
+ <choice>
+ <ref name="in"/>
+ <ref name="notin"/>
+ <ref name="notsubset"/>
+ <ref name="notprsubset"/>
+ <ref name="setdiff"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="binary-set.class"/>
+ </define>
+ <define name="in">
+ <element name="in">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="notin">
+ <element name="notin">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="notsubset">
+ <element name="notsubset">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="notprsubset">
+ <element name="notprsubset">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="setdiff">
+ <element name="setdiff">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-set-reln.class">
+ <choice>
+ <ref name="subset"/>
+ <ref name="prsubset"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-set-reln.class"/>
+ </define>
+ <define name="subset">
+ <element name="subset">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="prsubset">
+ <element name="prsubset">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="unary-set.class">
+ <ref name="card"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-set.class"/>
+ </define>
+ <define name="card">
+ <element name="card">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="sum.class">
+ <ref name="sum"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="sum.class"/>
+ </define>
+ <define name="sum">
+ <element name="sum">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="product.class">
+ <ref name="product"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="product.class"/>
+ </define>
+ <define name="product">
+ <element name="product">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="limit.class">
+ <ref name="limit"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="limit.class"/>
+ </define>
+ <define name="limit">
+ <element name="limit">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="unary-elementary.class">
+ <choice>
+ <ref name="sin"/>
+ <ref name="cos"/>
+ <ref name="tan"/>
+ <ref name="sec"/>
+ <ref name="csc"/>
+ <ref name="cot"/>
+ <ref name="sinh"/>
+ <ref name="cosh"/>
+ <ref name="tanh"/>
+ <ref name="sech"/>
+ <ref name="csch"/>
+ <ref name="coth"/>
+ <ref name="arcsin"/>
+ <ref name="arccos"/>
+ <ref name="arctan"/>
+ <ref name="arccosh"/>
+ <ref name="arccot"/>
+ <ref name="arccoth"/>
+ <ref name="arccsc"/>
+ <ref name="arccsch"/>
+ <ref name="arcsec"/>
+ <ref name="arcsech"/>
+ <ref name="arcsinh"/>
+ <ref name="arctanh"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-elementary.class"/>
+ </define>
+ <define name="sin">
+ <element name="sin">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="cos">
+ <element name="cos">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="tan">
+ <element name="tan">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="sec">
+ <element name="sec">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="csc">
+ <element name="csc">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="cot">
+ <element name="cot">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="sinh">
+ <element name="sinh">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="cosh">
+ <element name="cosh">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="tanh">
+ <element name="tanh">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="sech">
+ <element name="sech">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="csch">
+ <element name="csch">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="coth">
+ <element name="coth">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arcsin">
+ <element name="arcsin">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arccos">
+ <element name="arccos">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arctan">
+ <element name="arctan">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arccosh">
+ <element name="arccosh">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arccot">
+ <element name="arccot">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arccoth">
+ <element name="arccoth">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arccsc">
+ <element name="arccsc">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arccsch">
+ <element name="arccsch">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arcsec">
+ <element name="arcsec">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arcsech">
+ <element name="arcsech">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arcsinh">
+ <element name="arcsinh">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="arctanh">
+ <element name="arctanh">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-stats.class">
+ <choice>
+ <ref name="mean"/>
+ <ref name="sdev"/>
+ <ref name="variance"/>
+ <ref name="median"/>
+ <ref name="mode"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-stats.class"/>
+ </define>
+ <define name="mean">
+ <element name="mean">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="sdev">
+ <element name="sdev">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="variance">
+ <element name="variance">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="median">
+ <element name="median">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="mode">
+ <element name="mode">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-constructor.class">
+ <choice>
+ <ref name="vector"/>
+ <ref name="matrix"/>
+ <ref name="matrixrow"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-constructor.class"/>
+ </define>
+ <define name="vector">
+ <element name="vector">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <ref name="BvarQ"/>
+ <ref name="DomainQ"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="matrix">
+ <element name="matrix">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <ref name="BvarQ"/>
+ <ref name="DomainQ"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="matrixrow">
+ <element name="matrixrow">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <ref name="BvarQ"/>
+ <ref name="DomainQ"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="unary-linalg.class">
+ <choice>
+ <ref name="determinant"/>
+ <ref name="transpose"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="unary-linalg.class"/>
+ </define>
+ <define name="determinant">
+ <element name="determinant">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="transpose">
+ <element name="transpose">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="nary-linalg.class">
+ <ref name="selector"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="nary-linalg.class"/>
+ </define>
+ <define name="selector">
+ <element name="selector">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="binary-linalg.class">
+ <choice>
+ <ref name="vectorproduct"/>
+ <ref name="scalarproduct"/>
+ <ref name="outerproduct"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="binary-linalg.class"/>
+ </define>
+ <define name="vectorproduct">
+ <element name="vectorproduct">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="scalarproduct">
+ <element name="scalarproduct">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="outerproduct">
+ <element name="outerproduct">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="constant-set.class">
+ <choice>
+ <ref name="integers"/>
+ <ref name="reals"/>
+ <ref name="rationals"/>
+ <ref name="naturalnumbers"/>
+ <ref name="complexes"/>
+ <ref name="primes"/>
+ <ref name="emptyset"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="constant-set.class"/>
+ </define>
+ <define name="integers">
+ <element name="integers">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="reals">
+ <element name="reals">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="rationals">
+ <element name="rationals">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="naturalnumbers">
+ <element name="naturalnumbers">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="complexes">
+ <element name="complexes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="primes">
+ <element name="primes">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="emptyset">
+ <element name="emptyset">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="constant-arith.class">
+ <choice>
+ <ref name="exponentiale"/>
+ <ref name="imaginaryi"/>
+ <ref name="notanumber"/>
+ <ref name="true"/>
+ <ref name="false"/>
+ <ref name="pi"/>
+ <ref name="eulergamma"/>
+ <ref name="infinity"/>
+ </choice>
+ </define>
+ <define name="ContExp" combine="choice">
+ <ref name="constant-arith.class"/>
+ </define>
+ <define name="exponentiale">
+ <element name="exponentiale">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="imaginaryi">
+ <element name="imaginaryi">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="notanumber">
+ <element name="notanumber">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="true">
+ <element name="true">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="false">
+ <element name="false">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="pi">
+ <element name="pi">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="eulergamma">
+ <element name="eulergamma">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="infinity">
+ <element name="infinity">
+ <ref name="CommonAtt"/>
+ <ref name="DefEncAtt"/>
+ <empty/>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-pragmatic.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-pragmatic.rng
new file mode 100644
index 00000000000..c137293e3ca
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-pragmatic.rng
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2008 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+
+ Revision: $Id: mathml3-pragmatic.rnc 8515 2009-08-17 13:51:36Z kohlhase $
+
+ Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase
+
+ This is the RelaxNG schema module for the pragmatic content part of
+ MathML (but without the presentation in token elements).
+-->
+<grammar ns="http://www.w3.org/1998/Math/MathML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="sep">
+ <a:documentation>the content of "cn" may have &lt;sep&gt; elements in it</a:documentation>
+ <element name="sep">
+ <empty/>
+ </element>
+ </define>
+ <define name="cn.content" combine="choice">
+ <zeroOrMore>
+ <choice>
+ <ref name="sep"/>
+ <text/>
+ <ref name="Glyph-alignmark"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="cn.type.vals" combine="choice">
+ <choice>
+ <value>e-notation</value>
+ <value>rational</value>
+ <value>complex-cartesian</value>
+ <value>complex-polar</value>
+ <value>constant</value>
+ </choice>
+ </define>
+ <define name="degree">
+ <a:documentation>allow degree in bvar</a:documentation>
+ <element name="degree">
+ <ref name="MathML.Common.attrib"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="logbase">
+ <element name="logbase">
+ <ref name="MathML.Common.attrib"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="momentabout">
+ <element name="momentabout">
+ <ref name="MathML.Common.attrib"/>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="bvar-head" combine="choice">
+ <choice>
+ <group>
+ <optional>
+ <ref name="degree"/>
+ </optional>
+ <ref name="ci"/>
+ </group>
+ <group>
+ <ref name="ci"/>
+ <optional>
+ <ref name="degree"/>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="apply.content" combine="choice">
+ <a:documentation>allow degree to modify &lt;root/&gt;</a:documentation>
+ <ref name="root_arith1_elt"/>
+ <ref name="degree"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </define>
+ <define name="apply.content" combine="choice">
+ <ref name="moment_s_data1_elt"/>
+ <interleave>
+ <optional>
+ <ref name="degree"/>
+ </optional>
+ <optional>
+ <ref name="momentabout"/>
+ </optional>
+ </interleave>
+ <zeroOrMore>
+ <ref name="ContInPres"/>
+ </zeroOrMore>
+ </define>
+ <define name="apply.content" combine="choice">
+ <ref name="log_transc1_elt"/>
+ <ref name="logbase"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </define>
+ <define name="apply.content" combine="choice">
+ <a:documentation>allow apply to act as a binder</a:documentation>
+ <ref name="bind.content"/>
+ </define>
+ <define name="domainofapplication">
+ <element name="domainofapplication">
+ <ref name="Definition.attrib"/>
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="lowlimit">
+ <element name="lowlimit">
+ <ref name="Definition.attrib"/>
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <oneOrMore>
+ <ref name="ContExp"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="uplimit">
+ <element name="uplimit">
+ <ref name="Definition.attrib"/>
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <oneOrMore>
+ <ref name="ContExp"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="condition">
+ <element name="condition">
+ <ref name="Definition.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="ContExp"/>
+ </element>
+ </define>
+ <define name="qualifier" combine="choice">
+ <a:documentation>allow the non-strict qualifiers</a:documentation>
+ <choice>
+ <ref name="domainofapplication"/>
+ <group>
+ <ref name="uplimit"/>
+ <optional>
+ <ref name="lowlimit"/>
+ </optional>
+ </group>
+ <group>
+ <ref name="lowlimit"/>
+ <optional>
+ <ref name="uplimit"/>
+ </optional>
+ </group>
+ <ref name="degree"/>
+ <ref name="condition"/>
+ </choice>
+ </define>
+ <define name="opel.constant">
+ <a:documentation>we collect the operator elements by role</a:documentation>
+ <notAllowed/>
+ </define>
+ <define name="opel.binder">
+ <notAllowed/>
+ </define>
+ <define name="opel.application">
+ <notAllowed/>
+ </define>
+ <define name="opel.semantic-attribution">
+ <notAllowed/>
+ </define>
+ <define name="opel.attribution">
+ <notAllowed/>
+ </define>
+ <define name="opel.error">
+ <notAllowed/>
+ </define>
+ <define name="opels">
+ <choice>
+ <ref name="opel.constant"/>
+ <ref name="opel.binder"/>
+ <ref name="opel.application"/>
+ <ref name="opel.semantic-attribution"/>
+ <ref name="opel.attribution"/>
+ <ref name="opel.error"/>
+ </choice>
+ </define>
+ <define name="container">
+ <notAllowed/>
+ </define>
+ <define name="MathMLType" combine="choice">
+ <a:documentation>the values of the MathML type attributes; </a:documentation>
+ <choice>
+ <value>real</value>
+ <value>complex</value>
+ <value>function</value>
+ <value>algebraic</value>
+ <value>integer</value>
+ </choice>
+ </define>
+ <define name="apply-binder-head">
+ <a:documentation>we instantiate the strict content model by structure checking</a:documentation>
+ <choice>
+ <ref name="semantics-apply-binder"/>
+ <ref name="opel.binder"/>
+ </choice>
+ </define>
+ <define name="apply.content" combine="choice">
+ <ref name="apply-binder-head"/>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </define>
+ <define name="semantics-apply-binder">
+ <element name="semantics">
+ <ref name="semantics.attribs"/>
+ <ref name="apply-binder-head"/>
+ <zeroOrMore>
+ <ref name="semantics-annotation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="apply-head" combine="choice">
+ <ref name="opel.application"/>
+ </define>
+ <define name="bind-head" combine="choice">
+ <ref name="opel.binder"/>
+ </define>
+ <define name="cerror-head" combine="choice">
+ <ref name="opel.error"/>
+ </define>
+ <define name="ContExp" combine="choice">
+ <a:documentation>allow all functions, constants, and containers to be content expressions on their own</a:documentation>
+ <choice>
+ <ref name="opel.constant"/>
+ <ref name="opel.application"/>
+ <ref name="container"/>
+ </choice>
+ </define>
+ <!-- allow no body -->
+ <define name="bind.content" combine="choice">
+ <ref name="bind-head"/>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ </define>
+ <!--
+ not sure what a sequence of things is supposed to map to in strict/OM
+ but is definitely allowed in pragmatic
+ see Content/SequencesAndSeries/product/rec-product3
+ -->
+ <define name="math.content" combine="choice">
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </define>
+ <define name="opel.content" combine="choice">
+ <choice>
+ <ref name="PresExp"/>
+ <ref name="Glyph-alignmark"/>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-presentation.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-presentation.rng
new file mode 100644
index 00000000000..047524afda5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-presentation.rng
@@ -0,0 +1,2265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2010 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+-->
+<grammar ns="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="MathExpression" combine="choice">
+ <ref name="PresentationExpression"/>
+ </define>
+ <define name="ImpliedMrow">
+ <zeroOrMore>
+ <ref name="MathExpression"/>
+ </zeroOrMore>
+ </define>
+ <define name="TableRowExpression">
+ <choice>
+ <ref name="mtr"/>
+ <ref name="mlabeledtr"/>
+ </choice>
+ </define>
+ <define name="TableCellExpression">
+ <ref name="mtd"/>
+ </define>
+ <define name="MstackExpression">
+ <choice>
+ <ref name="MathExpression"/>
+ <ref name="mscarries"/>
+ <ref name="msline"/>
+ <ref name="msrow"/>
+ <ref name="msgroup"/>
+ </choice>
+ </define>
+ <define name="MsrowExpression">
+ <choice>
+ <ref name="MathExpression"/>
+ <ref name="none"/>
+ </choice>
+ </define>
+ <define name="MultiScriptExpression">
+ <choice>
+ <ref name="MathExpression"/>
+ <ref name="none"/>
+ </choice>
+ <choice>
+ <ref name="MathExpression"/>
+ <ref name="none"/>
+ </choice>
+ </define>
+ <define name="mpadded-length">
+ <data type="string">
+ <param name="pattern">\s*([\+\-]?[0-9]*(\.[0-9]*)?\s*((%?\s*(height|depth|width)?)|e[mx]|in|cm|mm|p[xtc]|((negative)?((very){0,2}thi(n|ck)|medium)mathspace)))\s*</param>
+ </data>
+ </define>
+ <define name="linestyle">
+ <choice>
+ <value>none</value>
+ <value>solid</value>
+ <value>dashed</value>
+ </choice>
+ </define>
+ <define name="verticalalign">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ <value>center</value>
+ <value>baseline</value>
+ <value>axis</value>
+ </choice>
+ </define>
+ <define name="columnalignstyle">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </define>
+ <define name="notationstyle">
+ <choice>
+ <value>longdiv</value>
+ <value>actuarial</value>
+ <value>radical</value>
+ <value>box</value>
+ <value>roundedbox</value>
+ <value>circle</value>
+ <value>left</value>
+ <value>right</value>
+ <value>top</value>
+ <value>bottom</value>
+ <value>updiagonalstrike</value>
+ <value>downdiagonalstrike</value>
+ <value>verticalstrike</value>
+ <value>horizontalstrike</value>
+ <value>madruwb</value>
+ </choice>
+ </define>
+ <define name="idref">
+ <text/>
+ </define>
+ <define name="unsigned-integer">
+ <data type="unsignedLong"/>
+ </define>
+ <define name="integer">
+ <data type="integer"/>
+ </define>
+ <define name="number">
+ <data type="decimal"/>
+ </define>
+ <define name="character">
+ <data type="string">
+ <param name="pattern">\s*\S\s*</param>
+ </data>
+ </define>
+ <define name="color">
+ <data type="string">
+ <param name="pattern">\s*((#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?)|[aA][qQ][uU][aA]|[bB][lL][aA][cC][kK]|[bB][lL][uU][eE]|[fF][uU][cC][hH][sS][iI][aA]|[gG][rR][aA][yY]|[gG][rR][eE][eE][nN]|[lL][iI][mM][eE]|[mM][aA][rR][oO][oO][nN]|[nN][aA][vV][yY]|[oO][lL][iI][vV][eE]|[pP][uU][rR][pP][lL][eE]|[rR][eE][dD]|[sS][iI][lL][vV][eE][rR]|[tT][eE][aA][lL]|[wW][hH][iI][tT][eE]|[yY][eE][lL][lL][oO][wW])\s*</param>
+ </data>
+ </define>
+ <define name="group-alignment">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>decimalpoint</value>
+ </choice>
+ </define>
+ <define name="group-alignment-list">
+ <list>
+ <oneOrMore>
+ <ref name="group-alignment"/>
+ </oneOrMore>
+ </list>
+ </define>
+ <define name="group-alignment-list-list">
+ <data type="string">
+ <param name="pattern">(\s*\{\s*(left|center|right|decimalpoint)(\s+(left|center|right|decimalpoint))*\})*\s*</param>
+ </data>
+ </define>
+ <define name="positive-integer">
+ <data type="positiveInteger"/>
+ </define>
+ <define name="TokenExpression">
+ <choice>
+ <ref name="mi"/>
+ <ref name="mn"/>
+ <ref name="mo"/>
+ <ref name="mtext"/>
+ <ref name="mspace"/>
+ <ref name="ms"/>
+ </choice>
+ </define>
+ <define name="token.content">
+ <choice>
+ <ref name="mglyph"/>
+ <ref name="malignmark"/>
+ <text/>
+ </choice>
+ </define>
+ <define name="mi">
+ <element name="mi">
+ <ref name="mi.attributes"/>
+ <zeroOrMore>
+ <ref name="token.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mi.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="TokenAtt"/>
+ </define>
+ <define name="mn">
+ <element name="mn">
+ <ref name="mn.attributes"/>
+ <zeroOrMore>
+ <ref name="token.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mn.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="TokenAtt"/>
+ </define>
+ <define name="mo">
+ <element name="mo">
+ <ref name="mo.attributes"/>
+ <zeroOrMore>
+ <ref name="token.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mo.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="TokenAtt"/>
+ <optional>
+ <attribute name="form">
+ <choice>
+ <value>prefix</value>
+ <value>infix</value>
+ <value>postfix</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fence">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separator">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stretchy">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="symmetric">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxsize">
+ <choice>
+ <ref name="length"/>
+ <value>infinity</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minsize">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="largeop">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="movablelimits">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accent">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linebreak">
+ <choice>
+ <value>auto</value>
+ <value>newline</value>
+ <value>nobreak</value>
+ <value>goodbreak</value>
+ <value>badbreak</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lineleading">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linebreakstyle">
+ <choice>
+ <value>before</value>
+ <value>after</value>
+ <value>duplicate</value>
+ <value>infixlinebreakstyle</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linebreakmultchar"/>
+ </optional>
+ <optional>
+ <attribute name="indentalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>auto</value>
+ <value>id</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indenttarget">
+ <ref name="idref"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentalignfirst">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>auto</value>
+ <value>id</value>
+ <value>indentalign</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentshiftfirst">
+ <choice>
+ <ref name="length"/>
+ <value>indentshift</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentalignlast">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>auto</value>
+ <value>id</value>
+ <value>indentalign</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentshiftlast">
+ <choice>
+ <ref name="length"/>
+ <value>indentshift</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mtext">
+ <element name="mtext">
+ <ref name="mtext.attributes"/>
+ <zeroOrMore>
+ <ref name="token.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mtext.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="TokenAtt"/>
+ </define>
+ <define name="mspace">
+ <element name="mspace">
+ <ref name="mspace.attributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="mspace.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="TokenAtt"/>
+ <optional>
+ <attribute name="width">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linebreak">
+ <choice>
+ <value>auto</value>
+ <value>newline</value>
+ <value>nobreak</value>
+ <value>goodbreak</value>
+ <value>badbreak</value>
+ <value>indentingnewline</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ms">
+ <element name="ms">
+ <ref name="ms.attributes"/>
+ <zeroOrMore>
+ <ref name="token.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ms.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="TokenAtt"/>
+ <optional>
+ <attribute name="lquote"/>
+ </optional>
+ <optional>
+ <attribute name="rquote"/>
+ </optional>
+ </define>
+ <define name="mglyph">
+ <element name="mglyph">
+ <ref name="mglyph.attributes"/>
+ <ref name="mglyph.deprecatedattributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="mglyph.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="src">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alt"/>
+ </optional>
+ </define>
+ <define name="mglyph.deprecatedattributes">
+ <optional>
+ <attribute name="index">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathvariant">
+ <choice>
+ <value>normal</value>
+ <value>bold</value>
+ <value>italic</value>
+ <value>bold-italic</value>
+ <value>double-struck</value>
+ <value>bold-fraktur</value>
+ <value>script</value>
+ <value>bold-script</value>
+ <value>fraktur</value>
+ <value>sans-serif</value>
+ <value>bold-sans-serif</value>
+ <value>sans-serif-italic</value>
+ <value>sans-serif-bold-italic</value>
+ <value>monospace</value>
+ <value>initial</value>
+ <value>tailed</value>
+ <value>looped</value>
+ <value>stretched</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathsize">
+ <choice>
+ <value>small</value>
+ <value>normal</value>
+ <value>big</value>
+ <ref name="length"/>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="DeprecatedTokenAtt"/>
+ </define>
+ <define name="msline">
+ <element name="msline">
+ <ref name="msline.attributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="msline.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="position">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="length">
+ <ref name="unsigned-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="leftoverhang">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rightoverhang">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mslinethickness">
+ <choice>
+ <ref name="length"/>
+ <value>thin</value>
+ <value>medium</value>
+ <value>thick</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="none">
+ <element name="none">
+ <ref name="none.attributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="none.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="mprescripts">
+ <element name="mprescripts">
+ <ref name="mprescripts.attributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="mprescripts.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="CommonPresAtt">
+ <optional>
+ <attribute name="mathcolor">
+ <ref name="color"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathbackground">
+ <choice>
+ <ref name="color"/>
+ <value>transparent</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="TokenAtt">
+ <optional>
+ <attribute name="mathvariant">
+ <choice>
+ <value>normal</value>
+ <value>bold</value>
+ <value>italic</value>
+ <value>bold-italic</value>
+ <value>double-struck</value>
+ <value>bold-fraktur</value>
+ <value>script</value>
+ <value>bold-script</value>
+ <value>fraktur</value>
+ <value>sans-serif</value>
+ <value>bold-sans-serif</value>
+ <value>sans-serif-italic</value>
+ <value>sans-serif-bold-italic</value>
+ <value>monospace</value>
+ <value>initial</value>
+ <value>tailed</value>
+ <value>looped</value>
+ <value>stretched</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathsize">
+ <choice>
+ <value>small</value>
+ <value>normal</value>
+ <value>big</value>
+ <ref name="length"/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dir">
+ <choice>
+ <value>ltr</value>
+ <value>rtl</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="DeprecatedTokenAtt"/>
+ </define>
+ <define name="DeprecatedTokenAtt">
+ <optional>
+ <attribute name="fontfamily"/>
+ </optional>
+ <optional>
+ <attribute name="fontweight">
+ <choice>
+ <value>normal</value>
+ <value>bold</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fontstyle">
+ <choice>
+ <value>normal</value>
+ <value>italic</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fontsize">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="color">
+ <ref name="color"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="background">
+ <choice>
+ <ref name="color"/>
+ <value>transparent</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="MalignExpression">
+ <choice>
+ <ref name="maligngroup"/>
+ <ref name="malignmark"/>
+ </choice>
+ </define>
+ <define name="malignmark">
+ <element name="malignmark">
+ <ref name="malignmark.attributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="malignmark.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="edge">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="maligngroup">
+ <element name="maligngroup">
+ <ref name="maligngroup.attributes"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="maligngroup.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="groupalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>decimalpoint</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="PresentationExpression">
+ <choice>
+ <ref name="TokenExpression"/>
+ <ref name="MalignExpression"/>
+ <ref name="mrow"/>
+ <ref name="mfrac"/>
+ <ref name="msqrt"/>
+ <ref name="mroot"/>
+ <ref name="mstyle"/>
+ <ref name="merror"/>
+ <ref name="mpadded"/>
+ <ref name="mphantom"/>
+ <ref name="mfenced"/>
+ <ref name="menclose"/>
+ <ref name="msub"/>
+ <ref name="msup"/>
+ <ref name="msubsup"/>
+ <ref name="munder"/>
+ <ref name="mover"/>
+ <ref name="munderover"/>
+ <ref name="mmultiscripts"/>
+ <ref name="mtable"/>
+ <ref name="mstack"/>
+ <ref name="mlongdiv"/>
+ <ref name="maction"/>
+ </choice>
+ </define>
+ <define name="mrow">
+ <element name="mrow">
+ <ref name="mrow.attributes"/>
+ <zeroOrMore>
+ <ref name="MathExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mrow.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="dir">
+ <choice>
+ <value>ltr</value>
+ <value>rtl</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mfrac">
+ <element name="mfrac">
+ <ref name="mfrac.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="mfrac.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="linethickness">
+ <choice>
+ <ref name="length"/>
+ <value>thin</value>
+ <value>medium</value>
+ <value>thick</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="numalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="denomalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bevelled">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msqrt">
+ <element name="msqrt">
+ <ref name="msqrt.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="msqrt.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="mroot">
+ <element name="mroot">
+ <ref name="mroot.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="mroot.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="mstyle">
+ <element name="mstyle">
+ <ref name="mstyle.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="mstyle.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <ref name="mstyle.specificattributes"/>
+ <ref name="mstyle.generalattributes"/>
+ <ref name="mstyle.deprecatedattributes"/>
+ </define>
+ <define name="mstyle.specificattributes">
+ <optional>
+ <attribute name="scriptlevel">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="displaystyle">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptsizemultiplier">
+ <ref name="number"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptminsize">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="infixlinebreakstyle">
+ <choice>
+ <value>before</value>
+ <value>after</value>
+ <value>duplicate</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="decimalpoint">
+ <ref name="character"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mstyle.generalattributes">
+ <optional>
+ <attribute name="accent">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accentunder">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alignmentscope">
+ <list>
+ <oneOrMore>
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bevelled">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charspacing">
+ <choice>
+ <ref name="length"/>
+ <value>loose</value>
+ <value>medium</value>
+ <value>tight</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="close"/>
+ </optional>
+ <optional>
+ <attribute name="columnalign">
+ <list>
+ <oneOrMore>
+ <ref name="columnalignstyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnlines">
+ <list>
+ <oneOrMore>
+ <ref name="linestyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnspacing">
+ <list>
+ <oneOrMore>
+ <ref name="length"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnspan">
+ <ref name="positive-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnwidth">
+ <list>
+ <oneOrMore>
+ <choice>
+ <value>auto</value>
+ <ref name="length"/>
+ <value>fit</value>
+ </choice>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="crossout">
+ <list>
+ <zeroOrMore>
+ <choice>
+ <value>none</value>
+ <value>updiagonalstrike</value>
+ <value>downdiagonalstrike</value>
+ <value>verticalstrike</value>
+ <value>horizontalstrike</value>
+ </choice>
+ </zeroOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="denomalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dir">
+ <choice>
+ <value>ltr</value>
+ <value>rtl</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="edge">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="equalcolumns">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="equalrows">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fence">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="form">
+ <choice>
+ <value>prefix</value>
+ <value>infix</value>
+ <value>postfix</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frame">
+ <ref name="linestyle"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="framespacing">
+ <list>
+ <ref name="length"/>
+ <ref name="length"/>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="groupalign">
+ <ref name="group-alignment-list-list"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>auto</value>
+ <value>id</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentalignfirst">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>auto</value>
+ <value>id</value>
+ <value>indentalign</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentalignlast">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>auto</value>
+ <value>id</value>
+ <value>indentalign</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentshiftfirst">
+ <choice>
+ <ref name="length"/>
+ <value>indentshift</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indentshiftlast">
+ <choice>
+ <ref name="length"/>
+ <value>indentshift</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="indenttarget">
+ <ref name="idref"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="largeop">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="leftoverhang">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="length">
+ <ref name="unsigned-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linebreak">
+ <choice>
+ <value>auto</value>
+ <value>newline</value>
+ <value>nobreak</value>
+ <value>goodbreak</value>
+ <value>badbreak</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linebreakmultchar"/>
+ </optional>
+ <optional>
+ <attribute name="linebreakstyle">
+ <choice>
+ <value>before</value>
+ <value>after</value>
+ <value>duplicate</value>
+ <value>infixlinebreakstyle</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lineleading">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linethickness">
+ <choice>
+ <ref name="length"/>
+ <value>thin</value>
+ <value>medium</value>
+ <value>thick</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="location">
+ <choice>
+ <value>w</value>
+ <value>nw</value>
+ <value>n</value>
+ <value>ne</value>
+ <value>e</value>
+ <value>se</value>
+ <value>s</value>
+ <value>sw</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="longdivstyle">
+ <choice>
+ <value>lefttop</value>
+ <value>stackedrightright</value>
+ <value>mediumstackedrightright</value>
+ <value>shortstackedrightright</value>
+ <value>righttop</value>
+ <value>left/\right</value>
+ <value>left)(right</value>
+ <value>:right=right</value>
+ <value>stackedleftleft</value>
+ <value>stackedleftlinetop</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lquote"/>
+ </optional>
+ <optional>
+ <attribute name="lspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathsize">
+ <choice>
+ <value>small</value>
+ <value>normal</value>
+ <value>big</value>
+ <ref name="length"/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathvariant">
+ <choice>
+ <value>normal</value>
+ <value>bold</value>
+ <value>italic</value>
+ <value>bold-italic</value>
+ <value>double-struck</value>
+ <value>bold-fraktur</value>
+ <value>script</value>
+ <value>bold-script</value>
+ <value>fraktur</value>
+ <value>sans-serif</value>
+ <value>bold-sans-serif</value>
+ <value>sans-serif-italic</value>
+ <value>sans-serif-bold-italic</value>
+ <value>monospace</value>
+ <value>initial</value>
+ <value>tailed</value>
+ <value>looped</value>
+ <value>stretched</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maxsize">
+ <choice>
+ <ref name="length"/>
+ <value>infinity</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minlabelspacing">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minsize">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="movablelimits">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mslinethickness">
+ <choice>
+ <ref name="length"/>
+ <value>thin</value>
+ <value>medium</value>
+ <value>thick</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="notation"/>
+ </optional>
+ <optional>
+ <attribute name="numalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="open"/>
+ </optional>
+ <optional>
+ <attribute name="position">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rightoverhang">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowalign">
+ <list>
+ <oneOrMore>
+ <ref name="verticalalign"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowlines">
+ <list>
+ <oneOrMore>
+ <ref name="linestyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowspacing">
+ <list>
+ <oneOrMore>
+ <ref name="length"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowspan">
+ <ref name="positive-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rquote"/>
+ </optional>
+ <optional>
+ <attribute name="rspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="selection">
+ <ref name="positive-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separator">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="separators"/>
+ </optional>
+ <optional>
+ <attribute name="shift">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="side">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>leftoverlap</value>
+ <value>rightoverlap</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stackalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>decimalpoint</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stretchy">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="subscriptshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="superscriptshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="symmetric">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mstyle.deprecatedattributes">
+ <ref name="DeprecatedTokenAtt"/>
+ <optional>
+ <attribute name="veryverythinmathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="verythinmathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thinmathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mediummathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="thickmathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="verythickmathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="veryverythickmathspace">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="math.attributes" combine="interleave">
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="math.attributes" combine="interleave">
+ <ref name="mstyle.specificattributes"/>
+ </define>
+ <define name="math.attributes" combine="interleave">
+ <ref name="mstyle.generalattributes"/>
+ </define>
+ <define name="merror">
+ <element name="merror">
+ <ref name="merror.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="merror.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="mpadded">
+ <element name="mpadded">
+ <ref name="mpadded.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="mpadded.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="height">
+ <ref name="mpadded-length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <ref name="mpadded-length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="mpadded-length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lspace">
+ <ref name="mpadded-length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="voffset">
+ <ref name="mpadded-length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mphantom">
+ <element name="mphantom">
+ <ref name="mphantom.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="mphantom.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ </define>
+ <define name="mfenced">
+ <element name="mfenced">
+ <ref name="mfenced.attributes"/>
+ <zeroOrMore>
+ <ref name="MathExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mfenced.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="open"/>
+ </optional>
+ <optional>
+ <attribute name="close"/>
+ </optional>
+ <optional>
+ <attribute name="separators"/>
+ </optional>
+ </define>
+ <define name="menclose">
+ <element name="menclose">
+ <ref name="menclose.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="menclose.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="notation"/>
+ </optional>
+ </define>
+ <define name="msub">
+ <element name="msub">
+ <ref name="msub.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="msub.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="subscriptshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msup">
+ <element name="msup">
+ <ref name="msup.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="msup.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="superscriptshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msubsup">
+ <element name="msubsup">
+ <ref name="msubsup.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="msubsup.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="subscriptshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="superscriptshift">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="munder">
+ <element name="munder">
+ <ref name="munder.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="munder.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="accentunder">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mover">
+ <element name="mover">
+ <ref name="mover.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="mover.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="accent">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="munderover">
+ <element name="munderover">
+ <ref name="munderover.attributes"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ <ref name="MathExpression"/>
+ </element>
+ </define>
+ <define name="munderover.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="accent">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accentunder">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mmultiscripts">
+ <element name="mmultiscripts">
+ <ref name="mmultiscripts.attributes"/>
+ <ref name="MathExpression"/>
+ <zeroOrMore>
+ <ref name="MultiScriptExpression"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="mprescripts"/>
+ <zeroOrMore>
+ <ref name="MultiScriptExpression"/>
+ </zeroOrMore>
+ </optional>
+ </element>
+ </define>
+ <define name="mmultiscripts.attributes">
+ <ref name="msubsup.attributes"/>
+ </define>
+ <define name="mtable">
+ <element name="mtable">
+ <ref name="mtable.attributes"/>
+ <zeroOrMore>
+ <ref name="TableRowExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mtable.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="align">
+ <data type="string">
+ <param name="pattern">\s*(top|bottom|center|baseline|axis)\s*[0-9]*</param>
+ </data>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowalign">
+ <list>
+ <oneOrMore>
+ <ref name="verticalalign"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnalign">
+ <list>
+ <oneOrMore>
+ <ref name="columnalignstyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="groupalign">
+ <ref name="group-alignment-list-list"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alignmentscope">
+ <list>
+ <oneOrMore>
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnwidth">
+ <list>
+ <oneOrMore>
+ <choice>
+ <value>auto</value>
+ <ref name="length"/>
+ <value>fit</value>
+ </choice>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <choice>
+ <value>auto</value>
+ <ref name="length"/>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowspacing">
+ <list>
+ <oneOrMore>
+ <ref name="length"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnspacing">
+ <list>
+ <oneOrMore>
+ <ref name="length"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowlines">
+ <list>
+ <oneOrMore>
+ <ref name="linestyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnlines">
+ <list>
+ <oneOrMore>
+ <ref name="linestyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frame">
+ <ref name="linestyle"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="framespacing">
+ <list>
+ <ref name="length"/>
+ <ref name="length"/>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="equalrows">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="equalcolumns">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="displaystyle">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="side">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>leftoverlap</value>
+ <value>rightoverlap</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="minlabelspacing">
+ <ref name="length"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mlabeledtr">
+ <element name="mlabeledtr">
+ <ref name="mlabeledtr.attributes"/>
+ <oneOrMore>
+ <ref name="TableCellExpression"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="mlabeledtr.attributes">
+ <ref name="mtr.attributes"/>
+ </define>
+ <define name="mtr">
+ <element name="mtr">
+ <ref name="mtr.attributes"/>
+ <zeroOrMore>
+ <ref name="TableCellExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mtr.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="rowalign">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ <value>center</value>
+ <value>baseline</value>
+ <value>axis</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnalign">
+ <list>
+ <oneOrMore>
+ <ref name="columnalignstyle"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="groupalign">
+ <ref name="group-alignment-list-list"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mtd">
+ <element name="mtd">
+ <ref name="mtd.attributes"/>
+ <ref name="ImpliedMrow"/>
+ </element>
+ </define>
+ <define name="mtd.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="rowspan">
+ <ref name="positive-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnspan">
+ <ref name="positive-integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowalign">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ <value>center</value>
+ <value>baseline</value>
+ <value>axis</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="columnalign">
+ <ref name="columnalignstyle"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="groupalign">
+ <ref name="group-alignment-list"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mstack">
+ <element name="mstack">
+ <ref name="mstack.attributes"/>
+ <zeroOrMore>
+ <ref name="MstackExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mstack.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="align">
+ <data type="string">
+ <param name="pattern">\s*(top|bottom|center|baseline|axis)\s*[0-9]*</param>
+ </data>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stackalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>decimalpoint</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charalign">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charspacing">
+ <choice>
+ <ref name="length"/>
+ <value>loose</value>
+ <value>medium</value>
+ <value>tight</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mlongdiv">
+ <element name="mlongdiv">
+ <ref name="mlongdiv.attributes"/>
+ <ref name="MstackExpression"/>
+ <ref name="MstackExpression"/>
+ <oneOrMore>
+ <ref name="MstackExpression"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="mlongdiv.attributes">
+ <ref name="msgroup.attributes"/>
+ <optional>
+ <attribute name="longdivstyle">
+ <choice>
+ <value>lefttop</value>
+ <value>stackedrightright</value>
+ <value>mediumstackedrightright</value>
+ <value>shortstackedrightright</value>
+ <value>righttop</value>
+ <value>left/\right</value>
+ <value>left)(right</value>
+ <value>:right=right</value>
+ <value>stackedleftleft</value>
+ <value>stackedleftlinetop</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msgroup">
+ <element name="msgroup">
+ <ref name="msgroup.attributes"/>
+ <zeroOrMore>
+ <ref name="MstackExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="msgroup.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="position">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="shift">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msrow">
+ <element name="msrow">
+ <ref name="msrow.attributes"/>
+ <zeroOrMore>
+ <ref name="MsrowExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="msrow.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="position">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mscarries">
+ <element name="mscarries">
+ <ref name="mscarries.attributes"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="MsrowExpression"/>
+ <ref name="mscarry"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mscarries.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="position">
+ <ref name="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="location">
+ <choice>
+ <value>w</value>
+ <value>nw</value>
+ <value>n</value>
+ <value>ne</value>
+ <value>e</value>
+ <value>se</value>
+ <value>s</value>
+ <value>sw</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="crossout">
+ <list>
+ <zeroOrMore>
+ <choice>
+ <value>none</value>
+ <value>updiagonalstrike</value>
+ <value>downdiagonalstrike</value>
+ <value>verticalstrike</value>
+ <value>horizontalstrike</value>
+ </choice>
+ </zeroOrMore>
+ </list>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scriptsizemultiplier">
+ <ref name="number"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mscarry">
+ <element name="mscarry">
+ <ref name="mscarry.attributes"/>
+ <zeroOrMore>
+ <ref name="MsrowExpression"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mscarry.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="location">
+ <choice>
+ <value>w</value>
+ <value>nw</value>
+ <value>n</value>
+ <value>ne</value>
+ <value>e</value>
+ <value>se</value>
+ <value>s</value>
+ <value>sw</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="crossout">
+ <list>
+ <zeroOrMore>
+ <choice>
+ <value>none</value>
+ <value>updiagonalstrike</value>
+ <value>downdiagonalstrike</value>
+ <value>verticalstrike</value>
+ <value>horizontalstrike</value>
+ </choice>
+ </zeroOrMore>
+ </list>
+ </attribute>
+ </optional>
+ </define>
+ <define name="maction">
+ <element name="maction">
+ <ref name="maction.attributes"/>
+ <oneOrMore>
+ <ref name="MathExpression"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="maction.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="CommonPresAtt"/>
+ <optional>
+ <attribute name="actiontype"/>
+ </optional>
+ <optional>
+ <attribute name="selection">
+ <ref name="positive-integer"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict-content.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict-content.rng
new file mode 100644
index 00000000000..f2e3b0ea8e9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict-content.rng
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2009 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+-->
+<grammar ns="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="ContExp">
+ <choice>
+ <ref name="semantics-contexp"/>
+ <ref name="cn"/>
+ <ref name="ci"/>
+ <ref name="csymbol"/>
+ <ref name="apply"/>
+ <ref name="bind"/>
+ <ref name="share"/>
+ <ref name="cerror"/>
+ <ref name="cbytes"/>
+ <ref name="cs"/>
+ </choice>
+ </define>
+ <define name="cn">
+ <element name="cn">
+ <ref name="cn.attributes"/>
+ <ref name="cn.content"/>
+ </element>
+ </define>
+ <define name="cn.content">
+ <text/>
+ </define>
+ <define name="cn.attributes">
+ <attribute name="type">
+ <choice>
+ <value>integer</value>
+ <value>real</value>
+ <value>double</value>
+ <value>hexdouble</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="semantics-ci">
+ <element name="semantics">
+ <ref name="semantics.attributes"/>
+ <choice>
+ <ref name="ci"/>
+ <ref name="semantics-ci"/>
+ </choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="annotation"/>
+ <ref name="annotation-xml"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="semantics-contexp">
+ <element name="semantics">
+ <ref name="semantics.attributes"/>
+ <ref name="ContExp"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="annotation"/>
+ <ref name="annotation-xml"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ci">
+ <element name="ci">
+ <ref name="ci.attributes"/>
+ <ref name="ci.content"/>
+ </element>
+ </define>
+ <define name="ci.attributes">
+ <ref name="CommonAtt"/>
+ <optional>
+ <ref name="ci.type"/>
+ </optional>
+ </define>
+ <define name="ci.type">
+ <attribute name="type">
+ <choice>
+ <value>integer</value>
+ <value>rational</value>
+ <value>real</value>
+ <value>complex</value>
+ <value>complex-polar</value>
+ <value>complex-cartesian</value>
+ <value>constant</value>
+ <value>function</value>
+ <value>vector</value>
+ <value>list</value>
+ <value>set</value>
+ <value>matrix</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="ci.content">
+ <text/>
+ </define>
+ <define name="csymbol">
+ <element name="csymbol">
+ <ref name="csymbol.attributes"/>
+ <ref name="csymbol.content"/>
+ </element>
+ </define>
+ <define name="SymbolName">
+ <data type="NCName"/>
+ </define>
+ <define name="csymbol.attributes">
+ <ref name="CommonAtt"/>
+ <ref name="cd"/>
+ </define>
+ <define name="csymbol.content">
+ <ref name="SymbolName"/>
+ </define>
+ <define name="BvarQ">
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ </define>
+ <define name="bvar">
+ <element name="bvar">
+ <choice>
+ <ref name="ci"/>
+ <ref name="semantics-ci"/>
+ </choice>
+ </element>
+ </define>
+ <define name="apply">
+ <element name="apply">
+ <ref name="CommonAtt"/>
+ <ref name="apply.content"/>
+ </element>
+ </define>
+ <define name="apply.content">
+ <oneOrMore>
+ <ref name="ContExp"/>
+ </oneOrMore>
+ </define>
+ <define name="bind">
+ <element name="bind">
+ <ref name="CommonAtt"/>
+ <ref name="bind.content"/>
+ </element>
+ </define>
+ <define name="bind.content">
+ <ref name="ContExp"/>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <ref name="ContExp"/>
+ </define>
+ <define name="share">
+ <element name="share">
+ <ref name="CommonAtt"/>
+ <ref name="src"/>
+ <empty/>
+ </element>
+ </define>
+ <define name="cerror">
+ <element name="cerror">
+ <ref name="cerror.attributes"/>
+ <ref name="csymbol"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="cerror.attributes">
+ <ref name="CommonAtt"/>
+ </define>
+ <define name="cbytes">
+ <element name="cbytes">
+ <ref name="cbytes.attributes"/>
+ <ref name="base64"/>
+ </element>
+ </define>
+ <define name="cbytes.attributes">
+ <ref name="CommonAtt"/>
+ </define>
+ <define name="base64">
+ <data type="base64Binary"/>
+ </define>
+ <define name="cs">
+ <element name="cs">
+ <ref name="cs.attributes"/>
+ <text/>
+ </element>
+ </define>
+ <define name="cs.attributes">
+ <ref name="CommonAtt"/>
+ </define>
+ <define name="MathExpression" combine="choice">
+ <ref name="ContExp"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict.rng
new file mode 100644
index 00000000000..be5a334c8fe
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3-strict.rng
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2008 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+
+ Revision: $Id: mathml3-strict.rnc 8515 2009-08-17 13:51:36Z kohlhase $
+
+ Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase
+
+ This is the RelaxNG schema module for the strict content part of MathML.
+-->
+<grammar ns="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href="mathml3-common.rng"/>
+ <define name="math.content" combine="choice">
+ <ref name="ContExp"/>
+ </define>
+ <!-- ednote(rnc:opel-content) What is the content of a operator element, currently all text? -->
+ <define name="opel.content">
+ <text/>
+ </define>
+ <!--
+ we want to extend this in pragmatic CMathML, so we introduce abbrevs here.
+ ednote(rnc:cn-content) What is the content of a cn?
+ -->
+ <define name="cn.content">
+ <choice>
+ <text/>
+ <group>
+ <ref name="cn"/>
+ <ref name="cn"/>
+ </group>
+ </choice>
+ </define>
+ <define name="cn.type.vals">
+ <choice>
+ <value>integer</value>
+ <value>real</value>
+ <value>double</value>
+ </choice>
+ </define>
+ <define name="cn">
+ <element name="cn">
+ <optional>
+ <attribute name="base"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="cn.type.vals"/>
+ </attribute>
+ </optional>
+ <ref name="Definition.attrib"/>
+ <ref name="MathML.Common.attrib"/>
+ <zeroOrMore>
+ <ref name="cn.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ci">
+ <element name="ci">
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="nargs">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="occurrence">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <ref name="Definition.attrib"/>
+ <ref name="MathML.Common.attrib"/>
+ <ref name="opel.content"/>
+ <optional>
+ <ref name="name.attrib"/>
+ </optional>
+ </element>
+ </define>
+ <define name="cdname.attrib">
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ </define>
+ <define name="csymbol">
+ <element name="csymbol">
+ <ref name="MathML.Common.attrib"/>
+ <ref name="Definition.attrib"/>
+ <optional>
+ <ref name="cdname.attrib"/>
+ </optional>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="opel.content"/>
+ </element>
+ </define>
+ <!-- the content of the apply element, leave it empty and extend it later -->
+ <define name="apply">
+ <element name="apply">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="apply.content"/>
+ </element>
+ </define>
+ <define name="apply-head">
+ <choice>
+ <ref name="apply"/>
+ <ref name="bind"/>
+ <ref name="ci"/>
+ <ref name="csymbol"/>
+ <ref name="semantics-apply"/>
+ </choice>
+ </define>
+ <define name="apply.content">
+ <ref name="apply-head"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </define>
+ <define name="semantics-apply">
+ <element name="semantics">
+ <ref name="semantics.attribs"/>
+ <ref name="apply-head"/>
+ <zeroOrMore>
+ <ref name="semantics-annotation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="qualifier">
+ <notAllowed/>
+ </define>
+ <!-- the content of the bind element, leave it empty and extend it later -->
+ <define name="bind">
+ <element name="bind">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="bind.content"/>
+ </element>
+ </define>
+ <define name="bind-head">
+ <choice>
+ <ref name="apply"/>
+ <ref name="csymbol"/>
+ <ref name="semantics-bind"/>
+ </choice>
+ </define>
+ <define name="bind.content">
+ <ref name="bind-head"/>
+ <zeroOrMore>
+ <ref name="bvar"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="qualifier"/>
+ </optional>
+ <ref name="ContExp"/>
+ </define>
+ <define name="semantics-bind">
+ <element name="semantics">
+ <ref name="semantics.attribs"/>
+ <ref name="bind-head"/>
+ <zeroOrMore>
+ <ref name="semantics-annotation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="bvar">
+ <element name="bvar">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="bvar-head"/>
+ </element>
+ </define>
+ <define name="bvar-head">
+ <choice>
+ <ref name="ci"/>
+ <ref name="semantics-bvar"/>
+ </choice>
+ </define>
+ <define name="semantics-bvar">
+ <element name="semantics">
+ <ref name="semantics.attribs"/>
+ <ref name="bvar-head"/>
+ <zeroOrMore>
+ <ref name="semantics-annotation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="share">
+ <element name="share">
+ <ref name="MathML.Common.attrib"/>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </element>
+ </define>
+ <!-- the content of the cerror element, leave it empty and extend it later -->
+ <define name="cerror">
+ <element name="cerror">
+ <ref name="MathML.Common.attrib"/>
+ <optional>
+ <ref name="cdbase.attrib"/>
+ </optional>
+ <ref name="cerror.content"/>
+ </element>
+ </define>
+ <define name="cerror-head">
+ <choice>
+ <ref name="csymbol"/>
+ <ref name="apply"/>
+ <ref name="semantics-cerror"/>
+ </choice>
+ </define>
+ <define name="cerror.content">
+ <ref name="cerror-head"/>
+ <zeroOrMore>
+ <ref name="ContExp"/>
+ </zeroOrMore>
+ </define>
+ <define name="semantics-cerror">
+ <element name="semantics">
+ <ref name="semantics.attribs"/>
+ <ref name="cerror-head"/>
+ <zeroOrMore>
+ <ref name="semantics-annotation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="semantics-cmml">
+ <element name="semantics">
+ <ref name="semantics.attribs"/>
+ <ref name="ContExp"/>
+ <zeroOrMore>
+ <ref name="semantics-annotation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ContExp">
+ <choice>
+ <ref name="cn"/>
+ <ref name="ci"/>
+ <ref name="csymbol"/>
+ <ref name="apply"/>
+ <ref name="bind"/>
+ <ref name="share"/>
+ <ref name="cerror"/>
+ <ref name="semantics-cmml"/>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/mathml3.rng b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3.rng
new file mode 100644
index 00000000000..67b0561c133
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/mathml3.rng
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This is the Mathematical Markup Language (MathML) 3.0, an XML
+ application for describing mathematical notation and capturing
+ both its structure and content.
+
+ Copyright 1998-2009 W3C (MIT, ERCIM, Keio)
+
+ Use and distribution of this code are permitted under the terms
+ W3C Software Notice and License
+ http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+-->
+<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="mathml3-content.rng">
+ <a:documentation>Content MathML</a:documentation>
+ </include>
+ <include href="mathml3-presentation.rng">
+ <a:documentation>Presentation MathML</a:documentation>
+ </include>
+ <include href="mathml3-common.rng">
+ <a:documentation>math and semantics common to both Content and Presentation</a:documentation>
+ </include>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/metadata.rng b/Master/texmf-dist/source/latex/stex/schema/rng/metadata.rng
new file mode 100644
index 00000000000..b85d0d4f533
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/metadata.rng
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | Metadata for LaTeXML |
+ |=====================================================================|
+ | Not Part of LaTeXML: |
+ | Copyright (c) 2005 Michael Kohlhase |
+ | Released under the Gnu Public License (GPL) |
+ |=====================================================================|
+ | Michael Kohlhase <m.kohlhase@iu-bremen.de> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="dc.class">
+ <choice>
+ <ref name="Creator"/>
+ <ref name="Contributor"/>
+ <ref name="Title"/>
+ <ref name="Subject"/>
+ <ref name="Description"/>
+ <ref name="Publisher"/>
+ <ref name="Date"/>
+ <ref name="Type"/>
+ <ref name="Identifier"/>
+ <ref name="Source"/>
+ <ref name="Language"/>
+ <ref name="Relation"/>
+ <ref name="Rights"/>
+ <ref name="license"/>
+ </choice>
+ </define>
+ <define name="metadata">
+ <element name="metadata">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <ref name="dc.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Creator">
+ <element name="Creator">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Contributor">
+ <element name="Contributor">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Title">
+ <element name="Title">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Subject">
+ <element name="Subject">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Description">
+ <element name="Description">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Publisher">
+ <element name="Publisher">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Date">
+ <element name="Date">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Type">
+ <element name="Type">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Identifier">
+ <element name="Identifier">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Source">
+ <element name="Source">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Language">
+ <element name="Language">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Relation">
+ <element name="Relation">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Rights">
+ <element name="Rights">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Inline.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="license">
+ <element name="license">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="attribution"/>
+ <ref name="noncommercial"/>
+ <ref name="sharealike"/>
+ <ref name="noderivativeworks"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="attribution">
+ <element name="attribution">
+ <ref name="Common.attribs"/>
+ </element>
+ </define>
+ <define name="noncommercial">
+ <element name="noncommercial">
+ <ref name="Common.attribs"/>
+ </element>
+ </define>
+ <define name="sharealike">
+ <element name="sharealike">
+ <ref name="Common.attribs"/>
+ </element>
+ </define>
+ <define name="noderivativeworks">
+ <element name="noderivativeworks">
+ <ref name="Common.attribs"/>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdoc+ltxml.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc+ltxml.rng
new file mode 100644
index 00000000000..04b411a61dd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc+ltxml.rng
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG for Open Mathematical documents (OMDoc 1.2) with LaTeXML
+ $Id: omdoc+ltxml.rnc 1884 2011-09-09 12:45:49Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/trunk/schema/rnc/omdoc+ltxml.rnc $
+ See the documentation and examples at http://omdoc.org
+ (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="omdoc.rng">
+ <a:documentation>we include the OMDoc Schema, but we allow the sectioning elements defined below
+as document structuring elements as well. </a:documentation>
+ <define name="docstruct.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="omgroup"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="lechapter"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ </include>
+ <define name="mobj" combine="choice">
+ <a:documentation>we extend the Math Objects by the ones introduced by LaTeXML</a:documentation>
+ <grammar>
+ <include href="LaTeXML-common.rng"/>
+ <include href="LaTeXML-math.rng"/>
+ <start>
+ <ref name="Math"/>
+ </start>
+ </grammar>
+ </define>
+ <define name="render.class" combine="choice">
+ <a:documentation>we extend the model of rendering elements by XMath, and we extend the XMath there, so
+that we can cope with piecewise and friends at the intermediate level. </a:documentation>
+ <grammar>
+ <include href="LaTeXML.rng">
+ <!--
+ XMath.class &= XMRow* & XMCell*
+ XMRow_model &= element XMTok {attribute role {xsd:string {pattern = "ID"}}}
+ XMArray_model &= element XMTok {attribute role {xsd:string {pattern = "ID"}}}
+ -->
+ <define name="XMTok_attributes" combine="interleave">
+ <parentRef name="ntn.attrib"/>
+ </define>
+ <start>
+ <choice>
+ <ref name="Math"/>
+ <ref name="text"/>
+ </choice>
+ </start>
+ </include>
+ </grammar>
+ </define>
+ <define name="inline.class" combine="interleave">
+ <a:documentation>we extend the core structural classes of OMDoc with various LaTeXML counterparts. These
+are usful, since sTeX defers to LaTeXML to generate these, and in a later pass (the
+XSLTs) replaces them by their OMDoc counterparts. The rules below, have another
+purpose: in the OMDoc schema (which is the primary one here, we use the &amp; operator for
+making classes, whereas the LaTeXML schema uses the less flexible | operator. Therefore
+we need to construct conjunctive extensions in start macro. </a:documentation>
+ <grammar>
+ <include href="LaTeXML.rng">
+ <define name="Common.attributes" combine="interleave">
+ <parentRef name="id.attribs"/>
+ </define>
+ <define name="Inline.class">
+ <parentRef name="inline.class"/>
+ </define>
+ <define name="text_model">
+ <parentRef name="inline.model"/>
+ </define>
+ <start>
+ <interleave>
+ <zeroOrMore>
+ <ref name="bibref"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="break"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ref"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="cite"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="text"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="emph"/>
+ </zeroOrMore>
+ </interleave>
+ </start>
+ </include>
+ </grammar>
+ </define>
+ <define name="plike.class" combine="interleave">
+ <grammar>
+ <include href="LaTeXML.rng">
+ <define name="Common.attributes">
+ <parentRef name="id.attribs"/>
+ </define>
+ <define name="Inline.class">
+ <parentRef name="inline.class"/>
+ </define>
+ <define name="Block.class">
+ <parentRef name="plike.class"/>
+ </define>
+ <!-- Flow.class = parent flow.class -->
+ <define name="text_model">
+ <parentRef name="inline.model"/>
+ </define>
+ <define name="listingblock_model">
+ <parentRef name="plike.class"/>
+ </define>
+ <start>
+ <interleave>
+ <zeroOrMore>
+ <ref name="p"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tabular"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="equation"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="equationgroup"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="figure"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="graphics"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="verbatim"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="listingblock"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="listing"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="itemize"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="enumerate"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="description"/>
+ </zeroOrMore>
+ </interleave>
+ </start>
+ </include>
+ </grammar>
+ </define>
+ <define name="tikz">
+ <element name="tikz">
+ <text/>
+ </element>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <a:documentation>we allow various LaTeXML elements as a top-level elements,
+they will be converted by XSLT later</a:documentation>
+ <grammar>
+ <include href="LaTeXML.rng">
+ <define name="Common.attributes" combine="interleave">
+ <parentRef name="id.attribs"/>
+ </define>
+ <define name="Inline.class">
+ <parentRef name="inline.class"/>
+ </define>
+ <define name="Block.class">
+ <parentRef name="plike.class"/>
+ </define>
+ <define name="Para.class">
+ <parentRef name="omdoc.class"/>
+ </define>
+ <!-- Flow.class = parent flow.class -->
+ <define name="text_model">
+ <parentRef name="inline.model"/>
+ </define>
+ <define name="listingblock_model">
+ <parentRef name="plike.class"/>
+ </define>
+ <start>
+ <interleave>
+ <zeroOrMore>
+ <ref name="para"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="figure"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="table"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="listing"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="itemize"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="enumerate"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="description"/>
+ </zeroOrMore>
+ </interleave>
+ </start>
+ </include>
+ </grammar>
+ </define>
+ <define name="backmatter" combine="interleave">
+ <grammar>
+ <include href="LaTeXML.rng">
+ <define name="Common.attributes" combine="interleave">
+ <parentRef name="id.attribs"/>
+ </define>
+ <define name="Inline.class">
+ <parentRef name="inline.class"/>
+ </define>
+ <define name="Block.class">
+ <parentRef name="plike.class"/>
+ </define>
+ <define name="Para.class">
+ <parentRef name="omdoc.class"/>
+ </define>
+ <!-- Flow.class = parent flow.class -->
+ <define name="text_model">
+ <parentRef name="inline.model"/>
+ </define>
+ <define name="listingblock_model">
+ <parentRef name="plike.class"/>
+ </define>
+ <start>
+ <zeroOrMore>
+ <ref name="bibliography"/>
+ </zeroOrMore>
+ </start>
+ </include>
+ </grammar>
+ </define>
+ <define name="lesubparagraph">
+ <a:documentation>we prepare some nested content models for sectioning elements</a:documentation>
+ <zeroOrMore>
+ <ref name="subparagraph"/>
+ </zeroOrMore>
+ </define>
+ <define name="leparagraph">
+ <interleave>
+ <zeroOrMore>
+ <ref name="paragraph"/>
+ </zeroOrMore>
+ <ref name="lesubparagraph"/>
+ </interleave>
+ </define>
+ <define name="lesubsubsection">
+ <interleave>
+ <zeroOrMore>
+ <ref name="subsubsection"/>
+ </zeroOrMore>
+ <ref name="leparagraph"/>
+ </interleave>
+ </define>
+ <define name="lesubsection">
+ <interleave>
+ <zeroOrMore>
+ <ref name="subsection"/>
+ </zeroOrMore>
+ <ref name="lesubsubsection"/>
+ </interleave>
+ </define>
+ <define name="lesection">
+ <interleave>
+ <zeroOrMore>
+ <ref name="section"/>
+ </zeroOrMore>
+ <ref name="lesubsection"/>
+ </interleave>
+ </define>
+ <define name="lechapter">
+ <interleave>
+ <zeroOrMore>
+ <ref name="chapter"/>
+ </zeroOrMore>
+ <ref name="lesection"/>
+ </interleave>
+ </define>
+ <define name="theory.chapter">
+ <a:documentation>they need to be able to nest theories transparently</a:documentation>
+ <element name="theory">
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <ref name="constitutive.class"/>
+ <ref name="lesection"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="theory.section">
+ <element name="theory">
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <ref name="constitutive.class"/>
+ <ref name="lesubsection"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="theory.subsection">
+ <element name="theory">
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <ref name="constitutive.class"/>
+ <ref name="lesubsubsection"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="theory.subsubsection">
+ <element name="theory">
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <ref name="constitutive.class"/>
+ <ref name="leparagraph"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="theory.paragraph">
+ <element name="theory">
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <ref name="constitutive.class"/>
+ <ref name="lesubparagraph"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="theory.subparagraph">
+ <element name="theory">
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <ref name="constitutive.class"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="sectional.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="chapter">
+ <a:documentation>and now the elemens themselves</a:documentation>
+ <element name="chapter">
+ <interleave>
+ <ref name="sectional.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <zeroOrMore>
+ <ref name="theory.chapter"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="section">
+ <element name="section">
+ <interleave>
+ <ref name="sectional.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <zeroOrMore>
+ <ref name="theory.section"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="subsection">
+ <element name="subsection">
+ <interleave>
+ <ref name="sectional.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <zeroOrMore>
+ <ref name="theory.subsection"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="subsubsection">
+ <element name="subsubsection">
+ <interleave>
+ <ref name="sectional.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <zeroOrMore>
+ <ref name="theory.subsubsection"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="paragraph">
+ <element name="paragraph">
+ <interleave>
+ <ref name="sectional.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <zeroOrMore>
+ <ref name="theory.paragraph"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="subparagraph">
+ <element name="subparagraph">
+ <interleave>
+ <ref name="sectional.attribs"/>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ <zeroOrMore>
+ <ref name="theory.subparagraph"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdoc-common.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc-common.rng
new file mode 100644
index 00000000000..17d8676e6ad
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc-common.rng
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Common attributes
+ $Id: omdoc-common.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoc-common.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2010 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar xmlns:omdoc="http://omdoc.org/ns" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!--
+ all the explicitly namespaced attributes, except xml:lang, which
+ is handled explicitly
+ -->
+ <define name="nonlocal.attribs">
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ <nsName ns="http://www.w3.org/XML/1998/namespace"/>
+ </except>
+ </anyName>
+ <data type="string"/>
+ </attribute>
+ </zeroOrMore>
+ </define>
+ <!-- the attributes for CSS and PRES styling -->
+ <define name="css.attribs">
+ <interleave>
+ <optional>
+ <attribute name="style">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="omdocref">
+ <data type="anyURI"/>
+ </define>
+ <!-- an URI reference pointing to an OMDoc fragment -->
+ <define name="omdocrefs">
+ <list>
+ <zeroOrMore>
+ <data type="anyURI"/>
+ </zeroOrMore>
+ </list>
+ </define>
+ <!-- a whitespace-separated list of omdocref -->
+ <define name="xref.attrib">
+ <attribute name="xref">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="tref">
+ <attribute name="tref">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <!-- for the moment, we may get regexp at some point. -->
+ <define name="curie">
+ <data type="string"/>
+ </define>
+ <define name="curies">
+ <data type="string"/>
+ </define>
+ <define name="safecurie">
+ <data type="string"/>
+ </define>
+ <define name="about.attrib">
+ <attribute name="about">
+ <choice>
+ <data type="anyURI"/>
+ <ref name="safecurie"/>
+ </choice>
+ </attribute>
+ </define>
+ <define name="xmlbase.attrib">
+ <attribute name="xml:base">
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="xmlid.attrib">
+ <attribute name="xml:id">
+ <data type="ID"/>
+ </attribute>
+ </define>
+ <define name="idrest.attribs">
+ <interleave>
+ <ref name="css.attribs"/>
+ <ref name="nonlocal.attribs"/>
+ <optional>
+ <ref name="about.attrib"/>
+ </optional>
+ <optional>
+ <ref name="xmlbase.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="id.attribs">
+ <interleave>
+ <optional>
+ <ref name="xmlid.attrib"/>
+ </optional>
+ <ref name="idrest.attribs"/>
+ </interleave>
+ </define>
+ <define name="toplevel.attribs">
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="generated-from">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="iso639">
+ <choice>
+ <value>aa</value>
+ <value>ab</value>
+ <value>af</value>
+ <value>am</value>
+ <value>ar</value>
+ <value>as</value>
+ <value>ay</value>
+ <value>az</value>
+ <value>ba</value>
+ <value>be</value>
+ <value>bg</value>
+ <value>bh</value>
+ <value>bi</value>
+ <value>bn</value>
+ <value>bo</value>
+ <value>br</value>
+ <value>ca</value>
+ <value>co</value>
+ <value>cs</value>
+ <value>cy</value>
+ <value>da</value>
+ <value>de</value>
+ <value>dz</value>
+ <value>el</value>
+ <value>en</value>
+ <value>eo</value>
+ <value>es</value>
+ <value>et</value>
+ <value>eu</value>
+ <value>fa</value>
+ <value>fi</value>
+ <value>fj</value>
+ <value>fo</value>
+ <value>fr</value>
+ <value>fy</value>
+ <value>ga</value>
+ <value>gd</value>
+ <value>gl</value>
+ <value>gn</value>
+ <value>gu</value>
+ <value>ha</value>
+ <value>he</value>
+ <value>hi</value>
+ <value>hr</value>
+ <value>hu</value>
+ <value>hy</value>
+ <value>ia</value>
+ <value>ie</value>
+ <value>ik</value>
+ <value>id</value>
+ <value>is</value>
+ <value>it</value>
+ <value>iu</value>
+ <value>ja</value>
+ <value>jv</value>
+ <value>ka</value>
+ <value>kk</value>
+ <value>kl</value>
+ <value>km</value>
+ <value>kn</value>
+ <value>ko</value>
+ <value>ks</value>
+ <value>ku</value>
+ <value>ky</value>
+ <value>la</value>
+ <value>ln</value>
+ <value>lo</value>
+ <value>lt</value>
+ <value>lv</value>
+ <value>mg</value>
+ <value>mi</value>
+ <value>mk</value>
+ <value>ml</value>
+ <value>mn</value>
+ <value>mo</value>
+ <value>mr</value>
+ <value>ms</value>
+ <value>mt</value>
+ <value>my</value>
+ <value>na</value>
+ <value>ne</value>
+ <value>nl</value>
+ <value>no</value>
+ <value>oc</value>
+ <value>om</value>
+ <value>or</value>
+ <value>pa</value>
+ <value>pl</value>
+ <value>ps</value>
+ <value>pt</value>
+ <value>qu</value>
+ <value>rm</value>
+ <value>rn</value>
+ <value>ro</value>
+ <value>ru</value>
+ <value>rw</value>
+ <value>sa</value>
+ <value>sd</value>
+ <value>sg</value>
+ <value>sh</value>
+ <value>si</value>
+ <value>sk</value>
+ <value>sl</value>
+ <value>sm</value>
+ <value>sn</value>
+ <value>so</value>
+ <value>sq</value>
+ <value>sr</value>
+ <value>ss</value>
+ <value>st</value>
+ <value>su</value>
+ <value>sv</value>
+ <value>sw</value>
+ <value>ta</value>
+ <value>te</value>
+ <value>tg</value>
+ <value>th</value>
+ <value>ti</value>
+ <value>tk</value>
+ <value>tl</value>
+ <value>tn</value>
+ <value>to</value>
+ <value>tr</value>
+ <value>ts</value>
+ <value>tt</value>
+ <value>tw</value>
+ <value>ug</value>
+ <value>uk</value>
+ <value>ur</value>
+ <value>uz</value>
+ <value>vi</value>
+ <value>vo</value>
+ <value>wo</value>
+ <value>xh</value>
+ <value>yi</value>
+ <value>yo</value>
+ <value>za</value>
+ <value>zh</value>
+ <value>zu</value>
+ </choice>
+ </define>
+ <define name="xml.lang.attrib">
+ <optional>
+ <attribute name="xml:lang">
+ <ref name="iso639"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Anything">
+ <zeroOrMore>
+ <choice>
+ <ref name="AnyElement"/>
+ <text/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="AnyElement">
+ <element>
+ <anyName/>
+ <ref name="AnyAttribute"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="AnyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="AnyAttribute">
+ <zeroOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </zeroOrMore>
+ </define>
+ <define name="inline.class">
+ <a:documentation>useful classes to be extended in the modules</a:documentation>
+ <empty/>
+ </define>
+ <define name="omdoc.class">
+ <empty/>
+ </define>
+ <define name="plike.class">
+ <empty/>
+ </define>
+ <define name="inline.model">
+ <a:documentation>mixed models </a:documentation>
+ <interleave>
+ <text/>
+ <ref name="inline.class"/>
+ </interleave>
+ </define>
+ <define name="metadata.model" combine="interleave">
+ <ref name="dublincore"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdoc-xhtml.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc-xhtml.rng
new file mode 100644
index 00000000000..83b930ecb61
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc-xhtml.rng
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) without the XHTML elements
+ $Id: omdoc.rnc 8704 2010-09-21 19:44:01Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/rnc+xhtml/omdoc.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+ -->
+ <start>
+ <ref name="omdoc"/>
+ </start>
+ <include href="omdoc-common.rng"/>
+ <include href="omdocmobj.rng"/>
+ <include href="omdocmeta.rng"/>
+ <include href="omdocdoc.rng"/>
+ <include href="omdocdc.rng"/>
+ <include href="omdoccc.rng"/>
+ <include href="omdocmtxt.rng"/>
+ <include href="omdocrt.rng"/>
+ <include href="omdocpres.rng"/>
+ <include href="omdocst.rng"/>
+ <include href="omdoccth.rng"/>
+ <include href="omdocdg.rng"/>
+ <include href="omdocpf.rng"/>
+ <include href="omdocext.rng"/>
+ <include href="omdocquiz.rng"/>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdoc.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc.rng
new file mode 100644
index 00000000000..48c9e7d9ba3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdoc.rng
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3)
+ $Id: omdoc.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoc.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+ -->
+ <start>
+ <ref name="omdoc"/>
+ </start>
+ <include href="omdoc-common.rng"/>
+ <include href="omdocmobj.rng"/>
+ <include href="omdocmeta.rng"/>
+ <include href="omdocdoc.rng"/>
+ <include href="omdocdc.rng"/>
+ <include href="omdoccc.rng"/>
+ <include href="omdocmtxt.rng"/>
+ <include href="omdocrt.rng"/>
+ <include href="omdocpres.rng"/>
+ <include href="omdocst.rng"/>
+ <include href="omdoccth.rng"/>
+ <include href="omdocdg.rng"/>
+ <include href="omdocpf.rng"/>
+ <include href="omdocadt.rng"/>
+ <include href="omdocext.rng"/>
+ <include href="omdocquiz.rng"/>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocadt.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocadt.rng
new file mode 100644
index 00000000000..5fe330eb6bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocadt.rng
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module ADT
+ $Id: omdocadt.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocadt.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="omdoc.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="adt"/>
+ </zeroOrMore>
+ </define>
+ <define name="adt.sym.attrib">
+ <ref name="id.attribs"/>
+ <ref name="scope.attrib"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </define>
+ <!--
+ adts are abstract data types, they are short forms for groups of symbols
+ and their definitions, therefore, they have much the same attributes.
+ -->
+ <define name="adt.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <attribute name="parameters">
+ <list>
+ <zeroOrMore>
+ <data type="NCName"/>
+ </zeroOrMore>
+ </list>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="adt.class">
+ <oneOrMore>
+ <ref name="sortdef"/>
+ </oneOrMore>
+ </define>
+ <define name="adt.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <ref name="adt.class"/>
+ </interleave>
+ </define>
+ <define name="adt">
+ <element name="adt">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="adt.attribs"/>
+ <ref name="adt.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="adttype">
+ <choice>
+ <value>loose</value>
+ <value>generated</value>
+ <value>free</value>
+ </choice>
+ </define>
+ <define name="sortdef.attribs">
+ <interleave>
+ <ref name="adt.sym.attrib"/>
+ <optional>
+ <attribute name="role">
+ <value>sort</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="adttype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="sortdef.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="constructor"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="insort"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="recognizer"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="sortdef">
+ <element name="sortdef">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="sortdef.attribs"/>
+ <ref name="sortdef.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="insort.attribs">
+ <attribute name="for">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="insort.model">
+ <empty/>
+ </define>
+ <define name="insort">
+ <element name="insort">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="insort.attribs"/>
+ <ref name="insort.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="constructor.attribs">
+ <interleave>
+ <ref name="adt.sym.attrib"/>
+ <optional>
+ <ref name="sym.role.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="constructor.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="argument"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="constructor">
+ <element name="constructor">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="constructor.attribs"/>
+ <ref name="constructor.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="recognizer.attribs">
+ <interleave>
+ <ref name="adt.sym.attrib"/>
+ <optional>
+ <ref name="sym.role.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="recognizer.model">
+ <ref name="metadata.class"/>
+ </define>
+ <define name="recognizer">
+ <element name="recognizer">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="recognizer.attribs"/>
+ <ref name="recognizer.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="argument.attribs">
+ <empty/>
+ </define>
+ <define name="argument.model">
+ <interleave>
+ <ref name="type"/>
+ <optional>
+ <ref name="selector"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="argument">
+ <element name="argument">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="argument.attribs"/>
+ <ref name="argument.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="selector.attribs">
+ <interleave>
+ <ref name="adt.sym.attrib"/>
+ <optional>
+ <ref name="sym.role.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="total">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="selector.model">
+ <ref name="metadata.class"/>
+ </define>
+ <define name="selector">
+ <element name="selector">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="selector.attribs"/>
+ <ref name="selector.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocattribs.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocattribs.rng
new file mode 100644
index 00000000000..2d66607c5c0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocattribs.rng
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Common attributes
+ $Id: omdocattribs.rnc 8653 2010-08-18 06:57:10Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/rnc/omdocattribs.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!--
+ all the explicitly namespaced attributes, except xml:lang, which
+ is handled explicitly
+ -->
+ <define name="nonlocal-attribs">
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ <nsName ns="http://www.w3.org/XML/1998/namespace"/>
+ </except>
+ </anyName>
+ <data type="string"/>
+ </attribute>
+ </zeroOrMore>
+ </define>
+ <!-- the attributes for CSS and PRES styling -->
+ <define name="css.attribs">
+ <interleave>
+ <optional>
+ <attribute name="style">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="omdocref">
+ <data type="anyURI"/>
+ </define>
+ <!-- an URI reference pointing to an OMDoc fragment -->
+ <define name="omdocrefs">
+ <list>
+ <zeroOrMore>
+ <data type="anyURI"/>
+ </zeroOrMore>
+ </list>
+ </define>
+ <!-- a whitespace-separated list of omdocref -->
+ <define name="xref.attrib">
+ <attribute name="xref">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="idrest.attribs">
+ <interleave>
+ <ref name="css.attribs"/>
+ <zeroOrMore>
+ <ref name="nonlocal-attribs"/>
+ </zeroOrMore>
+ <optional>
+ <attribute name="xml:base">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="about">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="id.attrib">
+ <interleave>
+ <optional>
+ <attribute name="xml:id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ <ref name="idrest.attribs"/>
+ </interleave>
+ </define>
+ <define name="omdoc.toplevel.attribs">
+ <ref name="id.attrib"/>
+ <optional>
+ <attribute name="generated-from">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </define>
+ <!--
+ The current XML-recommendation doesn't yet support the
+ three-letter short names for languages (ISO 693-2). So
+ the following section will be using the two-letter
+ (ISO 693-1) encoding for the languages.
+
+ en : English, de : German, fr : French,
+ la : Latin, it : Italian, nl : Dutch,
+ ru : Russian, pl : Polish, es : Spanish,
+ tr : Turkish, zh : Chinese, ja : Japanese,
+ ko : Korean ...
+ -->
+ <define name="iso639">
+ <choice>
+ <value>aa</value>
+ <value>ab</value>
+ <value>af</value>
+ <value>am</value>
+ <value>ar</value>
+ <value>as</value>
+ <value>ay</value>
+ <value>az</value>
+ <value>ba</value>
+ <value>be</value>
+ <value>bg</value>
+ <value>bh</value>
+ <value>bi</value>
+ <value>bn</value>
+ <value>bo</value>
+ <value>br</value>
+ <value>ca</value>
+ <value>co</value>
+ <value>cs</value>
+ <value>cy</value>
+ <value>da</value>
+ <value>de</value>
+ <value>dz</value>
+ <value>el</value>
+ <value>en</value>
+ <value>eo</value>
+ <value>es</value>
+ <value>et</value>
+ <value>eu</value>
+ <value>fa</value>
+ <value>fi</value>
+ <value>fj</value>
+ <value>fo</value>
+ <value>fr</value>
+ <value>fy</value>
+ <value>ga</value>
+ <value>gd</value>
+ <value>gl</value>
+ <value>gn</value>
+ <value>gu</value>
+ <value>ha</value>
+ <value>he</value>
+ <value>hi</value>
+ <value>hr</value>
+ <value>hu</value>
+ <value>hy</value>
+ <value>ia</value>
+ <value>ie</value>
+ <value>ik</value>
+ <value>id</value>
+ <value>is</value>
+ <value>it</value>
+ <value>iu</value>
+ <value>ja</value>
+ <value>jv</value>
+ <value>ka</value>
+ <value>kk</value>
+ <value>kl</value>
+ <value>km</value>
+ <value>kn</value>
+ <value>ko</value>
+ <value>ks</value>
+ <value>ku</value>
+ <value>ky</value>
+ <value>la</value>
+ <value>ln</value>
+ <value>lo</value>
+ <value>lt</value>
+ <value>lv</value>
+ <value>mg</value>
+ <value>mi</value>
+ <value>mk</value>
+ <value>ml</value>
+ <value>mn</value>
+ <value>mo</value>
+ <value>mr</value>
+ <value>ms</value>
+ <value>mt</value>
+ <value>my</value>
+ <value>na</value>
+ <value>ne</value>
+ <value>nl</value>
+ <value>no</value>
+ <value>oc</value>
+ <value>om</value>
+ <value>or</value>
+ <value>pa</value>
+ <value>pl</value>
+ <value>ps</value>
+ <value>pt</value>
+ <value>qu</value>
+ <value>rm</value>
+ <value>rn</value>
+ <value>ro</value>
+ <value>ru</value>
+ <value>rw</value>
+ <value>sa</value>
+ <value>sd</value>
+ <value>sg</value>
+ <value>sh</value>
+ <value>si</value>
+ <value>sk</value>
+ <value>sl</value>
+ <value>sm</value>
+ <value>sn</value>
+ <value>so</value>
+ <value>sq</value>
+ <value>sr</value>
+ <value>ss</value>
+ <value>st</value>
+ <value>su</value>
+ <value>sv</value>
+ <value>sw</value>
+ <value>ta</value>
+ <value>te</value>
+ <value>tg</value>
+ <value>th</value>
+ <value>ti</value>
+ <value>tk</value>
+ <value>tl</value>
+ <value>tn</value>
+ <value>to</value>
+ <value>tr</value>
+ <value>ts</value>
+ <value>tt</value>
+ <value>tw</value>
+ <value>ug</value>
+ <value>uk</value>
+ <value>ur</value>
+ <value>uz</value>
+ <value>vi</value>
+ <value>vo</value>
+ <value>wo</value>
+ <value>xh</value>
+ <value>yi</value>
+ <value>yo</value>
+ <value>za</value>
+ <value>zh</value>
+ <value>zu</value>
+ </choice>
+ </define>
+ <define name="xml.lang.attrib">
+ <optional>
+ <attribute name="xml:lang">
+ <ref name="iso639"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdoccc.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdoccc.rng
new file mode 100644
index 00000000000..100d6aaa183
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdoccc.rng
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!--
+ A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module CC
+ $Id: omdoccc.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoccc.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2010 Michael Kohlhase, released under the GNU Public License (GPL)
+ -->
+ <!-- we include the OMDoc version of cc metadata and specialize the description -->
+ <define name="license">
+ <grammar>
+ <include href="creativecommons.rng">
+ <define name="description">
+ <parentRef name="plike.class"/>
+ </define>
+ </include>
+ </grammar>
+ </define>
+ <define name="metadata.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="license"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdoccth.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdoccth.rng
new file mode 100644
index 00000000000..d07a5b680dd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdoccth.rng
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module CTH
+ $Id: omdoccth.rnc 8979 2011-11-29 04:56:59Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdoccth.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="constitutive.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="inclusion"/>
+ </zeroOrMore>
+ </define>
+ <define name="imports.model" combine="interleave">
+ <interleave>
+ <optional>
+ <ref name="morphism"/>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>local</value>
+ <value>global</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="conservativity">
+ <choice>
+ <value>conservative</value>
+ <value>monomorphism</value>
+ <value>definitional</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="conservativity-just">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="toplevel.attribs" combine="interleave">
+ <optional>
+ <attribute name="generated-via">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="constitutive.attribs" combine="interleave">
+ <optional>
+ <attribute name="generated-via">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="theory-inclusion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="axiom-inclusion"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="theory-inclusion.justification">
+ <zeroOrMore>
+ <ref name="obligation"/>
+ </zeroOrMore>
+ </define>
+ <define name="axiom-inclusion.justification">
+ <zeroOrMore>
+ <ref name="obligation"/>
+ </zeroOrMore>
+ </define>
+ <define name="fromto.attrib">
+ <interleave>
+ <ref name="from.attrib"/>
+ <attribute name="to">
+ <ref name="omdocref"/>
+ </attribute>
+ </interleave>
+ </define>
+ <!-- attributes 'to' and 'from' are URIref -->
+ <define name="morphism.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="hiding">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="base">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="morphism.model">
+ <optional>
+ <ref name="def.eq"/>
+ </optional>
+ </define>
+ <define name="morphism">
+ <element name="morphism">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="morphism.attribs"/>
+ <ref name="morphism.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- base points to some other morphism it extends -->
+ <define name="inclusion.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <attribute name="via">
+ <ref name="omdocref"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="inclusion.model">
+ <empty/>
+ </define>
+ <define name="inclusion">
+ <element name="inclusion">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="inclusion.attribs"/>
+ <ref name="inclusion.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- via points to a theory-inclusion -->
+ <define name="theory-inclusion.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <ref name="fromto.attrib"/>
+ </interleave>
+ </define>
+ <define name="theory-inclusion.model">
+ <interleave>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <optional>
+ <ref name="morphism"/>
+ </optional>
+ <ref name="theory-inclusion.justification"/>
+ </interleave>
+ </define>
+ <define name="theory-inclusion">
+ <element name="theory-inclusion">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="theory-inclusion.attribs"/>
+ <ref name="theory-inclusion.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="axiom-inclusion.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <ref name="fromto.attrib"/>
+ </interleave>
+ </define>
+ <define name="axiom-inclusion.model">
+ <interleave>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <optional>
+ <ref name="morphism"/>
+ </optional>
+ <ref name="axiom-inclusion.justification"/>
+ </interleave>
+ </define>
+ <define name="axiom-inclusion">
+ <element name="theory-inclusion">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="axiom-inclusion.attribs"/>
+ <ref name="axiom-inclusion.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="obligation.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <attribute name="induced-by">
+ <ref name="omdocref"/>
+ </attribute>
+ <attribute name="assertion">
+ <ref name="omdocref"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="obligation.model">
+ <empty/>
+ </define>
+ <define name="obligation">
+ <element name="obligation">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="obligation.attribs"/>
+ <ref name="obligation.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
+<!--
+ attribute 'assertion' is a URIref, points to an assertion
+ that is the proof obligation induced by the axiom or definition
+ specified by 'induced-by'.
+-->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocdc.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocdc.rng
new file mode 100644
index 00000000000..cd1cc409c60
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocdc.rng
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module DC
+ $Id: omdocdc.rnc 8968 2011-09-07 05:37:09Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocdc.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2010 Michael Kohlhase, released under the GNU Public License (GPL)
+ -->
+ <!-- we include the dublin core and MARC elements, filling them with our content types -->
+ <define name="dc.common">
+ <interleave>
+ <ref name="id.attribs"/>
+ <ref name="nonlocal.attribs"/>
+ </interleave>
+ </define>
+ <define name="dc.comlang">
+ <interleave>
+ <ref name="dc.common"/>
+ <ref name="xml.lang.attrib"/>
+ </interleave>
+ </define>
+ <define name="dublincore">
+ <grammar>
+ <include href="MARCRelators.rng"/>
+ <include href="dublincore.rng">
+ <define name="dc.date">
+ <interleave>
+ <parentRef name="dc.common"/>
+ <optional>
+ <attribute name="action">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="who">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <choice>
+ <data type="date"/>
+ <data type="dateTime"/>
+ </choice>
+ </interleave>
+ </define>
+ <define name="dc.identifier">
+ <choice>
+ <parentRef name="tref"/>
+ <interleave>
+ <parentRef name="dc.common"/>
+ <attribute name="scheme">
+ <data type="NMTOKEN"/>
+ </attribute>
+ <text/>
+ </interleave>
+ </choice>
+ </define>
+ <define name="dc.type">
+ <choice>
+ <parentRef name="tref"/>
+ <interleave>
+ <parentRef name="dc.common"/>
+ <choice>
+ <value>Dataset</value>
+ <value>Text</value>
+ <value>Collection</value>
+ </choice>
+ </interleave>
+ </choice>
+ </define>
+ <define name="dc.inline">
+ <choice>
+ <parentRef name="tref"/>
+ <interleave>
+ <parentRef name="dc.comlang"/>
+ <parentRef name="inline.model"/>
+ </interleave>
+ </choice>
+ </define>
+ <define name="dc.text">
+ <choice>
+ <parentRef name="tref"/>
+ <interleave>
+ <parentRef name="dc.comlang"/>
+ <parentRef name="plike.class"/>
+ </interleave>
+ </choice>
+ </define>
+ <define name="dc.person">
+ <choice>
+ <parentRef name="tref"/>
+ <interleave>
+ <parentRef name="dc.common"/>
+ <optional>
+ <attribute name="role">
+ <ref name="MARCRelators"/>
+ </attribute>
+ </optional>
+ <parentRef name="inline.model"/>
+ </interleave>
+ </choice>
+ </define>
+ <define name="dc.rights">
+ <choice>
+ <parentRef name="tref"/>
+ <interleave>
+ <parentRef name="dc.comlang"/>
+ <parentRef name="plike.class"/>
+ </interleave>
+ </choice>
+ </define>
+ <define name="dc.source">
+ <parentRef name="plike.class"/>
+ </define>
+ </include>
+ </grammar>
+ </define>
+ <define name="metadata.model" combine="interleave">
+ <ref name="dublincore"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocdg.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocdg.rng
new file mode 100644
index 00000000000..735bfd6ed89
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocdg.rng
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module CTH
+ $Id: omdocdg.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocdg.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="decomposition"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="path-just"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="omdoccth.theory-inclusion.justification" combine="interleave">
+ <zeroOrMore>
+ <ref name="decomposition"/>
+ </zeroOrMore>
+ </define>
+ <define name="omdoccth.axiom-inclusion.justification" combine="interleave">
+ <zeroOrMore>
+ <ref name="path-just"/>
+ </zeroOrMore>
+ </define>
+ <define name="decomposition.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ <attribute name="links">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="decomposition.model">
+ <empty/>
+ </define>
+ <define name="decomposition">
+ <element name="decomposition">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="decomposition.attribs"/>
+ <ref name="decomposition.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!--
+ attribute 'for' points to a 'theory-inclusion', which this
+ element justifies; attribute 'links' is an URIrefs, points to a
+ list of axiom-inlcusions and theory-inclusions
+ -->
+ <define name="path-just.attribs">
+ <interleave>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ <ref name="id.attribs"/>
+ <attribute name="local">
+ <ref name="omdocref"/>
+ </attribute>
+ <attribute name="globals">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="path-just.model">
+ <empty/>
+ </define>
+ <define name="path-just">
+ <element name="path-just">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="path-just.attribs"/>
+ <ref name="path-just.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
+<!--
+ attribute 'local' is an URIref, points to axiom-inclusion
+ 'globals' is an URIrefs, points to a list of theory-inclusions
+-->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocdoc.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocdoc.rng
new file mode 100644
index 00000000000..bac94d26352
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocdoc.rng
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module DOC
+ $Id: omdocdoc.rnc 8972 2011-09-09 11:36:34Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocdoc.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- extend the stuff that can go into a mathematical text -->
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="ignore"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tableofcontents"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="ignore.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="comment">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="ignore.model">
+ <ref name="Anything"/>
+ </define>
+ <define name="ignore">
+ <element name="ignore">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="ignore.attribs"/>
+ <ref name="ignore.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="tableofcontents.attribs">
+ <optional>
+ <attribute name="level">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tableofcontents.model">
+ <empty/>
+ </define>
+ <define name="tableofcontents">
+ <element name="tableofcontents">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="tableofcontents.attribs"/>
+ <ref name="tableofcontents.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="index.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="index.model">
+ <empty/>
+ </define>
+ <define name="index">
+ <element name="index">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="index.attribs"/>
+ <ref name="index.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="bibliography.attribs">
+ <ref name="id.attribs"/>
+ <attribute name="files"/>
+ </define>
+ <define name="bibliography.model">
+ <empty/>
+ </define>
+ <define name="bibliography">
+ <element name="bibliography">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="bibliography.attribs"/>
+ <ref name="bibliography.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="group.attribs">
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="type">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="modules">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="layout"/>
+ </optional>
+ </define>
+ <define name="frontmatter">
+ <a:documentation>The &lt;omdoc&gt; and &lt;omgroup&gt; elements allow frontmatter and backmatter,
+which we will now define</a:documentation>
+ <interleave>
+ <ref name="metadata.class"/>
+ <optional>
+ <ref name="tableofcontents"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="backmatter">
+ <interleave>
+ <optional>
+ <ref name="index"/>
+ </optional>
+ <optional>
+ <ref name="bibliography"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="docstruct.class">
+ <zeroOrMore>
+ <ref name="omgroup"/>
+ </zeroOrMore>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <ref name="docstruct.class"/>
+ </define>
+ <define name="mainmatter">
+ <ref name="omdoc.class"/>
+ </define>
+ <define name="omgroup.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <ref name="group.attribs"/>
+ </interleave>
+ </define>
+ <define name="omgroup.model">
+ <ref name="frontmatter"/>
+ <ref name="mainmatter"/>
+ <ref name="backmatter"/>
+ </define>
+ <define name="omgroup">
+ <element name="omgroup">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="omgroup.attribs"/>
+ <ref name="omgroup.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="omdoc.attribs">
+ <a:documentation>the model of the document root only differs from &lt;omgroup&gt; in the version attribute</a:documentation>
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <ref name="group.attribs"/>
+ <optional>
+ <attribute name="version">
+ <data type="string">
+ <param name="pattern">1.3</param>
+ </data>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="omdoc.model">
+ <ref name="frontmatter"/>
+ <ref name="mainmatter"/>
+ <ref name="backmatter"/>
+ </define>
+ <define name="omdoc">
+ <element name="omdoc">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="omdoc.attribs"/>
+ <ref name="omdoc.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- the following is for legacy only, and will be removed soon. -->
+ <define name="ref.attribs">
+ <a:documentation>deprecated ################################</a:documentation>
+ <interleave>
+ <ref name="id.attribs"/>
+ <ref name="xref.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>include</value>
+ <value>cite</value>
+ </choice>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="ref.model">
+ <empty/>
+ </define>
+ <define name="ref">
+ <element name="ref">
+ <interleave>
+ <ref name="ref.attribs"/>
+ <ref name="ref.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="ref"/>
+ </zeroOrMore>
+ </define>
+ <define name="inline.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="ref"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocext.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocext.rng
new file mode 100644
index 00000000000..b7672c89a65
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocext.rng
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module EXT
+ $Id: omdocext.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocext.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="plike.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="omlet"/>
+ </zeroOrMore>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="private"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="code"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="private.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="requires">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="reformulates">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="private.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <oneOrMore>
+ <ref name="data"/>
+ </oneOrMore>
+ </interleave>
+ </define>
+ <define name="private">
+ <element name="private">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="private.attribs"/>
+ <ref name="private.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!--
+ reformulates is a URIref to the omdoc elements that are reformulated by the
+ system-specific information in this element
+ -->
+ <define name="code.attribs">
+ <ref name="private.attribs"/>
+ </define>
+ <define name="code.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="data"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="input"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="output"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="effect"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="code">
+ <element name="code">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="code.attribs"/>
+ <ref name="code.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="input.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="input.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="input">
+ <element name="input">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="input.attribs"/>
+ <ref name="input.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="output.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="output.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="output">
+ <element name="output">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="output.attribs"/>
+ <ref name="output.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="effect.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="effect.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="effect">
+ <element name="effect">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="effect.attribs"/>
+ <ref name="effect.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="data.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="size">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pto">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pto-version">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="original">
+ <choice>
+ <value>external</value>
+ <value>local</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="data.textformat">
+ <value>TeX</value>
+ </define>
+ <define name="data.text">
+ <interleave>
+ <ref name="data.attribs"/>
+ <optional>
+ <attribute name="format">
+ <ref name="data.textformat"/>
+ </attribute>
+ </optional>
+ <text/>
+ </interleave>
+ </define>
+ <define name="data.any">
+ <interleave>
+ <ref name="data.attribs"/>
+ <optional>
+ <attribute name="format">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <ref name="Anything"/>
+ </interleave>
+ </define>
+ <define name="data.model">
+ <choice>
+ <ref name="data.text"/>
+ <ref name="data.any"/>
+ </choice>
+ </define>
+ <define name="data">
+ <element name="data">
+ <choice>
+ <ref name="tref"/>
+ <ref name="data.model"/>
+ </choice>
+ </element>
+ </define>
+ <define name="omlet.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="action">
+ <choice>
+ <value>display</value>
+ <value>execute</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="show">
+ <choice>
+ <value>new</value>
+ <value>replace</value>
+ <value>embed</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="actuate">
+ <choice>
+ <value>onPresent</value>
+ <value>onLoad</value>
+ <value>onRequest</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="omlet.param">
+ <interleave>
+ <text/>
+ <ref name="inline.class"/>
+ <zeroOrMore>
+ <ref name="param"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="omlet.data">
+ <choice>
+ <attribute name="data">
+ <data type="anyURI"/>
+ </attribute>
+ <choice>
+ <ref name="private"/>
+ <ref name="code"/>
+ </choice>
+ </choice>
+ </define>
+ <define name="omlet.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <ref name="omlet.param"/>
+ <ref name="omlet.data"/>
+ </interleave>
+ </define>
+ <define name="omlet">
+ <element name="omlet">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="omlet.attribs"/>
+ <ref name="omlet.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="param.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <attribute name="name">
+ <data type="string"/>
+ </attribute>
+ <optional>
+ <attribute name="value">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valuetype">
+ <choice>
+ <value>data</value>
+ <value>ref</value>
+ <value>object</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="param.model">
+ <optional>
+ <ref name="mobj"/>
+ </optional>
+ </define>
+ <define name="param">
+ <element name="param">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="param.attribs"/>
+ <ref name="param.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocmeta.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocmeta.rng
new file mode 100644
index 00000000000..699dfa55937
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocmeta.rng
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module META
+ $Id: omdocmeta.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocmeta.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2007-2008 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="rel.attrib">
+ <attribute name="rel">
+ <ref name="curies"/>
+ </attribute>
+ </define>
+ <define name="rev.attrib">
+ <attribute name="rev">
+ <ref name="curies"/>
+ </attribute>
+ </define>
+ <define name="content.attrib">
+ <attribute name="content">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="resource.attrib">
+ <attribute name="resource">
+ <choice>
+ <data type="anyURI"/>
+ <ref name="safecurie"/>
+ </choice>
+ </attribute>
+ </define>
+ <define name="property.attrib">
+ <attribute name="property">
+ <ref name="curies"/>
+ </attribute>
+ </define>
+ <define name="datatype.attrib">
+ <attribute name="datatype">
+ <ref name="curie"/>
+ </attribute>
+ </define>
+ <define name="typeof.attrib">
+ <attribute name="typeof">
+ <ref name="curies"/>
+ </attribute>
+ </define>
+ <define name="meta.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <ref name="property.attrib"/>
+ </optional>
+ <optional>
+ <ref name="datatype.attrib"/>
+ </optional>
+ <ref name="xml.lang.attrib"/>
+ </interleave>
+ </define>
+ <define name="meta.model">
+ <choice>
+ <ref name="content.attrib"/>
+ <ref name="Anything"/>
+ <interleave>
+ <ref name="content.attrib"/>
+ <ref name="Anything"/>
+ </interleave>
+ </choice>
+ </define>
+ <define name="meta">
+ <element name="meta">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="meta.attribs"/>
+ <ref name="meta.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="mlink.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <ref name="rel.attrib"/>
+ </optional>
+ <optional>
+ <ref name="rev.attrib"/>
+ </optional>
+ <optional>
+ <ref name="resource.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="mlink.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="resource"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="mlink"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="meta"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="mlink.model">
+ <choice>
+ <attribute name="href">
+ <ref name="curie"/>
+ </attribute>
+ <ref name="mlink.class"/>
+ </choice>
+ </define>
+ <define name="mlink">
+ <element name="link">
+ <choice>
+ <ref name="tref"/>
+ <group>
+ <ref name="mlink.attribs"/>
+ <ref name="mlink.model"/>
+ </group>
+ </choice>
+ </element>
+ </define>
+ <define name="resource.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <ref name="typeof.attrib"/>
+ </optional>
+ <optional>
+ <ref name="about.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="resource.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="meta"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="mlink"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="resource">
+ <element name="resource">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="resource.attribs"/>
+ <ref name="resource.class"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="metadata.class">
+ <interleave>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="meta"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="mlink"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="metadata.model">
+ <ref name="metadata.class"/>
+ </define>
+ <define name="metadata.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="metadata">
+ <element name="metadata">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="metadata.attribs"/>
+ <ref name="metadata.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="rdfa.attribs">
+ <interleave>
+ <optional>
+ <ref name="rel.attrib"/>
+ </optional>
+ <optional>
+ <ref name="rev.attrib"/>
+ </optional>
+ <optional>
+ <ref name="content.attrib"/>
+ </optional>
+ <optional>
+ <ref name="about.attrib"/>
+ </optional>
+ <optional>
+ <ref name="resource.attrib"/>
+ </optional>
+ <optional>
+ <ref name="property.attrib"/>
+ </optional>
+ <optional>
+ <ref name="datatype.attrib"/>
+ </optional>
+ <optional>
+ <ref name="typeof.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="id.attribs" combine="interleave">
+ <ref name="rdfa.attribs"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocmobj.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocmobj.rng
new file mode 100644
index 00000000000..de29149f94e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocmobj.rng
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module MOBJ
+ $Id: omdocmobj.rnc 8973 2011-09-09 12:45:16Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocmobj.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2009 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- the legacy element, it can encapsulate the non-migrated formats -->
+ <define name="legacy.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="formalism">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <attribute name="format">
+ <data type="anyURI"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="legacy.model">
+ <ref name="Anything"/>
+ </define>
+ <define name="legacy">
+ <element name="legacy">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="legacy.attribs"/>
+ <ref name="legacy.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="nonom.attribs">
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ <nsName ns="http://www.openmath.org/OpenMath"/>
+ </except>
+ </anyName>
+ </attribute>
+ </zeroOrMore>
+ </define>
+ <define name="extom.attribs">
+ <interleave>
+ <ref name="idrest.attribs"/>
+ <ref name="nonom.attribs"/>
+ </interleave>
+ </define>
+ <define name="omobj">
+ <grammar>
+ <include href="openmath2.rng"/>
+ <define name="common.attributes" combine="interleave">
+ <parentRef name="extom.attribs"/>
+ </define>
+ </grammar>
+ </define>
+ <define name="cmml">
+ <grammar>
+ <include href="mathml3-common.rng"/>
+ <include href="mathml3-strict-content.rng"/>
+ </grammar>
+ </define>
+ <define name="mobj">
+ <choice>
+ <ref name="legacy"/>
+ <ref name="omobj"/>
+ <ref name="cmml"/>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocmtxt.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocmtxt.rng
new file mode 100644
index 00000000000..77d51f527a6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocmtxt.rng
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module MTXT
+ $Id: omdocmtxt.rnc 8967 2011-09-02 12:41:47Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocmtxt.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="omdoc.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="omtext"/>
+ </zeroOrMore>
+ </define>
+ <!-- attribute for is a whitespace-separated list of URIrefs -->
+ <define name="for.attrib">
+ <attribute name="for">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </define>
+ <define name="from.attrib">
+ <attribute name="from">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="mc.class">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="CMP"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="mcf.class">
+ <interleave>
+ <ref name="mc.class"/>
+ <zeroOrMore>
+ <ref name="FMP"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="rsttype">
+ <choice>
+ <value>abstract</value>
+ <value>introduction</value>
+ <value>annote</value>
+ <value>conclusion</value>
+ <value>thesis</value>
+ <value>comment</value>
+ <value>antithesis</value>
+ <value>elaboration</value>
+ <value>motivation</value>
+ <value>evidence</value>
+ <value>note</value>
+ <value>warning</value>
+ <value>question</value>
+ <value>answer</value>
+ <value>transition</value>
+ </choice>
+ </define>
+ <define name="statementtype">
+ <choice>
+ <value>axiom</value>
+ <value>definition</value>
+ <value>example</value>
+ <value>proof</value>
+ <value>derive</value>
+ <value>hypothesis</value>
+ <value>notation</value>
+ </choice>
+ </define>
+ <define name="assertiontype">
+ <choice>
+ <value>assertion</value>
+ <value>theorem</value>
+ <value>lemma</value>
+ <value>corollary</value>
+ <value>proposition</value>
+ <value>conjecture</value>
+ <value>false-conjecture</value>
+ <value>obligation</value>
+ <value>postulate</value>
+ <value>formula</value>
+ <value>assumption</value>
+ <value>rule</value>
+ </choice>
+ </define>
+ <define name="verbalizes.attrib">
+ <attribute name="verbalizes">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </define>
+ <define name="omtext.type.attrib">
+ <attribute name="type">
+ <choice>
+ <ref name="rsttype"/>
+ <ref name="statementtype"/>
+ <ref name="assertiontype"/>
+ <data type="anyURI"/>
+ </choice>
+ </attribute>
+ </define>
+ <define name="index.attrib">
+ <attribute name="index">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="parallel.attribs">
+ <interleave>
+ <optional>
+ <ref name="verbalizes.attrib"/>
+ </optional>
+ <optional>
+ <ref name="index.attrib"/>
+ </optional>
+ <optional>
+ <ref name="omtext.type.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="omtext.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="omtext.type.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="for">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="from">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="verbalizes.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="omtext.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="omtext">
+ <element name="omtext">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="omtext.attribs"/>
+ <ref name="omtext.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="CMP.attribs">
+ <interleave>
+ <ref name="xml.lang.attrib"/>
+ <ref name="id.attribs"/>
+ </interleave>
+ </define>
+ <define name="CMP.model">
+ <ref name="plike.class"/>
+ </define>
+ <define name="CMP">
+ <element name="CMP">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="CMP.attribs"/>
+ <ref name="CMP.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="term.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="role"/>
+ </optional>
+ <optional>
+ <attribute name="cdbase">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="term.model">
+ <ref name="inline.model"/>
+ </define>
+ <define name="term">
+ <element name="term">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="term.attribs"/>
+ <ref name="term.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="FMP.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="logic">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="FMP.model">
+ <choice>
+ <group>
+ <zeroOrMore>
+ <ref name="assumption"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="conclusion"/>
+ </zeroOrMore>
+ </group>
+ <ref name="mobj"/>
+ </choice>
+ </define>
+ <define name="FMP">
+ <element name="FMP">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="FMP.attribs"/>
+ <ref name="FMP.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="assumption.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="inductive">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="assumption.model">
+ <ref name="mobj"/>
+ </define>
+ <define name="assumption">
+ <element name="assumption">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="assumption.attribs"/>
+ <ref name="assumption.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="conclusion.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="conclusion.model">
+ <ref name="mobj"/>
+ </define>
+ <define name="conclusion">
+ <element name="conclusion">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="conclusion.attribs"/>
+ <ref name="conclusion.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="note.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ <ref name="parallel.attribs"/>
+ <optional>
+ <attribute name="type">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="note.model">
+ <ref name="inline.model"/>
+ </define>
+ <define name="note">
+ <element name="note">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="note.attribs"/>
+ <ref name="note.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- index -->
+ <define name="index.att">
+ <interleave>
+ <optional>
+ <attribute name="sort-by"/>
+ </optional>
+ <optional>
+ <attribute name="see">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="seealso">
+ <ref name="omdocrefs"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="links">
+ <list>
+ <zeroOrMore>
+ <data type="anyURI"/>
+ </zeroOrMore>
+ </list>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="idx.attribs">
+ <choice>
+ <ref name="id.attribs"/>
+ <ref name="xref.attrib"/>
+ </choice>
+ </define>
+ <define name="idx.model">
+ <interleave>
+ <optional>
+ <ref name="idt"/>
+ </optional>
+ <oneOrMore>
+ <ref name="ide"/>
+ </oneOrMore>
+ </interleave>
+ </define>
+ <define name="idx">
+ <element name="idx">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="idx.attribs"/>
+ <ref name="idx.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="ide.attribs">
+ <choice>
+ <interleave>
+ <ref name="id.attribs"/>
+ <ref name="index.att"/>
+ <ref name="index.attrib"/>
+ </interleave>
+ <ref name="xref.attrib"/>
+ </choice>
+ </define>
+ <define name="ide.model">
+ <zeroOrMore>
+ <ref name="idp"/>
+ </zeroOrMore>
+ </define>
+ <define name="ide">
+ <element name="ide">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="ide.attribs"/>
+ <ref name="ide.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="idt.attribs">
+ <choice>
+ <ref name="id.attribs"/>
+ <ref name="xref.attrib"/>
+ </choice>
+ </define>
+ <define name="idt.model">
+ <ref name="inline.model"/>
+ </define>
+ <define name="idt">
+ <element name="idt">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="idt.attribs"/>
+ <ref name="idt.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="idp.attribs">
+ <ref name="index.att"/>
+ </define>
+ <define name="idp.model">
+ <ref name="inline.model"/>
+ </define>
+ <define name="idp">
+ <element name="idp">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="idp.attribs"/>
+ <ref name="idp.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- citations -->
+ <define name="citation.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <attribute name="bibrefs"/>
+ </interleave>
+ </define>
+ <define name="citation.model">
+ <empty/>
+ </define>
+ <define name="citation">
+ <element name="citation">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="citation.attribs"/>
+ <ref name="citation.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- citations -->
+ <define name="oref.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="oref.model">
+ <empty/>
+ </define>
+ <define name="oref">
+ <element name="oref">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="oref.attribs"/>
+ <ref name="oref.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- what can go into a mathematical text -->
+ <define name="op.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="term"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="mobj"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="note"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="idx"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="citation"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="oref"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="inline.class" combine="interleave">
+ <ref name="op.class"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocpf.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocpf.rng
new file mode 100644
index 00000000000..e9ea40e59d8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocpf.rng
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module PF
+ $Id: omdocpf.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocpf.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="omdocpf.opt.content" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="proof"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="proofobject"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="proof"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="proofobject"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="proof.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="proof.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="omtext"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="symbol"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="definition"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="derive"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="hypothesis"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="proof">
+ <element name="proof">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="proof.attribs"/>
+ <ref name="proof.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="proofobject.attribs">
+ <ref name="proof.attribs"/>
+ </define>
+ <define name="proofobject.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <ref name="mobj"/>
+ </interleave>
+ </define>
+ <define name="proofobject">
+ <element name="proofobject">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="proofobject.attribs"/>
+ <ref name="proofobject.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="derive.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>conclusion</value>
+ <value>gap</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="derive.model">
+ <interleave>
+ <ref name="mcf.class"/>
+ <optional>
+ <ref name="method"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="derive">
+ <element name="derive">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="derive.attribs"/>
+ <ref name="derive.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="hypothesis.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="inductive">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="hypothesis.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="hypothesis">
+ <element name="hypothesis">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="hypothesis.attribs"/>
+ <ref name="hypothesis.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="method.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <ref name="xref.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="method.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="mobj"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="premise"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="proof"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="proofobject"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="method">
+ <element name="method">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="method.attribs"/>
+ <ref name="method.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="premise.attribs">
+ <interleave>
+ <ref name="xref.attrib"/>
+ <optional>
+ <attribute name="rank">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="premise.model">
+ <empty/>
+ </define>
+ <define name="premise">
+ <element name="premise">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="premise.attribs"/>
+ <ref name="premise.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
+<!--
+ The rank of a premise specifies its importance in the inference rule.
+ Rank 0 (the default) is a real premise, whereas positive rank signifies
+ sideconditions of varying degree.
+-->
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocpres.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocpres.rng
new file mode 100644
index 00000000000..3f37f8cbedd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocpres.rng
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG for Open Mathematical documents (OMDoc 1.3) Module PRES
+ $Id: omdocpres.rnc 8973 2011-09-09 12:45:16Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocpres.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2008 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="omdoc.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="notation"/>
+ </zeroOrMore>
+ </define>
+ <define name="ic.attrib">
+ <a:documentation>we first add the ic and ec attributes for notation contexts everywhere </a:documentation>
+ <attribute name="ic"/>
+ </define>
+ <define name="ec.attrib">
+ <attribute name="ec"/>
+ </define>
+ <define name="idrest.attribs" combine="interleave">
+ <interleave>
+ <optional>
+ <ref name="ic.attrib"/>
+ </optional>
+ <optional>
+ <ref name="ec.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="prototype.attribs">
+ <empty/>
+ </define>
+ <define name="prototype.model">
+ <ref name="protoexp"/>
+ </define>
+ <define name="prototype">
+ <element name="prototype">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="prototype.attribs"/>
+ <ref name="prototype.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="protoexp">
+ <choice>
+ <grammar>
+ <include href="openmath2.rng">
+ <start>
+ <ref name="omel"/>
+ </start>
+ <define name="common.attributes">
+ <parentRef name="id.attribs"/>
+ </define>
+ </include>
+ <define name="omel" combine="choice">
+ <parentRef name="proto.class"/>
+ </define>
+ <define name="omvar" combine="choice">
+ <parentRef name="proto.class"/>
+ </define>
+ <define name="common.attributes" combine="interleave">
+ <parentRef name="ntn.attrib"/>
+ </define>
+ </grammar>
+ <grammar>
+ <include href="mathml3.rng">
+ <start>
+ <ref name="ContExp"/>
+ </start>
+ </include>
+ <define name="ContExp" combine="choice">
+ <parentRef name="proto.class"/>
+ </define>
+ <define name="ci" combine="choice">
+ <parentRef name="proto.class"/>
+ </define>
+ <define name="CommonAtt" combine="interleave">
+ <parentRef name="ntn.attrib"/>
+ </define>
+ </grammar>
+ </choice>
+ </define>
+ <define name="precedence.att">
+ <choice>
+ <attribute name="precedence">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="argprec">
+ <data type="integer"/>
+ </attribute>
+ </choice>
+ </define>
+ <define name="context.att">
+ <interleave>
+ <optional>
+ <attribute name="xml:lang"/>
+ </optional>
+ <optional>
+ <attribute name="context"/>
+ </optional>
+ <optional>
+ <attribute name="variant"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="format.att">
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </define>
+ <define name="rendering.attribs">
+ <interleave>
+ <optional>
+ <ref name="precedence.att"/>
+ </optional>
+ <ref name="context.att"/>
+ <ref name="format.att"/>
+ </interleave>
+ </define>
+ <define name="rendering.model">
+ <ref name="renderexp"/>
+ </define>
+ <define name="rendering">
+ <element name="rendering">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="rendering.attribs"/>
+ <ref name="rendering.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="renderexp">
+ <choice>
+ <grammar>
+ <include href="mathml3-common.rng">
+ <start>
+ <ref name="PresentationExpression"/>
+ </start>
+ </include>
+ <include href="mathml3-presentation.rng"/>
+ <define name="PresentationExpression" combine="choice">
+ <parentRef name="render.class"/>
+ </define>
+ <define name="CommonAtt" combine="interleave">
+ <parentRef name="ntn.attrib"/>
+ </define>
+ <define name="mtable.content.class" combine="choice">
+ <parentRef name="render.class"/>
+ </define>
+ <define name="mtr.content.class" combine="choice">
+ <parentRef name="render.class"/>
+ </define>
+ </grammar>
+ <zeroOrMore>
+ <choice>
+ <ref name="pdata"/>
+ <ref name="render.class"/>
+ </choice>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <define name="pdata.attribs">
+ <empty/>
+ </define>
+ <define name="pdata.model">
+ <text/>
+ </define>
+ <define name="pdata">
+ <element name="pdata">
+ <interleave>
+ <ref name="pdata.attribs"/>
+ <ref name="pdata.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="iterexp">
+ <grammar>
+ <include href="mathml3.rng">
+ <start>
+ <choice>
+ <ref name="PresentationExpression"/>
+ <ref name="mtr"/>
+ <ref name="mlabeledtr"/>
+ <ref name="mtd"/>
+ </choice>
+ </start>
+ </include>
+ <define name="PresentationExpression" combine="choice">
+ <parentRef name="render.class"/>
+ </define>
+ <define name="MathML.Common.attrib" combine="interleave">
+ <parentRef name="ntn.attrib"/>
+ </define>
+ <define name="mtable.content.class" combine="choice">
+ <parentRef name="render.class"/>
+ </define>
+ <define name="mtr.content.class" combine="choice">
+ <parentRef name="render.class"/>
+ </define>
+ </grammar>
+ </define>
+ <define name="name.attrib">
+ <optional>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="triple.att">
+ <interleave>
+ <optional>
+ <attribute name="cdbase">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <ref name="name.attrib"/>
+ <optional>
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="notation.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <ref name="triple.att"/>
+ </interleave>
+ </define>
+ <define name="notation.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="CMP"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="prototype"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="rendering"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="notation">
+ <element name="notation">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="notation.attribs"/>
+ <ref name="notation.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- we extend the content and presentation models by metavariables -->
+ <define name="proto.class">
+ <choice>
+ <ref name="exprlist"/>
+ <ref name="expr"/>
+ </choice>
+ </define>
+ <define name="render.class">
+ <choice>
+ <ref name="render"/>
+ <ref name="iterate"/>
+ </choice>
+ </define>
+ <define name="ntn.attrib">
+ <interleave>
+ <optional>
+ <attribute name="cr"/>
+ </optional>
+ <optional>
+ <attribute name="egroup"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="exprlist.attribs">
+ <ref name="name.attrib"/>
+ </define>
+ <define name="exprlist.model">
+ <zeroOrMore>
+ <ref name="protoexp"/>
+ </zeroOrMore>
+ </define>
+ <define name="exprlist">
+ <element name="exprlist">
+ <interleave>
+ <ref name="exprlist.attribs"/>
+ <ref name="exprlist.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="expr.attribs">
+ <ref name="name.attrib"/>
+ </define>
+ <define name="expr.model">
+ <empty/>
+ </define>
+ <define name="expr">
+ <element name="expr">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="expr.attribs"/>
+ <ref name="expr.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="iterate.attribs">
+ <interleave>
+ <ref name="name.attrib"/>
+ <optional>
+ <ref name="precedence.att"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="iterate.model">
+ <interleave>
+ <ref name="separator"/>
+ <zeroOrMore>
+ <ref name="iterexp"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="iterate">
+ <element name="iterate">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="iterate.attribs"/>
+ <ref name="iterate.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="render.attribs">
+ <interleave>
+ <ref name="name.attrib"/>
+ <optional>
+ <ref name="precedence.att"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="render.model">
+ <empty/>
+ </define>
+ <define name="render">
+ <element name="render">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="render.attribs"/>
+ <ref name="render.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="separator.attribs">
+ <empty/>
+ </define>
+ <define name="separator.model">
+ <zeroOrMore>
+ <ref name="renderexp"/>
+ </zeroOrMore>
+ </define>
+ <define name="separator">
+ <element name="separator">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="separator.attribs"/>
+ <ref name="separator.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocquiz.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocquiz.rng
new file mode 100644
index 00000000000..d02d811edc5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocquiz.rng
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module QUIZ
+ $Id: omdocquiz.rnc 8958 2011-09-02 06:01:13Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocquiz.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="exercise"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="hint"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="mc"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="solution"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="plike.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="hint"/>
+ </zeroOrMore>
+ </define>
+ <define name="exercise.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="exercise.model">
+ <choice>
+ <ref name="mcf.class"/>
+ <ref name="omdoc.class"/>
+ </choice>
+ </define>
+ <define name="exercise">
+ <element name="exercise">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="exercise.attribs"/>
+ <ref name="exercise.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="omdocpf.opt.content">
+ <notAllowed/>
+ </define>
+ <define name="hint.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="hint.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="hint">
+ <element name="hint">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="hint.attribs"/>
+ <ref name="hint.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="solution.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="solution.model">
+ <choice>
+ <ref name="mcf.class"/>
+ <ref name="omdoc.class"/>
+ </choice>
+ </define>
+ <define name="solution">
+ <element name="solution">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="solution.attribs"/>
+ <ref name="solution.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="mc.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="for.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="mc.model">
+ <ref name="choice"/>
+ <optional>
+ <ref name="hint"/>
+ </optional>
+ <ref name="answer"/>
+ </define>
+ <define name="mc">
+ <element name="mc">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="mc.attribs"/>
+ <ref name="mc.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="choice.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="choice.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="choice">
+ <element name="choice">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="choice.attribs"/>
+ <ref name="choice.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="answer.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="verdict">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="answer.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="answer">
+ <element name="answer">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="answer.attribs"/>
+ <ref name="answer.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocrt.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocrt.rng
new file mode 100644
index 00000000000..4ed1dcee6ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocrt.rng
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module RT
+ $Id: omdocrt.rnc 8973 2011-09-09 12:45:16Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocrt.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar xmlns:omdoc="http://omdoc.org/ns" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="rst.attribs">
+ <optional>
+ <ref name="verbalizes.attrib"/>
+ </optional>
+ </define>
+ <define name="inline.class" combine="interleave">
+ <a:documentation>We extend the three main content models by xhtml elements</a:documentation>
+ <grammar>
+ <include href="pxhtml.rng">
+ <define name="Inline.model">
+ <interleave>
+ <text/>
+ <parentRef name="metadata.class"/>
+ <ref name="Inline.class"/>
+ </interleave>
+ </define>
+ </include>
+ <define name="Inline.class" combine="interleave">
+ <parentRef name="op.class"/>
+ </define>
+ <define name="span.attlist" combine="interleave">
+ <parentRef name="rst.attribs"/>
+ </define>
+ <start>
+ <ref name="Inline.class"/>
+ </start>
+ </grammar>
+ </define>
+ <define name="plike.class" combine="interleave">
+ <grammar>
+ <include href="pxhtml.rng">
+ <define name="Inline.model">
+ <interleave>
+ <text/>
+ <parentRef name="metadata.class"/>
+ <ref name="Inline.class"/>
+ </interleave>
+ </define>
+ </include>
+ <define name="Common.attrib" combine="interleave">
+ <interleave>
+ <parentRef name="idrest.attribs"/>
+ <parentRef name="parallel.attribs"/>
+ </interleave>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <parentRef name="op.class"/>
+ </define>
+ <define name="span.attlist" combine="interleave">
+ <parentRef name="rst.attribs"/>
+ </define>
+ <start>
+ <ref name="Block.class"/>
+ </start>
+ </grammar>
+ </define>
+ <define name="omdoc.class" combine="interleave">
+ <grammar>
+ <include href="pxhtml.rng">
+ <define name="Inline.model">
+ <interleave>
+ <text/>
+ <parentRef name="metadata.class"/>
+ <ref name="Inline.class"/>
+ </interleave>
+ </define>
+ </include>
+ <define name="Common.attrib" combine="interleave">
+ <interleave>
+ <parentRef name="idrest.attribs"/>
+ <parentRef name="parallel.attribs"/>
+ </interleave>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <parentRef name="op.class"/>
+ </define>
+ <define name="Block.cass" combine="interleave">
+ <parentRef name="plike.class"/>
+ </define>
+ <define name="Flow.model" combine="interleave">
+ <parentRef name="omdoc.class"/>
+ </define>
+ <define name="span.attlist" combine="interleave">
+ <parentRef name="rst.attribs"/>
+ </define>
+ <start>
+ <ref name="List.class"/>
+ </start>
+ </grammar>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/omdocst.rng b/Master/texmf-dist/source/latex/stex/schema/rng/omdocst.rng
new file mode 100644
index 00000000000..59e54d0f723
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/omdocst.rng
@@ -0,0 +1,634 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A RelaxNG schema for Open Mathematical documents (OMDoc 1.3) Module ST
+ $Id: omdocst.rnc 8972 2011-09-09 11:36:34Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/omdocst.rnc $
+ See the documentation and examples at http://www.omdoc.org
+ Copyright (c) 2004-2007 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://omdoc.org/ns" xmlns:omdoc="http://omdoc.org/ns" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="omdoc.class" combine="interleave">
+ <interleave>
+ <zeroOrMore>
+ <ref name="symbol"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="axiom"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="definition"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="imports"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="assertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="type"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="alternative"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="example"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="theory"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="constitutive.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="generated-from">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="sym.role.attrib">
+ <attribute name="role">
+ <choice>
+ <value>type</value>
+ <value>sort</value>
+ <value>object</value>
+ <value>binder</value>
+ <value>attribution</value>
+ <value>application</value>
+ <value>constant</value>
+ <value>semantic-attribution</value>
+ <value>error</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="theory-unique">
+ <data type="NCName"/>
+ </define>
+ <define name="scope.attrib">
+ <optional>
+ <attribute name="scope">
+ <choice>
+ <value>global</value>
+ <value>local</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="symbol.attribs">
+ <interleave>
+ <ref name="scope.attrib"/>
+ <optional>
+ <attribute name="name">
+ <ref name="theory-unique"/>
+ </attribute>
+ </optional>
+ <ref name="constitutive.attribs"/>
+ <optional>
+ <ref name="sym.role.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="symbol.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <zeroOrMore>
+ <ref name="type"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="symbol">
+ <element name="symbol">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="symbol.attribs"/>
+ <ref name="symbol.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="forname.attrib">
+ <attribute name="for">
+ <list>
+ <oneOrMore>
+ <data type="NCName"/>
+ </oneOrMore>
+ </list>
+ </attribute>
+ </define>
+ <define name="axiom.attribs">
+ <interleave>
+ <ref name="constitutive.attribs"/>
+ <ref name="forname.attrib"/>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="axiom.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <ref name="mcf.class"/>
+ </interleave>
+ </define>
+ <define name="axiom">
+ <element name="axiom">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="axiom.attribs"/>
+ <ref name="axiom.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- informal definitions -->
+ <define name="def.informal">
+ <optional>
+ <attribute name="type">
+ <value>informal</value>
+ </attribute>
+ </optional>
+ </define>
+ <!-- simple definitions -->
+ <define name="def.simple.attribs">
+ <attribute name="type">
+ <value>simple</value>
+ </attribute>
+ </define>
+ <define name="def.simple">
+ <interleave>
+ <ref name="def.simple.attribs"/>
+ <ref name="mobj"/>
+ </interleave>
+ </define>
+ <!-- implicit definitions -->
+ <define name="exists.attrib">
+ <attribute name="existence">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="unique.attrib">
+ <attribute name="uniqueness">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="def.implicit.attribs">
+ <interleave>
+ <attribute name="type">
+ <value>implicit</value>
+ </attribute>
+ <optional>
+ <ref name="exists.attrib"/>
+ </optional>
+ <optional>
+ <ref name="unique.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="def.implicit">
+ <interleave>
+ <ref name="def.implicit.attribs"/>
+ <zeroOrMore>
+ <ref name="FMP"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="exhaust.attrib">
+ <attribute name="exhaustivity">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="consist.attrib">
+ <attribute name="consistency">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="def.pattern.attribs">
+ <interleave>
+ <optional>
+ <attribute name="type">
+ <value>pattern</value>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="exhaust.attrib"/>
+ </optional>
+ <optional>
+ <ref name="consist.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="def.pattern.model">
+ <zeroOrMore>
+ <ref name="requation"/>
+ </zeroOrMore>
+ </define>
+ <define name="def.pattern">
+ <interleave>
+ <ref name="def.pattern.attribs"/>
+ <ref name="def.pattern.model"/>
+ </interleave>
+ </define>
+ <define name="def.inductive.attribs">
+ <interleave>
+ <optional>
+ <attribute name="type">
+ <value>inductive</value>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="exhaust.attrib"/>
+ </optional>
+ <optional>
+ <ref name="consist.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="def.inductive.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="requation"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="measure"/>
+ </optional>
+ <optional>
+ <ref name="ordering"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="def.inductive">
+ <interleave>
+ <ref name="def.inductive.attribs"/>
+ <ref name="def.inductive.model"/>
+ </interleave>
+ </define>
+ <define name="def.eq">
+ <choice>
+ <ref name="def.pattern"/>
+ <ref name="def.inductive"/>
+ </choice>
+ </define>
+ <!-- all definition forms, add more by extending this. -->
+ <define name="defs.all">
+ <choice>
+ <ref name="def.informal"/>
+ <ref name="def.simple"/>
+ <ref name="def.implicit"/>
+ <ref name="def.eq"/>
+ </choice>
+ </define>
+ <!--
+ Definitions contain CMPs, FMPs and concept specifications.
+ The latter define the set of concepts defined in this element.
+ They can be reached under this name in the content dictionary
+ of the name specified in the theory attribute of the definition.
+ -->
+ <define name="definition.attribs">
+ <interleave>
+ <ref name="constitutive.attribs"/>
+ <ref name="forname.attrib"/>
+ </interleave>
+ </define>
+ <define name="definition">
+ <element name="definition">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="definition.attribs"/>
+ <ref name="mc.class"/>
+ <ref name="defs.all"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="requation.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="requation.model">
+ <ref name="mobj"/>
+ <ref name="mobj"/>
+ </define>
+ <define name="requation">
+ <element name="requation">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="requation.attribs"/>
+ <ref name="requation.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="measure.attribs">
+ <ref name="id.attribs"/>
+ </define>
+ <define name="measure.model">
+ <ref name="mobj"/>
+ </define>
+ <define name="measure">
+ <element name="measure">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="measure.attribs"/>
+ <ref name="measure.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="ordering.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="terminating">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="ordering.model">
+ <ref name="mobj"/>
+ </define>
+ <define name="ordering">
+ <element name="ordering">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="ordering.attribs"/>
+ <ref name="ordering.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!-- the non-constitutive statements, they need a theory attribute -->
+ <define name="toplevel.attribs" combine="interleave">
+ <optional>
+ <attribute name="theory">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ded.status.class">
+ <choice>
+ <value>satisfiable</value>
+ <value>counter-satisfiable</value>
+ <value>no-consequence</value>
+ <value>theorem</value>
+ <value>conter-theorem</value>
+ <value>contradictory-axioms</value>
+ <value>tautologous-conclusion</value>
+ <value> tautology</value>
+ <value>equivalent</value>
+ <value>conunter-equivalent</value>
+ <value>unsatisfiable-conclusion</value>
+ <value>unsatisfiable</value>
+ </choice>
+ </define>
+ <define name="just-by.attrib">
+ <attribute name="just-by">
+ <ref name="omdocref"/>
+ </attribute>
+ </define>
+ <define name="assertion.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <attribute name="type">
+ <ref name="assertiontype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="status">
+ <ref name="ded.status.class"/>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="just-by.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="assertion.model">
+ <ref name="mcf.class"/>
+ </define>
+ <define name="assertion">
+ <element name="assertion">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="assertion.attribs"/>
+ <ref name="assertion.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <!--
+ the assertiontype has no formal meaning yet, it is solely for human consumption.
+ 'just-by' is a list of URIRefs that point to proof objects, etc that justifies the status.
+ -->
+ <define name="type.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <optional>
+ <ref name="just-by.attrib"/>
+ </optional>
+ <optional>
+ <attribute name="system">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="for">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="type.model">
+ <ref name="mc.class"/>
+ <ref name="mobj"/>
+ <optional>
+ <ref name="mobj"/>
+ </optional>
+ </define>
+ <define name="type">
+ <element name="type">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="type.attribs"/>
+ <ref name="type.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="alternative.attribs">
+ <a:documentation>just-by, points to the theorem justifying well-definedness
+entailed-by, entails, point to other (equivalent definitions
+entailed-by-thm, entails-thm point to the theorems justifying
+the entailment relation)</a:documentation>
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <ref name="for.attrib"/>
+ <choice>
+ <group>
+ <attribute name="equivalence">
+ <ref name="omdocref"/>
+ </attribute>
+ <attribute name="equivalence-thm">
+ <ref name="omdocref"/>
+ </attribute>
+ </group>
+ <interleave>
+ <attribute name="entailed-by">
+ <ref name="omdocref"/>
+ </attribute>
+ <attribute name="entails">
+ <ref name="omdocref"/>
+ </attribute>
+ <attribute name="entailed-by-thm">
+ <ref name="omdocref"/>
+ </attribute>
+ <attribute name="entails-thm">
+ <ref name="omdocref"/>
+ </attribute>
+ </interleave>
+ </choice>
+ </interleave>
+ </define>
+ <define name="alternative.model">
+ <interleave>
+ <ref name="mc.class"/>
+ <ref name="defs.all"/>
+ </interleave>
+ </define>
+ <define name="alternative">
+ <element name="alternative">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="alternative.attribs"/>
+ <ref name="alternative.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="example.attribs">
+ <interleave>
+ <ref name="toplevel.attribs"/>
+ <ref name="for.attrib"/>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>for</value>
+ <value>against</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="assertion">
+ <ref name="omdocref"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="example.model">
+ <ref name="mc.class"/>
+ <zeroOrMore>
+ <ref name="mobj"/>
+ </zeroOrMore>
+ </define>
+ <define name="example">
+ <element name="example">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="example.attribs"/>
+ <ref name="example.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="theory.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <optional>
+ <attribute name="cdurl">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cdbase">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cdreviewdate">
+ <data type="date"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cdversion">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cdrevision">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cdstatus">
+ <choice>
+ <value>official</value>
+ <value>experimental</value>
+ <value>private</value>
+ <value>obsolete</value>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="theory.model">
+ <interleave>
+ <ref name="metadata.class"/>
+ <ref name="omdoc.class"/>
+ </interleave>
+ </define>
+ <define name="theory">
+ <element name="theory">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="theory.attribs"/>
+ <ref name="theory.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+ <define name="imports.attribs">
+ <interleave>
+ <ref name="id.attribs"/>
+ <ref name="from.attrib"/>
+ </interleave>
+ </define>
+ <define name="imports.model">
+ <ref name="metadata.class"/>
+ </define>
+ <define name="imports">
+ <element name="imports">
+ <choice>
+ <ref name="tref"/>
+ <interleave>
+ <ref name="imports.attribs"/>
+ <ref name="imports.model"/>
+ </interleave>
+ </choice>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng b/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng
new file mode 100644
index 00000000000..af2ccdb78da
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/openmath2.rng
@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ RELAX NG Schema for OpenMath 2
+ $Id: openmath2.rnc 8959 2011-09-02 06:01:43Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/branches/omdoc-1.3/schema/rnc/openmath2.rnc $
+ See the documentation and examples at http://www.openmath.org
+-->
+<grammar ns="http://www.openmath.org/OpenMath" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="OMOBJ"/>
+ </start>
+ <!-- OpenMath object constructor -->
+ <define name="OMOBJ">
+ <element name="OMOBJ">
+ <ref name="compound.attributes"/>
+ <optional>
+ <attribute name="version">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- Elements which can appear inside an OpenMath object -->
+ <define name="omel">
+ <choice>
+ <ref name="OMS"/>
+ <ref name="OMV"/>
+ <ref name="OMI"/>
+ <ref name="OMB"/>
+ <ref name="OMSTR"/>
+ <ref name="OMF"/>
+ <ref name="OMA"/>
+ <ref name="OMBIND"/>
+ <ref name="OME"/>
+ <ref name="OMATTR"/>
+ <ref name="OMR"/>
+ </choice>
+ </define>
+ <!-- things which can be variables -->
+ <define name="omvar">
+ <choice>
+ <ref name="OMV"/>
+ <ref name="attvar"/>
+ </choice>
+ </define>
+ <define name="attvar">
+ <element name="OMATTR">
+ <ref name="common.attributes"/>
+ <group>
+ <ref name="OMATP"/>
+ <choice>
+ <ref name="OMV"/>
+ <ref name="attvar"/>
+ </choice>
+ </group>
+ </element>
+ </define>
+ <define name="cdbase">
+ <optional>
+ <attribute name="cdbase">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- attributes common to all elements -->
+ <define name="common.attributes">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- attributes common to all elements that construct compount OM objects. -->
+ <define name="compound.attributes">
+ <ref name="common.attributes"/>
+ <ref name="cdbase"/>
+ </define>
+ <!-- symbol -->
+ <define name="OMS">
+ <element name="OMS">
+ <ref name="common.attributes"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="cdbase"/>
+ </element>
+ </define>
+ <!-- variable -->
+ <define name="OMV">
+ <element name="OMV">
+ <ref name="common.attributes"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </element>
+ </define>
+ <!-- integer -->
+ <define name="OMI">
+ <element name="OMI">
+ <ref name="common.attributes"/>
+ <data type="string">
+ <param name="pattern">\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*</param>
+ </data>
+ </element>
+ </define>
+ <!-- byte array -->
+ <define name="OMB">
+ <element name="OMB">
+ <ref name="common.attributes"/>
+ <data type="base64Binary"/>
+ </element>
+ </define>
+ <!-- string -->
+ <define name="OMSTR">
+ <element name="OMSTR">
+ <ref name="common.attributes"/>
+ <text/>
+ </element>
+ </define>
+ <!-- IEEE floating point number -->
+ <define name="OMF">
+ <element name="OMF">
+ <ref name="common.attributes"/>
+ <choice>
+ <attribute name="dec">
+ <data type="double"/>
+ </attribute>
+ <attribute name="hex">
+ <data type="string">
+ <param name="pattern">[0-9A-F]+</param>
+ </data>
+ </attribute>
+ </choice>
+ </element>
+ </define>
+ <!-- apply constructor -->
+ <define name="OMA">
+ <element name="OMA">
+ <ref name="compound.attributes"/>
+ <oneOrMore>
+ <ref name="omel"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- binding constructor -->
+ <define name="OMBIND">
+ <element name="OMBIND">
+ <ref name="compound.attributes"/>
+ <ref name="omel"/>
+ <ref name="OMBVAR"/>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- variables used in binding constructor -->
+ <define name="OMBVAR">
+ <element name="OMBVAR">
+ <ref name="common.attributes"/>
+ <oneOrMore>
+ <ref name="omvar"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- error constructor -->
+ <define name="OME">
+ <element name="OME">
+ <ref name="common.attributes"/>
+ <ref name="OMS"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="OMFOREIGN"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!-- attribution constructor and attribute pair constructor -->
+ <define name="OMATTR">
+ <element name="OMATTR">
+ <ref name="compound.attributes"/>
+ <ref name="OMATP"/>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <define name="OMATP">
+ <element name="OMATP">
+ <ref name="compound.attributes"/>
+ <oneOrMore>
+ <ref name="OMS"/>
+ <choice>
+ <ref name="omel"/>
+ <ref name="OMFOREIGN"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- foreign constructor -->
+ <define name="OMFOREIGN">
+ <element name="OMFOREIGN">
+ <ref name="compound.attributes"/>
+ <optional>
+ <attribute name="encoding">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="notom"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!--
+ Any elements not in the om namespace
+ (valid om is allowed as a descendant)
+ -->
+ <define name="notom">
+ <choice>
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="notom"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ <text/>
+ </choice>
+ </define>
+ <!-- reference constructor -->
+ <define name="OMR">
+ <element name="OMR">
+ <ref name="common.attributes"/>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/openmath3.rng b/Master/texmf-dist/source/latex/stex/schema/rng/openmath3.rng
new file mode 100644
index 00000000000..6d1ac08e7c7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/openmath3.rng
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ RELAX NG Schema for OpenMath 2
+ $Id: openmath3.rnc 7618 2008-06-03 06:32:15Z kohlhase $
+ $HeadURL: https://svn.omdoc.org/repos/omdoc/trunk/schema/rnc/openmath3.rnc $
+ See the documentation and examples at http://www.openmath.org
+-->
+<grammar ns="http://www.openmath.org/OpenMath" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="OMOBJ"/>
+ </start>
+ <!-- OpenMath object constructor -->
+ <define name="OMOBJ">
+ <element name="OMOBJ">
+ <ref name="compound.attributes"/>
+ <optional>
+ <attribute name="version">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- Elements which can appear inside an OpenMath object -->
+ <define name="omel">
+ <choice>
+ <ref name="OMS"/>
+ <ref name="OMV"/>
+ <ref name="OMI"/>
+ <ref name="OMB"/>
+ <ref name="OMSTR"/>
+ <ref name="OMF"/>
+ <ref name="OMA"/>
+ <ref name="OMBIND"/>
+ <ref name="OME"/>
+ <ref name="OMATTR"/>
+ <ref name="OMR"/>
+ </choice>
+ </define>
+ <!-- things which can be variables -->
+ <define name="omvar">
+ <choice>
+ <ref name="OMV"/>
+ <ref name="attvar"/>
+ </choice>
+ </define>
+ <define name="attvar">
+ <element name="OMATTR">
+ <ref name="common.attributes"/>
+ <group>
+ <ref name="OMATP"/>
+ <choice>
+ <ref name="OMV"/>
+ <ref name="attvar"/>
+ </choice>
+ </group>
+ </element>
+ </define>
+ <define name="cdbase">
+ <optional>
+ <attribute name="cdbase">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- attributes common to all elements -->
+ <define name="common.attributes">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- attributes common to all elements that construct compount OM objects. -->
+ <define name="compound.attributes">
+ <ref name="common.attributes"/>
+ <ref name="cdbase"/>
+ </define>
+ <!-- symbol -->
+ <define name="OMS">
+ <element name="OMS">
+ <ref name="common.attributes"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="cdbase"/>
+ </element>
+ </define>
+ <!-- variable -->
+ <define name="OMV">
+ <element name="OMV">
+ <ref name="common.attributes"/>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ </element>
+ </define>
+ <!-- integer -->
+ <define name="OMI">
+ <element name="OMI">
+ <ref name="common.attributes"/>
+ <data type="string">
+ <param name="pattern">\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*</param>
+ </data>
+ </element>
+ </define>
+ <!-- byte array -->
+ <define name="OMB">
+ <element name="OMB">
+ <ref name="common.attributes"/>
+ <data type="base64Binary"/>
+ </element>
+ </define>
+ <!-- string -->
+ <define name="OMSTR">
+ <element name="OMSTR">
+ <ref name="common.attributes"/>
+ <text/>
+ </element>
+ </define>
+ <!-- IEEE floating point number -->
+ <define name="OMF">
+ <element name="OMF">
+ <ref name="common.attributes"/>
+ <choice>
+ <attribute name="dec">
+ <data type="double"/>
+ </attribute>
+ <attribute name="hex">
+ <data type="string">
+ <param name="pattern">[0-9A-F]+</param>
+ </data>
+ </attribute>
+ </choice>
+ </element>
+ </define>
+ <!-- apply constructor -->
+ <define name="OMA">
+ <element name="OMA">
+ <ref name="compound.attributes"/>
+ <oneOrMore>
+ <ref name="omel"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- binding constructor -->
+ <define name="OMBIND">
+ <element name="OMBIND">
+ <ref name="compound.attributes"/>
+ <ref name="omel"/>
+ <ref name="OMBVAR"/>
+ <optional>
+ <ref name="OMC"/>
+ </optional>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- the condition element -->
+ <define name="OMC">
+ <element name="OMC">
+ <ref name="common.attributes"/>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <!-- variables used in binding constructor -->
+ <define name="OMBVAR">
+ <element name="OMBVAR">
+ <ref name="common.attributes"/>
+ <oneOrMore>
+ <ref name="omvar"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- error constructor -->
+ <define name="OME">
+ <element name="OME">
+ <ref name="common.attributes"/>
+ <ref name="OMS"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="OMFOREIGN"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!-- attribution constructor and attribute pair constructor -->
+ <define name="OMATTR">
+ <element name="OMATTR">
+ <ref name="compound.attributes"/>
+ <ref name="OMATP"/>
+ <ref name="omel"/>
+ </element>
+ </define>
+ <define name="OMATP">
+ <element name="OMATP">
+ <ref name="compound.attributes"/>
+ <oneOrMore>
+ <ref name="OMS"/>
+ <choice>
+ <ref name="omel"/>
+ <ref name="OMFOREIGN"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <!-- foreign constructor -->
+ <define name="OMFOREIGN">
+ <element name="OMFOREIGN">
+ <ref name="compound.attributes"/>
+ <optional>
+ <attribute name="encoding">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="omel"/>
+ <ref name="notom"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!--
+ Any elements not in the om namespace
+ (valid om is allowed as a descendant)
+ -->
+ <define name="notom">
+ <text/>
+ </define>
+ <!--
+ (element * - om:* {attribute * { text }*,(omel|notom)*}
+ | text)
+ -->
+ <!-- reference constructor -->
+ <define name="OMR">
+ <element name="OMR">
+ <ref name="common.attributes"/>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/owl.rng b/Master/texmf-dist/source/latex/stex/schema/rng/owl.rng
new file mode 100644
index 00000000000..f32cf39c02d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/owl.rng
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A simplified RelaxNG for OWL (so that we can generate OWL from sTeX
+ https://kwarc.info/repos/kwarc/repos/stex/rnc/omdoc+ltxml.rnc
+ (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="nonlocal-attribs">
+ <attribute>
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ <nsName ns="http://www.w3.org/2002/07/owl#"/>
+ <nsName ns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
+ <nsName ns="http://www.w3.org/2000/01/rdf-schema#"/>
+ </except>
+ </anyName>
+ <data type="string"/>
+ </attribute>
+ </define>
+ <start>
+ <ref name="RDF"/>
+ </start>
+ <define name="RDF">
+ <element name="rdf:RDF">
+ <interleave>
+ <ref name="nonlocal-attribs"/>
+ <ref name="Ontology"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="Ontology.attribs">
+ <interleave>
+ <zeroOrMore>
+ <ref name="nonlocal-attribs"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="about.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Ontology.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="Class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="Property"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Ontology">
+ <element name="owl:Ontology">
+ <interleave>
+ <ref name="Ontology.attribs"/>
+ <ref name="Ontology.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="about.attrib">
+ <attribute name="rdf:about">
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="resource.attrib">
+ <attribute name="rdf:resource">
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="label.attrib">
+ <attribute name="rdfs:label"/>
+ </define>
+ <define name="comment.attrib">
+ <attribute name="rdfs:comment"/>
+ </define>
+ <define name="Class.attribs">
+ <interleave>
+ <zeroOrMore>
+ <ref name="nonlocal-attribs"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="about.attrib"/>
+ </optional>
+ <optional>
+ <ref name="label.attrib"/>
+ </optional>
+ <optional>
+ <ref name="comment.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Class.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="rdftype"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="subClassOf"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="disjointWith"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="isDefinedBy"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Class">
+ <element name="rdfs:Class">
+ <interleave>
+ <ref name="Class.attribs"/>
+ <ref name="Class.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="Property.attribs">
+ <interleave>
+ <zeroOrMore>
+ <ref name="nonlocal-attribs"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="about.attrib"/>
+ </optional>
+ <optional>
+ <ref name="label.attrib"/>
+ </optional>
+ <optional>
+ <ref name="comment.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Property.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="rdftype"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="domain"/>
+ </optional>
+ <ref name="range"/>
+ <optional>
+ <ref name="isDefinedBy"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Property">
+ <element name="rdf:Property">
+ <interleave>
+ <ref name="Property.attribs"/>
+ <ref name="Property.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="rdftype.attribs">
+ <interleave>
+ <zeroOrMore>
+ <ref name="nonlocal-attribs"/>
+ </zeroOrMore>
+ <ref name="resource.attrib"/>
+ </interleave>
+ </define>
+ <!-- rdftype.model = notAllowed -->
+ <define name="rdftype">
+ <element name="rdf:type">
+ <ref name="rdftype.attribs"/>
+ </element>
+ </define>
+ <define name="subClassOf">
+ <element name="rdfs:subClassOf">
+ <ref name="resource.attrib"/>
+ </element>
+ </define>
+ <define name="isDefinedBy">
+ <element name="rdfs:isDefinedBy">
+ <ref name="resource.attrib"/>
+ </element>
+ </define>
+ <define name="disjointWith">
+ <element name="owl:disjointWith">
+ <ref name="resource.attrib"/>
+ </element>
+ </define>
+ <define name="range">
+ <element name="rdfs:range">
+ <ref name="resource.attrib"/>
+ </element>
+ </define>
+ <define name="domain">
+ <element name="rdfs:domain">
+ <ref name="resource.attrib"/>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/owl2+ltxml.rng b/Master/texmf-dist/source/latex/stex/schema/rng/owl2+ltxml.rng
new file mode 100644
index 00000000000..e4fdff503b1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/owl2+ltxml.rng
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A simplified RelaxNG for OWL2 (so that we can generate OWL from sTeX
+ https://kwarc.info/repos/kwarc/repos/stex/rnc/omdoc+ltxml.rnc
+ (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="owl2xml.rng"/>
+ <define name="LTXML.Math">
+ <grammar>
+ <include href="LaTeXML-common.rng"/>
+ <include href="LaTeXML-math.rng"/>
+ <start>
+ <ref name="Math"/>
+ </start>
+ </grammar>
+ </define>
+ <define name="Ontology.model" combine="interleave">
+ <interleave>
+ <ref name="LTXML.Math"/>
+ <ref name="axiom"/>
+ </interleave>
+ </define>
+ <define name="axiom">
+ <element name="owl:Axiom">
+ <interleave>
+ <ref name="LTXML.Math"/>
+ <ref name="Annotation"/>
+ </interleave>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/owl2-xml.rng b/Master/texmf-dist/source/latex/stex/schema/rng/owl2-xml.rng
new file mode 100644
index 00000000000..fc1cb64cd14
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/owl2-xml.rng
@@ -0,0 +1,1321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ From: http://www.w3.org/TR/rdf-sparql-query/#grammar
+ The entities implement productions [95] (PN_CHARS_BASE), [96] (PN_CHARS_U), [98] (PN_CHARS), [99] (PN_PREFIX),
+ [100] (PN_LOCAL), [71] (PNAME_NS), [72] (PNAME_LN) and [68] (PrefixedName)
+
+ PN_PREFIX is roughly equivalent to NCName.
+-->
+<grammar ns="http://www.w3.org/2002/07/owl#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- The ontology -->
+ <define name="Prefix.type">
+ <attribute name="name">
+ <data type="string">
+ <param name="pattern">([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀] ))?|</param>
+ </data>
+ </attribute>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="Prefix"/>
+ </start>
+ <define name="Prefix">
+ <element name="Prefix">
+ <ref name="Prefix.type"/>
+ </element>
+ </define>
+ <define name="Import.type">
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="Import"/>
+ </start>
+ <define name="Import">
+ <element name="Import">
+ <ref name="Import.type"/>
+ </element>
+ </define>
+ <define name="Ontology.type">
+ <zeroOrMore>
+ <ref name="Prefix"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="Import"/>
+ </zeroOrMore>
+ <ref name="ontologyAnnotations"/>
+ <zeroOrMore>
+ <ref name="Axiom"/>
+ </zeroOrMore>
+ <optional>
+ <attribute name="ontologyIRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="versionIRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="Ontology"/>
+ </start>
+ <define name="Ontology">
+ <element name="Ontology">
+ <ref name="Ontology.type"/>
+ </element>
+ </define>
+ <!-- Entities, anonymous individuals, and literals -->
+ <!--
+ Note that the "Entity" group does not have a corresponding abstract type.
+ This is due to the fact that XML Schema does not support multiple inheritence.
+ "owl:Class" is both an entity and a class expression. The authors of this schema
+ determined it was more useful to be able to retrieve "owl:Class" in such queries
+ as schema(*, owl:ClassExpression).
+ -->
+ <define name="Entity">
+ <choice>
+ <ref name="Class"/>
+ <ref name="Datatype"/>
+ <ref name="ObjectProperty"/>
+ <ref name="DataProperty"/>
+ <ref name="AnnotationProperty"/>
+ <ref name="NamedIndividual"/>
+ </choice>
+ </define>
+ <!-- This is the type for the attribute. The complex type for the element is capitalized. -->
+ <define name="abbreviatedIRI">
+ <data type="string">
+ <param name="pattern">(((([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀] ))?)?:)(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|[0-9])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]))?))|((([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿])(([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀]|\.)*([A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-῿]|[‌-‍]|[⁰-↏]|[Ⰰ-⿯]|[、-퟿]|[豈-﷏]|[ﷰ-�]|[𐀀-󯿿]|_|\-|[0-9]|·|[̀-ͯ]|[‿-⁀] ))?)?:)</param>
+ </data>
+ </define>
+ <define name="Class.type">
+ <ref name="ClassExpression"/>
+ <optional>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="abbreviatedIRI">
+ <ref name="abbreviatedIRI"/>
+ </attribute>
+ </optional>
+ </define>
+ <start combine="choice">
+ <ref name="Class"/>
+ </start>
+ <define name="Class">
+ <element name="Class">
+ <ref name="Class.type"/>
+ </element>
+ </define>
+ <define name="Datatype.type">
+ <ref name="DataRange"/>
+ <optional>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="abbreviatedIRI">
+ <ref name="abbreviatedIRI"/>
+ </attribute>
+ </optional>
+ </define>
+ <start combine="choice">
+ <ref name="Datatype"/>
+ </start>
+ <define name="Datatype">
+ <element name="Datatype">
+ <ref name="Datatype.type"/>
+ </element>
+ </define>
+ <define name="ObjectProperty.type">
+ <ref name="ObjectPropertyExpression"/>
+ <optional>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="abbreviatedIRI">
+ <ref name="abbreviatedIRI"/>
+ </attribute>
+ </optional>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectProperty"/>
+ </start>
+ <define name="ObjectProperty">
+ <element name="ObjectProperty">
+ <ref name="ObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="DataProperty.type">
+ <ref name="DataPropertyExpression"/>
+ <optional>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="abbreviatedIRI">
+ <ref name="abbreviatedIRI"/>
+ </attribute>
+ </optional>
+ </define>
+ <start combine="choice">
+ <ref name="DataProperty"/>
+ </start>
+ <define name="DataProperty">
+ <element name="DataProperty">
+ <ref name="DataProperty.type"/>
+ </element>
+ </define>
+ <define name="AnnotationProperty.type">
+ <optional>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="abbreviatedIRI">
+ <ref name="abbreviatedIRI"/>
+ </attribute>
+ </optional>
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="AnnotationProperty"/>
+ </start>
+ <define name="AnnotationProperty">
+ <element name="AnnotationProperty">
+ <ref name="AnnotationProperty.type"/>
+ </element>
+ </define>
+ <define name="Individual">
+ <attribute name="specialAttrs"/>
+ <choice>
+ <ref name="NamedIndividual"/>
+ <ref name="AnonymousIndividual"/>
+ </choice>
+ </define>
+ <define name="NamedIndividual.type">
+ <ref name="Individual"/>
+ <optional>
+ <attribute name="IRI">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="abbreviatedIRI">
+ <ref name="abbreviatedIRI"/>
+ </attribute>
+ </optional>
+ </define>
+ <start combine="choice">
+ <ref name="NamedIndividual"/>
+ </start>
+ <define name="NamedIndividual">
+ <element name="NamedIndividual">
+ <ref name="NamedIndividual.type"/>
+ </element>
+ </define>
+ <define name="AnonymousIndividual.type">
+ <ref name="Individual"/>
+ <attribute name="nodeID">
+ <data type="NCName"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="AnonymousIndividual"/>
+ </start>
+ <define name="AnonymousIndividual">
+ <element name="AnonymousIndividual">
+ <ref name="AnonymousIndividual.type"/>
+ </element>
+ </define>
+ <define name="Literal.type">
+ <attribute name="datatypeIRI">
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="Literal"/>
+ </start>
+ <define name="Literal">
+ <element name="Literal">
+ <ref name="Literal.type"/>
+ </element>
+ </define>
+ <!-- Declarations -->
+ <define name="Declaration.type">
+ <ref name="Axiom"/>
+ <ref name="Entity"/>
+ </define>
+ <start combine="choice">
+ <ref name="Declaration"/>
+ </start>
+ <define name="Declaration">
+ <element name="Declaration">
+ <ref name="Declaration.type"/>
+ </element>
+ </define>
+ <!-- Object property expressions -->
+ <define name="ObjectPropertyExpression">
+ <attribute name="specialAttrs"/>
+ <choice>
+ <ref name="ObjectProperty"/>
+ <ref name="ObjectInverseOf"/>
+ </choice>
+ </define>
+ <define name="ObjectInverseOf.type">
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="ObjectProperty"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectInverseOf"/>
+ </start>
+ <define name="ObjectInverseOf">
+ <element name="ObjectInverseOf">
+ <ref name="ObjectInverseOf.type"/>
+ </element>
+ </define>
+ <!-- Data property expressions -->
+ <define name="DataPropertyExpression">
+ <attribute name="specialAttrs"/>
+ <ref name="DataProperty"/>
+ </define>
+ <!-- Data ranges -->
+ <define name="DataRange">
+ <attribute name="specialAttrs"/>
+ <choice>
+ <ref name="Datatype"/>
+ <ref name="DataIntersectionOf"/>
+ <ref name="DataUnionOf"/>
+ <ref name="DataComplementOf"/>
+ <ref name="DataOneOf"/>
+ <ref name="DatatypeRestriction"/>
+ </choice>
+ </define>
+ <define name="DataIntersectionOf.type">
+ <ref name="DataRange"/>
+ <oneOrMore>
+ <ref name="DataRange"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DataIntersectionOf"/>
+ </start>
+ <define name="DataIntersectionOf">
+ <element name="DataIntersectionOf">
+ <ref name="DataIntersectionOf.type"/>
+ </element>
+ </define>
+ <define name="DataUnionOf.type">
+ <ref name="DataRange"/>
+ <oneOrMore>
+ <ref name="DataRange"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DataUnionOf"/>
+ </start>
+ <define name="DataUnionOf">
+ <element name="DataUnionOf">
+ <ref name="DataUnionOf.type"/>
+ </element>
+ </define>
+ <define name="DataComplementOf.type">
+ <ref name="DataRange"/>
+ <ref name="DataRange"/>
+ </define>
+ <start combine="choice">
+ <ref name="DataComplementOf"/>
+ </start>
+ <define name="DataComplementOf">
+ <element name="DataComplementOf">
+ <ref name="DataComplementOf.type"/>
+ </element>
+ </define>
+ <define name="DataOneOf.type">
+ <ref name="DataRange"/>
+ <oneOrMore>
+ <ref name="Literal"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DataOneOf"/>
+ </start>
+ <define name="DataOneOf">
+ <element name="DataOneOf">
+ <ref name="DataOneOf.type"/>
+ </element>
+ </define>
+ <define name="DatatypeRestriction.type">
+ <ref name="DataRange"/>
+ <ref name="Datatype"/>
+ <oneOrMore>
+ <element name="FacetRestriction">
+ <ref name="FacetRestriction"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DatatypeRestriction"/>
+ </start>
+ <define name="DatatypeRestriction">
+ <element name="DatatypeRestriction">
+ <ref name="DatatypeRestriction.type"/>
+ </element>
+ </define>
+ <define name="FacetRestriction">
+ <ref name="Literal"/>
+ <attribute name="facet">
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="specialAttrs"/>
+ </define>
+ <!-- Class expressions -->
+ <define name="ClassExpression">
+ <attribute name="specialAttrs"/>
+ <choice>
+ <ref name="Class"/>
+ <ref name="ObjectIntersectionOf"/>
+ <ref name="ObjectUnionOf"/>
+ <ref name="ObjectComplementOf"/>
+ <ref name="ObjectOneOf"/>
+ <ref name="ObjectSomeValuesFrom"/>
+ <ref name="ObjectAllValuesFrom"/>
+ <ref name="ObjectHasValue"/>
+ <ref name="ObjectHasSelf"/>
+ <ref name="ObjectMinCardinality"/>
+ <ref name="ObjectMaxCardinality"/>
+ <ref name="ObjectExactCardinality"/>
+ <ref name="DataSomeValuesFrom"/>
+ <ref name="DataAllValuesFrom"/>
+ <ref name="DataHasValue"/>
+ <ref name="DataMinCardinality"/>
+ <ref name="DataMaxCardinality"/>
+ <ref name="DataExactCardinality"/>
+ </choice>
+ </define>
+ <define name="ObjectIntersectionOf.type">
+ <ref name="ClassExpression"/>
+ <oneOrMore>
+ <ref name="ClassExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectIntersectionOf"/>
+ </start>
+ <define name="ObjectIntersectionOf">
+ <element name="ObjectIntersectionOf">
+ <ref name="ObjectIntersectionOf.type"/>
+ </element>
+ </define>
+ <define name="ObjectUnionOf.type">
+ <ref name="ClassExpression"/>
+ <oneOrMore>
+ <ref name="ClassExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectUnionOf"/>
+ </start>
+ <define name="ObjectUnionOf">
+ <element name="ObjectUnionOf">
+ <ref name="ObjectUnionOf.type"/>
+ </element>
+ </define>
+ <define name="ObjectComplementOf.type">
+ <ref name="ClassExpression"/>
+ <ref name="ClassExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectComplementOf"/>
+ </start>
+ <define name="ObjectComplementOf">
+ <element name="ObjectComplementOf">
+ <ref name="ObjectComplementOf.type"/>
+ </element>
+ </define>
+ <define name="ObjectOneOf.type">
+ <ref name="ClassExpression"/>
+ <oneOrMore>
+ <ref name="Individual"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectOneOf"/>
+ </start>
+ <define name="ObjectOneOf">
+ <element name="ObjectOneOf">
+ <ref name="ObjectOneOf.type"/>
+ </element>
+ </define>
+ <define name="ObjectSomeValuesFrom.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="ClassExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectSomeValuesFrom"/>
+ </start>
+ <define name="ObjectSomeValuesFrom">
+ <element name="ObjectSomeValuesFrom">
+ <ref name="ObjectSomeValuesFrom.type"/>
+ </element>
+ </define>
+ <define name="ObjectAllValuesFrom.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="ClassExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectAllValuesFrom"/>
+ </start>
+ <define name="ObjectAllValuesFrom">
+ <element name="ObjectAllValuesFrom">
+ <ref name="ObjectAllValuesFrom.type"/>
+ </element>
+ </define>
+ <define name="ObjectHasValue.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="Individual"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectHasValue"/>
+ </start>
+ <define name="ObjectHasValue">
+ <element name="ObjectHasValue">
+ <ref name="ObjectHasValue.type"/>
+ </element>
+ </define>
+ <define name="ObjectHasSelf.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectHasSelf"/>
+ </start>
+ <define name="ObjectHasSelf">
+ <element name="ObjectHasSelf">
+ <ref name="ObjectHasSelf.type"/>
+ </element>
+ </define>
+ <define name="ObjectMinCardinality.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ <optional>
+ <ref name="ClassExpression"/>
+ </optional>
+ <attribute name="cardinality">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectMinCardinality"/>
+ </start>
+ <define name="ObjectMinCardinality">
+ <element name="ObjectMinCardinality">
+ <ref name="ObjectMinCardinality.type"/>
+ </element>
+ </define>
+ <define name="ObjectMaxCardinality.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ <optional>
+ <ref name="ClassExpression"/>
+ </optional>
+ <attribute name="cardinality">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectMaxCardinality"/>
+ </start>
+ <define name="ObjectMaxCardinality">
+ <element name="ObjectMaxCardinality">
+ <ref name="ObjectMaxCardinality.type"/>
+ </element>
+ </define>
+ <define name="ObjectExactCardinality.type">
+ <ref name="ClassExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ <optional>
+ <ref name="ClassExpression"/>
+ </optional>
+ <attribute name="cardinality">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectExactCardinality"/>
+ </start>
+ <define name="ObjectExactCardinality">
+ <element name="ObjectExactCardinality">
+ <ref name="ObjectExactCardinality.type"/>
+ </element>
+ </define>
+ <define name="DataSomeValuesFrom.type">
+ <ref name="ClassExpression"/>
+ <oneOrMore>
+ <ref name="DataPropertyExpression"/>
+ </oneOrMore>
+ <ref name="DataRange"/>
+ </define>
+ <start combine="choice">
+ <ref name="DataSomeValuesFrom"/>
+ </start>
+ <define name="DataSomeValuesFrom">
+ <element name="DataSomeValuesFrom">
+ <ref name="DataSomeValuesFrom.type"/>
+ </element>
+ </define>
+ <define name="DataAllValuesFrom.type">
+ <ref name="ClassExpression"/>
+ <oneOrMore>
+ <ref name="DataPropertyExpression"/>
+ </oneOrMore>
+ <ref name="DataRange"/>
+ </define>
+ <start combine="choice">
+ <ref name="DataAllValuesFrom"/>
+ </start>
+ <define name="DataAllValuesFrom">
+ <element name="DataAllValuesFrom">
+ <ref name="DataAllValuesFrom.type"/>
+ </element>
+ </define>
+ <define name="DataHasValue.type">
+ <ref name="ClassExpression"/>
+ <ref name="DataPropertyExpression"/>
+ <ref name="Literal"/>
+ </define>
+ <start combine="choice">
+ <ref name="DataHasValue"/>
+ </start>
+ <define name="DataHasValue">
+ <element name="DataHasValue">
+ <ref name="DataHasValue.type"/>
+ </element>
+ </define>
+ <define name="DataMinCardinality.type">
+ <ref name="ClassExpression"/>
+ <ref name="DataPropertyExpression"/>
+ <optional>
+ <ref name="DataRange"/>
+ </optional>
+ <attribute name="cardinality">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="DataMinCardinality"/>
+ </start>
+ <define name="DataMinCardinality">
+ <element name="DataMinCardinality">
+ <ref name="DataMinCardinality.type"/>
+ </element>
+ </define>
+ <define name="DataMaxCardinality.type">
+ <ref name="ClassExpression"/>
+ <ref name="DataPropertyExpression"/>
+ <optional>
+ <ref name="DataRange"/>
+ </optional>
+ <attribute name="cardinality">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="DataMaxCardinality"/>
+ </start>
+ <define name="DataMaxCardinality">
+ <element name="DataMaxCardinality">
+ <ref name="DataMaxCardinality.type"/>
+ </element>
+ </define>
+ <define name="DataExactCardinality.type">
+ <ref name="ClassExpression"/>
+ <ref name="DataPropertyExpression"/>
+ <optional>
+ <ref name="DataRange"/>
+ </optional>
+ <attribute name="cardinality">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <start combine="choice">
+ <ref name="DataExactCardinality"/>
+ </start>
+ <define name="DataExactCardinality">
+ <element name="DataExactCardinality">
+ <ref name="DataExactCardinality.type"/>
+ </element>
+ </define>
+ <!-- Axioms -->
+ <define name="Axiom">
+ <ref name="axiomAnnotations"/>
+ <attribute name="specialAttrs"/>
+ <choice>
+ <ref name="Declaration"/>
+ <ref name="ClassAxiom"/>
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="DataPropertyAxiom"/>
+ <ref name="DatatypeDefinition"/>
+ <ref name="HasKey"/>
+ <ref name="Assertion"/>
+ <ref name="AnnotationAxiom"/>
+ </choice>
+ </define>
+ <!-- Class expression axioms -->
+ <define name="ClassAxiom">
+ <choice>
+ <ref name="Axiom"/>
+ <ref name="SubClassOf"/>
+ <ref name="EquivalentClasses"/>
+ <ref name="DisjointClasses"/>
+ <ref name="DisjointUnion"/>
+ </choice>
+ </define>
+ <define name="SubClassOf.type">
+ <ref name="ClassAxiom"/>
+ <ref name="ClassExpression"/>
+ <!-- This is the subexpression -->
+ <ref name="ClassExpression"/>
+ </define>
+ <!-- This is the superexpression -->
+ <start combine="choice">
+ <ref name="SubClassOf"/>
+ </start>
+ <define name="SubClassOf">
+ <element name="SubClassOf">
+ <ref name="SubClassOf.type"/>
+ </element>
+ </define>
+ <define name="EquivalentClasses.type">
+ <ref name="ClassAxiom"/>
+ <oneOrMore>
+ <ref name="ClassExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="EquivalentClasses"/>
+ </start>
+ <define name="EquivalentClasses">
+ <element name="EquivalentClasses">
+ <ref name="EquivalentClasses.type"/>
+ </element>
+ </define>
+ <define name="DisjointClasses.type">
+ <ref name="ClassAxiom"/>
+ <oneOrMore>
+ <ref name="ClassExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DisjointClasses"/>
+ </start>
+ <define name="DisjointClasses">
+ <element name="DisjointClasses">
+ <ref name="DisjointClasses.type"/>
+ </element>
+ </define>
+ <define name="DisjointUnion.type">
+ <ref name="ClassAxiom"/>
+ <ref name="Class"/>
+ <oneOrMore>
+ <ref name="ClassExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DisjointUnion"/>
+ </start>
+ <define name="DisjointUnion">
+ <element name="DisjointUnion">
+ <ref name="DisjointUnion.type"/>
+ </element>
+ </define>
+ <!-- Object property axioms -->
+ <define name="ObjectPropertyAxiom">
+ <choice>
+ <ref name="Axiom"/>
+ <ref name="SubObjectPropertyOf"/>
+ <ref name="EquivalentObjectProperties"/>
+ <ref name="DisjointObjectProperties"/>
+ <ref name="InverseObjectProperties"/>
+ <ref name="ObjectPropertyDomain"/>
+ <ref name="ObjectPropertyRange"/>
+ <ref name="FunctionalObjectProperty"/>
+ <ref name="InverseFunctionalObjectProperty"/>
+ <ref name="ReflexiveObjectProperty"/>
+ <ref name="IrreflexiveObjectProperty"/>
+ <ref name="SymmetricObjectProperty"/>
+ <ref name="AsymmetricObjectProperty"/>
+ <ref name="TransitiveObjectProperty"/>
+ </choice>
+ </define>
+ <define name="SubObjectPropertyOf.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <choice>
+ <!-- This is the subproperty expression or the property chain -->
+ <ref name="ObjectPropertyExpression"/>
+ <element name="ObjectPropertyChain">
+ <ref name="ObjectPropertyChain.type"/>
+ </element>
+ </choice>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <!-- This is the superproperty expression -->
+ <start combine="choice">
+ <ref name="SubObjectPropertyOf"/>
+ </start>
+ <define name="SubObjectPropertyOf">
+ <element name="SubObjectPropertyOf">
+ <ref name="SubObjectPropertyOf.type"/>
+ </element>
+ </define>
+ <define name="ObjectPropertyChain.type">
+ <oneOrMore>
+ <ref name="ObjectPropertyExpression"/>
+ </oneOrMore>
+ <attribute name="specialAttrs"/>
+ </define>
+ <define name="EquivalentObjectProperties.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <oneOrMore>
+ <ref name="ObjectPropertyExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="EquivalentObjectProperties"/>
+ </start>
+ <define name="EquivalentObjectProperties">
+ <element name="EquivalentObjectProperties">
+ <ref name="EquivalentObjectProperties.type"/>
+ </element>
+ </define>
+ <define name="DisjointObjectProperties.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <oneOrMore>
+ <ref name="ObjectPropertyExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DisjointObjectProperties"/>
+ </start>
+ <define name="DisjointObjectProperties">
+ <element name="DisjointObjectProperties">
+ <ref name="DisjointObjectProperties.type"/>
+ </element>
+ </define>
+ <define name="ObjectPropertyDomain.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="ClassExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectPropertyDomain"/>
+ </start>
+ <define name="ObjectPropertyDomain">
+ <element name="ObjectPropertyDomain">
+ <ref name="ObjectPropertyDomain.type"/>
+ </element>
+ </define>
+ <define name="ObjectPropertyRange.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="ClassExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ObjectPropertyRange"/>
+ </start>
+ <define name="ObjectPropertyRange">
+ <element name="ObjectPropertyRange">
+ <ref name="ObjectPropertyRange.type"/>
+ </element>
+ </define>
+ <define name="InverseObjectProperties.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="InverseObjectProperties"/>
+ </start>
+ <define name="InverseObjectProperties">
+ <element name="InverseObjectProperties">
+ <ref name="InverseObjectProperties.type"/>
+ </element>
+ </define>
+ <define name="FunctionalObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="FunctionalObjectProperty"/>
+ </start>
+ <define name="FunctionalObjectProperty">
+ <element name="FunctionalObjectProperty">
+ <ref name="FunctionalObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="InverseFunctionalObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="InverseFunctionalObjectProperty"/>
+ </start>
+ <define name="InverseFunctionalObjectProperty">
+ <element name="InverseFunctionalObjectProperty">
+ <ref name="InverseFunctionalObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="ReflexiveObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="ReflexiveObjectProperty"/>
+ </start>
+ <define name="ReflexiveObjectProperty">
+ <element name="ReflexiveObjectProperty">
+ <ref name="ReflexiveObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="IrreflexiveObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="IrreflexiveObjectProperty"/>
+ </start>
+ <define name="IrreflexiveObjectProperty">
+ <element name="IrreflexiveObjectProperty">
+ <ref name="IrreflexiveObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="SymmetricObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="SymmetricObjectProperty"/>
+ </start>
+ <define name="SymmetricObjectProperty">
+ <element name="SymmetricObjectProperty">
+ <ref name="SymmetricObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="AsymmetricObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="AsymmetricObjectProperty"/>
+ </start>
+ <define name="AsymmetricObjectProperty">
+ <element name="AsymmetricObjectProperty">
+ <ref name="AsymmetricObjectProperty.type"/>
+ </element>
+ </define>
+ <define name="TransitiveObjectProperty.type">
+ <ref name="ObjectPropertyAxiom"/>
+ <ref name="ObjectPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="TransitiveObjectProperty"/>
+ </start>
+ <define name="TransitiveObjectProperty">
+ <element name="TransitiveObjectProperty">
+ <ref name="TransitiveObjectProperty.type"/>
+ </element>
+ </define>
+ <!-- Data property axioms -->
+ <define name="DataPropertyAxiom">
+ <choice>
+ <ref name="Axiom"/>
+ <ref name="SubDataPropertyOf"/>
+ <ref name="EquivalentDataProperties"/>
+ <ref name="DisjointDataProperties"/>
+ <ref name="DataPropertyDomain"/>
+ <ref name="DataPropertyRange"/>
+ <ref name="FunctionalDataProperty"/>
+ </choice>
+ </define>
+ <define name="SubDataPropertyOf.type">
+ <ref name="DataPropertyAxiom"/>
+ <ref name="DataPropertyExpression"/>
+ <!-- This is the subproperty expression -->
+ <ref name="DataPropertyExpression"/>
+ </define>
+ <!-- This is the superproperty expression -->
+ <start combine="choice">
+ <ref name="SubDataPropertyOf"/>
+ </start>
+ <define name="SubDataPropertyOf">
+ <element name="SubDataPropertyOf">
+ <ref name="SubDataPropertyOf.type"/>
+ </element>
+ </define>
+ <define name="EquivalentDataProperties.type">
+ <ref name="DataPropertyAxiom"/>
+ <oneOrMore>
+ <ref name="DataPropertyExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="EquivalentDataProperties"/>
+ </start>
+ <define name="EquivalentDataProperties">
+ <element name="EquivalentDataProperties">
+ <ref name="EquivalentDataProperties.type"/>
+ </element>
+ </define>
+ <define name="DisjointDataProperties.type">
+ <ref name="DataPropertyAxiom"/>
+ <oneOrMore>
+ <ref name="DataPropertyExpression"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DisjointDataProperties"/>
+ </start>
+ <define name="DisjointDataProperties">
+ <element name="DisjointDataProperties">
+ <ref name="DisjointDataProperties.type"/>
+ </element>
+ </define>
+ <define name="DataPropertyDomain.type">
+ <ref name="DataPropertyAxiom"/>
+ <ref name="DataPropertyExpression"/>
+ <ref name="ClassExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="DataPropertyDomain"/>
+ </start>
+ <define name="DataPropertyDomain">
+ <element name="DataPropertyDomain">
+ <ref name="DataPropertyDomain.type"/>
+ </element>
+ </define>
+ <define name="DataPropertyRange.type">
+ <ref name="DataPropertyAxiom"/>
+ <ref name="DataPropertyExpression"/>
+ <ref name="DataRange"/>
+ </define>
+ <start combine="choice">
+ <ref name="DataPropertyRange"/>
+ </start>
+ <define name="DataPropertyRange">
+ <element name="DataPropertyRange">
+ <ref name="DataPropertyRange.type"/>
+ </element>
+ </define>
+ <define name="FunctionalDataProperty.type">
+ <ref name="DataPropertyAxiom"/>
+ <ref name="DataPropertyExpression"/>
+ </define>
+ <start combine="choice">
+ <ref name="FunctionalDataProperty"/>
+ </start>
+ <define name="FunctionalDataProperty">
+ <element name="FunctionalDataProperty">
+ <ref name="FunctionalDataProperty.type"/>
+ </element>
+ </define>
+ <!-- Datatype definitions -->
+ <define name="DatatypeDefinition.type">
+ <ref name="Axiom"/>
+ <ref name="Datatype"/>
+ <ref name="DataRange"/>
+ </define>
+ <start combine="choice">
+ <ref name="DatatypeDefinition"/>
+ </start>
+ <define name="DatatypeDefinition">
+ <element name="DatatypeDefinition">
+ <ref name="DatatypeDefinition.type"/>
+ </element>
+ </define>
+ <!-- Key axioms -->
+ <define name="HasKey.type">
+ <ref name="Axiom"/>
+ <ref name="ClassExpression"/>
+ <zeroOrMore>
+ <ref name="ObjectPropertyExpression"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataPropertyExpression"/>
+ </zeroOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="HasKey"/>
+ </start>
+ <define name="HasKey">
+ <element name="HasKey">
+ <ref name="HasKey.type"/>
+ </element>
+ </define>
+ <!-- Assertions -->
+ <define name="Assertion">
+ <choice>
+ <ref name="Axiom"/>
+ <ref name="SameIndividual"/>
+ <ref name="DifferentIndividuals"/>
+ <ref name="ClassAssertion"/>
+ <ref name="ObjectPropertyAssertion"/>
+ <ref name="NegativeObjectPropertyAssertion"/>
+ <ref name="DataPropertyAssertion"/>
+ <ref name="NegativeDataPropertyAssertion"/>
+ </choice>
+ </define>
+ <define name="SameIndividual.type">
+ <ref name="Assertion"/>
+ <oneOrMore>
+ <ref name="Individual"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="SameIndividual"/>
+ </start>
+ <define name="SameIndividual">
+ <element name="SameIndividual">
+ <ref name="SameIndividual.type"/>
+ </element>
+ </define>
+ <define name="DifferentIndividuals.type">
+ <ref name="Assertion"/>
+ <oneOrMore>
+ <ref name="Individual"/>
+ </oneOrMore>
+ </define>
+ <start combine="choice">
+ <ref name="DifferentIndividuals"/>
+ </start>
+ <define name="DifferentIndividuals">
+ <element name="DifferentIndividuals">
+ <ref name="DifferentIndividuals.type"/>
+ </element>
+ </define>
+ <define name="ClassAssertion.type">
+ <ref name="Assertion"/>
+ <ref name="ClassExpression"/>
+ <ref name="Individual"/>
+ </define>
+ <start combine="choice">
+ <ref name="ClassAssertion"/>
+ </start>
+ <define name="ClassAssertion">
+ <element name="ClassAssertion">
+ <ref name="ClassAssertion.type"/>
+ </element>
+ </define>
+ <define name="ObjectPropertyAssertion.type">
+ <ref name="Assertion"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="Individual"/>
+ <!-- This is the source invididual -->
+ <ref name="Individual"/>
+ </define>
+ <!-- This is the target individual -->
+ <start combine="choice">
+ <ref name="ObjectPropertyAssertion"/>
+ </start>
+ <define name="ObjectPropertyAssertion">
+ <element name="ObjectPropertyAssertion">
+ <ref name="ObjectPropertyAssertion.type"/>
+ </element>
+ </define>
+ <define name="NegativeObjectPropertyAssertion.type">
+ <ref name="Assertion"/>
+ <ref name="ObjectPropertyExpression"/>
+ <ref name="Individual"/>
+ <!-- This is the source invididual -->
+ <ref name="Individual"/>
+ </define>
+ <!-- This is the target individual -->
+ <start combine="choice">
+ <ref name="NegativeObjectPropertyAssertion"/>
+ </start>
+ <define name="NegativeObjectPropertyAssertion">
+ <element name="NegativeObjectPropertyAssertion">
+ <ref name="NegativeObjectPropertyAssertion.type"/>
+ </element>
+ </define>
+ <define name="DataPropertyAssertion.type">
+ <ref name="Assertion"/>
+ <ref name="DataPropertyExpression"/>
+ <ref name="Individual"/>
+ <!-- This is the source invididual -->
+ <ref name="Literal"/>
+ </define>
+ <!-- This is the target individual -->
+ <start combine="choice">
+ <ref name="DataPropertyAssertion"/>
+ </start>
+ <define name="DataPropertyAssertion">
+ <element name="DataPropertyAssertion">
+ <ref name="DataPropertyAssertion.type"/>
+ </element>
+ </define>
+ <define name="NegativeDataPropertyAssertion.type">
+ <ref name="Assertion"/>
+ <ref name="DataPropertyExpression"/>
+ <ref name="Individual"/>
+ <!-- This is the source invididual -->
+ <ref name="Literal"/>
+ </define>
+ <!-- This is the target individual -->
+ <start combine="choice">
+ <ref name="NegativeDataPropertyAssertion"/>
+ </start>
+ <define name="NegativeDataPropertyAssertion">
+ <element name="NegativeDataPropertyAssertion">
+ <ref name="NegativeDataPropertyAssertion.type"/>
+ </element>
+ </define>
+ <!-- Annotations -->
+ <define name="IRI.type">
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="IRI"/>
+ </start>
+ <define name="IRI">
+ <element name="IRI">
+ <ref name="IRI.type"/>
+ </element>
+ </define>
+ <define name="AbbreviatedIRI.type">
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="AbbreviatedIRI"/>
+ </start>
+ <define name="AbbreviatedIRI">
+ <element name="AbbreviatedIRI">
+ <ref name="AbbreviatedIRI.type"/>
+ </element>
+ </define>
+ <define name="AnnotationSubject">
+ <choice>
+ <ref name="IRI"/>
+ <ref name="AbbreviatedIRI"/>
+ <ref name="AnonymousIndividual"/>
+ </choice>
+ </define>
+ <define name="AnnotationValue">
+ <choice>
+ <ref name="IRI"/>
+ <ref name="AbbreviatedIRI"/>
+ <ref name="AnonymousIndividual"/>
+ <ref name="Literal"/>
+ </choice>
+ </define>
+ <define name="Annotation.type">
+ <ref name="annotationAnnotations"/>
+ <ref name="AnnotationProperty"/>
+ <ref name="AnnotationValue"/>
+ <attribute name="specialAttrs"/>
+ </define>
+ <start combine="choice">
+ <ref name="Annotation"/>
+ </start>
+ <define name="Annotation">
+ <element name="Annotation">
+ <ref name="Annotation.type"/>
+ </element>
+ </define>
+ <define name="axiomAnnotations">
+ <zeroOrMore>
+ <ref name="Annotation"/>
+ </zeroOrMore>
+ </define>
+ <define name="ontologyAnnotations">
+ <zeroOrMore>
+ <ref name="Annotation"/>
+ </zeroOrMore>
+ </define>
+ <define name="annotationAnnotations">
+ <zeroOrMore>
+ <ref name="Annotation"/>
+ </zeroOrMore>
+ </define>
+ <!-- Annotation axioms -->
+ <define name="AnnotationAxiom">
+ <choice>
+ <ref name="Axiom"/>
+ <ref name="AnnotationAssertion"/>
+ <ref name="SubAnnotationPropertyOf"/>
+ <ref name="AnnotationPropertyDomain"/>
+ <ref name="AnnotationPropertyRange"/>
+ </choice>
+ </define>
+ <define name="AnnotationAssertion.type">
+ <ref name="AnnotationAxiom"/>
+ <ref name="AnnotationProperty"/>
+ <ref name="AnnotationSubject"/>
+ <ref name="AnnotationValue"/>
+ </define>
+ <start combine="choice">
+ <ref name="AnnotationAssertion"/>
+ </start>
+ <define name="AnnotationAssertion">
+ <element name="AnnotationAssertion">
+ <ref name="AnnotationAssertion.type"/>
+ </element>
+ </define>
+ <define name="SubAnnotationPropertyOf.type">
+ <ref name="AnnotationAxiom"/>
+ <ref name="AnnotationProperty"/>
+ <!-- This is the subproperty -->
+ <ref name="AnnotationProperty"/>
+ </define>
+ <!-- This is the superproperty -->
+ <start combine="choice">
+ <ref name="SubAnnotationPropertyOf"/>
+ </start>
+ <define name="SubAnnotationPropertyOf">
+ <element name="SubAnnotationPropertyOf">
+ <ref name="SubAnnotationPropertyOf.type"/>
+ </element>
+ </define>
+ <define name="AnnotationPropertyDomain.type">
+ <ref name="AnnotationAxiom"/>
+ <ref name="AnnotationProperty"/>
+ <ref name="IRI"/>
+ <ref name="AbbreviatedIRI"/>
+ </define>
+ <start combine="choice">
+ <ref name="AnnotationPropertyDomain"/>
+ </start>
+ <define name="AnnotationPropertyDomain">
+ <element name="AnnotationPropertyDomain">
+ <ref name="AnnotationPropertyDomain.type"/>
+ </element>
+ </define>
+ <define name="AnnotationPropertyRange.type">
+ <ref name="AnnotationAxiom"/>
+ <ref name="AnnotationProperty"/>
+ <ref name="IRI"/>
+ <ref name="AbbreviatedIRI"/>
+ </define>
+ <start combine="choice">
+ <ref name="AnnotationPropertyRange"/>
+ </start>
+ <define name="AnnotationPropertyRange">
+ <element name="AnnotationPropertyRange">
+ <ref name="AnnotationPropertyRange.type"/>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/owl2xml.rng b/Master/texmf-dist/source/latex/stex/schema/rng/owl2xml.rng
new file mode 100644
index 00000000000..4510c3776fd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/owl2xml.rng
@@ -0,0 +1,809 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ A simplified RelaxNG for OWL2 (so that we can generate OWL from sTeX
+ https://kwarc.info/repos/kwarc/repos/stex/rnc/omdoc+ltxml.rnc
+ (c) 2010 Michael Kohlhase, released under the GNU Public License (GPL)
+-->
+<grammar ns="http://www.w3.org/2002/07/owl#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="nonlocal-attribs">
+ <attribute>
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ <nsName/>
+ </except>
+ </anyName>
+ <data type="string"/>
+ </attribute>
+ </define>
+ <start>
+ <ref name="Ontology"/>
+ </start>
+ <define name="base.attrib">
+ <element name="xml:base">
+ <data type="anyURI"/>
+ </element>
+ </define>
+ <define name="ontologyIRI.attrib">
+ <attribute name="ontologyIRI">
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="IRI.attrib">
+ <choice>
+ <attribute name="IRI"/>
+ <attribute name="abbreviatedIRI"/>
+ </choice>
+ </define>
+ <define name="datatypeIRI.attrib">
+ <attribute name="datatypeIRI"/>
+ </define>
+ <define name="name.attrib">
+ <attribute name="name"/>
+ </define>
+ <define name="facet.attrib">
+ <attribute name="facet">
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="cardinality.attrib">
+ <attribute name="cardinality">
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="Ontology.attribs">
+ <interleave>
+ <optional>
+ <ref name="ontologyIRI.attrib"/>
+ </optional>
+ <optional>
+ <ref name="base.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Ontology.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="Prefix"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="Declaration"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="Import"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="Axioms"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Axioms">
+ <interleave>
+ <zeroOrMore>
+ <ref name="AnnotationAssertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DatatypeDefinition"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="HasKey"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SubClassOf"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="EquivalentClasses"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ObjectProperties"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataProperties"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DisjointClasses"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DifferentIndividuals"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SameIndividual"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ObjectPropertyAssertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataPropertyAssertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ClassAssertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="NegativeObjectPropertyAssertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="NegativeDataPropertyAssertion"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="NegativeClassAssertion"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Ontology">
+ <element name="Ontology">
+ <interleave>
+ <ref name="Ontology.attribs"/>
+ <ref name="Ontology.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="Prefix">
+ <element name="Prefix">
+ <interleave>
+ <ref name="name.attrib"/>
+ <ref name="IRI.attrib"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="Import">
+ <element name="Import">
+ <data type="anyURI"/>
+ </element>
+ </define>
+ <define name="ObjectProperties">
+ <interleave>
+ <zeroOrMore>
+ <ref name="SymmetricObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="AsymmetricObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ReflexiveObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="IrreflexiveObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="FunctionalObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="InverseObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DisjointObjectProperties"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="InverseFunctionalObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="TransitiveObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="TransitiveObjectProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ObjectPropertyDomain"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ObjectPropertyRange"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="InverseObjectProperties"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SubObjectPropertyOf"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="EquivalentObjectProperties"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="DataProperties">
+ <interleave>
+ <zeroOrMore>
+ <ref name="SymmetricDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="AsymmetricDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ReflexiveDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="IrreflexiveDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="FunctionalDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="InverseDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DisjointDataProperties"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="InverseFunctionalDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="TransitiveDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="TransitiveDataProperty"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataPropertyDomain"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataPropertyRange"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="InverseDataProperties"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SubDataPropertyOf"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="EquivalentDataProperties"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Declaration.model">
+ <choice>
+ <ref name="Class.model"/>
+ <ref name="Data.model"/>
+ </choice>
+ </define>
+ <define name="Declaration">
+ <element name="Declaration">
+ <ref name="Declaration.model"/>
+ </element>
+ </define>
+ <define name="NamedIndividual">
+ <element name="NamedIndividual">
+ <ref name="IRI.attrib"/>
+ </element>
+ </define>
+ <define name="ClassAssertion">
+ <element name="ClassAssertion">
+ <ref name="Class.model"/>
+ <ref name="Ind.class"/>
+ </element>
+ </define>
+ <define name="NegativeClassAssertion">
+ <element name="NegativeClassAssertion">
+ <ref name="Class.model"/>
+ <ref name="Ind.class"/>
+ </element>
+ </define>
+ <define name="ObjectProperty">
+ <element name="ObjectProperty">
+ <ref name="IRI.attrib"/>
+ </element>
+ </define>
+ <define name="SymmetricObjectProperty">
+ <element name="SymmetricObjectProperty">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="AsymmetricObjectProperty">
+ <element name="AsymmetricObjectProperty">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DisjointObjectProperties">
+ <element name="DisjointObjectProperties">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ReflexiveObjectProperty">
+ <element name="ReflexiveObjectProperty">
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="IrreflexiveObjectProperty">
+ <element name="IrreflexiveObjectProperty">
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="FunctionalObjectProperty">
+ <element name="FunctionalObjectProperty">
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="InverseFunctionalObjectProperty">
+ <element name="InverseFunctionalObjectProperty">
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="InverseObjectProperty">
+ <element name="InverseObjectProperty">
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="InverseObjectProperties">
+ <element name="InverseObjectProperties">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="TransitiveObjectProperty">
+ <element name="TransitiveObjectProperty">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="EquivalentObjectProperties">
+ <element name="EquivalentObjectProperties">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectPropertyDomain">
+ <element name="ObjectPropertyDomain">
+ <ref name="ObjectProperty"/>
+ <ref name="Class"/>
+ </element>
+ </define>
+ <define name="ObjectPropertyRange">
+ <element name="ObjectPropertyRange">
+ <ref name="ObjectProperty"/>
+ <ref name="Class"/>
+ </element>
+ </define>
+ <define name="SubObjectPropertyOf">
+ <element name="SubObjectPropertyOf">
+ <choice>
+ <ref name="ObjectProperty"/>
+ <ref name="ObjectPropertyChain"/>
+ </choice>
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="ObjectPropertyChain">
+ <element name="ObjectPropertyChain">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectPropertyAssertion">
+ <element name="ObjectPropertyAssertion">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ <ref name="Ind.class"/>
+ <ref name="Ind.class"/>
+ </element>
+ </define>
+ <define name="NegativeObjectPropertyAssertion">
+ <element name="NegativeObjectPropertyAssertion">
+ <zeroOrMore>
+ <ref name="ObjectProperty"/>
+ </zeroOrMore>
+ <ref name="Ind.class"/>
+ <ref name="Ind.class"/>
+ </element>
+ </define>
+ <define name="SymmetricDataProperty">
+ <element name="SymmetricDataProperty">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="AsymmetricDataProperty">
+ <element name="AsymmetricDataProperty">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DisjointDataProperties">
+ <element name="DisjointDataProperties">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ReflexiveDataProperty">
+ <element name="ReflexiveDataProperty">
+ <ref name="DataProperty"/>
+ </element>
+ </define>
+ <define name="IrreflexiveDataProperty">
+ <element name="IrreflexiveDataProperty">
+ <ref name="DataProperty"/>
+ </element>
+ </define>
+ <define name="FunctionalDataProperty">
+ <element name="FunctionalDataProperty">
+ <ref name="DataProperty"/>
+ </element>
+ </define>
+ <define name="InverseFunctionalDataProperty">
+ <element name="InverseFunctionalDataProperty">
+ <ref name="DataProperty"/>
+ </element>
+ </define>
+ <define name="InverseDataProperty">
+ <element name="InverseDataProperty">
+ <ref name="DataProperty"/>
+ </element>
+ </define>
+ <define name="InverseDataProperties">
+ <element name="InverseDataProperties">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="TransitiveDataProperty">
+ <element name="TransitiveDataProperty">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="EquivalentDataProperties">
+ <element name="EquivalentDataProperties">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DataPropertyDomain">
+ <element name="DataPropertyDomain">
+ <ref name="DataProperty"/>
+ <ref name="Class"/>
+ </element>
+ </define>
+ <define name="DataPropertyRange">
+ <element name="DataPropertyRange">
+ <ref name="DataProperty"/>
+ <ref name="Datatype"/>
+ </element>
+ </define>
+ <define name="SubDataPropertyOf">
+ <element name="SubDataPropertyOf">
+ <choice>
+ <ref name="DataProperty"/>
+ <ref name="DataPropertyChain"/>
+ </choice>
+ <ref name="DataProperty"/>
+ </element>
+ </define>
+ <define name="DataPropertyChain">
+ <element name="DataPropertyChain">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DataPropertyAssertion">
+ <element name="DataPropertyAssertion">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ <ref name="Ind.class"/>
+ <ref name="Literal"/>
+ </element>
+ </define>
+ <define name="NegativeDataPropertyAssertion">
+ <element name="NegativeDataPropertyAssertion">
+ <zeroOrMore>
+ <ref name="DataProperty"/>
+ </zeroOrMore>
+ <ref name="Ind.class"/>
+ <ref name="Literal"/>
+ </element>
+ </define>
+ <define name="DataProperty">
+ <element name="DataProperty">
+ <ref name="IRI.attrib"/>
+ </element>
+ </define>
+ <define name="Datatype">
+ <element name="Datatype">
+ <ref name="IRI.attrib"/>
+ </element>
+ </define>
+ <define name="Class">
+ <element name="Class">
+ <ref name="IRI.attrib"/>
+ </element>
+ </define>
+ <define name="Annotation">
+ <element name="Annotation">
+ <interleave>
+ <ref name="AnnotationProperty"/>
+ <ref name="Literal"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="AnnotationAssertion">
+ <element name="AnnotationAssertion">
+ <ref name="AnnotationProperty"/>
+ <ref name="IRI"/>
+ <ref name="Literal"/>
+ </element>
+ </define>
+ <define name="AnnotationProperty">
+ <element name="AnnotationProperty">
+ <ref name="IRI.attrib"/>
+ </element>
+ </define>
+ <define name="IRI">
+ <element name="IRI">
+ <data type="anyURI"/>
+ </element>
+ </define>
+ <define name="Literal">
+ <element name="Literal">
+ <interleave>
+ <optional>
+ <ref name="datatypeIRI.attrib"/>
+ </optional>
+ <text/>
+ </interleave>
+ </element>
+ </define>
+ <define name="DatatypeDefinition.model">
+ <interleave>
+ <zeroOrMore>
+ <ref name="Datatype"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DatatypeRestriction"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataComplementOf"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataIntersectionOf"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="DataOneOf"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="DatatypeDefinition">
+ <element name="DatatypeDefinition">
+ <ref name="DatatypeDefinition.model"/>
+ </element>
+ </define>
+ <define name="DatatypeRestriction">
+ <element name="DatatypeRestriction">
+ <interleave>
+ <ref name="Datatype"/>
+ <zeroOrMore>
+ <ref name="FacetRestriction"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="FacetRestriction">
+ <element name="FacetRestriction">
+ <interleave>
+ <ref name="facet.attrib"/>
+ <ref name="Literal"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="DataIntersectionOf">
+ <element name="DataIntersectionOf">
+ <zeroOrMore>
+ <ref name="Data.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DataComplementOf">
+ <element name="DataComplementOf">
+ <zeroOrMore>
+ <ref name="Data.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DataOneOf">
+ <element name="DataOneOf">
+ <zeroOrMore>
+ <ref name="Literal"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DataSomeValuesFrom">
+ <element name="DataSomeValuesFrom">
+ <zeroOrMore>
+ <ref name="Data.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DataAllValuesFrom">
+ <element name="DataAllValuesFrom">
+ <zeroOrMore>
+ <ref name="Data.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Data.model">
+ <choice>
+ <ref name="DataProperty"/>
+ <ref name="Datatype"/>
+ <ref name="DataOneOf"/>
+ <ref name="DataSomeValuesFrom"/>
+ <ref name="DataAllValuesFrom"/>
+ <ref name="DataComplementOf"/>
+ <ref name="DatatypeRestriction"/>
+ </choice>
+ </define>
+ <define name="HasKey">
+ <element name="HasKey">
+ <ref name="Class"/>
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="SubClassOf">
+ <element name="SubClassOf">
+ <zeroOrMore>
+ <ref name="Annotation"/>
+ </zeroOrMore>
+ <ref name="Class.model"/>
+ <choice>
+ <ref name="Data.model"/>
+ <ref name="Class.model"/>
+ </choice>
+ </element>
+ </define>
+ <define name="EquivalentClasses">
+ <element name="EquivalentClasses">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectIntersectionOf">
+ <element name="ObjectIntersectionOf">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectComplementOf">
+ <element name="ObjectComplementOf">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectSomeValuesFrom">
+ <element name="ObjectSomeValuesFrom">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectAllValuesFrom">
+ <element name="ObjectAllValuesFrom">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectOneOf">
+ <element name="ObjectOneOf">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectInverseOf">
+ <element name="ObjectInverseOf">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="ObjectMaxCardinality">
+ <element name="ObjectMaxCardinality">
+ <interleave>
+ <ref name="cardinality.attrib"/>
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="ObjectMinCardinality">
+ <element name="ObjectMinCardinality">
+ <interleave>
+ <ref name="cardinality.attrib"/>
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="ObjectExactCardinality">
+ <element name="ObjectExactCardinality">
+ <interleave>
+ <ref name="cardinality.attrib"/>
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="ObjectHasValue">
+ <element name="ObjectHasValue">
+ <ref name="ObjectProperty"/>
+ <ref name="Ind.class"/>
+ </element>
+ </define>
+ <define name="ObjectHasSelf">
+ <element name="ObjectHasSelf">
+ <ref name="ObjectProperty"/>
+ </element>
+ </define>
+ <define name="ObjectUnionOf">
+ <element name="ObjectUnionOf">
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Class.model">
+ <choice>
+ <ref name="Class"/>
+ <ref name="ObjectIntersectionOf"/>
+ <ref name="ObjectComplementOf"/>
+ <ref name="ObjectSomeValuesFrom"/>
+ <ref name="ObjectAllValuesFrom"/>
+ <ref name="ObjectOneOf"/>
+ <ref name="Ind.class"/>
+ <ref name="ObjectInverseOf"/>
+ <ref name="ObjectProperty"/>
+ <ref name="ObjectMaxCardinality"/>
+ <ref name="ObjectMinCardinality"/>
+ <ref name="ObjectExactCardinality"/>
+ <ref name="ObjectHasValue"/>
+ <ref name="ObjectHasSelf"/>
+ <ref name="ObjectUnionOf"/>
+ </choice>
+ </define>
+ <define name="DisjointClasses">
+ <element name="DisjointClasses">
+ <optional>
+ <ref name="Annotation"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="Class.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="DifferentIndividuals">
+ <element name="DifferentIndividuals">
+ <zeroOrMore>
+ <ref name="Ind.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="SameIndividual">
+ <element name="SameIndividual">
+ <zeroOrMore>
+ <ref name="Ind.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="Ind.class">
+ <ref name="NamedIndividual"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/pxhtml.rng b/Master/texmf-dist/source/latex/stex/schema/rng/pxhtml.rng
new file mode 100644
index 00000000000..721c22c0da2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/pxhtml.rng
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ XHTML for paragraphs in OMDoc
+ this is a subset of the xhtml RelaxNG schema for XHTML we use it for paragraphs in OMDoc1.3
+-->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="xhtml-datatypes.rng"/>
+ <include href="xhtml-attribs.rng"/>
+ <include href="xhtml-text.rng"/>
+ <include href="xhtml-hypertext.rng"/>
+ <include href="xhtml-list.rng"/>
+ <include href="xhtml-image.rng"/>
+ <include href="xhtml-param.rng"/>
+ <include href="xhtml-object.rng"/>
+ <include href="xhtml-bdo.rng"/>
+ <include href="xhtml-applet.rng"/>
+ <include href="xhtml-table.rng"/>
+ <include href="xhtml-inlstyle.rng"/>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/statements.rng b/Master/texmf-dist/source/latex/stex/schema/rng/statements.rng
new file mode 100644
index 00000000000..c678f7f8d7d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/statements.rng
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /=====================================================================\
+ | Mathematical Statements for LaTeXML |
+ |=====================================================================|
+ | Not Part of LaTeXML: |
+ | Copyright (c) 2005 Michael Kohlhase |
+ | Released under the Gnu Public License (GPL) |
+ |=====================================================================|
+ | Michael Kohlhase <m.kohlhase@iu-bremen.de> #_# |
+ | http://dlmf.nist.gov/LaTeXML/ (o o) |
+ \=========================================================ooo==U==ooo=/
+-->
+<grammar ns="http://dlmf.nist.gov/LaTeXML" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="statement.model">
+ <choice>
+ <text/>
+ <ref name="Flow.class"/>
+ </choice>
+ </define>
+ <define name="example">
+ <element name="example">
+ <ref name="Common.attribs"/>
+ <attribute name="for">
+ <data type="string"/>
+ </attribute>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="statement.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="definition">
+ <element name="definition">
+ <ref name="Common.attribs"/>
+ <attribute name="for">
+ <data type="string"/>
+ </attribute>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="statement.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="definiens">
+ <element name="definiens">
+ <attribute name="name">
+ <data type="string"/>
+ </attribute>
+ <zeroOrMore>
+ <ref name="statement.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="termin">
+ <element name="termin">
+ <attribute name="cd">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <zeroOrMore>
+ <choice>
+ <ref name="statement.model"/>
+ <ref name="Math"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="notation">
+ <element name="notation">
+ <ref name="Common.attribs"/>
+ <attribute name="for">
+ <data type="string"/>
+ </attribute>
+ <zeroOrMore>
+ <ref name="statement.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="notemph">
+ <element name="notemph">
+ <zeroOrMore>
+ <choice>
+ <ref name="statement.model"/>
+ <ref name="Math"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="statement-group">
+ <element name="statement-group">
+ <ref name="Common.attribs"/>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="omtext"/>
+ <ref name="example"/>
+ <ref name="definition"/>
+ <ref name="symbol"/>
+ <ref name="assertion"/>
+ <ref name="notation"/>
+ <ref name="itemize"/>
+ <ref name="enumerate"/>
+ <ref name="description"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="symbol">
+ <element name="symbol">
+ <attribute name="name">
+ <data type="string"/>
+ </attribute>
+ </element>
+ </define>
+ <define name="assertion">
+ <element name="assertion">
+ <ref name="Common.attribs"/>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="statement.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="axiom">
+ <element name="axiom">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <ref name="statement.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="proof.model">
+ <choice>
+ <ref name="omtext"/>
+ <ref name="step"/>
+ <ref name="cases"/>
+ </choice>
+ </define>
+ <define name="proof">
+ <element name="proof">
+ <ref name="Common.attribs"/>
+ <optional>
+ <attribute name="for">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="proof.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="cases">
+ <element name="cases">
+ <zeroOrMore>
+ <choice>
+ <ref name="case"/>
+ <ref name="omtext"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="case">
+ <element name="case">
+ <ref name="Common.attribs"/>
+ <optional>
+ <attribute name="for">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <ref name="proof.model"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="step">
+ <element name="step">
+ <ref name="Common.attribs"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="statement.model"/>
+ <ref name="method"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="method">
+ <element name="method">
+ <ref name="Common.attribs"/>
+ <attribute name="xref">
+ <data type="string"/>
+ </attribute>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Math"/>
+ <ref name="proof"/>
+ <ref name="premise"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="premise">
+ <element name="premise">
+ <ref name="Common.attribs"/>
+ <attribute name="xref">
+ <data type="string"/>
+ </attribute>
+ </element>
+ </define>
+ <define name="omtext">
+ <element name="omtext">
+ <ref name="Common.attribs"/>
+ <optional>
+ <attribute name="for">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="from">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="metadata"/>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="Flow.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="statements.Block.class" combine="choice">
+ <choice>
+ <ref name="example"/>
+ <ref name="definition"/>
+ <ref name="notation"/>
+ <ref name="symbol"/>
+ <ref name="assertion"/>
+ <ref name="proof"/>
+ <ref name="axiom"/>
+ <ref name="omtext"/>
+ <ref name="statement-group"/>
+ </choice>
+ </define>
+ <define name="statements.Inline.class" combine="choice">
+ <choice>
+ <ref name="definiens"/>
+ <ref name="notemph"/>
+ <ref name="termin"/>
+ <ref name="method"/>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-animation.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-animation.rng
new file mode 100644
index 00000000000..918313a71fe
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-animation.rng
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Animation Module
+ file: svg-animation.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-animation.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Animation
+
+ animate, set, animateMotion, animateColor, animateTransform, mpath
+
+ This module declares markup to provide support for animation.
+ </a:documentation>
+ <a:documentation>
+ SVG.Animation.class
+ </a:documentation>
+ <define name="SVG.Animation.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Animation.class" combine="choice">
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateMotion"/>
+ <ref name="animateColor"/>
+ <ref name="animateTransform"/>
+ <ref name="SVG.Animation.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Animation.attrib
+ </a:documentation>
+ <define name="SVG.Animation.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Animation.attrib">
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.Animation.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationAttribute.attrib
+ </a:documentation>
+ <define name="SVG.AnimationAttribute.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationAttribute.attrib">
+ <attribute name="attributeName"/>
+ <optional>
+ <attribute name="attributeType"/>
+ </optional>
+ <ref name="SVG.AnimationAttribute.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationTiming.attrib
+ </a:documentation>
+ <define name="SVG.AnimationTiming.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationTiming.attrib">
+ <optional>
+ <attribute name="begin"/>
+ </optional>
+ <optional>
+ <attribute name="dur"/>
+ </optional>
+ <optional>
+ <attribute name="end"/>
+ </optional>
+ <optional>
+ <attribute name="min"/>
+ </optional>
+ <optional>
+ <attribute name="max"/>
+ </optional>
+ <optional>
+ <attribute name="restart" a:defaultValue="always">
+ <choice>
+ <value>always</value>
+ <value>never</value>
+ <value>whenNotActive</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="repeatCount"/>
+ </optional>
+ <optional>
+ <attribute name="repeatDur"/>
+ </optional>
+ <optional>
+ <attribute name="fill" a:defaultValue="remove">
+ <choice>
+ <value>remove</value>
+ <value>freeze</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.AnimationTiming.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationValue.attrib
+ </a:documentation>
+ <define name="SVG.AnimationValue.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationValue.attrib">
+ <optional>
+ <attribute name="calcMode" a:defaultValue="linear">
+ <choice>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>paced</value>
+ <value>spline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="values"/>
+ </optional>
+ <optional>
+ <attribute name="keyTimes"/>
+ </optional>
+ <optional>
+ <attribute name="keySplines"/>
+ </optional>
+ <optional>
+ <attribute name="from"/>
+ </optional>
+ <optional>
+ <attribute name="to"/>
+ </optional>
+ <optional>
+ <attribute name="by"/>
+ </optional>
+ <ref name="SVG.AnimationValue.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.AnimationAddtion.attrib
+ </a:documentation>
+ <define name="SVG.AnimationAddtion.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationAddtion.attrib">
+ <optional>
+ <attribute name="additive" a:defaultValue="replace">
+ <choice>
+ <value>replace</value>
+ <value>sum</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accumulate" a:defaultValue="none">
+ <choice>
+ <value>none</value>
+ <value>sum</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.AnimationAddtion.extra.attrib"/>
+ </define>
+ <a:documentation>
+ animate: Animate Element
+ </a:documentation>
+ <define name="SVG.animate.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="animate">
+ <element name="animate">
+ <ref name="attlist.animate"/>
+ <ref name="SVG.animate.content"/>
+ </element>
+ </define>
+ <define name="attlist.animate" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationValue.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ </define>
+ <a:documentation>
+ set: Set Element
+ </a:documentation>
+ <define name="SVG.set.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="set">
+ <element name="set">
+ <ref name="attlist.set"/>
+ <ref name="SVG.set.content"/>
+ </element>
+ </define>
+ <define name="attlist.set" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <optional>
+ <attribute name="to"/>
+ </optional>
+ </define>
+ <a:documentation>
+ animateMotion: Animate Motion Element
+ </a:documentation>
+ <define name="SVG.animateMotion.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="mpath"/>
+ </optional>
+ </define>
+ <define name="animateMotion">
+ <element name="animateMotion">
+ <ref name="attlist.animateMotion"/>
+ <ref name="SVG.animateMotion.content"/>
+ </element>
+ </define>
+ <define name="attlist.animateMotion" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ <optional>
+ <attribute name="calcMode" a:defaultValue="paced">
+ <choice>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>paced</value>
+ <value>spline</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="values"/>
+ </optional>
+ <optional>
+ <attribute name="keyTimes"/>
+ </optional>
+ <optional>
+ <attribute name="keySplines"/>
+ </optional>
+ <optional>
+ <attribute name="from"/>
+ </optional>
+ <optional>
+ <attribute name="to"/>
+ </optional>
+ <optional>
+ <attribute name="by"/>
+ </optional>
+ <optional>
+ <attribute name="path"/>
+ </optional>
+ <optional>
+ <attribute name="keyPoints"/>
+ </optional>
+ <optional>
+ <attribute name="rotate"/>
+ </optional>
+ <optional>
+ <attribute name="origin"/>
+ </optional>
+ </define>
+ <a:documentation>
+ animateColor: Animate Color Element
+ </a:documentation>
+ <define name="SVG.animateColor.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="animateColor">
+ <element name="animateColor">
+ <ref name="attlist.animateColor"/>
+ <ref name="SVG.animateColor.content"/>
+ </element>
+ </define>
+ <define name="attlist.animateColor" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationValue.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ </define>
+ <a:documentation>
+ animateTransform: Animate Transform Element
+ </a:documentation>
+ <define name="SVG.animateTransform.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="animateTransform">
+ <element name="animateTransform">
+ <ref name="attlist.animateTransform"/>
+ <ref name="SVG.animateTransform.content"/>
+ </element>
+ </define>
+ <define name="attlist.animateTransform" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.AnimationEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <ref name="SVG.Animation.attrib"/>
+ <ref name="SVG.AnimationAttribute.attrib"/>
+ <ref name="SVG.AnimationTiming.attrib"/>
+ <ref name="SVG.AnimationValue.attrib"/>
+ <ref name="SVG.AnimationAddtion.attrib"/>
+ <optional>
+ <attribute name="type" a:defaultValue="translate">
+ <choice>
+ <value>translate</value>
+ <value>scale</value>
+ <value>rotate</value>
+ <value>skewX</value>
+ <value>skewY</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ mpath: Motion Path Element
+ </a:documentation>
+ <define name="SVG.mpath.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="mpath">
+ <element name="mpath">
+ <ref name="attlist.mpath"/>
+ <ref name="SVG.mpath.content"/>
+ </element>
+ </define>
+ <define name="attlist.mpath" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-animevents-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-animevents-attrib.rng
new file mode 100644
index 00000000000..164414fe0fc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-animevents-attrib.rng
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Animation Events Attribute Module
+ file: svg-animevents-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-animevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Animation Events Attribute
+
+ onbegin, onend, onrepeat, onload
+
+ This module defines the AnimationEvents attribute set.
+ </a:documentation>
+ <define name="SVG.onbegin.attrib">
+ <optional>
+ <attribute name="onbegin">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onend.attrib">
+ <optional>
+ <attribute name="onend">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onrepeat.attrib">
+ <optional>
+ <attribute name="onrepeat">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.AnimationEvents.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationEvents.attrib" combine="interleave">
+ <ref name="SVG.onbegin.attrib"/>
+ <ref name="SVG.onend.attrib"/>
+ <ref name="SVG.onrepeat.attrib"/>
+ <ref name="SVG.onload.attrib"/>
+ <ref name="SVG.AnimationEvents.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-clip.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-clip.rng
new file mode 100644
index 00000000000..0bb1333829f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-clip.rng
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Clip Module
+ file: svg-basic-clip.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Clip
+
+ clipPath
+
+ This module declares markup to provide support for clipping.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="ClipPathValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Clip.attrib
+ </a:documentation>
+ <define name="SVG.Clip.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Clip.attrib" combine="interleave">
+ <optional>
+ <attribute name="clip-path">
+ <ref name="ClipPathValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="clip-rule">
+ <ref name="ClipFillRule.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Clip.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Clip.class
+ </a:documentation>
+ <define name="SVG.Clip.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Clip.class" combine="choice">
+ <choice>
+ <ref name="clipPath"/>
+ <ref name="SVG.Clip.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ clipPath: Clip Path Element
+ </a:documentation>
+ <define name="SVG.clipPath.class">
+ <choice>
+ <ref name="rect"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Use.class"/>
+ </choice>
+ </define>
+ <define name="SVG.clipPath.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.clipPath.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="clipPath">
+ <element name="clipPath">
+ <ref name="attlist.clipPath"/>
+ <ref name="SVG.clipPath.content"/>
+ </element>
+ </define>
+ <define name="attlist.clipPath" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Text.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="clipPathUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-filter.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-filter.rng
new file mode 100644
index 00000000000..6e9a39b50fa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-filter.rng
@@ -0,0 +1,779 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Filter Module
+ file: svg-basic-filter.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Filter
+
+ filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+ feFlood, feGaussianBlur, feImage, feMerge, feMergeNode, feOffset,
+ feTile, feFuncR, feFuncG, feFuncB, feFuncA
+
+ This module declares markup to provide support for filter effect.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="FilterValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="NumberOptionalNumber.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Filter.attrib
+ </a:documentation>
+ <define name="SVG.Filter.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Filter.attrib" combine="interleave">
+ <optional>
+ <attribute name="filter">
+ <ref name="FilterValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Filter.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.FilterColor.attrib
+ </a:documentation>
+ <define name="SVG.FilterColor.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterColor.attrib" combine="interleave">
+ <optional>
+ <attribute name="color-interpolation-filters">
+ <choice>
+ <value>auto</value>
+ <value>sRGB</value>
+ <value>linearRGB</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.FilterColor.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Filter.class
+ </a:documentation>
+ <define name="SVG.Filter.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Filter.class" combine="choice">
+ <choice>
+ <ref name="filter"/>
+ <ref name="SVG.Filter.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.FilterPrimitive.class
+ </a:documentation>
+ <define name="SVG.FilterPrimitive.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.FilterPrimitive.class">
+ <choice>
+ <ref name="feBlend"/>
+ <ref name="feColorMatrix"/>
+ <ref name="feComponentTransfer"/>
+ <ref name="feComposite"/>
+ <ref name="feFlood"/>
+ <ref name="feGaussianBlur"/>
+ <ref name="feImage"/>
+ <ref name="feMerge"/>
+ <ref name="feOffset"/>
+ <ref name="feTile"/>
+ <ref name="SVG.FilterPrimitive.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.FilterPrimitive.attrib
+ </a:documentation>
+ <define name="SVG.FilterPrimitive.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterPrimitive.attrib">
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="result"/>
+ </optional>
+ <ref name="SVG.FilterPrimitive.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.FilterPrimitiveWithIn.attrib
+ </a:documentation>
+ <define name="SVG.FilterPrimitiveWithIn.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterPrimitiveWithIn.attrib">
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ <optional>
+ <attribute name="in"/>
+ </optional>
+ <ref name="SVG.FilterPrimitiveWithIn.extra.attrib"/>
+ </define>
+ <a:documentation>
+ filter: Filter Element
+ </a:documentation>
+ <define name="SVG.filter.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="SVG.FilterPrimitive.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="filter">
+ <element name="filter">
+ <ref name="attlist.filter"/>
+ <ref name="SVG.filter.content"/>
+ </element>
+ </define>
+ <define name="attlist.filter" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filterRes">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filterUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="primitiveUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feBlend: Filter Effect Blend Element
+ </a:documentation>
+ <define name="SVG.feBlend.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feBlend">
+ <element name="feBlend">
+ <ref name="attlist.feBlend"/>
+ <ref name="SVG.feBlend.content"/>
+ </element>
+ </define>
+ <define name="attlist.feBlend" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="in2"/>
+ <optional>
+ <attribute name="mode" a:defaultValue="normal">
+ <choice>
+ <value>normal</value>
+ <value>multiply</value>
+ <value>screen</value>
+ <value>darken</value>
+ <value>lighten</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feColorMatrix: Filter Effect Color Matrix Element
+ </a:documentation>
+ <define name="SVG.feColorMatrix.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feColorMatrix">
+ <element name="feColorMatrix">
+ <ref name="attlist.feColorMatrix"/>
+ <ref name="SVG.feColorMatrix.content"/>
+ </element>
+ </define>
+ <define name="attlist.feColorMatrix" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="type" a:defaultValue="matrix">
+ <choice>
+ <value>matrix</value>
+ <value>saturate</value>
+ <value>hueRotate</value>
+ <value>luminanceToAlpha</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="values"/>
+ </optional>
+ </define>
+ <a:documentation>
+ feComponentTransfer: Filter Effect Component Transfer Element
+ </a:documentation>
+ <define name="SVG.feComponentTransfer.content">
+ <optional>
+ <ref name="feFuncR"/>
+ </optional>
+ <optional>
+ <ref name="feFuncG"/>
+ </optional>
+ <optional>
+ <ref name="feFuncB"/>
+ </optional>
+ <optional>
+ <ref name="feFuncA"/>
+ </optional>
+ </define>
+ <define name="feComponentTransfer">
+ <element name="feComponentTransfer">
+ <ref name="attlist.feComponentTransfer"/>
+ <ref name="SVG.feComponentTransfer.content"/>
+ </element>
+ </define>
+ <define name="attlist.feComponentTransfer" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ </define>
+ <a:documentation>
+ feComposite: Filter Effect Composite Element
+ </a:documentation>
+ <define name="SVG.feComposite.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feComposite">
+ <element name="feComposite">
+ <ref name="attlist.feComposite"/>
+ <ref name="SVG.feComposite.content"/>
+ </element>
+ </define>
+ <define name="attlist.feComposite" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="in2"/>
+ <optional>
+ <attribute name="operator" a:defaultValue="over">
+ <choice>
+ <value>over</value>
+ <value>in</value>
+ <value>out</value>
+ <value>atop</value>
+ <value>xor</value>
+ <value>arithmetic</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k1">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k2">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k3">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="k4">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFlood: Filter Effect Flood Element
+ </a:documentation>
+ <define name="SVG.feFlood.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFlood">
+ <element name="feFlood">
+ <ref name="attlist.feFlood"/>
+ <ref name="SVG.feFlood.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFlood" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="flood-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flood-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feGaussianBlur: Filter Effect Gaussian Blur Element
+ </a:documentation>
+ <define name="SVG.feGaussianBlur.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feGaussianBlur">
+ <element name="feGaussianBlur">
+ <ref name="attlist.feGaussianBlur"/>
+ <ref name="SVG.feGaussianBlur.content"/>
+ </element>
+ </define>
+ <define name="attlist.feGaussianBlur" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="stdDeviation">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feImage: Filter Effect Image Element
+ </a:documentation>
+ <define name="SVG.feImage.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateTransform"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feImage">
+ <element name="feImage">
+ <ref name="attlist.feImage"/>
+ <ref name="SVG.feImage.content"/>
+ </element>
+ </define>
+ <define name="attlist.feImage" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ <ref name="SVG.XLinkEmbed.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feMerge: Filter Effect Merge Element
+ </a:documentation>
+ <define name="SVG.feMerge.content">
+ <zeroOrMore>
+ <ref name="feMergeNode"/>
+ </zeroOrMore>
+ </define>
+ <define name="feMerge">
+ <element name="feMerge">
+ <ref name="attlist.feMerge"/>
+ <ref name="SVG.feMerge.content"/>
+ </element>
+ </define>
+ <define name="attlist.feMerge" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ </define>
+ <a:documentation>
+ feMergeNode: Filter Effect Merge Node Element
+ </a:documentation>
+ <define name="SVG.feMergeNode.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feMergeNode">
+ <element name="feMergeNode">
+ <ref name="attlist.feMergeNode"/>
+ <ref name="SVG.feMergeNode.content"/>
+ </element>
+ </define>
+ <define name="attlist.feMergeNode" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="in"/>
+ </optional>
+ </define>
+ <a:documentation>
+ feOffset: Filter Effect Offset Element
+ </a:documentation>
+ <define name="SVG.feOffset.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feOffset">
+ <element name="feOffset">
+ <ref name="attlist.feOffset"/>
+ <ref name="SVG.feOffset.content"/>
+ </element>
+ </define>
+ <define name="attlist.feOffset" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="dx">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feTile: Filter Effect Tile Element
+ </a:documentation>
+ <define name="SVG.feTile.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feTile">
+ <element name="feTile">
+ <ref name="attlist.feTile"/>
+ <ref name="SVG.feTile.content"/>
+ </element>
+ </define>
+ <define name="attlist.feTile" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ </define>
+ <a:documentation>
+ feFuncR: Filter Effect Function Red Element
+ </a:documentation>
+ <define name="SVG.feFuncR.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncR">
+ <element name="feFuncR">
+ <ref name="attlist.feFuncR"/>
+ <ref name="SVG.feFuncR.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncR" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFuncG: Filter Effect Function Green Element
+ </a:documentation>
+ <define name="SVG.feFuncG.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncG">
+ <element name="feFuncG">
+ <ref name="attlist.feFuncG"/>
+ <ref name="SVG.feFuncG.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncG" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFuncB: Filter Effect Function Blue Element
+ </a:documentation>
+ <define name="SVG.feFuncB.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncB">
+ <element name="feFuncB">
+ <ref name="attlist.feFuncB"/>
+ <ref name="SVG.feFuncB.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncB" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feFuncA: Filter Effect Function Alpha Element
+ </a:documentation>
+ <define name="SVG.feFuncA.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feFuncA">
+ <element name="feFuncA">
+ <ref name="attlist.feFuncA"/>
+ <ref name="SVG.feFuncA.content"/>
+ </element>
+ </define>
+ <define name="attlist.feFuncA" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <attribute name="type">
+ <choice>
+ <value>identity</value>
+ <value>table</value>
+ <value>discrete</value>
+ <value>linear</value>
+ <value>gamma</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="tableValues"/>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="intercept">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="amplitude">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="exponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="offset">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-font.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-font.rng
new file mode 100644
index 00000000000..da67018545f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-font.rng
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Basic Font Module
+ file: svg-basic-font.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Font
+
+ font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+ font-face-uri, font-face-name
+
+ This module declares markup to provide support for template.
+ </a:documentation>
+ <a:documentation>
+ SVG.Font.class
+ </a:documentation>
+ <define name="SVG.Font.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Font.class" combine="choice">
+ <choice>
+ <ref name="font"/>
+ <ref name="font-face"/>
+ <ref name="SVG.Font.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ font: Font Element
+ </a:documentation>
+ <define name="SVG.font.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <ref name="font-face"/>
+ <ref name="missing-glyph"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="glyph"/>
+ <ref name="hkern"/>
+ <ref name="vkern"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="font">
+ <element name="font">
+ <ref name="attlist.font"/>
+ <ref name="SVG.font.content"/>
+ </element>
+ </define>
+ <define name="attlist.font" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="horiz-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="horiz-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="horiz-adv-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="vert-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-adv-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ font-face: Font Face Element
+ </a:documentation>
+ <define name="SVG.font-face.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.font-face.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="font-face-src"/>
+ </optional>
+ <ref name="SVG.font-face.extra.class"/>
+ </define>
+ <define name="font-face">
+ <element name="font-face">
+ <ref name="attlist.font-face"/>
+ <ref name="SVG.font-face.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="font-family"/>
+ </optional>
+ <optional>
+ <attribute name="font-style"/>
+ </optional>
+ <optional>
+ <attribute name="font-variant"/>
+ </optional>
+ <optional>
+ <attribute name="font-weight"/>
+ </optional>
+ <optional>
+ <attribute name="font-stretch"/>
+ </optional>
+ <optional>
+ <attribute name="font-size"/>
+ </optional>
+ <optional>
+ <attribute name="unicode-range"/>
+ </optional>
+ <optional>
+ <attribute name="units-per-em">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="panose-1"/>
+ </optional>
+ <optional>
+ <attribute name="stemv">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stemh">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="slope">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cap-height">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x-height">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accent-height">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ascent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="descent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="widths"/>
+ </optional>
+ <optional>
+ <attribute name="bbox"/>
+ </optional>
+ <optional>
+ <attribute name="ideographic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="alphabetic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mathematical">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hanging">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-ideographic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-alphabetic">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-mathematical">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="v-hanging">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="underline-position">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="underline-thickness">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strikethrough-position">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="strikethrough-thickness">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="overline-position">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="overline-thickness">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ glyph: Glyph Element
+ </a:documentation>
+ <define name="SVG.glyph.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.glyph.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.glyph.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="glyph">
+ <element name="glyph">
+ <ref name="attlist.glyph"/>
+ <ref name="SVG.glyph.content"/>
+ </element>
+ </define>
+ <define name="attlist.glyph" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <optional>
+ <attribute name="unicode"/>
+ </optional>
+ <optional>
+ <attribute name="glyph-name"/>
+ </optional>
+ <optional>
+ <attribute name="d">
+ <ref name="PathData.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orientation"/>
+ </optional>
+ <optional>
+ <attribute name="arabic-form"/>
+ </optional>
+ <optional>
+ <attribute name="lang">
+ <ref name="LanguageCodes.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="horiz-adv-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-adv-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ missing-glyph: Missing Glyph Element
+ </a:documentation>
+ <define name="SVG.missing-glyph.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.missing-glyph.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.missing-glyph.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="missing-glyph">
+ <element name="missing-glyph">
+ <ref name="attlist.missing-glyph"/>
+ <ref name="SVG.missing-glyph.content"/>
+ </element>
+ </define>
+ <define name="attlist.missing-glyph" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <optional>
+ <attribute name="d">
+ <ref name="PathData.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="horiz-adv-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-origin-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="vert-adv-y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ hkern: Horizontal Kerning Element
+ </a:documentation>
+ <define name="SVG.hkern.content">
+ <empty/>
+ </define>
+ <define name="hkern">
+ <element name="hkern">
+ <ref name="attlist.hkern"/>
+ <ref name="SVG.hkern.content"/>
+ </element>
+ </define>
+ <define name="attlist.hkern" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="u1"/>
+ </optional>
+ <optional>
+ <attribute name="g1"/>
+ </optional>
+ <optional>
+ <attribute name="u2"/>
+ </optional>
+ <optional>
+ <attribute name="g2"/>
+ </optional>
+ <attribute name="k">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </define>
+ <a:documentation>
+ vkern: Vertical Kerning Element
+ </a:documentation>
+ <define name="SVG.vkern.content">
+ <empty/>
+ </define>
+ <define name="vkern">
+ <element name="vkern">
+ <ref name="attlist.vkern"/>
+ <ref name="SVG.vkern.content"/>
+ </element>
+ </define>
+ <define name="attlist.vkern" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="u1"/>
+ </optional>
+ <optional>
+ <attribute name="g1"/>
+ </optional>
+ <optional>
+ <attribute name="u2"/>
+ </optional>
+ <optional>
+ <attribute name="g2"/>
+ </optional>
+ <attribute name="k">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </define>
+ <a:documentation>
+ font-face-src: Font Face Source Element
+ </a:documentation>
+ <define name="SVG.font-face-src.content">
+ <oneOrMore>
+ <choice>
+ <ref name="font-face-uri"/>
+ <ref name="font-face-name"/>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="font-face-src">
+ <element name="font-face-src">
+ <ref name="attlist.font-face-src"/>
+ <ref name="SVG.font-face-src.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-src" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ font-face-uri: Font Face URI Element
+ </a:documentation>
+ <define name="SVG.font-face-uri.content">
+ <empty/>
+ </define>
+ <define name="font-face-uri">
+ <element name="font-face-uri">
+ <ref name="attlist.font-face-uri"/>
+ <ref name="SVG.font-face-uri.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-uri" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ </define>
+ <a:documentation>
+ font-face-name: Font Face Name Element
+ </a:documentation>
+ <define name="SVG.font-face-name.content">
+ <empty/>
+ </define>
+ <define name="font-face-name">
+ <element name="font-face-name">
+ <ref name="attlist.font-face-name"/>
+ <ref name="SVG.font-face-name.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-name" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-graphics-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-graphics-attrib.rng
new file mode 100644
index 00000000000..20c40b3648c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-graphics-attrib.rng
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Basic Graphics Attribute Module
+ file: svg-basic-graphics-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Graphics Attribute
+
+ display, visibility
+
+ This module defines the Graphics attribute set.
+ </a:documentation>
+ <define name="SVG.display.attrib">
+ <optional>
+ <attribute name="display">
+ <choice>
+ <value>inline</value>
+ <value>block</value>
+ <value>list-item</value>
+ <value>run-in</value>
+ <value>compact</value>
+ <value>marker</value>
+ <value>table</value>
+ <value>inline-table</value>
+ <value>table-row-group</value>
+ <value>table-header-group</value>
+ <value>table-footer-group</value>
+ <value>table-row</value>
+ <value>table-column-group</value>
+ <value>table-column</value>
+ <value>table-cell</value>
+ <value>table-caption</value>
+ <value>none</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.visibility.attrib">
+ <optional>
+ <attribute name="visibility">
+ <choice>
+ <value>visible</value>
+ <value>hidden</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Graphics.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Graphics.attrib" combine="interleave">
+ <ref name="SVG.display.attrib"/>
+ <ref name="SVG.visibility.attrib"/>
+ <ref name="SVG.Graphics.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-structure.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-structure.rng
new file mode 100644
index 00000000000..65ee4f172f4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-structure.rng
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Structure Module
+ file: svg-basic-structure.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Structure
+
+ svg, g, defs, desc, title, metadata, use
+
+ This module declares the major structural elements and their attributes.
+ </a:documentation>
+ <start>
+ <a:documentation>
+ The root element is "svg".
+ </a:documentation>
+ <ref name="svg"/>
+ </start>
+ <div>
+ <a:documentation>
+ Include core set of modules
+ </a:documentation>
+ <include href="svg-datatypes.rng">
+ <a:documentation>
+ Datatypes Module
+ </a:documentation>
+ </include>
+ <include href="svg-core-attrib.rng">
+ <a:documentation>
+ Core Attribute Module
+ </a:documentation>
+ </include>
+ </div>
+ <a:documentation>
+ Content Models (Default)
+ </a:documentation>
+ <define name="SVG.Profile.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Gradient.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Pattern.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Clip.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Mask.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Filter.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Cursor.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Marker.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.View.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Script.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Font.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Extensibility.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Conditional.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Image.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Style.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Shape.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Text.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Hyperlink.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Animation.class">
+ <notAllowed/>
+ </define>
+ <a:documentation>
+ Attribute Collections (Default)
+ </a:documentation>
+ <define name="SVG.Container.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Viewport.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Text.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.TextContent.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Opacity.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Marker.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Profile.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Gradient.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Clip.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Mask.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Filter.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.FilterColor.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Cursor.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.External.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Conditional.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Color.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Paint.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Graphics.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.DocumentEvents.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.GraphicalEvents.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.onload.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.AnimationEvents.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLink.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkRequired.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkEmbed.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkReplace.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Style.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Font.attrib">
+ <empty/>
+ </define>
+ <a:documentation>
+ SVG.Description.class
+ </a:documentation>
+ <define name="SVG.Description.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Description.class">
+ <choice>
+ <ref name="desc"/>
+ <ref name="title"/>
+ <ref name="metadata"/>
+ <ref name="SVG.Description.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Use.class
+ </a:documentation>
+ <define name="SVG.Use.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Use.class">
+ <choice>
+ <ref name="use"/>
+ <ref name="SVG.Use.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Structure.class
+ </a:documentation>
+ <define name="SVG.Structure.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Structure.class">
+ <choice>
+ <ref name="svg"/>
+ <ref name="g"/>
+ <ref name="defs"/>
+ <ref name="SVG.Use.class"/>
+ <ref name="SVG.Structure.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.Presentation.attrib
+ </a:documentation>
+ <define name="SVG.Presentation.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Presentation.attrib">
+ <ref name="SVG.Container.attrib"/>
+ <ref name="SVG.Viewport.attrib"/>
+ <ref name="SVG.Text.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Profile.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <optional>
+ <attribute name="flood-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="flood-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lighting-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Presentation.extra.attrib"/>
+ </define>
+ <a:documentation>
+ svg: SVG Document Element
+ </a:documentation>
+ <define name="SVG.svg.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="svg">
+ <element name="svg">
+ <ref name="attlist.svg"/>
+ <ref name="SVG.svg.content"/>
+ </element>
+ </define>
+ <define name="attlist.svg" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.DocumentEvents.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zoomAndPan" a:defaultValue="magnify">
+ <choice>
+ <value>disable</value>
+ <value>magnify</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="version" a:defaultValue="1.1">
+ <value type="string">1.1</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseProfile">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="contentScriptType" a:defaultValue="text/ecmascript">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="contentStyleType" a:defaultValue="text/css">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ g: Group Element
+ </a:documentation>
+ <define name="SVG.g.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="g">
+ <element name="g">
+ <ref name="attlist.g"/>
+ <ref name="SVG.g.content"/>
+ </element>
+ </define>
+ <define name="attlist.g" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ defs: Definisions Element
+ </a:documentation>
+ <define name="SVG.defs.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="defs">
+ <element name="defs">
+ <ref name="attlist.defs"/>
+ <ref name="SVG.defs.content"/>
+ </element>
+ </define>
+ <define name="attlist.defs" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ desc: Description Element
+ </a:documentation>
+ <define name="SVG.desc.content">
+ <text/>
+ </define>
+ <define name="desc">
+ <element name="desc">
+ <ref name="attlist.desc"/>
+ <ref name="SVG.desc.content"/>
+ </element>
+ </define>
+ <define name="attlist.desc" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ </define>
+ <a:documentation>
+ title: Title Element
+ </a:documentation>
+ <define name="SVG.title.content">
+ <text/>
+ </define>
+ <define name="title">
+ <element name="title">
+ <ref name="attlist.title"/>
+ <ref name="SVG.title.content"/>
+ </element>
+ </define>
+ <define name="attlist.title" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ </define>
+ <a:documentation>
+ metadata: Metadata Element
+ </a:documentation>
+ <define name="SVG.metadata.content">
+ <text/>
+ </define>
+ <define name="metadata">
+ <element name="metadata">
+ <ref name="attlist.metadata"/>
+ <ref name="SVG.metadata.content"/>
+ </element>
+ </define>
+ <define name="attlist.metadata" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ use: Use Element
+ </a:documentation>
+ <define name="SVG.use.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="use">
+ <element name="use">
+ <ref name="attlist.use"/>
+ <ref name="SVG.use.content"/>
+ </element>
+ </define>
+ <define name="attlist.use" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.XLinkEmbed.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-text.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-text.rng
new file mode 100644
index 00000000000..14771acea25
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-basic-text.rng
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Basic Text Module
+ file: svg-basic-text.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-basic-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Basic Text
+
+ text, altGlyph, altGlyphDef, glyphRef
+
+ This module declares markup to provide support for text.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="FontFamilyValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="FontSizeValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Font.attrib
+ </a:documentation>
+ <define name="SVG.Font.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Font.attrib" combine="interleave">
+ <optional>
+ <attribute name="font-family">
+ <ref name="FontFamilyValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-size">
+ <ref name="FontSizeValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-style">
+ <choice>
+ <value>normal</value>
+ <value>italic</value>
+ <value>oblique</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-weight">
+ <choice>
+ <value>normal</value>
+ <value>bold</value>
+ <value>bolder</value>
+ <value>lighter</value>
+ <value>100</value>
+ <value>200</value>
+ <value>300</value>
+ <value>400</value>
+ <value>500</value>
+ <value>600</value>
+ <value>700</value>
+ <value>800</value>
+ <value>900</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.Font.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Text.class
+ </a:documentation>
+ <define name="SVG.Text.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Text.class" combine="choice">
+ <choice>
+ <ref name="text"/>
+ <ref name="SVG.Text.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ SVG.TextContent.class
+ </a:documentation>
+ <define name="SVG.TextContent.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.TextContent.class">
+ <choice>
+ <ref name="altGlyph"/>
+ <ref name="SVG.TextContent.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ text: Text Element
+ </a:documentation>
+ <define name="SVG.text.class">
+ <choice>
+ <text/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <!-- <ref name="SVG.TextContent.extra.class"/> -->
+ <ref name="SVG.Hyperlink.class"/>
+ </choice>
+ </define>
+ <define name="SVG.text.content">
+ <zeroOrMore>
+ <ref name="SVG.text.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="text">
+ <element name="text">
+ <ref name="attlist.text"/>
+ <ref name="SVG.text.content"/>
+ </element>
+ </define>
+ <define name="attlist.text" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyph: Alternate Glyph Element
+ </a:documentation>
+ <define name="SVG.altGlyph.content">
+ <text/>
+ </define>
+ <define name="altGlyph">
+ <element name="altGlyph">
+ <ref name="attlist.altGlyph"/>
+ <ref name="SVG.altGlyph.content"/>
+ </element>
+ </define>
+ <define name="attlist.altGlyph" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="glyphRef"/>
+ </optional>
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyphDef: Alternate Glyph Definition Element
+ </a:documentation>
+ <define name="SVG.altGlyphDef.content">
+ <oneOrMore>
+ <ref name="glyphRef"/>
+ </oneOrMore>
+ </define>
+ <define name="altGlyphDef">
+ <element name="altGlyphDef">
+ <ref name="attlist.altGlyphDef"/>
+ <ref name="SVG.altGlyphDef.content"/>
+ </element>
+ </define>
+ <define name="attlist.altGlyphDef" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ glyphRef: Glyph Reference Element
+ </a:documentation>
+ <define name="SVG.glyphRef.content">
+ <empty/>
+ </define>
+ <define name="glyphRef">
+ <element name="glyphRef">
+ <ref name="attlist.glyphRef"/>
+ <ref name="SVG.glyphRef.content"/>
+ </element>
+ </define>
+ <define name="attlist.glyphRef" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <optional>
+ <attribute name="glyphRef"/>
+ </optional>
+ <optional>
+ <attribute name="format"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-clip.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-clip.rng
new file mode 100644
index 00000000000..180cdd58e23
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-clip.rng
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Clip Module
+ file: svg-clip.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-clip.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Clip
+
+ clipPath
+
+ This module declares markup to provide support for clipping.
+ </a:documentation>
+ <include href="svg-basic-clip.rng"/>
+ <define name="SVG.clipPath.class" combine="choice">
+ <a:documentation>
+ extend content model of clipPath
+ </a:documentation>
+ <choice>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ </choice>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-conditional.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-conditional.rng
new file mode 100644
index 00000000000..8bfddf61491
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-conditional.rng
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Conditional Processing Module
+ file: svg-conditional.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-conditional.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Conditional Processing
+
+ switch
+
+ This module declares markup to provide support for conditional processing.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="ExtensionList.datatype">
+ <data type="string"/>
+ </define>
+ <define name="FeatureList.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Conditional.attrib
+ </a:documentation>
+ <define name="SVG.Conditional.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Conditional.attrib" combine="interleave">
+ <optional>
+ <attribute name="requiredFeatures">
+ <ref name="FeatureList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="requiredExtensions">
+ <ref name="ExtensionList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="systemLanguage">
+ <ref name="LanguageCodes.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Conditional.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Conditional.class
+ </a:documentation>
+ <define name="SVG.Conditional.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Conditional.class" combine="choice">
+ <choice>
+ <ref name="switch"/>
+ <ref name="SVG.Conditional.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ switch: Switch Element
+ </a:documentation>
+ <define name="SVG.switch.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="svg"/>
+ <ref name="g"/>
+ <ref name="use"/>
+ <ref name="text"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.Extensibility.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="switch">
+ <element name="switch">
+ <ref name="attlist.switch"/>
+ <ref name="SVG.switch.content"/>
+ </element>
+ </define>
+ <define name="attlist.switch" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-container-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-container-attrib.rng
new file mode 100644
index 00000000000..01847b07a90
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-container-attrib.rng
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Container Attribute Module
+ file: svg-container-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-container-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Container Attribute
+
+ enable-background
+
+ This module defines the Container attribute set.
+ </a:documentation>
+ <define name="EnableBackgroundValue.datatype">
+ <a:documentation>
+ 'enable-background' property/attribute value (e.g., 'new', 'accumulate')
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVG.enable-background.attrib">
+ <optional>
+ <attribute name="enable-background">
+ <ref name="EnableBackgroundValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Container.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Container.attrib" combine="interleave">
+ <ref name="SVG.enable-background.attrib"/>
+ <ref name="SVG.Container.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-core-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-core-attrib.rng
new file mode 100644
index 00000000000..cf3e64fafd1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-core-attrib.rng
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Core Attribute Module
+ file: svg-core-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-core-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Core Attribute
+
+ id, xml:base, xml:lang, xml:space
+
+ This module defines the core set of attributes that can be present on
+ any element.
+ </a:documentation>
+ <define name="SVG.id.attrib">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.base.attrib">
+ <optional>
+ <attribute name="xml:base">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.lang.attrib">
+ <optional>
+ <attribute name="xml:lang">
+ <ref name="LanguageCode.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.space.attrib">
+ <optional>
+ <attribute name="xml:space">
+ <choice>
+ <value>default</value>
+ <value>preserve</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Core.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Core.attrib">
+ <ref name="SVG.id.attrib"/>
+ <ref name="SVG.base.attrib"/>
+ <ref name="SVG.lang.attrib"/>
+ <ref name="SVG.space.attrib"/>
+ <ref name="SVG.Core.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-cursor.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-cursor.rng
new file mode 100644
index 00000000000..e3207ed6c92
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-cursor.rng
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Cursor Module
+ file: svg-cursor.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-cursor.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Cursor
+
+ cursor
+
+ This module declares markup to provide support for cursor.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="CursorValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Cursor.attrib
+ </a:documentation>
+ <define name="SVG.Cursor.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Cursor.attrib" combine="interleave">
+ <optional>
+ <attribute name="cursor">
+ <ref name="CursorValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Cursor.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Cursor.class
+ </a:documentation>
+ <define name="SVG.Cursor.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Cursor.class" combine="choice">
+ <choice>
+ <ref name="cursor"/>
+ <ref name="SVG.Cursor.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ cursor: Cursor Element
+ </a:documentation>
+ <define name="SVG.cursor.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="cursor">
+ <element name="cursor">
+ <ref name="attlist.cursor"/>
+ <ref name="SVG.cursor.content"/>
+ </element>
+ </define>
+ <define name="attlist.cursor" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-datatypes.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-datatypes.rng
new file mode 100644
index 00000000000..dba1588d8d4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-datatypes.rng
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Datatypes Module
+ file: svg-datatypes.mod
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-datatypes.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+
+ This module declares common data types for properties and attributes.
+ </a:documentation>
+ <a:documentation>
+ feature specification
+ </a:documentation>
+ <define name="Boolean.datatype">
+ <choice>
+ <value>false</value>
+ <value>true</value>
+ </choice>
+ </define>
+ <define name="ClipFillRule.datatype">
+ <a:documentation>
+ 'clip-rule' or 'fill-rule' property/attribute value
+ </a:documentation>
+ <choice>
+ <value>nonzero</value>
+ <value>evenodd</value>
+ <value>inherit</value>
+ </choice>
+ </define>
+ <define name="ContentType.datatype">
+ <a:documentation>
+ media type, as per [RFC2045]
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Coordinate.datatype">
+ <a:documentation>
+ a &lt;coordinate&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Coordinates.datatype">
+ <a:documentation>
+ a list of &lt;coordinate&gt;s
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Color.datatype">
+ <a:documentation>
+ a &lt;color&gt; value
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Integer.datatype">
+ <a:documentation>
+ a &lt;integer&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="LanguageCode.datatype">
+ <a:documentation>
+ a language code, as per [RFC3066]
+ </a:documentation>
+ <data type="language"/>
+ </define>
+ <define name="LanguageCodes.datatype">
+ <a:documentation>
+ comma-separated list of language codes, as per [RFC3066]
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Length.datatype">
+ <a:documentation>
+ a &lt;ength&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Lengths.datatype">
+ <a:documentation>
+ a list of &lt;length&gt;s
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Number.datatype">
+ <a:documentation>
+ a &lt;number&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Numbers.datatype">
+ <a:documentation>
+ a list of &lt;number&gt;s
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="OpacityValue.datatype">
+ <a:documentation>
+ opacity value (e.g., &lt;number&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="PathData.datatype">
+ <a:documentation>
+ a path data specification
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="PreserveAspectRatioSpec.datatype">
+ <a:documentation>
+ 'preserveAspectRatio' attribute specification
+ </a:documentation>
+ <data type="string">
+ <param name="pattern">\s*(none|xMinYMin|xMidYMin|xMaxYMin|xMinYMid|xMidYMid|xMaxYMid|xMinYMax|xMidYMax|xMaxYMax)\s+(meet|slice)?\s*</param>
+ </data>
+ </define>
+ <define name="Script.datatype">
+ <a:documentation>
+ script expression
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVGColor.datatype">
+ <a:documentation>
+ An SVG color value (RGB plus optional ICC)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="Text.datatype">
+ <a:documentation>
+ arbitrary text string
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="TransformList.datatype">
+ <a:documentation>
+ list of transforms
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="URI.datatype">
+ <a:documentation>
+ a Uniform Resource Identifier, see [URI]
+ </a:documentation>
+ <data type="anyURI"/>
+ </define>
+ <define name="ViewBoxSpec.datatype">
+ <a:documentation>
+ 'viewBox' attribute specification
+ </a:documentation>
+ <data type="string"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-docevents-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-docevents-attrib.rng
new file mode 100644
index 00000000000..3d2eecea923
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-docevents-attrib.rng
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Document Events Attribute Module
+ file: svg-docevents-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-docevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Document Events Attribute
+
+ onunload, onabort, onerror, onresize, onscroll, onzoom
+
+ This module defines the DocumentEvents attribute set.
+ </a:documentation>
+ <define name="SVG.onunload.attrib">
+ <optional>
+ <attribute name="onunload">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onabort.attrib">
+ <optional>
+ <attribute name="onabort">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onerror.attrib">
+ <optional>
+ <attribute name="onerror">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onresize.attrib">
+ <optional>
+ <attribute name="onresize">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onscroll.attrib">
+ <optional>
+ <attribute name="onscroll">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onzoom.attrib">
+ <optional>
+ <attribute name="onzoom">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.DocumentEvents.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.DocumentEvents.attrib" combine="interleave">
+ <ref name="SVG.onunload.attrib"/>
+ <ref name="SVG.onabort.attrib"/>
+ <ref name="SVG.onerror.attrib"/>
+ <ref name="SVG.onresize.attrib"/>
+ <ref name="SVG.onscroll.attrib"/>
+ <ref name="SVG.onzoom.attrib"/>
+ <ref name="SVG.DocumentEvents.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-extensibility.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-extensibility.rng
new file mode 100644
index 00000000000..d63acf3deae
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-extensibility.rng
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar ns="http://www.w3.org/2000/svg" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Extensibility Module
+ file: svg-extensibility.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-extensibility.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+</a:documentation>
+ <a:documentation>
+ Extensibility
+
+ foreignObject
+
+ This module declares markup to provide support for extensibility.
+ </a:documentation>
+ <a:documentation>
+ SVG.Extensibility.class
+ </a:documentation>
+ <define name="SVG.Extensibility.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Extensibility.class" combine="choice">
+ <choice>
+ <ref name="foreignObject"/>
+ <ref name="SVG.Extensibility.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ foreignObject: Foreign Object Element
+ </a:documentation>
+ <define name="SVG.foreignObject.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="svg"/>
+ </choice>
+ <!-- ref name="foreignElement"/ -->
+ </zeroOrMore>
+ </define>
+ <define name="foreignObject">
+ <element name="foreignObject">
+ <ref name="attlist.foreignObject"/>
+ <ref name="SVG.foreignObject.content"/>
+ </element>
+ </define>
+ <define name="attlist.foreignObject" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="foreignElement">
+ <a:documentation>
+ any element in foreign namespace
+ </a:documentation>
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ </attribute>
+ <text/>
+ <ref name="foreignElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-extresources-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-extresources-attrib.rng
new file mode 100644
index 00000000000..1fa08bfe7ba
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-extresources-attrib.rng
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 External Resources Attribute Module
+ file: svg-extresources-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-extresources-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ External Resources Attribute
+
+ externalResourcesRequired
+
+ This module defines the External attribute set.
+ </a:documentation>
+ <define name="SVG.externalResourcesRequired.attrib">
+ <optional>
+ <attribute name="externalResourcesRequired">
+ <ref name="Boolean.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.External.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.External.attrib" combine="interleave">
+ <ref name="SVG.externalResourcesRequired.attrib"/>
+ <ref name="SVG.External.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-filter.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-filter.rng
new file mode 100644
index 00000000000..72bc2c37c50
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-filter.rng
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Filter Module
+ file: svg-filter.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Filter
+
+ filter, feBlend, feColorMatrix, feComponentTransfer, feComposite,
+ feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feFlood,
+ feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset,
+ feSpecularLighting, feTile, feTurbulence, feDistantLight, fePointLight,
+ feSpotLight, feFuncR, feFuncG, feFuncB, feFuncA
+
+ This module declares markup to provide support for filter effect.
+ </a:documentation>
+ <include href="svg-basic-filter.rng"/>
+ <define name="SVG.FilterPrimitive.class" combine="choice">
+ <a:documentation>
+ extend SVG.FilterPrimitive.class
+ </a:documentation>
+ <choice>
+ <ref name="feConvolveMatrix"/>
+ <ref name="feDiffuseLighting"/>
+ <ref name="feDisplacementMap"/>
+ <ref name="feMorphology"/>
+ <ref name="feSpecularLighting"/>
+ <ref name="feTurbulence"/>
+ </choice>
+ </define>
+ <a:documentation>
+ feConvolveMatrix: Filter Effect Convolve Matrix Element
+ </a:documentation>
+ <define name="SVG.feConvolveMatrix.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feConvolveMatrix">
+ <element name="feConvolveMatrix">
+ <ref name="attlist.feConvolveMatrix"/>
+ <ref name="SVG.feConvolveMatrix.content"/>
+ </element>
+ </define>
+ <define name="attlist.feConvolveMatrix" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="order">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ <attribute name="kernelMatrix"/>
+ <optional>
+ <attribute name="divisor">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="bias">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="targetX">
+ <ref name="Integer.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="targetY">
+ <ref name="Integer.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="edgeMode" a:defaultValue="duplicate">
+ <choice>
+ <value>duplicate</value>
+ <value>wrap</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kernelUnitLength">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAlpha">
+ <ref name="Boolean.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feDiffuseLighting: Filter Effect Diffuse Lighting Element
+ </a:documentation>
+ <define name="SVG.feDiffuseLighting.content">
+ <choice>
+ <ref name="feDistantLight"/>
+ <ref name="fePointLight"/>
+ <ref name="feSpotLight"/>
+ </choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feDiffuseLighting">
+ <element name="feDiffuseLighting">
+ <ref name="attlist.feDiffuseLighting"/>
+ <ref name="SVG.feDiffuseLighting.content"/>
+ </element>
+ </define>
+ <define name="attlist.feDiffuseLighting" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="lighting-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="surfaceScale">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="diffuseConstant">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kernelUnitLength">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feDisplacementMap: Filter Effect Displacement Map Element
+ </a:documentation>
+ <define name="SVG.feDisplacementMap.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feDisplacementMap">
+ <element name="feDisplacementMap">
+ <ref name="attlist.feDisplacementMap"/>
+ <ref name="SVG.feDisplacementMap.content"/>
+ </element>
+ </define>
+ <define name="attlist.feDisplacementMap" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <attribute name="in2"/>
+ <optional>
+ <attribute name="scale">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xChannelSelector" a:defaultValue="A">
+ <choice>
+ <value>R</value>
+ <value>G</value>
+ <value>B</value>
+ <value>A</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="yChannelSelector" a:defaultValue="A">
+ <choice>
+ <value>R</value>
+ <value>G</value>
+ <value>B</value>
+ <value>A</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feMorphology: Filter Effect Morphology Element
+ </a:documentation>
+ <define name="SVG.feMorphology.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feMorphology">
+ <element name="feMorphology">
+ <ref name="attlist.feMorphology"/>
+ <ref name="SVG.feMorphology.content"/>
+ </element>
+ </define>
+ <define name="attlist.feMorphology" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="operator" a:defaultValue="erode">
+ <choice>
+ <value>erode</value>
+ <value>dilate</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="radius">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feSpecularLighting: Filter Effect Specular Lighting Element
+ </a:documentation>
+ <define name="SVG.feSpecularLighting.content">
+ <choice>
+ <ref name="feDistantLight"/>
+ <ref name="fePointLight"/>
+ <ref name="feSpotLight"/>
+ </choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feSpecularLighting">
+ <element name="feSpecularLighting">
+ <ref name="attlist.feSpecularLighting"/>
+ <ref name="SVG.feSpecularLighting.content"/>
+ </element>
+ </define>
+ <define name="attlist.feSpecularLighting" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitiveWithIn.attrib"/>
+ <optional>
+ <attribute name="lighting-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="surfaceScale">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularConstant">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularExponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kernelUnitLength">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feTurbulence: Filter Effect Turbulence Element
+ </a:documentation>
+ <define name="SVG.feTurbulence.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feTurbulence">
+ <element name="feTurbulence">
+ <ref name="attlist.feTurbulence"/>
+ <ref name="SVG.feTurbulence.content"/>
+ </element>
+ </define>
+ <define name="attlist.feTurbulence" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.FilterColor.attrib"/>
+ <ref name="SVG.FilterPrimitive.attrib"/>
+ <optional>
+ <attribute name="baseFrequency">
+ <ref name="NumberOptionalNumber.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="numOctaves">
+ <ref name="Integer.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="seed">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stitchTiles" a:defaultValue="noStitch">
+ <choice>
+ <value>stitch</value>
+ <value>noStitch</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type" a:defaultValue="turbulence">
+ <choice>
+ <value>fractalNoise</value>
+ <value>turbulence</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feDistantLight: Filter Effect Distant Light Element
+ </a:documentation>
+ <define name="SVG.feDistantLight.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feDistantLight">
+ <element name="feDistantLight">
+ <ref name="attlist.feDistantLight"/>
+ <ref name="SVG.feDistantLight.content"/>
+ </element>
+ </define>
+ <define name="attlist.feDistantLight" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="azimuth">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="elevation">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ fePointLight: Filter Effect Point Light Element
+ </a:documentation>
+ <define name="SVG.fePointLight.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="fePointLight">
+ <element name="fePointLight">
+ <ref name="attlist.fePointLight"/>
+ <ref name="SVG.fePointLight.content"/>
+ </element>
+ </define>
+ <define name="attlist.fePointLight" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="z">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ feSpotLight: Filter Effect Spot Light Element
+ </a:documentation>
+ <define name="SVG.feSpotLight.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="feSpotLight">
+ <element name="feSpotLight">
+ <ref name="attlist.feSpotLight"/>
+ <ref name="SVG.feSpotLight.content"/>
+ </element>
+ </define>
+ <define name="attlist.feSpotLight" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="z">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pointsAtX">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pointsAtY">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pointsAtZ">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="specularExponent">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="limitingConeAngle">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-font.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-font.rng
new file mode 100644
index 00000000000..f5da47c17ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-font.rng
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Font Module
+ file: svg-font.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-font.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Font
+
+ font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src,
+ font-face-uri, font-face-format, font-face-name, definition-src
+
+ This module declares markup to provide support for template.
+ </a:documentation>
+ <include href="svg-basic-font.rng"/>
+ <a:documentation>
+ font-face: Font Face Element
+ </a:documentation>
+ <define name="SVG.font-face.extra.class" combine="interleave">
+ <optional>
+ <ref name="definition-src"/>
+ </optional>
+ </define>
+ <a:documentation>
+ glyph: Glyph Element
+ </a:documentation>
+ <define name="SVG.glyph.class" combine="choice">
+ <choice>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ missing-glyph: Missing Glyph Element
+ </a:documentation>
+ <define name="SVG.missing-glyph.class" combine="choice">
+ <choice>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ font-face-uri: Font Face URI Element
+ </a:documentation>
+ <define name="SVG.font-face-uri.content" combine="choice">
+ <zeroOrMore>
+ <ref name="font-face-format"/>
+ </zeroOrMore>
+ </define>
+ <a:documentation>
+ font-face-format: Font Face Format Element
+ </a:documentation>
+ <define name="SVG.font-face-format.content">
+ <empty/>
+ </define>
+ <define name="font-face-format">
+ <element name="font-face-format">
+ <ref name="attlist.font-face-format"/>
+ <ref name="SVG.font-face-format.content"/>
+ </element>
+ </define>
+ <define name="attlist.font-face-format" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <optional>
+ <attribute name="string"/>
+ </optional>
+ </define>
+ <a:documentation>
+ definition-src: Definition Source Element
+ </a:documentation>
+ <define name="SVG.definition-src.content">
+ <empty/>
+ </define>
+ <define name="definition-src">
+ <element name="definition-src">
+ <ref name="attlist.definition-src"/>
+ <ref name="SVG.definition-src.content"/>
+ </element>
+ </define>
+ <define name="attlist.definition-src" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-gradient.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-gradient.rng
new file mode 100644
index 00000000000..a13c68f8341
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-gradient.rng
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Gradient Module
+ file: svg-gradient.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-gradient.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Gradient
+
+ linearGradient, radialGradient, stop
+
+ This module declares markup to provide support for gradient fill.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="NumberOrPercentage.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Gradient.attrib
+ </a:documentation>
+ <define name="SVG.Gradient.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Gradient.attrib" combine="interleave">
+ <optional>
+ <attribute name="stop-color">
+ <ref name="SVGColor.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="stop-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Gradient.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Gradient.class
+ </a:documentation>
+ <define name="SVG.Gradient.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Gradient.class" combine="choice">
+ <choice>
+ <ref name="linearGradient"/>
+ <ref name="radialGradient"/>
+ <ref name="SVG.Gradient.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ linearGradient: Linear Gradient Element
+ </a:documentation>
+ <define name="SVG.linearGradient.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="stop"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateTransform"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="linearGradient">
+ <element name="linearGradient">
+ <ref name="attlist.linearGradient"/>
+ <ref name="SVG.linearGradient.content"/>
+ </element>
+ </define>
+ <define name="attlist.linearGradient" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientTransform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spreadMethod">
+ <choice>
+ <value>pad</value>
+ <value>reflect</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ radialGradient: Radial Gradient Element
+ </a:documentation>
+ <define name="SVG.radialGradient.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="stop"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateTransform"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="radialGradient">
+ <element name="radialGradient">
+ <ref name="attlist.radialGradient"/>
+ <ref name="SVG.radialGradient.content"/>
+ </element>
+ </define>
+ <define name="attlist.radialGradient" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="cx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="gradientTransform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spreadMethod">
+ <choice>
+ <value>pad</value>
+ <value>reflect</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ stop: Stop Element
+ </a:documentation>
+ <define name="SVG.stop.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="stop">
+ <element name="stop">
+ <ref name="attlist.stop"/>
+ <ref name="SVG.stop.content"/>
+ </element>
+ </define>
+ <define name="attlist.stop" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Gradient.attrib"/>
+ <attribute name="offset">
+ <ref name="NumberOrPercentage.datatype"/>
+ </attribute>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-graphevents-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-graphevents-attrib.rng
new file mode 100644
index 00000000000..4a69371858f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-graphevents-attrib.rng
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Graphical Element Events Attribute Module
+ file: svg-graphevents-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-graphevents-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Graphical Element Events Attribute
+
+ onfocusin, onfocusout, onactivate, onclick, onmousedown, onmouseup,
+ onmouseover, onmousemove, onmouseout, onload
+
+ This module defines the GraphicalEvents attribute set.
+ </a:documentation>
+ <define name="SVG.onfocusin.attrib">
+ <optional>
+ <attribute name="onfocusin">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onfocusout.attrib">
+ <optional>
+ <attribute name="onfocusout">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onactivate.attrib">
+ <optional>
+ <attribute name="onactivate">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onclick.attrib">
+ <optional>
+ <attribute name="onclick">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmousedown.attrib">
+ <optional>
+ <attribute name="onmousedown">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmouseup.attrib">
+ <optional>
+ <attribute name="onmouseup">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmouseover.attrib">
+ <optional>
+ <attribute name="onmouseover">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmousemove.attrib">
+ <optional>
+ <attribute name="onmousemove">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onmouseout.attrib">
+ <optional>
+ <attribute name="onmouseout">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.onload.attrib" combine="interleave">
+ <optional>
+ <attribute name="onload">
+ <ref name="Script.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.GraphicalEvents.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.GraphicalEvents.attrib" combine="interleave">
+ <ref name="SVG.onfocusin.attrib"/>
+ <ref name="SVG.onfocusout.attrib"/>
+ <ref name="SVG.onactivate.attrib"/>
+ <ref name="SVG.onclick.attrib"/>
+ <ref name="SVG.onmousedown.attrib"/>
+ <ref name="SVG.onmouseup.attrib"/>
+ <ref name="SVG.onmouseover.attrib"/>
+ <ref name="SVG.onmousemove.attrib"/>
+ <ref name="SVG.onmouseout.attrib"/>
+ <ref name="SVG.onload.attrib"/>
+ <ref name="SVG.GraphicalEvents.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-graphics-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-graphics-attrib.rng
new file mode 100644
index 00000000000..307dcd62754
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-graphics-attrib.rng
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Graphics Attribute Module
+ file: svg-graphics-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-graphics-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Graphics Attribute
+
+ display, image-rendering, pointer-events, shape-rendering,
+ text-rendering, visibility
+
+ This module defines the Graphics attribute set.
+ </a:documentation>
+ <include href="svg-basic-graphics-attrib.rng"/>
+ <define name="SVG.image-rendering.attrib">
+ <optional>
+ <attribute name="image-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>optimizeQuality</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.pointer-events.attrib">
+ <optional>
+ <attribute name="pointer-events">
+ <choice>
+ <value>visiblePainted</value>
+ <value>visibleFill</value>
+ <value>visibleStroke</value>
+ <value>visible</value>
+ <value>painted</value>
+ <value>fill</value>
+ <value>stroke</value>
+ <value>all</value>
+ <value>none</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.shape-rendering.attrib">
+ <optional>
+ <attribute name="shape-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>crispEdges</value>
+ <value>geometricPrecision</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.text-rendering.attrib">
+ <optional>
+ <attribute name="text-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>optimizeLegibility</value>
+ <value>geometricPrecision</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Graphics.attrib" combine="interleave">
+ <ref name="SVG.image-rendering.attrib"/>
+ <ref name="SVG.pointer-events.attrib"/>
+ <ref name="SVG.shape-rendering.attrib"/>
+ <ref name="SVG.text-rendering.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-hyperlink.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-hyperlink.rng
new file mode 100644
index 00000000000..1e0c1807091
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-hyperlink.rng
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Hyperlinking Module
+ file: svg-hyperlink.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-hyperlink.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Hyperlinking
+
+ a
+
+ This module declares markup to provide support for hyper linking.
+ </a:documentation>
+ <define name="LinkTarget.datatype">
+ <a:documentation>
+ link to this target
+ </a:documentation>
+ <data type="NMTOKEN"/>
+ </define>
+ <a:documentation>
+ SVG.Hyperlink.class
+ </a:documentation>
+ <define name="SVG.Hyperlink.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Hyperlink.class" combine="choice">
+ <choice>
+ <ref name="a"/>
+ <ref name="SVG.Hyperlink.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ a: Anchor Element
+ </a:documentation>
+ <define name="SVG.a.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="a">
+ <element name="a">
+ <ref name="attlist.a"/>
+ <ref name="SVG.a.content"/>
+ </element>
+ </define>
+ <define name="attlist.a" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.XLinkReplace.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="target">
+ <ref name="LinkTarget.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-image.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-image.rng
new file mode 100644
index 00000000000..8b02c532890
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-image.rng
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Image Module
+ file: svg-image.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-image.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Image
+
+ image
+
+ This module declares markup to provide support for image.
+ </a:documentation>
+ <a:documentation>
+ SVG.Image.class
+ </a:documentation>
+ <define name="SVG.Image.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Image.class" combine="choice">
+ <choice>
+ <ref name="image"/>
+ <ref name="SVG.Image.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ image: Image Element
+ </a:documentation>
+ <define name="SVG.image.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="image">
+ <element name="image">
+ <ref name="attlist.image"/>
+ <ref name="SVG.image.content"/>
+ </element>
+ </define>
+ <define name="attlist.image" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Viewport.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Profile.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLinkEmbed.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-marker.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-marker.rng
new file mode 100644
index 00000000000..ef30e1d60c1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-marker.rng
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Marker Module
+ file: svg-marker.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-marker.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Marker
+
+ marker
+
+ This module declares markup to provide support for marker.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="MarkerValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Marker.attrib
+ </a:documentation>
+ <define name="SVG.Marker.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Marker.attrib" combine="interleave">
+ <optional>
+ <attribute name="marker-start">
+ <ref name="MarkerValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="marker-mid">
+ <ref name="MarkerValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="marker-end">
+ <ref name="MarkerValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Marker.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Marker.class
+ </a:documentation>
+ <define name="SVG.Marker.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Marker.class" combine="choice">
+ <choice>
+ <ref name="marker"/>
+ <ref name="SVG.Marker.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ marker: Marker Element
+ </a:documentation>
+ <define name="SVG.marker.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="marker">
+ <element name="marker">
+ <ref name="attlist.marker"/>
+ <ref name="SVG.marker.content"/>
+ </element>
+ </define>
+ <define name="attlist.marker" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="refX">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="refY">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="markerUnits">
+ <choice>
+ <value>strokeWidth</value>
+ <value>userSpaceOnUse</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="markerWidth">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="markerHeight">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="orient"/>
+ </optional>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-mask.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-mask.rng
new file mode 100644
index 00000000000..ca25e47915d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-mask.rng
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Mask Module
+ file: svg-mask.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-mask.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Mask
+
+ mask
+
+ This module declares markup to provide support for masking.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="MaskValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Mask.attrib
+ </a:documentation>
+ <define name="SVG.Mask.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Mask.attrib" combine="interleave">
+ <optional>
+ <attribute name="mask">
+ <ref name="MaskValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Mask.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Mask.class
+ </a:documentation>
+ <define name="SVG.Mask.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Mask.class" combine="choice">
+ <choice>
+ <ref name="mask"/>
+ <ref name="SVG.Mask.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ mask: Mask Element
+ </a:documentation>
+ <define name="SVG.mask.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="mask">
+ <element name="mask">
+ <ref name="attlist.mask"/>
+ <ref name="SVG.mask.content"/>
+ </element>
+ </define>
+ <define name="attlist.mask" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maskUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="maskContentUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-opacity-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-opacity-attrib.rng
new file mode 100644
index 00000000000..44458f8b805
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-opacity-attrib.rng
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Paint Opacity Attribute Module
+ file: svg-opacity-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-opacity-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Paint Opacity Attribute
+
+ opacity, fill-opacity, stroke-opacity
+
+ This module defines the Opacity attribute set.
+ </a:documentation>
+ <define name="SVG.opacity.attrib">
+ <optional>
+ <attribute name="opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.fill-opacity.attrib">
+ <optional>
+ <attribute name="fill-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-opacity.attrib">
+ <optional>
+ <attribute name="stroke-opacity">
+ <ref name="OpacityValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Opacity.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Opacity.attrib" combine="interleave">
+ <ref name="SVG.opacity.attrib"/>
+ <ref name="SVG.fill-opacity.attrib"/>
+ <ref name="SVG.stroke-opacity.attrib"/>
+ <ref name="SVG.Opacity.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-paint-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-paint-attrib.rng
new file mode 100644
index 00000000000..fe9d499edca
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-paint-attrib.rng
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Paint Attribute Module
+ file: svg-paint-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-paint-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Paint Attribute
+
+ fill, fill-rule, stroke, stroke-dasharray, stroke-dashoffset,
+ stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-width, color,
+ color-interpolation, color-rendering
+
+ This module defines the Paint and Color attribute sets.
+ </a:documentation>
+ <define name="Paint.datatype">
+ <a:documentation>
+ a 'fill' or 'stroke' property/attribute value: &lt;paint&gt;
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeDashArrayValue.datatype">
+ <a:documentation>
+ 'stroke-dasharray' property/attribute value
+ (e.g., 'none', list of &lt;number&gt;s)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeDashOffsetValue.datatype">
+ <a:documentation>
+ 'stroke-dashoffset' property/attribute value (e.g., 'none', &lt;legnth&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeMiterLimitValue.datatype">
+ <a:documentation>
+ 'stroke-miterlimit' property/attribute value (e.g., &lt;number&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="StrokeWidthValue.datatype">
+ <a:documentation>
+ 'stroke-width' property/attribute value (e.g., &lt;length&gt;)
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVG.fill.attrib">
+ <optional>
+ <attribute name="fill">
+ <ref name="Paint.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.fill-rule.attrib">
+ <optional>
+ <attribute name="fill-rule">
+ <ref name="ClipFillRule.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke.attrib">
+ <optional>
+ <attribute name="stroke">
+ <ref name="Paint.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-dasharray.attrib">
+ <optional>
+ <attribute name="stroke-dasharray">
+ <ref name="StrokeDashArrayValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-dashoffset.attrib">
+ <optional>
+ <attribute name="stroke-dashoffset">
+ <ref name="StrokeDashOffsetValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-linecap.attrib">
+ <optional>
+ <attribute name="stroke-linecap">
+ <choice>
+ <value>butt</value>
+ <value>round</value>
+ <value>square</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-linejoin.attrib">
+ <optional>
+ <attribute name="stroke-linejoin">
+ <choice>
+ <value>miter</value>
+ <value>round</value>
+ <value>bevel</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-miterlimit.attrib">
+ <optional>
+ <attribute name="stroke-miterlimit">
+ <ref name="StrokeMiterLimitValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.stroke-width.attrib">
+ <optional>
+ <attribute name="stroke-width">
+ <ref name="StrokeWidthValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Paint.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Paint.attrib" combine="interleave">
+ <ref name="SVG.fill.attrib"/>
+ <ref name="SVG.fill-rule.attrib"/>
+ <ref name="SVG.stroke.attrib"/>
+ <ref name="SVG.stroke-dasharray.attrib"/>
+ <ref name="SVG.stroke-dashoffset.attrib"/>
+ <ref name="SVG.stroke-linecap.attrib"/>
+ <ref name="SVG.stroke-linejoin.attrib"/>
+ <ref name="SVG.stroke-miterlimit.attrib"/>
+ <ref name="SVG.stroke-width.attrib"/>
+ <ref name="SVG.Paint.extra.attrib"/>
+ </define>
+ <define name="SVG.color.attrib">
+ <optional>
+ <attribute name="color">
+ <ref name="Color.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.color-interpolation.attrib">
+ <optional>
+ <attribute name="color-interpolation">
+ <choice>
+ <value>auto</value>
+ <value>sRGB</value>
+ <value>linearRGB</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.color-rendering.attrib">
+ <optional>
+ <attribute name="color-rendering">
+ <choice>
+ <value>auto</value>
+ <value>optimizeSpeed</value>
+ <value>optimizeQuality</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Color.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Color.attrib" combine="interleave">
+ <ref name="SVG.color.attrib"/>
+ <ref name="SVG.color-interpolation.attrib"/>
+ <ref name="SVG.color-rendering.attrib"/>
+ <ref name="SVG.Color.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-pattern.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-pattern.rng
new file mode 100644
index 00000000000..371521b1688
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-pattern.rng
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Pattern Module
+ file: svg-pattern.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-pattern.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Pattern
+
+ pattern
+
+ This module declares markup to provide support for pattern fill.
+ </a:documentation>
+ <a:documentation>
+ SVG.Pattern.class
+ </a:documentation>
+ <define name="SVG.Pattern.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Pattern.class" combine="choice">
+ <choice>
+ <ref name="pattern"/>
+ <ref name="SVG.Pattern.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ pattern: Pattern Element
+ </a:documentation>
+ <define name="SVG.pattern.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="pattern">
+ <element name="pattern">
+ <ref name="attlist.pattern"/>
+ <ref name="SVG.pattern.content"/>
+ </element>
+ </define>
+ <define name="attlist.pattern" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="patternUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="patternContentUnits">
+ <choice>
+ <value>userSpaceOnUse</value>
+ <value>objectBoundingBox</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="patternTransform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-profile.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-profile.rng
new file mode 100644
index 00000000000..11834192f0f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-profile.rng
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Color Profile Module
+ file: svg-profile.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-profile.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Color Profile
+
+ color-profile
+
+ This module declares markup to provide support for color profile.
+ </a:documentation>
+ <a:documentation>
+ SVG.Profile.attrib
+ </a:documentation>
+ <define name="SVG.Profile.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Profile.attrib" combine="interleave">
+ <optional>
+ <attribute name="color-profile"/>
+ </optional>
+ <ref name="SVG.Profile.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Profile.class
+ </a:documentation>
+ <define name="SVG.Profile.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Profile.class" combine="choice">
+ <choice>
+ <ref name="color-profile"/>
+ <ref name="SVG.Profile.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ color-profile: Color Profile Element
+ </a:documentation>
+ <define name="SVG.color-profile.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="color-profile">
+ <element name="color-profile">
+ <ref name="attlist.color-profile"/>
+ <ref name="SVG.color-profile.content"/>
+ </element>
+ </define>
+ <define name="attlist.color-profile" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <optional>
+ <attribute name="local"/>
+ </optional>
+ <attribute name="name"/>
+ <optional>
+ <attribute name="rendering-intent" a:defaultValue="auto">
+ <choice>
+ <value>auto</value>
+ <value>perceptual</value>
+ <value>relative-colorimetric</value>
+ <value>saturation</value>
+ <value>absolute-colorimetric</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-script.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-script.rng
new file mode 100644
index 00000000000..4e21020a398
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-script.rng
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Scripting Module
+ file: svg-script.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-script.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Scripting
+
+ script
+
+ This module declares markup to provide support for scripting.
+ </a:documentation>
+ <a:documentation>
+ SVG.Script.class
+ </a:documentation>
+ <define name="SVG.Script.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Script.class" combine="choice">
+ <choice>
+ <ref name="script"/>
+ <ref name="SVG.Script.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ script: Script Element
+ </a:documentation>
+ <define name="SVG.script.content">
+ <text/>
+ </define>
+ <define name="script">
+ <element name="script">
+ <ref name="attlist.script"/>
+ <ref name="SVG.script.content"/>
+ </element>
+ </define>
+ <define name="attlist.script" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.XLink.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-shape.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-shape.rng
new file mode 100644
index 00000000000..c931bab7ae2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-shape.rng
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Shape Module
+ file: svg-shape.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-shape.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Shape
+
+ path, rect, circle, line, ellipse, polyline, polygon
+
+ This module declares markup to provide support for graphical shapes.
+ </a:documentation>
+ <define name="Points.datatype">
+ <a:documentation>
+ a list of points
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Shape.class
+ </a:documentation>
+ <define name="SVG.Shape.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Shape.class" combine="choice">
+ <choice>
+ <ref name="path"/>
+ <ref name="rect"/>
+ <ref name="circle"/>
+ <ref name="line"/>
+ <ref name="ellipse"/>
+ <ref name="polyline"/>
+ <ref name="polygon"/>
+ <ref name="SVG.Shape.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ path: Path Element
+ </a:documentation>
+ <define name="SVG.path.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="path">
+ <element name="path">
+ <ref name="attlist.path"/>
+ <ref name="SVG.path.content"/>
+ </element>
+ </define>
+ <define name="attlist.path" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="d">
+ <ref name="PathData.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="pathLength">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ rect: Rectangle Element
+ </a:documentation>
+ <define name="SVG.rect.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="rect">
+ <element name="rect">
+ <ref name="attlist.rect"/>
+ <ref name="SVG.rect.content"/>
+ </element>
+ </define>
+ <define name="attlist.rect" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="rx">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ry">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ circle: Circle Element
+ </a:documentation>
+ <define name="SVG.circle.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="circle">
+ <element name="circle">
+ <ref name="attlist.circle"/>
+ <ref name="SVG.circle.content"/>
+ </element>
+ </define>
+ <define name="attlist.circle" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="cx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="r">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ line: Line Element
+ </a:documentation>
+ <define name="SVG.line.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="line">
+ <element name="line">
+ <ref name="attlist.line"/>
+ <ref name="SVG.line.content"/>
+ </element>
+ </define>
+ <define name="attlist.line" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y1">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="x2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y2">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ ellipse: Ellipse Element
+ </a:documentation>
+ <define name="SVG.ellipse.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="ellipse">
+ <element name="ellipse">
+ <ref name="attlist.ellipse"/>
+ <ref name="SVG.ellipse.content"/>
+ </element>
+ </define>
+ <define name="attlist.ellipse" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="cx">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cy">
+ <ref name="Coordinate.datatype"/>
+ </attribute>
+ </optional>
+ <attribute name="rx">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="ry">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ polyline: Polyline Element
+ </a:documentation>
+ <define name="SVG.polyline.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="polyline">
+ <element name="polyline">
+ <ref name="attlist.polyline"/>
+ <ref name="SVG.polyline.content"/>
+ </element>
+ </define>
+ <define name="attlist.polyline" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="points">
+ <ref name="Points.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ polygon: Polygon Element
+ </a:documentation>
+ <define name="SVG.polygon.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="SVG.Animation.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="polygon">
+ <element name="polygon">
+ <ref name="attlist.polygon"/>
+ <ref name="SVG.polygon.content"/>
+ </element>
+ </define>
+ <define name="attlist.polygon" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Marker.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <attribute name="points">
+ <ref name="Points.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="transform">
+ <ref name="TransformList.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-structure.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-structure.rng
new file mode 100644
index 00000000000..533d3462646
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-structure.rng
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 Structure Module
+ file: svg-structure.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-structure.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Structure
+
+ svg, g, defs, desc, title, metadata, symbol, use
+
+ This module declares the major structural elements and their attributes.
+ </a:documentation>
+ <include href="svg-basic-structure.rng"/>
+ <define name="SVG.Structure.class" combine="choice">
+ <a:documentation>
+ extend SVG.Structure.class
+ </a:documentation>
+ <ref name="symbol"/>
+ </define>
+ <a:documentation>
+ symbol: Symbol Element
+ </a:documentation>
+ <define name="SVG.symbol.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Animation.class"/>
+ <ref name="SVG.Structure.class"/>
+ <ref name="SVG.Conditional.class"/>
+ <ref name="SVG.Image.class"/>
+ <ref name="SVG.Style.class"/>
+ <ref name="SVG.Shape.class"/>
+ <ref name="SVG.Text.class"/>
+ <ref name="SVG.Marker.class"/>
+ <ref name="SVG.Profile.class"/>
+ <ref name="SVG.Gradient.class"/>
+ <ref name="SVG.Pattern.class"/>
+ <ref name="SVG.Clip.class"/>
+ <ref name="SVG.Mask.class"/>
+ <ref name="SVG.Filter.class"/>
+ <ref name="SVG.Cursor.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ <ref name="SVG.View.class"/>
+ <ref name="SVG.Script.class"/>
+ <ref name="SVG.Font.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="symbol">
+ <element name="symbol">
+ <ref name="attlist.symbol"/>
+ <ref name="SVG.symbol.content"/>
+ </element>
+ </define>
+ <define name="attlist.symbol" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.Presentation.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-style.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-style.rng
new file mode 100644
index 00000000000..bc9b9a736f6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-style.rng
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Style Module
+ file: svg-style.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-style.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Style
+
+ style
+
+ This module declares markup to provide support for stylesheet.
+ </a:documentation>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="ClassList.datatype">
+ <data type="NMTOKENS"/>
+ </define>
+ <define name="StyleSheet.datatype">
+ <data type="string"/>
+ </define>
+ <define name="MediaDesc.datatype">
+ <a:documentation>
+ comma-separated list of media descriptors.
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Style.attrib
+ </a:documentation>
+ <define name="SVG.Style.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Style.attrib" combine="interleave">
+ <optional>
+ <attribute name="style">
+ <ref name="StyleSheet.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <ref name="ClassList.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.Style.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.Style.class
+ </a:documentation>
+ <define name="SVG.Style.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.Style.class" combine="choice">
+ <choice>
+ <ref name="style"/>
+ <ref name="SVG.Style.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ style: Style Element
+ </a:documentation>
+ <define name="SVG.style.content">
+ <text/>
+ </define>
+ <define name="style">
+ <element name="style">
+ <ref name="attlist.style"/>
+ <ref name="SVG.style.content"/>
+ </element>
+ </define>
+ <define name="attlist.style" combine="interleave">
+ <optional>
+ <attribute name="xml:space" a:defaultValue="preserve">
+ <value>preserve</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.id.attrib"/>
+ <ref name="SVG.base.attrib"/>
+ <ref name="SVG.lang.attrib"/>
+ <ref name="SVG.Core.extra.attrib"/>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="media">
+ <ref name="MediaDesc.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-text.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-text.rng
new file mode 100644
index 00000000000..d0740889641
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-text.rng
@@ -0,0 +1,572 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Text Module
+ file: svg-text.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-text.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Text
+
+ text, tspan, tref, textPath, altGlyph, altGlyphDef, altGlyphItem,
+ glyphRef
+
+ This module declares markup to provide support for alternate glyph.
+ </a:documentation>
+ <include href="svg-basic-text.rng"/>
+ <a:documentation>
+ Datatypes
+ </a:documentation>
+ <define name="BaselineShiftValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="FontSizeAdjustValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="GlyphOrientationHorizontalValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="GlyphOrientationVerticalValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="KerningValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="SpacingValue.datatype">
+ <data type="string"/>
+ </define>
+ <define name="TextDecorationValue.datatype">
+ <data type="string"/>
+ </define>
+ <a:documentation>
+ SVG.Text.attrib
+ </a:documentation>
+ <define name="SVG.Text.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Text.attrib" combine="interleave">
+ <optional>
+ <attribute name="writing-mode">
+ <choice>
+ <value>lr-tb</value>
+ <value>rl-tb</value>
+ <value>tb-rl</value>
+ <value>lr</value>
+ <value>rl</value>
+ <value>tb</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="SVG.Text.extra.attrib"/>
+ </define>
+ <a:documentation>
+ SVG.TextContent.attrib
+ </a:documentation>
+ <define name="SVG.TextContent.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.TextContent.attrib" combine="interleave">
+ <optional>
+ <attribute name="alignment-baseline">
+ <choice>
+ <value>auto</value>
+ <value>baseline</value>
+ <value>before-edge</value>
+ <value>text-before-edge</value>
+ <value>middle</value>
+ <value>central</value>
+ <value>after-edge</value>
+ <value>text-after-edge</value>
+ <value>ideographic</value>
+ <value>alphabetic</value>
+ <value>hanging</value>
+ <value>mathematical</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="baseline-shift">
+ <ref name="BaselineShiftValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="direction">
+ <choice>
+ <value>ltr</value>
+ <value>rtl</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dominant-baseline">
+ <choice>
+ <value>auto</value>
+ <value>use-script</value>
+ <value>no-change</value>
+ <value>reset-size</value>
+ <value>ideographic</value>
+ <value>alphabetic</value>
+ <value>hanging</value>
+ <value>mathematical</value>
+ <value>central</value>
+ <value>middle</value>
+ <value>text-after-edge</value>
+ <value>text-before-edge</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="glyph-orientation-horizontal">
+ <ref name="GlyphOrientationHorizontalValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="glyph-orientation-vertical">
+ <ref name="GlyphOrientationVerticalValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="kerning">
+ <ref name="KerningValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="letter-spacing">
+ <ref name="SpacingValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text-anchor">
+ <choice>
+ <value>start</value>
+ <value>middle</value>
+ <value>end</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="text-decoration">
+ <ref name="TextDecorationValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="unicode-bidi">
+ <choice>
+ <value>normal</value>
+ <value>embed</value>
+ <value>bidi-override</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="word-spacing">
+ <ref name="SpacingValue.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="SVG.TextContent.extra.attrib"/>
+ </define>
+ <define name="SVG.Font.attrib" combine="interleave">
+ <optional>
+ <attribute name="font-size-adjust">
+ <ref name="FontSizeAdjustValue.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-stretch">
+ <choice>
+ <value>normal</value>
+ <value>wider</value>
+ <value>narrower</value>
+ <value>ultra-condensed</value>
+ <value>extra-condensed</value>
+ <value>condensed</value>
+ <value>semi-condensed</value>
+ <value>semi-expanded</value>
+ <value>expanded</value>
+ <value>extra-expanded</value>
+ <value>ultra-expanded</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="font-variant">
+ <choice>
+ <value>normal</value>
+ <value>small-caps</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Text.class" combine="choice">
+ <a:documentation>
+ extend SVG.Text.class
+ </a:documentation>
+ <ref name="altGlyphDef"/>
+ </define>
+ <define name="SVG.TextContent.class" combine="choice">
+ <a:documentation>
+ extend SVG.TextContent.class
+ </a:documentation>
+ <choice>
+ <ref name="tspan"/>
+ <ref name="tref"/>
+ <ref name="textPath"/>
+ </choice>
+ </define>
+ <a:documentation>
+ text: Text Element
+ </a:documentation>
+ <define name="SVG.text.class" combine="choice">
+ <ref name="SVG.TextContent.class"/>
+ </define>
+ <define name="attlist.text" combine="interleave">
+ <ref name="SVG.Text.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ tspan: Text Span Element
+ </a:documentation>
+ <define name="SVG.tspan.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="tspan"/>
+ <ref name="tref"/>
+ <ref name="altGlyph"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="tspan">
+ <element name="tspan">
+ <ref name="attlist.tspan"/>
+ <ref name="SVG.tspan.content"/>
+ </element>
+ </define>
+ <define name="attlist.tspan" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ tref: Text Reference Element
+ </a:documentation>
+ <define name="SVG.tref.content">
+ <zeroOrMore>
+ <choice>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ <ref name="SVG.Description.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="tref">
+ <element name="tref">
+ <ref name="attlist.tref"/>
+ <ref name="SVG.tref.content"/>
+ </element>
+ </define>
+ <define name="attlist.tref" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ textPath: Text Path Element
+ </a:documentation>
+ <define name="SVG.textPath.content">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="tspan"/>
+ <ref name="tref"/>
+ <ref name="altGlyph"/>
+ <ref name="animate"/>
+ <ref name="set"/>
+ <ref name="animateColor"/>
+ <ref name="SVG.Description.class"/>
+ <ref name="SVG.Hyperlink.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="textPath">
+ <element name="textPath">
+ <ref name="attlist.textPath"/>
+ <ref name="SVG.textPath.content"/>
+ </element>
+ </define>
+ <define name="attlist.textPath" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.Conditional.attrib"/>
+ <ref name="SVG.Style.attrib"/>
+ <ref name="SVG.TextContent.attrib"/>
+ <ref name="SVG.Font.attrib"/>
+ <ref name="SVG.Paint.attrib"/>
+ <ref name="SVG.Color.attrib"/>
+ <ref name="SVG.Opacity.attrib"/>
+ <ref name="SVG.Graphics.attrib"/>
+ <ref name="SVG.Clip.attrib"/>
+ <ref name="SVG.Mask.attrib"/>
+ <ref name="SVG.Filter.attrib"/>
+ <ref name="SVG.GraphicalEvents.attrib"/>
+ <ref name="SVG.Cursor.attrib"/>
+ <ref name="SVG.XLinkRequired.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="startOffset">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="textLength">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="lengthAdjust">
+ <choice>
+ <value>spacing</value>
+ <value>spacingAndGlyphs</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="method">
+ <choice>
+ <value>align</value>
+ <value>stretch</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spacing">
+ <choice>
+ <value>auto</value>
+ <value>exact</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyph: Alternate Glyph Element
+ </a:documentation>
+ <define name="attlist.altGlyph" combine="interleave">
+ <ref name="SVG.TextContent.attrib"/>
+ <optional>
+ <attribute name="x">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Coordinates.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Lengths.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rotate">
+ <ref name="Numbers.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <a:documentation>
+ altGlyphDef: Alternate Glyph Definition Element
+ </a:documentation>
+ <define name="SVG.altGlyphDef.content" combine="choice">
+ <oneOrMore>
+ <ref name="altGlyphItem"/>
+ </oneOrMore>
+ </define>
+ <a:documentation>
+ altGlyphItem: Alternate Glyph Item Element
+ </a:documentation>
+ <define name="SVG.altGlyphItem.content">
+ <oneOrMore>
+ <ref name="glyphRef"/>
+ </oneOrMore>
+ </define>
+ <define name="altGlyphItem">
+ <element name="altGlyphItem">
+ <ref name="attlist.altGlyphItem"/>
+ <ref name="SVG.altGlyphItem.content"/>
+ </element>
+ </define>
+ <define name="attlist.altGlyphItem" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ </define>
+ <a:documentation>
+ glyphRef: Glyph Reference Element
+ </a:documentation>
+ <define name="attlist.glyphRef" combine="interleave">
+ <optional>
+ <attribute name="x">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="y">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dx">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dy">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-view.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-view.rng
new file mode 100644
index 00000000000..2b26547d2f8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-view.rng
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 View Module
+ file: svg-view.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-view.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ View
+
+ view
+
+ This module declares markup to provide support for view.
+ </a:documentation>
+ <a:documentation>
+ SVG.View.class
+ </a:documentation>
+ <define name="SVG.View.extra.class">
+ <notAllowed/>
+ </define>
+ <define name="SVG.View.class" combine="choice">
+ <choice>
+ <ref name="view"/>
+ <ref name="SVG.View.extra.class"/>
+ </choice>
+ </define>
+ <a:documentation>
+ view: View Element
+ </a:documentation>
+ <define name="SVG.view.content">
+ <zeroOrMore>
+ <ref name="SVG.Description.class"/>
+ </zeroOrMore>
+ </define>
+ <define name="view">
+ <element name="view">
+ <ref name="attlist.view"/>
+ <ref name="SVG.view.content"/>
+ </element>
+ </define>
+ <define name="attlist.view" combine="interleave">
+ <ref name="SVG.Core.attrib"/>
+ <ref name="SVG.External.attrib"/>
+ <optional>
+ <attribute name="viewBox">
+ <ref name="ViewBoxSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="preserveAspectRatio" a:defaultValue="xMidYMid meet">
+ <ref name="PreserveAspectRatioSpec.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zoomAndPan" a:defaultValue="magnify">
+ <choice>
+ <value>disable</value>
+ <value>magnify</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="viewTarget"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-viewport-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-viewport-attrib.rng
new file mode 100644
index 00000000000..1578d27ceb3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-viewport-attrib.rng
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <a:documentation>
+ SVG 1.1 Viewport Attribute Module
+ file: svg-viewport-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-viewport-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ Viewport Attribute
+
+ clip, overflow
+
+ This module defines the Viewport attribute set.
+ </a:documentation>
+ <define name="ClipValue.datatype">
+ <a:documentation>
+ 'clip' property/attribute value (e.g., 'auto', rect(...))
+ </a:documentation>
+ <data type="string"/>
+ </define>
+ <define name="SVG.clip.attrib">
+ <optional>
+ <attribute name="clip">
+ <ref name="ClipValue.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.overflow.attrib">
+ <optional>
+ <attribute name="overflow">
+ <choice>
+ <value>visible</value>
+ <value>hidden</value>
+ <value>scroll</value>
+ <value>auto</value>
+ <value>inherit</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="SVG.Viewport.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.Viewport.attrib" combine="interleave">
+ <ref name="SVG.clip.attrib"/>
+ <ref name="SVG.overflow.attrib"/>
+ <ref name="SVG.Viewport.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg-xlink-attrib.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg-xlink-attrib.rng
new file mode 100644
index 00000000000..0f1a65dffef
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg-xlink-attrib.rng
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ SVG 1.1 XLink Attribute Module
+ file: svg-xlink-attrib.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+ Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+ $Id: svg-xlink-attrib.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+ </a:documentation>
+ <a:documentation>
+ XLink Attribute
+
+ type, href, role, arcrole, title, show, actuate
+
+ This module defines the XLink, XLinkRequired, XLinkEmbed, and
+ XLinkReplace attribute set.
+ </a:documentation>
+ <define name="SVG.XLink.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLink.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="other">
+ <value>other</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onLoad">
+ <value>onLoad</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLink.extra.attrib"/>
+ </define>
+ <define name="SVG.XLinkRequired.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkRequired.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="other">
+ <value>other</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onLoad">
+ <value>onLoad</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLinkRequired.extra.attrib"/>
+ </define>
+ <define name="SVG.XLinkEmbed.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkEmbed.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="embed">
+ <value>embed</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onLoad">
+ <value>onLoad</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLinkEmbed.extra.attrib"/>
+ </define>
+ <define name="SVG.XLinkReplace.extra.attrib">
+ <empty/>
+ </define>
+ <define name="SVG.XLinkReplace.attrib" combine="interleave">
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="simple">
+ <value>simple</value>
+ </attribute>
+ </optional>
+ <attribute name="xlink:href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="xlink:role">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:arcrole">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:title"/>
+ </optional>
+ <optional>
+ <attribute name="xlink:show" a:defaultValue="replace">
+ <choice>
+ <value>new</value>
+ <value>replace</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xlink:actuate" a:defaultValue="onRequest">
+ <value>onRequest</value>
+ </attribute>
+ </optional>
+ <ref name="SVG.XLinkReplace.extra.attrib"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/svg11.rng b/Master/texmf-dist/source/latex/stex/schema/rng/svg11.rng
new file mode 100644
index 00000000000..76600ad1f31
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/svg11.rng
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xml:lang="en" xmlns:ns1="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://relaxng.org/ns/structure/1.0">
+ <a:documentation>
+ RELAX NG schema for SVG 1.1
+ file: svg11.rng
+
+ This is SVG, a language for describing two-dimensional graphics in XML.
+
+ The Scalable Vector Graphics (SVG)
+ Copyright 2001, 2002 World Wide Web Consortium
+ (Massachusetts Institute of Technology, Institut National de
+ Recherche en Informatique et en Automatique, Keio University).
+ All Rights Reserved.
+
+ Permission to use, copy, modify and distribute this RELAX NG schema
+ for SVG and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright holders
+ nor the author make no representation about the suitability of this
+ RELAX NG schema for any purpose.
+
+ It is provided "as is" without expressed or implied warranty.
+
+ Author: Masayasu Ishikawa (mimasa@w3.org)
+ $Id: svg11.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
+
+ This is the driver file for version 1.1 of the SVG RELAX NG schema.
+
+ The DTD version is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ SYSTEM "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
+
+ Use this URI to identify the default namespace:
+
+ "http://www.w3.org/2000/svg"
+ </a:documentation>
+ <include href="svg-container-attrib.rng">
+ <a:documentation>
+ Container Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-viewport-attrib.rng">
+ <a:documentation>
+ Viewport Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-paint-attrib.rng">
+ <a:documentation>
+ Paint Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-opacity-attrib.rng">
+ <a:documentation>
+ Paint Opacity Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-graphics-attrib.rng">
+ <a:documentation>
+ Graphics Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-docevents-attrib.rng">
+ <a:documentation>
+ Document Events Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-graphevents-attrib.rng">
+ <a:documentation>
+ Graphical Element Events Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-animevents-attrib.rng">
+ <a:documentation>
+ Animation Events Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-xlink-attrib.rng">
+ <a:documentation>
+ XLink Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-extresources-attrib.rng">
+ <a:documentation>
+ External Resources Attribute Module
+ </a:documentation>
+ </include>
+ <include href="svg-structure.rng">
+ <a:documentation>
+ Structure Module (required)
+ </a:documentation>
+ </include>
+ <include href="svg-conditional.rng">
+ <a:documentation>
+ Conditional Processing Module
+ </a:documentation>
+ </include>
+ <include href="svg-image.rng">
+ <a:documentation>
+ Image Module
+ </a:documentation>
+ </include>
+ <include href="svg-style.rng">
+ <a:documentation>
+ Style Module
+ </a:documentation>
+ </include>
+ <include href="svg-shape.rng">
+ <a:documentation>
+ Shape Module
+ </a:documentation>
+ </include>
+ <include href="svg-text.rng">
+ <a:documentation>
+ Text Module
+ </a:documentation>
+ </include>
+ <include href="svg-marker.rng">
+ <a:documentation>
+ Marker Module
+ </a:documentation>
+ </include>
+ <include href="svg-profile.rng">
+ <a:documentation>
+ Color Profile Module
+ </a:documentation>
+ </include>
+ <include href="svg-gradient.rng">
+ <a:documentation>
+ Gradient Module
+ </a:documentation>
+ </include>
+ <include href="svg-pattern.rng">
+ <a:documentation>
+ Pattern Module
+ </a:documentation>
+ </include>
+ <include href="svg-clip.rng">
+ <a:documentation>
+ Clip Module
+ </a:documentation>
+ </include>
+ <include href="svg-mask.rng">
+ <a:documentation>
+ Mask Module
+ </a:documentation>
+ </include>
+ <include href="svg-filter.rng">
+ <a:documentation>
+ Filter Module
+ </a:documentation>
+ </include>
+ <include href="svg-cursor.rng">
+ <a:documentation>
+ Cursor Module
+ </a:documentation>
+ </include>
+ <include href="svg-hyperlink.rng">
+ <a:documentation>
+ Hyperlinking Module
+ </a:documentation>
+ </include>
+ <include href="svg-view.rng">
+ <a:documentation>
+ View Module
+ </a:documentation>
+ </include>
+ <include href="svg-script.rng">
+ <a:documentation>
+ Scripting Module
+ </a:documentation>
+ </include>
+ <include href="svg-animation.rng">
+ <a:documentation>
+ Animation Module
+ </a:documentation>
+ </include>
+ <include href="svg-font.rng">
+ <a:documentation>
+ Font Module
+ </a:documentation>
+ </include>
+ <include href="svg-extensibility.rng">
+ <a:documentation>
+ Extensibility Module
+ </a:documentation>
+ </include>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-applet.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-applet.rng
new file mode 100644
index 00000000000..5913d0b3339
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-applet.rng
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Applet Module -->
+ <define name="applet">
+ <element name="applet">
+ <ref name="applet.attlist"/>
+ <zeroOrMore>
+ <!-- No restrictions on mixed content in TREX. -->
+ <ref name="param"/>
+ </zeroOrMore>
+ <ref name="Flow.model"/>
+ </element>
+ </define>
+ <define name="applet.attlist">
+ <interleave>
+ <ref name="Core.attrib"/>
+ <attribute name="alt">
+ <ref name="Text.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="archive"/>
+ </optional>
+ <optional>
+ <attribute name="code"/>
+ </optional>
+ <optional>
+ <attribute name="codebase">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="object"/>
+ </optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="applet"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-attribs.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-attribs.rng
new file mode 100644
index 00000000000..c2f8edfa754
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-attribs.rng
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Common Attributes Module -->
+ <define name="id.attrib">
+ <optional>
+ <attribute name="id">
+ <ref name="ID.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="class.attrib">
+ <optional>
+ <attribute name="class">
+ <ref name="NMTOKENS.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="title.attrib">
+ <optional>
+ <attribute name="title">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Core.attrib">
+ <interleave>
+ <ref name="id.attrib"/>
+ <ref name="class.attrib"/>
+ <ref name="title.attrib"/>
+ </interleave>
+ </define>
+ <define name="lang.attrib">
+ <optional>
+ <attribute name="xml:lang">
+ <ref name="LanguageCode.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="I18n.attrib">
+ <ref name="lang.attrib"/>
+ </define>
+ <define name="Common.attrib">
+ <interleave>
+ <ref name="Core.attrib"/>
+ <ref name="I18n.attrib"/>
+ </interleave>
+ </define>
+ <define name="CommonIdRequired.attrib">
+ <interleave>
+ <attribute name="id">
+ <ref name="ID.datatype"/>
+ </attribute>
+ <ref name="class.attrib"/>
+ <ref name="title.attrib"/>
+ <ref name="I18n.attrib"/>
+ </interleave>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-base.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-base.rng
new file mode 100644
index 00000000000..468bfcd25d6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-base.rng
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Base Module -->
+ <define name="base">
+ <element name="base">
+ <ref name="base.attlist"/>
+ </element>
+ </define>
+ <define name="base.attlist">
+ <attribute name="href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </define>
+ <define name="head.content" combine="interleave">
+ <optional>
+ <ref name="base"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-basic-table.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-basic-table.rng
new file mode 100644
index 00000000000..ab51f61c17f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-basic-table.rng
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Basic Tables Module -->
+ <define name="table">
+ <element name="table">
+ <interleave>
+ <ref name="table.attlist"/>
+ <optional>
+ <ref name="caption"/>
+ </optional>
+ <oneOrMore>
+ <ref name="tr"/>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="table.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="summary">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="caption">
+ <element name="caption">
+ <ref name="caption.attlist"/>
+ <ref name="Inline.model"/>
+ </element>
+ </define>
+ <define name="caption.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="tr">
+ <element name="tr">
+ <interleave>
+ <ref name="tr.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="th"/>
+ <ref name="td"/>
+ </choice>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="tr.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="th">
+ <element name="th">
+ <interleave>
+ <ref name="th.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="th.attlist">
+ <ref name="Cell.attrib"/>
+ </define>
+ <define name="td">
+ <element name="td">
+ <interleave>
+ <ref name="td.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="td.attlist">
+ <ref name="Cell.attrib"/>
+ </define>
+ <define name="Cell.attrib">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="abbr">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="axis"/>
+ </optional>
+ <optional>
+ <attribute name="headers">
+ <ref name="IDREFS.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="scope.attrib"/>
+ <optional>
+ <attribute name="rowspan">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colspan">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="CellHAlign.attrib">
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CellVAlign.attrib">
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="scope.attrib">
+ <optional>
+ <attribute name="scope">
+ <choice>
+ <value>row</value>
+ <value>col</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="Block.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="table"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-bdo.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-bdo.rng
new file mode 100644
index 00000000000..0ae52c536d7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-bdo.rng
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Bi-directional Module -->
+ <define name="bdo">
+ <element name="bdo">
+ <interleave>
+ <ref name="bdo.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="bdo.attlist">
+ <interleave>
+ <ref name="Core.attrib"/>
+ <ref name="lang.attrib"/>
+ <ref name="dir.attrib"/>
+ </interleave>
+ </define>
+ <define name="dir.attrib">
+ <attribute name="dir">
+ <choice>
+ <value>ltr</value>
+ <value>rtl</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="I18n.attrib" combine="interleave">
+ <optional>
+ <ref name="dir.attrib"/>
+ </optional>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="bdo"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-datatypes.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-datatypes.rng
new file mode 100644
index 00000000000..21c1816c665
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-datatypes.rng
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- Datatypes Module -->
+ <!-- Length defined for cellpadding/cellspacing -->
+ <!-- nn for pixels or nn% for percentage length -->
+ <define name="Length.datatype">
+ <text/>
+ </define>
+ <!-- space-separated list of link types -->
+ <define name="LinkTypes.datatype">
+ <ref name="NMTOKENS.datatype"/>
+ </define>
+ <!-- single or comma-separated list of media descriptors -->
+ <define name="MediaDesc.datatype">
+ <text/>
+ </define>
+ <!-- pixel, percentage, or relative -->
+ <define name="MultiLength.datatype">
+ <text/>
+ </define>
+ <!-- one or more digits (NUMBER) -->
+ <define name="Number.datatype">
+ <text/>
+ </define>
+ <!-- integer representing length in pixels -->
+ <define name="Pixels.datatype">
+ <text/>
+ </define>
+ <!-- script expression -->
+ <define name="Script.datatype">
+ <text/>
+ </define>
+ <!-- textual content -->
+ <define name="Text.datatype">
+ <text/>
+ </define>
+ <!-- Imported Datatypes ................................ -->
+ <!-- a single character from [ISO10646] -->
+ <define name="Character.datatype">
+ <text/>
+ </define>
+ <!-- a character encoding, as per [RFC2045] -->
+ <define name="Charset.datatype">
+ <text/>
+ </define>
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+ <define name="Charsets.datatype">
+ <text/>
+ </define>
+ <!-- media type, as per [RFC2045] -->
+ <define name="ContentType.datatype">
+ <text/>
+ </define>
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+ <define name="ContentTypes.datatype">
+ <text/>
+ </define>
+ <!-- date and time information. ISO date format -->
+ <define name="Datetime.datatype">
+ <text/>
+ </define>
+ <!-- formal public identifier, as per [ISO8879] -->
+ <define name="FPI.datatype">
+ <text/>
+ </define>
+ <!-- a language code, as per [RFC1766] -->
+ <define name="LanguageCode.datatype">
+ <data type="language"/>
+ </define>
+ <!-- a Uniform Resource Identifier, see [URI] -->
+ <define name="URI.datatype">
+ <data type="anyURI"/>
+ </define>
+ <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+ <define name="URIs.datatype">
+ <text/>
+ </define>
+ <define name="NMTOKEN.datatype">
+ <data type="NMTOKEN"/>
+ </define>
+ <define name="NMTOKENS.datatype">
+ <data type="NMTOKENS"/>
+ </define>
+ <define name="ID.datatype">
+ <data type="ID"/>
+ </define>
+ <define name="IDREF.datatype">
+ <data type="IDREF"/>
+ </define>
+ <define name="IDREFS.datatype">
+ <data type="IDREFS"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-hypertext.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-hypertext.rng
new file mode 100644
index 00000000000..c926915bb7d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-hypertext.rng
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Hypertext Module -->
+ <!-- Depends on text module. -->
+ <define name="a">
+ <element name="a">
+ <interleave>
+ <ref name="a.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="a.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charset">
+ <ref name="Charset.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hreflang">
+ <ref name="LanguageCode.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rel">
+ <ref name="LinkTypes.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rev">
+ <ref name="LinkTypes.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accesskey">
+ <ref name="Character.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tabindex">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="a"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-image.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-image.rng
new file mode 100644
index 00000000000..562eae86c96
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-image.rng
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Image Module -->
+ <define name="img">
+ <element name="img">
+ <ref name="img.attlist"/>
+ </element>
+ </define>
+ <define name="img.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <attribute name="src">
+ <ref name="URI.datatype"/>
+ </attribute>
+ <attribute name="alt">
+ <ref name="Text.datatype"/>
+ </attribute>
+ <optional>
+ <attribute name="longdesc">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="img"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-inlstyle.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-inlstyle.rng
new file mode 100644
index 00000000000..887146be00c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-inlstyle.rng
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Inline Style Module -->
+ <define name="Core.attrib" combine="interleave">
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-link.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-link.rng
new file mode 100644
index 00000000000..309e66f38cb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-link.rng
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Link Module -->
+ <define name="link">
+ <element name="link">
+ <ref name="link.attlist"/>
+ </element>
+ </define>
+ <define name="link.attlist">
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="charset">
+ <ref name="Charset.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="href">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="hreflang">
+ <ref name="LanguageCode.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rel">
+ <ref name="LinkTypes.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rev">
+ <ref name="LinkTypes.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="media">
+ <ref name="MediaDesc.datatype"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="head.content" combine="interleave">
+ <zeroOrMore>
+ <ref name="link"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-list.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-list.rng
new file mode 100644
index 00000000000..81ae3ba03a1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-list.rng
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- List Module -->
+ <define name="dl">
+ <element name="dl">
+ <interleave>
+ <ref name="dl.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="dt"/>
+ <ref name="dd"/>
+ </choice>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="dl.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="dt">
+ <element name="dt">
+ <interleave>
+ <ref name="dt.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="dt.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="dd">
+ <element name="dd">
+ <interleave>
+ <ref name="dd.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="dd.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="ol">
+ <element name="ol">
+ <interleave>
+ <ref name="ol.attlist"/>
+ <oneOrMore>
+ <ref name="li"/>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="ol.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="ul">
+ <element name="ul">
+ <interleave>
+ <ref name="ul.attlist"/>
+ <oneOrMore>
+ <ref name="li"/>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="ul.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="li">
+ <element name="li">
+ <interleave>
+ <ref name="li.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="li.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="List.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="ul"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ol"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="dl"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Block.class" combine="interleave">
+ <ref name="List.class"/>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-object.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-object.rng
new file mode 100644
index 00000000000..118dbc6163e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-object.rng
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Object Module -->
+ <define name="object">
+ <element name="object">
+ <ref name="object.attlist"/>
+ <zeroOrMore>
+ <!-- No restrictions on mixed content in TREX. -->
+ <ref name="param"/>
+ </zeroOrMore>
+ <ref name="Flow.model"/>
+ </element>
+ </define>
+ <define name="object.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="declare">
+ <value>declare</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="classid">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="codebase">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="data">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="codetype">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="archive">
+ <ref name="URIs.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="standby">
+ <ref name="Text.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="name"/>
+ </optional>
+ <optional>
+ <attribute name="tabindex">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Inline.class" combine="interleave">
+ <zeroOrMore>
+ <ref name="object"/>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-param.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-param.rng
new file mode 100644
index 00000000000..22b8df19182
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-param.rng
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Param Module -->
+ <define name="param">
+ <element name="param">
+ <ref name="param.attlist"/>
+ </element>
+ </define>
+ <define name="param.attlist">
+ <interleave>
+ <ref name="id.attrib"/>
+ <attribute name="name"/>
+ <optional>
+ <attribute name="value"/>
+ </optional>
+ <optional>
+ <attribute name="valuetype">
+ <choice>
+ <value>data</value>
+ <value>ref</value>
+ <value>object</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <ref name="ContentType.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-table.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-table.rng
new file mode 100644
index 00000000000..89d5acc42a5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-table.rng
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Tables Module -->
+ <!--
+ This builds on the basic tables module, unlike with the DTD
+ implementation.
+ -->
+ <include href="xhtml-basic-table.rng">
+ <define name="table">
+ <element name="table">
+ <ref name="table.attlist"/>
+ <optional>
+ <ref name="caption"/>
+ </optional>
+ <choice>
+ <zeroOrMore>
+ <ref name="col"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="colgroup"/>
+ </zeroOrMore>
+ </choice>
+ <choice>
+ <group>
+ <optional>
+ <ref name="thead"/>
+ </optional>
+ <optional>
+ <ref name="tfoot"/>
+ </optional>
+ <oneOrMore>
+ <ref name="tbody"/>
+ </oneOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="tr"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="th">
+ <element name="th">
+ <interleave>
+ <ref name="th.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="td">
+ <element name="td">
+ <interleave>
+ <ref name="td.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="CellHAlign.attrib">
+ <interleave>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>center</value>
+ <value>right</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char">
+ <ref name="Character.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charoff">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="CellVAlign.attrib">
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ <value>baseline</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="scope.attrib">
+ <optional>
+ <attribute name="scope">
+ <choice>
+ <value>row</value>
+ <value>col</value>
+ <value>rowgroup</value>
+ <value>colgroup</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ </include>
+ <define name="table.attlist" combine="interleave">
+ <interleave>
+ <optional>
+ <attribute name="width">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="border">
+ <ref name="Pixels.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="frame.attrib"/>
+ <ref name="rules.attrib"/>
+ <optional>
+ <attribute name="cellspacing">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cellpadding">
+ <ref name="Length.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="col">
+ <element name="col">
+ <ref name="col.attlist"/>
+ </element>
+ </define>
+ <define name="col.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="span">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="MultiLength.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="colgroup">
+ <element name="colgroup">
+ <interleave>
+ <ref name="colgroup.attlist"/>
+ <zeroOrMore>
+ <ref name="col"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="colgroup.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="span">
+ <ref name="Number.datatype"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <ref name="MultiLength.datatype"/>
+ </attribute>
+ </optional>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="tbody">
+ <element name="tbody">
+ <interleave>
+ <ref name="tbody.attlist"/>
+ <oneOrMore>
+ <ref name="tr"/>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="tbody.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="thead">
+ <element name="thead">
+ <interleave>
+ <ref name="thead.attlist"/>
+ <oneOrMore>
+ <ref name="tr"/>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="thead.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="tfoot">
+ <element name="tfoot">
+ <interleave>
+ <ref name="tfoot.attlist"/>
+ <oneOrMore>
+ <ref name="tr"/>
+ </oneOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="tfoot.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <ref name="CellHAlign.attrib"/>
+ <ref name="CellVAlign.attrib"/>
+ </interleave>
+ </define>
+ <define name="frame.attrib">
+ <optional>
+ <attribute name="frame">
+ <choice>
+ <value>void</value>
+ <value>above</value>
+ <value>below</value>
+ <value>hsides</value>
+ <value>lhs</value>
+ <value>rhs</value>
+ <value>vsides</value>
+ <value>box</value>
+ <value>border</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="rules.attrib">
+ <optional>
+ <attribute name="rules">
+ <choice>
+ <value>none</value>
+ <value>groups</value>
+ <value>rows</value>
+ <value>cols</value>
+ <value>all</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-text.rng b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-text.rng
new file mode 100644
index 00000000000..ac6fb26901c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/schema/rng/xhtml-text.rng
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- Text Module -->
+ <define name="br">
+ <element name="br">
+ <interleave>
+ <ref name="br.attlist"/>
+ <empty/>
+ </interleave>
+ </element>
+ </define>
+ <define name="br.attlist">
+ <ref name="Core.attrib"/>
+ </define>
+ <define name="span">
+ <element name="span">
+ <interleave>
+ <ref name="span.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="span.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="abbr">
+ <element name="abbr">
+ <interleave>
+ <ref name="abbr.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="abbr.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="acronym">
+ <element name="acronym">
+ <interleave>
+ <ref name="acronym.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="acronym.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="cite">
+ <element name="cite">
+ <interleave>
+ <ref name="cite.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="cite.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="code">
+ <element name="code">
+ <interleave>
+ <ref name="code.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="code.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="dfn">
+ <element name="dfn">
+ <interleave>
+ <ref name="dfn.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="dfn.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="em">
+ <element name="em">
+ <interleave>
+ <ref name="em.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="em.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="kbd">
+ <element name="kbd">
+ <interleave>
+ <ref name="kbd.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="kbd.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="q">
+ <element name="q">
+ <interleave>
+ <ref name="q.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="q.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="cite">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="samp">
+ <element name="samp">
+ <interleave>
+ <ref name="samp.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="samp.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="strong">
+ <element name="strong">
+ <interleave>
+ <ref name="strong.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="strong.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="var">
+ <element name="var">
+ <interleave>
+ <ref name="var.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="var.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="div">
+ <element name="div">
+ <interleave>
+ <ref name="div.attlist"/>
+ <ref name="Flow.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="div.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="p">
+ <element name="p">
+ <interleave>
+ <ref name="p.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="p.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="address">
+ <element name="address">
+ <interleave>
+ <ref name="address.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="address.attlist">
+ <ref name="Common.attrib"/>
+ </define>
+ <define name="blockquote">
+ <element name="blockquote">
+ <interleave>
+ <ref name="blockquote.attlist"/>
+ <ref name="Block.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="blockquote.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="cite">
+ <ref name="URI.datatype"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="pre">
+ <element name="pre">
+ <interleave>
+ <ref name="pre.attlist"/>
+ <ref name="Inline.model"/>
+ </interleave>
+ </element>
+ </define>
+ <define name="pre.attlist">
+ <interleave>
+ <ref name="Common.attrib"/>
+ <optional>
+ <attribute name="xml:space">
+ <value>preserve</value>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="Block.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="address"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="blockquote"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="div"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="p"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="pre"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Inline.class">
+ <interleave>
+ <zeroOrMore>
+ <ref name="abbr"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="acronym"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="br"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="cite"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="code"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="dfn"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="em"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="kbd"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="q"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="samp"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="span"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="strong"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="var"/>
+ </zeroOrMore>
+ </interleave>
+ </define>
+ <define name="Inline.model">
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ </interleave>
+ </define>
+ <!-- This is redefined by the legacy module to include inlines. -->
+ <define name="Block.mix">
+ <ref name="Block.class"/>
+ </define>
+ <define name="Block.model">
+ <oneOrMore>
+ <ref name="Block.mix"/>
+ </oneOrMore>
+ </define>
+ <define name="Flow.model">
+ <interleave>
+ <text/>
+ <ref name="Inline.class"/>
+ <ref name="Block.class"/>
+ </interleave>
+ </define>
+</grammar>
diff --git a/Master/texmf-dist/source/latex/stex/sproof/sproof.dtx b/Master/texmf-dist/source/latex/stex/sproof/sproof.dtx
new file mode 100644
index 00000000000..ca5baa3660c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/sproof/sproof.dtx
@@ -0,0 +1,834 @@
+% \iffalse meta-comment
+% An Infrastructure for Structural Markup for Proofs
+% Copyright (C) 2004-2011 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/sproof/sproof.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{sproof}[2012/01/28 v1.0 Semantic Markup for Proofs]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,stex,float,moreverb}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: sproof.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/sproof/sproof.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{sproof.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{315}
+%
+% \changes{v0.9}{2005/06/14}{First Version with Documentation}
+% \changes{v0.9a}{2005/07/01}{Completed Documentation}
+% \changes{v0.9b}{2005/08/06}{Complete functionality and Updated Documentation}
+% \changes{v0.9c}{2006/01/13}{more packaging}
+% \changes{v0.9d}{2006/10/31}{made sproof.dtx independent of statements.dtx}
+% \changes{v0.9d}{2006/10/31}{revamped the proof end mark management}
+% \changes{v0.9e}{2008/10/11}{taking type seriously}
+% \changes{v0.9f}{2009/12/14}{changing to omd metadata framework}
+% \changes{v0.9f}{2008/12/14}{first steps to sref}
+% \changes{v1.0}{2011/01/23}{making proof step labels stylable}
+%
+% \GetFileInfo{sproof.sty}
+%
+% \MakeShortVerb{\|}
+%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\xml{\scsys{Xml}}
+% \def\mathml{\scsys{MathML}}
+% \def\omdoc{\scsys{OMDoc}}
+% \def\openmath{\scsys{OpenMath}}
+% \def\latexml{\scsys{LaTeXML}}
+% \def\perl{\scsys{Perl}}
+% \def\cmathml{Content-{\sc MathML}\index{Content {\sc MathML}}\index{MathML@{\sc MathML}!content}}
+% \def\activemath{\scsys{ActiveMath}}
+% \def\twin#1#2{\index{#1!#2}\index{#2!#1}}
+% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}}
+% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
+% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
+% \title{{\texttt{sproof.sty}}: Structural Markup for Proofs\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |sproof| package is part of the {\stex} collection, a version of {\TeX/\LaTeX} that
+% allows to markup {\TeX/\LaTeX} documents semantically without leaving the document
+% format, essentially turning {\TeX/\LaTeX} into a document format for mathematical
+% knowledge management (MKM).
+%
+% This package supplies macros and environment that allow to annotate the structure of
+% mathematical proofs in {\stex} files. This structure can be used by MKM systems for
+% added-value services, either directly from the {\sTeX} sources, or after translation.
+% \end{abstract}
+%
+% \newpage\tableofcontents\newpage
+%
+%\section{Introduction}\label{sec:sproof}
+%
+% The |sproof| ({\twintoo{semantic}{proofs}}) package supplies macros and environment that
+% allow to annotate the structure of mathematical proofs in {\stex} files. This structure
+% can be used by MKM systems for added-value services, either directly from the {\sTeX}
+% sources, or after translation. Even though it is part of the {\stex} collection, it can
+% be used independently, like it's sister package |statements|.
+%
+% {\stex} is a version of {\TeX/\LaTeX} that allows to markup {\TeX/\LaTeX} documents
+% semantically without leaving the document format, essentially turning {\TeX/\LaTeX} into
+% a document format for mathematical knowledge management (MKM).
+%
+% \begin{exfig}\scriptsize
+% \begin{verbatim}
+% \begin{sproof}[id=simple-proof,for=sum-over-odds]
+% {We prove that $\sum_{i=1}^n{2i-1}=n^{2}$ by induction over $n$}
+% \begin{spfcases}{For the induction we have to consider the following cases:}
+% \begin{spfcase}{$n=1$}
+% \begin{spfstep}[display=flow] then we compute $1=1^2$\end{spfstep}
+% \end{spfcase}
+% \begin{spfcase}{$n=2$}
+% \begin{sproofcomment}[display=flow]
+% This case is not really necessary, but we do it for the
+% fun of it (and to get more intuition).
+% \end{sproofcomment}
+% \begin{spfstep}[display=flow] We compute $1+3=2^{2}=4$.\end{spfstep}
+% \end{spfcase}
+% \begin{spfcase}{$n>1$}
+% \begin{spfstep}[type=assumption,id=ind-hyp]
+% Now, we assume that the assertion is true for a certain $k\geq 1$,
+% i.e. $\sum_{i=1}^k{(2i-1)}=k^{2}$.
+% \end{spfstep}
+% \begin{sproofcomment}
+% We have to show that we can derive the assertion for $n=k+1$ from
+% this assumption, i.e. $\sum_{i=1}^{k+1}{(2i-1)}=(k+1)^{2}$.
+% \end{sproofcomment}
+% \begin{spfstep}
+% We obtain $\sum_{i=1}^{k+1}{2i-1}=\sum_{i=1}^k{2i-1}+2(k+1)-1$
+% \begin{justification}[method=arith:split-sum]
+% by splitting the sum.
+% \end{justification}
+% \end{spfstep}
+% \begin{spfstep}
+% Thus we have $\sum_{i=1}^{k+1}{(2i-1)}=k^2+2k+1$
+% \begin{justification}[method=fertilize] by inductive hypothesis.\end{justification}
+% \end{spfstep}
+% \begin{spfstep}[type=conclusion]
+% We can \begin{justification}[method=simplify]simplify\end{justification}
+% the right-hand side to ${k+1}^2$, which proves the assertion.
+% \end{spfstep}
+% \end{spfcase}
+% \begin{spfstep}[type=conclusion]
+% We have considered all the cases, so we have proven the assertion.
+% \end{spfstep}
+% \end{spfcases}
+% \end{sproof}
+% \end{verbatim}
+% \vspace*{-.5cm}
+% \caption{A very explicit proof, marked up semantically}\label{fig:proof:src}
+% \end{exfig}
+%
+% We will go over the general intuition by way of our running example (see
+% Figure~\ref{fig:proof:src} for the source and Figure~\ref{fig:proof:result} for the
+% formatted result).\ednote{talk a bit more about proofs and their structure,... maybe
+% copy from OMDoc spec. }
+%
+% \section{The User Interface}
+%
+% \subsection{Package Options}\label{sec:user:options}
+%
+% The |sproof| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
+% this is set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details
+% and customization options).
+%
+% \subsection{Proofs and Proof steps}
+%
+% \DescribeEnv{sproof} The |proof| environment is the main container for proofs. It takes
+% an optional |KeyVal| argument that allows to specify the |id| (identifier) and |for|
+% (for which assertion is this a proof) keys. The regular argument of the |proof|
+% environment contains an introductory comment, that may be used to announce the proof
+% style. The |proof| environment contains a sequence of |\step|, |proofcomment|, and
+% |pfcases| environments that are used to markup the proof steps. The |proof| environment
+% has a variant |Proof|, which does not use the proof end marker. This is convenient, if a
+% proof ends in a case distinction, which brings it's own proof end marker with it.
+% \DescribeEnv{sProof} The |Proof| environment is a variant of |proof| that does not mark
+% the end of a proof with a little box; presumably, since one of the subproofs already has
+% one and then a box supplied by the outer proof would generate an otherwise empty line.
+% \DescribeMacro{\spfidea} The |\spfidea| macro allows to give a one-paragraph
+% description of the proof idea.
+%
+% For one-line proof sketches, we use the \DescribeMacro{spfsketch}|\spfsketch| macro,
+% which takes the |KeyVal| argument as |sproof| and another one: a natural language text
+% that sketches the proof.
+%
+% \DescribeEnv{spfstep} Regular proof steps are marked up with the |step| environment, which
+% takes an optional |KeyVal| argument for annotations. A proof step usually contains a
+% local assertion (the text of the step) together with some kind of evidence that this can
+% be derived from already established assertions.
+%
+% Note that both |\premise| and |\justarg| can be used with an empty second argument to
+% mark up premises and arguments that are not explicitly mentioned in the text.
+%
+% \begin{exfig}
+% \begin{sproof}[id=simple-proof,for=sum-over-odds]
+% {We prove that $\sum_{i=1}^n{2i-1}=n^{2}$ by induction over $n$}
+% \begin{spfcases}{For the induction we have to consider the following cases:}
+% \begin{spfcase}{$n=1$}
+% \begin{spfstep}[display=flow] then we compute $1=1^2$\end{spfstep}
+% \end{spfcase}
+% \begin{spfcase}{$n=2$}
+% \begin{sproofcomment}[display=flow]
+% This case is not really necessary, but we do it for the fun
+% of it (and to get more intuition).
+% \end{sproofcomment}
+% \begin{spfstep}[display=flow]
+% We compute $1+3=2^{2}=4$
+% \end{spfstep}
+% \end{spfcase}
+% \begin{spfcase}{$n>1$}
+% \begin{spfstep}[type=hypothesis,id=ind-hyp]
+% Now, we assume that the assertion is true for a certain $k\geq 1$, i.e.
+% $\sum_{i=1}^k{(2i-1)}=k^{2}$.
+% \end{spfstep}
+% \begin{sproofcomment}
+% We have to show that we can derive the assertion for $n=k+1$ from this
+% assumption, i.e. $\sum_{i=1}^{k+1}{(2i-1)}=(k+1)^{2}$.
+% \end{sproofcomment}
+% \begin{spfstep}[id=splitit]
+% We obtain $\sum_{i=1}^{k+1}{(2i-1)}=\sum_{i=1}^k{(2i-1)}+2(k+1)-1$
+% \begin{justification}[method=arith:split-sum]
+% by splitting the sum
+% \end{justification}
+% \end{spfstep}
+% \begin{spfstep}[id=byindhyp]
+% Thus we have $\sum_{i=1}^{k+1}{(2i-1)}=k^2+2k+1$
+% \begin{justification}[method=fertilize]
+% by \premise[ind-hyp]{inductive hypothesis}.
+% \end{justification}
+% \end{spfstep}
+% \begin{spfstep}[type=conclusion]
+% We can \begin{justification}[method=simplify-eq]
+% simplify the {\justarg[rhs]{right-hand side}}
+% \end{justification} to $(k+1)^2$, which proves the assertion.
+% \end{spfstep}
+% \end{spfcase}
+% \begin{spfstep}[type=conclusion]
+% We have considered all the cases, so we have proven the assertion.
+% \end{spfstep}
+% \end{spfcases}
+% \end{sproof}
+% \caption{The formatted result of the proof in Figure~\ref{fig:proof:src}}\label{fig:proof:result}
+% \end{exfig}
+%
+% \subsection{Justifications}
+%
+% \DescribeEnv{justification} This evidence is marked up with the |justification|
+% environment in the |sproof| package. This environment totally invisible to the formatted
+% result; it wraps the text in the proof step that corresponds to the evidence. The
+% environment takes an optional |KeyVal| argument, which can have the |method| key, whose
+% value is the name of a proof method (this will only need to mean something to the
+% application that consumes the semantic annotations). Furthermore, the justification can
+% contain ``premises'' (specifications to assertions that were used justify the step) and
+% ``arguments'' (other information taken into account by the proof method).
+%
+% \DescribeMacro{\premise} The |\premise| macro allows to mark up part of the text as
+% reference to an assertion that is used in the argumentation. In the example in
+% Figure~\ref{fig:proof:src} we have used the |\premise| macro to identify the inductive
+% hypothesis.
+%
+% \DescribeMacro{\justarg} The |\justarg| macro is very similar to |\premise| with the
+% difference that it is used to mark up arguments to the proof method. Therefore the
+% content of the first argument is interpreted as a mathematical object rather than as an
+% identifier as in the case of |\premise|. In our example, we specified that the
+% simplification should take place on the right hand side of the equation. Other examples
+% include proof methods that instantiate. Here we would indicate the substituted object in
+% a |\justarg| macro.
+%
+% \subsection{Proof Structure}
+%
+% \DescribeEnv{spfcases} The |pfcases| environment is used to mark up a proof by
+% cases. This environment takes an optional |KeyVal| argument for semantic annotations and
+% a second argument that allows to specify an introductory comment (just like in the
+% |proof| environment).
+%
+% \DescribeEnv{spfcase} The content of a |pfcases| environment are a sequence of case
+% proofs marked up in the |pfcase| environment, which takes an optional |KeyVal| argument
+% for semantic annotations. The second argument is used to specify the the description of
+% the case under consideration. The content of a |pfcase| environment is the same as that
+% of a |proof|, i.e. |step|s, |proofcomment|s, and |pfcases| environments.
+%
+% \DescribeEnv{sproofcomment} The |proofcomment| environment is much like a |step|, only
+% that it does not have an object-level assertion of its own. Rather than asserting some
+% fact that is relevant for the proof, it is used to explain where the proof is going,
+% what we are attempting to to, or what we have achieved so far. As such, it cannot be the
+% target of a |\premise|.
+%
+% \subsection{Proof End Markers}
+%
+% Traditionally, the end of a mathematical proof is marked with a little box at the end of
+% the last line of the proof (if there is space and on the end of the next line if there
+% isn't), like so:\sproofend
+%
+% The |sproof| package provides the \DescribeMacro{\sproofend}|\sproofend| macro for
+% this. If a different symbol for the proof end is to be used (e.g. {\sl{q.e.d}}), then
+% this can be obtained by specifying it using the
+% \DescribeMacro{\sProofEndSymbol}|\sProofEndSymbol| configuration macro (e.g. by specifying
+% |\sProofEndSymbol{q.e.d}|).
+%
+% Some of the proof structuring macros above will insert proof end symbols for sub-proofs,
+% in most cases, this is desirable to make the proof structure explicit, but sometimes
+% this wastes space (especially, if a proof ends in a case analysis which will supply its
+% own proof end marker). To suppress it locally, just set |proofend={}| in them or use use
+% |\sProofEndSymbol{}|.
+%
+% \subsection{Configuration of the Presentation}\label{sec:user:conf}
+%
+% Finally, we provide configuration hooks in Figure~\ref{fig:hooks} for the keywords in
+% proofs. These are mainly intended for package authors building on |statements|, e.g. for
+% multi-language support.\ednote{we might want to develop an extension
+% \texttt{sproof-babel} in the future.}.
+%\begin{figure}[ht]\centering
+% \begin{tabular}{|lll|}\hline
+% Environment & configuration macro & value\\\hline\hline
+% \texttt{proof} & \texttt{\textbackslash spf@proof@kw} & \makeatletter\spf@proof@kw\\\hline
+% \texttt{sketchproof} & \texttt{\textbackslash spf@sketchproof@kw} & \makeatletter\spf@proofsketch@kw\\\hline
+% \end{tabular}
+% \caption{Configuration Hooks for Semantic Proof Markup}\label{fig:hooks}
+% \end{figure}
+% The proof step labels can be customized via the
+% \DescribeMacro{\pstlabelstyle}|\pstlabelstyle| macro: |\pstlabelstyle{|\meta{style}|}|
+% sets the style; see Figure~\ref{fig:pstlabel} for an overview of styles. Package writers
+% can add additional styles by adding a macro |\pst@make@label@|\meta{style} that takes
+% two arguments: a comma-separated list of ordinals that make up the prefix and the current
+% ordinal. Note that comma-separated lists can be conveniently iterated over by the
+% {\LaTeX} |\@for|\ldots|:=|\ldots|\do{|\ldots|}| macro; see Figure~\ref{fig:pstlabel} for
+% examples.
+%
+%\begin{figure}[ht]\centering\makeatletter\small
+% \begin{tabular}{|lll|}\hline
+% style & example& configuration macro\\\hline\hline
+% \texttt{long} & \pst@make@label@long{0,8,1}{5} & \verb|\def\pst@make@label@long#1#2{\@for\@I:=#1\do{\@I.}#2}|\\\hline
+% \texttt{angles} & \pst@make@label@angles{0,8,1}{5} & \verb|\def\pst@make@label@angles#1#2|\\
+% &&\quad\verb|{\ensuremath{\@for\@I:=#1\do{\rangle}}#2}|\\\hline
+% \texttt{short} & \pst@make@label@short{0,8,1}{5} & \verb|\def\pst@make@label@short#1#2{#2}|\\\hline
+% \texttt{empty} & \pst@make@label@empty{0,8,1}{5} & \verb|\def\pst@make@label@empty#1#2{}|\\\hline
+% \end{tabular}
+% \caption{Configuration Proof Step Label Styles}\label{fig:pstlabel}
+% \end{figure}
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the TRAC.
+% \begin{compactenum}
+% \item The numbering scheme of proofs cannot be changed. It is more geared for teaching
+% proof structures (the author's main use case) and not for writing papers.\lec{reported
+% by Tobias Pfeiffer; see \tracissue{1658}} (fixed)
+% \item currently proof steps are formatted by the {\LaTeX} |description| environment. We
+% would like to configure this, e.g. to use the |inparaenum| environment for more
+% condensed proofs. I am just not sure what the best user interface would be I can
+% imagine redefining an internal environment |spf@proofstep@list| or adding a key
+% |prooflistenv| to the |proof| environment that allows to specify the environment
+% directly. Maybe we should do both.
+% \end{compactenum}
+%
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+% \newpage
+%
+% \section{The Implementation}
+%
+% The |sproof| package generates to files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$}} and
+% {\textsf{$\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% We first set up the Perl Packages for {\latexml}
+%
+% \begin{macrocode}
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+RequirePackage('sref');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{need an implementation for {\latexml}}
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\ProcessOptions
+%</package>
+%<*ltxml>
+DeclareOption('showmeta','');
+%</ltxml>
+% \end{macrocode}
+%
+% Then we make sure that the |sref| package is loaded~\ctancite{Kohlhase:sref}.
+% \begin{macrocode}
+%<*package>
+\RequirePackage{sref}
+%</package>
+% \end{macrocode}
+%
+% \subsection{Proofs}\label{sec:impl:proofs}
+%
+% We first define some keys for the |proof| environment.
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{spf}
+\addmetakey*{spf}{display}
+\addmetakey{spf}{for}
+\addmetakey{spf}{from}
+\addmetakey*[\sproof@box]{spf}{proofend}
+\addmetakey{spf}{type}
+\addmetakey*{spf}{title}
+\addmetakey{spf}{continues}
+\addmetakey{spf}{functions}
+%</package>
+% \end{macrocode}
+%
+% \begin{macro}{\spf@flow}
+% We define this macro, so that we can test whether the |display| key has the value |flow|
+% \begin{macrocode}
+%<package>\def\spf@flow{flow}
+% \end{macrocode}
+% \end{macro}
+%
+% For proofs, we will have to have deeply nested structures of enumerated list-like
+% environments. However, {\LaTeX} only allows |enumerate| environments up to nesting depth
+% 4 and general list environments up to listing depth 6. This is not enough for us.
+% Therefore we have decided to go along the route proposed by Leslie Lamport to use a
+% single top-level list with dotted sequences of numbers to identify the position in the
+% proof tree. Unfortunately, we could not use his |pf.sty| package directly, since it does
+% not do automatic numbering, and we have to add keyword arguments all over the place, to
+% accomodate semantic information.
+%
+% \begin{environment}{pst@with@label}
+% This environment manages\footnote{This gets the labeling right but only works 8 levels
+% deep} the path labeling of the proof steps in the description environment of the
+% outermost |proof| environment. The argument is the label prefix up to now; which we
+% cache in |\pst@label| (we need evaluate it first, since are in the right place
+% now!). Then we increment the proof depth which is stored in |\count10| (lower counters
+% are used by {\TeX} for page numbering) and initialize the next level counter
+% |\count\count10| with 1. In the end call for this environment, we just decrease the
+% proof depth counter by 1 again.
+% \begin{macrocode}
+%<*package>
+\newenvironment{pst@with@label}[1]%
+{\edef\pst@label{#1}\advance\count10 by 1\count\count10=1}
+{\advance\count10 by -1}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\the@pst@label}
+% |\the@pst@label| evaluates to the current step label.
+% \begin{macrocode}
+\def\the@pst@label{\pst@make@label\pst@label{\number\count\count10}}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macro}{\pstlabelstyle}
+% |\pstlabelstyle| just sets the |\pst@make@label| macro according to the style.
+% \begin{macrocode}
+\def\pst@make@label@long#1#2{\@for\@I:=#1\do{\@I.}#2}
+\def\pst@make@label@angles#1#2{\ensuremath{\@for\@I:=#1\do{\rangle}}#2}
+\def\pst@make@label@short#1#2{#2}
+\def\pst@make@label@empty#1#2{}
+\def\pstlabelstyle#1{\def\pst@make@label{\@nameuse{pst@make@label@#1}}}
+\pstlabelstyle{long}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macro}{\next@pst@label}
+% |\next@pst@label| increments the step label at the current level.
+% \begin{macrocode}
+\def\next@pst@label{\global\advance\count\count10 by 1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\sproofend}
+% This macro places a little box at the end of the line if there is space, or at the
+% end of the next line if there isn't
+% \begin{macrocode}
+\def\sproof@box{\hbox{\vrule\vbox{\hrule width 6 pt\vskip 6pt\hrule}\vrule}}
+\def\spf@proofend{\sproof@box}
+\def\sproofend{\ifx\spf@proofend\@empty\else\hfil\null\nobreak\hfill\spf@proofend\par\smallskip\fi}
+\def\sProofEndSymbol#1{\def\sproof@box{#1}}
+%</package>
+%<ltxml>DefConstructor('\sproofend',"");
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{spf@*@kw}
+% \begin{macrocode}
+%<*package>
+\def\spf@proofsketch@kw{Proof Sketch}
+\def\spf@proof@kw{Proof}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{spfsketch}
+% \begin{macrocode}
+%<*package>
+\newcommand{\spfsketch}[2][]{\metasetkeys{spf}{#1}\sref@target
+\ifx\spf@display\spf@flow\else{\stDMemph{\ifx\spf@type\@empty\spf@proofsketch@kw\else\spf@type\fi}:}\fi{ #2}%
+\sref@label@id{this \ifx\spf@type\@empty\spf@proofsketch@kw\else\spf@type\fi}}
+%</package>
+%<*ltxml>
+DefConstructor('\spfsketch OptionalKeyVals:pf{}',
+ "<omdoc:proof "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n"
+ . "?#2(<omdoc:omtext><omdoc:CMP>#2\n)()"
+ . "</omdoc:proof>\n");
+DefConstructor('\sProofEndSymbol {}','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{sproof}
+% In this environment, we initialize the proof depth counter |\count10| to 10, and set
+% up the description environment that will take the proof steps. At the end of the
+% proof, we position the proof end into the last line.
+% \begin{macrocode}
+%<*package>
+\newenvironment{spf@proof}[2][]{\metasetkeys{spf}{#1}\sref@target
+\count10=10
+\ifx\spf@display\spf@flow\else{\stDMemph{\ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi}:}\fi{ #2}%
+\sref@label@id{this \ifx\spf@type\@empty\spf@proof@kw\else\spf@type\fi}
+\def\pst@label{}\newcount\pst@count% initialize the labeling mechanism
+\begin{description}\begin{pst@with@label}{P}}
+{\end{pst@with@label}\end{description}}
+\newenvironment{sproof}[2][]{\begin{spf@proof}[#1]{#2}}{\sproofend\end{spf@proof}}
+\newenvironment{sProof}[2][]{\begin{spf@proof}[#1]{#2}}{\end{spf@proof}}
+%</package>
+%<*ltxml>
+DefEnvironment('{sproof} OptionalKeyVals:pf{}',
+ "<omdoc:proof "
+ . "?&KeyVal(#1,'for')(for='&hash_wrapper(&KeyVal(#1,'for'))')()"
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n"
+ . "?#2(<omdoc:omtext>"
+ . "<omdoc:CMP>#2</omdoc:CMP>"
+ . "</omdoc:omtext>\n)()"
+ . "#body"
+ . "</omdoc:proof>\n");
+DefMacro('\sProof','\sproof');
+DefMacro('\endsProof','\endsproof');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{spfidea}
+% \begin{macrocode}
+%<*package>
+\newcommand{\spfidea}[2][]{\metasetkeys{spf}{#1}%
+\stDMemph{\ifx\spf@type\@empty{Proof Idea}\else\spf@type\fi:} #2\sproofend}
+%</package>
+%<*ltxml>
+DefConstructor('\spfidea OptionalKeyVals:pf {}',
+ "<omdoc:proof "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()"
+ . "?&KeyVal(#1,'for')(for='&hash_wrapper(&KeyVal(#1,'for'))')()>\n"
+ . "<omdoc:omtext><omdoc:CMP>#2</omdoc:omtext>\n"
+ . "</omdoc:proof>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% The next two environments (proof steps) and comments, are mostly semantical, they take
+% |KeyVal| arguments that specify their semantic role. In draft mode, they read these
+% values and show them. If the surrounding proof had |display=flow|, then no new |\item| is
+% generated, otherwise it is. In any case, the proof step number (at the current level) is
+% incremented.
+% \begin{environment}{spfstep}
+% \begin{macrocode}
+%<*package>
+\newenvironment{spfstep}[1][]{\metasetkeys{spf}{#1}
+\ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi
+\ifx\spf@title\@empty\else{(\stDMemph{\spf@title})}\fi}
+{\next@pst@label}
+%</package>
+%<*ltxml>
+DefEnvironment('{spfstep} OptionalKeyVals:pf',
+ "<omdoc:derive "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>"
+ . "<omdoc:CMP>#body</omdoc:derive>\n",
+ beforeConstruct=>sub {
+ $_[0]->maybeCloseElement('omdoc:CMP');
+ });#$
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{sproofcomment}
+% \begin{macrocode}
+%<*package>
+\newenvironment{sproofcomment}[1][]{\metasetkeys{spf}{#1}
+\ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi}
+{\next@pst@label}
+%</package>
+%<*ltxml>
+DefEnvironment('{sproofcomment} OptionalKeyVals:pf',
+ "<omdoc:omtext "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>"
+ . "<omdoc:CMP>#body</omdoc:CMP>"
+ . "</omdoc:omtext>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% The next two environments also take a |KeyVal| argument, but also a regular one, which
+% contains a start text. Both environments start a new numbered proof level.
+%
+% \begin{environment}{spfcases}
+% In the |pfcases| environment, the start text is displayed as the first comment of the
+% proof.
+% \begin{macrocode}
+%<*package>
+\newenvironment{spfcases}[2][]{\metasetkeys{spf}{#1}
+\def\@test{#2}\ifx\@test\empty\else
+\ifx\spf@display\spf@flow {#2}\else\item[\the@pst@label]{#2} \fi\fi
+\begin{pst@with@label}{\pst@label,\number\count\count10}}
+{\end{pst@with@label}\next@pst@label}
+%</package>
+%<*ltxml>
+DefEnvironment('{spfcases} OptionalKeyVals:pf {}',
+ "<omdoc:derive "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n"
+ . "<omdoc:CMP>#2</omdoc:CMP>\n"
+ . "<omdoc:method xref='#proof-by-cases'>#body</omdoc:method>"
+ . "</omdoc:derive>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{spfcase}
+% In the |pfcase| environment, the start text is displayed specification of the case
+% after the |\item|
+% \begin{macrocode}
+%<*package>
+\newenvironment{spfcase}[2][]{\metasetkeys{spf}{#1}
+\ifx\spf@display\spf@flow\else\item[\the@pst@label]\fi
+\def\@test{#2}\ifx\@test\@empty\else{\stDMemph{#2}:}\fi
+\begin{pst@with@label}{\pst@label,\number\count\count10}}
+{\ifx\spf@display\spf@flow\else\sproofend\fi\end{pst@with@label}\next@pst@label}
+%</package>
+%<*ltxml>
+DefEnvironment('{spfcase} OptionalKeyVals:pf{}',
+ "<omdoc:proof "
+ . "?&defined(&KeyVal(#1,'id'))(xml:id='&KeyVal(#1,'id')')()>\n"
+ . "?#2(<omdoc:omtext>"
+ . "<omdoc:CMP>#2</omdoc:CMP>"
+ . "</omdoc:omtext>\n)()"
+ . "#body"
+ . "</omdoc:proof>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{subproof}
+% In the |subproof| environment, a new (lower-level) proof environment is
+% started.\ednote{document this above}
+% \begin{macrocode}
+%<*package>
+\newenvironment{subproof}[1][]%
+{\begin{pst@with@label}{\pst@label,\number\count\count10}}
+{\ifx\spf@display\spf@flow\else\sproofend\fi\end{pst@with@label}}
+%</package>
+%<*ltxml>
+DefEnvironment('{subproof}[]',
+ "<omdoc:derive>"
+ . "?#1(<omdoc:CMP>#1</omdoc:CMP>)()"
+ . "<omdoc:method>"
+ . "<omdoc:proof>\n #body\n</omdoc:proof>"
+ . "</omdoc:method>"
+ ."</omdoc:derive>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Justifications}
+%
+% We define the actions that are undertaken, when the keys for justifications are
+% encountered. Here this is very simple, we just define an internal macro with the value,
+% so that we can use it later.
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{just}
+\addmetakey{just}{method}
+\addmetakey{just}{premises}
+\addmetakey{just}{args}
+%</package>
+%<*ltxml>
+DefKeyVal('just','id','Semiverbatim');
+DefKeyVal('just','method','Semiverbatim');
+DefKeyVal('just','premises','Semiverbatim');
+DefKeyVal('just','args','Semiverbatim');
+%</ltxml>
+% \end{macrocode}
+%
+% The next three environments and macros are purely semantic, so we ignore the keyval
+% arguments for now and only display the content.\ednote{need to do something about the
+% premise in draft mode.}
+%
+% \begin{environment}{justification}
+% \begin{macrocode}
+%<*package>
+\newenvironment{justification}[1][]{}{}
+%</package>
+%<*ltxml>
+sub extractBodyText {
+ my ($box, $remove) = @_;
+ my $str = '';
+ my @boxes = $box->unlist;
+ foreach my $b(@boxes) {
+ my $s = '';
+ if ($b =~ /LaTeXML::Whatsit/) {
+ my $body = $b->getBody;
+ $s = $body ? extractBodyText($body, $remove) : '';
+ } elsif ($b =~ /LaTeXML::Box/) {
+ $s = $b->toString || '';
+ @{$b}[0] = '' if $remove; }
+ $str .= $s; }
+ $str =~ s/\s+/ /g;
+ $str; }
+
+DefEnvironment('{justification} OptionalKeyVals:just', sub {
+ my ($doc, $keys, %props) = @_;
+ my $text = extractBodyText($props{body}, 1);
+ my $node = LookupValue('_LastSeenCMP');
+ #$node->appendText($text) if $node;
+ my $method = $keys ? $keys->getValue('method') : undef;
+ $doc->openElement("omdoc:method", $method ? (xref => $method) : ());
+ $doc->absorb($props{body}) if $props{body};
+ $doc->closeElement("omdoc:method");
+ return; });
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\premise}
+% \begin{macrocode}
+%<*package>
+\newcommand{\premise}[2][]{#2}
+%</package>
+%<*ltxml>
+DefMacro('\premise[]{}', sub {
+ my ($xref, $text) = ($_[1], $_[2]);
+ my @res = (T_CS('\premise@content'));
+ push(@res, T_OTHER('['), $xref->unlist, T_OTHER(']')) if $xref;
+ push(@res, T_SPACE, $text->unlist) if $text;
+ @res; });
+DefConstructor('\premise@content[]',
+ "<omdoc:premise xref='#1'/>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\justarg}
+% the |\justarg| macro is purely semantic, so we ignore the keyval arguments for now and
+% only display the content.
+% \begin{macrocode}
+%<*package>
+\newcommand{\justarg}[2][]{#2}
+%</package>
+%<*ltxml>
+DefMacro('\justarg[]{}', sub { (($_[1] ? $_[1]->unlist : ()),
+ T_SPACE, $_[2]->unlist, T_SPACE); });
+Tag('omdoc:derive', afterClose=>sub {
+ my ($doc, $node) = @_;
+ my @children = grep($_->nodeType == XML_ELEMENT_NODE, $node->childNodes);
+ my $firstCMP = undef;
+ foreach my $child(@children) {
+ next unless ($child->localname || '') eq 'CMP';
+ if ($child->hasChildNodes()) {
+ next unless $#{$child->childNodes} == 0;
+ next unless $child->firstChild->nodeType == XML_TEXT_NODE; }
+
+ if ($firstCMP) {
+ $firstCMP->appendText($child->textContent);
+ $node->removeChild($child);
+ } else { $firstCMP = $child; }
+ }
+ });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Providing IDs for {\omdoc} Elements}\label{sec:impl:ids}
+%
+% To provide default identifiers, we tag all {\omdoc}
+% elements that allow |xml:id| attributes by executing the |numberIt| procedure from |omdoc.sty.ltxml|.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:proof',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:derive',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:method',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:premise',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:derive',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+%
+% \section{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% LocalWords: GPL structuresharing STR sproof dtx CPERL keyval methodfalse env
+% LocalWords: methodtrue envtrue medhodtrue DefKeyVal Semiverbatim omdoc args
+% LocalWords: DefEnvironment OptionalKeyVals KeyVal omtext DefConstructor str
+% LocalWords: proofidea KeyVal pfstep DefCMPEnvironment KeyVal proofcomment eq
+% LocalWords: KeyVal pfcases KeyVal pfcase KeyVal extractBodyText unlist elsif
+% LocalWords: foreach getBody toString str str str LookupValue LastSeenCMP Thu
+% LocalWords: appendText getValue undef openElement closeElement DefMacro omd
+% LocalWords: afterClose nodeType childNodes firstCMP localname hasChildNodes
+% LocalWords: firstChild textContent removeChild iffalse kohlhase sref scsys
+% LocalWords: sproofs.sty sc sc mathml openmath latexml cmathml activemath geq
+% LocalWords: twintoo atwin atwintoo texttt fileversion maketitle stex newpage
+% LocalWords: tableofcontents newpage exfig scriptsize vspace ednote spfidea
+% LocalWords: spfidea spfsketch spfsketch spfstep justarg spfcases spfcase rhs
+% LocalWords: sproofcomment ind-hyp splitit arith byindhyp sproofend proofend
+% LocalWords: printbibliography textsf langle textsf langle ltxml ctancite spf
+% LocalWords: srefaddidkey pf.sty newenvironment hbox vrule vbox ifx showmeta
+% LocalWords: hrule vskip hrule vrule hfil nobreak hfill smallskip newcommand
+% LocalWords: stDMemph newcount endsproof xref doctex showmeta hline lec ldots
+% LocalWords: textbackslash makeatletter sketchproof compactenum tracissue
+% LocalWords: metakeys addmetakey metasetkeys stylable pstlabelstyle pstlabel
+% LocalWords: pstlabelstyle pstlabelstyle ldots ldots ensuremath inparaenum
+% LocalWords: nameuse prooflistenv
diff --git a/Master/texmf-dist/source/latex/stex/sproof/sproof.ins b/Master/texmf-dist/source/latex/stex/sproof/sproof.ins
new file mode 100644
index 00000000000..639af148fdc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/sproof/sproof.ins
@@ -0,0 +1,38 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex sproof.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{sproof.sty}{\from{sproof.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{sproof.sty.ltxml}{\from{sproof.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/sref/sref.dtx b/Master/texmf-dist/source/latex/stex/sref/sref.dtx
new file mode 100644
index 00000000000..dca5ed8371e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/sref/sref.dtx
@@ -0,0 +1,850 @@
+% \iffalse meta-comment
+% A LaTeX Class and Package for Semantic Cross-Referencing
+% Copyright (c) 2009 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/sref/sref.dtx $
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{sref}[2012/01/28 v1.0 Semantic Cross-References]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{stex-logo,sref}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: sref.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/sref/sref.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\newcommand\tracissue[1]{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{sref.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{316}
+%
+% \changes{v0.5}{2008/03/28}{split off from omdoc.sty}
+% \changes{v0.6}{2009/12/07}{introducing sequation}
+% \changes{v0.9}{2009/07/14}{using omd for metadata}
+% \changes{v1.0}{2011/12/20}{adding \texttt{\textbackslash sreflabel}}
+%
+% \GetFileInfo{sref.sty}
+%
+% \MakeShortVerb{\|}
+%
+% \def\omdoc{OMDoc}
+% \def\latexml{{\LaTeX}ML}
+% \title{{\texttt{sref.sty}}: Semantic Cross-Referencing in {\LaTeX}\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |sref| package is part of the {\sTeX} collection, a version of {\TeX/\LaTeX} that
+% allows to markup {\TeX/\LaTeX} documents semantically without leaving the document
+% format, essentially turning {\TeX/\LaTeX} into a document format for mathematical
+% knowledge management (MKM).
+%
+% The |sref| package supplies an for semantic cross-referencing over multiple documents.
+% \end{abstract}
+%
+%\tableofcontents\newpage
+%
+% \section{Introduction}\label{sec:intro}
+%
+% The automatic computation of cross-references is one of the traditional strong points of
+% {\LaTeX}. However, cross-referencing is limited to labels in the current document
+% only. Cross-referencing between multiple documents in a jointly developed document
+% collection is not easy to achieve in the {\LaTeX} processing model, which reads files
+% sequentially and lacks a path concept.
+%
+% The |sref| package is mainly aimed at package developers. It supplies the internal
+% macros that can be used to make document structuring elements cross-referencable. The
+% general strategy here is to equip the document structuring macros with an
+% \DescribeMacro{id}|id| key, so that the author can specify meaningful ones, but to let
+% the transformation give default ones if the author did not. The value of the |id| key
+% can also be used for cross-referencing like the |\label|/|\ref| mechanism in
+% {\LaTeX}. We implement an independent referencing mechanism, since the referencing model
+% is geared more towards referencing text fragments than text fragment labels like section
+% numbers. Therefore we let the referenced fragments define the reference text much like
+% the |\autoref| macro from |\hpyerref|.
+%
+% \section{The User Interface}\label{sec:user}
+%
+% This package is currently mainly meaningful in the context of the {\sTeX} collection,
+% since all cross-referencable macros and environments must be extended to know about their
+% referencing mechanism. We explain the user interface in \sref{sucrossref}. To
+% port the functionality to other {\LaTeX} classes and packages, they have to be upgraded
+% via the API in \sref{supackage-authors}.
+%
+% \subsection{Package Options}\label{sec:user:options}
+%
+% The |sref| package has the \DescribeMacro{extrefs}|extrefs| package option, which can be
+% set to activate multifile support (see \sref{suinterdoc}). If the
+% \DescribeMacro{showmeta}|showmeta| is set, then the metadata keys are shown
+% (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
+%
+% \subsection{Cross-Referencing}\sreflabel{Section}{sucrossref}
+%
+% The \DescribeMacro{\sref}|\sref{|\meta{id}|}| macro is the main cross-referencing macro,
+% see Figure~\ref{fig:mysection} for an example. Depending on the whether macro or
+% environment marking up the respective document fragment carries the key/value pair
+% |id=|\meta{id} the cross-reference will expand to ``Section 2.1'' or ``this remark'',
+% both carrying hyper-references. The |\sref| macro takes an optional argument that allows
+% to specify a link text that overrides the auto-generated one.
+%
+% \begin{exfig}
+% \begin{verbatim}
+% \mysection[id=foo]{#2}
+% ... \sref{foo} ...
+% \end{verbatim}
+% \vspace*{-1.5em}
+% \caption{Semantic Crossreferencing}\label{fig:mysection}
+% \end{exfig}
+%
+% The \DescribeMacro{\sreflabel}|\sreflabel|\footnote{It would have been more natural to
+% name the macro \texttt{slabel}, but this is overwritten by other packages without
+% warning.} macro is a variant to the |\label| macro provided by {\LaTeX} proper. It takes
+% two arguments, the first one is a classification (used in |\sref|) and the second one
+% the identifier.
+%
+% The
+% \DescribeMacro{\srefs}|\srefl{|\meta{id\textsuperscript{1}}|}{|\meta{id\textsuperscript{2}}|}|
+% is a variant it |\sref|, only that it allows to reference two semantic objects and
+% expands to ``\meta{reference\textsuperscript{1}} and
+% \meta{reference\textsuperscript{2}}''. \DescribeMacro{\srefl}|\srefl{|\meta{id\textsuperscript{1}}|}{|\meta{id\textsuperscript{n}}|}|
+% is similar, but for ranges; it expands to ``\meta{reference\textsuperscript{1}} to
+% \meta{reference\textsuperscript{n}}''. Its use should be restricted to cases, where the
+% types of objects references are homogenous.
+%
+% Finally, there is a variant \DescribeMacro{\spageref}|\spageref| that only outputs the
+% page number of the referenced object. It can be used in cases where no hyper-referencing
+% is present. It uses the macro \DescribeMacro{\sref@page@label}|\sref@page@label| for
+% styling the page reference. Redefining this will allows to customize this. The default
+% setting is
+% \begin{verbatim}
+% \newcommand{\sref@page@label}[1]{p.~{#1}}
+% \end{verbatim}
+%
+% \subsection{An API for Package Authors}\sreflabel{Section}{supackage-authors}
+%
+% To make use of the |sref| package, the package must define the document structuring
+% infrastructure using the |sref| internal macros. The {\sTeX} packages already does this,
+% so we make an example here for a slightly upgraded sectioning command in
+% Figure~\ref{fig:mysection:setup}. The first three lines define the keys for the keyval
+% attribute of the |\mysection| command using the infrastructure supplied by the |omd|
+% package~\ctancite{Kohlhase:metakeys} (remember the |\RequirePackage{metakeys}|). The first two just
+% initialize the keys to save the key values in internal macros, and the |\metasetkeys|
+% activates the keys when reading the keyval argument. The
+% \DescribeMacro{\srefaddidkey}|\srefaddidkey| macro is a variant of |\addmetakey| macro
+% supplied by the |sref| package that sets up the keys to set the
+% \DescribeMacro{\sref@id}|\sref@id| register for later use by the |sref|
+% infrastructure. Note that the |\srefaddidkey| macro uses the |prefix| key to
+% systematically construct prefixed identifiers. This can be useful in particular for
+% sectioning commands.
+%
+% \begin{exfig}
+% \begin{verbatim}
+% \addmetakey{sec}{short}
+% \addmetakey[black]{sec}{color}
+% \srefaddidkey[prefix=sec.]{sec}
+% \newcommand{\mysection}[2][]{\metasetkeys{#1}\sref@target\color{\sec@color}
+% \section[\sec@short]{#2}\sref@label@id{Section \thesection}}
+% \end{verbatim}
+% \vspace*{-1.5em}
+% \caption{A slightly upgraded sectioning command}\label{fig:mysection:setup}
+% \end{exfig}
+%
+% In this situation, the |\mysection| macro processes the optional argument with
+% |\metasetkeys| and then sets the color of the section. The
+% \DescribeMacro{\sref@target}|\sref@target| sets up the hypertarget for the |hyperref|
+% package to use. Then we use the regular |\section| command, and we use the
+% \DescribeMacro{\sref@label@id}|\sref@label@id| macro to define the label that the
+% |\sref| macro will use for cross-referencing.
+%
+% Note that the use of the straight use of the label ``Section'', which will be written
+% into the auxiliary files is bad practice since it is not configurable. It would be much
+% better to make it configurable via a presentation macro like |\my@section@label| in
+% Figure~\ref{fig:mysection:configurable}. Then translators or even the user could redefine
+% the |\my@section@label| to adapt them to their needs.
+%
+% \begin{exfig}
+% \begin{verbatim}
+% \newcommand{\my@section@label}[1]{Section~{#1}}
+% \newcommand{\mysection}[2][]{\metasetkeys{#1}\sref@target\color{\sec@color}
+% \section[\sec@short]{#2}\sref@label@id{\my@section@label\thesection}}
+% \end{verbatim}
+% \vspace*{-1.5em}
+% \caption{A Sectioning Command with Configurable Label}\label{fig:mysection:configurable}
+% \end{exfig}
+%
+% \subsection{Inter-Document Cross-Referencing}\sreflabel{Section}{suinterdoc}
+%
+% |sref.sty| provides inter-document cross-referencing. The use case is simple: we want to
+% have a document collection (e.g. a book with conference proceedings), but also want to
+% be able format the individual documents separately, and still have meaningful
+% cross-references. To show off the possibilities, let us assume that we have a book with
+% two separate papers, which we put into separate directories |idc| and |scr| to minimize
+% interference between the authors Jane Doe and John Bull. To achieve this, we would set
+% up paper driver files |main.tex| like the one in Figure~\ref{fig:paper-driver} in the
+% two directories. These use the \DescribeMacro{\makeextrefs}|\makeextrefs| macro, which
+% causes the |sref| package to generate a {\emph{external references file}}
+% |main.refs|. Note that the |\makeextrefs| macros reads the previous |main.refs| file so
+% that forward-referencing is possible (in the pass after a reference was labeled).
+%
+% \begin{exfig}
+% \begin{verbatim}
+% \documentclass{article}
+% \usepackage[extrefs]{sref}
+% \makeextrefs{idc}
+% \inputrefs{scr}{../scr/main}
+% \extrefstyle{scr}{\cite[\protect{\theextref}]{Doe09}}
+% \title{Inter-Document Crossreferencing}
+% \author{John Bull\\...}
+% \begin{document}\maketitle\input{paper}\end{document}
+% \end{verbatim}
+% \vspace*{-2em}
+% \caption{A document driver {\texttt{idc/main.tex}} for a paper}\label{fig:paper-driver}
+% \end{exfig}
+%
+% The external references file can be read by other documents; in
+% Figure~\ref{fig:paper-driver}, we read the references file of Jane Doe's paper via the
+% \DescribeMacro{\inputrefs}|\inputrefs| macro. This allows John Bull to use\footnote{Note
+% that the external references file is updated every time {\LaTeX} is run, so that
+% references may be off by one version.} references like
+% \DescribeMacro{\extref}|\extref{scr}{foo}| to reference document fragments in Jane Doe's
+% paper she has labeled with the {\emph{reference prefix}} |\sreflabel{foo}| (assuming that
+% she has added |\makeextrefs{scr}| in the preamble of her paper). Note that just as the
+% |\sref| macro |\extref| takes an optional first argument that allows to specify the link
+% text. Here, John Bull uses the \DescribeMacro{\extrefstyle}|\extrefstyle| macro to
+% specify how the externa references are to be formatted, in this case he decided to use a
+% {\LaTeX} citation. Generally, first argument of the |\extrefstyle| macro is the
+% reference prefix which should be configured, and the second is the format, where the
+% \DescribeMacro{\theextref}|\theextref| macro expands to the cross-reference. In this
+% case, John chose to use a bib{\TeX} citation (he has an entry |Doe09| in his database)
+% for the reference to the external paper.
+%
+% As the content of the respective paper is input from a file |paper.tex| in the
+% individual papers, we can re-use these in the book. To do this we set up a book driver
+% file like the one in Figure~\ref{fig:book-driver}. This one does not use the |extrefs|
+% option, so the references are written to the |.aux| file. Furthermore |\extref| is
+% redefined to act like |\sref| disregarding the first required argument. Thus all
+% references work like they should.
+% \begin{exfig}
+% \begin{verbatim}
+% \documentclass{book}
+% \usepackage{sref}
+% \title{Cross-Referencing in {\LaTeX}}
+% \author{Elder Reseacher}
+% \begin{document}
+% \maketitle
+% \chapter{Semantic Crossreferencing (Jane Doe, ...)}
+% \input{scr/paper}\newpage
+% ...
+% \chapter{Inter-Document Crossreferencing (John Bull, ...)}
+% \input{idc/paper}\newpage
+% \end{document}
+% \end{verbatim}
+% \vspace*{-2em}
+% \caption{A document driver for the book assembling the papers}\label{fig:book-driver}
+% \end{exfig}
+%
+% This example has been carried through (without the separation of chapters in to
+% subdirectories) in the files accompanying the source distribution of the |sref|
+% package. They are used for testing the package.
+%
+% \subsection{Semantic Versions of Commonly used Referencing Commands}\label{sec:user:common}
+%
+% The |sref| package defines semantically referencable versions of commonly used {\LaTeX}
+% environments and command sequences.\footnote{This section will be extended by need, so
+% if you miss some semantic environment, please contact the package author, or (better)
+% file an issue at~\cite{sTeX:online})}
+%
+% The \DescribeEnv{sequation}|sequation| environment takes an optional key/value argument
+% that allows to specify an identifier and unifies the behavior of the |equation| (if an
+% |id| key is given) and |displaymath| (else) environments. So the markup
+% \begin{exfig}
+% \begin{verbatim}
+% A semantic equation with id
+% \begin{sequation}[id=foo]
+% e^{mc}=-1
+% \end{sequation}
+% and another one without id
+% \begin{sequation}
+% e^{mc}=-1
+% \end{sequation}
+% now, we reference the first equation: {\sref{foo}}
+% \end{verbatim}
+% \vspace*{-1.5em}\hrule
+% yields the result:\hrule
+% A semantic equation with id
+% \begin{sequation}[id=foo]
+% e^{mc}=-1
+% \end{sequation}
+% and another one without id
+% \begin{sequation}
+% e^{mc}=-1
+% \end{sequation}
+% now, we reference the first equation: {\sref{foo}}
+% \caption{Semantic Equation}\label{fig:sequation}
+% \end{exfig}
+%
+% \subsection{Semantic Citations}\label{sec:user:citations}
+%
+% \withcite{Patashnik:b88}{bib\TeX} and \withcite{Lehmann:biblatex10}{bib\LaTeX} provide a
+% semi-semantic way of referencing literature. If we look at the
+% \begin{withcitation}{LasSwi:rdf99}
+% current practice of citing from an RDF standpoint~\citeit which views links as
+% subject/predicate/object triples,
+% \end{withcitation}
+% then the treatment of the predicate and object are semantic, but the subject is hinted
+% at by mere juxtaposition in the text. The |sref| package helps out here via the
+% \DescribeMacro{\withcite} macro for short subjects (in the second argument) that are
+% postfixed by the citation (key in the first argument). For instance the occurrence at
+% the beginning of this paragraph was created by
+% \begin{verbatim}
+% \withcite{Patashnik:b88}{bib\TeX}
+% \end{verbatim}
+% The general case is covered by the \DescribeEnv{withcitation}|withcitation| environment
+% for long subjects. In the latter, the citation can be placed by the
+% \DescribeMacro{\citeit}. For instance, the second sentence was marked up as
+% \begin{verbatim}
+% If we look at the
+% \begin{withcitation}{LasSwi:rdf99}
+% current practice of citing from an RDF standpoint which views links as
+% subject/predicate/object triples,
+% \end{withcitation}
+% then the treatment of the predicate ...
+% \end{verbatim}
+% The advantage of this treatment is that the meaning of the reference is fully marked up
+% and can be taken advantage of in the \omdoc transformation, from which RDF triples can
+% then be harvested for a linked open data treatment.
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+% \newpage
+%
+% \section{Implementation}\label{sec:impl}
+%
+% The |sref| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% We first set up header information for the {\latexml} binding file.
+% \begin{macrocode}
+%<*ltxml>
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false).\ednote{need an implementation for {\latexml}}
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\newif\ifextrefs\extrefsfalse
+\DeclareOption{extrefs}{\extrefstrue}
+\ProcessOptions
+%</package>
+%<*ltxml>
+DeclareOption('extrefs','');
+%</ltxml>
+% \end{macrocode}
+%
+% Then we need to set up the packages by requiring the |metakeys| package~\ctancite{Kohlhase:metakeys}
+% to be loaded (in the right version).
+%
+% \begin{macrocode}
+%<*package>
+\RequirePackage{metakeys}
+%</package>
+%<ltxml>RequirePackage('metakeys');
+% \end{macrocode}
+%
+% \subsection{Crossreferencing}\label{sec:impl:crossref}
+%
+% The following user-level macros just use the |\sref@hlink| macros in various ways for
+% internal referencing.\ednote{they need implementation in LaTeXML, the ones here only are
+% stubs to make the error messages shut up.}
+%
+% \begin{macro}{\sref}
+% \begin{macrocode}
+%<*package>
+\newcommand{\sref}[2][]{%
+\@ifundefined{sref@part}{\sref@hlink[#1]{#2}}{\sref@hlink[#1]{\sref@part @#2}}}
+%</package>
+%<*ltxml>
+sub withhash {'#';}
+DefConstructor('\sref[]{}',
+ "<omdoc:oref href='&withhash()#2'/>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\srefs}
+% \begin{macrocode}
+%<*package>
+\newcommand{\srefs}[3][]{%
+\def\@test{#1}\ifx\@test\@empty\sref{#2} and \sref{#3}\else #1\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\srefs[]{}',
+ "<omdoc:oref href='&withhash()#2'/>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\srefl}
+% \begin{macrocode}
+%<*package>
+\newcommand{\srefl}[3][]{%
+\def\@test{#1}\ifx\@test\@empty\sref{#2} to \sref{#3}\else #1\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\srefl[]{}',
+ "<omdoc:oref href='&withhash()#2'/>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+% \ednote{it is not clear what we want in the LaTeXML implementation of spageref}
+% \begin{macro}{\spageref}
+% \begin{macrocode}
+%<*package>
+\newcommand{\spageref}[1]{%
+\@ifundefined{sref@part}{\sref@pageref{#1}}{\sref@pageref{\sref@part @#1}}}
+%</package>
+%<*ltxml>
+DefConstructor('\spageref{}',
+ "<omdoc:oref href='&withhash()#1'/>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{An API for Package Authors}\label{sec:impl:package-authors}
+%
+% We find out whether the |hyperref| package is loaded, since we may want to use it for
+% cross-references, for which we set up some internal macros that gracefully degrade if
+% |hyperref| is not loaded.
+%
+% \begin{macro}{\sref@*@ifh}
+% \begin{macrocode}
+%<*package>
+\newif\ifhref\hreffalse
+\AtBeginDocument{\@ifpackageloaded{hyperref}{\hreftrue}{\hreffalse}}
+\newcommand\sref@href@ifh[2]{\ifhref\href{#1}{#2}\else#2\fi}
+\newcommand\sref@hlink@ifh[2]{\ifhref\hyperlink{#1}{#2}\else#2\fi}
+\newcommand\sref@target@ifh[2]{\ifhref\hypertarget{#1}{#2}\else#2\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% Then we provide some macros for {\sTeX}-specific crossreferencing
+%
+% \begin{macro}{\sref@target}
+% The next macro uses this and makes an target from the current |sref@id| declared by
+% a |id| key.
+% \begin{macrocode}
+\def\sref@target%
+{\ifx\sref@id\@empty\else%
+\edef\@target{sref@\@ifundefined{sref@part}{}{\sref@part @}\sref@id @target}
+\sref@target@ifh\@target{}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% The next two macros are used for setting labels, it is mainly used for enabling forward
+% references, to do this, it is written into \meta{jobname}|.aux| or \meta{jobname}|.refs|.
+%
+% \begin{macro}{\@sref@def}
+% This macro stores the value of its last argument in a custom macro for reference.
+% \begin{macrocode}
+\newcommand\@sref@def[3]{\expandafter\gdef\csname sref@#1@#2\endcsname{#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% The next step is to set up a file to which the references are written, this is normally
+% the |.aux| file, but if the |extref| option is set, we have to use an |.ref| file.
+% \begin{macrocode}
+\ifextrefs\newwrite\refs@file\else\def\refs@file{\@auxout}\fi
+% \end{macrocode}
+%
+% \begin{macro}{\sref@def}
+% This macro writes an |\@sref@def| command to the current aux file and also executes it.
+% \begin{macrocode}
+\newcommand\sref@def[3]{%\@sref@def{#1}{#2}{#3}%
+\protected@write\refs@file{}{\string\@sref@def{#1}{#2}{#3}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\srefaddidkey}
+% |\srefaddidkey[|\meta{keyval}|]{|\meta{group}|}| extends the metadata keys of the
+% group \meta{group} with an |id| key. In the optional key/value pairs in \meta{keyval}
+% the |prefix| key can be used to specify a prefix. Note that the |id| key defined by
+% |\srefaddidkey[|\meta{keyval}|]{|\meta{group}|}| not only defines |\sref@id|, which is
+% used for referencing by the |sref| package, but also |\|\meta{group}|@id|, which is
+% used for showing metadata via the |showmeta| option of the |metakeys| package.
+% \begin{macrocode}
+\addmetakey{srefaddidkey}{prefix}
+\newcommand\srefaddidkey[2][]{\metasetkeys{srefaddidkey}{#1}%
+\@metakeys@ext@clear@keys{#2}{sref@id}{}% id cannot have a default
+\metakeys@ext@clear@keys{#2}{id}{}%
+\metakeys@ext@showkeys{#2}{id}%
+\define@key{#2}{id}{\edef\sref@id{\srefaddidkey@prefix ##1}%
+\expandafter\edef\csname #2@id\endcsname{\srefaddidkey@prefix ##1}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inter-Document Crossreferencing}\label{sec:impl:interdoc}
+%
+% \begin{macro}{\makeextrefs}
+% \begin{macrocode}
+%<*package>
+\newcommand\makeextrefs[1]{\gdef\sref@part{#1}%
+\makeatletter
+\IfFileExists{\jobname.refs}{\input{\jobname.refs}}{}%
+\immediate\openout\refs@file=\jobname.refs
+\makeatother}
+%</package>
+%<ltxml>DefConstructor('\makeextrefs{}','');
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sref@label}
+% The |\sref@label| macro writes a label definition to the auxfile.
+% \begin{macrocode}
+%<*package>
+\newcommand\sref@label[2]{%
+\sref@def{\@ifundefined{sref@part}{}{\sref@part @}#2}{page}{\thepage}%
+\sref@def{\@ifundefined{sref@part}{}{\sref@part @}#2}{label}{#1}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sreflabel}
+% The |\sreflabel| macro is a semantic version of |\label|, it combines the categorization
+% given in the first argument with {\LaTeX}'s |\@currentlabel|.
+% \begin{macrocode}
+%<*package>
+\newcommand\sreflabel[2]{\message{sreflabel: #1, #2}\sref@label{#1 \@currentlabel}{#2}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sref@label@id}
+% The |\sref@label@id| writes a label definition for the current |\sref@id| if it is
+% defined.
+% \begin{macrocode}
+%<*package>
+\newcommand\sref@label@id[1]{\ifx\sref@id\@empty\else\sref@label{#1}{\sref@id}\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% Finally we come to the user visible macro |\sref| which is used for
+% referencing.\ednote{The {\latexml} does not take into account the optional argument
+% yet.}
+%
+% \begin{macro}{\sref@hlink}
+% |\sref@hlink[|\meta{alt}|]{|\meta{label}|}|creates an error message if the target
+% specified by \meta{label} is not defined, and otherwise generates a hyperlinked
+% reference whose link text is \meta{alt} (if the optional argument is given) and the
+% label generated by object specified by \meta{label} otherwise.
+% \begin{macrocode}
+%<*package>
+\newcommand{\sref@hlink}[2][]{\def\@test{#1}%
+\@ifundefined{sref@#2@label}%
+{\protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??}%
+{\sref@hlink@ifh{sref@#2@target}{\ifx\@test\@empty\@nameuse{sref@#2@label}\else #1\fi}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sref@page@label}
+% This macro styles a page reference.
+% \begin{macrocode}
+%<*package>
+\newcommand{\sref@page@label}[1]{p.~{#1}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sref@pageref}
+% The next macro creates an error message if the target is not defined, and otherwise
+% generates a page reference.
+% \begin{macrocode}
+%<*package>
+\newcommand{\sref@pageref}[1]{\@ifundefined{sref@#1@page}%
+{\protect\G@refundefinedtrue\@latex@warning{reference #1 undefined}\sref@page@label{??}}%
+{\sref@hlink@ifh{sref@#1@target}{\sref@page@label{\@nameuse{sref@#1@page}}}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sref@href}
+% The next macro creates an error message if the target is not defined, and otherwise
+% generates a hyperlinked reference.
+% \begin{macrocode}
+%<*package>
+\newcommand{\sref@href}[3][]{\def\@test{#1}%
+\@ifundefined{sref@#2@label}%
+{\protect\G@refundefinedtrue\@latex@warning{reference #2 undefined}??}%
+{\@ifundefined{sref@#3@URI}%
+{\protect\G@refundefinedtrue\@latex@warning{external refs of type #3 undefined}??}%
+{\edef\@uri{\@nameuse{sref@#3@URI}.pdf\#sref@#2@target}
+\edef\@label{\ifx\@test\@empty\@nameuse{sref@#2@label}\else #1\fi}
+\sref@href@ifh\@uri\@label}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extref}
+% The next macros use |\sref@hlink| with the respective prefix for external referencing
+% if external references are used as indicated by the |extrefs| option; otherwise it
+% disregards the first required macro and uses internal referencing.\ednote{This needs
+% to be implemented on the LaTeXML side.}
+% \begin{macrocode}
+%<*package>
+\ifextrefs
+\newcommand{\extref}[3][]{\def\theextref{\sref@href[#1]{#2@#3}{#2}}%
+\csname doextref@#2\endcsname}
+\else
+\newcommand{\extref}[3][]{\sref[#1]{#3}}
+\fi
+%</package>
+%<*ltxml>
+DefConstructor('\extref[]{}{}',
+ "<omdoc:oref href='#2@#3'/>");
+DefConstructor('\theextref','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extpageref}
+% The next macros use |\sref@hlink| with the respective prefix for external referencing
+% if external references are used as indicated by the |extrefs| option; otherwise it
+% disregards the first required macro and uses internal referencing.\ednote{This needs
+% to be implemented on the LaTeXML side.}
+% \begin{macrocode}
+%<*package>
+\ifextrefs
+\newcommand{\extpageref}[3][]{\def\theextref{\sref@pageref[#1]{#2@#3}{#2}}%
+\csname doextpageref@#2\endcsname}
+\else
+\newcommand{\extpageref}[3][]{\spageref[#1]{#3}}
+\fi
+%</package>
+%<*ltxml>
+DefConstructor('\extpageref[]{}{}',
+ "<omdoc:oref href='#2@#3'/>");
+DefConstructor('\theextref','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extrefstyle}
+% This user macro defines an internal macro that is used for internal styling; for
+% instance |\extrefstyle{foo}{\theextref in bar}| defines the macro |\doextref@foo|
+% which evaluates to \meta{the reference} |in bar|. This is used in the |\extref| macro.
+% \begin{macrocode}
+%<*package>
+\newcommand\extrefstyle[2]{\expandafter\gdef\csname doextref@#1\endcsname{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\extrefstyle{}{}',"");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extpagerefstyle}
+% This is analogous to |\extrefstyle|
+% \begin{macrocode}
+%<*package>
+\newcommand\extpagerefstyle[2]{\expandafter\gdef\csname doextpageref@#1\endcsname{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\extrefstyle{}{}',"");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\inputrefs}
+% If the external references file exists, it is read (under the protection of
+% |\makeatother|) otherwise an error message is displayed.
+% \begin{macrocode}
+%<*package>
+\newcommand{\inputrefs}[2]{%
+\@namedef{sref@#1@URI}{#2}
+\makeatletter%
+\IfFileExists{#2.refs}{\input{#2.refs}}
+ {\PackageError{sref}{Reference file #1.refs does not exist}
+ {Maybe you have to run LaTeX on #2.tex first}}
+\makeatother}
+%</package>
+%<*ltxml>
+DefConstructor('\inputrefs{}{}','');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Semantic Versions of Commonly used Referencing Commands}\label{sec:impl:common}
+%
+% \begin{environment}{sequation}
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{sequation}
+\def\sref@sequation@heading{equation}
+\newenvironment{sequation}[1][]{\metasetkeys{sequation}{#1}%
+\ifx\sref@id\@empty\begin{displaymath}\else% no id, using equation*
+\begin{equation}\sref@target\sref@label@id{\sref@sequation@heading~(\theequation)}\fi}
+{\ifx\sref@id\@empty\end{displaymath}\else\end{equation}\fi}
+%</package>
+%<*ltxml>
+DefEnvironment('{sequation} OptionalKeyVals',
+ "<ltx:equation "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')' "
+ . "refnum='#refnum')(xml:id='#id')>"
+ . "<ltx:Math mode='display'>"
+ . "<ltx:XMath>#body</ltx:XMath>"
+ . "</ltx:Math>"
+ . "</ltx:equation>",
+ mode=>'display_math',
+ properties=> sub { RefStepCounter('equation') },
+ locked=>1);
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{seqnarray}
+% \begin{macrocode}
+%<*package>
+\newenvironment{seqnarray}[1][]%
+{\metasetkeys{sequation}{#1}\begin{eqnarray*}\sref@target%
+\sref@label@id{\sref@sequation@heading~(\theequation)}}
+{\end{eqnarray*}}
+%</package>
+%<*ltxml>
+DefMacro('\seqnarray OptionalKeyVals','\begin{eqnarray*}');
+DefMacro('\endseqnarray','\end{eqnarray*}');
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Semantic Citations}\label{sec:impl:citations}
+%
+% \begin{macro}{withcite}
+% \begin{macrocode}
+%<*package>
+\newcommand\withcite[2]{#2~\cite{#1}}
+%</package>
+%<*ltxml>
+DefMacro('\withcite{}{}','\begin{withcitation}{#1}#2\citeit\end{withcitation}');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{withcitation}
+% \begin{macrocode}
+%<*package>
+\newenvironment{withcitation}[1]{\def\citeit{\cite{#1}}}{}
+%</package>
+%<*ltxml>
+DefConstructor('\citeit',"<omdoc:citation/> ",
+afterConstruct => sub {
+ my ($document,$whatsit) = @_;
+ # LibXML acrobatics, since we can't talk about the xml:id prior to construction's end
+ # (and please do correct me if this is inaccurate)
+ my $node = $document->getNode;
+ my ($citenode) = $document->findnodes('preceding-sibling::omdoc:citation',$node);
+ my ($phrase_parent) = $document->findnodes('ancestor::ltx:text[@xml:id]',$node);
+ return unless (defined $phrase_parent) && (defined $citenode);
+ my $id = $phrase_parent->getAttribute('xml:id');
+ my $refs = $phrase_parent->getAttribute('citeit-refs');
+ $phrase_parent->removeAttribute('citeit-refs');
+ $citenode->setAttribute('for',$id);
+ $citenode->setAttribute('refs',$refs);
+});#$
+DefEnvironment('{withcitation}{}',
+ "<ltx:text citeit-refs='#1'>#body</ltx:text>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Finale}\label{sec:common}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<*ltxml>
+1;
+%</ltxml>
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+% LocalWords: GPL structuresharing STR omdoc dtx stex CPERL LoadClass url dc
+% LocalWords: RequirePackage RegisterNamespace namespace xsl DocType ltxml dtd
+% LocalWords: ltx DefEnvironment beforeDigest AssignValue inPreamble getGullet
+% LocalWords: afterDigest keyval omgroup DefKeyVal Semiverbatim KeyVal iffalse
+% LocalWords: OptionalKeyVals DefParameterType IfBeginFollows skipSpaces CMP
+% LocalWords: ifNext DefMacro needwrapper unlist DefConstructor omtext bgroup
+% LocalWords: useCMPItemizations RefStepItemCounter egroup beginItemize li di
+% LocalWords: beforeDigestEnd useTheoryItemizations dt autoclose ul ol dl env
+% LocalWords: afterOpen LastSeenCMP autoClose proto ToString textsuperscript
+% LocalWords: addAttribute nlex nlcex omdocColorMacro args tok MergeFont qw
+% LocalWords: TokenizeInternal toString isMath foreach maybeCloseElement id'd
+% LocalWords: autoOpen minipage footnotesize scriptsize numberIt whatsit href
+% LocalWords: getAttribute setAttribute OMDoc RelaxNGSchema noindex xml lec
+% LocalWords: Subsubsection useDefaultItemizations refundefinedtrue blockquote
+% LocalWords: DefCMPConstructor inlinequote idx idt ide idp emph sref extrefs
+% LocalWords: flushleft flushright DeclareOption hyperref LaTeX tex pdf hlink
+% LocalWords: sequation omd def texorpdfstring raisebox latexml texttt newpage
+% LocalWords: fileversion maketitle tableofcontents autoref hpyerref mysection
+% LocalWords: exfig vspacesrefaddidkey srefaddidkey scr vspace withcite LasSwi
+% LocalWords: makeextrefs inputrefs extref foo Patashnik withcite biblatex10
+% LocalWords: extrefstyle theextref theextref displaymath hrule impl ednote
+% LocalWords: printbibliography newif ifextrefs extrefsfalse extrefstrue srefs
+% LocalWords: Crossreferencing newcommand ifundefined ifx srefl xref ifh gdef
+% LocalWords: ifhref hreffalse ifpackageloaded hreftrue expandafter jobname
+% LocalWords: jobname csname endcsname newwrite auxout makeatletter openout
+% LocalWords: makeatother auxfile nameuse doextref namedef newenvironment
+% LocalWords: theequation refnum refnum seqnarray eqnarray endseqnarray doctex
+% LocalWords: textsuperscript spageref spageref thepage pageref ctancite rdf99
+% LocalWords: cross-referencable showmeta showmeta metakeys metasetkeys textsf
+% LocalWords: addmetakey referencable langle textsf langle withcitation citeit
+% LocalWords: compactenum
diff --git a/Master/texmf-dist/source/latex/stex/sref/sref.ins b/Master/texmf-dist/source/latex/stex/sref/sref.ins
new file mode 100644
index 00000000000..ed4d9c3a607
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/sref/sref.ins
@@ -0,0 +1,38 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex sref.ins
+%%
+%% Copyright(c) 2009 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{sref.sty}{\from{sref.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{sref.sty.ltxml}{\from{sref.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You may need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/statements/statements.dtx b/Master/texmf-dist/source/latex/stex/statements/statements.dtx
new file mode 100644
index 00000000000..05a9c950a2a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/statements/statements.dtx
@@ -0,0 +1,1439 @@
+% \iffalse meta-comment
+% An Infrastructure for Mathematical Statements in sTeX
+% Copyright (C) 2004-2008 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+%
+% The development version of this file can be found at
+% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/statements/statements.dtx $
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{statements}[2012/01/28 v1.1 Semantic Markup for Statements]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{url,array,float,amsfonts}
+\usepackage{statements,modules,presentation}
+\usepackage{paralist}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage[eso-foot,today]{svninfo}
+\usepackage{stex-logo}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\svnInfo $Id: statements.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/statements/statements.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{statements.dtx}\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{597}
+%
+% \changes{v0.9}{2005/06/14}{First Version with Documentation}
+% \changes{v0.9a}{2005/07/01}{Completed Documentation}
+% \changes{v0.9b}{2005/08/06}{Complete functionality and Updated Documentation}
+% \changes{v0.9c}{2006/01/13}{more packaging}
+% \changes{v0.9d}{2007/09/09}{moved omtext and friends to the omdoc package}
+% \changes{v0.9d}{2007/09/09}{made dependence on the omdoc package explicit}
+% \changes{v0.9d}{2007/09/09}{adding ids to many elements}
+% \changes{v0.9e}{2008/05/27}{adding cross-references}
+% \changes{v0.9e}{2008/09/29}{augmenting the index macros with optional values}
+% \changes{v0.9f}{2008/12/04}{changed 'consymb' to 'symboldec' and documented it.}
+% \changes{v0.9g}{2010/01/14}{the package is now based on {\texttt{ntheorem for presentation}}}
+% \changes{v0.9g}{2010/01/19}{Added support for localization}
+% \changes{v0.9g}{2010/02/23}{added {\texttt{\textbackslash symref}}}
+% \changes{v1.0}{2010/06/18}{now based on {\texttt{omtext}} package instead of {\texttt{omdoc}}}
+% \changes{v1.0}{2010/07/13}{adding {\texttt{\textbackslash inlineex}}}
+% \changes{v1.1}{2011/08/25}{renaming all convenience macros for {\texttt{\textbackslash
+% definendum}} and {\texttt{\textbackslash termref}}}
+%
+% \GetFileInfo{statements.sty}
+%
+% \MakeShortVerb{\|}
+% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\xml{\scsys{Xml}}
+% \def\mathml{\scsys{MathML}}
+% \def\omdoc{\scsys{OMDoc}}
+% \def\openmath{\scsys{OpenMath}}
+% \def\latexml{\scsys{LaTeXML}}
+% \def\perl{\scsys{Perl}}
+% \def\activemath{\scsys{ActiveMath}}
+% \title{Semantic Markup for Mathematical Statements\thanks{Version {\fileversion} (last revised
+% {\filedate})}}
+% \author{Michael Kohlhase\\
+% Jacobs University, Bremen\\
+% \url{http://kwarc.info/kohlhase}}
+% \maketitle
+%
+% \begin{abstract}
+% The |statements| package is part of the {\stex} collection, a version of {\TeX/\LaTeX}
+% that allows to markup {\TeX/\LaTeX} documents semantically without leaving the
+% document format, essentially turning {\TeX/\LaTeX} into a document format for
+% mathematical knowledge management (MKM).
+%
+% This package provides semantic markup facilities for mathematical statements like
+% Theorems, Lemmata, Axioms, Definitions, etc. in {\stex} files. This structure can be
+% used by MKM systems for added-value services, either directly from the {\sTeX}
+% sources, or after translation.
+% \end{abstract}
+%
+% \setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+% \section{Introduction}\label{sec:intro}
+%
+% The motivation for the |statements| package is very similar to that for semantic macros
+% in the |modules| package: We want to annotate the structural semantic properties of
+% statements in the source, but present them as usual in the formatted documents. In
+% contrast to the case for mathematical objects, the repertoire of mathematical statements
+% and their structure is more or less fixed.
+%
+% This structure can be used by MKM systems for added-value services, either directly from
+% the {\sTeX} sources, or after translation. Even though it is part of the {\stex}
+% collection, it can be used independently, like it's sister package |sproofs|.
+%
+% {\stex}~\cite{Kohlhase:ulsmf08,sTeX:online} is a version of {\TeX/\LaTeX} that allows
+% to markup {\TeX/\LaTeX} documents semantically without leaving the document format,
+% essentially turning {\TeX/\LaTeX} into a document format for mathematical knowledge
+% management (MKM). Currently the {\omdoc} format~\cite{Kohlhase:omdoc1.2} is directly
+% supported.
+%
+% \section{The User Interface}\label{sec:user-interface}
+%
+% The |statements| package supplies a semantically oriented infrastructure for marking up
+% mathematical statements: fragments of natural language that state properties of
+% mathematical objects, e.g. axioms, definitions, or theorems. The |statement| package
+% provides an infrastructure for marking up the semantic relations between statements for
+% the {\omdoc} transformation and uses the |ntheorem| package~\cite{MaySch:eltte09} for
+% formatting (i.e. transformation to PDF).
+%
+% \subsection{Package Options}\label{sec:user:options}
+%
+% The |statements| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
+% this is set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details
+% and customization options).
+%
+% \subsection{Statements}\label{sec:statements}
+%
+% All the statements are marked up as environments, that take a |KeyVal| argument that
+% allows to annotate semantic information. Generally, we distinguish two forms of
+% statements:
+% \begin{description}
+% \item[{\twintoo{block}{statement}s}] have explicit discourse markers that delimit their
+% content in the surrounding text, e.g. the boldface word ``{\bf{Theorem}:}'' as a start
+% marker and a little line-end box as an end marker of a proof.
+% \item[{\twintoo{flow}{statement}s}] do not have explicit markers, they are interspersed
+% with the surrounding text.
+% \end{description}
+% Since they have the same semantic status, they must both be marked up, but styled
+% differently. We distinguis between these two presentational forms with the
+% \DescribeMacro{display=}|display| key, which is allowed on all statement
+% environments. If it has the value |block| (the default), then the statement will be
+% presented in a paragraph of its own, have explicit discourse markers for its begin and
+% end, possibly numbering, etc. If it has the value |flow|, then no extra presentation
+% will be added the semantic information is invisible to the reader. Another key that is
+% present on all statement environments in the \DescribeMacro{id=}|id| key it allows to
+% identify the statement with a name and to reference it with the semantic referencing
+% infrastructure provided by the |sref| package~\ctancite{Kohlhase:sref}.
+%
+% \subsubsection{Axioms and Assertions}\label{sec:user:axiomassertion}
+%
+% The \DescribeEnv{assertion}|assertion| environment is used for marking up statements
+% that can be justified from previously existing knowledge (usually marked with the
+% monikers ``Theorem'', ``Lemma'', ``Proposition'', etc. in mathematical vernacular). The
+% environment |assertion| is used for all of them, and the particular subtype of
+% assertion is given in the \DescribeMacro{type=}|type| key. So instead of
+% |\begin{Lemma}|\iffalse\end{Lemma}\fi we have to write
+% |\begin{assertion}[type=lemma]|\iffalse\end{assertion}\fi (see
+% Example~\ref{fig:assertion} for an example).
+% \begin{exfig}
+% \begin{verbatim}
+% \begin{assertion}[id=sum-over-odds,type=lemma]
+% $\sum_{i=1}^n{2i-1}=n^2$
+% \end{assertion}
+% \end{verbatim}
+% \vspace{-1em}will lead to the result\vspace{-2em}\par\noindent
+% \begin{assertion}[id=sum-over-odds,type=lemma]
+% $\sum_{i=1}^n{2i-1}=n^2$
+% \end{assertion}
+% \caption{Semantic Markup for a Lemma in a {\texttt{module}} context}\label{fig:assertion}
+% \end{exfig}
+%
+% Whether we will see the keyword ``Lemma'' will depend on the value of the optional
+% |display| key. In all of the |assertion| environments, the presentation expectation is
+% that the text will be presented in italic font. The presentation (keywords, spacing, and
+% numbering) of the |assertion| environment is delegated to a theorem styles from the
+% |ntheorem| environment. For an assertion of type \meta{type} the |assertion| environment
+% calls the |ST|\meta{type}|AssEnv| environment provided by the |statements| package; see
+% Figure~\ref{fig:assertion-types} for a list of provided assertion types. Their
+% formatting can be customized by redefining the |ST|\meta{type}|AssEnv| environment via
+% the |\renewtheorem| command from the |ntheorem| package; see~\cite{MaySch:eltte09} for
+% details.
+%
+% \begin{exfig}
+% \begin{tabular}{|l|l|}\hline
+% Value & Explanation \\\hline\hline
+% \textbf{theorem}, \textbf{proposition}
+% & an important assertion with a proof\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize Note that the meaning of \textbf{theorem}
+% (in this case the existence of a proof) is not
+% enforced by {\omdoc} applications. It can be appropriate to give an assertion
+% the \textbf{theorem}, if the
+% author knows of a proof (e.g. in the literature), but has not formalized it in
+% {\omdoc} yet.}\\\hline\hline
+% \textbf{lemma} & a less important assertion with a proof\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize The difference of importance specified
+% here is even softer than the other ones, since e.g. reusing
+% a mathematical paper as a chapter in a larger monograph, may make it necessary to
+% downgrade a theorem (e.g. the main theorem of the paper) and give it the status of
+% a lemma in the overall work.}\\\hline\hline
+% \textbf{corollary} & a simple consequence\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize An assertion is
+% sometimes marked as a corollary to some other statement, if the proof is
+% considered simple. This is often the case for important theorems that are simple
+% to get from technical lemmata.}\\\hline\hline
+% \textbf{postulate}, \textbf{conjecture}
+% & an assertion without proof or counter-exam\-ple\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize Conjectures are assertions, whose
+% semantic value is not yet decided, but which the author considers likely to be
+% true. In particular, there is no proof or counter-example.}\\\hline\hline
+% \textbf{false-conjecture}
+% & an assertion with a counter-example\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize A conjecture that has proven to be false,
+% i.e. it has a counter-example. Such assertions are often kept for illustration and
+% historical purposes.}\\\hline\hline
+% \textbf{obligation}, \textbf{assumption}
+% & an assertion on which a proof of another depends\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize These kinds of assertions
+% are convenient during the exploration of a mathematical theory. They can be used
+% and proven later (or assumed as an axiom).}\\\hline\hline
+% \textbf{observation} & if everything else fails\\\hline
+% \multicolumn{2}{|p{12cm}|}{\footnotesize This type is the catch-all if none of the others
+% applies.}\\\hline
+% \end{tabular}
+% \caption{Types of Mathematical Assertions}\label{fig:assertion-types}
+% \end{exfig}
+%
+% \DescribeEnv{axiom} The |axiom| environment is similar to |assertion|, but the content
+% has a different ontological status: axioms are assumed without (formal) justification,
+% whereas assertions are expected to be justified from other assertions, axioms or
+% definitions. This environment relegates the formatting to the |STaxiomEnv| environment,
+% which can be redefined for configuration.
+%
+% \subsubsection{Symbols}\label{sec:user:symbol}
+%
+% \DescribeEnv{symboldec} The |symboldec| environment can be used for declaring concepts
+% and symbols. Note the the |symdef| forms from the |modules| package will not do this
+% automatically (but the |definition| environment and the |\inlinedef| macro will for all
+% the definienda; see below). The |symboldec| environment takes an optional keywords
+% argument with the keys |id|, |role|, |title| and |name|. The first is for general
+% identification, the |role| specifies the {\openmath}/{\omdoc} role, which is one of
+% |object|, |type|, |sort|, |binder|, |attribution|, |application|, |constant|,
+% |semantic-attribution|, and |error| (see the {\omdoc} specification for details). The
+% |name| key specifies the {\openmath} name of the symbol, it should coincide with the
+% control sequence introduced by the corresponding |\symdef| (if one is present). The
+% |title| key is for presenting the title of this symbol as in other statements. Usually,
+% |axiom| and |symboldec| environments are used together as in Figure~\ref{fig:axioms}.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \symdef{zero}{0}
+% \begin{symboldec}[name=zero,title=The number zero,type=constant]
+% The number zero, it is used as the base case of the inductive definition
+% of natural numbers via the Peano Axioms.
+% \end{symboldec}
+%
+% \symdef{succ}[1]{\prefix{s}{#1}}
+% \begin{symboldec}[name=succ,title=The Successor Function,type=application]
+% The successor function, it is used for the step case of the inductive
+% definition of natural numbers via the Peano Axioms.
+% \end{symboldec}
+%
+% \symdef{NaturalNumbers}{\mathbb{N}}
+% \begin{symboldec}[name=succ,title=The Natural Numbers,type=constant]
+% The natural numbers inductively defined via the Peano Axioms.
+% \end{symboldec}
+%
+% \begin{axiom}[id=peano.P1,title=P1]
+% $\zero$ is a natural number.
+% \end{axiom}
+% ...
+% \begin{axiom}[id=peano.P5,title=P5]
+% Any property $P$ such $P(\zero)$ and $P(\succ{k})$ whenever $P(k)$
+% holds for all $n$ in $\NaturalNumbers$
+% \end{axiom}
+% \end{verbatim}
+% \vspace{-1em}will lead to the result\medskip\par\noindent
+% \begin{module}[id=peano]
+% \symdef{zero}{0}
+% \begin{symboldec}[name=zero,title=The number zero,role=constant]
+% The number zero, it is used as the base case of the inductive definition
+% of natural numbers via the Peano Axioms.
+% \end{symboldec}
+%
+% \symdef{succ}[1]{\prefix{s}{#1}}
+% \begin{symboldec}[name=succ,title=The Successor Function,role=application]
+% The successor function, it is used for the step case of the inductive
+% definition of natural numbers via the Peano Axioms.
+% \end{symboldec}
+%
+% \symdef{NaturalNumbers}{\mathbb{N}}
+% \begin{symboldec}[name=succ,title=The Natural Numbers,role=constant]
+% The natural numbers inductively defined via the Peano Axioms.
+% \end{symboldec}
+%
+% \begin{axiom}[id=peano.P1,title=P1]
+% $\zero$ is a natural number.
+% \end{axiom}
+% \ldots \stepcounter{STtheoremAssEnv}\stepcounter{STtheoremAssEnv}\stepcounter{STtheoremAssEnv}
+% \begin{axiom}[id=peano.P5,title=P5]
+% Any property $P$ such $P(\zero)$ and $P(\succ{k})$ whenever $P(k)$
+% holds for all $n$ in $\NaturalNumbers$
+% \end{axiom}
+% \end{module}
+% \caption{Semantic Markup for the Peano Axioms}\label{fig:axioms}
+% \end{exfig}
+%
+% \subsubsection{Definitions, and Definienda}\label{sec:definition}
+%
+% \DescribeEnv{definition} The |definition| environment is used for marking up
+% mathematical definitions. Its peculiarity is that it defines (i.e. gives a meaning to)
+% new mathematical concepts or objects. These\DescribeMacro{\definiendum} are identified
+% by the |\definiendum| macro, which is used as
+% |\definiendum[|\meta{sysname}|]{|\meta{text}|}|. Here, \meta{text} is the text that is
+% to be emphasized in the presentation and the optional \meta{sysname} is a system name of
+% the symbol defined (for reference via |\term|, see Section~\ref{sec:user:crossref}). If
+% \meta{sysname} is not given, then \meta{text} is used as a system name instead, which is
+% usually sufficient for most situations.
+%
+%\begin{exfig}
+% \begin{verbatim}
+% \symdef{one}{1}
+% \begin{definition}[id=one.def,for=one]
+% $\notatiendum[one]{\one}$ is the successor of $\zero$
+% (formally: $\one\colon=\succ\zero$)
+% \end{definition}
+% \end{verbatim}
+% \vspace{-1em}will lead to the result\medskip\par\noindent
+% \begin{module}
+% \importmodule{peano}
+% \symdef{one}{1}
+% \begin{definition}[id=one.def,for=one]
+% $\notatiendum[one]{\one}$ is the successor of $\zero$
+% (formally: $\one\colon=\succ\zero$)
+% \end{definition}
+% \end{module}
+% \caption{A Definition based on Figure {\ref{fig:axioms}}}\label{fig:definition}
+% \end{exfig}
+% The \DescribeMacro{defin}|\defi{|\meta{word}|}| macro combines the functionality of the
+% |\definiendum| macro with index markup from the |omdoc|
+% package~\ctancite{Kohlhase:smomdl}: use |\defi[|\meta{name}|]{|\meta{word}|}| to markup
+% a definiendum \meta{word} with system name \meta{name} that appear in the index --- in
+% other words in almost all definitions of single-word concepts. We also have the variants
+% \DescribeMacro{\defii}|\defii| and \DescribeMacro{\defiii}|\defiii| for (adjectivized)
+% two-word compounds. Finally, the varaiants \DescribeMacro{\adefi}|\adefi|,
+% \DescribeMacro{\adefii}|\adefii|,and \DescribeMacro{\adefiii}|\adefiii| have an
+% additional first argument that allows to specify an alternative text; see
+% Figure~\ref{fig:defin}
+%
+% \begin{exfig}
+% \begin{tabular}{l|l|l}
+% \multicolumn{3}{l}{source}\\
+% system name & result & index \\\hline
+% \multicolumn{3}{l}{\texttt{\textbackslash defin\{concept\}}}\\
+% |concept| & concept& concept\\\hline
+% \multicolumn{3}{l}{\texttt{\textbackslash defin[csymbol]\{concept\}}}\\
+% |csymbol| & concept & concept\\\hline
+% \multicolumn{3}{l}{\texttt{\textbackslash definalt[csymbol]\{concepts\}\{concept\}}}\\
+% |csymbol| & concepts & concept\\\hline
+% \multicolumn{3}{l}{\texttt{\textbackslash twindef\{concept\}\{group\}}}\\
+% |concept-group| & concept group & concept group, \\
+% && group - , concept\\\hline
+% \multicolumn{3}{l}{\texttt{\textbackslash atwindef\{small\}\{concept\}\{group\}}}\\
+% |small-concept-group| & small concept group & small concept group, \\
+% && concept group - , small\\
+% \end{tabular}
+% \caption{Some definienda with Index}\label{fig:defin}
+% \end{exfig}
+%
+% Note that the |\definiendum|, |\defi|, |\defii|, and |\defiii| macros can only be
+% used inside the definitional situation, i.e. in a |definition| or |symboldec|
+% environment or a |\inlinedef| macro. If you find yourself in a situation where you want
+% to use it outside, you will most likely want to wrap the appropriate text fragment in a
+% |\begin{definition}[display=flow]| ... and |\end{definition}|. For instance, we could
+% continue the example in Figure~\ref{fig:axioms} with the |definition| environment in
+% Figure~\ref{fig:definition}.
+%
+% \DescribeMacro{\inlinedef} Sometimes we define mathematical concepts in passing, e.g. in
+% a phrase like ``\ldots $s(o)$ which we call {\textbf{one}}.''. For this we cannot use
+% the |definition| environment, which presupposes that its content gives all that is
+% needed to understand the definition. But we do want to make use of the infrastructure
+% introduced for the |definition| environment. In this situation, we just wrap the phrase
+% in an |\inlinedef| macro that makes them available. The |\inlinedef| macro accepts the
+% same |id| and |for| keys in its optional argument, and additionally the |verbalizes| key
+% which can be used to point to a full definition of the concept somewhere else.
+%
+% Note that definienda can only be referenced via a |\term| element, if they are only
+% allowed inside a named module, i.e. a |module| environment with a name given by the
+% |id=| key or the |theory=| key on is specified on the definitional environment.
+%
+% \subsubsection{Examples}\label{sec:user:example}
+%
+% \DescribeEnv{example} The |example| environment is a generic statement environment,
+% except that the |for| key should be given to specify the identifier what this is an
+% example for. The |example| environment also expects a |type| key to be specified, so
+% that we know whether this is an example or a counterexample.
+%
+% \DescribeMacro{\inlineex} The |\inlineex| is analogous to |\inlinedef|, only that it is
+% used for inline examples, e.g. ``\ldots mammals, e.g. goats''. Note that we have used an
+% inline example for an inline example.
+%
+% \subsection{Cross-Referencing Symbols and Concepts}\label{sec:user:crossref}
+%
+% If we have defined a concept with the |\definiendum| macro, then we can mark up other
+% occurrences of the term as referring to this concept. Note that this process cannot be
+% fully automatized yet, since that would need advanced language technology to get around
+% problems of disambiguation, inflection, and non-contiguous phrases\footnote{We do have a
+% program that helps annotate larger text collections spotting the easy cases; see
+% {\url{http://kwarc.info/projects/stex}} and look for the program
+% |termin|.}. Therefore, the \DescribeMacro{\termref}|\termref| can be used to make this
+% information explicit. It takes the keys
+% \begin{compactdesc}
+% \item[\texttt{cdbase}] to specify a URI (a path actually, since {\LaTeX} cannot load
+% from URIs) where the module can be found.
+% \item[\texttt{cd}] to specify the module in which the term is defined. If the |cd| key
+% is not given, then the current module is assumed. If no |cdbase| is specified (this is
+% the usual case), then the CD has to be imported via a |\importmodule| from the
+% |modules| package~\ctancite{KohAmb:smmssl}.
+% \item[\texttt{name}] to specify the name of the definiendum (which is given in the body
+% of the |\definiendum| or the optional argument). If the |name| key is not specified,
+% then argument of the |\termref| macro is used.
+% \item[\texttt{role}] is currently unused.
+% \end{compactdesc}
+% |\termref[cd=|\meta{cd}|,name=|\meta{name}|]{|\meta{text}|}| will just typeset the link
+% text \meta{text} with (if the |hyperref| package is loaded) a hyperlink to the
+% definition in module \meta{cd} that defines the concept \meta{name}, e.g. that contains
+% |\defi[|\meta{name}|]{|\meta{text}|}|.
+%
+% Just as the |\definiendum| macro has the convenience variants |\defi|, |\defii| and
+% |\defiii|, the |\termref| has variants |\trefi|, |\trefii|, and |\trefiii| that take two
+% and three arguments for the parts of the compositum. In the same module, concepts that
+% are marked up by |\defi{|\meta{name}|}| in the definition can be referenced by
+% \DescribeMacro{\trefi}|\trefi{|\meta{name}|}|. Here the link text is just
+% \meta{name}. Concepts defined via |\defii{|\meta{first}|}{|\meta{second}|}| can be
+% referenced by \DescribeMacro{\trefii}|\trefii{|\meta{first}|}{|\meta{second}|}| (with
+% link text ``\meta{first} \meta{second}'') and analogously for |\defiii| and
+% \DescribeMacro{\trefiii}|\trefiii|. Finally, we have variants
+% \DescribeMacro{\atref*}|\atrefi|, |\atrefii|, and |\atrefiii| with alternative link
+% text. For instance |\atrefii{|\meta{text}|{|\meta{first}|}{|\meta{second}|}| references
+% a concept introduced by |\defii{|\meta{first}|}{|\meta{second}|}| but with link text
+% \meta{text}. Of course, if the system identifier is given explicitly in the optional
+% argument of the definition form, as in
+% |\defii[|\meta{name}|]{|\meta{first}|}{|\meta{second}|}|, then the terms are referenced
+% by |\trefi{|\meta{name}|}|.
+%
+% For referencing terms outside the current module, the module name can be specified in
+% the first optional argument of the |\*tref*| macros. To specify the |cdbase|, we have to
+% resort to the |\termref| macro with the keyval arguments.
+%
+% Note that the |\termref| treatment above is natural for ``concepts'' declared by the
+% |\termdef| macro from the |modules| package~\ctancite{KohAmb:smmssl}. Concepts are
+% natural language names for mathematical objects. For ``symbols'', i.e. symbolic
+% identifiers for mathematical objects used in mathematical formulae, we use the |\symdef|
+% macro from the |modules| package. Sometimes, symbols also have an associated natural
+% language concept, and we want to use the symbol name to reference it (instead of
+% specifying |cd| and |name| which is more inconvenient). For this the |statements|
+% package supplies the \DescribeMacro{\symref}|\symref| macro. Like |\termref|, and
+% invocation of |\symref{|\meta{cseq}|}{|\meta{text}|}| will just typeset \meta{text} with
+% a hyperlink to the relevant definition (i.e. the one that has the declaration
+% |for=|\meta{cseq} in the metadata argument.)
+%
+% \section{Configuration of the Presentation}\label{sec:conf}
+%
+% \DescribeMacro{\defemph} The |\defemph| macro is a configuration hook that allows to
+% specify the style of presentation of the {\index*{definiendum}}. By default, it is set to
+% |\bf| as a fallback, since we can be sure that this is always available. It can be
+% customized by redefinition: For instance |\renewcommand{\defemph}[1]{\emph{#1}}|,
+% changes the default behavior to italics.
+%
+% \DescribeMacro{\termemph} The |\termenph| macro does the same for the style for
+% |\termref|, it is empty by default. Note the term might carry an implicit hyper-reference
+% to the defining occurrence and that the presentation engine might mark this up, changing
+% this behavior.
+%
+% \DescribeMacro{\stDMemph} The |\stDMemph| macro does the same for the style for the
+% markup of the discourse markers like ``Theorem''. If it is not defined, it is set to
+% |\bf|; that allows to preset this in the class file. \ednote{function declarations}
+%
+% Some authors like to lowercase the semantic references, i.e. use ``axiom 2.6'' instead
+% of the default ``\sref{peano.P5}'' to refer to the last axiom in
+% Figure~\ref{fig:axioms}. This can be achieved by redefining the
+% \DescribeMacro{\STpresent}|\STpresent| macro, which is applied to the keyword of the
+% |ST*Env| theorem environments.\ednote{this does not quite work as yet, since
+% \textbf{STpresent} is applied when the label is written. But we would really like to
+% have it applied when the reference is constructed. But for that we need to split the
+% label into keyword and number in package |sref|.}
+%
+% Finally, we provide configuration hooks in Figure~\ref{fig:hooks} for the statement
+% types provided by the |statement| package. These are mainly intended for package authors
+% building on |statements|, e.g. for multi-language support.\ednote{we might want to
+% develop an extension \texttt{statements-babel} in the future.}.
+%\begin{exfig}
+% \begin{tabular}{lll}
+% Environment & configuration macro & value\\\hline\hline
+% \texttt{STtheoremAssEnv} & \texttt{\textbackslash st@theorem@kw} & \makeatletter\st@theorem@kw\\\hline
+% \texttt{STlemmaAssEnv} & \texttt{\textbackslash st@lemma@kw} & \makeatletter\st@lemma@kw \\\hline
+% \texttt{STpropositionAssEnv} & \texttt{\textbackslash st@proposition@kw} & \makeatletter\st@proposition@kw \\\hline
+% \texttt{STcorollaryAssEnv} & \texttt{\textbackslash st@corollary@kw} & \makeatletter\st@corollary@kw\\\hline
+% \texttt{STconjectureAssEnv} & \texttt{\textbackslash st@conjecture@kw} & \makeatletter\st@conjecture@kw\\\hline
+% \texttt{STfalseconjectureAssEnv} & \texttt{\textbackslash st@falseconjecture@kw} & \makeatletter\st@falseconjecture@kw\\\hline
+% \texttt{STpostulateAssEnv} & \texttt{\textbackslash st@postulate@kw} & \makeatletter\st@postulate@kw\\\hline
+% \texttt{STobligationAssEnv} & \texttt{\textbackslash st@obligation@kw} & \makeatletter\st@obligation@kw\\\hline
+% \texttt{STassumptionAssEnv} & \texttt{\textbackslash st@assumption@kw} & \makeatletter\st@assumption@kw\\\hline
+% \texttt{STobservationAssEnv} & \texttt{\textbackslash st@observation@kw} & \makeatletter\st@observation@kw\\\hline
+% \texttt{STexampleEnv} & \texttt{\textbackslash st@example@kw} & \makeatletter\st@example@kw\\\hline
+% \texttt{STaxiomEnv} & \texttt{\textbackslash st@axiom@kw} & \makeatletter\st@axiom@kw\\\hline
+% \texttt{STdefinitionEnv} & \texttt{\textbackslash st@definition@kw} & \makeatletter\st@definition@kw\\\hline
+% \texttt{STnotationEnv} & \texttt{\textbackslash st@notation@kw} & \makeatletter\st@notation@kw
+% \end{tabular}
+% \caption{Configuration Hooks for statement types}\label{fig:hooks}
+% \end{exfig}
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
+%
+% \section{The Implementation}\label{sec:impl}
+%
+% The |statements| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \subsection{Package Options}\label{sec:impl:options}
+%
+% We declare some switches which will modify the behavior according to the package
+% options. Generally, an option |xxx| will just set the appropriate switches to true
+% (otherwise they stay false). First we have the general options
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{omdoc}}
+% \end{macrocode}
+% Finally, we need to declare the end of the option declaration section to {\LaTeX}.
+% \begin{macrocode}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% The next measure is to ensure that some {\sTeX} packages are loaded: |omdoc| for the
+% statement keys, |modules| since we need module identifiers for referencing. Furthermore,
+% we need the |ntheorem| package for presenting statements. For {\latexml}, we also
+% initialize the package inclusions, there we do not need |ntheorem|, since the XML does
+% not do the presentation.
+% \begin{macrocode}
+%<*package>
+\RequirePackage{omtext}
+\RequirePackage{modules}
+\RequirePackage[hyperref]{ntheorem}
+\theoremstyle{plain}
+%</package>
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Package;
+RequirePackage('omtext');
+RequirePackage('modules');
+%</ltxml>
+% \end{macrocode}
+% Now, we define an auxiliary function that lowercases strings
+% \begin{macrocode}
+%<*ltxml>
+sub lowcase {my ($string) = @_; $string ? return lc(ToString($string)) : return('')}#$
+sub dashed { join('-',map($_->toString,@_));}#$
+%</ltxml>
+% \end{macrocode}
+% Sometimes it is necessary to fallback to symbol names in order to generate xml:id attributes. For this purpose,
+% we define an auxiliary function which ensures the name receives a unique NCName equivalent.\ednote{Hard to be unique here,
+% e.g. the names "foo\_bar" and "foo bar" would receive the same xml:id attributes... of course we can devise a more complex scheme
+% for the symbol replacement.}
+% \begin{macrocode}
+%<*ltxml>
+sub makeNCName {
+ my ($name) = @_;
+ my $ncname=$name;
+ $ncname=~s/\s/_/g; #Spaces to underscores
+ $ncname="_$ncname" if $ncname!~/^(\w|_)/; #Ensure start with letter or underscore
+ ##More to come...
+ $ncname;
+}
+%</ltxml>
+% \end{macrocode}
+% The following functions are strictly utility functions that makes our life easier later on
+% \begin{macrocode}
+%<*ltxml>
+sub simple_wrapper {
+ #Deref if array reference
+ my @input;
+ foreach (@_) {
+ if (ref $_ && $_ =~ /ARRAY/ && $_ !~ /LaTeXML/) {
+ @input=(@input,@$_);
+ } else
+ { push (@input,$_); }
+ }
+ return '' if (!@input);
+ @input = map(split(/\s*,\s*/,ToString($_)),@input);
+ my $output=join(" ",@input);
+ $output=~s/(^ )|[{}]//g; #remove leading space and list separator brackets
+ $output||'';
+}
+sub hash_wrapper{
+ #Deref if array reference
+ my @input;
+ foreach (@_) {
+ if (ref $_ && $_ =~ /ARRAY/ && $_ !~ /LaTeXML/) {
+ @input=(@input,@$_);
+ } else
+ { push (@input,$_); }
+ }
+ return '' if (!@input);
+ @input = map(split(/\s*,\s*/,ToString($_)),@input);
+ my $output=join(".sym #",@input);
+ $output=~s/(^\.sym )|[{}]//g; #remove leading space and list separator brackets
+ "#$output"||'';
+}
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Statements}\label{sec:impl:statements}
+%
+% \begin{macro}{\STpresent}
+% \begin{macrocode}
+%<*package>
+\providecommand\STpresent[1]{#1}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\define@statement@env}
+% We define a meta-macro that allows us to define several variants of statements. Upon
+% beginning this environment, we first set the |KeyVal| attributes, then we decide
+% whether to print the discourse marker based on the value of the |display| key, then
+% (given the right Options were set), we show the semantic annotations, and finally
+% initialize the environment using the appropriate macro. Upon ending the environment,
+% we just run the respective termination macro.
+% \begin{macrocode}
+%<*package>
+\def\define@statement@env#1{%
+\newenvironment{#1}[1][]{\metasetkeys{omtext}{##1}\sref@target%
+\ifx\omtext@display\st@flow\else%
+\ifx\omtext@title\@empty\begin{ST#1Env}\else\begin{ST#1Env}[\omtext@title]\fi%
+\ifx\sref@id\@empty\else\label{#1.\sref@id}\fi
+\csname st@#1@initialize\endcsname\fi
+\ifx\sref@id\@empty\sref@label@id{here}\else%
+\sref@label@id{\STpresent{\csname ST#1EnvKeyword\endcsname}~\@currentlabel}\fi}
+{\csname st@#1@terminate\endcsname\ifx\omtext@display\st@flow\else\end{ST#1Env}\fi}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{assertion}
+% \begin{macrocode}
+%<*package>
+\newenvironment{assertion}[1][]{\metasetkeys{omtext}{#1}\sref@target%
+\ifx\omtext@display\st@flow\else%
+\ifx\omtext@title\@empty\begin{ST\omtext@type AssEnv}%
+\else\begin{ST\omtext@type AssEnv}[\omtext@title]\fi\fi%
+\ifx\omtext@type\@empty\sref@label@id{here}\else%
+\sref@label@id{\STpresent{\csname ST\omtext@type AssEnvKeyword\endcsname}~\@currentlabel}\fi}
+{\ifx\omtext@display\st@flow\else\end{ST\omtext@type AssEnv}\fi}
+%</package>
+%<*ltxml>
+DefEnvironment('{assertion} OptionalKeyVals:omtext',
+ "<omdoc:assertion "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() "
+ . "?&KeyVal(#1,'theory')(theory='&KeyVal(#1,'theory')')() "
+ . "type='&lowcase(&KeyVal(#1,'type'))'>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "<omdoc:CMP>#body"
+ ."</omdoc:assertion>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\st@*@kw}
+% We configure the default keywords for the various theorem environments.
+% \begin{macrocode}
+%<*package>
+\def\st@theorem@kw{Theorem}
+\def\st@lemma@kw{Lemma}
+\def\st@proposition@kw{Proposition}
+\def\st@corollary@kw{Corollary}
+\def\st@conjecture@kw{Conjecture}
+\def\st@falseconjecture@kw{Conjecture (false)}
+\def\st@postulate@kw{Postulate}
+\def\st@obligation@kw{Obligation}
+\def\st@assumption@kw{Assumption}
+\def\st@observation@kw{Observation}
+% \end{macrocode}
+% \end{macro}
+% Then we configure the presentation of the theorem environments
+% \begin{macrocode}
+\theorembodyfont{\itshape}
+\theoremheaderfont{\normalfont\bfseries}
+% \end{macrocode}
+% and then we finally define the theorem environments in terms of the statement keywords
+% defined above. They are all numbered together with the section counter.
+% \begin{environment}{ST*AssEnv}
+% \begin{macrocode}
+\newtheorem{STtheoremAssEnv}{\st@theorem@kw}
+\newtheorem{STlemmaAssEnv}[STtheoremAssEnv]{\st@lemma@kw}
+\newtheorem{STpropositionAssEnv}[STtheoremAssEnv]{\st@proposition@kw}
+\newtheorem{STcorollaryAssEnv}[STtheoremAssEnv]{\st@corollary@kw}
+\newtheorem{STconjectureAssEnv}[STtheoremAssEnv]{\st@conjecture@kw}
+\newtheorem{STfalseconjectureAssEnv}[STtheoremAssEnv]{\st@falseconjecture@kw}
+\newtheorem{STpostulateAssEnv}[STtheoremAssEnv]{\st@postulate@kw}
+\newtheorem{STobligationAssEnv}[STtheoremAssEnv]{\st@obligation@kw}
+\newtheorem{STassumptionAssEnv}[STtheoremAssEnv]{\st@assumption@kw}
+\newtheorem{STobservationAssEnv}[STtheoremAssEnv]{\st@observation@kw}
+%</package>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{example}
+% \begin{macrocode}
+%<*package>
+\def\st@example@initialize{}\def\st@example@terminate{}
+\define@statement@env{example}
+\def\st@example@kw{Example}
+\theorembodyfont{\upshape}
+\newtheorem{STexampleEnv}[STtheoremAssEnv]{\st@example@kw}
+%</package>
+%<*ltxml>
+DefEnvironment('{example} OptionalKeyVals:omtext',
+ "<omdoc:example "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() "
+ . "?&KeyVal(#1,'for')(for='&hash_wrapper(&KeyVal(#1,'for'))')()>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "<omdoc:CMP>#body"
+ . "</omdoc:example>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{axiom}
+% \begin{macrocode}
+%<*package>
+\def\st@axiom@initialize{}\def\st@axiom@terminate{}
+\define@statement@env{axiom}
+\def\st@axiom@kw{Axiom}
+\theorembodyfont{\upshape}
+\newtheorem{STaxiomEnv}[STtheoremAssEnv]{\st@axiom@kw}
+%</package>
+%<*ltxml>
+DefEnvironment('{axiom} OptionalKeyVals:omtext',
+ "<omdoc:axiom "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')()>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "<omdoc:CMP>#body"
+ . "</omdoc:axiom>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{symboldec}
+% \begin{macrocode}
+%<*package>
+\srefaddidkey{symboldec}
+\addmetakey{symboldec}{functions}
+\addmetakey{symboldec}{role}
+\addmetakey*{symboldec}{title}
+\addmetakey{symboldec}{name}
+\addmetakey{symboldec}{subject}
+\addmetakey*{symboldec}{display}
+\def\symboldec@type{Symbol}
+\newenvironment{symboldec}[1][]{\metasetkeys{symboldec}{#1}\sref@target\st@indeftrue%
+\ifx\symboldec@display\st@flow\else{\stDMemph{\symboldec@type} \symboldec@name:}\fi%
+\ifx\symboldec@title\@empty~\else~(\stDMemph{\symboldec@title})\par\fi}{}
+%</package>
+%<*ltxml>
+DefEnvironment('{symboldec} OptionalKeyVals:symboldec',
+ "<omdoc:symbol "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')"
+ . "(xml:id='&makeNCName(&KeyVal(#1,'name')).def.sym')"
+ . "name='&KeyVal(#1,'name')'>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "<dc:description>#body"
+ ."</omdoc:symbol>\n");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\symtype}
+% \begin{macrocode}
+%<*package>
+\newcommand{\symtype}[2]{Type (#1): $#2$}
+%</package>
+%<*ltxml>
+DefConstructor('\symtype{}{}',
+ "<omdoc:type system='#1'><ltx:Math><ltx:XMath>#2</ltx:XMath></ltx:Math></omdoc:type>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{definition}
+% The |definition| environment itself is quite similar to the other's but we need to set
+% the |\st@indef| switch to suppress warnings from |\st@def@target|.
+% \begin{macrocode}
+%<*package>
+\newif\ifst@indef\st@indeffalse
+\newenvironment{definition}[1][]{\metasetkeys{omtext}{#1}\sref@target\st@indeftrue%
+\ifx\omtext@display\st@flow\else%
+\ifx\omtext@title\@empty\begin{STdefinitionEnv}\else\begin{STdefinitionEnv}[\omtext@title]\fi\fi%
+\ifx\sref@id\@empty\sref@label@id{here}\else%
+\sref@label@id{\STpresent{\csname STdefinitionEnvKeyword\endcsname}~\@currentlabel}\fi}
+{\ifx\omtext@display\st@flow\else\end{STdefinitionEnv}\fi}
+\def\st@definition@kw{Definition}
+\theorembodyfont{\upshape}
+\newtheorem{STdefinitionEnv}[STtheoremAssEnv]{\st@definition@kw}
+%</package>
+%<*ltxml>
+sub definitionBody {
+ my ($doc, $keyvals, %props) = @_;
+ my $for = $keyvals->getValue('for') if $keyvals;
+ my $type = $keyvals->getValue('type') if $keyvals;
+ my %for_attr=();
+ if (ToString($for)) {
+ $for = ToString($for);
+ $for =~ s/^{(.+)}$/$1/eg;
+ foreach (split(/,\s*/,$for)) {
+ $for_attr{$_}=1;
+ }}
+ if ($props{theory}) {
+ my @symbols = @{$props{defs} || []};
+ foreach my $symb(@symbols) {
+ next if $for_attr{$symb};
+ $for_attr{$symb}=1;
+ $doc->insertElement('omdoc:symbol', undef, (name=>$symb, "xml:id"=>makeNCName("$symb.def.sym")));
+ }
+ }
+ my %attrs = ();
+ $for = join(" ",(keys %for_attr));
+ $attrs{'for'} = $for if $for;
+ my $id = $keyvals->getValue('id') if $keyvals;
+ $attrs{'xml:id'} = $id if $id;
+ $attrs{'type'} = $type if $type;
+ if ($props{theory}) {
+ $doc->openElement('omdoc:definition', %attrs);
+ } else {
+ $attrs{'type'}='definition';
+ $doc->openElement('omdoc:omtext', %attrs);
+ }
+ my $title = $keyvals->getValue('title') if $keyvals;
+ if ($title) {
+ $doc->openElement('omdoc:metadata');
+ $doc->openElement('dc:title');
+ $doc->absorb($title);
+ $doc->closeElement('dc:title');}
+ $doc->openElement('omdoc:CMP');
+ $doc->absorb($props{body}) if $props{body};
+ $doc->maybeCloseElement('omdoc:CMP');
+ if ($props{theory}) {
+ $doc->closeElement('omdoc:definition');
+ } else {
+ $doc->closeElement('omdoc:omtext');
+ }
+ return; }
+DefEnvironment('{definition} OptionalKeyVals:omtext', sub{definitionBody(@_)},
+ afterDigestBegin=>sub {
+ my ($stomach, $whatsit) = @_;
+ my @symbols = ();
+ $whatsit->setProperty(theory=>LookupValue('current_module'));
+ $whatsit->setProperty(defs=>\@symbols);
+ AssignValue('defs', \@symbols); return; },
+ afterDigest => sub { AssignValue('defs', undef); return; });#$
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{notation}
+% We initialize the |\def\st@notation@initialize{}| here, and extend it with
+% functionality below.
+% \begin{macrocode}
+%<*package>
+\def\notemph#1{{\bf{#1}}}
+\def\st@notation@terminate{}
+\def\st@notation@initialize{}
+\define@statement@env{notation}
+\def\st@notation@kw{Notation}
+\theorembodyfont{\upshape}
+\newtheorem{STnotationEnv}[STtheoremAssEnv]{\st@notation@kw}
+%</package>
+%<*ltxml>
+DefEnvironment('{notation} OptionalKeyVals:omtext',
+ "<omdoc:definition "
+ . "?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id').not')()"
+ . "?&KeyVal(#1,'for')(for='&simple_wrapper(&KeyVal(#1,'for'))')()>"
+ . "?&KeyVal(#1,'title')(<dc:title>&KeyVal(#1,'title')</dc:title>)()"
+ . "<omdoc:CMP>#body"
+ . "</omdoc:definition>\n");
+DefConstructor('\notatiendum OptionalKeyVals:notation {}',
+ "<ltx:text class='notatiendum'>#2</ltx:text>");
+%</ltxml>
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\st@def@target}
+% the next macro is a variant of the |\sref@target| macro provided by the |sref| package
+% specialized for the use in the |\definiendum|, |\defi|, |\defii|, and |\defiii|
+% macros. |\st@def@target{|\meta{opt}|}{|\meta{name}|}| makes a target with label
+% |sref@|\meta{opt}|@|\meta{modulename}|@target|, if \meta{opt} is non-empty, else with
+% the label |sref@|\meta{name}|@|\meta{modulename}|@target|. Also it generates the
+% necessary warnings for a definiendum-like macro.
+% \begin{macrocode}
+%<*package>
+\def\st@def@target#1#2{\def\@test{#1}%
+\ifst@indef% if we are in a definition or such
+\ifx\omtext@theory\@empty% if there is no theory attribute
+\@ifundefined{mod@id}% if we are not in a module
+{\PackageWarning{statements}{definiendum in unidentified module\MessageBreak
+\protect\definiendum, \protect\defi,
+\protect\defii, \protect\defiii\MessageBreak
+can only be referenced when called in a module with id key}}%
+{\ifx\@test\@empty%
+\expandafter\sref@target@ifh{sref@#2@\mod@id @target}{}\else%
+\expandafter\sref@target@ifh{sref@#1@\mod@id @target}{}\fi}%
+\else\expandafter\sref@target@ifh{sref@#1@\omtext@theory @target}{}\fi%
+\else\PackageError{statements}%
+{definiendum outside definition context\MessageBreak
+\protect\definiendum, \protect\defi,
+\protect\defii, \protect\defiii\MessageBreak
+do not make sense semantically outside a definition.\MessageBreak
+Consider wrapping the defining phrase in a \protect\inlinedef}%
+\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% The |\definiendum| and |\notatiendum| macros are very simple.
+%
+% \begin{macro}{\@termdef}
+% This macro is experimental, it is supposed to be invoked in |\definiendum| to define a
+% macro with the definiendum text, so that can be re-used later in term assignments (see
+% the |modules| package). But in the current context, where we rely on {\TeX} groupings
+% for visibility, this does not work, since the invocations of |\definiendum| are in
+% |definition| environments and thus one group level too low. Keeping this for future
+% reference.
+% \begin{macrocode}
+%<*package>
+\newcommand\@termdef[2][]{\def\@test{#1}%
+\@ifundefined{mod@id}{}{\ifx\@test\@empty\def\@@name{#2}\else\def\@@name{#1}\fi%
+\termdef{\mod@id @\@@name}{#2}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\definiendum}
+% \begin{macrocode}
+%<*package>
+%\newcommand\definiendum[2][]{\st@def@target{#1}{#2}\@termdef[#1]{#2}\defemph{#2}}
+\newcommand\definiendum[2][]{\st@def@target{#1}{#2}\defemph{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\definiendum [] {}',
+ "<omdoc:term role='definiendum' name='#name' cd='#theory'>#2</omdoc:term>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+ my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $whatsit->getArg(2) unless $name;
+ $whatsit->setProperty(name=>$name->toString);
+ push(@$addr, $name->toString) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));
+ return; });#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\notatiendum}
+% the |notatiendum| macro also needs to be visible in the |notation| and |definition|
+% environments
+% \begin{macrocode}
+%<*package>
+\newcommand{\notatiendum}[2][]{\notemph{#2}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% We expand the {\latexml} bindings for |\defi|, |\defii| and |\defiii| into two
+% instances one will be used for the definition and the other for indexing.
+%
+% \begin{macro}{\defi}
+% \begin{macrocode}
+%<*package>
+\newcommand{\defi}[2][]{\definiendum[#1]{#2}\omdoc@index[#1]{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\defi[]{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>"
+ . "<omdoc:term role='definiendum' name='?#1(#1)(#2)' cd='#theory'>#2</omdoc:term>"
+ . "</omdoc:idt>"
+ . "<omdoc:ide index='default'><omdoc:idp>#2</omdoc:idp></omdoc:ide>"
+ ."</omdoc:idx>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+ my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $whatsit->getArg(2) unless $name;
+ push(@$addr, $name->toString) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));#$
+ return; },
+ alias=>'\defi');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adefi}
+% \begin{macrocode}
+%<*package>
+\newcommand{\adefi}[3][]{\def\@test{#1}%
+\ifx\@test\@empty\definiendum[#3]{#2}%
+\else\definiendum[#1]{#2}\omdoc@index[#1]{#3}\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\adefi[]{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>"
+ . "<omdoc:term role='definiendum' name='?#1(#1)(#3)' cd='#theory'>#2</omdoc:term>"
+ . "</omdoc:idt>"
+ . "<omdoc:ide index='default'><omdoc:idp>#3</omdoc:idp></omdoc:ide>"
+ ."</omdoc:idx>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+ my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $whatsit->getArg(3) unless $name;
+ push(@$addr, $name->toString) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));#$
+ return; },
+ alias=>'\adefi');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\defii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\defii}[3][]{\st@def@target{#1}{#2-#3}\defemph{#2 #3}\@twin[#1]{#2}{#3}}
+%</package>
+%<*ltxml>
+DefConstructor('\defii[]{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>"
+ . "<omdoc:term role='definiendum' name='?#1(#1)(&dashed(#2,#3))' cd='#theory'>"
+ . "#2 #3"
+ . "</omdoc:term>"
+ . "</omdoc:idt>"
+ . "<omdoc:ide index='default'>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $name->toString if $name;
+ $name = $whatsit->getArg(2)->toString.'-'.$whatsit->getArg(3)->toString unless $name;
+ push(@$addr, $name) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));
+ return; },
+ alias=>'\defii');#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adefii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\adefii}[4][]{\def\@test{#1}%
+\ifx\@test\@empty\definiendum[#3-#4]{#2}%
+\else\definiendum[#1]{#2}\@twin[#1]{#3}{#4}\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\adefii[]{}{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>"
+ . "<omdoc:term role='definiendum' name='?#1(#1)(&dashed(#3,#4))' cd='#theory'>"
+ . "#2"
+ . "</omdoc:term>"
+ . "</omdoc:idt>"
+ . "<omdoc:ide index='default'>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "<omdoc:idp>#4</omdoc:idp>"
+ . "</omdoc:ide>"
+ ."</omdoc:idx>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+ my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $name->toString if $name;
+ $name = $whatsit->getArg(3)->toString.'-'.$whatsit->getArg(4)->toString unless $name;
+ push(@$addr, $name) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));
+ return; },
+ alias=>'\defii');#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\defiii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\defiii}[4][]{\st@def@target{#1}{#2-#3-#4}\defemph{#2 #3 #4}\@atwin[#1]{#2}{#3}{#4}}
+%</package>
+%<*ltxml>
+DefConstructor('\defiii[]{}{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>"
+ . "<omdoc:term role='definiendum' cd='#theory' name='?#1(#1)(&dashed(#2,#3,#4))'>#2 #3 #4</omdoc:term>"
+ . "</omdoc:idt>"
+ . "<omdoc:ide index='default'>"
+ . "<omdoc:idp>#2</omdoc:idp>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "<omdoc:idp>#4</omdoc:idp>"
+ . "</omdoc:ide>"
+ . "</omdoc:idx>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+ my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $name->toString if $name;
+ $name = $whatsit->getArg(2)->toString.'-'.$whatsit->getArg(3)->toString.'-'.$whatsit->getArg(4)->toString unless $name;
+ push(@$addr, $name) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));
+ return; },
+ alias=>'\defiii');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adefiii}
+% \begin{macrocode}
+%<*package>
+\newcommand{\adefiii}[5][]{\def\@test{#1}%
+\ifx\@test\@empty\definiendum[#3-#4-#5]{#2}%
+\else\definiendum[#1]{#2}\@atwin[#1]{#3}{#4}{#5}\fi}
+%</package>
+%<*ltxml>
+DefConstructor('\adefiii[]{}{}{}{}',
+ "<omdoc:idx>"
+ . "<omdoc:idt>"
+ . "<omdoc:term role='definiendum' cd='#theory' name='?#1(#1)(&dashed(#3,#4,#5))'>#2</omdoc:term>"
+ . "</omdoc:idt>"
+ . "<omdoc:ide index='default'>"
+ . "<omdoc:idp>#3</omdoc:idp>"
+ . "<omdoc:idp>#4</omdoc:idp>"
+ . "<omdoc:idp>#5</omdoc:idp>"
+ . "</omdoc:ide>"
+ . "</omdoc:idx>",
+ afterDigest => sub {
+ my ($stomach, $whatsit) = @_;
+ my $addr = LookupValue('defs');
+ my $name = $whatsit->getArg(1);
+ $name = $name->toString if $name;
+ $name = $whatsit->getArg(3)->toString.'-'.$whatsit->getArg(4)->toString.'-'.$whatsit->getArg(5)->toString unless $name;
+ push(@$addr, $name) if ($addr and $name);
+ $whatsit->setProperty(theory=>LookupValue('current_module'));
+ return; },
+ alias=>'\defiii');
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\inlineex}
+% \begin{macrocode}
+%<*package>
+\newcommand{\inlineex}[2][]{\metasetkeys{omtext}{#1}\sref@target\sref@label@id{here}#2}
+%</package>
+%<*ltxml>
+DefConstructor('\inlineex OptionalKeyVals:omtext {}',
+ "<ltx:text class='example'>#2</ltx:text>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\inlinedef}
+% \begin{macrocode}
+%<*package>
+\newcommand{\inlinedef}[2][]{\metasetkeys{omtext}{#1}\sref@target\sref@label@id{here}\st@indeftrue #2}
+%</package>
+%<*ltxml>
+DefConstructor('\inlinedef OptionalKeyVals:omtext {}', sub {
+ my ($document, $keyvals, $body, %props) = @_;
+ my $for = $keyvals->getValue('for') if $keyvals;
+ my %for_attr=();
+ if (ToString($for)) {
+ $for = ToString($for);
+ $for =~ s/^{(.+)}$/$1/eg;
+ foreach (split(/,\s*/,$for)) {
+ $for_attr{$_}=1;
+ }}
+ my @symbols = @{$props{defs} || []};
+ #Prepare for symbol insertion -insert before the parent of the closest ancestor CMP element
+ my $original_node = $document->getNode;
+ my $xc = XML::LibXML::XPathContext->new( $original_node );
+ $xc->registerNs('omdoc', 'http://omdoc.org/ns');
+ my ($statement_ancestor) = $xc->findnodes('./ancestor::omdoc:CMP/..');
+ foreach my $symb(@symbols) {
+ next if $for_attr{$symb};
+ $for_attr{$symb}=1;
+ my $symbolnode = XML::LibXML::Element->new('symbol');
+ $symbolnode->setAttribute(name=>$symb);
+ $symbolnode->setAttribute("xml:id"=>makeNCName("$symb.def.sym"));
+ $statement_ancestor->parentNode->insertBefore($symbolnode,$statement_ancestor);
+ }
+ #Restore the insertion point
+ $document->setNode($original_node);
+ my %attrs = ();
+ $for = join(" ",(keys %for_attr));
+ $attrs{'for'} = $for if $for;
+ my $id = $keyvals->getValue('id') if $keyvals;
+ $attrs{'xml:id'} = $id if $id;
+$attrs{'class'} = 'inlinedef';
+ $document->openElement('ltx:text',%attrs);
+ $document->absorb($body);
+$document->closeElement('ltx:text'); },
+ #Prepare 'defs' hooks for \defi and \definiendum symbol names
+ beforeDigest=>sub {
+ my @symbols = ();
+ AssignValue('defs', \@symbols); return; },
+ #Adopt collected names as 'defs' property, remove hooks
+ afterDigest=>sub {
+ my ($stomach, $whatsit) = @_;
+ my $defsref = LookupValue('defs');
+ my @defs = @$defsref;
+ $whatsit->setProperty('defs',\@defs);
+ AssignValue('defs',undef);
+ return; });
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Cross-Referencing Symbols and Concepts}\label{sec:impl:crossref}
+%
+% \begin{macro}{\termref@set}
+% The |term| macro uses the |cd| and |name| keys for hyperlinking to create hyper-refs,
+% if the |hyperref| package is loaded: We first see if the |cd| key was given, if not we
+% define it as the local module identifier.
+% \begin{macrocode}
+%<*package>
+\addmetakey[\mod@id]{termref}{cd}
+\addmetakey{termref}{cdbase}
+\addmetakey{termref}{name}
+\addmetakey{termref}{role}
+\def\termref@set#1#2{\def\termref@name{#2}\metasetkeys{termref}{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\termref}
+% \begin{macrocode}
+\newcommand{\termref}[2][]{\metasetkeys{termref}{#1}\st@termref{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\termref OptionalKeyVals:termref {}',
+ "<omdoc:term "
+ . "?&KeyVal(#1,'cdbase')(cdbase='&KeyVal(#1,'cdbase')')() "
+ . "cd='?&KeyVal(#1,'cd')(&KeyVal(#1,'cd'))(#module)' "
+ . "name='&KeyVal(#1,'name')'>"
+ . "#2"
+ ."</omdoc:term>",
+ afterDigest=>sub{$_[1]->setProperty(module=>LookupValue('current_module'))});
+%</ltxml>%$
+% \end{macrocode}
+% \end{macro}
+% The next macro is where the actual work is done.
+% \begin{macro}{\st@termref}
+% If the |cdbase| is given, then we make a hyper-reference, otherwise we punt to
+% |\mod@termref|, which can deal with the case where the cdbase is given by the imported
+% cd.
+% \begin{macrocode}
+%<*package>
+\def\st@termref#1{\ifx\termref@name\@empty\def\termref@name{#1}\fi%
+\ifx\termref@cdbase\@empty\mod@termref\termref@cd\termref@name{#1}%
+\else\sref@href@ifh\termref@cdbase{#1}\fi}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tref*}
+% \begin{macrocode}
+%<ltxml>RawTeX('
+%<*package|ltxml>
+\newcommand\atrefi[3][]{\def\@test{#1}\ifx\@test\@empty\termref[name=#3]{#2}\else\termref[cd=#1,name=#3]{#2}\fi}
+\newcommand\atrefii[4][]{\atrefi[#1]{#2}{#3-#4}}
+\newcommand\atrefiii[5][]{\atrefi[#1]{#2}{#3-#4-#5}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tref*}
+% \begin{macrocode}
+\newcommand{\trefi}[2][]{\atrefi[#1]{#2}{#2}}
+\newcommand{\trefii}[3][]{\atrefi[#1]{#2 #3}{#2-#3}}
+\newcommand{\trefiii}[4][]{\atrefi[#1]{#2 #3 #4}{#2-#3-#4}}
+%</package|ltxml>
+%<ltxml>');
+% \end{macrocode}
+% \end{macro}
+%
+% Now we care about the configuration switches, they are set to sensible values, if they
+% are not defined already. These are just configuration parameters, which should not
+% appear in documents, therefore we do not provide {\latexml} bindings for them.
+% \begin{macro}{\*emph}
+% \begin{macrocode}
+%<*package>
+\providecommand{\termemph}[1]{#1}
+\providecommand{\defemph}[1]{{\textbf{#1}}}
+\providecommand{\stDMemph}[1]{{\textbf{#1}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\symref}
+% The |\symref| macros is quite simple, since we have done all the heavy lifting in the
+% |modules| package: we simply apply |\mod@symref@|\meta{arg1} to
+% \meta{arg2}.
+% \begin{macrocode}
+%<*package>
+\newcommand{\symref}[2]{\@nameuse{mod@symref@#1}{#2}}
+%</package>
+%<*ltxml>
+DefConstructor('\symref{}{}',
+ "<omdoc:term cd='&LookupValue('symdef.#1.cd')' name='&LookupValue('symdef.#1.name')'>"
+ . "#2"
+ ."</omdoc:term>");
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Providing IDs for {\omdoc} Elements}\label{sec:impl:ids}
+%
+% To provide default identifiers, we tag all {\omdoc}
+% elements that allow |xml:id| attributes by executing the |numberIt| procedure from |omdoc.sty.ltxml|.
+%
+% \begin{macrocode}
+%<*ltxml>
+Tag('omdoc:assertion',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:definition',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:example',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:requation',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:axiom',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:symbol',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:type',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+Tag('omdoc:term',afterOpen=>\&numberIt,afterClose=>\&locateIt);
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Deprecated Functionality}\label{sec:deprecated}
+%
+% In this section we centralize old interfaces that are only partially supported any
+% more.
+% \begin{macro}{\*def*}
+% \begin{macrocode}
+%<ltxml>RawTeX('
+%<*package|ltxml>
+\newcommand\defin[2][]{\defi[#1]{#2}%
+\PackageWarning{statements}{\protect\defin\space is deprecated, use \protect\defi\space instead}}
+\newcommand\twindef[3][]{\defii[#1]{#2}{#3}%
+\PackageWarning{statements}{\protect\twindef\space is deprecated, use \protect\defii\space instead}}
+\newcommand\atwindef[4][]{\defiii[#1]{#2}{#3}{#4}%
+\PackageWarning{statements}{\protect\atwindef\space is deprecated, use \protect\defiii\space instead}}
+\newcommand\definalt[3][]{\adefi[#1]{#2}{#3}%
+\PackageWarning{statements}{\protect\definalt\space is deprecated, use \protect\adefi\space instead}}
+\newcommand\twindefalt[4][]{\adefii[#1]{#2}{#3}{#4}%
+\PackageWarning{statements}{\protect\twindefalt\space is deprecated, use \protect\adefii\space instead}}
+\newcommand\atwindefalt[5][]{\adefiii[#1]{#2}{#3}{#4}{#5}%
+\PackageWarning{statements}{\protect\atwindefalt\space is deprecated, use \protect\adefiii\space instead}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\*def*}
+% \begin{macrocode}
+\newcommand\twinref[3][]{\trefii[#1]{#2}{#3}%
+\PackageWarning{statements}{\protect\twinref\space is deprecated, use \protect\trefii\space instead}}
+\newcommand\atwinref[4][]{\atrefiii[#1]{#2}{#3}{#4}%
+\PackageWarning{statements}{\protect\atwindef\space is deprecated, use \protect\trefiii\space instead}}
+%</package|ltxml>
+%<ltxml>');
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
+% \iffalse
+% LocalWords: GPL structuresharing STR dtx keyval env envfalse idfalse idtrue
+% LocalWords: displayfalse envtrue displaytrue forfalse typefalse titlefalse
+% LocalWords: continuesfalse fortrue fromtrue typetrue titletrue CPERL omdoc
+% LocalWords: continuestrue symboldec omtext RequirePackage lowcase lc ToString
+% LocalWords: foreach hyperref href hlink DefEnvironment OptionalKeyVals ne
+% LocalWords: KeyVal xml CMP simpleDef PatternDef DefEnvironment PatternRule
+% LocalWords: requation PatternCMP RecDef DefConstructor keyvals defs psymbols
+% LocalWords: openElement symb closeElement ffor getValue attrs metadata undef
+% LocalWords: afterDigestBegin setProperty AssignValue afterDigest definiendum
+% LocalWords: cd addr LookupValue getArg toString idx idt definiendum ide idp
+% LocalWords: DefMacro args unlist inlinedef uri pdf afterOpen numberIt texttt
+% LocalWords: iffalse consymb ntheorem textbackslash symref def scsys sc sc kw
+% LocalWords: mathml openmath latexml activemath fileversion maketitle stex
+% LocalWords: setcounter tocdepth tableofcontents newpage sproofs ulsmf08 sref
+% LocalWords: MaySch eltte09 twintoo sref subsubsection exfig vspace vspace
+% LocalWords: noindent renewtheorem hline textbf textbf footnotesize ple peano
+% LocalWords: STaxiomEnv symdef medskip succ mathbb ldots stepcounter ednote
+% LocalWords: STtheoremAssEnv stepcounter STtheoremAssEnv stepcounter defin
+% LocalWords: STtheoremAssEnv notatiendum defin smomdl biblatex twindef cdbase
+% LocalWords: twindef atwindef atwindef adjectivized varaiants twindefalt cseq
+% LocalWords: twindefalt atwindefalt atwindefalt csymbol definalt termref emph
+% LocalWords: termref compactdesc KohAmb smmssl twinref atwinref newpart impl
+% LocalWords: termdef defemph defemph renewcommand termemph termenph stDMemph
+% LocalWords: stDMemph STpresent STpresent makeatletter STlemmaAssEnv textsf
+% LocalWords: STpropositionAssEnv STcorollaryAssEnv STconjectureAssEnv langle
+% LocalWords: STfalseconjectureAssEnv STpostulateAssEnv STobligationAssEnv foo
+% LocalWords: STassumptionAssEnv STobservationAssEnv STexampleEnv textsf ltxml
+% LocalWords: STdefinitionEnv STnotationEnv printbibliography langle ncname
+% LocalWords: theoremstyle sym newenvironment ifx csname endcsname
+% LocalWords: currentlabel theorembodyfont itshape theoremheaderfont bfseries
+% LocalWords: normalfont newtheorem upshape srefaddidkey
+% LocalWords: newcommand indef newif ifst indeffalse indeftrue attr whatsit
+% LocalWords: STdefinitionEnvKeyword notemph modulename ifundefined atwin
+% LocalWords: expandafter providecommand nameuse doctex ctancite funval
+
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+% LocalWords: funsymbs findnodes symbolnode defsref
diff --git a/Master/texmf-dist/source/latex/stex/statements/statements.ins b/Master/texmf-dist/source/latex/stex/statements/statements.ins
new file mode 100644
index 00000000000..98628a07d7c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/statements/statements.ins
@@ -0,0 +1,38 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex statements.ins
+%%
+%% Copyright(c) 2005 Michael Kohlhase
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{statements.sty}{\from{statements.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated style files into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{statements.sty.ltxml}{\from{statements.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated ltxml files into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/workaddress/workaddress.dtx b/Master/texmf-dist/source/latex/stex/workaddress/workaddress.dtx
new file mode 100644
index 00000000000..78e09ed1322
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/workaddress/workaddress.dtx
@@ -0,0 +1,552 @@
+% \iffalse meta-comment
+% An Infrastructure for managing addresses and affiliations in LaTeX
+% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/workaddress/workaddress.dtx $
+% $Rev: 1999 $; last modified by $Author: kohlhase $
+% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
+% Copyright (c) 2011 Michael Kohlhase, all rights reserved
+% this file is released under the
+% LaTeX Project Public License (LPPL)
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{workaddress}[2012/01/28 v0.4 WorkAddress]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{workaddress,sref,url,array,float}
+\usepackage[show]{ed}
+\usepackage[hyperref=auto,style=alphabetic]{biblatex}
+\bibliography{kwarc}
+\usepackage{../ctansvn}
+\usepackage{hyperref}
+\usepackage{stex-logo}
+\usepackage[eso-foot,today]{svninfo}
+\svnInfo $Id: workaddress.dtx 1999 2012-01-28 07:32:11Z kohlhase $
+\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/workaddress/workaddress.dtx $
+\makeindex
+\floatstyle{boxed}
+\newfloat{exfig}{thp}{lop}
+\floatname{exfig}{Example}
+\WAperson[id=jdoe,affiliation=dfki,department=skss,
+ url=http://dfki.de/jdoe]
+ {John Doe}
+\WAperson[id=miko,affiliation=jacu,department=case,
+ url=http://kwarc.info/kohlhase]
+ {Michael Kohlhase}
+\WAinstitution[id=case,acronym=CASE,
+ url=http://jacobs-university.de/ses/case,partof=jacu]
+ {Center for Advanced Systems Engineering}
+\WAinstitution[id=jacu,url=http://jacobs-university.de,shortname=Jacobs University,acronym=JU]
+ {Jacobs University Bremen}
+\WAinstitution[id=skss,url=http://dfki.de/sks,partof=dfki,acronym=SKS,]
+ {Safe and Secure Cognitive Systems}
+\WAinstitution[id=dfki,url=http://dfki.de,acronym=DFKI,shortname=DFKI]
+ {German Research Center for Artificial Intelligence}
+\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\begin{document}\DocInput{workaddress.dtx}\end{document}
+%</driver>
+% \fi
+%
+%\CheckSum{341}
+%
+% \changes{v0.4}{2011/11/04}{Extracting from dcm.sty}
+% \changes{v0.4}{2012/01/18}{new functionality for logos}
+%
+% \GetFileInfo{workaddress.sty}
+%
+% \MakeShortVerb{\|}
+% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\latexml{\scsys{LaTeXML}}
+%
+% \title{{\texttt{workaddress.sty}}: An Infrastructure for managing Addresses and
+% Affiliations in {\LaTeX}\thanks{Version {\fileversion} (last revised {\filedate})}}
+% \author{\WAauthorblock[aff,url]{miko,jdoe}}
+% \maketitle
+% \begin{abstract}The |workaddress| package allows manage addresses and Affiliations in
+% a bib\TeX-like manner.\ednote{continue}
+% \end{abstract}
+%
+% \setcounter{tocdepth}{2}\tableofcontents\newpage
+%
+% \section{Introduction}\label{sec:intro}
+%
+% The |workaddress| package allows manage Addresses and affiliations of persons in a
+% bib\TeX-like manner.\ednote{continue}
+%
+% \section{The User Interface}\label{sec:user}
+%
+% \subsection{Package Options}\label{sec:user.options}
+%
+% The |workaddress| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
+% this is set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for
+% details and customization options).
+%
+% \subsection{Database Entries for Persons}
+%
+% The |workaddress| package recognizes that from a metadata perspective, persons are complex
+% entities. In particular, specifying metadata is a tedious and repetitive task that leads
+% to embarrassing errors. Therefore the |workaddress| package takes a hint from bibTeX and allows
+% to specify personal metadata in a database and use it by a database key.
+% \begin{exfig}[ht]
+% \begin{verbatim}
+% \WAperson[id=jdoe,affiliation=dfki,department=skss,
+% url=http://dfki.de/jdoe]
+% {John Doe}
+% \WAperson[id=miko,affiliation=jacu,department=case,
+% url=http://kwarc.info/kohlhase]
+% {Michael Kohlhase}
+% \end{verbatim}
+% \caption{A small database of Persons}
+% \label{fig:persons}
+% \end{exfig}
+% The \DescribeMacro{\WAperson}|\WAperson| macro allows to specify personal metadata\ednote{This
+% should be synchronized with the FOAF specification~\cite{FOAF:spec}} with the following
+% keys:
+% \begin{center}
+% \begin{tabular}{|l|l|l|}\hline
+% key & value & comment\\\hline\hline
+% id & string & identifier of this person\\\hline
+% birthdate & date & birthdate \\\hline
+% email & & the primary e-mail address\\\hline
+% url & URI & primary home page \\\hline
+% affiliation & Inst. identifier & the primary professional affiliation\\\hline
+% personaltitle & string & the personal title e.g. {\texttt{King}}\\\hline
+% academictitle & string & the academic title e.g. {\texttt{Prof. Dr.}}\\\hline
+% department & Inst. identifier & the department specified in the work address\\\hline
+% workaddress & long string & the work address \\\hline
+% privaddress & long string & the private address \\\hline
+% worktel & string & work telephone number \\\hline
+% privtel & string & private telephone number\\\hline
+% workfax & string & work fax number \\\hline
+% privfax & string & private fax number \\\hline
+% worktelfax & string & if the phone and fax share a prefix, give this as well \\\hline
+% privtelfax & string & dito\\\hline
+% \end{tabular}
+% \end{center}
+% In Figure~\ref{fig:persons} we have specified (minimal) metadata for the authors of the
+% |workaddress| package. The metadata can be accessed by specifying the identifiers (given by the
+% |id| key) in the |workaddress| macros defined below, see for instance the |\WAcreators| macro
+% in Figure~\ref{fig:workaddressblock}, which leads to the title block of this note.
+%
+% Like in bibTeX~\cite{Patashnik:b88}, it is a good idea to collect the metadata in a separate
+% file that is input in the document. In practice it may be possible to generate these
+% files from conventional address databases.
+%
+% \subsection{Institutions}
+%
+% Institutions are treated analogously to persons.
+% \begin{exfig}[ht]
+% \begin{verbatim}
+% \WAinstitution[id=case,partof=jacu,acronym=CASE,
+% url=http://jacobs-university.de/ses/case]
+% {Center for Advanced Systems Engineering}
+% \WAinstitution[id=jacu,url=http://jacobs-university.de]
+% {Jacobs University Bremen}
+% \WAinstitution[id=skss,partof=dfki,url=http://dfki.de/sks,acronym=SKS]
+% {Safe and Secure Cognitive Systems}
+% \WAinstitution[id=dfki,url=http://dfki.de,shortname=DFKI,acronym=DFKI]
+% {German Research Center for Artificial Intelligence}
+% \end{verbatim}
+% \caption{A small Database of Institutions and their Parts}
+% \label{fig:institutions}
+% \end{exfig}
+% The \DescribeMacro{\WAinstitution}|\WAinstitution| macro allows to specify personal
+% metadata\ednote{This should be synchronized with the FOAF
+% specification~\cite{FOAF:spec}} with the following keys:
+% \begin{center}
+% \begin{tabular}{|l|l|l|}\hline
+% key & value & comment\\\hline\hline
+% id & string & identifier of this person\\\hline
+% url & URI & primary home page \\\hline
+% partof & Inst. identifier & parent institution\\\hline
+% \end{tabular}
+% \end{center}
+%
+% \subsection{Applications}\label{sec:user.appl}
+%
+% The data from the address database can be used in various ways. For instance, the
+% \DescribeMacro{\WAauthorblock}|\WAauthorblock| macro creates a block of users and their
+% affiliations. In the context of the database from Figures~\ref{fig:persons}
+% and~\ref{fig:institutions}, |\WAauthorblock{miko,jdoe}| creates
+% \begin{center}\WAauthorblock{miko,jdoe}\end{center}
+%
+% \DescribeMacro{\wa@institution@logo}|\wa@institution@logo| creates the logo of an
+% institution from the database, and (if that is not there create a box and a message
+% instead.)
+%
+% \section{Limitations}\label{sec:limitations}
+%
+% In this section we document known limitations. If you want to help alleviate them,
+% please feel free to contact the package author. Some of them are currently discussed in
+% the \sTeX TRAC~\cite{sTeX:online}.
+% \begin{compactenum}
+% \item none reported yet
+% \end{compactenum}
+%
+% \StopEventually{\printbibliography}
+%
+% \section{The Implementation}\label{sec:impl}
+%
+% The |workaddress| package generates two files: the {\LaTeX} package (all the code between
+% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
+% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
+% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
+% since the documentation applies to both of them and to prevent them from getting out of
+% sync.
+%
+% \subsection{Package Options}\label{sec:impl.options}
+% The first step is to declare (a few) package options that handle whether certain
+% information is printed or not. They all come with their own conditionals that are set by
+% the options.
+%
+% \begin{macrocode}
+%<*package>
+\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
+\ProcessOptions
+%</package>
+% \end{macrocode}
+%
+% The first measure is to ensure that the |KeyVal| package is loaded (in the right
+% version). For {\latexml} we also initialize the package inclusions.
+% \begin{macrocode}
+%<*package>
+\RequirePackage{sref}
+\RequirePackage{pgf}
+%</package>
+%<*ltxml>
+# -*- CPERL -*-
+package LaTeXML::Package::Pool;
+use strict;
+use LaTeXML::Global;
+use LaTeXML::Package;
+RequirePackage('sref');
+%</ltxml>
+% \end{macrocode}
+%
+% \subsection{Persons}
+%
+% To implement the |\WAperson| macro, we need to implement its keywords.
+%
+% \begin{macrocode}
+%<*package>
+\addmetakey{wa@person}{id}
+\addmetakey{wa@person}{birthdate}
+\addmetakey{wa@person}{email}
+\addmetakey{wa@person}{url}
+\addmetakey{wa@person}{affiliation}
+\addmetakey{wa@person}{personaltitle}
+\addmetakey{wa@person}{academictitle}
+\addmetakey{wa@person}{department}
+\addmetakey{wa@person}{workaddress}
+\addmetakey{wa@person}{privaddress}
+\addmetakey{wa@person}{worktel}
+\addmetakey{wa@person}{privtel}
+\addmetakey{wa@person}{workfax}
+\addmetakey{wa@person}{privfax}
+\addmetakey{wa@person}{worktelfax}
+\addmetakey{wa@person}{privtelfax}
+% \end{macrocode}
+%
+% \begin{macro}{\wa@def}
+% The next macro is an auxiliary one that puts the value into an appropriate token
+% register.
+% \begin{macrocode}
+\def\wa@def#1#2#3#4{\expandafter\xdef\csname wa@#1@#2@#3\endcsname{#4}}
+%</package>
+% \end{macrocode}
+%
+% At the {\latexml} side we have a function |ExportMetadata| that does a similar job,
+% fishing out the metadata keys from the keyval arguments and storing them in a safe place
+% so they can be accessed later.
+%
+% \begin{macrocode}
+%<*ltxml>
+ sub getKeyValue_noDelim {
+ my ($keyval,$key)=@_;
+ my $valuelist = $keyval && ToString($keyval->getValue($key));
+ $valuelist =~ s/^{(.*)}$/$1/g if $valuelist;
+ return $valuelist;
+}
+sub ExportMetadata {
+ my $keys = shift;
+ my($id, $email,$affill,$address,$url,$name)=$keys
+ && map(getKeyValue_noDelim($keys,$_),qw(id email affiliation address url name));
+ if ($id) {
+ AssignValue('WA_'.$id.'_email',$email,'global') if $email;
+ AssignValue('WA_'.$id.'_affiliation',$affill,'global') if $affill;
+ AssignValue('WA_'.$id.'_address',$email,'global') if $email;
+ AssignValue('WA_'.$id.'_url',$url,'global') if $url;
+ AssignValue('WA_'.$id.'_name',$name,'global') if $name;
+ } else {print STDERR "Warning: key 'id' undefined in \\WAperson\n"};
+ return;}#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\wa@ref@test}
+% This macro tests whether the information specified is defined, and gives an error
+% message else.
+% \begin{macrocode}
+%<*package>
+\def\wa@ref@test#1#2#3{%
+\@ifundefined{wa@#1@#2@#3}%
+{\PackageError{workaddress}{reference to undefined #3 of #1 #2}%
+{you must define a #1 with #2=#3\MessageBreak%
+via the macro \protect\WA#1, before you can use it!}}
+{}}
+% \end{macrocode}
+% \end{macro}
+%
+% With this, referencing is simple
+%
+% \begin{macro}{\wa@ref}
+% \begin{macrocode}
+\def\wa@ref#1#2#3{\wa@ref@test{#1}{#2}{#3}\csname wa@#1@#2@#3\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% With this we can define the |\WAperson| macro, it just clears the keys, sets them
+% again, and stores them in token registers. If course only if a |id| attribute is given,
+% else we raise an error.
+%
+% \begin{macro}{WAperson}
+% \begin{macrocode}
+\let\wa@persons=\relax
+\newcommand{\WAperson}[2][]{\metasetkeys{wa@person}{#1}
+\ifx\wa@person@id\@empty\@latex@warning{key 'id' undefined in WAperson}\else
+\wa@def{person}\wa@person@id{id}{\wa@person@id}% redundant, but useful for checking
+\wa@def{person}\wa@person@id{name}{#2}
+\wa@def{person}\wa@person@id{email}{\wa@person@email}
+\wa@def{person}\wa@person@id{birthdate}{\wa@person@birthdate}
+\wa@def{person}\wa@person@id{url}{\wa@person@url}
+\wa@def{person}\wa@person@id{affiliation}{\wa@person@affiliation}
+\wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress}
+\wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress}
+\wa@def{person}\wa@person@id{personaltitle}{\wa@person@personaltitle}
+\wa@def{person}\wa@person@id{academictitle}{\wa@person@academictitle}
+\wa@def{person}\wa@person@id{department}{\wa@person@department}
+\wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress}
+\wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress}
+\wa@def{person}\wa@person@id{worktel}{\wa@person@worktel}
+\wa@def{person}\wa@person@id{privtel}{\wa@person@privtel}
+\wa@def{person}\wa@person@id{workfax}{\wa@person@workfax}
+\wa@def{person}\wa@person@id{privfax}{\wa@person@privfax}
+\wa@def{person}\wa@person@id{worktelfax}{\wa@person@worktelfax}
+\wa@def{person}\wa@person@id{privtelfax}{\wa@person@privtelfax}
+\@ifundefined{wa@persons}
+{\xdef\wa@persons{\wa@person@id}}
+{\xdef\wa@persons{\wa@persons,\wa@person@id}}
+\fi}
+\newcommand\DCMperson[2][]{\WAperson[#1]{#2}%
+\PackageWarning{workaddress}{\protect\DCMperson\space is deprecated, use \protect\WAperson\space instead}}
+%</package>
+%<*ltxml>
+DefKeyVal('wa@person','id','Semiverbatim');
+DefKeyVal('wa@person','birthdate','Semiverbatim');
+DefKeyVal('wa@person','email','Semiverbatim');
+DefKeyVal('wa@person','url','Semiverbatim');
+DefKeyVal('wa@person','affiliation','Semiverbatim');
+DefKeyVal('wa@person','personaltitle','Semiverbatim');
+DefKeyVal('wa@person','academictitle','Semiverbatim');
+DefKeyVal('wa@person','department','Semiverbatim');
+DefKeyVal('wa@person','workaddress','Semiverbatim');
+DefKeyVal('wa@person','privaddress','Semiverbatim');
+DefKeyVal('wa@person','worktel','Semiverbatim');
+DefKeyVal('wa@person','privtel','Semiverbatim');
+DefKeyVal('wa@person','workfax','Semiverbatim');
+DefKeyVal('wa@person','privfax','Semiverbatim');
+DefKeyVal('wa@person','worktelfax','Semiverbatim');
+DefKeyVal('wa@person','privtelfax','Semiverbatim');
+
+DefConstructor('\WAperson OptionalKeyVals:wa@person {}','',
+afterDigest=>sub {
+ my ($stomach,$whatsit)=@_;
+ my $keys=$whatsit->getArg(1);
+ my $name=ToString($whatsit->getArg(2));
+ $keys->setValue('name',$name);
+ ExportMetadata($keys);
+ return;
+});#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Institutions}
+%
+% To implement the |\WAinstitution| macro, we need to implement its keywords first.
+%
+% \begin{macrocode}
+%<*package>
+\addmetakey{wa@institution}{id}
+\addmetakey{wa@institution}{shortname}
+\addmetakey{wa@institution}{acronym}
+\addmetakey{wa@institution}{url}
+\addmetakey{wa@institution}{partof}
+\addmetakey{wa@institution}{countryshort}
+\addmetakey{wa@institution}{logo}
+\addmetakey{wa@institution}{streetaddress}
+\addmetakey{wa@institution}{townzip}
+\addmetakey{wa@institution}{type}
+\addmetakey{wa@institution}{country}
+% \end{macrocode}
+% and we proceed as for |\WAperson|,
+% \begin{macrocode}
+\let\wa@institutions=\relax
+% \end{macrocode}
+%
+% \begin{macro}{WAinstitution}
+% \begin{macrocode}
+\newcommand{\WAinstitution}[2][]{\metasetkeys{wa@institution}{#1}
+\ifx\wa@institution@id\@empty\@latex@warning{key 'id' undefined in WAinstitution}\else
+\wa@def{institution}\wa@institution@id{id}{\wa@institution@id}% redundant, but useful for checking
+\wa@def{institution}\wa@institution@id{name}{#2}
+\wa@def{institution}\wa@institution@id{shortname}{\wa@institution@shortname}
+\wa@def{institution}\wa@institution@id{acronym}{\wa@institution@acronym}
+\wa@def{institution}\wa@institution@id{url}{\wa@institution@url}
+\wa@def{institution}\wa@institution@id{partof}{\wa@institution@partof}
+\wa@def{institution}\wa@institution@id{countryshort}{\wa@institution@countryshort}
+\wa@def{institution}\wa@institution@id{logo}{\wa@institution@logo}
+\wa@def{institution}\wa@institution@id{townzip}{\wa@institution@townzip}
+\wa@def{institution}\wa@institution@id{streetaddress}{\wa@institution@streetaddress}
+\wa@def{institution}\wa@institution@id{country}{\wa@institution@country}
+\wa@def{institution}\wa@institution@id{type}{\wa@institution@type}
+\@ifundefined{wa@institutions}
+{\xdef\wa@institutions{\wa@institution@id}}
+{\xdef\wa@institutions{\wa@institutions,\wa@institution@id}}
+\fi}
+\newcommand\DCMinstitution[2][]{\WAinstitution[#1]{#2}%
+\PackageWarning{workaddress}{\protect\DCMinstitution\space is deprecated, use \protect\WAinstitution\space instead}}
+%</package>
+%<*ltxml>
+DefKeyVal('wa@institution','id','Semiverbatim');
+DefKeyVal('wa@institution','url','Semiverbatim');
+DefKeyVal('wa@institution','partof','Semiverbatim');
+DefConstructor('\WAinstitution OptionalKeyVals:wa@institution {}','',
+afterDigest=>sub {
+ my ($stomach,$whatsit)=@_;
+ my $keys=$whatsit->getArg(1);
+ my $name=ToString($whatsit->getArg(2));
+ $keys->setValue('name',$name);
+ ExportMetadata($keys);
+ return;
+});#$
+%</ltxml>
+% \end{macrocode}
+% \end{macro}
+%
+%\subsection{Applications}\label{sec:impl.appl}
+%
+% \begin{macro}{\WAauthorblock}
+% This internal macro builds an author block from a list of |\WAperson| labels in
+% |\wa@creators|.
+% \begin{macrocode}
+%<*package>
+\addmetakey[false]{WAauthorblock}{dept}[true]
+\addmetakey[false]{WAauthorblock}{aff}[true]
+\addmetakey[false]{WAauthorblock}{url}[true]
+\def\@true{true}
+\newcounter{authors}
+\newcommand\WAauthorblock[2][]{%
+\metasetkeys{WAauthorblock}{#1}
+{\let\tabularnewline\relax
+ \@for\@I:=#2\do{\stepcounter{authors}}
+ \def\@authors{}\def\@affs{}\def\@depts{}\def\@urls{}
+ \@for\@I:=#2\do
+ {\xdef\@authors{\@authors&\wa@ref{person}\@I{name}}
+ \xdef\@@dept{\wa@ref{person}\@I{department}}
+ \xdef\@shortname{\csname wa@institution@\@@dept @shortname\endcsname}
+ \xdef\@dept{\ifx\@shortname\@empty\wa@ref{institution}\@@dept{name}\else\@shortname\fi}
+ \xdef\@depts{\@depts&\@dept}
+ \xdef\@@aff{\wa@ref{person}\@I{affiliation}}
+ \xdef\@shortname{\csname wa@institution@\@@aff @shortname\endcsname}
+ \xdef\@aff{\ifx\@shortname\@empty\wa@ref{institution}\@@aff{name}\else\@shortname\fi}
+ \xdef\@affs{\@affs&\@aff}
+ \xdef\@urls{\@urls&\wa@ref{person}\@I{url}}}
+ \message{\theauthors authors: \@authors}}
+ \begin{tabular}[t]{l*{\theauthors}{c}}
+ \@authors\\
+ \ifx\WAauthorblock@dept\@true\@depts\\\fi
+ \ifx\WAauthorblock@aff\@true\@affs\\\fi
+ \ifx\WAauthorblock@url\@true\@urls\\\fi
+\end{tabular}}
+%</package>
+% \begin{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\wapname}
+% \begin{macrocode}
+%<*package>
+\newcommand\wapname[1]{\wa@ref{person}{#1}{name}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\waptname}
+% \begin{macrocode}
+%<*package>
+\newcommand\waptname[1]{\wa@ref{person}{#1}{personaltitle} \wa@ref{person}{#1}{name}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\wa@institution@logo}
+% \ednote{this code should probably be refactored into workaddress.dtx}
+% \begin{macrocode}
+%<*package>
+\newcommand\wa@institution@logo[2][]{%
+\pgfdeclareimage[#1]{logo}{\wa@ref{institution}{#2}{logo}}
+\IfFileExists{\wa@ref{institution}{#2}{logo}}%
+{\pgfuseimage{logo}}
+{\fbox{#2 logo}\message{still need logo for #2}}}
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+%\subsection{Finale}
+%
+% Finally, we need to terminate the file with a success mark for perl.
+% \begin{macrocode}
+%<ltxml>1;
+% \end{macrocode}
+% \Finale
+\endinput
+% \iffalse
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
+% \fi
+
+% LocalWords: RequirePackage birthdate personaltitle academictitle workaddress
+% LocalWords: privaddress worktel privtel workfax privfax worktelfax noDelim
+% LocalWords: privtelfax getKeyValue valuelist ToString getValue affill STDERR
+% LocalWords: ExportMetadata AssignValue WAperson DefConstructor afterDigest
+% LocalWords: getArg setValue FishOutMetadata keyvals foreach idlist tabline
+% LocalWords: LookupValue insertElement atabline bitabline shorttitle nc args
+% LocalWords: sharealike noderivativeworks DefMacro authorblock subsubsection
+% LocalWords: contribs OptionalKeyVals omgroup omdoc srcref xml RawTeX partof
+% LocalWords: openElement iffalse kohlhase Thu scsys sc sc latexml
+% LocalWords: maketitle WAtitle texttt fileversion WAcreators miko jdoe impl
+% LocalWords: WAabstract setcounter tocdepth tableofcontents newpage dmt03
+% LocalWords: WAsection ednote WAsubsection exfig hline dcmblock Patashnik
+% LocalWords: DescribeEnv WAcontributors WAshorttitle WAshorttitle WAdate
+% LocalWords: WAsubject WAsubject WAdescription WAdescription WApublisher
+% LocalWords: WApublisher WAdate WAtype WAtype WAidentifier WAidentifier
+% LocalWords: WAsource WAsource WAlanguage WAlanguage WArelation ctancite
+% LocalWords: WArelation WArights WArights WAlicense WAlicense titlepage
+% LocalWords: WAlicensenotice WAlicensenotice WAcopyrightnotice titlepage
+% LocalWords: WAcopyrightnotice WAcclicense WAcclicense user.blockstyles
+% LocalWords: WAchapter WAchatper WAsubsubsection WAsubsubsection ltxml
+% LocalWords: user.conig makeatletter printbibliography expandafter showmeta
+% LocalWords: xdef csname endcsname newcommand ifx ifundefined affs showmeta
+% LocalWords: Semiverbatim whatsit newenvironment mtabline providecommand vfil
+% LocalWords: WAsubtitle cclicense defdcm impl.blockstyles newcounter vskip
+% LocalWords: stepcounter tabularnewline theauthors lineskip textbf noindent
+% LocalWords: omd omd srefaddidkey thechapter autoclose thesection ifnum ifnum
+% LocalWords: thesubsection thesubsubsection WAparagraph ISOtimestamp doctex
+% LocalWords: WAinstitution WAinstitution compactenum textsf langle textsf
+% LocalWords: langle metakeys addmetakey metasetkeys countryshort townzip aff
+% LocalWords: streetaddress depts
diff --git a/Master/texmf-dist/source/latex/stex/workaddress/workaddress.ins b/Master/texmf-dist/source/latex/stex/workaddress/workaddress.ins
new file mode 100644
index 00000000000..af3b9cbe80a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/workaddress/workaddress.ins
@@ -0,0 +1,40 @@
+%%
+%% This file generates files required to use the ed package.
+%% At your command prompt write
+%%
+%% latex workaddress.ins
+%%
+%% Copyright(c) 2008 Michael Kohlhase
+%% The development version of this file can be found at
+%% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/workaddress/workaddress.ins $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\input docstrip
+\preamble
+\endpreamble
+
+%\usedir{tex/latex/listings}
+\keepsilent
+\askforoverwritefalse
+
+% generate base package
+\generate{\file{workaddress.sty}{\from{workaddress.dtx}{package}}}
+
+\Msg{*}
+\Msg{* You probably need to move the file workaddress.sty into a directory searched by TeX.}
+\Msg{*}
+\Msg{* And don't forget to refresh your filename database}
+\Msg{* if your TeX distribution uses such a database.}
+\Msg{*}
+
+\nopreamble\nopostamble
+\generate{\file{workaddress.sty.ltxml}{\from{workaddress.dtx}{ltxml}}}
+
+\Msg{*}
+\Msg{* You probably need to move the generated file workaddress.sty.ltxml into a directory searched by LaTeXML.}
+\Msg{*}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-bib-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-bib-xhtml.xsl
new file mode 100644
index 00000000000..82252d877af
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-bib-xhtml.xsl
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-bib-xhtml.xsl |
+| Converting documents structure to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes = "ltx f">
+
+ <!-- ======================================================================
+ Bibliography (AFTER conversion to presentation; ie only bibitem's)
+ ====================================================================== -->
+
+ <!-- NOTE: bibentry (and all it's components) are converted by postprocessing. -->
+
+ <xsl:template match="ltx:biblist" xml:space="preserve">
+ <ul class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="ltx:bibitem" xml:space="preserve">
+ <li class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="ltx:bibitem/ltx:bibtag[@role='refnum']">
+ <span class="{f:classes(.)}"><xsl:value-of select="@open"/><xsl:apply-templates/><xsl:value-of select="@close"/></span>
+ </xsl:template>
+
+ <xsl:template match="ltx:bibtag"/>
+
+ <xsl:template match="ltx:bibblock" xml:space="preserve">
+ <div class="bibblock"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-block-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-block-xhtml.xsl
new file mode 100644
index 00000000000..b4537d12637
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-block-xhtml.xsl
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-block-xhtml.xsl |
+| Converting various block-level elements to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:func = "http://exslt.org/functions"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="func f"
+ exclude-result-prefixes = "ltx func f">
+
+ <!-- ======================================================================
+ Various Blocks
+ ====================================================================== -->
+
+ <!-- no class here, since ltx:p it is generated behind the scenes (?)-->
+ <xsl:template match="ltx:p" xml:space="preserve">
+ <p style="{f:positioning(.)}" class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></p>
+ </xsl:template>
+
+ <xsl:template match="ltx:quote" xml:space="preserve">
+ <blockquote class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </blockquote>
+ </xsl:template>
+
+ <xsl:template match="ltx:block" xml:space="preserve">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:listingblock" xml:space="preserve">
+ <div class="{concat('listing ',f:classes(.))}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:listingblock/ltx:tabular" xml:space="preserve">
+ <table class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="ltx:break">
+ <br class="{f:classes(.)}"/>
+ </xsl:template>
+
+ <!-- Need to handle attributes! -->
+ <xsl:template match="ltx:inline-block" xml:space="preserve">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+ </xsl:template>
+
+ <!--<xsl:template match="ltx:verbatim" xml:space="preserve">-->
+ <xsl:template match="ltx:verbatim">
+ <xsl:choose>
+ <xsl:when test="contains(text(),'&#xA;')">
+ <pre class="{concat(f:classes(.),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))}"
+ style="{f:if(@color,concat('color:',@color),'')}"><xsl:call-template name="add_id"/><xsl:apply-templates/></pre>
+ </xsl:when>
+ <xsl:otherwise>
+ <code class="{concat(f:classes(.),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))}"
+ style="{f:if(@color,concat('color:',@color),'')}"><xsl:call-template name="add_id"/><xsl:apply-templates/></code>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- ======================================================================
+ Equation structures
+ ====================================================================== -->
+
+ <!-- Equation formatting parameters.
+ [how should these be controlled? cmdline? processing-instructions?]
+
+ The alignment capability blurs the line between the HTML structure & CSS.
+ Some things are getting hardcoded that really should be in CSS.
+ -->
+
+ <!-- Should alignments like eqnarray, align, be respected, or more semantically presented?-->
+ <xsl:param name="aligned_equations" select="true()"/>
+
+ <xsl:param name="classPI">
+ <xsl:value-of select="//processing-instruction()[local-name()='latexml'][contains(.,'class')]"/>
+ </xsl:param>
+ <!-- Equation numbers on left, or default right? -->
+ <xsl:param name="eqnopos"
+ select="f:if(//processing-instruction('latexml')[contains(substring-after(.,'options'),'leqno')],'left','right')"/>
+
+ <!-- Displayed equations centered, or indented on left? -->
+ <xsl:param name="eqpos"
+ select="f:if(//processing-instruction('latexml')[contains(substring-after(.,'options'),'fleqn')],'left','center')"/>
+
+
+ <xsl:template match="ltx:equation/@refnum | ltx:equationgroup/@refnum"
+ >(<span class='refnum'><xsl:value-of select="."/></span>)</xsl:template>
+
+ <!-- ======================================================================
+ Basic templates, dispatching on aligned or unaligned forms-->
+
+ <xsl:template match="ltx:equationgroup">
+ <xsl:choose>
+ <xsl:when test="$aligned_equations">
+ <xsl:call-template name="equationgroup-aligned"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="equationgroup-unaligned"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="ltx:equation">
+ <xsl:choose>
+ <xsl:when test="$aligned_equations">
+ <xsl:call-template name="equation-aligned"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="equation-unaligned"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Unaligned templates -->
+
+ <xsl:template name="equationgroup-unaligned" xml:space="preserve">
+ <div class='{f:classes(.)}'><xsl:call-template name="add_id"/>
+ <xsl:if test="@refnum and $eqnopos='left'"><xsl:apply-templates select="@refnum"/></xsl:if>
+ <xsl:apply-templates select="ltx:equationgroup | ltx:equation | ltx:p"/>
+ <xsl:if test="@refnum and $eqnopos='right'"><xsl:apply-templates select="@refnum"/></xsl:if>
+ <xsl:apply-templates select="ltx:constraint[not(@hidden='true')]"/>
+ </div>
+ <xsl:apply-templates select="ltx:metadata" mode="meta"/>
+ </xsl:template>
+
+ <xsl:template name="equation-unaligned" xml:space="preserve">
+ <div class='{f:classes(.)}'><xsl:call-template name="add_id"/>
+ <xsl:if test="@refnum and $eqnopos='left'"><xsl:apply-templates select="@refnum"/></xsl:if>
+ <span class='equationcontent'
+ ><xsl:apply-templates select="ltx:Math | ltx:MathFork | ltx:text"/></span>
+ <xsl:if test="@refnum and $eqnopos='right'"><xsl:apply-templates select="@refnum"/></xsl:if>
+ <xsl:apply-templates select="ltx:constraint[not(@hidden='true')]"/>
+ </div>
+ <xsl:apply-templates select="ltx:metadata" mode="meta"/>
+ </xsl:template>
+
+
+ <xsl:template name="equation-meta-unaligned">
+ <xsl:apply-templates select="ltx:constraint[not(@hidden='true')]"/>
+ <xsl:apply-templates select="ltx:metadata" mode="meta"/>
+ </xsl:template>
+
+ <!-- by default (not inside an aligned equationgroup) -->
+ <xsl:template match="ltx:MathFork">
+ <xsl:apply-templates select="ltx:Math[1]"/>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Aligned templates -->
+
+ <func:function name="f:countcolumns">
+ <xsl:param name="equation"/>
+ <func:result><xsl:value-of select="count(ltx:MathFork/ltx:MathBranch[1]/ltx:tr[1]/ltx:td
+ | ltx:MathFork/ltx:MathBranch[1]/ltx:td
+ | ltx:MathFork/ltx:MathBranch[1][not(ltx:tr or ltx:td)]
+ | ltx:Math)"/></func:result>
+ </func:function>
+
+ <func:function name="f:maxcolumns">
+ <xsl:param name="equations"/>
+ <xsl:for-each select="$equations">
+ <xsl:sort select="f:countcolumns(.)" data-type="number" order="descending"/>
+ <xsl:if test="position()=1">
+ <func:result><xsl:value-of select="f:countcolumns(.)"/></func:result>
+ </xsl:if>
+ </xsl:for-each>
+ </func:function>
+
+ <xsl:template name="equationgroup-aligned">
+ <!-- Hopefully the 1st equation row will sufficiently represent the pattern.
+ Really should be some complex of max's of sum's of... -->
+<!--
+ <xsl:param name="columns"
+ select=" ltx:equation[1]/ltx:MathFork/ltx:MathBranch[1]/ltx:tr[1]/ltx:td
+ | ltx:equation[1]/ltx:MathFork/ltx:MathBranch[1]/ltx:td
+ | ltx:equation[1]/ltx:MathFork/ltx:MathBranch[1][not(ltx:tr or ltx:td)]
+ | ltx:equation[1]/ltx:Math "/>
+ <xsl:param name="ncolumns" select="count($columns)"/>
+-->
+<!-- <xsl:param name="ncolumns" select="f:countcolumns(ltx:equation[1])"/>-->
+ <xsl:param name="ncolumns" select="f:maxcolumns(ltx:equation | ltx:equationgroup/ltx:equation)"/>
+ <table class='{f:classes(.)}'>
+ <!--<xsl:call-template name="add_id"/>-->
+ <xsl:text>
+ </xsl:text>
+ <xsl:apply-templates select="." mode="aligned">
+ <xsl:with-param name="ncolumns" select="$ncolumns"/>
+ </xsl:apply-templates>
+ <xsl:text>
+ </xsl:text>
+ </table>
+ </xsl:template>
+
+ <!-- Can an equation NOT inside equationgroup meaningfully have embedded MathForks with tr/td ??
+ Having only td's wouldn't actually do anything useful, if a single row is implied.
+ Having several tr's is possible, though nothing currently constructs such a thing.
+ Can we divide up contained Math's, etc, into something useful?...
+
+Currently we assume the content will be placed in a single tr/td. -->
+ <xsl:template name="equation-aligned">
+ <xsl:param name="ncolumns" select="f:countcolumns(.)"/>
+ <table class='{f:classes(.)}'>
+ <!--<xsl:call-template name="add_id"/>-->
+ <xsl:text>
+ </xsl:text>
+ <xsl:apply-templates select="." mode="aligned">
+ <xsl:with-param name="ncolumns" select="$ncolumns"/>
+ </xsl:apply-templates>
+ <xsl:text>
+ </xsl:text>
+ </table>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Generate the padding column (td) for a (potentially) numbered row
+ in an aligned equationgroup|equation.
+ May contain refnum for eqation or containing equationgroup.
+ And, may be omitted entirely, if not 1st row of a numbered equationgroup,
+ since that column has a rowspan for the entire table.
+ -->
+ <xsl:template name="eqnumtd">
+ <xsl:param name="side"/> <!-- left or right -->
+ <xsl:choose>
+ <xsl:when test="$eqnopos != $side"/> <!-- Wrong side: Nothing -->
+ <xsl:when test="ancestor-or-self::ltx:equationgroup[position()=1][@refnum]"> <!-- eqn.group is numbered! -->
+ <!-- place number only for 1st row -->
+ <xsl:if test="(ancestor-or-self::ltx:tr and not(preceding-sibling::ltx:tr))
+ or (not(ancestor-or-self::ltx:tr) and not(preceding-sibling::ltx:equation))">
+ <xsl:variable name="nrows"
+ select="count(
+ancestor-or-self::ltx:equationgroup[position()=1][@refnum]/descendant::ltx:equation/ltx:MathFork/ltx:MathBranch[1]/ltx:tr
+| ancestor-or-self::ltx:equationgroup[position()=1][@refnum]/descendant::ltx:equation[ltx:MathFork/ltx:MathBranch[1]/ltx:td]
+| ancestor-or-self::ltx:equationgroup[position()=1][@refnum]/descendant::ltx:equation[ltx:Math or ltx:MathFork/ltx:MathBranch[not(ltx:tr or ltx:td)]]
+| ancestor-or-self::ltx:equationgroup[position()=1][@refnum]/descendant::ltx:equation[ltx:constraint or ltx:metadata]
+ )"/>
+ <td rowspan="{$nrows}" class="{concat('middle ',$side)}">
+ <xsl:apply-templates select="ancestor-or-self::ltx:equationgroup[position()=1]/@refnum"/>
+ </td>
+ </xsl:if> <!--Else NOTHING (rowspan'd!) -->
+ </xsl:when>
+ <xsl:when test="ancestor-or-self::ltx:equation[position()=1][@refnum]"> <!-- equation is numbered! -->
+ <!-- place number only for 1st row -->
+ <xsl:if test="(ancestor-or-self::ltx:tr and not(preceding-sibling::ltx:tr))
+ or not(ancestor-or-self::ltx:tr)">
+ <xsl:variable name="nrows"
+ select="count(
+ ancestor-or-self::ltx:equation[position()=1][@refnum]
+ /ltx:MathFork/ltx:MathBranch[1]/ltx:tr
+ | ancestor-or-self::ltx:equation[position()=1][@refnum]
+ [ltx:MathFork/ltx:MathBranch[1]/ltx:td]
+ | ancestor-or-self::ltx:equation[position()=1][@refnum]
+ [ltx:Math or ltx:MathFork/ltx:MathBranch[not(ltx:tr or ltx:td)]]
+ | ancestor-or-self::ltx:equation[position()=1][@refnum][ltx:constraint or ltx:metadata]
+ )"/>
+ <td rowspan="{$nrows}" class="{concat('middle ',$side)}">
+ <xsl:apply-templates select="ancestor-or-self::ltx:equation[position()=1]/@refnum"/>
+ </td>
+ </xsl:if> <!--Else NOTHING (rowspan'd!) -->
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="eq-left">
+ <xsl:call-template name="eqnumtd"> <!--Place left number, if any-->
+ <xsl:with-param name='side' select="'left'"/>
+ </xsl:call-template>
+ <xsl:if test="$eqpos != 'left'"><td class="eqpad"/></xsl:if><!-- column for centering -->
+ </xsl:template>
+
+ <xsl:template name="eq-right">
+ <xsl:if test="$eqpos != 'right'"><td class="eqpad"/></xsl:if> <!-- Column for centering-->
+ <xsl:call-template name="eqnumtd">
+ <xsl:with-param name='side' select="'right'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Synthesizing rows & columns out for aligned equations and equationgroups
+ -->
+
+ <!-- for intertext type entries -->
+ <xsl:template match="ltx:p" mode="aligned" xml:space="preserve">
+ <xsl:param name="ncolumns"/>
+ <tr class="baseline">
+ <td class="left"
+ colspan="{1+$ncolumns+f:if($eqpos!='left',1,0)+f:if($eqpos!='right',1,0)}"
+ style="white-space:normal;"
+ ><xsl:apply-templates/></td>
+ </tr>
+ </xsl:template>
+
+ <!-- Can this reasonably deal with NESTED equationgroups?
+ Probably, assuming the previous counts of tr's and td's are done right.-->
+ <xsl:template match="ltx:equationgroup" mode="aligned">
+ <xsl:param name="ncolumns"/>
+ <xsl:apply-templates select="ltx:equationgroup | ltx:equation | ltx:p" mode="aligned">
+ <xsl:with-param name="ncolumns" select="$ncolumns"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="equation-meta-aligned">
+ <xsl:with-param name="ncolumns" select="$ncolumns"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="ltx:equation" mode="aligned">
+ <xsl:param name="ncolumns"/>
+ <xsl:choose>
+ <xsl:when test="ltx:MathFork/ltx:MathBranch[1]/ltx:tr" xml:space="preserve">
+ <tr class="{concat('baseline ',f:classes(.))}"><xsl:call-template name="add_id"/>
+ <xsl:call-template name="eq-left"/>
+ <xsl:apply-templates select="ltx:MathFork/ltx:MathBranch[1]/ltx:tr[1]/ltx:td"
+ mode="aligned"/>
+ <xsl:call-template name="eq-right"/>
+ </tr>
+ <xsl:for-each select="ltx:MathFork/ltx:MathBranch[1]/ltx:tr[position() &gt; 1]">
+ <tr class="baseline">
+ <xsl:call-template name="eq-left"/>
+ <xsl:apply-templates select="ltx:td" mode="aligned"/>
+ <xsl:call-template name="eq-right"/>
+ </tr>
+ </xsl:for-each>
+ <!--</tbody>-->
+ </xsl:when>
+ <xsl:when test="ltx:MathFork/ltx:MathBranch[1]" xml:space="preserve">
+ <tr class="{concat('baseline ',f:classes(.))}"><xsl:call-template name="add_id"/>
+ <xsl:call-template name="eq-left"/>
+ <xsl:apply-templates select="ltx:MathFork/ltx:MathBranch[1]/*"
+ mode="aligned"/>
+ <xsl:call-template name="eq-right"/>
+ </tr>
+ </xsl:when>
+ <xsl:otherwise xml:space="preserve">
+ <tr class="{concat('baseline ',f:classes(.))}"><xsl:call-template name="add_id"/>
+ <xsl:call-template name="eq-left"/>
+ <td class="{$eqpos}" colspan="{$ncolumns}"><xsl:apply-templates select="ltx:Math | ltx:text"/></td>
+ <xsl:call-template name="eq-right"/>
+ </tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="equation-meta-aligned">
+ <xsl:with-param name="ncolumns" select="$ncolumns"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- NOTE: This is pretty wacky. Maybe we should move the text inside the equation? -->
+ <xsl:template match="ltx:td" mode="aligned">
+ <td class="{concat(@align,' ',f:classes(.))}" colspan="{f:if(@colspan,@colspan,1)}">
+ <xsl:apply-templates/><xsl:if test="(self::* = ../ltx:td[position()=last()])
+ and (parent::* = ../../ltx:tr[position()=last()])
+ and ancestor::ltx:MathFork/following-sibling::*[position()=1][self::ltx:text]"
+ ><!-- if we're the last td in the last tr in an equation followed by a text,
+ insert the text here!
+ --><xsl:apply-templates select="ancestor::ltx:MathFork/following-sibling::ltx:text[1]/node()"
+ /></xsl:if></td>
+ </xsl:template>
+
+ <xsl:template match="ltx:Math" mode="aligned">
+ <td class="{concat('center ',f:classes(.))}">
+ <xsl:apply-templates select="."/><xsl:if test="
+ ancestor::ltx:MathFork/following-sibling::*[position()=1][self::ltx:text]"
+ ><!-- if we're followed by a text, insert the text here!
+ --><xsl:apply-templates select="ancestor::ltx:MathFork/following-sibling::ltx:text[1]/node()"
+ /></xsl:if></td>
+ </xsl:template>
+
+ <xsl:template name="equation-meta-aligned">
+ <xsl:param name="ncolumns"/>
+ <xsl:if test="ltx:constraint[not(@hidden='true')] or ltx:metadata">
+ <tr>
+ <td class='right' colspan="{1+$ncolumns
+ +f:if($eqpos != 'left',1,0)+f:if($eqpos != 'right',1,0)}">
+ <xsl:apply-templates select="ltx:constraint[not(@hidden='true')]"/>
+ <xsl:apply-templates select="ltx:metadata" mode="meta"/>
+ </td>
+ </tr>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="ltx:constraint">
+ <span class="{f:classes(.)}"><xsl:apply-templates/></span>
+ <span class="eqnend"/>
+ </xsl:template>
+
+ <xsl:template match="ltx:text" mode="inequationgroup"/>
+
+ <!-- ======================================================================
+ Various Lists
+ ====================================================================== -->
+
+ <xsl:template match="ltx:itemize" xml:space="preserve">
+ <ul class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="ltx:enumerate" xml:space="preserve">
+ <ol class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </ol>
+ </xsl:template>
+
+ <xsl:template match="ltx:description" xml:space="preserve">
+ <dl class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates mode='description'/>
+ </dl>
+ </xsl:template>
+
+ <xsl:template match="ltx:item">
+ <xsl:choose>
+ <xsl:when test="child::ltx:tag" xml:space="preserve">
+ <li class="{concat(f:classes(.),' nobullet')}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </li>
+ </xsl:when>
+ <xsl:otherwise xml:space="preserve">
+ <li class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="ltx:item" mode="description" xml:space="preserve">
+ <dt class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates select="ltx:tag"/></dt>
+ <dd class="{f:classes(.)}"><xsl:apply-templates select="*[local-name() != 'tag']"/></dd>
+ </xsl:template>
+
+ <xsl:template match="ltx:tag">
+ <span class="{f:classes(.)}"><xsl:value-of select="@open"/><xsl:apply-templates/><xsl:value-of select="@close"/></span>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Graphics inclusions
+ ====================================================================== -->
+
+ <xsl:template match="ltx:graphics">
+ <img src="{@imagesrc}" width="{@imagewidth}" height="{@imageheight}" class="{f:classes(.)}"
+ alt="{f:if(../ltx:figure/ltx:caption,../ltx:figure/ltx:caption/text(),@description)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@imagedepth">
+ <xsl:attribute name='style'>
+ <xsl:value-of select="concat('vertical-align:-',@imagedepth,'px;')"/>
+ </xsl:attribute>
+ </xsl:if>
+ </img>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-common.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-common.xsl
new file mode 100644
index 00000000000..ecdf089623b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-common.xsl
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| Common utility functions for stylesheet; for inclusion |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:string= "http://exslt.org/strings"
+ xmlns:func = "http://exslt.org/functions"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="func f"
+ exclude-result-prefixes = "ltx f func string">
+
+ <!-- Copy ID info from latexml elements to generated element.
+ Prefer the page-unique fragid attribute,
+ but if none, and there's an xml:id, use that instead -->
+ <xsl:template name="add_id">
+ <xsl:choose>
+ <xsl:when test="@fragid">
+ <xsl:attribute name="id"><xsl:value-of select="@fragid"/></xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@xml:id">
+ <xsl:attribute name="id"><xsl:value-of select="@xml:id"/></xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+<!-- Usage: <element class='{f:classes(.)}'>...
+ Adds space separated classes based on the current element's
+ local-name and class attribute (if any). -->
+<func:function name="f:classes">
+ <xsl:param name="node"/>
+ <xsl:choose>
+ <xsl:when test="$node/@class">
+ <func:result><xsl:value-of select="concat(local-name($node),' ',@class)"/></func:result>
+ </xsl:when>
+ <xsl:otherwise>
+ <func:result><xsl:value-of select="local-name($node)"/></func:result>
+ </xsl:otherwise>
+ </xsl:choose>
+</func:function>
+
+<!-- Three-way if as function: f:if(test,iftrue,iffalse)
+ Returns either the iftrue or iffalse branch, depending on test. -->
+<func:function name="f:if">
+ <xsl:param name="test"/>
+ <xsl:param name="iftrue"/>
+ <xsl:param name="iffalse"/>
+ <xsl:choose>
+ <xsl:when test="$test"><func:result><xsl:value-of select="$iftrue"/></func:result></xsl:when>
+ <xsl:otherwise><func:result><xsl:value-of select="$iffalse"/></func:result></xsl:otherwise>
+ </xsl:choose>
+</func:function>
+
+<!-- Computes html/css styling attributes according to attributes on the current element,
+ including Positioning.attributes, font, color, ?
+ These should (ultimately) include from Positionable.attributes:
+ width, height, depth,
+ pad-width, pad-height,
+ xoffset, yoffset,
+ align, vattach
+ And also
+ font, color, size(?), framed
+-->
+<func:function name="f:catatt">
+ <xsl:param name="conj"/>
+ <xsl:param name="val1"/>
+ <xsl:param name="val2"/>
+ <xsl:choose>
+ <xsl:when test="not($val1 = '') and not($val2 = '')">
+ <func:result><xsl:value-of select="concat($val1,$conj,$val2)"/></func:result>
+ </xsl:when>
+ <xsl:when test="not($val1 = '')">
+ <func:result><xsl:value-of select="$val1"/></func:result>
+ </xsl:when>
+ <xsl:otherwise>
+ <func:result><xsl:value-of select="$val2"/></func:result>
+ </xsl:otherwise>
+ </xsl:choose>
+</func:function>
+
+<!-- Note that width & height (& padding versions)
+ will be ignored in most cases... silly CSS.
+ Not yet done:
+ depth
+ align, vattach
+ size
+ framed=circle
+ -->
+<func:function name="f:positioning">
+ <xsl:param name="node"/>
+ <func:result>
+ <xsl:value-of
+ select="concat(f:if($node/@float, concat('float:',$node/@float,'; '),''),
+ f:if($node/@width, concat('width:',$node/@width,'; '),''),
+ f:if($node/@height, concat('height:',$node/@height,'; '),''),
+ f:if($node/@pad-width, concat('height:',$node/@pad-width,'; '),''),
+ f:if($node/@pad-height,concat('height:',$node/@pad-height,'; '),''),
+ f:if($node/@xoffset, concat('position:relative; left:',$node/@xoffset,'; '),''),
+ f:if($node/@yoffset, concat('position:relative; bottom:',$node/@yoffset,'; '),''),
+ f:if($node/@color, concat('color:',$node/@color,'; '),''),
+ f:if($node/@framed = 'rectangle','border:1px solid black; ',''),
+ f:if($node/@framed = 'underline','text-decoration:underline; ',''),
+ f:if($node/@align, concat('text-align:',$node/@align,';'),''),
+ f:if($node/@vattach, concat('vertical-align:',$node/@vattach,';'),'')
+ )"/>
+ </func:result>
+</func:function>
+
+</xsl:stylesheet>
+
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html.xsl
new file mode 100644
index 00000000000..37ea6a6fce6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html.xsl
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-html.xsl |
+| Stylesheet for converting LaTeXML documents to html |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ exclude-result-prefixes="ltx">
+
+ <xsl:output
+ method = "html"
+ omit-xml-declaration = 'yes'
+ doctype-public = "-//W3C//DTD HTML 4.01//EN"
+ doctype-system = "http://www.w3.org/TR/html4/strict.dtd"
+ media-type = 'text/html'
+ encoding = 'utf-8'
+ indent = 'yes'/>
+
+ <xsl:template name="metatype">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <html>
+ <xsl:call-template name="head"/>
+ <xsl:call-template name="body"/>
+ </html>
+ </xsl:template>
+
+<xsl:include href="LaTeXML-common.xsl"/>
+<xsl:include href="LaTeXML-inline-html.xsl"/>
+<xsl:include href="LaTeXML-block-html.xsl"/>
+<xsl:include href="LaTeXML-para-html.xsl"/>
+<xsl:include href="LaTeXML-math-image.xsl"/>
+<xsl:include href="LaTeXML-tabular-html.xsl"/>
+<xsl:include href="LaTeXML-picture-image.xsl"/>
+<xsl:include href="LaTeXML-structure-html.xsl"/>
+<xsl:include href="LaTeXML-bib-html.xsl"/>
+
+<xsl:include href="LaTeXML-webpage-html.xsl"/>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html5.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html5.xsl
new file mode 100644
index 00000000000..dcb4cac0c8e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-html5.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-html5.xsl |
+| Stylesheet for converting LaTeXML documents to html5 |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ exclude-result-prefixes="ltx">
+
+ <xsl:output
+ method = "html"
+ omit-xml-declaration="yes"
+ encoding = 'utf-8'
+ indent = 'yes'
+ media-type = 'text/html'/>
+
+ <xsl:template name="metatype">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text>
+ <html>
+ <xsl:call-template name="head"/>
+ <xsl:call-template name="body"/>
+ </html>
+ </xsl:template>
+
+<xsl:include href="LaTeXML-common.xsl"/>
+<xsl:include href="LaTeXML-inline-html.xsl"/>
+<xsl:include href="LaTeXML-block-html.xsl"/>
+<xsl:include href="LaTeXML-para-html5.xsl"/>
+<xsl:include href="LaTeXML-math-mathml-html5.xsl"/>
+<xsl:include href="LaTeXML-tabular-html.xsl"/>
+<xsl:include href="LaTeXML-picture-svg-html5.xsl"/>
+<xsl:include href="LaTeXML-structure-html5.xsl"/><!-- *** -->
+<xsl:include href="LaTeXML-bib-html.xsl"/>
+
+<xsl:include href="LaTeXML-webpage-html5.xsl"/>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-inline-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-inline-xhtml.xsl
new file mode 100644
index 00000000000..bbb7b5724d1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-inline-xhtml.xsl
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-inline-xhtml.xsl |
+| Converting various inline-level elements to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:func = "http://exslt.org/functions"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ exclude-result-prefixes = "ltx func f">
+
+<!-- ======================================================================
+ Visible inline elements
+ ====================================================================== -->
+
+<xsl:template match="ltx:text">
+ <span style="{f:positioning(.)}" class="{concat(f:classes(.),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="ltx:emph">
+ <em class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></em>
+</xsl:template>
+
+<xsl:template match="ltx:acronym">
+ <acronym class='{f:classes(.)}' title="{@name}"><xsl:call-template name="add_id"/><xsl:apply-templates/></acronym>
+</xsl:template>
+
+
+<!-- This should either get some sort of style w/width,height & background,
+ or, at most, only be an hr if it's wide & short -->
+<xsl:template match="ltx:rule">
+ <span style="{concat(f:positioning(.),'background:black; ')}" class="{f:classes(.)}">&#xA0;</span>
+</xsl:template>
+
+<xsl:template match="ltx:ref">
+ <xsl:choose>
+ <xsl:when test="not(@href) or @href=''">
+ <span class="{concat(f:classes(.),' here')}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{@href}" title="{@title}" class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- can't nest-->
+<xsl:template match="ltx:ref//ltx:ref">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="ltx:anchor">
+ <a name="{@xml:id}" class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></a>
+</xsl:template>
+
+<xsl:template match="ltx:cite">
+ <cite class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></cite>
+</xsl:template>
+
+<!-- ltx:bibref not handled, since it is translated to ref in crossref module -->
+
+<!-- ======================================================================
+ Typically invisible meta elements
+ ====================================================================== -->
+
+<!-- normally hidden -->
+<xsl:template match="ltx:note">
+ <span class="{concat(f:classes(.),' ',@role)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:call-template name="note-mark"/>
+ <span class="{concat(local-name(.),'_content_outer')}">
+ <span class="{concat(local-name(.),'_content')}">
+ <xsl:call-template name="note-mark"/>
+ <xsl:if test="not(@role = 'footnote')">
+ <span class="note-type"><xsl:value-of select="@role"/>: </span>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </span>
+ </span>
+ </span>
+</xsl:template>
+
+<xsl:template name="note-mark">
+ <sup class="mark">
+ <xsl:choose>
+ <xsl:when test="@mark"><xsl:value-of select="@mark"/></xsl:when>
+ <xsl:otherwise>&#x2020;</xsl:otherwise>
+ </xsl:choose>
+ </sup>
+</xsl:template>
+
+<xsl:template match="ltx:ERROR">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+</xsl:template>
+
+<!-- invisible -->
+<xsl:template match="ltx:indexmark"/>
+
+<xsl:template match="ltx:indexphrase">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-image.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-image.xsl
new file mode 100644
index 00000000000..519c4ffb5bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-image.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-math-image.xsl |
+| Convert math to images for html |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ exclude-result-prefixes="ltx">
+
+ <!-- could dump a tex form or something? -->
+ <xsl:template match="ltx:Math"/>
+
+ <xsl:template match="ltx:Math[@imagesrc]">
+ <img src="{@imagesrc}" width="{@imagewidth}" height="{@imageheight}"
+ alt="{@tex}" class='math'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@imagedepth">
+ <xsl:attribute name='style'>
+ <xsl:value-of select="concat('vertical-align:-',@imagedepth,'px;')"/>
+ </xsl:attribute>
+ </xsl:if>
+ </img>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml-html5.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml-html5.xsl
new file mode 100644
index 00000000000..5823af10df2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml-html5.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-math-mathml-html5.xsl |
+| copy MathML w/o namespaces for html5 |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:m = "http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes = "ltx m">
+
+ <xsl:template match="ltx:Math">
+ <xsl:apply-templates select="m:math"/>
+ </xsl:template>
+
+ <!-- Copy MathML, as is -->
+ <xsl:template match="*[namespace-uri() = 'http://www.w3.org/1998/Math/MathML']">
+ <xsl:element name="{local-name()}">
+ <xsl:for-each select="@*">
+ <xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml.xsl
new file mode 100644
index 00000000000..ca9954a3494
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-math-mathml.xsl
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-math-mathml.xsl |
+| copy MathML for xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:m = "http://www.w3.org/1998/Math/MathML"
+ xmlns:xlink = "http://www.w3.org/1999/xlink"
+ exclude-result-prefixes = "ltx">
+
+ <xsl:template match="ltx:Math">
+ <xsl:apply-templates select="m:math"/>
+ </xsl:template>
+
+ <!-- Copy MathML, as is -->
+ <xsl:template match="*[namespace-uri() = 'http://www.w3.org/1998/Math/MathML']">
+ <xsl:element name="{name()}" namespace='http://www.w3.org/1998/Math/MathML'>
+ <xsl:for-each select="@*">
+ <xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:for-each>
+ <!-- firefox needs the xlink:type attribute -->
+ <xsl:if test="@*[namespace-uri() = 'http://www.w3.org/1999/xlink'] and not(@xlink:type)">
+ <xsl:attribute name="type" namespace='http://www.w3.org/1999/xlink'>simple</xsl:attribute>
+ </xsl:if>
+ <!-- copy the ltx:Math xml:id -->
+ <xsl:if test="parent::ltx:Math/@xml:id">
+ <xsl:attribute name="xml:id"><xsl:value-of select="parent::ltx:Math/@xml:id"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-html5.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-html5.xsl
new file mode 100644
index 00000000000..735313e70ac
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-html5.xsl
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-para-html5.xsl |
+| Converting various (logical) para-level elements to html5 |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes = "ltx f">
+
+<!-- ======================================================================
+ Logical paragraphs
+ ====================================================================== -->
+
+<xsl:template match="ltx:para" xml:space="preserve">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+</xsl:template>
+
+ <!-- Need to handle attributes! -->
+ <xsl:template match="ltx:inline-para" xml:space="preserve">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+ </xsl:template>
+
+<!-- ======================================================================
+ Theorems
+ ====================================================================== -->
+
+<xsl:template match="ltx:theorem | ltx:proof" xml:space="preserve">
+ <div class='{f:classes(.)}'><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ======================================================================
+ Figures & Tables
+ ====================================================================== -->
+
+<!--
+<xsl:template match="ltx:figure | ltx:table | ltx:listing" xml:space="preserve">
+ <div class='{f:classes(.)}'><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+</xsl:template>
+-->
+
+<xsl:template match="ltx:figure | ltx:table | ltx:float | ltx:listing">
+ <figure class='{f:classes(.)}' style="{f:positioning(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:choose>
+ <xsl:when test="count(ltx:figure | ltx:table | ltx:float | ltx:listing | ltx:graphics) > 1">
+ <table style="width:100%;">
+ <tr>
+ <xsl:for-each select="ltx:figure | ltx:table | ltx:float | ltx:listing | ltx:graphics">
+ <td><xsl:apply-templates select="."/></td>
+ </xsl:for-each>
+ </tr>
+ </table>
+ <xsl:apply-templates select="ltx:caption"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </figure>
+</xsl:template>
+
+<xsl:template match="ltx:listing/ltx:tabular" xml:space="preserve">
+ <table class="{f:classes(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </table>
+</xsl:template>
+
+<xsl:template match="ltx:caption" xml:space="preserve">
+ <figcaption class="{concat(f:classes(.),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))}"
+ style="{f:if(@color,concat('color:',@color),'')}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </figcaption>
+</xsl:template>
+
+<xsl:template match="ltx:toccaption"/>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-xhtml.xsl
new file mode 100644
index 00000000000..bdaff75bc0c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-para-xhtml.xsl
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-para-xhtml.xsl |
+| Converting various (logical) para-level elements to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes = "ltx f">
+
+<!-- ======================================================================
+ Logical paragraphs
+ ====================================================================== -->
+
+<xsl:template match="ltx:para" xml:space="preserve">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+</xsl:template>
+
+ <!-- Need to handle attributes! -->
+ <xsl:template match="ltx:inline-para" xml:space="preserve">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+ </xsl:template>
+
+<!-- ======================================================================
+ Theorems
+ ====================================================================== -->
+
+<xsl:template match="ltx:theorem | ltx:proof" xml:space="preserve">
+ <div class='{f:classes(.)}'><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<!-- ======================================================================
+ Figures & Tables
+ ====================================================================== -->
+
+<!--
+<xsl:template match="ltx:figure | ltx:table | ltx:listing" xml:space="preserve">
+ <div class='{f:classes(.)}'><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+</xsl:template>
+-->
+
+<xsl:template match="ltx:figure | ltx:table | ltx:float | ltx:listing">
+ <div class='{f:classes(.)}' style="{f:positioning(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:choose>
+ <xsl:when test="count(ltx:figure | ltx:table | ltx:float | ltx:listing | ltx:graphics) > 1">
+ <table style="width:100%;">
+ <tr>
+ <xsl:for-each select="ltx:figure | ltx:table | ltx:float | ltx:listing | ltx:graphics">
+ <td><xsl:apply-templates select="."/></td>
+ </xsl:for-each>
+ </tr>
+ </table>
+ <xsl:apply-templates select="ltx:caption"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="ltx:listing/ltx:tabular" xml:space="preserve">
+ <table class="{f:classes(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </table>
+</xsl:template>
+
+<xsl:template match="ltx:caption" xml:space="preserve">
+ <div class="{concat(f:classes(.),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))}"
+ style="{f:if(@color,concat('color:',@color),'')}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="ltx:toccaption"/>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-image.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-image.xsl
new file mode 100644
index 00000000000..f3065dcce9b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-image.xsl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-picture-image.xsl |
+| Converting pictures to images for html |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes="ltx f">
+
+ <xsl:template match="ltx:picture"/>
+ <xsl:template match="ltx:picture[@imagesrc]">
+ <img src="{@imagesrc}" width="{@imagewidth}" height="{@imageheight}"
+ alt="{@tex}" class="{f:classes(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@imagedepth">
+ <xsl:attribute name='style'>
+ <xsl:value-of select="concat('vertical-align:-',@imagedepth,'px;')"/>
+ </xsl:attribute>
+ </xsl:if>
+ </img>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg-html5.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg-html5.xsl
new file mode 100644
index 00000000000..8021fbd4f22
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg-html5.xsl
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-picture-svg-html5.xsl |
+| Converting pictures to SVG w/o namespaces for html5 |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:m = "http://www.w3.org/1998/Math/MathML"
+ xmlns:svg = "http://www.w3.org/2000/svg"
+ exclude-result-prefixes = "ltx svg">
+
+ <!-- Copy SVG, as is ???? -->
+ <xsl:template match="*[namespace-uri() = 'http://www.w3.org/2000/svg']">
+ <xsl:element name="{local-name()}">
+ <xsl:for-each select="@*">
+ <xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg.xsl
new file mode 100644
index 00000000000..bad0b6f7fa3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-picture-svg.xsl
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-picture-svg.xsl |
+| Converting pictures to SVG for xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:m = "http://www.w3.org/1998/Math/MathML"
+ xmlns:svg = "http://www.w3.org/2000/svg"
+ xmlns:xlink = "http://www.w3.org/1999/xlink"
+ exclude-result-prefixes = "ltx">
+
+ <!-- Copy SVG, as is ???? -->
+ <xsl:template match="*[namespace-uri() = 'http://www.w3.org/2000/svg']">
+ <xsl:element name="{name()}" namespace='http://www.w3.org/2000/svg'>
+ <xsl:for-each select="@*">
+ <xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-html5.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-html5.xsl
new file mode 100644
index 00000000000..21dacbf3f12
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-html5.xsl
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-structure-html5.xsl |
+| Converting documents structure to html5 |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes = "ltx f">
+
+ <!-- ======================================================================
+ Document Structure
+ ====================================================================== -->
+
+ <xsl:template match="ltx:document | ltx:part | ltx:chapter
+ | ltx:section | ltx:subsection | ltx:subsubsection
+ | ltx:paragraph | ltx:subparagraph
+ | ltx:bibliography | ltx:appendix | ltx:index" xml:space="preserve">
+ <section class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </section>
+ </xsl:template>
+
+ <xsl:template match="ltx:creator[@role='author']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:personname" xml:space="preserve">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:contact[@role='address']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:contact[@role='email']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><a href="{concat('mailto:',text())}"><xsl:apply-templates/></a></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:contact[@role='dedicatory']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <!-- put in footer -->
+ <xsl:template match="ltx:date"/>
+
+ <xsl:template match="ltx:abstract" xml:space="preserve">
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>.</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:acknowledgements">
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>.</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:keywords" xml:space="preserve">
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>:</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:classification">
+ <xsl:text>
+ </xsl:text>
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <i><xsl:choose>
+ <xsl:when test='@scheme'><xsl:value-of select='@scheme'/></xsl:when>
+ <xsl:when test='@name'><xsl:value-of select='@name'/></xsl:when>
+ </xsl:choose>: </i>
+ <xsl:apply-templates/></div>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Titles.
+ ====================================================================== -->
+ <!-- Hack to determine the `levels' of various sectioning.
+ Given that the nesting could consist of any of
+ document/part/chapter/section or appendix/subsection/subsubsection
+ /paragraph/subparagraph
+ We'd like to assign h1,h2,... sensibly.
+ Or should the DTD be more specific? -->
+
+ <xsl:param name="title_level">6</xsl:param>
+
+ <xsl:param name="document_level">
+ <xsl:value-of select="1"/>
+ </xsl:param>
+
+
+ <xsl:template match="ltx:title">
+ <hgroup>
+ <h1 class="{concat(f:classes(.),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))}"
+ style="{f:if(@color,concat('color:',@color),'')}"><xsl:call-template name="add_id"/><xsl:apply-templates/></h1>
+ <xsl:apply-templates select="../ltx:subtitle"/>
+ </hgroup>
+ </xsl:template>
+
+ <xsl:template match="ltx:subtitle">
+ <h2 class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></h2>
+ </xsl:template>
+
+ <xsl:template match="ltx:toctitle"/>
+
+ <!-- ======================================================================
+ Indices
+ ====================================================================== -->
+
+ <xsl:template match="ltx:indexlist">
+ <ul class="{f:classes(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="ltx:indexentry">
+ <li class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates select="ltx:indexphrase"/>
+ <xsl:apply-templates select="ltx:indexrefs"/>
+ <xsl:apply-templates select="ltx:indexlist"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="ltx:indexrefs">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-xhtml.xsl
new file mode 100644
index 00000000000..e3665da7a25
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-structure-xhtml.xsl
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-structure-xhtml.xsl |
+| Converting documents structure to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes = "ltx f">
+
+ <!-- ======================================================================
+ Document Structure
+ ====================================================================== -->
+
+ <xsl:template match="ltx:document | ltx:part | ltx:chapter
+ | ltx:section | ltx:subsection | ltx:subsubsection
+ | ltx:paragraph | ltx:subparagraph | ltx:slide
+ | ltx:bibliography | ltx:appendix | ltx:index" xml:space="preserve">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:creator[@role='author']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:personname" xml:space="preserve">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:contact[@role='address']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:contact[@role='email']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><a href="{concat('mailto:',text())}"><xsl:apply-templates/></a></div>
+ </xsl:template>
+
+ <xsl:template match="ltx:contact[@role='dedicatory']" xml:space="preserve">
+ <div class="{concat(f:classes(.),' ',@role)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <!-- put in footer -->
+ <xsl:template match="ltx:date"/>
+
+ <xsl:template match="ltx:abstract" xml:space="preserve">
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>.</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:acknowledgements">
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>.</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:keywords[not(string(.))]" xml:space="preserve">
+ <div class="RDFa"><xsl:copy-of select="@*"/></div>
+ </xsl:template>
+
+
+ <xsl:template match="ltx:keywords" xml:space="preserve">
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>:</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ltx:classification">
+ <xsl:text>
+ </xsl:text>
+ <div class='{f:classes(.)}'>
+ <xsl:call-template name="add_id"/>
+ <i><xsl:choose>
+ <xsl:when test='@scheme'><xsl:value-of select='@scheme'/></xsl:when>
+ <xsl:when test='@name'><xsl:value-of select='@name'/></xsl:when>
+ </xsl:choose>: </i>
+ <xsl:apply-templates/></div>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Titles.
+ ====================================================================== -->
+ <!-- Hack to determine the `levels' of various sectioning.
+ Given that the nesting could consist of any of
+ document/part/chapter/section or appendix/subsection/subsubsection
+ /paragraph/subparagraph
+ We'd like to assign h1,h2,... sensibly.
+ Or should the DTD be more specific? -->
+
+ <xsl:param name="title_level">6</xsl:param>
+
+ <xsl:param name="document_level">
+ <xsl:value-of select="1"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:document/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$document_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:param name="part_level">
+ <xsl:value-of select="$document_level+number(boolean(ltx:document))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:part/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$part_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:param name="chapter_level">
+ <xsl:value-of select="$part_level+number(boolean(//ltx:part))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:chapter/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$chapter_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:param name="section_level">
+ <xsl:value-of select="$chapter_level+number(boolean(//ltx:chapter))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:section/ltx:title | ltx:bibliography/ltx:title
+ | ltx:index/ltx:title | ltx:appendix/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$section_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:param name="subsection_level">
+ <xsl:value-of select="$section_level+number(boolean(//ltx:section | //ltx:appendix
+ | //ltx:index | //ltx:bibliography))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:subsection/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$subsection_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+
+ <xsl:param name="subsubsection_level">
+ <xsl:value-of select="$subsection_level+number(boolean(//ltx:subsection))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:subsubsection/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$subsubsection_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:param name="paragraph_level">
+ <xsl:value-of select="$subsubsection_level+number(boolean(//ltx:subsubsection))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:paragraph/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$paragraph_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:param name="subparagraph_level">
+ <xsl:value-of select="$paragraph_level+number(boolean(//ltx:paragraph))"/>
+ </xsl:param>
+
+ <xsl:template match="ltx:subparagraph/ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="$subparagraph_level"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="ltx:title">
+ <xsl:call-template name="maketitle">
+ <xsl:with-param name="title_level" select="6"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Convert a title to an <h#>, with appropriate classes and content.
+ The parameter $title_level should specify the level 1-6,
+ determined by the container and its context in the document.
+ A title always appears as a child of a Labelled element. -->
+ <xsl:template name="maketitle">
+ <xsl:param name="title_level">6</xsl:param>
+ <xsl:param name="use_level">
+ <xsl:choose>
+ <xsl:when test="$title_level &gt; 6">6</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$title_level"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:element name="{concat('h',$use_level)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:attribute name="class">
+ <xsl:value-of select="concat(f:classes(.),
+ ' ',concat(local-name(..),'-title'),
+ f:if(@font,concat(' ',@font),''),
+ f:if(@size,concat(' ',@size),''))"/>
+ </xsl:attribute>
+ <xsl:if test="@color">
+ <xsl:attribute name="style">
+ <xsl:value-of select="concat('color:',@color)"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="ltx:toctitle"/>
+
+<!-- NOTE: Probably should support font, punct, etc, right? -->
+ <xsl:template match="ltx:subtitle">
+ <div class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <!-- ======================================================================
+ Indices
+ ====================================================================== -->
+
+ <xsl:template match="ltx:indexlist">
+ <ul class="{f:classes(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="ltx:indexentry">
+ <li class="{f:classes(.)}"><xsl:call-template name="add_id"/>
+ <xsl:apply-templates select="ltx:indexphrase"/>
+ <xsl:apply-templates select="ltx:indexrefs"/>
+ <xsl:apply-templates select="ltx:indexlist"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="ltx:indexrefs">
+ <span class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></span>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-tabular-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-tabular-xhtml.xsl
new file mode 100644
index 00000000000..93849426b67
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-tabular-xhtml.xsl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-tabular-xhtml.xsl |
+| Converting tabular to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ extension-element-prefixes="f"
+ exclude-result-prefixes = "ltx f">
+
+<!-- ======================================================================
+ Tabulars
+ ====================================================================== -->
+
+<xsl:template match="ltx:tabular" xml:space="preserve">
+ <table class="{f:classes(.)}">
+ <xsl:call-template name="add_id"/>
+ <xsl:apply-templates/>
+ </table>
+</xsl:template>
+
+<xsl:template match="ltx:thead" xml:space="preserve">
+ <thead class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></thead>
+</xsl:template>
+
+<xsl:template match="ltx:tbody" xml:space="preserve">
+ <tbody class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></tbody>
+</xsl:template>
+
+<xsl:template match="ltx:tfoot" xml:space="preserve">
+ <tfoot class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></tfoot>
+</xsl:template>
+
+<xsl:template match="ltx:tr" xml:space="preserve">
+ <tr class="{f:classes(.)}"><xsl:call-template name="add_id"/><xsl:apply-templates/></tr>
+</xsl:template>
+
+<xsl:template match="ltx:td">
+ <xsl:text>
+</xsl:text>
+ <xsl:element name="{f:if(@thead,'th','td')}">
+ <xsl:call-template name="add_id"/>
+ <xsl:if test="@colspan">
+ <xsl:attribute name='colspan'><xsl:value-of select='@colspan'/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@rowspan">
+ <xsl:attribute name='rowspan'><xsl:value-of select='@rowspan'/></xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="starts-with(@align,'char:')">
+ <xsl:attribute name='align'>char</xsl:attribute>
+ <xsl:attribute name='char'><xsl:value-of select="substring-after(@align,'char:')"/></xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@align">
+ <xsl:attribute name='align'><xsl:value-of select='@align'/></xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="@border">
+ <xsl:attribute name='class'><xsl:value-of select="concat(f:classes(.),' ',@border)"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name='class'><xsl:value-of select="f:classes(.)"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="@width">
+ <xsl:attribute name='width'><xsl:value-of select="@width"/></xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-html5.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-html5.xsl
new file mode 100644
index 00000000000..7e0e8b0df63
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-html5.xsl
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-webpage-html5.xsl |
+| General purpose webpage wrapper for LaTeXML documents in html5 |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns:string= "http://exslt.org/strings"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ exclude-result-prefixes = "ltx f"
+ extension-element-prefixes="string f">
+
+<xsl:param name="CSS"></xsl:param>
+<xsl:param name="ICON"></xsl:param>
+
+<!-- ======================================================================
+ The Page
+ ====================================================================== -->
+
+<xsl:param name="n">0</xsl:param>
+
+<xsl:template name="head">
+ <xsl:text>
+ </xsl:text>
+ <head><xsl:text>
+ </xsl:text>
+ <xsl:if test="*/ltx:title">
+ <title>
+ <xsl:apply-templates select="*/ltx:title" mode="visible-text"/>
+ <xsl:for-each select="//ltx:navigation/ltx:ref[@class='up']"
+ > &#x2023; <xsl:value-of select="@title"/></xsl:for-each>
+ </title>
+ </xsl:if>
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="metatype"/>
+ <xsl:if test="/*/ltx:navigation/ltx:ref[@class='start']"><xsl:text>
+ </xsl:text>
+ <link rel="start" href="{/*/ltx:navigation/ltx:ref[@class='start']/@href}"
+ title="{normalize-space(.//ltx:navigation/ltx:ref[@class='start']/@title)}"/>
+ </xsl:if>
+ <xsl:if test="/*/ltx:navigation/ltx:ref[@class='previous']"><xsl:text>
+ </xsl:text>
+ <link rel="prev" href="{/*/ltx:navigation/ltx:ref[@class='previous']/@href}"
+ title="{normalize-space(.//ltx:navigation/ltx:ref[@class='previous']/@title)}"/>
+ </xsl:if>
+ <xsl:if test="/*/ltx:navigation/ltx:ref[@class='next']"><xsl:text>
+ </xsl:text>
+ <link rel="next" href="{/*/ltx:navigation/ltx:ref[@class='next']/@href}"
+ title="{normalize-space(.//ltx:navigation/ltx:ref[@class='next']/@title)}"/>
+ </xsl:if>
+ <xsl:if test='$ICON'>
+ <link rel="shortcut icon" href="{$ICON}" type="image/x-icon"/>
+ </xsl:if>
+ <xsl:if test='$CSS'>
+ <xsl:for-each select="string:split($CSS,'|')"><xsl:text>
+ </xsl:text>
+ <link rel='stylesheet' type="text/css" href="{text()}"/>
+ </xsl:for-each>
+ </xsl:if>
+ <xsl:if test="//ltx:indexphrase"><xsl:text>
+ </xsl:text>
+ <meta name="keywords" xml:lang="en-us">
+ <xsl:attribute name="content">
+ <xsl:for-each select="//ltx:indexphrase[not(.=preceding::ltx:indexphrase)]">
+ <xsl:sort select="text()"/>
+ <xsl:if test="position() &gt; 1">, </xsl:if>
+ <xsl:value-of select="text()"/>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ <!-- Should include ltx:keywords here? But, we don't know how the content is formatted!-->
+ <xsl:text>
+ </xsl:text>
+ </head>
+</xsl:template>
+
+<xsl:template match="text()" mode="visible-text"><xsl:value-of select="."/></xsl:template>
+<xsl:template match="*" mode="visible-text"><xsl:apply-templates mode="visible-text"/></xsl:template>
+<xsl:template match="ltx:indexphrase" mode="visible-text"/>
+
+<xsl:template name="body">
+ <xsl:text>
+ </xsl:text>
+ <body>
+ <xsl:call-template name="navbar"/>
+ <xsl:text>
+ </xsl:text>
+ <div class='main'>
+ <xsl:call-template name="header"/>
+ <xsl:text>
+ </xsl:text>
+ <div class='content'>
+ <xsl:apply-templates/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ <xsl:call-template name="footer"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ <xsl:text>
+ </xsl:text>
+ </body>
+</xsl:template>
+
+<!-- ======================================================================
+ Header & Footer
+ ====================================================================== -->
+
+<!--
+<xsl:template name="navbar">
+ <xsl:if test="//ltx:navigation/ltx:toclist">
+ <xsl:text>
+ </xsl:text>
+ <div class='navbar'>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='start']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:toclist"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ </xsl:if>
+</xsl:template>
+-->
+<xsl:template name="navbar">
+ <xsl:if test="//ltx:navigation/ltx:TOC">
+ <xsl:text>
+ </xsl:text>
+ <nav class='navbar'>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='start']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:TOC"/>
+ <xsl:text>
+ </xsl:text>
+ </nav>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="header">
+ <xsl:if test="//ltx:navigation/ltx:ref">
+ <xsl:text>
+ </xsl:text>
+ <header class='header'>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='up']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='previous']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='next']"/>
+ <xsl:text>
+ </xsl:text>
+ </header>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="footer">
+ <xsl:if test="//ltx:date[@role='creation' or @role='conversion'][1] | //ltx:navigation/ltx:ref">
+ <xsl:text>
+ </xsl:text>
+ <footer class='footer'>
+ <xsl:value-of select='//ltx:date/node()'/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='previous']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='next']"/>
+ <xsl:text>
+ </xsl:text>
+ </footer>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="ltx:navigation"/>
+
+<!-- ======================================================================
+ Tables of Contents.
+ ====================================================================== -->
+<!-- explictly requested TOC -->
+<xsl:template match="ltx:TOC[@format='short']">
+ <xsl:apply-templates mode="short"/>
+</xsl:template>
+
+<xsl:template match="ltx:TOC[@format='veryshort']">
+ <xsl:apply-templates mode="veryshort"/>
+</xsl:template>
+
+<xsl:template match="ltx:TOC">
+ <xsl:if test="ltx:toclist/descendant::ltx:tocentry">
+ <xsl:text>
+ </xsl:text>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>:</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="ltx:toclist" mode="short">
+ <xsl:text>
+ </xsl:text>
+ <div class="shorttoc"><xsl:text>
+ &#x2666; </xsl:text><xsl:apply-templates mode="short"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="ltx:toclist" mode="veryshort">
+ <xsl:text>
+ </xsl:text>
+ <div class="veryshorttoc">&#x2666;<xsl:apply-templates mode="veryshort"/></div>
+</xsl:template>
+
+<xsl:template match="ltx:toclist[@tocindent]">
+ <xsl:text>
+ </xsl:text>
+ <ul class="{concat('toc toclevel',floor((@tocindent+3) div 4))}">
+ <xsl:apply-templates/>
+ <xsl:text>
+ </xsl:text>
+ </ul>
+</xsl:template>
+
+<xsl:template match="ltx:toclist">
+ <xsl:text>
+ </xsl:text>
+ <ul class="toc">
+ <xsl:apply-templates/>
+ <xsl:text>
+ </xsl:text>
+ </ul>
+</xsl:template>
+
+<xsl:template match="ltx:tocentry">
+ <xsl:text>
+ </xsl:text>
+ <li class="{f:classes(.)}"><xsl:call-template name='add_id'/><xsl:apply-templates/></li>
+</xsl:template>
+
+<xsl:template match="ltx:tocentry" mode="short">
+ <xsl:apply-templates/><xsl:text> &#x2666; </xsl:text>
+</xsl:template>
+
+<xsl:template match="ltx:tocentry" mode="veryshort">
+ <xsl:apply-templates/>&#x2666;</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-xhtml.xsl
new file mode 100644
index 00000000000..560233fec27
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-webpage-xhtml.xsl
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-webpage-xhtml.xsl |
+| General purpose webpage wrapper for LaTeXML documents in xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:string= "http://exslt.org/strings"
+ xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
+ exclude-result-prefixes = "ltx f"
+ extension-element-prefixes="string f">
+
+<xsl:param name="CSS"></xsl:param>
+<xsl:param name="ICON"></xsl:param>
+
+<!-- ======================================================================
+ The Page
+ ====================================================================== -->
+
+<xsl:param name="n">0</xsl:param>
+
+<xsl:template name="head">
+ <xsl:text>
+ </xsl:text>
+ <head><xsl:text>
+ </xsl:text>
+ <xsl:if test="*/ltx:title">
+ <title>
+ <xsl:apply-templates select="*/ltx:title" mode="visible-text"/>
+ <xsl:for-each select="//ltx:navigation/ltx:ref[@class='up']"
+ > &#x2023; <xsl:value-of select="@title"/></xsl:for-each>
+ </title>
+ </xsl:if>
+ <xsl:text>
+ </xsl:text>
+ <xsl:call-template name="metatype"/>
+ <xsl:if test="/*/ltx:navigation/ltx:ref[@class='start']"><xsl:text>
+ </xsl:text>
+ <link rel="start" href="{/*/ltx:navigation/ltx:ref[@class='start']/@href}"
+ title="{normalize-space(.//ltx:navigation/ltx:ref[@class='start']/@title)}"/>
+ </xsl:if>
+ <xsl:if test="/*/ltx:navigation/ltx:ref[@class='previous']"><xsl:text>
+ </xsl:text>
+ <link rel="prev" href="{/*/ltx:navigation/ltx:ref[@class='previous']/@href}"
+ title="{normalize-space(.//ltx:navigation/ltx:ref[@class='previous']/@title)}"/>
+ </xsl:if>
+ <xsl:if test="/*/ltx:navigation/ltx:ref[@class='next']"><xsl:text>
+ </xsl:text>
+ <link rel="next" href="{/*/ltx:navigation/ltx:ref[@class='next']/@href}"
+ title="{normalize-space(.//ltx:navigation/ltx:ref[@class='next']/@title)}"/>
+ </xsl:if>
+ <xsl:if test='$ICON'>
+ <link rel="shortcut icon" href="{$ICON}" type="image/x-icon"/>
+ </xsl:if>
+ <xsl:if test='$CSS'>
+ <xsl:for-each select="string:split($CSS,'|')"><xsl:text>
+ </xsl:text>
+ <link rel='stylesheet' type="text/css" href="{text()}"/>
+ </xsl:for-each>
+ </xsl:if>
+ <xsl:if test="//ltx:indexphrase"><xsl:text>
+ </xsl:text>
+ <meta name="keywords" xml:lang="en-us">
+ <xsl:attribute name="content">
+ <xsl:for-each select="//ltx:indexphrase[not(.=preceding::ltx:indexphrase)]">
+ <xsl:sort select="text()"/>
+ <xsl:if test="position() &gt; 1">, </xsl:if>
+ <xsl:value-of select="text()"/>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+ <!-- Should include ltx:keywords here? But, we don't know how the content is formatted!-->
+ <xsl:text>
+ </xsl:text>
+ </head>
+</xsl:template>
+
+<xsl:template match="text()" mode="visible-text"><xsl:value-of select="."/></xsl:template>
+<xsl:template match="*" mode="visible-text"><xsl:apply-templates mode="visible-text"/></xsl:template>
+<xsl:template match="ltx:indexphrase" mode="visible-text"/>
+
+<xsl:template name="body">
+ <xsl:text>
+ </xsl:text>
+ <body>
+ <xsl:call-template name="navbar"/>
+ <xsl:text>
+ </xsl:text>
+ <div class='main'>
+ <xsl:call-template name="header"/>
+ <xsl:text>
+ </xsl:text>
+ <div class='content'>
+ <xsl:apply-templates/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ <xsl:call-template name="footer"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ <xsl:text>
+ </xsl:text>
+ </body>
+</xsl:template>
+
+<!-- ======================================================================
+ Header & Footer
+ ====================================================================== -->
+
+<!--
+<xsl:template name="navbar">
+ <xsl:if test="//ltx:navigation/ltx:toclist">
+ <xsl:text>
+ </xsl:text>
+ <div class='navbar'>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='start']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:toclist"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ </xsl:if>
+</xsl:template>
+-->
+<xsl:template name="navbar">
+ <xsl:if test="//ltx:navigation/ltx:TOC">
+ <xsl:text>
+ </xsl:text>
+ <div class='navbar'>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='start']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:TOC"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="header">
+ <xsl:if test="//ltx:navigation/ltx:ref">
+ <xsl:text>
+ </xsl:text>
+ <div class='header'>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='up']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='previous']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='next']"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="footer">
+ <xsl:if test="//ltx:date[@role='creation' or @role='conversion'][1] | //ltx:navigation/ltx:ref">
+ <xsl:text>
+ </xsl:text>
+ <div class='footer'>
+ <xsl:value-of select='//ltx:date/node()'/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='previous']"/>
+ <xsl:apply-templates select="//ltx:navigation/ltx:ref[@class='next']"/>
+ <xsl:text>
+ </xsl:text>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="ltx:navigation"/>
+
+<!-- ======================================================================
+ Tables of Contents.
+ ====================================================================== -->
+<!-- explictly requested TOC -->
+<xsl:template match="ltx:TOC[@format='short']">
+ <xsl:apply-templates mode="short"/>
+</xsl:template>
+
+<xsl:template match="ltx:TOC[@format='veryshort']">
+ <xsl:apply-templates mode="veryshort"/>
+</xsl:template>
+
+<xsl:template match="ltx:TOC">
+ <xsl:if test="ltx:toclist/descendant::ltx:tocentry">
+ <xsl:text>
+ </xsl:text>
+ <xsl:if test="@name"><h6><xsl:apply-templates select="@name"/><xsl:text>:</xsl:text></h6></xsl:if>
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="ltx:toclist" mode="short">
+ <xsl:text>
+ </xsl:text>
+ <div class="shorttoc"><xsl:text>
+ &#x2666; </xsl:text><xsl:apply-templates mode="short"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="ltx:toclist" mode="veryshort">
+ <xsl:text>
+ </xsl:text>
+ <div class="veryshorttoc">&#x2666;<xsl:apply-templates mode="veryshort"/></div>
+</xsl:template>
+
+<xsl:template match="ltx:toclist[@tocindent]">
+ <xsl:text>
+ </xsl:text>
+ <ul class="{concat('toc toclevel',floor((@tocindent+3) div 4))}">
+ <xsl:apply-templates/>
+ <xsl:text>
+ </xsl:text>
+ </ul>
+</xsl:template>
+
+<xsl:template match="ltx:toclist">
+ <xsl:text>
+ </xsl:text>
+ <ul class="toc">
+ <xsl:apply-templates/>
+ <xsl:text>
+ </xsl:text>
+ </ul>
+</xsl:template>
+
+<xsl:template match="ltx:tocentry">
+ <xsl:text>
+ </xsl:text>
+ <li class="{f:classes(.)}"><xsl:call-template name='add_id'/><xsl:apply-templates/></li>
+</xsl:template>
+
+<xsl:template match="ltx:tocentry" mode="short">
+ <xsl:apply-templates/><xsl:text> &#x2666; </xsl:text>
+</xsl:template>
+
+<xsl:template match="ltx:tocentry" mode="veryshort">
+ <xsl:apply-templates/>&#x2666;</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-xhtml.xsl b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-xhtml.xsl
new file mode 100644
index 00000000000..7b56175b8d6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/LaTeXML-xhtml.xsl
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/=====================================================================\
+| LaTeXML-xhtml.xsl |
+| Stylesheet for converting LaTeXML documents to xhtml |
+|=====================================================================|
+| Part of LaTeXML: |
+| Public domain software, produced as part of work done by the |
+| United States Government & not subject to copyright in the US. |
+|=====================================================================|
+| Bruce Miller <bruce.miller@nist.gov> #_# |
+| http://dlmf.nist.gov/LaTeXML/ (o o) |
+\=========================================================ooo==U==ooo=/
+-->
+<xsl:stylesheet
+ version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
+ xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:m = "http://www.w3.org/1998/Math/MathML"
+ xmlns:svg = "http://www.w3.org/2000/svg"
+ exclude-result-prefixes = "ltx">
+
+ <xsl:output method="xml"
+ doctype-public = "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+ doctype-system = "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"
+ media-type = 'application/xhtml+xml'
+ encoding = 'utf-8'
+ indent = "yes"/>
+<!-- doctype-system = "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" -->
+ <xsl:template name="metatype">
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <html xmlns = "http://www.w3.org/1999/xhtml"
+ xmlns:m = "http://www.w3.org/1998/Math/MathML"
+ xmlns:svg = "http://www.w3.org/2000/svg">
+ <xsl:copy-of select="/ltx:document/namespace::*[not(local-name() = 'ltx')]"/>
+ <xsl:call-template name="head"/>
+ <xsl:call-template name="body"/><xsl:text>
+ </xsl:text>
+ </html>
+ </xsl:template>
+
+<xsl:include href="LaTeXML-common.xsl"/>
+<xsl:include href="LaTeXML-inline-xhtml.xsl"/>
+<xsl:include href="LaTeXML-block-xhtml.xsl"/>
+<xsl:include href="LaTeXML-para-xhtml.xsl"/>
+<xsl:include href="LaTeXML-math-mathml.xsl"/>
+<xsl:include href="LaTeXML-tabular-xhtml.xsl"/>
+<xsl:include href="LaTeXML-picture-svg.xsl"/>
+<xsl:include href="LaTeXML-structure-xhtml.xsl"/>
+<xsl:include href="LaTeXML-bib-xhtml.xsl"/>
+
+<xsl:include href="LaTeXML-webpage-xhtml.xsl"/>
+
+</xsl:stylesheet>
+
+
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/amsart.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/amsart.css
new file mode 100644
index 00000000000..5865875b873
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/amsart.css
@@ -0,0 +1,11 @@
+/* A somewhat amsart-like style */
+h1, h2, h3, h4, h5, h6, .author .authorname
+ { font-family:serif; font-variant:small-caps;}
+.author
+ { font-family:serif; }
+
+h1, h2, h3
+ { text-align:center; color:#700303; }
+
+.para > p:first-child { text-indent: 2em; }
+p { text-align:justify; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/closedbib.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/closedbib.css
new file mode 100644
index 00000000000..d4ed13f403c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/closedbib.css
@@ -0,0 +1,5 @@
+/*======================================================================
+ closedbib.css
+ supplemental style for LaTeXML documents converted to (X)HTML */
+
+.bibblock { display:inline; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/core.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/core.css
new file mode 100644
index 00000000000..1007bca0ee7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/core.css
@@ -0,0 +1,157 @@
+/*======================================================================
+ Core CSS for LaTeXML documents converted to (X)HTML */
+
+/* Generic Page layout */
+/* Header & footer */
+/*.header:before { content:url(latexml.png); }*/
+.header,.footer { font-size:80%; }
+.header .previous,
+.footer .previous { float:left; }
+.header .up,
+.footer { display:block; text-align:center; }
+.header .next,
+.footer .next { float:right; }
+.header li { padding:0.1em 0.2em 0.1em 1em;}
+
+/* Main content */
+.content { clear:both; padding-top:5px; border-top:1px solid; }
+.footer { margin-top:5px; border-top:1px solid; }
+
+/* if shown */
+.navbar .toc li { margin-left:-0.5em; }
+.navbar li { white-space:nowrap; display:block; overflow:hidden; }
+.navbar li .here { white-space:normal; overflow:visible; }
+
+.slide {width: 95%;
+ margin: 5mm 5mm 5mm 5mm;
+ border-style:solid;
+ border-width:medium;
+ padding: 10pt;
+ position: relative;
+}
+
+/*======================================================================
+ Titles & Frontmatter */
+h1 { text-align:center; font-size: 150%; font-family:sans-serif;}
+h2 { font-family:sans-serif; padding-left:0.2em; margin-left:-0.5em; }
+h3 { font-family:sans-serif; padding-left:0.2em; margin-left:-0.3em; }
+/* h6 { display:run-in; }*/
+/* Hack to simulate run-in! */
+h6 { display:inline; font-size:100%; font-family:sans-serif; }
+h6:after { content:" "; }
+h6 + div.para,
+h6 + p { display:inline; }
+
+.subtitle { text-align:center; font-size: 120%; font-family:sans-serif;
+ padding-left:0.2em; margin-left:-0.5em; }
+.author { text-align:center; font-family:sans-serif; }
+.author .personname { font-size: 130%; }
+.dedicatory { font-style:oblique; }
+.classification,
+.keywords { font-size:90%; margin-left:4em; }
+.abstract { margin:1em 4em 1em 4em; }
+.toc li { list-style-type:none; }
+
+.navbar { display: none; } /* override! */
+.main { margin:0px; padding:1em 3em 1em 2em; }
+
+/*======================================================================
+ Blocks, Lists, Floats */
+.inline-block { display:inline-block; }
+div.equation { display:block; width:95%; text-align:center; }
+.equation span.refnum.left { position:absolute; left:2em; }
+.equation span.refnum.right { position:absolute; right:2em; }
+
+.equation td { width:auto; }
+table.equation,
+table.equationgroup { width:100%; }
+/* Hide this from IE */
+tr > td.eqpad { width:50%; }
+
+dl.description dt { margin-right:0.5em; float:left;
+ font-weight:bold; font-size:95%; }
+dl.description dd { margin-left:5em; }
+dl.description dl.description dd { margin-left:3em; }
+
+.theorem {margin:1em 0em 1em 0em; }
+
+.bibliography dt { margin-right:0.5em; float:left; }
+.bibliography dd { margin-left:3em; }
+.biblist { list-style-type:none; }
+.bibtag { font-weight:bold; margin-left:-2em; width:3em; }
+/*.bibitem-tag + div { display:inline; }*/
+.bib-title { font-style:italic; }
+.bib-article .bib-title { font-style:normal !important; }
+.bib-journal { font-style:italic; }
+.bib-volume { font-weight:bold; }
+
+.indexlist li { list-style-type:none; }
+.indexlist { margin-left:1em; padding-left:1em;}
+.listing td.linenumber,
+.listingblock td.linenumber
+ { width:3em; text-align:right;}
+/*======================================================================
+ Borders and such */
+.framed { border:1px solid black;}
+.tabular td, .tabular th { padding:0.1em 0.5em; }
+table { border-collapse:collapse; }
+/* Hmm... the star should be m:mtd */
+td.t, th.t, *[class~="t"] { border-top:1px solid black; }
+td.r, th.r, *[class~="r"] { border-right:1px solid black; }
+td.b, th.b, *[class~="b"] { border-bottom:1px solid black; }
+td.l, th.l, *[class~="l"] { border-left:1px solid black; }
+td.tt, th.tt, *[class~="tt"] { border-top:3px double black; }
+td.rr, th.rr, *[class~="rr"] { border-right:3px double black; }
+td.bb, th.bb, *[class~="bb"] { border-bottom:3px double black; }
+td.ll, th.ll, *[class~="ll"] { border-left:3px double black; }
+
+td.left, th.left { text-align:left; white-space:nowrap; }
+td.right, th.right { text-align:right; white-space:nowrap; }
+td.center, th.center { text-align:center; white-space:nowrap; }
+td.middle, th.middle, tr.middle { vertical-align:middle; }
+td.baseline, th.baseline, tr.baseline { vertical-align:baseline; }
+
+/*======================================================================
+ Low-level Basics */
+.TINY { font-size:50%; }
+.Tiny { font-size:60%; }
+.tiny { font-size:65%; }
+.script { font-size:70%; }
+.footnote { font-size:80%; }
+.small { font-size:90%; }
+.normal { font-size:100%; }
+.large { font-size:110%; }
+.Large { font-size:120%; }
+.LARGE { font-size:140%; }
+.huge { font-size:150%; }
+.Huge { font-size:170%; }
+.HUGE { font-size:200%; }
+.sansserif { font-family: sans-serif; }
+.typewriter { font-family: monospace; }
+.bold { font-weight: bold; }
+.medium { font-weight: normal; }
+.italic { font-style: italic; }
+.upright { font-style: normal; }
+.slanted { font-style: oblique; }
+.smallcaps { font-variant: small-caps; }
+.red { color:red; }
+.centering { text-align:center;
+ margin:auto; }
+.inline-block.centering,
+img.centering { display:block;
+ margin:auto; }
+.flushleft { text-align:left; }
+.flushright { text-align:right; }
+.ERROR { color:red; }
+cite { font-style: normal; }
+
+/*======================================================================
+ pop-up footnotes, endnote, margin */
+.note .note_content {display:none; }
+.note .note_content {
+ width: 70%; right:5%; font-size:80%;
+ background:#E0E0E0; border:3px outset gray; }
+.note .mark { color:blue; }
+.note-type { font-weight: bold; }
+.note:hover .note_content
+ { display:block; position:absolute; z-index:10; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/marginpar.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/marginpar.css
new file mode 100644
index 00000000000..fb6888573cf
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/marginpar.css
@@ -0,0 +1,11 @@
+/* A simple example of CSS for placing marginpar in margin.
+ (more sophisticated layout probably requires xslt) */
+.note.margin .mark { display:none; }
+.note.margin .note-type { display:none; }
+.note.margin .note_content {
+ display:block;
+ position:fixed; left:83%; width:15%;
+ background-color: transparent; border:0pt; }
+
+/* Narrower, to make room for marginpar */
+.main { width:80%; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-left.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-left.css
new file mode 100644
index 00000000000..dc8cf31d1a8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-left.css
@@ -0,0 +1,9 @@
+/* CSS for left navigation bar */
+
+.navbar { display:block!important; position:fixed; left:0px; top:0px; width:170px;
+ margin:0em; padding:1em; font: bold 75% sans-serif;
+ border: 3px double; }
+.navbar ul { margin-left:-2em; }
+.main { position:absolute; left:190px; top:0px; right:2px;
+ margin:0px; padding:1em 3em 1em 2em;
+ width:70%; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-right.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-right.css
new file mode 100644
index 00000000000..16af01b4005
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/navbar-right.css
@@ -0,0 +1,7 @@
+/* CSS for left navigation bar */
+
+.navbar { display:block!important; position:fixed; left:80%; top:0px; width:20%;
+ margin:0em; padding:1em; font: bold 75% sans-serif; }
+.navbar ul { margin-left:-2em; }
+.main { margin:0px; padding:1em 3em 1em 2em;
+ width:75%; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/theme-blue.css b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/theme-blue.css
new file mode 100644
index 00000000000..9e3659bc7cd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/LaTeXML/theme-blue.css
@@ -0,0 +1,15 @@
+/* Blue theme */
+body { background:#FFFFFF; color:#000000; }
+
+/*
+.navbar { border-right: 3px double #087d9d;
+ border-bottom: 5px double #087d9d; background:#e5f7fb; }
+*/
+.navbar { border: 5px double #087d9d; background:#e5f7fb; }
+
+.content { border-top:1px solid #087d9d; }
+.footer { border-top:1px solid #087d9d; }
+
+h2 { border-top: 5px double #087d9d; border-left: 3px double #087d9d; background:#e5f7fb; }
+h3 { border-top: 1px solid #087d9d; border-left: 1px solid #087d9d; background:#e7faff; }
+th, *[class~="thead"] { background-color:#e5f7fb; }
diff --git a/Master/texmf-dist/source/latex/stex/xsl/Makefile b/Master/texmf-dist/source/latex/stex/xsl/Makefile
new file mode 100644
index 00000000000..1263948fb88
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/Makefile
@@ -0,0 +1 @@
+all:
diff --git a/Master/texmf-dist/source/latex/stex/xsl/doc.xsl b/Master/texmf-dist/source/latex/stex/xsl/doc.xsl
new file mode 100644
index 00000000000..dddb3ab85f8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/doc.xsl
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML islands to OMDoc (Open Mathematical Documents).
+ $Id: doc.xsl 1858 2011-08-30 16:14:23Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/doc.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://omdoc.org/ns"
+ xmlns:omdoc="http://omdoc.org/ns"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ exclude-result-prefixes="xsl omdoc xhtml ltx dc">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="/">
+ <xsl:comment>This OMDoc document is generated from an sTeX-encoded one via LaTeXML, you may want to reconsider editing it.</xsl:comment>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="omdoc:omdoc">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates/>
+ <!-- not needed any more
+ <xsl:comment>The data elements</xsl:comment>
+ <xsl:apply-templates mode="extract-data"/> -->
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="ltx:ERROR"/>
+<xsl:template match="*|text()" mode="extract-data">
+ <xsl:apply-templates mode="extract-data"/>
+</xsl:template>
+
+<!-- we directly access the content of titles -->
+<xsl:template match="ltx:title"/>
+<xsl:template match="ltx:part|ltx:chapter|ltx:part|ltx:section|ltx:subsection|ltx:subsubsection|ltx:paragraph|ltx:subparagraph">
+ <omgroup layout="sectioning" class="{local-name()}">
+ <xsl:copy-of select="@*"/>
+ <metadata>
+ <dc:title><xsl:apply-templates select="ltx:title/*|ltx:title/text()"/></dc:title>
+ </metadata>
+ <xsl:apply-templates/>
+ </omgroup>
+</xsl:template>
+
+<!-- get rid of the mock-omdoc sectioning commands -->
+<xsl:template match="omdoc:part|omdoc:chapter|omdoc:section|omdoc:subsection|omdoc:subsubsection|omdoc:paragraph|omdoc:subparagraph">
+ <omgroup class="{local-name()}">
+ <xsl:copy-of select="@*|*"/>
+ </omgroup>
+</xsl:template>
+
+<xsl:template match="ltx:para">
+ <omtext><xsl:copy-of select="@*"/><CMP><xsl:apply-templates/></CMP></omtext>
+</xsl:template>
+
+<!-- not needed any more
+<xsl:template match="ltx:text">
+ <xhtml:span>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="@font">
+ <xsl:attribute name="class"><xsl:value-of select="@font"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </phrase>
+</xsl:template> -->
+
+<!-- for citations we just extract the bibrefs at the moment. -->
+<xsl:template match="ltx:cite"><xsl:apply-templates select="ltx:bibref"/></xsl:template>
+<xsl:template match="ltx:bibref">
+ <citation><xsl:copy-of select="@bibrefs"/></citation>
+</xsl:template>
+
+<xsl:template match="ltx:break"><xhtml:br/></xsl:template>
+
+<!-- for LaTeXML references from \url -->
+<xsl:template match="ltx:ref[@class='url']">
+ <link href="{@href}" class="url">
+ <xsl:value-of select="ltx:text"/>
+ </link>
+</xsl:template>
+
+<xsl:template match="ltx:ref[@labelref]">
+ <ref type="cite" xref="{@labelref}"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/graphics.xsl b/Master/texmf-dist/source/latex/stex/xsl/graphics.xsl
new file mode 100644
index 00000000000..9c31fd54581
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/graphics.xsl
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML islands to OMDoc (Open Mathematical Documents).
+ $Id: graphics.xsl 1858 2011-08-30 16:14:23Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/graphics.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://omdoc.org/ns"
+ xmlns:omdoc="http://omdoc.org/ns"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:str="http://exslt.org/strings"
+ extension-element-prefixes="str"
+ exclude-result-prefixes="xsl omdoc xhtml ltx dc str">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<!-- we do not need to special-case this any more
+<xsl:template match="ltx:graphics|ltx:verbatim">
+ <omlet action="display" data="#{generate-id()}" show="embed" style="{translate(@options,'=',':')}">
+ <xsl:copy-of select="@*"/>
+ </omlet>
+</xsl:template> -->
+
+<xsl:template match="omdoc:tikz">
+ <omlet action="display" data="#{generate-id()}" show="embed" style="{translate(@options,'=',':')}">
+ <xsl:copy-of select="@*"/>
+ </omlet>
+</xsl:template>
+
+<xsl:template match="ltx:figure[ltx:graphics]">
+ <omlet action="display" data="#{generate-id(ltx:graphics)}" show="embed" class="float-figure-{@placement}">
+ <xsl:if test="@label">
+ <xsl:attribute name="xml:id"><xsl:value-of select="@label"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="ltx:graphics/@options">
+ <xsl:attribute name="style"><xsl:value-of select="translate(ltx:graphics/@options,'=',':')"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="ltx:caption/*|ltx:caption/text()">
+ <metadata><dc:title><xsl:apply-templates select="ltx:caption/*|ltx:caption/text()"/></dc:title></metadata>
+ </xsl:if>
+ </omlet>
+</xsl:template>
+
+<xsl:template match="ltx:graphics" mode="extract-data">
+ <private>
+ <xsl:attribute name="xml:id"><xsl:value-of select="generate-id()"/></xsl:attribute>
+ <xsl:variable name="sources" select="str:tokenize(@sources,',')"/>
+ <xsl:variable name="graphic" select="@graphic"/>
+ <xsl:for-each select="$sources">
+ <xsl:variable name="current" select="."/>
+ <xsl:variable name="type">
+ <xsl:choose>
+ <xsl:when test="$current='jpg'">
+ <xsl:value-of select="'image/jpeg'"/>
+ </xsl:when>
+ <xsl:when test="$current='jpeg'">
+ <xsl:value-of select="'image/jpeg'"/>
+ </xsl:when>
+ <xsl:when test="$current='png'">
+ <xsl:value-of select="'image/png'"/>
+ </xsl:when>
+ <xsl:when test="$current='gif'">
+ <xsl:value-of select="'image/gif'"/>
+ </xsl:when>
+ <xsl:when test="$current='eps'">
+ <xsl:value-of select="'application/postscript'"/>
+ </xsl:when>
+ <xsl:when test="$current='ps'">
+ <xsl:value-of select="'application/postscript'"/>
+ </xsl:when>
+ <xsl:when test="$current='ai'">
+ <xsl:value-of select="'application/postscript'"/>
+ </xsl:when>
+ <xsl:when test="$current='pdf'">
+ <xsl:value-of select="'application/pdf'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$current"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <data format="{$type}" href="{$graphic}.{.}"/>
+ </xsl:for-each>
+ </private>
+</xsl:template>
+
+<!-- we do not need to special-case this any more
+<xsl:template match="ltx:verbatim" mode="extract-data">
+ <private>
+ <xsl:attribute name="xml:id"><xsl:value-of select="generate-id()"/></xsl:attribute>
+ <data format="text"><xsl:value-of select="text()"/></data>
+ </private>
+</xsl:template>
+-->
+
+<xsl:template match="omdoc:tikz|ltx:tikz" mode="extract-data">
+ <private>
+ <xsl:attribute name="xml:id"><xsl:value-of select="generate-id()"/></xsl:attribute>
+ <data format="tikz"><xsl:value-of select="."/></data>
+ </private>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/listings.xsl b/Master/texmf-dist/source/latex/stex/xsl/listings.xsl
new file mode 100644
index 00000000000..eaf706326d4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/listings.xsl
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML listings to OMDoc (Open Mathematical Documents).
+ $Id: listings.xsl 1728 2011-02-06 16:22:09Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/listings.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://omdoc.org/ns"
+ xmlns:omdoc="http://omdoc.org/ns"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ exclude-result-prefixes="omdoc ltx xsl">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="ltx:text[@class='listing']">
+ <omdoc:phrase type='progsnippet'><xsl:copy-of select="@*"/><xsl:apply-templates/></omdoc:phrase>
+</xsl:template>
+
+<xsl:template match="ltx:listingblock">
+ <omlet action='display' show='embed' style='display:block'>
+ <xsl:copy-of select="@*"/>
+ <code>
+ <data format='listingblock'><xsl:apply-templates mode="listing"/></data>
+ </code>
+ </omlet>
+</xsl:template>
+
+<xsl:template match="ltx:tabular" mode="listing">
+ <table class="listing"><xsl:apply-templates mode="listing"/></table>
+</xsl:template>
+
+<xsl:template match="ltx:tr" mode="listing">
+ <tr><xsl:apply-templates mode="listing"/></tr>
+</xsl:template>
+
+<xsl:template match="ltx:td" mode="listing">
+ <td><xsl:apply-templates mode="listing"/></td>
+</xsl:template>
+
+<xsl:template match="ltx:text[not(@*)]" mode="listing">
+ <xsl:apply-templates mode="listing"/>
+</xsl:template>
+
+<xsl:template match="ltx:text[@font='bold']" mode="listing">
+ <keyword><xsl:apply-templates mode="listing"/></keyword>
+</xsl:template>
+
+<xsl:template match="ltx:text[@color]" mode="listing">
+ <phrase>
+ <xsl:attribute name='type'><xsl:text>lstemph</xsl:text></xsl:attribute>
+ <xsl:attribute name='style'><xsl:text>color:</xsl:text><xsl:value-of select="@color"/></xsl:attribute>
+ <xsl:apply-templates mode="listing"/>
+ </phrase>
+</xsl:template>
+
+<xsl:template match="ltx:text[@class]" mode="listing">
+ <xsl:apply-templates mode="listing"/>
+</xsl:template>
+
+
+<xsl:template match="ltx:*" mode="listing">
+ <xsl:message>cannot deal with element <xsl:value-of select="local-name()"/> yet!</xsl:message>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl b/Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl
new file mode 100644
index 00000000000..9ee31d4fa18
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML islands to CNXML
+ $Id: ltxml2cnx.xsl 1728 2011-02-06 16:22:09Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/ltxml2cnx.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns='http://cnx.rice.edu/cnxml'
+ xmlns:m='http://www.w3.org/1998/Math/MathML'
+ xmlns:md="http://cnx.rice.edu/mdml/0.4"
+ xmlns:bib="http://bibtexml.sf.net/"
+ exclude-result-prefixes="ltx md bib"
+ version="1.0">
+
+ <xsl:output method="xml" indent="yes"
+ doctype-public="-//CNX//DTD CNXML 0.5 plus MathML//EN"
+ doctype-system="http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd"/>
+
+ <xsl:strip-space elements="*"/>
+
+<!-- if there is no other template, give a warning -->
+<!-- <xsl:template match="*">
+ <xsl:message>Cannot deal with element <xsl:value-of select="local-name()"/> yet! (id=<xsl:value-of select="@xml:id"/>)</xsl:message>
+ <xsl:comment>elided element <xsl:value-of select="local-name()"/></xsl:comment>
+ </xsl:template> -->
+
+ <xsl:template match="*">
+ <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="ltx:Math">
+ <xsl:copy-of select="m:math"/>
+ </xsl:template>
+
+<xsl:template match="ltx:*">
+ <xsl:element name="{local-name()}">
+ <xsl:copy-of select="@*"/><xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="ltx:tabular">
+ <table>
+ <xsl:copy-of select="@*"/><xsl:apply-templates/>
+ </table>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/math.xsl b/Master/texmf-dist/source/latex/stex/xsl/math.xsl
new file mode 100644
index 00000000000..9d33b564327
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/math.xsl
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML islands to OMDoc (Open Mathematical Documents).
+ $Id: math.xsl 1728 2011-02-06 16:22:09Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/math.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://omdoc.org/ns"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns:om="http://www.openmath.org/OpenMath"
+ xmlns:m="http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes="xsl ltx om">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="ltx:equation">
+ <xsl:choose>
+ <xsl:when test="$math-format='om'">
+ <om:OMOBJ style="display:block">
+ <xsl:apply-templates select="ltx:Math/m:math/*"/>
+ </om:OMOBJ>
+ </xsl:when>
+ <xsl:when test="$math-format='pmml'">
+ <xsl:copy-of select="ltx:Math/m:math"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>math.xsl warning: unknown math format <xsl:value-of select="$math-format"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- from LaTeXML Math elements we just pick out the OpenMath representation -->
+<xsl:template match="ltx:Math">
+ <xsl:choose>
+ <xsl:when test="$math-format='om'">
+ <xsl:apply-templates select="om:OMOBJ"/>
+ </xsl:when>
+ <xsl:when test="$math-format='pmml'">
+ <xsl:copy-of select="m:math"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>math.xsl warning: unknown math format <xsl:value-of select="$math-format"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- equationgroups come from eqnarray and eqnarray*, they really need OMDoc-level parallel markup -->
+<xsl:template match="ltx:equationgroup">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="ltx:equationgroup/ltx:equation">
+ <xsl:choose>
+ <xsl:when test="$math-format='om'">
+ <om:OMOBJ style="display:block">
+ <xsl:apply-templates select="ltx:MathFork/ltx:Math/om:OMOBJ/*"/>
+ </om:OMOBJ>
+ </xsl:when>
+ <xsl:when test="$math-format='pmml'">
+ <xsl:copy-of select="ltx:MathFork/ltx:Math/m:math"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>math.xsl warning: unknown math format <xsl:value-of select="$math-format"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/notations.xsl b/Master/texmf-dist/source/latex/stex/xsl/notations.xsl
new file mode 100644
index 00000000000..a1a42a8496f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/notations.xsl
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML notations to OMDoc (Open Mathematical Documents).
+ $Id: notations.xsl 1728 2011-02-06 16:22:09Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/notations.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://omdoc.org/ns"
+ xmlns:omdoc="http://omdoc.org/ns"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns:m="http://www.w3.org/1998/Math/MathML"
+ exclude-result-prefixes="xsl omdoc ltx m">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="omdoc:rendering">
+ <xsl:apply-templates select="." mode="rendering"/>
+</xsl:template>
+<xsl:template match="ltx:Math" mode="rendering">
+ <xsl:apply-templates select="m:math/*" mode="rendering"/>
+</xsl:template>
+
+<!-- copy where not specified otherwise -->
+<xsl:template match="*" mode="rendering">
+ <xsl:copy><xsl:copy-of select="@*[not(name()='argprec')]"/><xsl:apply-templates mode="rendering"/></xsl:copy>
+</xsl:template>
+
+<xsl:template match="ltx:text" mode="rendering">
+ <text><xsl:value-of select="text()"/></text>
+</xsl:template>
+
+<!-- Template to recover the appropriate argument precedence" -->
+<xsl:template name="argument-precedence">
+ <xsl:param name="count" select="1"/>
+ <xsl:param name="precattr" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$count > 1">
+ <xsl:call-template name="argument-precedence">
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="precattr" select="substring-after($precattr,' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($precattr,' ')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- we have to treat the m:mi that come from an
+ #i argument invocation differently -->
+<xsl:template match="m:mi[starts-with(.,'arg:')]|m:mo[starts-with(.,'arg:')]" mode="rendering">
+ <xsl:variable name="precedence">
+ <xsl:call-template name="argument-precedence">
+ <xsl:with-param name="count" select="substring-after(.,'arg:')"/>
+ <xsl:with-param name="precattr" select="ancestor::omdoc:rendering[1]/@argprec"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <render name="arg{substring-after(.,'arg:')}">
+ <xsl:choose>
+ <xsl:when test="string($precedence)">
+ <xsl:attribute name="precedence"><xsl:value-of select="$precedence"/></xsl:attribute>
+ </xsl:when>
+ <xsl:when test="string(ancestor::omdoc:rendering[1]/@precedence)">
+ <xsl:attribute name="precedence"><xsl:value-of select="ancestor::omdoc:rendering[1]/@precedence"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose>
+ </render>
+</xsl:template>
+
+
+<!-- make an mrow around the generated things. -->
+<xsl:template match="omdoc:style[@format='pmml']">
+ <xsl:copy>
+ <xsl:copy-of select="@*"/>
+ <element name="mrow" ns="http://www.w3.org/1998/Math/MathML">
+ <xsl:apply-templates/>
+ </element>
+ </xsl:copy>
+</xsl:template>
+
+
+<xsl:template match="omdoc:separator/ltx:Math">
+ <xsl:apply-templates select="m:math/*" mode="elementize"/>
+</xsl:template>
+
+<xsl:template match="omdoc:map/ltx:Math">
+ <xsl:apply-templates select="m:math/*" mode="elementize"/>
+</xsl:template>
+
+
+<xsl:template match="text()" mode="elementize">
+ <text><xsl:value-of select="."/></text>
+</xsl:template>
+
+<xsl:template match="ltx:text" mode="elementize">
+ <element name="mtext" ns="http://www.w3.org/1998/Math/MathML">
+ <xsl:value-of select="."/>
+ </element>
+</xsl:template>
+
+<xsl:template match="m:*" mode="elementize">
+ <element name="{local-name()}" ns="{namespace-uri()}">
+ <xsl:for-each select="@*">
+ <attribute name="{local-name()}" select="'{.}'"/>
+ </xsl:for-each>
+ <xsl:apply-templates mode="elementize"/>
+ </element>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl b/Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl
new file mode 100644
index 00000000000..df733b1b300
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML islands to OMDoc (Open Mathematical Documents).
+ $Id: omdocpost.xsl 1858 2011-08-30 16:14:23Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/omdocpost.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+<xsl:param name="math-format" select="'om'"/>
+
+<!-- the fallback: copy the whole thing recursively, until there is something to do -->
+<xsl:template match="*">
+ <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>
+</xsl:template>
+
+<!-- all the other functionality must be treated specially -->
+<xsl:include href="doc.xsl"/>
+<xsl:include href="notations.xsl"/>
+<!-- old <xsl:include href="graphics.xsl"/>, replaced by LaTeXML treatment -->
+<xsl:include href="symbols.xsl"/>
+<xsl:include href="math.xsl"/>
+<!-- old <xsl:include href="listings.xsl"/>, replaced by LaTeXML treatment -->
+<xsl:include href="LaTeXML/LaTeXML-common.xsl"/>
+<xsl:include href="LaTeXML/LaTeXML-inline-xhtml.xsl"/>
+<xsl:include href="LaTeXML/LaTeXML-block-xhtml.xsl"/>
+<xsl:include href="LaTeXML/LaTeXML-para-xhtml.xsl"/>
+<!-- <xsl:include href="LaTeXML/LaTeXML-math-mathml.xsl"/> -->
+<xsl:include href="LaTeXML/LaTeXML-tabular-xhtml.xsl"/>
+<xsl:include href="LaTeXML/LaTeXML-structure-xhtml.xsl"/>
+<xsl:include href="LaTeXML/LaTeXML-bib-xhtml.xsl"/>
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl b/Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl
new file mode 100644
index 00000000000..be5cf378409
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML islands to OWL2
+ $Id: owl2post.xsl 1728 2011-02-06 16:22:09Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/owl2post.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns:omdoc="http://omdoc.org/ns"
+ xmlns:stex="http://kwarc.info/ns/sTeX"
+ xmlns="http://www.w3.org/2002/07/owl#"
+ xmlns:owl="http://www.w3.org/2002/07/owl#"
+ exclude-result-prefixes="xsl omdoc ltx stex owl">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="/">
+ <xsl:comment>This OWL2 ontology is generated from an sTeX-encoded one via LaTeXML, you may want to reconsider editing it.</xsl:comment>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="*">
+ <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>
+</xsl:template>
+
+<xsl:template match="omdoc:imports">
+ <Import><xsl:value-of select="@from"/></Import>
+</xsl:template>
+
+
+<xsl:template match="owl:Axiom">
+ <xsl:variable name="anno" select="*[2]"/>
+ <xsl:apply-templates select="*[1]">
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="ltx:Math|ltx:XMath">
+ <xsl:param name="anno"/>
+ <xsl:apply-templates>
+ <xsl:with-param name="anno" select="$anno"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="ltx:XMApp[ltx:XMTok[position()=1 and @meaning='list']]">
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+</xsl:template>
+
+<xsl:template match="ltx:XMApp">
+ <xsl:param name="anno"/>
+ <xsl:element name="{ltx:XMTok[1]/@meaning}">
+ <xsl:copy-of select="$anno"/>
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="ltx:XMTok">
+ <Class IRI="{@name}"/>
+</xsl:template>
+
+<xsl:template match="ltx:ERROR">
+ <Class IRI="{substring-after(ltx:XMTok,'\')}"/>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/Master/texmf-dist/source/latex/stex/xsl/symbols.xsl b/Master/texmf-dist/source/latex/stex/xsl/symbols.xsl
new file mode 100644
index 00000000000..23d03cb6472
--- /dev/null
+++ b/Master/texmf-dist/source/latex/stex/xsl/symbols.xsl
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- An XSL style sheet for transforming LaTeXML symbols to OMDoc (Open Mathematical Documents).
+ $Id: symbols.xsl 1858 2011-08-30 16:14:23Z kohlhase $
+ $HeadURL: https://svn.kwarc.info/repos/stex/branches/stex+xhtml/xsl/symbols.xsl $
+ send bug-reports, patches, suggestions to users@omdoc.org or developers@omdoc.org
+
+ Copyright (c) 2000 - 2002 Michael Kohlhase,
+ XSLT 2.0 port by Christoph Lange 2006
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://omdoc.org/ns"
+ xmlns:omdoc="http://omdoc.org/ns"
+ xmlns:ltx="http://dlmf.nist.gov/LaTeXML"
+ xmlns:om="http://www.openmath.org/OpenMath"
+ exclude-result-prefixes="xsl omdoc ltx om">
+
+<xsl:output method="xml" indent="yes" cdata-section-elements="data"/>
+<xsl:strip-space elements="*"/>
+
+<!-- these parameters set the paths to the special latexml cds. The default is made so that it works for GenCS -->
+<xsl:param name="latexmlcds" select="'../../../slides/extcds/stex'"/>
+<xsl:param name="omcds" select="'../../../slides/extcds/omstd'"/>
+
+<!-- get rid of the list OMAs LaTeXML uses -->
+<xsl:template match="om:OMA[om:OMS[position()=1 and @name='list' and @cd='latexml']]">
+ <xsl:apply-templates select="*[position() &gt; 1]"/>
+</xsl:template>
+
+<!-- special treatment for latexml symbols -->
+<!-- we have a set of special CDs that correspond to the ones latexml postulates -->
+<!-- they need to be imported whereever necessary -->
+<xsl:template match="omdoc:theory">
+ <theory>
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="//om:OMS[@cd='latexml' and @name='multirelation']">
+ <imports from="{$latexmlcds}/multirel.omdoc#multirel"/>
+ </xsl:if>
+ <xsl:if test="//om:OMS[@cd='latexml' and
+ (@name='times' or
+ @name='divide' or
+ @name='plus' or
+ @name='minus')]">
+ <imports from="{$omcds}/arith1.omdoc#arith1"/>
+ </xsl:if>
+ <xsl:if test="//om:OMS[@cd='latexml' and
+ (@name='greater-than' or
+ @name='less-than' or
+ @name='not-equals' or
+ @name='greater-than-or-equals' or
+ @name='less-than-or-equals')]">
+ <imports from="{$omcds}/relation1.omdoc#relation1"/>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </theory>
+</xsl:template>
+
+<!-- and we need to convert the symbols -->
+<xsl:template match="om:OMS[@cd='latexml' and @name='multirelation']">
+ <om:OMS cd="multirel" name="multirelation"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='plus']">
+ <om:OMS cd="arith1" name="plus"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='minus']">
+ <om:OMS cd="arith1" name="minus"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='times']">
+ <om:OMS cd="arith1" name="times"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='divide']">
+ <om:OMS cd="arith1" name="divide"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='greater-than']">
+ <om:OMS cd="relation1" name="gt"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='greater-than-or-equals']">
+ <om:OMS cd="relation1" name="gt"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='less-than']">
+ <om:OMS cd="relation1" name="lt"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='less-than-or-equals']">
+ <om:OMS cd="relation1" name="lt"/>
+</xsl:template>
+
+<xsl:template match="om:OMS[@cd='latexml' and @name='not-equals']">
+ <om:OMS cd="relation1" name="neq"/>
+</xsl:template>
+</xsl:stylesheet>