Revision: 3664
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3664&view=rev
Author:   mdboom
Date:     2007-08-02 11:37:32 -0700 (Thu, 02 Aug 2007)

Log Message:
-----------
Add kwarg 'markup' for all text that allows the user to choose either
'plain' or 'tex' markup.  A default may also be provided in the
rcParam 'text.markup'.
Minor bugfix to mathtext.py

Modified Paths:
--------------
    trunk/matplotlib/examples/accented_text.py
    trunk/matplotlib/examples/arrow_demo.py
    trunk/matplotlib/examples/dannys_example.py
    trunk/matplotlib/examples/histogram_demo.py
    trunk/matplotlib/examples/histogram_demo_canvasagg.py
    trunk/matplotlib/examples/integral_demo.py
    trunk/matplotlib/examples/legend_auto.py
    trunk/matplotlib/examples/mathtext_demo.py
    trunk/matplotlib/examples/mathtext_examples.py
    trunk/matplotlib/examples/scatter_demo2.py
    trunk/matplotlib/examples/tex_demo.py
    trunk/matplotlib/examples/tex_unicode_demo.py
    trunk/matplotlib/lib/matplotlib/mathtext.py
    trunk/matplotlib/lib/matplotlib/rcsetup.py
    trunk/matplotlib/lib/matplotlib/text.py
    trunk/matplotlib/matplotlibrc.template

Modified: trunk/matplotlib/examples/accented_text.py
===================================================================
--- trunk/matplotlib/examples/accented_text.py  2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/accented_text.py  2007-08-02 18:37:32 UTC (rev 
3664)
@@ -13,9 +13,9 @@
 
 plot(range(10))
 
-title(r'$\ddot{o}\acute{e}\grave{e}\hat{O}\breve{i}\bar{A}\tilde{n}\vec{q}$', 
fontsize=20)
+title(r'$\ddot{o}\acute{e}\grave{e}\hat{O}\breve{i}\bar{A}\tilde{n}\vec{q}$', 
fontsize=20, markup="tex")
 # shorthand is also supported and curly's are optional
-xlabel(r"""$\"o\ddot o \'e\`e\~n\.x\^y$""", fontsize=20)
+xlabel(r"""$\"o\ddot o \'e\`e\~n\.x\^y$""", fontsize=20, markup="tex")
 
 
 show()

Modified: trunk/matplotlib/examples/arrow_demo.py
===================================================================
--- trunk/matplotlib/examples/arrow_demo.py     2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/arrow_demo.py     2007-08-02 18:37:32 UTC (rev 
3664)
@@ -52,7 +52,7 @@
     min_text_size = size
     label_text_size = size*2.5
     text_params={'ha':'center', 'va':'center', 'family':'sans-serif',\
-        'fontweight':'bold'}
+        'fontweight':'bold', 'markup': 'tex'}
     r2 = sqrt(2)
 
     deltas = {\
@@ -211,7 +211,7 @@
         label = '$%s_{_{\mathrm{%s}}}$' % (orig_label[0], orig_label[1:])
 
         text(x, y, label, size=label_text_size, ha='center', va='center', \
-            color=labelcolor or fc)
+            color=labelcolor or fc, markup='tex')
 
     for p in positions.keys():
         draw_arrow(p)

Modified: trunk/matplotlib/examples/dannys_example.py
===================================================================
--- trunk/matplotlib/examples/dannys_example.py 2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/dannys_example.py 2007-08-02 18:37:32 UTC (rev 
3664)
@@ -29,14 +29,14 @@
 pylab.plot((-delta / 2, -delta / 2 + offset * 2), (height, height + offset), 
'k', linewidth = 2)
 pylab.plot((delta / 2, delta / 2 - offset * 2), (height, height - offset), 
'k', linewidth = 2)
 pylab.plot((delta / 2, delta / 2 - offset * 2), (height, height + offset), 
'k', linewidth = 2)
-pylab.text(-0.06, height - 0.06, r'$\delta$', {'color' : 'k', 'fontsize' : 24})
+pylab.text(-0.06, height - 0.06, r'$\delta$', {'color' : 'k', 'fontsize' : 
24}, markup = 'tex')
 
 ## X-axis label
 pylab.xticks((-1, 0,  1), ('-1', '0',  '1'), color = 'k', size = 20)
 
 ## Left Y-axis labels
 pylab.ylabel(r'\bf{phase field} $\phi$', {'color'    : 'b',
-                                   'fontsize'   : 20 })
+                                   'fontsize'   : 20 }, markup='tex')
 pylab.yticks((0, 0.5, 1), ('0', '.5', '1'), color = 'k', size = 20)
 
 ## Right Y-axis labels
