File:  [LON-CAPA] / loncom / html / adm / jsMath / extensions / HTML.js
Revision 1.1: download - view: text, annotated - select for diffs
Mon Mar 27 19:32:23 2006 UTC (18 years, 4 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
-jsMath 3.2

    1: /*
    2:  *  extensions/HTML.js
    3:  *  
    4:  *  Part of the jsMath package for mathematics on the web.
    5:  *
    6:  *  This file implements a number of HTML-specific extensions to TeX,
    7:  *  including \color, \style, \class, \unicode, etc.  It will be loaded
    8:  *  automatically when needed, or can be loaded by
    9:  *  
   10:  *    jsMath.Extension.Require('HTML');
   11:  *
   12:  *  ---------------------------------------------------------------------
   13:  *
   14:  *  Copyright 2005-2006 by Davide P. Cervone
   15:  * 
   16:  *  Licensed under the Apache License, Version 2.0 (the "License");
   17:  *  you may not use this file except in compliance with the License.
   18:  *  You may obtain a copy of the License at
   19:  * 
   20:  *      http://www.apache.org/licenses/LICENSE-2.0
   21:  * 
   22:  *  Unless required by applicable law or agreed to in writing, software
   23:  *  distributed under the License is distributed on an "AS IS" BASIS,
   24:  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   25:  *  See the License for the specific language governing permissions and
   26:  *  limitations under the License.
   27:  */
   28: 
   29: /********************************************************************/
   30: 
   31: jsMath.Package(jsMath.Parser,{
   32: 
   33:   macros: {
   34:     color:      'Color',
   35:     href:       'Href',
   36:     'class':    'Class',
   37:     style:      'Style',
   38:     cssId:      'CSSId',
   39:     unicode:    'Unicode'
   40:   },
   41:   
   42:   /*
   43:    *  Show the argument in a particular color
   44:    */
   45:   Color: function (name) {
   46:     var color = this.GetArgument(this.cmd+name); if (this.error) return;
   47:     // check that it looks like a color?
   48:     this.AddHTML(name,['<span style="color: '+color+'">','</span>']);
   49:   },
   50:   
   51:   /*
   52:    *  Make the argument be a link
   53:    */
   54:   Href: function (name) {
   55:     var href = this.GetArgument(this.cmd+name); if (this.error) return;
   56:     this.AddHTML(name,['<a class="link" href="'+href+'">','</a>']);
   57:   },
   58:   
   59:   /*
   60:    *  Apply a CSS class to the argument
   61:    */
   62:   Class: function (name) {
   63:     var clss = this.GetArgument(this.cmd+name); if (this.error) return;
   64:     this.AddHTML(name,['<span class="'+clss+'">','</span>']);
   65:   },
   66:   
   67:   /*
   68:    *  Apply a CSS style to the argument
   69:    */
   70:   Style: function (name) {
   71:     var style = this.GetArgument(this.cmd+name); if (this.error) return;
   72:     this.AddHTML(name,['<span style="'+style+'">','</span>']);
   73:   },
   74:   
   75:   /*
   76:    *  Add a CSS element ID to the argument
   77:    */
   78:   CSSId: function (name) {
   79:     var id = this.GetArgument(this.cmd+name); if (this.error) return;
   80:     this.AddHTML(name,['<span id="'+id+'">','</span>']);
   81:   },
   82:   
   83:   /*
   84:    *  Insert some raw HTML around the argument (this will not affect
   85:    *  the spacing or other TeX features)
   86:    */
   87:   AddHTML: function (name,params) {
   88:     var data = this.mlist.data;
   89:     var arg = this.GetArgument(this.cmd+name); if (this.error) return;
   90:     arg = jsMath.Parse(arg,data.font,data.size,data.style);
   91:       if (arg.error) {this.Error(arg); return}
   92:     this.mlist.Add(jsMath.mItem.HTML(params[0]));
   93:     for (var i = 0; i < arg.mlist.Length(); i++) {this.mlist.Add(arg.mlist.Get(i))}
   94:     this.mlist.Add(jsMath.mItem.HTML(params[1]));
   95:   },
   96:   
   97:   /*
   98:    *  Insert a unicode reference as an Ord atom.  Its argument should
   99:    *  be the unicode code point, e.g. \unicode{8211}, or \unicode{x203F}.
  100:    *  You can also specify the height and depth in ems, e.g.,
  101:    *  \unicode{8211,.6,-.3}
  102:    */
  103:   Unicode: function (name) {
  104:     var arg = this.GetArgument(this.cmd+name); if (this.error) return;
  105:     arg = arg.split(','); arg[0] = '&#'+arg[0]+';';
  106:     if (!arg[1]) {arg[1] = 'normal'}
  107:     this.mlist.Add(jsMath.mItem.TextAtom('ord',arg[0],arg[1],arg[2],arg[3]));
  108:   }
  109: 
  110: });

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>