
<!--
     File isoamso.ent produced by the XSL script entities.xsl
     from input data in unicode.xml.

     Please report any errors to David Carlisle
     via the public W3C list www-math@w3.org.

     The numeric character values assigned to each entity
     (should) match the Unicode assignments in Unicode 4.0.

     Entity names in this file are derived from files carrying the
     following notice:

     (C) International Organization for Standardization 1986
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

-->


<!-- 
     Version: $Id: isoamso.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $

       Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML
       System identifier: http://www.w3.org/2003/entities/iso8879/isoamso.ent

     The public identifier should always be used verbatim.
     The system identifier may be changed to suit local requirements.

     Typical invocation:

       <!ENTITY % isoamso PUBLIC
         "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN//XML"
         "http://www.w3.org/2003/entities/iso8879/isoamso.ent"
       >
       %isoamso;

-->

<!ENTITY ang              "&#x02220;" ><!--ANGLE -->
<!ENTITY angmsd           "&#x02221;" ><!--MEASURED ANGLE -->
<!ENTITY beth             "&#x02136;" ><!--BET SYMBOL -->
<!ENTITY bprime           "&#x02035;" ><!--REVERSED PRIME -->
<!ENTITY comp             "&#x02201;" ><!--COMPLEMENT -->
<!ENTITY daleth           "&#x02138;" ><!--DALET SYMBOL -->
<!ENTITY ell              "&#x02113;" ><!--SCRIPT SMALL L -->
<!ENTITY empty            "&#x02205;" ><!--EMPTY SET -->
<!ENTITY gimel            "&#x02137;" ><!--GIMEL SYMBOL -->
<!ENTITY inodot           "&#x00131;" ><!--LATIN SMALL LETTER DOTLESS I -->
<!ENTITY jnodot           "&#x0006A;" ><!--LATIN SMALL LETTER J -->
<!ENTITY nexist           "&#x02204;" ><!--THERE DOES NOT EXIST -->
<!ENTITY oS               "&#x024C8;" ><!--CIRCLED LATIN CAPITAL LETTER S -->
<!ENTITY planck           "&#x0210F;" ><!--PLANCK CONSTANT OVER TWO PI -->
<!ENTITY real             "&#x0211C;" ><!--BLACK-LETTER CAPITAL R -->
<!ENTITY sbsol            "&#x0FE68;" ><!--SMALL REVERSE SOLIDUS -->
<!ENTITY vprime           "&#x02032;" ><!--PRIME -->
<!ENTITY weierp           "&#x02118;" ><!--SCRIPT CAPITAL P -->