@@ -44,16 +44,17 @@
            horizontalalignment = 'left',
            verticalalignment = 'center',
            rotation = 90,
-           clip_on = False)
+           clip_on = False,
+           markup = 'tex')
 pylab.text(1.01, -0.02, "-1", {'color' : 'k', 'fontsize' : 20})
 pylab.text(1.01, 0.98, "1", {'color' : 'k', 'fontsize' : 20})
 pylab.text(1.01, 0.48, "0", {'color' : 'k', 'fontsize' : 20})
 
 ## level set equations
-pylab.text(0.1, 0.85, r'$|\nabla\phi| = 1,$ \newline $ \frac{\partial 
\phi}{\partial t} + U|\nabla \phi| = 0$', {'color' : 'g', 'fontsize' : 20})
+pylab.text(0.1, 0.85, r'$|\nabla\phi| = 1,$ \newline $ \frac{\partial 
\phi}{\partial t} + U|\nabla \phi| = 0$', {'color' : 'g', 'fontsize' : 20}, 
markup='tex')
 
 ## phase field equations
-pylab.text(0.2, 0.15, r'$\mathcal{F} = \int f\left( \phi, c \right) dV,$ 
\newline $ \frac{ \partial \phi } { \partial t } = -M_{ \phi } \frac{ \delta 
\mathcal{F} } { \delta \phi }$', {'color' : 'b', 'fontsize' : 20})
+pylab.text(0.2, 0.15, r'$\mathcal{F} = \int f\left( \phi, c \right) dV,$ 
\newline $ \frac{ \partial \phi } { \partial t } = -M_{ \phi } \frac{ \delta 
\mathcal{F} } { \delta \phi }$', {'color' : 'b', 'fontsize' : 20}, markup='tex')
 
 pylab.savefig('pfm-lsm.png')
 pylab.show()

Modified: trunk/matplotlib/examples/histogram_demo.py
===================================================================
--- trunk/matplotlib/examples/histogram_demo.py 2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/histogram_demo.py 2007-08-02 18:37:32 UTC (rev 
3664)
@@ -15,7 +15,7 @@
 
 xlabel('Smarts')
 ylabel('Probability')
-title(r'$\rm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$')
+title(r'$\mathrm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$', markup='tex')
 axis([40, 160, 0, 0.03])
 grid(True)
 

Modified: trunk/matplotlib/examples/histogram_demo_canvasagg.py
===================================================================
--- trunk/matplotlib/examples/histogram_demo_canvasagg.py       2007-08-02 
15:15:29 UTC (rev 3663)
+++ trunk/matplotlib/examples/histogram_demo_canvasagg.py       2007-08-02 
18:37:32 UTC (rev 3664)
@@ -33,7 +33,7 @@
 
 ax.set_xlabel('Smarts')
 ax.set_ylabel('Probability')
-ax.set_title(r'$\rm{Histogram of IQ: }\mu=100, \sigma=15$')
+ax.set_title(r'$\mathrm{Histogram of IQ: }\mu=100, \sigma=15$', markup='tex')
 
 ax.set_xlim( (40, 160))
 ax.set_ylim( (0, 0.03))

Modified: trunk/matplotlib/examples/integral_demo.py
===================================================================
--- trunk/matplotlib/examples/integral_demo.py  2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/integral_demo.py  2007-08-02 18:37:32 UTC (rev 
3664)
@@ -22,8 +22,8 @@
 ax.add_patch(poly)
 
 text(0.5 * (a + b), 30,
-     r"$\int_a^b f(x)\rm{d}x$", horizontalalignment='center',
-     fontsize=20)
+     r"$\int_a^b f(x)\mathrm{d}x$", horizontalalignment='center',
+     fontsize=20, markup='tex')
 
 axis([0,10, 0, 180])
 figtext(0.9, 0.05, 'x')

Modified: trunk/matplotlib/examples/legend_auto.py
===================================================================
--- trunk/matplotlib/examples/legend_auto.py    2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/legend_auto.py    2007-08-02 18:37:32 UTC (rev 
3664)
@@ -51,9 +51,9 @@
 def fig_7():
     figure(7)
     xx = x - (N/2.0)
-    plot(xx, (xx*xx)-1225, 'bo', label='$y=x^2$')
-    plot(xx, 25*xx, 'go', label='$y=25x$')
-    plot(xx, -25*xx, 'mo', label='$y=-25x$')
+    plot(xx, (xx*xx)-1225, 'bo', label='$y=x^2$', markup='tex')
+    plot(xx, 25*xx, 'go', label='$y=25x$', markup='tex')
+    plot(xx, -25*xx, 'mo', label='$y=-25x$', markup='tex')
     legend()
 
 def fig_8():

Modified: trunk/matplotlib/examples/mathtext_demo.py
===================================================================
--- trunk/matplotlib/examples/mathtext_demo.py  2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/mathtext_demo.py  2007-08-02 18:37:32 UTC (rev 
3664)
@@ -17,7 +17,7 @@
 ax.set_ylabel(r'$\Delta_{i+1}^j$', fontsize=20)
 tex = r'$\mathcal{R}\prod_{i=\alpha_{i+1}}^\infty a_i\sin(2 \pi f x_i)$'
 
-ax.text(1, 1.6, tex, fontsize=20, va='bottom')
+ax.text(1, 1.6, tex, fontsize=20, va='bottom', markup="tex")
 
 #title(r'$\Delta_i^j \hspace{0.4} \rm{versus} \hspace{0.4} \Delta_{i+1}^j$', 
fontsize=20)
 fig.savefig('mathtext_demo')

