From: <md...@us...> - 2010-11-18 13:29:06
|
Revision: 8806 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8806&view=rev Author: mdboom Date: 2010-11-18 13:29:00 +0000 (Thu, 18 Nov 2010) Log Message: ----------- Add support for \overline in mathtext syntax -- contributed by Marshall Ward Modified Paths: -------------- trunk/matplotlib/doc/users/mathtext.rst trunk/matplotlib/lib/matplotlib/mathtext.py Modified: trunk/matplotlib/doc/users/mathtext.rst =================================================================== --- trunk/matplotlib/doc/users/mathtext.rst 2010-11-17 15:31:27 UTC (rev 8805) +++ trunk/matplotlib/doc/users/mathtext.rst 2010-11-18 13:29:00 UTC (rev 8806) @@ -299,6 +299,7 @@ ``\hat a`` or ``\^a`` :math:`\hat a` ``\tilde a`` or ``\~a`` :math:`\tilde a` ``\vec a`` :math:`\vec a` + ``\overline{abc}`` :math:`\overline{abc}` ============================== ================================= In addition, there are two special accents that automatically adjust Modified: trunk/matplotlib/lib/matplotlib/mathtext.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mathtext.py 2010-11-17 15:31:27 UTC (rev 8805) +++ trunk/matplotlib/lib/matplotlib/mathtext.py 2010-11-18 13:29:00 UTC (rev 8806) @@ -2251,7 +2251,6 @@ | Error(r"Expected \genfrac{ldelim}{rdelim}{rulesize}{style}{num}{den}")) ).setParseAction(self.genfrac).setName("genfrac") - sqrt = Group( Suppress(Literal(r"\sqrt")) + Optional( @@ -2263,6 +2262,11 @@ + (group | Error("Expected \sqrt{value}")) ).setParseAction(self.sqrt).setName("sqrt") + overline = Group( + Suppress(Literal(r"\overline")) + + (group | Error("Expected \overline{value}")) + ).setParseAction(self.overline).setName("overline") + placeable <<(function ^ (c_over_c | symbol) ^ accent @@ -2272,6 +2276,7 @@ ^ binom ^ genfrac ^ sqrt + ^ overline ) simple <<(space @@ -2845,6 +2850,33 @@ rightside]) # Body return [hlist] + def overline(self, s, loc, toks): + assert(len(toks)==1) + assert(len(toks[0])==1) + + body = toks[0][0] + + state = self.get_state() + thickness = state.font_output.get_underline_thickness( + state.font, state.fontsize, state.dpi) + + height = body.height - body.shift_amount + thickness * 3.0 + depth = body.depth + body.shift_amount + + # Put a little extra space to the left and right of the body + padded_body = Hlist([Hbox(thickness * 2.0), + body, + Hbox(thickness * 2.0)]) + rightside = Vlist([Hrule(state), + Fill(), + padded_body]) + # Stretch the glue between the hrule and the body + rightside.vpack(height + (state.fontsize * state.dpi) / (100.0 * 12.0), + depth, 'exactly') + + hlist = Hlist([rightside]) + return [hlist] + def _auto_sized_delimiter(self, front, middle, back): state = self.get_state() height = max([x.height for x in middle]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |