Hi Flavio,
On an unrelated note, you will be happy to know that wxagg will be
included in the next release, probably early next week. It's
currently in CVS if you want to get started right away. font support
has been thoroughly revised and improved by Paul Barrett, and these
changes are not currently documented, so be don't be surprised if you
get some unexpected font warnings in the CVS version.
> Hi john , I was doing a pure TeX plot (a bunch of
> equations inside a box) and I noticed that the
> \sqrt{}command does not work even though it listed in the
> help page for mathtext.
> \frac and \dfrac would be a nice addition too...
Agreed. And I guess asking for &=& array layout will be coming soon
> feel free to used this little script as an example of
> another use of mathtext...
I will - they look nice! If you add more to it, be sure to send me
the updated version.
John Gill has written a Cell class for his Table class which is
basically a rectangular box with a text instance inside. It might be
nice to generalize that code to allow multiple lines of text to be
added
cell.add_line(t1)
cell.add_line(t2)
Cell already handles autosizing of the box to surround the text, and
you wouldn't have to mess with turning off the ticks, etc.... John
might be willing to do this, and it could be wrapped in a nice
interface command textbox.
> Flavio """ This script create a box with a series of
> equations
Your code revealed one bug unrelated to the sqrt problem you
described, but you need to make the change below to have your example
render properly. In mathtext.py, in the function math_parse_s, change
maxoy = max(oys)
to
maxoy = abs(max(oys))
Now on to your script. A couple of minor comments first
text(1,9,r'$dx/dt = \alpha y^{2}$', fontsize=15)
the brackets for superscripts are not required; eg, the following is
ok
text(1,9,r'$dx/dt = \alpha y^2$', fontsize=15)
Normally math functions like sin, cos, exp are in roman type, so I
would use
text(1,7,r'$dz/dt = \gamma x^2+\rm{sin}(2\pi y+\phi)$', fontsize=15)
As for sqrt, the mathtext syntax differs from TeX. The main reason is
that I don't draw an overbar with the sqrt symbol group, though this
is something I can add (probably when I get around to dealing with
frac, etc, all of which require some additional drawing and layout).
The point is, you can't use the curly brackets with sqrt or you get a
(silent) parse error. I'll try and amend the parser to allow the
group.
In the meantime, just do
text(1,5,r'$\phi = zy + \Sqrt\alpha\beta $', fontsize=15)
I noticed there is a small clipping bug with sqrt. There are still
some hacks in the way I layout the cmex fonts which are discussed in
the mathtext documentation - the clipping problem likely arises from
this hack.
Also, note that spaces are respected in font mode, so a hackish way to
include them is \rm{ }. I've put adding the TeX small space command
\/ on the (growing at an alarming rate) TODO list. So if you want a
space after zy, you can do
text(1,5,r'$\phi = zy\rm{ } + \sqrt\alpha\beta $', fontsize=15)
That's it; here is the modified script that looks great!
from matplotlib.matlab import *
figure(1, figsize=(5,5), dpi=100)
subplot(111)
plot([0])
a=axis([0,10,0,10])
title('Equation Box')
set(gca(),'xticklabels',[])
set(gca(),'yticklabels',[])
set(gca(),'xticks',[])
set(gca(),'yticks',[])
text(1,9,r'$dx/dt = \alpha y^2$', fontsize=15)
text(1,8,r'$dy/dt = \beta x^2$', fontsize=15)
text(1,7,r'$dz/dt = \gamma x^2+\rm{sin}(2\pi y+\phi)$', fontsize=15)
text(1,5,r'$\phi = zy\rm{ } + \sqrt\alpha\beta $', fontsize=15)
show()