Modified: trunk/matplotlib/examples/mathtext_examples.py
===================================================================
--- trunk/matplotlib/examples/mathtext_examples.py      2007-08-02 15:15:29 UTC 
(rev 3663)
+++ trunk/matplotlib/examples/mathtext_examples.py      2007-08-02 18:37:32 UTC 
(rev 3664)
@@ -62,7 +62,7 @@
         x = arange(0.0, 3.0, 0.1)
 
         grid(True)
-        text(1, 1.6, s, fontsize=20)
+        text(1, 1.6, s, fontsize=20, markup="tex")
 
         savefig('mathtext_example%02d' % i)
         figure()

Modified: trunk/matplotlib/examples/scatter_demo2.py
===================================================================
--- trunk/matplotlib/examples/scatter_demo2.py  2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/scatter_demo2.py  2007-08-02 18:37:32 UTC (rev 
3664)
@@ -11,8 +11,8 @@
 close = 0.003*intc.close[:-2]/0.003*intc.open[:-2]
 p = scatter(delta1[:-1], delta1[1:], c=close, s=volume, alpha=0.75)
 
-xlabel(r'$\Delta_i$', size='x-large')
-ylabel(r'$\Delta_{i+1}$', size='x-large')
+xlabel(r'$\Delta_i$', size='x-large', markup='tex')
+ylabel(r'$\Delta_{i+1}$', size='x-large', markup='tex')
 title(r'Volume and percent change')
 grid(True)
 #savefig('scatter_demo2')

Modified: trunk/matplotlib/examples/tex_demo.py
===================================================================
--- trunk/matplotlib/examples/tex_demo.py       2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/examples/tex_demo.py       2007-08-02 18:37:32 UTC (rev 
3664)
@@ -23,10 +23,10 @@
 s = cos(2*2*pi*t)+2
 plot(t, s)
 
-xlabel(r'\textbf{time (s)}')
-ylabel(r'\textit{voltage (mV)}',fontsize=16)
+xlabel(r'\textbf{time (s)}', markup='tex')
+ylabel(r'\textit{voltage (mV)}',fontsize=16, markup='tex')
 title(r"\TeX\ is Number 
$\displaystyle\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$!",
-      fontsize=16, color='r')
+      fontsize=16, color='r', markup='tex')
 grid(True)
 savefig('tex_demo')
 

Modified: trunk/matplotlib/examples/tex_unicode_demo.py
===================================================================
--- trunk/matplotlib/examples/tex_unicode_demo.py       2007-08-02 15:15:29 UTC 
(rev 3663)
+++ trunk/matplotlib/examples/tex_unicode_demo.py       2007-08-02 18:37:32 UTC 
(rev 3664)
@@ -17,11 +17,11 @@
 s = cos(2*2*pi*t)+2
 plot(t, s)
 
-xlabel(r'\textbf{time (s)}')
+xlabel(r'\textbf{time (s)}', markup='tex')
 s = unicode(r'\textit{Velocity (\xB0/sec)}','latin-1')
-ylabel(unicode(r'\textit{Velocity (\xB0/sec)}','latin-1'),fontsize=16)
+ylabel(unicode(r'\textit{Velocity (\xB0/sec)}','latin-1'),fontsize=16, 
markup='tex')
 title(r"\TeX\ is Number 
$\displaystyle\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$!",
-      fontsize=16, color='r')
+      fontsize=16, color='r', markup='tex')
 grid(True)
 savefig('tex_demo')
 

