/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.l

  • Committer: Jacques Distler
  • Date: 2010-10-03 15:14:30 UTC
  • Revision ID: distler@golem.ph.utexas.edu-20101003151430-63lclcdosj2qb0ot
Tags: 1.4.5
itex2MML 1.4.5: Array Environment

Support for \begin{array}[b]{clrc} .... \end{array}
-- the standard LaTeX array environment, with an
optional argument giving the alignment of the array
with respect to the current equation axis ('b', 't'
or 'c', defaulting to 'c'), and a mandatory argument
giving the alignment of the columns.
\begin{array}{cc...c} ...\end{array} is equivalent
to \begin{matrix} ... \end{matrix}.

Support for an optional argument on \sqrt. The
(LaTeX standard) \sqrt[3]{a} is equivalent to the
(itex) \root{3}{a}.

Support for \tbinom{}{}.

Show diffs side-by-side

added added

removed removed

1
 
/*             itex2MML 1.4.4
2
 
 *   itex2MML.l last modified 9/30/2010
 
1
/*             itex2MML 1.4.5
 
2
 *   itex2MML.l last modified 10/2/2010
3
3
 */
4
4
 
5
5
%{
6
6
%}
7
7
%option noyywrap
8
 
%x MATH ATTRIBUTELIST BBOLD FRAKTUR CALLIGRAPHIC ROMAN PLAINTEXT INT1 INT2 INT3 MATHENV SVGENV SVGEND OPTARG
 
8
%x MATH ATTRIBUTELIST BBOLD FRAKTUR CALLIGRAPHIC ROMAN PLAINTEXT INT1 INT2 INT3 MATHENV SVGENV SVGEND OPTARG ARRAYOPTIONS COLOPTS
9
9
%{
10
10
#include <string.h>
11
11
 
27
27
int itex2MML_lineno = 1;
28
28
int itex2MML_inoptarg[itex2MML_optarg_depth];
29
29
int itex2MML_optarg_ind = 0;
 
30
int itex2MML_env_start = 0;
30
31
 
31
32
int itex2MML_rowposn = 0;
32
33
int itex2MML_displaymode = 0;
55
56
"^"            return SUP;
56
57
"_"            return SUB; 
57
58
"{"[\t\r\n ]*"}"   return EMPTYMROW;
58
 
"{"            {itex2MML_rowposn = 2; itex2MML_inoptarg[itex2MML_optarg_ind] = itex2MML_inoptarg[itex2MML_optarg_ind]*2; return MROWOPEN;}
59
 
"}"            {itex2MML_inoptarg[itex2MML_optarg_ind] = itex2MML_inoptarg[itex2MML_optarg_ind]/2; return MROWCLOSE;}
 
59
"{"            {itex2MML_rowposn = 2; if(itex2MML_inoptarg[itex2MML_optarg_ind] != 0) itex2MML_inoptarg[itex2MML_optarg_ind]++; return MROWOPEN;}
 
60
"}"            {if(itex2MML_inoptarg[itex2MML_optarg_ind] != 0) itex2MML_inoptarg[itex2MML_optarg_ind]--; return MROWCLOSE;}
60
61
 
61
62
"\\left"       itex2MML_rowposn=2; return LEFT;
62
63
"\\right"      return RIGHT;
753
754
"\\tfrac"         {return TFRAC;}
754
755
 
755
756
"\\binom"        {return BINOM;}
 
757
"\\tbinom"        {return TBINOM;}
756
758
 
757
759
"\\tensor"       {return TENSOR;}
758
760
 
798
800
 
799
801
"\\underoverset"  {return UNDEROVER;}
800
802
 
801
 
"\\sqrt"         {return SQRT;}
 
803
"\\sqrt"         {BEGIN(OPTARG); return SQRT;}
802
804
 
803
805
"\\root"         {return ROOT;}
804
806
 
848
850
 
849
851
"\\mathcal"       {BEGIN(CALLIGRAPHIC); return CAL;}
850
852
 
851
 
"\\begin"        {BEGIN(MATHENV); return BEGINENV;}
 
853
"\\begin"        {itex2MML_env_start = 1; BEGIN(MATHENV); return BEGINENV;}
852
854
"\\end"        {BEGIN(MATHENV); return ENDENV;}
853
855
 
854
856
"\\substack"     {return SUBSTACK;}
933
935
}
934
936
 
935
937
<MATHENV>{
936
 
"\{matrix\}" {BEGIN(MATH); return MATRIX;}
937
 
"\{pmatrix\}" {BEGIN(MATH); return PMATRIX;}
938
 
"\{bmatrix\}" {BEGIN(MATH); return BMATRIX;}
939
 
"\{Bmatrix\}" {BEGIN(MATH); return BBMATRIX;}
940
 
"\{vmatrix\}" {BEGIN(MATH); return VMATRIX;}
941
 
"\{Vmatrix\}" {BEGIN(MATH); return VVMATRIX;}
942
 
"\{smallmatrix\}" {BEGIN(MATH); return SMALLMATRIX;}
943
 
"\{cases\}" {BEGIN(MATH); return CASES;}
944
 
"\{aligned\}" {BEGIN(MATH); return ALIGNED;}
945
 
"\{gathered\}" {BEGIN(MATH); return GATHERED;}
946
 
"\{split\}" {BEGIN(MATH); return ALIGNED;}
947
 
"\{svg\}" {BEGIN(SVGENV); return SVG;}
 
938
"\{matrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return MATRIX;}
 
939
"\{pmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return PMATRIX;}
 
940
"\{bmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return BMATRIX;}
 
941
"\{Bmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return BBMATRIX;}
 
942
"\{vmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return VMATRIX;}
 
943
"\{Vmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return VVMATRIX;}
 
944
"\{smallmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return SMALLMATRIX;}
 
945
"\{cases\}" {itex2MML_env_start = 0; BEGIN(MATH); return CASES;}
 
946
"\{aligned\}" {itex2MML_env_start = 0; BEGIN(MATH); return ALIGNED;}
 
947
"\{gathered\}" {itex2MML_env_start = 0; BEGIN(MATH); return GATHERED;}
 
948
"\{split\}" {itex2MML_env_start = 0; BEGIN(MATH); return ALIGNED;}
 
949
"\{array\}" {if (itex2MML_env_start == 1) BEGIN(ARRAYOPTIONS); else BEGIN(MATH); return ARRAY;}
 
950
"\{svg\}" {itex2MML_env_start = 0; BEGIN(SVGENV); return SVG;}
 
951
}
 
952
 
 
953
<ARRAYOPTIONS>{
 
954
"[t]" {yylval=itex2MML_copy_string("axis 1"); return ARRAYALIGN;}
 
955
"[c]" {yylval=itex2MML_copy_string("center"); return ARRAYALIGN;}
 
956
"[b]" {yylval=itex2MML_copy_string("axis -1"); return ARRAYALIGN;}
 
957
"\{"  {BEGIN(COLOPTS); return ST;}
 
958
[\t\n\r ]+       ;
 
959
}
 
960
 
 
961
<COLOPTS>{
 
962
"\}"  {itex2MML_env_start = 0; BEGIN(MATH); return END;}
 
963
"c"   {yylval=itex2MML_copy_string("center"); return COLUMNALIGN;}
 
964
"l"   {yylval=itex2MML_copy_string("left"); return COLUMNALIGN;}
 
965
"r"   {yylval=itex2MML_copy_string("right"); return COLUMNALIGN;}
 
966
[\t\n\r ]+       ;
948
967
}
949
968
 
950
969
<SVGENV>{