Mathematical Markup Language (Mathml) Version 2.0
Total Page:16
File Type:pdf, Size:1020Kb
Mathematical Markup Language (MathML) Version 2.0 W3C Working Draft 28 March 2000 This version: http://www.w3.org/TR/2000/WD-MathML2-20000328 Also available as: HTML zip archive, XHTML zip archive, XML zip archive, PDF (screen), PDF (paper) Latest version: http://www.w3.org/TR/MathML2 Previous versions: http://www.w3.org/TR/2000/WD-MathML2-20000211 http://www.w3.org/TR/1999/WD-MathML2-19991222 http://www.w3.org/TR/1999/WD-MathML2-19991201 Editors: Nico Poppelier (Penta Scope) Robert Miner (Geometry Technologies, Inc.) Patrick Ion (Mathematical Reviews, American Mathematical Society) David Carlisle (NAG) Principal Writers: Ron Ausbrooks, Stephen Buswell, Stéphane Dalmas, Stan Devitt, Angel Diaz, Roger Hunter, Bruce Smith, Neil Soiffer, Robert Sutor, Stephen Watt R Copyright c 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.W3C liability, trademark, document use and software licensing rules apply. Abstract This specification defines the Mathematical Markup Language, or MathML. MathML is an XML application for de- scribing mathematical notation and capturing both its structure and content. The goal of MathML is to enable mathe- matics to be served, received, and processed on the World Wide Web, just as HTML has enabled this functionality for text. This specification of the markup language MathML is intended primarily for a readership consisting of those who will be developing or implementing renderers or editors using it, or software that will communicate using MathML as a protocol for input or output. It is not a User’s Guide but rather a reference document. This document begins with background information on mathematical notation, the problems it poses, and the philos- ophy underlying the solutions MathML proposes. MathML can be used to encode both mathematical notation and mathematical content. About thirty of the MathML tags describe abstract notational structures, while another one hun- dred provide a way of unambiguously specifying the intended meaning of an expression. Additional chapters discuss how the MathML content and presentation elements interact, and how MathML renderers might be implemented and should interact with browsers. Finally, this document addresses the issue of MathML characters and their relation to fonts. While MathML is human-readable, it is anticipated that, in all but the simplest cases, that authors will use equation editors, conversion programs, and other specialized software tools to generate MathML. Several early versions of such MathML tools already exist, and a number of others, both freely available software and commercial products, are under development. Status of this document This is the Last Call Working Draft of the MathML 2.0 specification prepared by the W3C Math Working Group. The Last Call review period ends 30 April 2000. The Math Working Group decided to proceed to Last Call with this draft at its recent Ann Arbor face-to-face meeting (minutes message). This is a W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced or made obsolete by other documents at any time. It is inappropriate to use W3C working drafts as reference material or to cite them as other than ‘work in progress’. This is work in progress and does not imply endorsement by, or the consensus of, either W3C or participants in the Math Working Group. This document has been produced by the W3C Math Working Group. A list of current W3C Technical Reports can be found at http://www.w3.org/TR. This document has been produced as part of the activity of the W3C User Interface Domain. The goals of the W3C Math Working Group are discussed in the W3C Math WG Charter (revised February 2000 from original of 11 June 1998). A list of participants in the W3C Math Working Group is available. The present draft is a revision of the earlier corrected W3C Recommendation MathML 1.01. It differs from it in that all chapters have been updated and two added. Chapters 1 and 2, which are introductory material have been revised to reflect the changes elsewhere in the document, and in the rapidly eveolving Web context. Chapters 3 and 4 have been extended to describe new functionalities added, as well as smaller improvements of material already proposed. Chapter 5 has been newly written to reflect changes in the technology available. The major tables in Chapter 6 have been regenerated to reflect an improved list of Unicode characters useful for mathematics, and the text revised to reflect the new preferred form for accessing them. Chapter 7 has been completely revised for Web technology has changed. A new chapter 8 on the DOM for MathML has been added; the latter points to a new appendix E for a detailed listing. The appendices have been reorganized into normative and non-normative groups. Appendices E and H are completely new. Comments on this document should be sent to the public mailing list of the Math Working Group. 2 Contents 1 Introduction 7 1.1 Mathematics and its Notation 7 1.2 Origins and Goals 8 1.2.1 The History of MathML 8 1.2.2 Acknowledgments 8 1.2.3 Limitations of HTML 9 1.2.4 Requirements for Mathematics Markup 9 1.2.5 Design Goals of MathML 10 1.3 The Role of MathML on the Web 11 1.3.1 Layered Design of Mathematical Web Services 11 1.3.2 Relation to Other Web Technology 12 2 MathML Fundamentals 15 2.1 MathML Overview 15 2.1.1 Taxonomy of MathML Elements 15 2.1.2 Presentation Markup 17 2.1.3 Content Markup 18 2.1.4 Mixing Presentation and Content 18 2.2 Some MathML Examples 19 2.2.1 Presentation Examples 19 2.2.2 Content Examples 21 2.2.3 Mixed Markup Examples 23 2.3 MathML Syntax and Grammar 25 2.3.1 MathML Syntax and Grammar 25 2.3.2 An XML Syntax Primer 25 2.3.3 Children versus Arguments 26 2.3.4 MathML Attribute Values 26 2.3.5 Attributes Shared by all MathML Elements 31 2.3.6 Collapsing Whitespace in Input 32 3 Presentation Markup 34 3.1 Introduction 34 3.1.1 What Presentation Elements Represent 34 3.1.2 Terminology Used In This Chapter 35 3.1.3 Required Arguments 36 3.1.4 Elements with Special Behaviors 37 3.1.5 Summary of Presentation Elements 38 3.2 Token Elements 39 3.2.1 Attributes common to token elements 39 3.2.2 Identifier (mi) 40 3.2.3 Number (mn) 42 3.2.4 Operator, Fence, Separator or Accent (mo) 43 3 3.2.5 Text (mtext) 52 3.2.6 Space (mspace) 54 3.2.7 String Literal (ms) 55 3.2.8 Referring to non-ASCII characters (mchar) 56 3.2.9 Adding new character glyphs to MathML (mglyph) 56 3.3 General Layout Schemata 58 3.3.1 Horizontally Group Sub-Expressions (mrow) 58 3.3.2 Fractions (mfrac) 60 3.3.3 Radicals (msqrt, mroot) 62 3.3.4 Style Change (mstyle) 63 3.3.5 Error Message (merror) 67 3.3.6 Adjust Space Around Content (mpadded) 68 3.3.7 Making Content Invisible (mphantom) 72 3.3.8 Content Inside Pair of Fences (mfenced) 74 3.3.9 Enclose Content Inside Notation (menclose) 77 3.4 Script and Limit Schemata 78 3.4.1 Subscript (msub) 79 3.4.2 Superscript (msup) 79 3.4.3 Subscript-superscript Pair (msubsup) 80 3.4.4 Underscript (munder) 81 3.4.5 Overscript (mover) 82 3.4.6 Underscript-overscript Pair (munderover) 83 3.4.7 Prescripts and Tensor Indices (mmultiscripts) 85 3.5 Tables and Matrices 86 3.5.1 Table or Matrix (mtable) 86 3.5.2 Row in Table or Matrix (mtr) 89 3.5.3 Labeled Row in Table or Matrix (mlabeledtr) 90 3.5.4 Entry in Table or Matrix (mtd) 91 3.5.5 Alignment Markers 92 3.6 Enlivening Expressions 100 3.6.1 Bind Action to Sub-Expression (maction) 100 4 Content Markup 102 4.1 Introduction 102 4.1.1 The Intent of Content Markup 102 4.1.2 The Scope of Content Markup 102 4.1.3 Basic Concepts of Content Markup 103 4.2 Content Element Usage Guide 104 4.2.1 Overview of Syntax and Usage 104 4.2.2 Containers 113 4.2.3 Functions, Operators and Qualifiers 117 4.2.4 Relations 121 4.2.5 Conditions 122 4.2.6 Syntax and Semantics 123 4.2.7 Semantic Mappings 125 4.2.8 Constants and Symbols 125 4.2.9 MathML element types 125 4.3 Content Element Attributes 126 4.3.1 Content Element Attribute Values 126 4.3.2 Attributes Modifying Content Markup Semantics 126 4 4.3.3 Attributes Modifying Content Markup Rendering 128 4.4 The Content Markup Elements 129 4.4.1 Token Elements 133 4.4.2 Basic Content Elements 136 4.4.3 Arithmetic, Algebra and Logic 145 4.4.4 Relations 160 4.4.5 Calculus and Vector Calculus 164 4.4.6 Theory of Sets 173 4.4.7 Sequences and Series 179 4.4.8 Elementary classical functions 183 4.4.9 Statistics 185 4.4.10 Linear Algebra 188 4.4.11 Semantic Mapping Elements 193 4.4.12 Constant and Symbol Elements 195 5 Combining Presentation and Content Markup 202 5.1 Why Two Different Kinds of Markup? 202 5.2 Mixed Markup 203 5.2.1 Reasons to Mix Markup 203 5.2.2 Combinations that are prohibited 205 5.2.3 Presentation Markup Contained in Content Markup 206 5.2.4 Content Markup Contained in Presentation Markup 206 5.3 Parallel Markup 207 5.3.1 Top-level Parallel Markup 207 5.3.2 Fine-grained Parallel Markup 208 5.3.3 Parallel Markup via Cross-References: id and xref 209 5.3.4 Annotation Cross-References using XLink: id and href 210 5.4 Tools, Style Sheets and Macros for Combined Markup 211 5.4.1 Notational Style Sheets 212 5.4.2 Content-Faithful Transformations 213 5.4.3 Style Sheets for Extensions 214 6 Characters, Entities and Fonts 216 6.1 Introduction 216 6.1.1 The Intent of Character Names 216 6.1.2 The STIX Project 216 6.1.3 Character Listings 217 6.1.4 Non-Marking Characters 217 6.1.5 Printing Character Symbol Listings 218 6.1.6 Special Constants 218 6.1.7 Alphabetical Lists 219 6.1.8 ISO Character Set Groupings 219 7 The MathML Interface 221 7.1