/itexToMML

To download this project, use:
bzr branch http://golem.ph.utexas.edu/~distler/code/itexToMML/

« back to all changes in this revision

Viewing changes to itex-src/itex2MML.y

  • Committer: Jacques Distler
  • Date: 2010-09-07 16:54:25 UTC
  • Revision ID: distler@golem.ph.utexas.edu-20100907165425-wpbhtvqkn75av4qo
Tags: 1.4.0
itex2MML 1.4.0: Extensible Arrows

We now support extensible arrows,
with LaTeX-style optional arguments.

\xrightarrow[a]{b}

is (in MathML, though not in LaTeX)
equivalent to

\underoverset{a}{b}{\rightarrow}

while

\xrightarrow{b}

is (in MathML, though not in LaTeX)
equivalent to

\overset{b}{\rightarrow}

The supported arrows are

\xrightarrow
\xleftarrow
\xleftrightarrow
\xLeftarrow
\xRightarrow
\xLeftrightarrow
\xleftrightharpoons
\xrightleftharpoons
\xhookleftarrow
\xhookrightarrow
\xmapsto

Show diffs side-by-side

added added

removed removed

1
 
/*             itex2MML 1.3.25
2
 
 *   itex2MML.y last modified 6/9/2010
 
1
/*             itex2MML 1.4.0
 
2
 *   itex2MML.y last modified 9/7/2010
3
3
 */
4
4
 
5
5
%{
277
277
%}
278
278
 
279
279
%left TEXOVER TEXATOP
280
 
%token CHAR STARTMATH STARTDMATH ENDMATH MI MIB MN MO SUP SUB MROWOPEN MROWCLOSE LEFT RIGHT BIG BBIG BIGG BBIGG BIGL BBIGL BIGGL BBIGGL FRAC TFRAC OPERATORNAME MATHOP MATHBIN MATHREL MOP MOL MOLL MOF MOR PERIODDELIM OTHERDELIM LEFTDELIM RIGHTDELIM MOS MOB SQRT ROOT BINOM UNDER OVER OVERBRACE UNDERLINE UNDERBRACE UNDEROVER TENSOR MULTI ARRAY COLSEP ROWSEP ARRAYOPTS COLLAYOUT COLALIGN ROWALIGN ALIGN EQROWS EQCOLS ROWLINES COLLINES FRAME PADDING ATTRLIST ITALICS BOLD BOXED SLASHED RM BB ST END BBLOWERCHAR BBUPPERCHAR BBDIGIT CALCHAR FRAKCHAR CAL FRAK CLAP LLAP RLAP ROWOPTS TEXTSIZE SCSIZE SCSCSIZE DISPLAY TEXTSTY TEXTBOX TEXTSTRING XMLSTRING CELLOPTS ROWSPAN COLSPAN THINSPACE MEDSPACE THICKSPACE QUAD QQUAD NEGSPACE PHANTOM HREF UNKNOWNCHAR EMPTYMROW STATLINE TOOLTIP TOGGLE FGHIGHLIGHT BGHIGHLIGHT SPACE INTONE INTTWO INTTHREE BAR WIDEBAR VEC WIDEVEC HAT WIDEHAT CHECK WIDECHECK TILDE WIDETILDE DOT DDOT DDDOT DDDDOT UNARYMINUS UNARYPLUS BEGINENV ENDENV MATRIX PMATRIX BMATRIX BBMATRIX VMATRIX VVMATRIX SVG ENDSVG SMALLMATRIX CASES ALIGNED GATHERED SUBSTACK PMOD RMCHAR COLOR BGCOLOR
 
280
%token CHAR STARTMATH STARTDMATH ENDMATH MI MIB MN MO SUP SUB MROWOPEN MROWCLOSE LEFT RIGHT BIG BBIG BIGG BBIGG BIGL BBIGL BIGGL BBIGGL FRAC TFRAC OPERATORNAME MATHOP MATHBIN MATHREL MOP MOL MOLL MOF MOR PERIODDELIM OTHERDELIM LEFTDELIM RIGHTDELIM MOS MOB SQRT ROOT BINOM UNDER OVER OVERBRACE UNDERLINE UNDERBRACE UNDEROVER TENSOR MULTI ARRAY COLSEP ROWSEP ARRAYOPTS COLLAYOUT COLALIGN ROWALIGN ALIGN EQROWS EQCOLS ROWLINES COLLINES FRAME PADDING ATTRLIST ITALICS BOLD BOXED SLASHED RM BB ST END BBLOWERCHAR BBUPPERCHAR BBDIGIT CALCHAR FRAKCHAR CAL FRAK CLAP LLAP RLAP ROWOPTS TEXTSIZE SCSIZE SCSCSIZE DISPLAY TEXTSTY TEXTBOX TEXTSTRING XMLSTRING CELLOPTS ROWSPAN COLSPAN THINSPACE MEDSPACE THICKSPACE QUAD QQUAD NEGSPACE PHANTOM HREF UNKNOWNCHAR EMPTYMROW STATLINE TOOLTIP TOGGLE FGHIGHLIGHT BGHIGHLIGHT SPACE INTONE INTTWO INTTHREE BAR WIDEBAR VEC WIDEVEC HAT WIDEHAT CHECK WIDECHECK TILDE WIDETILDE DOT DDOT DDDOT DDDDOT UNARYMINUS UNARYPLUS BEGINENV ENDENV MATRIX PMATRIX BMATRIX BBMATRIX VMATRIX VVMATRIX SVG ENDSVG SMALLMATRIX CASES ALIGNED GATHERED SUBSTACK PMOD RMCHAR COLOR BGCOLOR XARROW OPTARGOPEN OPTARGCLOSE
281
281
 
282
282
%%
283
283
 
1324
1324
  itex2MML_free_string($3);
1325
1325
};
1326
1326
 
1327
 
mover: OVER closedTerm closedTerm {
 
1327
mover: XARROW closedTerm {
 
1328
  char * s1 = itex2MML_copy3("<mover><mo>", $1, "</mo>");
 
1329
  $$ =  itex2MML_copy3(s1, $2, "</mover>");
 
1330
  itex2MML_free_string(s1);
 
1331
  itex2MML_free_string($1);
 
1332
  itex2MML_free_string($2);
 
1333
}
 
1334
| OVER closedTerm closedTerm {
1328
1335
  char * s1 = itex2MML_copy3("<mover>", $3, $2);
1329
1336
  $$ = itex2MML_copy2(s1, "</mover>");
1330
1337
  itex2MML_free_string(s1);
1332
1339
  itex2MML_free_string($3);
1333
1340
};
1334
1341
 
1335
 
munderover: UNDEROVER closedTerm closedTerm closedTerm {
 
1342
munderover: XARROW OPTARGOPEN closedTerm OPTARGCLOSE closedTerm {
 
1343
  char * s1 = itex2MML_copy3("<munderover><mo>", $1, "</mo>");
 
1344
  char * s2 = itex2MML_copy3(s1, $3, $5);
 
1345
  $$ = itex2MML_copy2(s2, "</munderover>");
 
1346
  itex2MML_free_string(s1);
 
1347
  itex2MML_free_string(s2);
 
1348
  itex2MML_free_string($1);
 
1349
  itex2MML_free_string($3);
 
1350
  itex2MML_free_string($5);
 
1351
}
 
1352
| UNDEROVER closedTerm closedTerm closedTerm {
1336
1353
  char * s1 = itex2MML_copy3("<munderover>", $4, $2);
1337
1354
  $$ = itex2MML_copy3(s1, $3, "</munderover>");
1338
1355
  itex2MML_free_string(s1);