mml 2.2.1 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +9 -0
  3. data/.rubocop.yml +4 -0
  4. data/.rubocop_todo.yml +36 -17
  5. data/CLAUDE.md +79 -0
  6. data/Gemfile +0 -2
  7. data/README.adoc +334 -82
  8. data/Rakefile +16 -1
  9. data/lib/mml/base/content/annotation.rb +30 -0
  10. data/lib/mml/base/content/annotation_xml.rb +31 -0
  11. data/lib/mml/base/content/apply.rb +27 -0
  12. data/lib/mml/base/content/arith.rb +243 -0
  13. data/lib/mml/base/content/bind.rb +27 -0
  14. data/lib/mml/base/content/bvar.rb +20 -0
  15. data/lib/mml/base/content/calculus.rb +103 -0
  16. data/lib/mml/base/content/cbytes.rb +24 -0
  17. data/lib/mml/base/content/cerror.rb +24 -0
  18. data/lib/mml/base/content/ci.rb +77 -0
  19. data/lib/mml/base/content/cn.rb +33 -0
  20. data/lib/mml/base/content/condition.rb +20 -0
  21. data/lib/mml/base/content/constants.rb +173 -0
  22. data/lib/mml/base/content/cs.rb +22 -0
  23. data/lib/mml/base/content/csymbol.rb +79 -0
  24. data/lib/mml/base/content/declare.rb +34 -0
  25. data/lib/mml/base/content/degree.rb +20 -0
  26. data/lib/mml/base/content/elementary_functions.rb +309 -0
  27. data/lib/mml/base/content/fn.rb +25 -0
  28. data/lib/mml/base/content/functions.rb +85 -0
  29. data/lib/mml/base/content/interval.rb +24 -0
  30. data/lib/mml/base/content/inverse.rb +25 -0
  31. data/lib/mml/base/content/lambda.rb +20 -0
  32. data/lib/mml/base/content/linear_algebra.rb +122 -0
  33. data/lib/mml/base/content/logic.rb +93 -0
  34. data/lib/mml/base/content/otherwise.rb +20 -0
  35. data/lib/mml/base/content/piece.rb +20 -0
  36. data/lib/mml/base/content/piecewise.rb +20 -0
  37. data/lib/mml/base/content/relations.rb +113 -0
  38. data/lib/mml/base/content/reln.rb +19 -0
  39. data/lib/mml/base/content/semantics.rb +27 -0
  40. data/lib/mml/base/content/sep.rb +19 -0
  41. data/lib/mml/base/content/sets.rb +163 -0
  42. data/lib/mml/base/content/share.rb +24 -0
  43. data/lib/mml/base/content/statistics.rb +95 -0
  44. data/lib/mml/base/content/vector_calculus.rb +63 -0
  45. data/lib/mml/base/content_loader.rb +195 -0
  46. data/lib/mml/base/deprecated_font_attributes.rb +31 -0
  47. data/lib/mml/base/maction.rb +29 -0
  48. data/lib/mml/base/maligngroup.rb +26 -0
  49. data/lib/mml/base/malignmark.rb +26 -0
  50. data/lib/mml/base/math.rb +64 -0
  51. data/lib/mml/base/menclose.rb +27 -0
  52. data/lib/mml/base/merror.rb +25 -0
  53. data/lib/mml/base/mfenced.rb +34 -0
  54. data/lib/mml/base/mfrac.rb +35 -0
  55. data/lib/mml/base/mfraction.rb +33 -0
  56. data/lib/mml/base/mglyph.rb +44 -0
  57. data/lib/mml/base/mi.rb +37 -0
  58. data/lib/mml/base/mlabeledtr.rb +33 -0
  59. data/lib/mml/base/mlongdiv.rb +31 -0
  60. data/lib/mml/base/mmultiscripts.rb +31 -0
  61. data/lib/mml/base/mn.rb +35 -0
  62. data/lib/mml/base/mo.rb +74 -0
  63. data/lib/mml/base/mover.rb +29 -0
  64. data/lib/mml/base/mpadded.rb +35 -0
  65. data/lib/mml/base/mphantom.rb +25 -0
  66. data/lib/mml/base/mprescripts.rb +24 -0
  67. data/lib/mml/base/mroot.rb +25 -0
  68. data/lib/mml/base/mrow.rb +27 -0
  69. data/lib/mml/base/ms.rb +35 -0
  70. data/lib/mml/base/mscarries.rb +33 -0
  71. data/lib/mml/base/mscarry.rb +29 -0
  72. data/lib/mml/base/msgroup.rb +31 -0
  73. data/lib/mml/base/msline.rb +34 -0
  74. data/lib/mml/base/mspace.rb +52 -0
  75. data/lib/mml/base/msqrt.rb +25 -0
  76. data/lib/mml/base/msrow.rb +27 -0
  77. data/lib/mml/base/mstack.rb +33 -0
  78. data/lib/mml/base/mstyle.rb +185 -0
  79. data/lib/mml/base/msub.rb +27 -0
  80. data/lib/mml/base/msubsup.rb +29 -0
  81. data/lib/mml/base/msup.rb +27 -0
  82. data/lib/mml/base/mtable.rb +65 -0
  83. data/lib/mml/base/mtd.rb +35 -0
  84. data/lib/mml/base/mtext.rb +30 -0
  85. data/lib/mml/base/mtr.rb +35 -0
  86. data/lib/mml/base/munder.rb +31 -0
  87. data/lib/mml/base/munderover.rb +31 -0
  88. data/lib/mml/base/none.rb +24 -0
  89. data/lib/mml/base/semantics.rb +25 -0
  90. data/lib/mml/base/universal_presentation_attributes.rb +42 -0
  91. data/lib/mml/base/v3_common.rb +16 -0
  92. data/lib/mml/base/v3_only/operator_attrs.rb +24 -0
  93. data/lib/mml/base/v3_only/style_attrs.rb +31 -0
  94. data/lib/mml/base/v3_only/table_attrs.rb +28 -0
  95. data/lib/mml/base/v3_only.rb +11 -0
  96. data/lib/mml/base/v3_presentation_attributes.rb +15 -0
  97. data/lib/mml/base/v4_attributes.rb +16 -0
  98. data/lib/mml/base.rb +61 -0
  99. data/lib/mml/common_elements.rb +419 -0
  100. data/lib/mml/context_configuration.rb +147 -0
  101. data/lib/mml/context_options.rb +64 -0
  102. data/lib/mml/namespace.rb +10 -0
  103. data/lib/mml/v2/annotation.rb +9 -0
  104. data/lib/mml/v2/annotation_xml.rb +9 -0
  105. data/lib/mml/v2/apply.rb +9 -0
  106. data/lib/mml/v2/arith.rb +93 -0
  107. data/lib/mml/v2/bind.rb +9 -0
  108. data/lib/mml/v2/bvar.rb +9 -0
  109. data/lib/mml/v2/calculus.rb +33 -0
  110. data/lib/mml/v2/ci.rb +9 -0
  111. data/lib/mml/v2/cn.rb +9 -0
  112. data/lib/mml/v2/common_elements.rb +34 -0
  113. data/lib/mml/v2/condition.rb +9 -0
  114. data/lib/mml/v2/configuration.rb +13 -0
  115. data/lib/mml/v2/constants.rb +65 -0
  116. data/lib/mml/v2/csymbol.rb +9 -0
  117. data/lib/mml/v2/degree.rb +9 -0
  118. data/lib/mml/v2/elementary_functions.rb +121 -0
  119. data/lib/mml/v2/fn.rb +9 -0
  120. data/lib/mml/v2/functions.rb +29 -0
  121. data/lib/mml/v2/interval.rb +9 -0
  122. data/lib/mml/v2/inverse.rb +9 -0
  123. data/lib/mml/v2/lambda.rb +9 -0
  124. data/lib/mml/v2/linear_algebra.rb +41 -0
  125. data/lib/mml/v2/logic.rb +33 -0
  126. data/lib/mml/v2/maction.rb +9 -0
  127. data/lib/mml/v2/maligngroup.rb +9 -0
  128. data/lib/mml/v2/malignmark.rb +9 -0
  129. data/lib/mml/v2/math.rb +11 -0
  130. data/lib/mml/v2/menclose.rb +9 -0
  131. data/lib/mml/v2/merror.rb +9 -0
  132. data/lib/mml/v2/mfenced.rb +9 -0
  133. data/lib/mml/v2/mfrac.rb +9 -0
  134. data/lib/mml/v2/mfraction.rb +9 -0
  135. data/lib/mml/v2/mglyph.rb +9 -0
  136. data/lib/mml/v2/mi.rb +9 -0
  137. data/lib/mml/v2/mlabeledtr.rb +9 -0
  138. data/lib/mml/v2/mlongdiv.rb +9 -0
  139. data/lib/mml/v2/mmultiscripts.rb +9 -0
  140. data/lib/mml/v2/mn.rb +9 -0
  141. data/lib/mml/v2/mo.rb +10 -0
  142. data/lib/mml/v2/mover.rb +9 -0
  143. data/lib/mml/v2/mpadded.rb +9 -0
  144. data/lib/mml/v2/mphantom.rb +9 -0
  145. data/lib/mml/v2/mprescripts.rb +9 -0
  146. data/lib/mml/v2/mroot.rb +9 -0
  147. data/lib/mml/v2/mrow.rb +9 -0
  148. data/lib/mml/v2/ms.rb +9 -0
  149. data/lib/mml/v2/mscarries.rb +9 -0
  150. data/lib/mml/v2/mscarry.rb +9 -0
  151. data/lib/mml/v2/msgroup.rb +9 -0
  152. data/lib/mml/v2/msline.rb +9 -0
  153. data/lib/mml/v2/mspace.rb +9 -0
  154. data/lib/mml/v2/msqrt.rb +9 -0
  155. data/lib/mml/v2/msrow.rb +9 -0
  156. data/lib/mml/v2/mstack.rb +9 -0
  157. data/lib/mml/v2/mstyle.rb +10 -0
  158. data/lib/mml/v2/msub.rb +9 -0
  159. data/lib/mml/v2/msubsup.rb +9 -0
  160. data/lib/mml/v2/msup.rb +9 -0
  161. data/lib/mml/v2/mtable.rb +9 -0
  162. data/lib/mml/v2/mtd.rb +9 -0
  163. data/lib/mml/v2/mtext.rb +9 -0
  164. data/lib/mml/v2/mtr.rb +9 -0
  165. data/lib/mml/v2/munder.rb +9 -0
  166. data/lib/mml/v2/munderover.rb +9 -0
  167. data/lib/mml/v2/namespace.rb +7 -0
  168. data/lib/mml/v2/none.rb +9 -0
  169. data/lib/mml/v2/otherwise.rb +9 -0
  170. data/lib/mml/v2/piece.rb +9 -0
  171. data/lib/mml/v2/piecewise.rb +9 -0
  172. data/lib/mml/v2/relations.rb +41 -0
  173. data/lib/mml/v2/reln.rb +13 -0
  174. data/lib/mml/v2/semantics.rb +9 -0
  175. data/lib/mml/v2/sep.rb +9 -0
  176. data/lib/mml/v2/sets.rb +57 -0
  177. data/lib/mml/v2/statistics.rb +33 -0
  178. data/lib/mml/v2/vector_calculus.rb +21 -0
  179. data/lib/mml/v2.rb +311 -0
  180. data/lib/mml/v3/annotation.rb +10 -0
  181. data/lib/mml/v3/annotation_xml.rb +10 -0
  182. data/lib/mml/v3/apply.rb +10 -0
  183. data/lib/mml/v3/arith.rb +115 -0
  184. data/lib/mml/v3/bind.rb +10 -0
  185. data/lib/mml/v3/calculus.rb +40 -0
  186. data/lib/mml/v3/cbytes.rb +10 -0
  187. data/lib/mml/v3/cerror.rb +10 -0
  188. data/lib/mml/v3/ci.rb +10 -0
  189. data/lib/mml/v3/cn.rb +10 -0
  190. data/lib/mml/v3/common_elements.rb +42 -0
  191. data/lib/mml/v3/configuration.rb +4 -96
  192. data/lib/mml/v3/constants.rb +80 -0
  193. data/lib/mml/v3/constructs.rb +55 -0
  194. data/lib/mml/v3/cs.rb +10 -0
  195. data/lib/mml/v3/csymbol.rb +10 -0
  196. data/lib/mml/v3/deprecated_content.rb +29 -0
  197. data/lib/mml/v3/elementary_functions.rb +145 -0
  198. data/lib/mml/v3/functions.rb +35 -0
  199. data/lib/mml/v3/linear_algebra.rb +50 -0
  200. data/lib/mml/v3/logic.rb +40 -0
  201. data/lib/mml/v3/maction.rb +3 -15
  202. data/lib/mml/v3/maligngroup.rb +2 -12
  203. data/lib/mml/v3/malignmark.rb +2 -12
  204. data/lib/mml/v3/math.rb +7 -8
  205. data/lib/mml/v3/menclose.rb +3 -14
  206. data/lib/mml/v3/merror.rb +3 -12
  207. data/lib/mml/v3/mfenced.rb +3 -21
  208. data/lib/mml/v3/mfrac.rb +3 -20
  209. data/lib/mml/v3/mfraction.rb +3 -20
  210. data/lib/mml/v3/mglyph.rb +3 -38
  211. data/lib/mml/v3/mi.rb +4 -30
  212. data/lib/mml/v3/mlabeledtr.rb +2 -23
  213. data/lib/mml/v3/mlongdiv.rb +3 -18
  214. data/lib/mml/v3/mmultiscripts.rb +3 -20
  215. data/lib/mml/v3/mn.rb +4 -30
  216. data/lib/mml/v3/mo.rb +5 -78
  217. data/lib/mml/v3/mover.rb +3 -16
  218. data/lib/mml/v3/mpadded.rb +3 -22
  219. data/lib/mml/v3/mphantom.rb +3 -12
  220. data/lib/mml/v3/mprescripts.rb +2 -10
  221. data/lib/mml/v3/mroot.rb +3 -12
  222. data/lib/mml/v3/mrow.rb +4 -18
  223. data/lib/mml/v3/ms.rb +5 -36
  224. data/lib/mml/v3/mscarries.rb +3 -20
  225. data/lib/mml/v3/mscarry.rb +3 -16
  226. data/lib/mml/v3/msgroup.rb +3 -18
  227. data/lib/mml/v3/msline.rb +2 -20
  228. data/lib/mml/v3/mspace.rb +3 -50
  229. data/lib/mml/v3/msqrt.rb +3 -12
  230. data/lib/mml/v3/msrow.rb +3 -14
  231. data/lib/mml/v3/mstack.rb +3 -20
  232. data/lib/mml/v3/mstyle.rb +6 -204
  233. data/lib/mml/v3/msub.rb +3 -14
  234. data/lib/mml/v3/msubsup.rb +3 -16
  235. data/lib/mml/v3/msup.rb +3 -14
  236. data/lib/mml/v3/mtable.rb +3 -53
  237. data/lib/mml/v3/mtd.rb +3 -16
  238. data/lib/mml/v3/mtext.rb +4 -30
  239. data/lib/mml/v3/mtr.rb +2 -21
  240. data/lib/mml/v3/munder.rb +3 -18
  241. data/lib/mml/v3/munderover.rb +3 -18
  242. data/lib/mml/v3/namespace.rb +1 -4
  243. data/lib/mml/v3/none.rb +2 -10
  244. data/lib/mml/v3/relations.rb +50 -0
  245. data/lib/mml/v3/semantics.rb +3 -12
  246. data/lib/mml/v3/sets.rb +70 -0
  247. data/lib/mml/v3/statistics.rb +40 -0
  248. data/lib/mml/v3/vector_calculus.rb +25 -0
  249. data/lib/mml/v3.rb +74 -75
  250. data/lib/mml/v4/a.rb +3 -13
  251. data/lib/mml/v4/annotation.rb +10 -0
  252. data/lib/mml/v4/annotation_xml.rb +14 -0
  253. data/lib/mml/v4/apply.rb +9 -0
  254. data/lib/mml/v4/arith.rb +93 -0
  255. data/lib/mml/v4/calculus.rb +25 -0
  256. data/lib/mml/v4/cbytes.rb +9 -0
  257. data/lib/mml/v4/cerror.rb +9 -0
  258. data/lib/mml/v4/ci.rb +9 -0
  259. data/lib/mml/v4/cn.rb +9 -0
  260. data/lib/mml/v4/common_elements.rb +46 -0
  261. data/lib/mml/v4/configuration.rb +4 -97
  262. data/lib/mml/v4/constants.rb +65 -0
  263. data/lib/mml/v4/constructs.rb +49 -0
  264. data/lib/mml/v4/cs.rb +9 -0
  265. data/lib/mml/v4/csymbol.rb +9 -0
  266. data/lib/mml/v4/deprecated_content.rb +25 -0
  267. data/lib/mml/v4/elementary_functions.rb +118 -0
  268. data/lib/mml/v4/factorof.rb +9 -0
  269. data/lib/mml/v4/functions.rb +30 -0
  270. data/lib/mml/v4/limit.rb +9 -0
  271. data/lib/mml/v4/linear_algebra.rb +41 -0
  272. data/lib/mml/v4/logic.rb +33 -0
  273. data/lib/mml/v4/maction.rb +3 -19
  274. data/lib/mml/v4/maligngroup.rb +3 -17
  275. data/lib/mml/v4/malignmark.rb +3 -17
  276. data/lib/mml/v4/math.rb +4 -14
  277. data/lib/mml/v4/menclose.rb +3 -18
  278. data/lib/mml/v4/merror.rb +3 -16
  279. data/lib/mml/v4/mfenced.rb +3 -25
  280. data/lib/mml/v4/mfrac.rb +3 -24
  281. data/lib/mml/v4/mfraction.rb +3 -20
  282. data/lib/mml/v4/mglyph.rb +3 -35
  283. data/lib/mml/v4/mi.rb +4 -30
  284. data/lib/mml/v4/mlabeledtr.rb +5 -23
  285. data/lib/mml/v4/mlongdiv.rb +3 -18
  286. data/lib/mml/v4/mmultiscripts.rb +3 -24
  287. data/lib/mml/v4/mn.rb +4 -29
  288. data/lib/mml/v4/mo.rb +4 -75
  289. data/lib/mml/v4/mover.rb +3 -20
  290. data/lib/mml/v4/mpadded.rb +3 -26
  291. data/lib/mml/v4/mphantom.rb +3 -16
  292. data/lib/mml/v4/mprescripts.rb +3 -11
  293. data/lib/mml/v4/mroot.rb +3 -16
  294. data/lib/mml/v4/mrow.rb +4 -20
  295. data/lib/mml/v4/ms.rb +4 -34
  296. data/lib/mml/v4/mscarries.rb +3 -20
  297. data/lib/mml/v4/mscarry.rb +3 -16
  298. data/lib/mml/v4/msgroup.rb +3 -18
  299. data/lib/mml/v4/msline.rb +3 -21
  300. data/lib/mml/v4/mspace.rb +3 -49
  301. data/lib/mml/v4/msqrt.rb +3 -16
  302. data/lib/mml/v4/msrow.rb +3 -18
  303. data/lib/mml/v4/mstack.rb +3 -24
  304. data/lib/mml/v4/mstyle.rb +4 -186
  305. data/lib/mml/v4/msub.rb +3 -18
  306. data/lib/mml/v4/msubsup.rb +3 -20
  307. data/lib/mml/v4/msup.rb +3 -18
  308. data/lib/mml/v4/mtable.rb +3 -55
  309. data/lib/mml/v4/mtd.rb +3 -20
  310. data/lib/mml/v4/mtext.rb +4 -29
  311. data/lib/mml/v4/mtr.rb +3 -25
  312. data/lib/mml/v4/munder.rb +3 -22
  313. data/lib/mml/v4/munderover.rb +3 -22
  314. data/lib/mml/v4/namespace.rb +1 -4
  315. data/lib/mml/v4/none.rb +5 -11
  316. data/lib/mml/v4/relations.rb +37 -0
  317. data/lib/mml/v4/semantics.rb +3 -12
  318. data/lib/mml/v4/sets.rb +57 -0
  319. data/lib/mml/v4/statistics.rb +33 -0
  320. data/lib/mml/v4/tendsto.rb +9 -0
  321. data/lib/mml/v4/vector_calculus.rb +21 -0
  322. data/lib/mml/v4.rb +426 -71
  323. data/lib/mml/version.rb +1 -1
  324. data/lib/mml/versioned_parser.rb +46 -0
  325. data/lib/mml.rb +36 -6
  326. data/reference-docs/mathml-source/pubtext/mathmlspec.dtd +150 -0
  327. data/reference-docs/mathml-source/pubtext/xmlspec.dtd +2649 -0
  328. data/reference-docs/mathml-source/readme.txt +40 -0
  329. data/reference-docs/mathml-source/run +296 -0
  330. data/reference-docs/mathml-source/style/html/html2xhtml.xsl +216 -0
  331. data/reference-docs/mathml-source/style/html/images.xsl +98 -0
  332. data/reference-docs/mathml-source/style/html/mml6.xsl +1156 -0
  333. data/reference-docs/mathml-source/style/html/mmldiff.xsl +566 -0
  334. data/reference-docs/mathml-source/style/html/mmlspec.xsl +2531 -0
  335. data/reference-docs/mathml-source/style/html/slices-common.xsl +312 -0
  336. data/reference-docs/mathml-source/style/html/slices.xsl +48 -0
  337. data/reference-docs/mathml-source/style/html/xmlspec.xsl +2542 -0
  338. data/reference-docs/mathml-source/style/pdf/mathmlspec.xsl +2510 -0
  339. data/reference-docs/mathml-source/xml/changes.xml +773 -0
  340. data/reference-docs/mathml-source/xml/character-set.xml +1011 -0
  341. data/reference-docs/mathml-source/xml/content-element-def.xml +6143 -0
  342. data/reference-docs/mathml-source/xml/content-markup.xml +8178 -0
  343. data/reference-docs/mathml-source/xml/contributors.xml +425 -0
  344. data/reference-docs/mathml-source/xml/dom-bindings.xml +20 -0
  345. data/reference-docs/mathml-source/xml/dom-intro.xml +114 -0
  346. data/reference-docs/mathml-source/xml/fundamentals.xml +1646 -0
  347. data/reference-docs/mathml-source/xml/glossary.xml +519 -0
  348. data/reference-docs/mathml-source/xml/interface.xml +1096 -0
  349. data/reference-docs/mathml-source/xml/introduction.xml +724 -0
  350. data/reference-docs/mathml-source/xml/mathml-css-sample.xml +304 -0
  351. data/reference-docs/mathml-source/xml/mathml-dom.xml +3813 -0
  352. data/reference-docs/mathml-source/xml/mathml-spec.xml +356 -0
  353. data/reference-docs/mathml-source/xml/mixing.xml +982 -0
  354. data/reference-docs/mathml-source/xml/operator-dict.xml +551 -0
  355. data/reference-docs/mathml-source/xml/parsing.xml +2565 -0
  356. data/reference-docs/mathml-source/xml/presentation-markup.xml +6834 -0
  357. data/reference-docs/mathml-source/xml/references.xml +323 -0
  358. data/reference-docs/mathml-source/xml/validation-grammar.xml +877 -0
  359. data/schemas/README.adoc +15 -0
  360. data/schemas/mathml2/CVS/Entries +4 -0
  361. data/schemas/mathml2/CVS/Repository +1 -0
  362. data/schemas/mathml2/CVS/Root +1 -0
  363. data/schemas/mathml2/common/CVS/Entries +4 -0
  364. data/schemas/mathml2/common/CVS/Repository +1 -0
  365. data/schemas/mathml2/common/CVS/Root +1 -0
  366. data/schemas/mathml2/common/common-attribs.xsd +41 -0
  367. data/schemas/mathml2/common/math.xsd +126 -0
  368. data/schemas/mathml2/common/xlink-href.xsd +20 -0
  369. data/schemas/mathml2/content/CVS/Entries +16 -0
  370. data/schemas/mathml2/content/CVS/Repository +1 -0
  371. data/schemas/mathml2/content/CVS/Root +1 -0
  372. data/schemas/mathml2/content/arith.xsd +90 -0
  373. data/schemas/mathml2/content/calculus.xsd +146 -0
  374. data/schemas/mathml2/content/common-attrib.xsd +30 -0
  375. data/schemas/mathml2/content/constants.xsd +83 -0
  376. data/schemas/mathml2/content/constructs.xsd +260 -0
  377. data/schemas/mathml2/content/elementary-functions.xsd +117 -0
  378. data/schemas/mathml2/content/functions.xsd +73 -0
  379. data/schemas/mathml2/content/linear-algebra.xsd +173 -0
  380. data/schemas/mathml2/content/logic.xsd +53 -0
  381. data/schemas/mathml2/content/relations.xsd +55 -0
  382. data/schemas/mathml2/content/semantics.xsd +85 -0
  383. data/schemas/mathml2/content/sets.xsd +236 -0
  384. data/schemas/mathml2/content/statistics.xsd +136 -0
  385. data/schemas/mathml2/content/tokens.xsd +120 -0
  386. data/schemas/mathml2/content/tokens.xsd.~1.3.~ +119 -0
  387. data/schemas/mathml2/content/vector-calculus.xsd +88 -0
  388. data/schemas/mathml2/mathml2.xsd +59 -0
  389. data/schemas/mathml2/presentation/CVS/Entries +12 -0
  390. data/schemas/mathml2/presentation/CVS/Repository +1 -0
  391. data/schemas/mathml2/presentation/CVS/Root +1 -0
  392. data/schemas/mathml2/presentation/action.xsd +44 -0
  393. data/schemas/mathml2/presentation/characters.xsd +37 -0
  394. data/schemas/mathml2/presentation/common-attribs.xsd +113 -0
  395. data/schemas/mathml2/presentation/common-types.xsd +103 -0
  396. data/schemas/mathml2/presentation/error.xsd +40 -0
  397. data/schemas/mathml2/presentation/layout.xsd +195 -0
  398. data/schemas/mathml2/presentation/scripts.xsd +186 -0
  399. data/schemas/mathml2/presentation/space.xsd +52 -0
  400. data/schemas/mathml2/presentation/style.xsd +69 -0
  401. data/schemas/mathml2/presentation/table.xsd +216 -0
  402. data/schemas/mathml2/presentation/tokens.xsd +124 -0
  403. data/schemas/mathml3/mathml3-common.xsd +99 -0
  404. data/schemas/mathml3/mathml3-content.xsd +684 -0
  405. data/schemas/mathml3/mathml3-presentation.xsd +2151 -0
  406. data/schemas/mathml3/mathml3-strict-content.xsd +186 -0
  407. data/schemas/mathml3/mathml3.xsd +9 -0
  408. metadata +308 -4
  409. data/lib/mml/v3/common_attributes.rb +0 -22
  410. data/lib/mml/v4/common_attributes.rb +0 -26
