Ilya Zakharevich on Sun, 27 Apr 2003 15:31:42 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: \o3 glitch


On Sun, Apr 27, 2003 at 01:26:22AM -0400, Igor Schein wrote:
> I looked at some basic expressions, here's one of them that looks odd: 
> 
> ? 1/x+1/y+1/z
>  / 1            \
>  | -y + 1\overy | x + 1
>  \ z            /
> -----------------------
>            x
> 
> Is it how it's supposed to look?  Shouldn't \over get resolved? 

This patch fixes the remaining issues in my TODO list.

Docs in the last chunk.

Enjoy,
Ilya

--- ./misc/tex2mail-good1	Fri Apr 25 02:16:52 2003
+++ ./misc/tex2mail	Sun Apr 27 15:24:34 2003
@@ -1,6 +1,6 @@
 #!i:/emx.add/BIN/perl.exe
 
-# $Id: tex2mail.in,v 1.2 2002/04/27 21:00:46 karim Exp $
+# $Id: tex2mail.cmd,v 1.2 2003/04/27 18:27:30 vera Exp vera $
 #
 # Features:
 #      % at the end of a line followed by \n\n is recognized as end of 
@@ -955,8 +955,16 @@ sub puts {
 
 # digests an eaten paragraph
 
+$ending = 0;
+
+sub end_TeX {
+  $par = '';
+  $ending = 1;
+}
+
 sub paragraph {
   local($par);
+  return 0 if $ending;
   $par=<>;
   return 0 unless defined $par;
   return 1 unless $par =~ /\S/;			# whitespace only
@@ -1170,7 +1178,7 @@ sub f_putpar {
         warn "Putting Parentheses $out[$#out]\n__END__\n" if $debug & $debug_record;
   $out[$#out]=&join(&string2record($l),
       &join($out[$#out],&string2record($r)));
-        &finish(1,1);
+  &finish(1);
 }
 
 sub f_putover_string {
@@ -1361,7 +1369,7 @@ sub get_balanced {
 sub open_curly {
   #&puts("{") unless $tokenByToken[$#level];
   &start("}");
-} 
+}
 
 # Deletes extra spaces at the end of a record
 
@@ -1431,7 +1439,7 @@ sub ddollar {
     &start('$$');
   }
   $par =~ s/^\s+//;
-} 
+}
 
 sub item {
   &finishBuffer;
@@ -1761,8 +1769,19 @@ sub makehigh {
   $_[0]=&join($_[0],&string2record(" " x $_[4])) if $_[4];
 }
 
+sub f_FOOTNOTE {
+  &finish(1);
+  puts(">>> ");
+}
+
+sub footnote {
+  puts("<<<FOOTNOTE: ");
+  &start(1, "f_FOOTNOTE");
+  $tokenByToken[$#level]=1;
+}
 
 sub right {
+  close_curly();
   &finish("LeftRight",1);
   &trim(1);
   &collapse(1);
@@ -1773,6 +1792,7 @@ sub f_left {
   &collapse(1);
   &finish(1);
   &start("LeftRight");
+  open_curly();			# Fake a {}-group for \over etc.
 }
 
 sub left {
@@ -1797,6 +1817,7 @@ sub f_leftright_go {
   &finish("junk");
 }
 
+# Used to put \left SOMETHING \right SOMETHING around a group
 sub beg_lr {
   &start(1,"f_leftright_go" . ";" . shift);
   $tokenByToken[$#level]=1;
@@ -2133,7 +2154,7 @@ if ($opt_ignorefonts) {
 
 for ("par","endtitle","endauthor","endaffil","endaddress","endemail","enddate",
      "endhead","key","medskip","smallskip","bigskip","newpage",
-     "vfill","eject","endgraph") {
+     "vfill","eject") {
   $type{"\\$_"}="sub";
   $contents{"\\$_"}="par";
 }
@@ -2207,6 +2228,9 @@ $contents{"\\left"}="left";
 $type{"\\right"}="sub";
 $contents{"\\right"}="right";
 
+$type{'\footnote'}="sub";
+$contents{'\footnote'}="footnote";
+
 $type{"\\underline"}="sub1";
 $contents{"\\underline"}="underline";
 
@@ -2264,9 +2288,6 @@ $contents{"\\cite"}="putpar;[;]";
 $type{"\\begin"}="sub1";
 $contents{"\\begin"}="begin";
 
-$type{"\\end"}="sub1";
-$contents{"\\end"}="end";
-
 for ('@',"_","\$","{","}","#","&","arccos","arcsin","arctan","arg","cos",
     "cosh","cot","coth","csc","deg","det","dim","exp","gcd","hom",
     "inf","ker","lg","lim","liminf","limsup","ln","log","max","min",
@@ -2303,7 +2324,6 @@ for ("equation","gather","align"
 for ("matrix","CD","smallmatrix"
      ) {$environment{"$_"}="matrix,endmatrix;1;c";} 
 
-# XXXX Noindent is needed somewhere...
 for ("remark", "example", "theorem", "definition", "proof", "abstract",
      "proposition", "amplification", "lemma", "corollary",
      ) {$environment{"$_"}="par:unindent:puts;\U$_\E. ,par";} 
@@ -2480,9 +2500,6 @@ $contents{'\ '}=" ";
 $type{'\noindent'}="string";
 $contents{'\noindent'}="";
 
-$type{'\footnote'}="string";
-$contents{'\footnote'}=" FOOTNOTE: ";
-
 $type{'\enspace'}="string";
 $contents{'\enspace'}="  ";
 
@@ -2501,6 +2518,9 @@ $contents{"\\ast"}=" * ";
 $type{"\\prime"}="string";
 $contents{"\\prime"}="'";
 
+$type{"\\endgraph"}="string";
+$contents{"\\endgraph"}=" \\NEWPAR ";
+
 &define('\\define','\\def');
 &define('\\ge','\\geq ');
 &define('\\le','\\leq ');
@@ -2536,9 +2556,13 @@ for ("documentclass", "documentstyle") {
 
 if ($opt_TeX) {
   &define('\pmatrix#1','\left(\begin{matrix}#1\end{matrix}\right)');
+  $type{"\\end"}="sub";
+  $contents{"\\end"}="end_TeX";
 } else {
   $environment{"pmatrix"}="beg_lr;(;):matrix,endmatrix;1;c";
   &defb("pmatrix") unless $opt_TeX;
+  $type{"\\end"}="sub1";
+  $contents{"\\end"}="end";
 }
 
   
@@ -2605,3 +2629,8 @@ __END__
 	  Could not treat fraction as the first thing on the line (\noindent
 	    required).
 	  Support many more macros.
+	  Better support for \end (with -TeX), \footnote, \endgraph.
+	  Allow \over and other infix macros inside \left(\right).
+	  \label would not update $curlength.
+	  Whitespace edits.
+