Annotation of loncom/html/adm/jsMath/extensions/moreArrows.js, revision 1.2

1.1       albertel    1: /*
                      2:  *  extensions/moreArrows.js
                      3:  *  
                      4:  *  Part of the jsMath package for mathematics on the web.
                      5:  *
                      6:  *  This file implements additional arrow macros with under- and
                      7:  *  overset labels.  It can be loaded by
                      8:  *  
                      9:  *    jsMath.Extension.Require('moreArrows');
                     10:  *
                     11:  *  or using \require{moreArrows} within a math formula.
                     12:  *
                     13:  *  ---------------------------------------------------------------------
                     14:  *
                     15:  *  Copyright 2005-2006 by Davide P. Cervone
                     16:  * 
                     17:  *  Licensed under the Apache License, Version 2.0 (the "License");
                     18:  *  you may not use this file except in compliance with the License.
                     19:  *  You may obtain a copy of the License at
                     20:  * 
                     21:  *      http://www.apache.org/licenses/LICENSE-2.0
                     22:  * 
                     23:  *  Unless required by applicable law or agreed to in writing, software
                     24:  *  distributed under the License is distributed on an "AS IS" BASIS,
                     25:  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                     26:  *  See the License for the specific language governing permissions and
                     27:  *  limitations under the License.
                     28:  */
                     29: 
                     30: /********************************************************************/
                     31: 
                     32: jsMath.Extension.Require('leaders');
                     33: 
                     34: jsMath.Package(jsMath.Parser,{
                     35: 
                     36:   macros: {
                     37:     xrightarrow:       ['HandleArrows','rightarrow'],
                     38:     xleftarrow:        ['HandleArrows','leftarrow'],
                     39:     xuprightharpoon:   ['HandleArrows','uprightharpoon'],
                     40:     xupleftharpoon:    ['HandleArrows','upleftharpoon'],
                     41:     xdownrightharpoon: ['HandleArrows','downrightharpoon'],
                     42:     xdownleftharpoon:  ['HandleArrows','downleftharpoon']
                     43:   },
                     44:   
                     45:   leaders: {
                     46:     upleftharpoon:    {left: [1,0x28], rep:   [2,0x00]},
                     47:     uprightharpoon:   {rep:  [2,0x00], right: [1,0x2A]},
                     48:     downleftharpoon:  {left: [1,0x29], rep:   [2,0x00]},
                     49:     downrightharpoon: {rep:  [2,0x00], right: [1,0x2B]}
                     50:   },
                     51: 
                     52:   HandleArrows: function (name,data) {
                     53:     var bot = this.GetBrackets(this.cmd+name); if (this.error) return;
                     54:     var top = this.ProcessArg(this.cmd+name); if (this.error) return;
                     55:     var box = jsMath.Box.Set(top,'S',this.mlist.data.size).Remeasured();
                     56:     var w = box.w;
                     57:     if (bot) {
                     58:       bot = this.Process(bot); if (this.error) return;
                     59:       var box = jsMath.Box.Set(bot,'S',this.mlist.data.size).Remeasured();
                     60:       w = Math.max(w,box.w);
                     61:     }
                     62:     var leader = jsMath.Box.Leaders(w+.75,this.leaders[data[0]]);
                     63:     box = jsMath.mItem.Atom('op',jsMath.Box.SetList([leader],'T',this.mlist.data.size));
                     64:     box.limits = 1; box.sup = top; box.sub = bot;
                     65:     this.mlist.Add(box);
                     66:   }
                     67: 
                     68: });

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