Modified: trunk/matplotlib/lib/matplotlib/mathtext.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mathtext.py 2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/lib/matplotlib/mathtext.py 2007-08-02 18:37:32 UTC (rev 
3664)
@@ -1840,6 +1840,8 @@
                          )
                        )
 
+        self.clear()
+
     def clear(self):
         self._expr = None
         self._state_stack = None

Modified: trunk/matplotlib/lib/matplotlib/rcsetup.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/rcsetup.py  2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/lib/matplotlib/rcsetup.py  2007-08-02 18:37:32 UTC (rev 
3664)
@@ -198,6 +198,11 @@
     except ValueError:
         raise ValueError('not a valid font size')
 
+validate_markup = ValidateInStrings(
+    'markup', 
+    ['plain', 'tex'],
+    ignorecase=True)
+
 validate_verbose = ValidateInStrings('verbose',[
     'silent', 'helpful', 'debug', 'debug-annoying',
     ])
@@ -350,8 +355,8 @@
     'text.fontvariant'    : ['normal', str],
     'text.fontweight'     : ['normal', str],
     'text.fontsize'       : ['medium', validate_fontsize],
+    'text.markup'         : ['plain', validate_markup],
 
-
     'image.aspect'        : ['equal', validate_aspect],  # equal, auto, a 
number
     'image.interpolation' : ['bilinear', str],
     'image.cmap'          : ['jet', str],        # one of gray, jet, etc

Modified: trunk/matplotlib/lib/matplotlib/text.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/text.py     2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/lib/matplotlib/text.py     2007-08-02 18:37:32 UTC (rev 
3664)
@@ -146,6 +146,7 @@
                  fontproperties=None, # defaults to FontProperties()
                  rotation=None,
                  linespacing=None,
+                 markup=None,
                  **kwargs
                  ):
         """
@@ -174,6 +175,7 @@
         if linespacing is None:
             linespacing = 1.2   # Maybe use rcParam later.
         self._linespacing = linespacing
+        self.set_markup(markup)
         self.update(kwargs)
         #self.set_bbox(dict(pad=0))
     __init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd
@@ -222,6 +224,7 @@
         self._rotation = other._rotation
         self._picker = other._picker
         self._linespacing = other._linespacing
+        self._markup = other._markup
 
     def _get_layout(self, renderer):
 
@@ -752,11 +755,11 @@
         self._substrings = []           # ignore embedded mathtext for now
 
     def is_math_text(self):
-        if rcParams['text.usetex']: return 'TeX'
-        if not matplotlib._havemath: return False
-        if len(self._text)<2: return False
-        dollar_signs = self._text.count('$') - self._text.count('\\$')
-        return dollar_signs > 0 and dollar_signs % 2 == 0
+        if rcParams['text.usetex']: return 'TeX'        
+        if self._markup.lower() == 'tex':
+            if not matplotlib._havemath: return False
+            return True
+        return False
 
     def set_fontproperties(self, fp):
         """
@@ -766,9 +769,20 @@
         """
         self._fontproperties = fp
 
+    def set_markup(self, markup):
+        """
+        Set the type of markup used for this text.
 
+        ACCEPTS: 'plain' for plain text, 'tex' for TeX-like markup
+                 None to use the default text.markup value.
+        """
+        if markup is None:
+            self._markup = rcParams['text.markup']
+        elif markup.lower() in ('plain', 'tex'):
+            self._markup = markup.lower()
+        else:
+            raise ValueError("Markup type must be 'plain' or 'tex'")
 
-
     def _get_layout_super(self, renderer, m):
         """
         a special case optimization if a log super and angle = 0

Modified: trunk/matplotlib/matplotlibrc.template
===================================================================
--- trunk/matplotlib/matplotlibrc.template      2007-08-02 15:15:29 UTC (rev 
3663)
+++ trunk/matplotlib/matplotlibrc.template      2007-08-02 18:37:32 UTC (rev 
3664)
@@ -150,6 +150,14 @@
 #text.dvipnghack     : False  # some versions of dvipng don't handle
                              # alpha channel properly.  Use True to correct 
and flush
                              # ~/.matplotlib/tex.cache before testing
+#text.markup         : 'plain'  # Affects how text, such as titles and lables, 
are
+                                # interpreted by default.
+                                # 'plain': As plain, unformatted text
+                               # 'tex': As TeX-like text.  Text between $'s 
will be
+                               # formatted as a TeX math expression.
+                               # This setting has no effect when text.usetex 
is True.
+                               # In that case, all text will be sent to TeX 
for 
+                               # processing.
 
 ### AXES
 # default face and edge color, default tick sizes,


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to