@@ -0,0 +1,1011 @@
1
+ <div1 id="chars" role="chapter6"><head>Characters, Entities and Fonts</head>
2
+ <!-- $Id: character-set.xml,v 1.74 2003/09/15 13:50:10 davidc Exp $ -->
3
+
4
+ <div2 id="chars_intro"><head>Introduction</head>
5
+
6
+ <p>
7
+ Notation and symbols have proved very important for
8
+ mathematics. Mathematics has grown in part because <phrase diff="del"> of the
9
+ succinctness and suggestiveness of its evolving notation</phrase>
10
+ <phrase diff="add">its notation continually changes toward being succinct and
11
+ suggestive</phrase>. There
12
+ have been many new signs <phrase diff="chg">developed</phrase> for use in mathematical
13
+ notation, and mathematicians have not held back from making use
14
+ of many symbols originally <phrase diff="chg">introduced</phrase> elsewhere. The result is
15
+ that mathematics makes use of a very large collection of
16
+ symbols. It is difficult to write mathematics fluently if these
17
+ characters are not available for use<phrase diff="del"> in coding</phrase>. It is difficult
18
+ to read mathematics if corresponding glyphs are not available
19
+ for presentation on specific display devices.
20
+ </p>
21
+
22
+ <p diff="del">
23
+ This situation posed a problem for the first W3C Math Working Group
24
+ when it was brought into existence. It did not fall naturally within
25
+ the purview of developing a specification enabling mathematics to be
26
+ used with HTML and producing a DTD for <phrase diff="chg">the Working
27
+ Group</phrase> to worry about more than
28
+ the entities allowed in the DTD. However, as experience has shown, a
29
+ long list of entities with no means to display them is of little use,
30
+ and a cause of frequent frustrations in trying to use a standard. On
31
+ the other hand, a large collection of glyphs and fonts representing
32
+ characters without a standard way to refer to them is not of much use
33
+ either.
34
+ </p>
35
+
36
+ <p>
37
+ The W3C Math Working Group therefore took on directly the task of
38
+ specifying part of the full mechanism needed to proceed from
39
+ notation to final presentation, and started collaboration with
40
+ organizations undertaking specification of the rest.
41
+ </p>
42
+
43
+ <p>
44
+ This chapter of the MathML specification contains a listing of character names for
45
+ use <phrase diff="chg">with</phrase> MathML, recommendations for their use, and
46
+ warnings to pay attention to the correct form of the corresponding code points
47
+ given in the UCS (Universal Character Set) as codified in Unicode and ISO 10646
48
+ [see <bibref ref="Unicode"/> and the <loc href="http://www.unicode.org/">Unicode
49
+ Web site</loc>]. For simplicity we shall refer to this character set by the short
50
+ name Unicode. Though Unicode changes from time to time so that it is specified
51
+ exactly by using version numbers, unless this brings clarity on some point we
52
+ shall not use them. <phrase diff="chg">The specification of MathML 2.0
53
+ <bibref diff="add" ref="MathML2"/> used to make use of some characters that were
54
+ not part of Unicode 3.0 but which had been proposed to the Unicode Technical
55
+ Committee (UTC), and thus for inclusion in ISO 10646. They have been included in
56
+ the revisions Unicode 3.1 and 3.2. As of the publication of the MathML 2.0 (Second Edition) the current version is Unicode 4.0.</phrase> (For more detail about this see
57
+ <specref ref="chars_char-status"/>.)</p>
58
+
59
+ <p>
60
+ <phrase diff="chg">
61
+ While a long process of review and adoption by UTC and ISO/IEC of the
62
+ characters of special interest to mathematics and MathML is now</phrase>
63
+ complete <phrase diff="del">(<loc
64
+ href="http://www.unicode.org/unicode/alloc/Pipeline.html">Unicode Work
65
+ in Progress</loc>)</phrase> there remains the possibility of some further
66
+ modification of the lists of characters accepted<phrase diff="del">, of the code
67
+ assignments for those adopted, or of the names given them by Unicode</phrase>.
68
+ To make sure any possible corrections to relevant standards are taken
69
+ into account, and for the latest character tables and font information,
70
+ see the <loc href="http://www.w3.org/Math/">W3C Math Working Group
71
+ home page</loc> and the <loc href="http://www.unicode.org/">Unicode
72
+ site</loc> <phrase diff="add">(see, for instance, <loc
73
+ href="http://www.unicode.org/unicode/alloc/Pipeline.html">Unicode Work
74
+ in Progress</loc>)</phrase>.
75
+ </p>
76
+
77
+ </div2>
78
+
79
+
80
+ <div2 id="chars_mathmlchars"><head>MathML Characters</head>
81
+
82
+ <p>
83
+ A MathML token element <specref ref="presm_tokel"/>, and <specref
84
+ ref="contm_tokenel"/> takes as content a sequence of <emph>MathML
85
+ Characters</emph>. MathML Characters are defined to be either
86
+ Unicode characters legal in XML documents or <el>mglyph</el> elements.
87
+ The latter are used to represent
88
+ characters that do not have a Unicode encoding, as described in
89
+ <specref ref="presm_mglyph"/>.
90
+ <phrase diff="chg"> Because the Unicode UCS provided
91
+ approximately one thousand special alphabetic characters for the use
92
+ of mathematics with Unicode 3.1, and over 900 further
93
+ special symbols in Unicode 3.2, the need for
94
+ <el>mglyph</el> should be rare. </phrase>
95
+ </p>
96
+
97
+ <div3 id="chars_unicodechars"><head>Unicode Character Data</head>
98
+
99
+ <p>
100
+ As always in XML, any character allowed by XML may be used in MathML
101
+ in an XML document. The legal characters have the hexadecimal code
102
+ numbers 09 (tab = U+0009), 0A (line feed = U+000A), 0D (carriage
103
+ return = U+000D), 20-D7FF (U+0020..U+D7FF), E000-FFFD
104
+ (U+E000..U+FFFD), and 10000-10FFFF (U+010000..U+10FFFF). The
105
+ <phrase diff="chg">notation, just introduced in parentheses,</phrase>
106
+ beginning with U+ is <phrase diff="chg">that</phrase> recommended by Unicode
107
+ for referring to Unicode characters [see <bibref ref="Unicode"/>, page
108
+ xxviii]. The exclusions above code number D7FF are of the blocks used
109
+ in surrogate pairs, and the two characters guaranteed not to be
110
+ Unicode characters at all. U+FFFE is excluded to allow determination
111
+ of byte order in certain encodings.
112
+ </p>
113
+
114
+ <p>
115
+ There are essentially three different ways of encoding character data.
116
+
117
+ <ulist>
118
+ <item>
119
+ <p>
120
+ Using characters directly: For example, an A may be entered as 'A'
121
+ from a keyboard (character <phrase diff="chg">U+0041</phrase>). This option is only available
122
+ if the character encoding specified for the XML document includes
123
+ the character. Most commonly used encodings will have 'A' in the
124
+ ASCII position. In many encodings, characters may need more than
125
+ one byte. Note that if the document is, for example, encoded in
126
+ Latin-1 (ISO-8859-1) then <emph>only</emph> the characters in that
127
+ encoding are available directly. <phrase diff="del">Unfortunately, most mathematical
128
+ symbols may not be encoded as character data in this way.</phrase>
129
+ <phrase diff="add">Using UTF-8 or UTF-16, the only two encodings that
130
+ all XML processors are required to accept, mathematical symbols can
131
+ be encoded as character data.</phrase>
132
+ </p>
133
+ </item>
134
+
135
+ <item>
136
+ <p>
137
+ Using numeric XML character references: Using this notation, 'A' may be
138
+ represented as &amp;<phrase diff="chg">#65;</phrase> (decimal) or &amp;#x41; (hex).
139
+ Note that the numbers always refer to the Unicode encoding (and not to
140
+ the character encoding used in the XML file). By using <phrase diff="chg">character</phrase>
141
+ references it is always possible to access the entire Unicode range.
142
+ For a general XML vocabulary, there is a disadvantage to this approach:
143
+ character references may not be used in XML element or attribute
144
+ names. However, this is not an issue for MathML, as all element names in
145
+ MathML are restricted to ASCII characters.
146
+ </p>
147
+ </item>
148
+
149
+ <item>
150
+ <p>
151
+ Using entity references: The MathML DTD defines internal entities that
152
+ expand to character data. Thus for example the entity reference
153
+ &amp;eacute; may be used rather than the character reference
154
+ "&amp;#xE9; or, if, for example, the document is encoded in
155
+ ISO-8859-1, the character &#xE9;. An XML fragment that uses an entity
156
+ reference which is not defined in a DTD is not well-formed; therefore
157
+ it will be rejected by an XML parser. For this reason
158
+ <emph>every</emph> fragment using entity references <emph>must</emph>
159
+ use a DOCTYPE declaration which specifies the MathML DTD, or a DTD
160
+ that at least declares any entity reference used in the MathML
161
+ instance. The need to use a DOCTYPE complicates inclusion of MathML in
162
+ some documents. However, entity references are very useful for small
163
+ illustrative examples, and are used in most examples in this document.
164
+ </p>
165
+
166
+ <p diff="del">
167
+ For this reason entity references are perhaps not optimal for use in
168
+ generated MathML, however they are very useful for small illustrative
169
+ examples, as used in this document.
170
+ </p>
171
+ </item>
172
+
173
+ </ulist>
174
+ </p>
175
+
176
+ </div3>
177
+
178
+ <div3 id="chars_mglyph"><head>Special Characters Not in Unicode</head>
179
+
180
+ <p>
181
+ For special purposes, one may need to use a character which is not in
182
+ Unicode<phrase diff="del">, even with the expected additions</phrase>.
183
+ In these cases
184
+ one may use the <intref ref="presm_mglyph"><el>mglyph</el></intref>
185
+ element for direct access to a glyph from some font and creation of
186
+ a MathML <phrase diff="chg">substitute for the corresponding character</phrase>.
187
+ All MathML token elements that accept character data also accept an
188
+ <el>mglyph</el> in their content.
189
+ </p>
190
+
191
+ <p>
192
+ Beware, however, that the font chosen may not be available to all
193
+ MathML processors.
194
+ </p>
195
+ </div3>
196
+
197
+ <div3 id="chars_BMP-SMP"><head>Mathematical Alphanumeric Symbols
198
+ Characters</head>
199
+
200
+ <p>
201
+ A noticeable feature of mathematical and scientific writing is the use
202
+ of single letters to denote variables and constants in a given
203
+ context. The increasing complexity of science has led to the use of
204
+ certain common alphabet and font variations to provide enough special
205
+ symbols of this letter-like type. These denotations are in fact
206
+ <emph>not</emph> letters that may be used to make up words with
207
+ recognized meanings, but individual carriers of semantics themselves.
208
+ Writing a string of such symbols is usually interpreted in terms of
209
+ some composition law, for instance, multiplication. Many letter-like
210
+ symbols may be quickly interpreted by specialists in a given area as
211
+ of a certain mathematical type: for instance, bold symbols, whether
212
+ based on Latin or Greek letters, as vectors in physics or engineering,
213
+ or fraktur symbols as Lie algebras in part of pure mathematics. Again,
214
+ in given areas of science, some constants are recognizable letter
215
+ forms. When you look carefully at the range of letter-like
216
+ mathematical symbols in common use today, as the STIX project
217
+ supported by major scientific and technical publishers did, you come
218
+ up with perhaps surprisingly many. A proposal to facilitate
219
+ mathematical publishing by inclusion of mathematical alphabetic
220
+ symbols in the UCS was made, and has been favorably handled.
221
+ </p>
222
+
223
+ <p>
224
+ The <phrase diff="chg">additional</phrase> Mathematical Alphanumeric Symbols
225
+ <phrase diff="chg">provided</phrase> in Unicode 3.1 have
226
+ <phrase diff="del">provisional </phrase>code points in <emph>Plane 1</emph>, that is, in the first
227
+ plane with Unicode values higher than 2<sup>16</sup>. This plane of
228
+ characters is also known as the Secondary Multilingual Plane (SMP),
229
+ in contrast to the Basic Multilingual Plane (BMP) which <phrase diff="chg">
230
+ was originally the entire extent of Unicode</phrase>. Support for Plane 1 characters in currently
231
+ deployed software is not always reliable, and in particular support
232
+ for these Mathematical Alphanumeric Symbol characters is not likely to be
233
+ widespread until after <phrase diff="chg">public fonts covering the characters
234
+ adopted for mathematics are available</phrase>.
235
+ </p>
236
+
237
+ <p>
238
+ As discussed in <specref ref="presm_commatt"/>, MathML offers an
239
+ alternative mechanism to specify mathematical alphabetic
240
+ characters<phrase diff="chg">. This alternative spans the gap between the
241
+ specification of Unicode 3.1 and its associated deployment in software and
242
+ fonts.</phrase>
243
+ Namely, one uses the <att>mathvariant</att>
244
+ attribute on the surrounding token element, which will most commonly
245
+ be <el>mi</el>. In this section we detail the
246
+ correspondence that a MathML processor should apply between certain
247
+ characters in <emph>Plane 0</emph> (BMP) of Unicode, modified by the
248
+ <att>mathvariant</att> attribute, and the Plane 1
249
+ Mathematical Alphanumeric Symbol characters.
250
+ </p>
251
+
252
+
253
+ <p>The basic idea of the correspondence is fairly simple.
254
+ For example, a Mathematical Fraktur alphabet is <phrase diff="chg">
255
+ in Plane 1</phrase>, and
256
+ the code point for Mathematical Fraktur A is
257
+ <phrase diff="chg">U+1D504</phrase>.
258
+ Thus using these <phrase diff="del">proposed</phrase> characters, a typical example might be
259
+ <eg role="mathml">
260
+ <![CDATA[<mi>&#x1D504;</mi>]]>
261
+ </eg>
262
+ However, an alternative, equivalent markup would be to use
263
+ the standard A and modify the identifier using the
264
+ <att>mathvariant</att> attribute, as follows:
265
+ <eg role="mathml">
266
+ <![CDATA[<mi mathvariant="fraktur">A</mi>]]>
267
+ </eg>
268
+ </p>
269
+
270
+ <p>
271
+ The exact correspondence between a mathematical alphabetic character
272
+ and an unstyled character is complicated by the fact that certain
273
+ characters that were already present in Unicode are not in the
274
+ 'expected' sequence.
275
+ </p>
276
+
277
+ <p>
278
+ The detailed correspondence is shown in the tables given in
279
+ <specref ref="chars_letter-like-tables"/>.
280
+ </p>
281
+
282
+
283
+ <p>
284
+ Mathematical Alphanumeric Symbol characters should not be used for styled text.
285
+ For example, Mathematical Fraktur A must not be used to just select
286
+ a blackletter font for an uppercase A. Doing this sort of thing
287
+ would create problems for searching, restyling (e.g. for accessibility),
288
+ and many other kinds of processing.
289
+ </p>
290
+ </div3>
291
+
292
+ <div3 id="chars_nonmark"><head>Non-Marking Characters</head>
293
+
294
+
295
+ <p>
296
+ Some characters, although important for the quality of print or
297
+ alternative rendering, do not have glyph marks that correspond
298
+ directly <phrase diff="add">to them</phrase>. They are called here non-marking characters.<phrase diff="del">Below we have
299
+ a table of those adopted for the purposes of MathML.</phrase>
300
+ Their roles are
301
+ discussed in <specref ref="presm"/> and <specref ref="contm"/><phrase diff="del">,
302
+ respectively. The values of the spaces given are
303
+ recommendations. Some of these characters are among those with new
304
+ Unicode values, and some are given as combinations of Unicode
305
+ characters employing the new special mathematics modifier character
306
+ (U0FE00). The correspondence between the spacing amounts mentioned
307
+ below and those in the Unicode descriptions is not exact, but the
308
+ matches are good</phrase>.</p>
309
+
310
+ <p>In MathML 2 control of page composition, such as line-breaking, is
311
+ effected by the use of the proper attributes on the <el>mspace</el> element.</p>
312
+
313
+ <p diff="chg">The characters below are not simple spacers. They are
314
+ especially important new additions to the UCS because they provide
315
+ textual clues which can increase the quality of print rendering,
316
+ permit correct audio rendering, and allow the unique recovery of
317
+ mathematical semantics from text which is visually ambiguous.</p>
318
+
319
+ <p>
320
+ <table id="chars_table-white">
321
+ <thead>
322
+ <tr>
323
+ <td>Character name</td>
324
+ <td>Unicode</td>
325
+ <td>Description</td>
326
+ </tr>
327
+ </thead>
328
+ <tbody>
329
+ <tr diff="del">
330
+ <td><kw role="entity">Tab</kw></td>
331
+ <td>00009</td>
332
+ <td>tabulator stop; horizontal tabulation</td>
333
+ </tr>
334
+ <tr diff="del">
335
+ <td><kw role="entity">NewLine</kw></td>
336
+ <td>0000A</td>
337
+ <td>force a line break; line feed</td>
338
+ </tr>
339
+ <tr diff="del">
340
+ <td><kw role="entity">Space</kw></td>
341
+ <td>00020</td>
342
+ <td>one em of space in the current font</td>
343
+ </tr>
344
+ <tr diff="del">
345
+ <td><kw role="entity">NonBreakingSpace</kw></td>
346
+ <td>000A0</td>
347
+ <td>space that is not a legal breakpoint</td>
348
+ </tr>
349
+ <tr diff="del">
350
+ <td><kw role="entity">ZeroWidthSpace</kw></td>
351
+ <td>0200B</td>
352
+ <td>space of no width at all</td>
353
+ </tr>
354
+ <tr diff="del">
355
+ <td><kw role="entity">VeryThinSpace</kw></td>
356
+ <td>0200A</td>
357
+ <td>space of width 1/18 em</td>
358
+ </tr>
359
+ <tr diff="del">
360
+ <td><kw role="entity">ThinSpace</kw></td>
361
+ <td>02009</td>
362
+ <td>space of width 3/18 em</td>
363
+ </tr>
364
+ <tr diff="del">
365
+ <td><kw role="entity">MediumSpace</kw></td>
366
+ <td>02005</td>
367
+ <td>space of width 4/18 em</td>
368
+ </tr>
369
+ <tr diff="del">
370
+ <td><kw role="entity">ThickSpace</kw></td>
371
+ <td>02009-0200A-0200A</td>
372
+ <td>space of width 5/18 em</td>
373
+ </tr>
374
+ <tr diff="del">
375
+ <td><kw role="entity">NegativeVeryThinSpace</kw></td>
376
+ <td>0200A-0FE00</td>
377
+ <td>space of width -1/18 em</td>
378
+ </tr>
379
+ <tr diff="del">
380
+ <td><kw role="entity">NegativeThinSpace</kw></td>
381
+ <td>02009-0FE00</td>
382
+ <td>space of width -3/18 em</td>
383
+ </tr>
384
+ <tr diff="del">
385
+ <td><kw role="entity">NegativeMediumSpace</kw></td>
386
+ <td>0205F-0FE00</td>
387
+ <td>space of width -4/18 em</td>
388
+ </tr>
389
+ <tr diff="del">
390
+ <td><kw role="entity">NegativeThickSpace</kw></td>
391
+ <td>02005-0FE00</td>
392
+ <td>space of width -5/18 em</td>
393
+ </tr>
394
+ <tr>
395
+ <td><kw role="entity">InvisibleTimes</kw></td>
396
+ <td>02062</td>
397
+ <td>marks multiplication when it is understood without a mark
398
+ (<specref ref="presm_mo"/></td>
399
+ </tr>
400
+ <tr>
401
+ <td><kw role="entity">InvisibleComma</kw></td>
402
+ <td>02063</td>
403
+ <td>used as a separator, e.g., in indices (<specref ref="presm_mo"/></td>
404
+ </tr>
405
+ <tr>
406
+ <td><kw role="entity">ApplyFunction</kw></td>
407
+ <td>02061</td>
408
+ <td>character showing function application in presentation tagging
409
+ (<specref ref="presm_mo"/></td>
410
+ </tr>
411
+ </tbody>
412
+ </table>
413
+ </p>
414
+
415
+ </div3>
416
+ </div2>
417
+
418
+
419
+ <div2><head>Character Symbol Listings</head>
420
+
421
+ <p>The Universal Character Set (UCS) of Unicode and ISO 10646
422
+ continues to evolve, see <specref ref="chars_char-status"/>.
423
+ <phrase diff="add">At the time of writing the standard is Unicode 4.0.</phrase>
424
+ <phrase diff="del">A small
425
+ number of the changes recently introduced, relative to those resulting
426
+ from the needs of Asian languages, are those designed exactly to
427
+ facilitate the use of Unicode by the 'equation-writing' community.
428
+ This specification is written on the assumption that the code
429
+ assignments suggested to ISO/IEC JTC1/SC2/WG2 by the UTC will be
430
+ confirmed as they are in public draft forms of Unicode 3.1 and 3.2.</phrase>
431
+ <phrase diff="chg">As before, we can only reiterate that for latest developments on
432
+ details of character standards as far as they influence mathematical
433
+ formalism the <loc href="http://www.w3.org/Math/">home page of the
434
+ W3C Math Activity</loc> should be consulted.</phrase></p>
435
+
436
+ <p>The characters are given with entity names as well as Unicode
437
+ numbers. To facilitate comprehension of a fairly large list of names,
438
+ which totals over 2000 in this case, we offer more than one way to find
439
+ to a given character. A corresponding full set of entity declarations
440
+ is in the DTD in <specref ref="parsing"/>. For discussion of entity
441
+ declarations see that appendix.
442
+ </p>
443
+
444
+ <p>
445
+ The characters are listed by name, and sample glyphs provided for all
446
+ of them. Each character name is accompanied by a code for a character
447
+ grouping chosen from a list given below, a short verbal description,
448
+ and a Unicode hex code drawn from ISO 10646<phrase diff="del">, now extended in
449
+ accordance with the proposal forwarded by the UTC to ISO/IEC WG2 in
450
+ March 2000</phrase>.
451
+ </p>
452
+
453
+ <p>The character listings by alphabetical and Unicode order in
454
+ <specref ref="chars_entity_tables"/> are in harmony with the ISO
455
+ character sets given, in that if some part of a set is included then
456
+ the entire set is included.
457
+ </p>
458
+
459
+ <div3 id="chars_special"><head>Special Constants</head>
460
+
461
+ <p> To begin we list separately a few of the special characters which
462
+ MathML has introduced. These <phrase diff="chg">now have</phrase>
463
+ Unicode values. Rather like the non-marking <phrase
464
+ diff="chg">characters</phrase> above, they provide very useful
465
+ capabilities in the context of machinable mathematics.<phrase diff="del"> It might be
466
+ imagined there could also be entries below for <kw
467
+ role="entity">true</kw>, <kw role="entity">false</kw> and <kw
468
+ role="entity">NotANumber</kw>, but these do not yet have Unicode
469
+ points assigned. They can be introduced by the character extension
470
+ mechanisms provided by the <el>mglyph</el> and <el>csymbol</el> elements.</phrase>
471
+
472
+ <table>
473
+ <thead>
474
+ <tr>
475
+ <td>Entity name</td>
476
+ <td>Unicode</td>
477
+ <td>Description</td>
478
+ </tr>
479
+ </thead>
480
+ <tbody>
481
+ <tr>
482
+ <td><kw role="entity">CapitalDifferentialD</kw></td>
483
+ <td>02145</td>
484
+ <td>D for use in differentials, e.g. within integrals</td>
485
+ </tr>
486
+ <tr>
487
+ <td><kw role="entity">DifferentialD</kw></td>
488
+ <td>02146</td>
489
+ <td>d for use in differentials, e.g. within integrals</td>
490
+ </tr>
491
+ <tr>
492
+ <td><kw role="entity">ExponentialE</kw></td>
493
+ <td>02147</td>
494
+ <td>e for use for the exponential base of the natural logarithms</td>
495
+ </tr>
496
+ <tr><td><kw role="entity">ImaginaryI</kw></td>
497
+ <td>02148</td>
498
+ <td>i for use as a square root of -1</td>
499
+ </tr>
500
+ </tbody>
501
+ </table>
502
+ </p>
503
+ </div3>
504
+
505
+
506
+ <div3 id="chars_byxxx"><head>Character Tables (ASCII format)</head>
507
+
508
+ <p>The first table offered is a very large ASCII listing of characters
509
+ considered particularly relevant to mathematics. This is given in
510
+ <loc href="bycodes.html" diff="chg">Unicode order</loc>.
511
+ Most, but not all, of these characters have MathML names
512
+ defined via entity declarations in the DTD. Those that do not are
513
+ usually symbols which seem mathematically peripheral, such as dingbats,
514
+ machine graphics or technical symbols.
515
+ </p>
516
+
517
+ <p>
518
+ A second table lists those characters that do have MathML entity
519
+ names, <loc href="byalpha.html">ordered alphabetically</loc>, with
520
+ a lower-case letter preceding its upper-case counterpart.
521
+ </p>
522
+
523
+ </div3>
524
+
525
+ <div3 id="chars_16x16-tables"><head>Tables arranged by Unicode block</head>
526
+ <p>
527
+ The tables in this section detail Unicode code points (displayed with
528
+ 256 code points per table) that have mathematically significant
529
+ characters. The sample glyph images link to the <loc
530
+ href="bycodes.html">table of characters ordered by Unicode</loc> given
531
+ in the previous section.<phrase diff="del"> As shown in the key for each table, the
532
+ status of each character (for example in Unicode 3.0 or in the
533
+ proposed additions) is indicated by a CSS class on the table cell
534
+ (which by default is indicated by varying the background color).</phrase> The
535
+ names of the blocks are those of the Unicode blocks included in the
536
+ numerical range given; bracketing indicates <phrase diff="add">glyphs
537
+ for</phrase> characters of that type are not shown in these tables.</p>
538
+
539
+ <table id="chars_table-unicode-block">
540
+ <thead>
541
+ <tr>
542
+ <td>Block Range</td>
543
+ <td>Description</td>
544
+ </tr>
545
+ </thead>
546
+ <tbody>
547
+ <tr>
548
+ <td><loc href="000.html">00000 - 000FF</loc></td>
549
+ <td>Controls and Basic Latin, and Latin-1 Supplement</td>
550
+ </tr>
551
+ <tr>
552
+ <td><loc href="001.html">00100 - 001FF</loc></td>
553
+ <td>Latin Extended-A, Latin Extended-B</td>
554
+ </tr>
555
+ <tr>
556
+ <td><loc href="002.html">00200 - 002FF</loc></td>
557
+ <td>IPA Extensions, Spacing Modifier Letters</td>
558
+ </tr>
559
+ <tr>
560
+ <td><loc href="003.html">00300 - 003FF</loc></td>
561
+ <td>Combining Diacritical Marks, Greek [and Coptic]
562
+ </td>
563
+ </tr>
564
+ <tr>
565
+ <td><loc href="004.html">00400 - 004FF</loc></td>
566
+ <td>Cyrillic</td>
567
+ </tr>
568
+ <!--
569
+ <tr>
570
+ <td><loc href="005.html">00500 - 005FF</loc></td>
571
+ <td>Cyrillic Supplement, [Armenian, Hebrew]</td>
572
+ </tr>
573
+ -->
574
+ <tr>
575
+ <td><loc href="020.html">02000 - 020FF</loc></td>
576
+ <td>General Punctuation, Superscripts and Subscripts, Currency Symbols,
577
+ Combining Diacritical Marks for Symbols</td>
578
+ </tr>
579
+ <tr>
580
+ <td><loc href="021.html">02100 - 021FF</loc></td>
581
+ <td>Letter-like Symbols, Number Forms, Arrows</td>
582
+ </tr>
583
+ <tr>
584
+ <td><loc href="022.html">02200 - 022FF</loc></td>
585
+ <td>Mathematical Operators</td>
586
+ </tr>
587
+ <tr>
588
+ <td><loc href="023.html">02300 - 023FF</loc></td>
589
+ <td>Miscellaneous
590
+ Technical</td>
591
+ </tr>
592
+ <tr>
593
+ <td><loc href="024.html">02400 - 024FF</loc></td>
594
+ <td>Control Pictures, Optical Character Recognition, Enclosed Alphanumerics</td>
595
+ </tr>
596
+ <tr>
597
+ <td><loc href="025.html">02500 - 025FF</loc></td>
598
+ <td>Box Drawing, Block Elements, Geometric Shapes</td>
599
+ </tr>
600
+ <tr>
601
+ <td><loc href="026.html">02600 - 026FF</loc></td>
602
+ <td>Miscellaneous Symbols </td>
603
+ </tr>
604
+ <tr>
605
+ <td><loc href="027.html">02700 - 027FF</loc></td>
606
+ <td>Dingbats</td>
607
+ </tr>
608
+ <tr>
609
+ <td><loc href="029.html">02900 - 029FF</loc></td>
610
+ <td>Supplemental Arrows, Miscellaneous Mathematical Symbols</td>
611
+ </tr>
612
+ <tr>
613
+ <td><loc href="02A.html">02A00 - 02AFF</loc></td>
614
+ <td>Supplemental Mathematical Operators</td>
615
+ </tr>
616
+ <tr>
617
+ <td><loc href="030.html">03000 - 030FF</loc></td>
618
+ <td>CJK Symbols and Punctuation, [Hiragana, Katakana]</td>
619
+ </tr>
620
+ <tr>
621
+ <td><loc href="0FB.html">0FB00 - 0FBFF</loc></td>
622
+ <td>Alphabetic Presentation Forms </td>
623
+ </tr>
624
+ <tr>
625
+ <td><loc href="0FE.html">0FE00 - 0FEFF</loc></td>
626
+ <td>[Combining Half Marks, CJK Compatibility Forms, Small Form Variants,
627
+ Arabic Presentation Forms-B]</td>
628
+ </tr>
629
+ <tr>
630
+ <td><loc href="1D4.html">1D400 - 1D4FF</loc></td>
631
+ <td>Mathematical Styled Latin (Bold, Italic, Bold Italic, Script,
632
+ Bold Script begins)
633
+ </td>
634
+ </tr>
635
+ <tr>
636
+ <td><loc href="1D5.html">1D500 - 1D5FF</loc></td>
637
+ <td>Mathematical Styled Latin (Bold Script ends, Fraktur, Double-struck,
638
+ Bold Fraktur, Sans-serif, Sans-serif Bold begins)
639
+ </td>
640
+ </tr>
641
+ <tr>
642
+ <td><loc href="1D6.html">1D600 - 1D6FF</loc></td>
643
+ <td>Mathematical Styled Latin (Sans-serif Bold ends, Sans-serif Italic,
644
+ Sans-serif Bold Italic, Monospace, Bold), Mathematical Styled Greek (Bold, Italic begins)</td>
645
+ </tr>
646
+ <tr>
647
+ <td><loc href="1D7.html">1D700 - 1D7FF</loc></td>
648
+ <td>Mathematical Styled Greek (Italic continued, Bold Italic,
649
+ Sans-serif Bold), Mathematical Styled Digits </td>
650
+ </tr>
651
+ </tbody>
652
+ </table>
653
+ </div3>
654
+
655
+ <div3 id="chars_math-negated-tables"><head>Negated
656
+ Mathematical Characters</head>
657
+
658
+ <p>
659
+ In addition to the Unicode Characters so far listed, one may use the
660
+ combining characters <phrase diff="chg">U+0338</phrase> (/),
661
+ <phrase diff="chg">U+20D2</phrase> (|) and <phrase diff="chg">U+20E5</phrase> (\) to produce
662
+ negated or <phrase diff="chg">canceled</phrase> forms of characters. A combining character
663
+ should be placed immediately after its 'base' character, with no
664
+ intervening markup or space, just as is the case for combining accents.
665
+ </p>
666
+
667
+ <p>
668
+ In principle, the negation characters may be applied to any Unicode
669
+ character, although fonts designed for mathematics typically have some
670
+ negated glyphs ready composed. A MathML renderer should be able to use
671
+ these pre-composed glyphs in these cases. A compound character code
672
+ either represents a UCS character that is already available, as in the
673
+ case of <phrase diff="chg">U+003D+00338</phrase> which amounts to
674
+ <phrase diff="chg">U+2260</phrase>, or it does not as is the
675
+ case for <phrase diff="chg">U+2202+0338</phrase>. The common cases of
676
+ negations, <phrase diff="chg">of the latter type</phrase>,
677
+ that have been identified are listed in the table
678
+ </p>
679
+
680
+ <ulist>
681
+ <item><p><loc href="cancellations.html">cancellations</loc></p></item>
682
+ </ulist>
683
+
684
+ <p>
685
+ Note that it is the policy of the W3C and of Unicode that if a single
686
+ character is already defined for what can be achieved with a combining
687
+ character, that character must be used instead of the decomposed form.
688
+ It is also intended that no new single characters representing what
689
+ can be done by with existing compositions will be introduced.
690
+ <phrase diff="add">For further information on these matters see
691
+ the Unicode Standard Annex 15, Unicode Normalization Forms
692
+ <bibref ref="UAX15"/>, especially
693
+ the discussion of Normalization Form C.</phrase>
694
+ </p>
695
+
696
+
697
+ </div3>
698
+
699
+ <div3 id="chars_math-variant-tables"><head>Variant
700
+ Mathematical Characters</head>
701
+
702
+ <p>
703
+ Unicode attempts to avoid having several character codes for simple
704
+ font variants. For a code point to be assigned there should be
705
+ more than a nuance in glyphs to be recorded. To record
706
+ variants worth noting there is a special character <phrase diff="chg">in</phrase>
707
+ Unicode 3.2, U+FE00 (VARIATION SELECTOR-1), which
708
+ acts as a postfix modifier. However the legally allowed
709
+ combinations with this variation selector are restricted to a
710
+ list recorded as part of Unicode. The VARIATION SELECTOR-1
711
+ character may only be applied to the characters listed here.
712
+ The resulting combination is not regarded by Unicode as a separate
713
+ character, but a variation on the base character. Unicode aware systems
714
+ may render the combination as the base if the available fonts do not
715
+ support the variant glyph shape.
716
+ </p>
717
+
718
+ <ulist>
719
+ <item><p><loc href="variants.html">variants</loc></p></item>
720
+ </ulist>
721
+
722
+ </div3>
723
+
724
+ <div3 id="chars_letter-like-tables"><head>Mathematical Alphanumeric Symbols</head>
725
+ <p>
726
+ Here we list the special mathematical alphabets. Note that the names
727
+ for these alphabetic runs should be regarded as conventions resulting
728
+ from recent tradition in the typesetting of mathematical formulas,
729
+ rather than as fixing exactly and forever the styles which are to be
730
+ used. Of course, they do correspond to the styles presently most
731
+ common. But, for instance, there may be font variations in the glyphs
732
+ from double-struck, open-face or blackboard bold fonts, all of which
733
+ would naturally be used for the characters in the range here labelled
734
+ Double-struck. Similar considerations would apply to appellations
735
+ such as fraktur and gothic, or script and calligraphic.
736
+ </p>
737
+
738
+ <p>
739
+ As discussed above, the use of these characters is formally equivalent
740
+ to the use of characters in Plane 0, together with a suitable value
741
+ for the <att>mathvariant</att> attribute. The
742
+ correspondence is given in the character tables. Most of these
743
+ characters come from the <phrase diff="del">proposed</phrase> additions to Plane 1, however a few
744
+ characters (such as the double-struck letters N, P, Z, Q, R, C, H
745
+ representing common number sets) were already present in Unicode 3.0
746
+ and retain their original positions. These characters are highlighted
747
+ in the tables.
748
+ </p>
749
+
750
+ <ulist>
751
+ <item><p><loc href="bold.html">Bold</loc></p></item>
752
+ <item><p><loc href="italic.html">Italic</loc></p></item>
753
+ <item><p><loc href="bold-italic.html">Bold Italic</loc></p></item>
754
+ <item><p><loc href="double-struck.html">Double-struck</loc></p></item>
755
+ <item><p><loc href="script.html">Script</loc></p></item>
756
+ <item><p><loc href="bold-script.html">Bold Script</loc></p></item>
757
+ <item><p><loc href="fraktur.html">Fraktur</loc></p></item>
758
+ <item><p><loc href="bold-fraktur.html">Bold Fraktur</loc></p></item>
759
+ <item><p><loc href="sans-serif.html">Sans-serif</loc></p></item>
760
+ <item><p><loc href="bold-sans-serif.html">Bold Sans-serif</loc></p></item>
761
+ <item><p><loc href="sans-serif-italic.html">Sans-serif Italic</loc></p></item>
762
+ <item><p><loc href="sans-serif-bold-italic.html">Sans-serif Bold Italic</loc></p></item>
763
+ <item><p><loc href="monospace.html">Monospace</loc></p></item>
764
+ </ulist>
765
+ </div3>
766
+
767
+
768
+ <div3 id="chars_entity_tables"><head>MathML Character Names</head>
769
+ <p>
770
+ This section corresponds closely with the entity definitions in the DTD
771
+ described in <specref ref="parsing"/>. All of the entity sets except the
772
+ last correspond to entity sets defined by ISO 8879 or ISO 9573-13.
773
+ </p>
774
+ <table>
775
+ <thead>
776
+ <tr>
777
+ <td>ISO Handle</td>
778
+ <td>Description</td>
779
+ </tr>
780
+ </thead>
781
+ <tbody>
782
+ <tr>
783
+ <td><loc href="isoamsa.html">ISOAMSA</loc></td>
784
+ <td> Added Mathematical Symbols: Arrows</td>
785
+ </tr>
786
+ <tr>
787
+ <td><loc href="isoamsb.html">ISOAMSB</loc></td>
788
+ <td>Added Mathematical Symbols: Binary Operators</td>
789
+ </tr>
790
+ <tr>
791
+ <td><loc href="isoamsc.html">ISOAMSC</loc></td>
792
+ <td>Added Mathematical Symbols: Delimiters</td>
793
+ </tr>
794
+ <tr>
795
+ <td><loc href="isoamsn.html">ISOAMSN</loc></td>
796
+ <td>Added Mathematical Symbols: Negated Relations</td>
797
+ </tr>
798
+ <tr>
799
+ <td><loc href="isoamso.html">ISOAMSO</loc></td>
800
+ <td>Added Mathematical Symbols: Ordinary</td>
801
+ </tr>
802
+ <tr>
803
+ <td><loc href="isoamsr.html">ISOAMSR</loc></td>
804
+ <td>Added Mathematical Symbols: Relations</td>
805
+ </tr>
806
+ <tr>
807
+ <td><loc href="isobox.html">ISOBOX</loc></td>
808
+ <td>Box and Line Drawing</td>
809
+ </tr>
810
+ <tr>
811
+ <td><loc href="isocyr1.html">ISOCYR1</loc></td>
812
+ <td>Cyrillic-1</td>
813
+ </tr>
814
+ <tr>
815
+ <td><loc href="isocyr2.html">ISOCYR2</loc></td>
816
+ <td>Cyrillic-2</td>
817
+ </tr>
818
+ <tr>
819
+ <td><loc href="isodia.html">ISODIA</loc></td>
820
+ <td>Diacritical Marks</td>
821
+ </tr>
822
+ <tr>
823
+ <td><loc href="isogrk3.html">ISOGRK3</loc></td>
824
+ <td>Greek-3</td>
825
+ </tr>
826
+ <tr>
827
+ <td><loc href="isolat1.html">ISOLAT1</loc></td>
828
+ <td>Latin-1</td>
829
+ </tr>
830
+ <tr>
831
+ <td><loc href="isolat2.html">ISOLAT2</loc></td>
832
+ <td>Latin-2</td>
833
+ </tr>
834
+ <tr>
835
+ <td><loc href="isomfrk.html">ISOMFRK</loc></td>
836
+ <td>Mathematical Fraktur</td>
837
+ </tr>
838
+ <tr>
839
+ <td><loc href="isomopf.html">ISOMOPF</loc></td>
840
+ <td>Mathematical Openface (Double-struck)</td>
841
+ </tr>
842
+ <tr>
843
+ <td><loc href="isomscr.html">ISOMSCR</loc></td>
844
+ <td>Mathematical Script</td>
845
+ </tr>
846
+ <tr>
847
+ <td><loc href="isonum.html">ISONUM</loc></td>
848
+ <td>Numeric and Special Graphic</td>
849
+ </tr>
850
+ <tr>
851
+ <td><loc href="isopub.html">ISOPUB</loc></td>
852
+ <td>Publishing</td>
853
+ </tr>
854
+ <tr>
855
+ <td><loc href="isotech.html">ISOTECH</loc></td>
856
+ <td>General Technical</td>
857
+ </tr>
858
+ <tr>
859
+ <td><loc href="mmlextra.html">MMLEXTRA</loc></td>
860
+ <td>Extra Names added by MathML</td>
861
+ </tr>
862
+ </tbody>
863
+ </table>
864
+ </div3>
865
+
866
+ </div2>
867
+
868
+ <div2><head>Differences from Characters in MathML 1</head>
869
+
870
+ <div3><head>Coverage</head>
871
+ <p>
872
+ We have excluded a very few other characters that may have appeared in
873
+ the corresponding lists in MathML 1. Those characters thus
874
+ <emph>lost</emph> will be found to be used very infrequently in the
875
+ experience of mathematical publishers, or simply to be completely
876
+ unacceptable for inclusion in Unicode. However MathML 2 does provide
877
+ the <el>mglyph</el> element to accommodate new
878
+ characters that authors may wish to introduce.
879
+ </p>
880
+ </div3>
881
+
882
+ <div3><head>Fewer Non-marking Characters </head>
883
+
884
+ <p>It used to be in MathML 1.0 that there were a number more
885
+ non-marking character entities listed. These were concerned with
886
+ composition control, such as line-breaking. In MathML 2 such control
887
+ is effected by the use of the proper attributes on the <el>mspace</el> element.
888
+ </p>
889
+ </div3>
890
+
891
+ <div3><head>ISO Tables</head>
892
+
893
+ <p>
894
+ The character listings by alphabetical and Unicode order in <specref
895
+ ref="chars_entity_tables"/> have now been brought more into line with
896
+ the corresponding ISO character sets than was the case in MathML 1.0,
897
+ in that if some part of a set is included then the entire set is
898
+ included. In addition, the group ISOCHEM has been dropped as more
899
+ properly the concern of chemists. All the ISO mathematical alphabets
900
+ are listed, since there are now Unicode characters to point to,
901
+ in particular the bold Greek of ISOGRK3. These changes have also been
902
+ reflected in the entity declarations in the DTD in <specref
903
+ ref="parsing"/>.
904
+ </p>
905
+ </div3>
906
+ <div3 id="chars_char-status">
907
+ <head>Status of Character Encodings</head>
908
+
909
+ <p>A significant change
910
+ <phrase diff="chg">after MathML 1.0 occurred in</phrase> the movement toward
911
+ adoption of more characters for mathematics in the UCS
912
+ and availability of public fonts for mathematics. The
913
+ encoding of characters in the UCS is done
914
+ jointly by the Unicode Technical Committee and by ISO/IEC
915
+ JTC1/SC2/WG2. The process of encoding takes quite some time from the
916
+ deliberation of first proposals to the final approval.
917
+ The characters mentioned in this chapter and listed in the associated
918
+ tables <phrase diff="chg">have been though the</phrase> various stages
919
+ of this approval process.<phrase diff="del"> This section
920
+ gives detailed information about the stages relevant to this
921
+ specification and gives an overview of the characters affected. The
922
+ lists, as well as other places that discuss characters, mention
923
+ <phrase>any cases </phrase>when
924
+ characters are not fully approved or show this graphically.
925
+ Updates on the status of the characters will be provided by updates
926
+ to this specification, by errata to this
927
+ specification, and by notices on the
928
+ <loc href="http://www.w3.org/Math/">W3C Math home page</loc>.
929
+ The final word on all Unicode matters is naturally to be found
930
+ at <loc href="http://www.unicode.org/">the Unicode Consortium</loc>.</phrase></p>
931
+
932
+ <p>
933
+ <phrase diff="chg">At the time of the preparation of the MathML 2.0
934
+ specification <bibref diff="add" ref="MathML2"/> the characters relevant to mathematics fell </phrase>
935
+ into three categories:
936
+ <phrase diff="chg">fully</phrase> accepted characters, characters in final (JTC1) ISO/IEC ballot,
937
+ and characters before the final ISO/IEC ballot.
938
+ </p>
939
+ <ulist>
940
+ <item>
941
+ <p>
942
+ Fully accepted characters <phrase diff="chg">included </phrase>a large number of Latin, Greek, and
943
+ Cyrillic letters, a large number of Mathematical Operators and
944
+ symbols, including arrows, and so on. Fully accepted characters
945
+ <phrase diff="chg">were</phrase> exactly those that are
946
+ <phrase diff="chg">in</phrase> both Unicode 3.0 <bibref
947
+ ref="Unicode"/> and ISO/IEC 10646-1:2000 <bibref
948
+ ref="ISOIEC10646-1"/>, which are identical code point by code point.
949
+ <phrase diff="del">Fully
950
+ accepted characters are not specially marked or mentioned in this
951
+ specification; they do not pose any unusual implementation problems
952
+ other than possibly finding fonts to display them</phrase> Those of obvious
953
+ special interest to mathematics <phrase diff="chg">numbered</phrase> over
954
+ 1,500, depending on how you count.
955
+ </p>
956
+ </item>
957
+
958
+ <item>
959
+ <p diff="chg">
960
+ In April 2001, the Mathematical Alphanumeric Symbols came up for a final ballot
961
+ together with a large number of ideographs and other
962
+ characters not directly relevant for mathematics. There were just
963
+ about 1,000 of these. The additions were published as ISO/IEC 10646-2,
964
+ and became part of Unicode 3.1.
965
+ </p>
966
+
967
+ <p diff="del">
968
+ While acceptance of this ballot seems more likely than rejection,
969
+ implementers and users of MathML have to be aware that until the final
970
+ acceptance, they are using the code points of characters in final
971
+ ballot at their own risk. Entities (see <specref
972
+ ref="chars_entity_tables"/>) and the <att>mathvariant</att> attribute (see <specref
973
+ ref="presm_commatt"/>) can be used to avoid that risk.
974
+ </p>
975
+ </item>
976
+
977
+ <item>
978
+ <p diff="chg">
979
+ Characters relevant to MathML that were before final ballot made up a long list
980
+ of operators and symbols, including some special constants and
981
+ non-marking characters (see <specref ref="chars_nonmark"/> and
982
+ <specref ref="chars_special"/>). They numbered about 590 in all.
983
+ With some small technical improvements and compromises the proposed additions
984
+ accepted were published as an amendment to [ISO/IEC
985
+ 10646-1], and became part of Unicode 3.2.
986
+ </p>
987
+
988
+ <p diff="chg">
989
+ Even with the good will shown to the mathematical community by the
990
+ Unicode process a small number of characters of special interest
991
+ to some may not yet have been included. The obvious solution of
992
+ avoiding their use may not satisfy all. For these characters the
993
+ Unicode mechanism involving Private Use Area codes could be deployed,
994
+ in spite of all the dangers of confusion and collisions of conventions
995
+ this brings with it. However, this is the situation for which
996
+ <intref ref="presm_mglyph"><el>mglyph</el></intref>
997
+ was introduced. The use of <intref ref="presm_mglyph"><el>mglyph</el></intref>
998
+ is recommended to refer to symbols not included in Unicode.</p>
999
+ </item>
1000
+ </ulist>
1001
+
1002
+ </div3>
1003
+
1004
+ </div2>
1005
+
1006
+ </div1>
1007
+
1008
+
1009
+
1010
+
1011
+