From 4b9ff6034858ba04d4d681e992150c405b717fe6 Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Sat, 25 Feb 2017 18:03:06 -0800 Subject: [PATCH 1/8] Feature addition: I added in the the \dfrac macro (displaystyle fraction) to the mathtex implementation. --- .../text_labels_and_annotations/dfrac_demo.py | 15 +++++++++ lib/matplotlib/mathtext.py | 31 ++++++++++++++++--- 2 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 examples/text_labels_and_annotations/dfrac_demo.py diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py new file mode 100644 index 000000000000..3af064a81e04 --- /dev/null +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +""" +Created on Sat Feb 25 17:50:37 2017 + +@author: watkinrt +""" + +import matplotlib.pyplot as plt + +fig = plt.figure(figsize=(5.25, 0.75)) +fig.text(0.5, 0.3, r'\dfrac: $\dfrac{a}{b}$', + horizontalalignment='center', verticalalignment='center') +fig.text(0.5, 0.7, r'\frac: $\frac{a}{b}$', + horizontalalignment='center', verticalalignment='center') \ No newline at end of file diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index f22dbe96901f..03562076450d 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -2309,6 +2309,7 @@ def __init__(self): p.float_literal = Forward() p.font = Forward() p.frac = Forward() + p.dfrac = Forward() p.function = Forward() p.genfrac = Forward() p.group = Forward() @@ -2396,6 +2397,11 @@ def __init__(self): Suppress(Literal(r"\frac")) - ((p.required_group + p.required_group) | Error(r"Expected \frac{num}{den}")) ) + + p.dfrac <<= Group( + Suppress(Literal(r"\dfrac")) + - ((p.required_group + p.required_group) | Error(r"Expected \dfrac{num}{den}")) + ) p.stackrel <<= Group( Suppress(Literal(r"\stackrel")) @@ -2449,6 +2455,7 @@ def __init__(self): | p.function | p.group | p.frac + | p.dfrac | p.stackrel | p.binom | p.genfrac @@ -3043,8 +3050,11 @@ def _genfrac(self, ldelim, rdelim, rule, style, num, den): state.font, state.fontsize, state.dpi) rule = float(rule) - num.shrink() - den.shrink() + + # If style != displaystyle == 0, shrink the num and den + if style: + num.shrink() + den.shrink() cnum = HCentered([num]) cden = HCentered([den]) width = max(num.width, den.width) @@ -3091,21 +3101,32 @@ def frac(self, s, loc, toks): state.font, state.fontsize, state.dpi) num, den = toks[0] - return self._genfrac('', '', thickness, '', num, den) + return self._genfrac('', '', thickness, 1, num, den) + + def dfrac(self, s, loc, toks): + assert(len(toks)==1) + assert(len(toks[0])==2) + state = self.get_state() + + thickness = state.font_output.get_underline_thickness( + state.font, state.fontsize, state.dpi) + num, den = toks[0] + + return self._genfrac('', '', thickness, 0, num, den) def stackrel(self, s, loc, toks): assert(len(toks)==1) assert(len(toks[0])==2) num, den = toks[0] - return self._genfrac('', '', 0.0, '', num, den) + return self._genfrac('', '', 0.0, 1, num, den) def binom(self, s, loc, toks): assert(len(toks)==1) assert(len(toks[0])==2) num, den = toks[0] - return self._genfrac('(', ')', 0.0, '', num, den) + return self._genfrac('(', ')', 0.0, 1, num, den) def sqrt(self, s, loc, toks): #~ print "sqrt", toks From 45f5d635122967862e48e05b508422ccdf62bf2a Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Sun, 26 Feb 2017 08:48:46 -0800 Subject: [PATCH 2/8] PEP8 fixes --- .../text_labels_and_annotations/dfrac_demo.py | 6 ++--- lib/matplotlib/mathtext.py | 26 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py index 3af064a81e04..47bdc36cfeaf 100644 --- a/examples/text_labels_and_annotations/dfrac_demo.py +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -9,7 +9,7 @@ import matplotlib.pyplot as plt fig = plt.figure(figsize=(5.25, 0.75)) -fig.text(0.5, 0.3, r'\dfrac: $\dfrac{a}{b}$', +fig.text(0.5, 0.3, r'\dfrac: $\dfrac{a}{b}$', + horizontalalignment='center', verticalalignment='center') +fig.text(0.5, 0.7, r'\frac: $\frac{a}{b}$', horizontalalignment='center', verticalalignment='center') -fig.text(0.5, 0.7, r'\frac: $\frac{a}{b}$', - horizontalalignment='center', verticalalignment='center') \ No newline at end of file diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 03562076450d..82a8e63abc85 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -2397,7 +2397,7 @@ def __init__(self): Suppress(Literal(r"\frac")) - ((p.required_group + p.required_group) | Error(r"Expected \frac{num}{den}")) ) - + p.dfrac <<= Group( Suppress(Literal(r"\dfrac")) - ((p.required_group + p.required_group) | Error(r"Expected \dfrac{num}{den}")) @@ -3050,8 +3050,8 @@ def _genfrac(self, ldelim, rdelim, rule, style, num, den): state.font, state.fontsize, state.dpi) rule = float(rule) - - # If style != displaystyle == 0, shrink the num and den + + # If style != displaystyle == 0, shrink the num and den if style: num.shrink() den.shrink() @@ -3087,14 +3087,14 @@ def _genfrac(self, ldelim, rdelim, rule, style, num, den): return result def genfrac(self, s, loc, toks): - assert(len(toks)==1) - assert(len(toks[0])==6) + assert(len(toks) == 1) + assert(len(toks[0]) == 6) return self._genfrac(*tuple(toks[0])) def frac(self, s, loc, toks): - assert(len(toks)==1) - assert(len(toks[0])==2) + assert(len(toks) == 1) + assert(len(toks[0]) == 2) state = self.get_state() thickness = state.font_output.get_underline_thickness( @@ -3104,8 +3104,8 @@ def frac(self, s, loc, toks): return self._genfrac('', '', thickness, 1, num, den) def dfrac(self, s, loc, toks): - assert(len(toks)==1) - assert(len(toks[0])==2) + assert(len(toks) == 1) + assert(len(toks[0]) == 2) state = self.get_state() thickness = state.font_output.get_underline_thickness( @@ -3115,15 +3115,15 @@ def dfrac(self, s, loc, toks): return self._genfrac('', '', thickness, 0, num, den) def stackrel(self, s, loc, toks): - assert(len(toks)==1) - assert(len(toks[0])==2) + assert(len(toks) == 1) + assert(len(toks[0]) == 2) num, den = toks[0] return self._genfrac('', '', 0.0, 1, num, den) def binom(self, s, loc, toks): - assert(len(toks)==1) - assert(len(toks[0])==2) + assert(len(toks) == 1) + assert(len(toks[0]) == 2) num, den = toks[0] return self._genfrac('(', ')', 0.0, 1, num, den) From bedfdc024da63cb97e500125619fd3e0396169ab Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Sun, 26 Feb 2017 14:57:19 -0800 Subject: [PATCH 3/8] Documentation: Updated the docstring for the dfrac_demo Bug fix: I added a plt.show() to the end of the dfrac_demo Tests: I added in a new test for the dfrac macro (along with the corresponding comparison files) within the test_mathtex test suite. --- .../text_labels_and_annotations/dfrac_demo.py | 21 ++- .../test_mathtext/mathtext_stixsans_82.pdf | Bin 0 -> 6460 bytes .../test_mathtext/mathtext_stixsans_82.png | Bin 0 -> 1731 bytes .../test_mathtext/mathtext_stixsans_82.svg | 149 ++++++++++++++++++ lib/matplotlib/tests/test_mathtext.py | 5 + 5 files changed, 171 insertions(+), 4 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.svg diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py index 47bdc36cfeaf..b807338a74d4 100644 --- a/examples/text_labels_and_annotations/dfrac_demo.py +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -1,9 +1,21 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- """ -Created on Sat Feb 25 17:50:37 2017 +======================================= +The difference between \dfrac and \frac +======================================= + +In this example, the differences between the \dfrac and \frac TeX macros are +illustrated; in particular, the difference between display style and text style +fractions when using Mathtex. + +.. versionadded:: 2.1 + +.. note:: + To use \dfrac with the LaTeX engine (text.usetex : True), you need to + import the amsmath package with the text.latex.preamble rc, which is + an unsupported feature; therefore, it is probably a better idea to just + use the \displaystyle option before the \frac macro to get this behavior + with the LaTeX engine. -@author: watkinrt """ import matplotlib.pyplot as plt @@ -13,3 +25,4 @@ horizontalalignment='center', verticalalignment='center') fig.text(0.5, 0.7, r'\frac: $\frac{a}{b}$', horizontalalignment='center', verticalalignment='center') +plt.show() diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.pdf new file mode 100644 index 0000000000000000000000000000000000000000..085487d51e597d739aec9897a2eeb7d844d6d365 GIT binary patch literal 6460 zcmd5>dstM}7SEfO9D(~0iYPt~8l@)8dCnsZtCN-~XRhQ!dSP$|_ICq?%M(J&io(VMKvdW&R=OP4LT?*~Du2+3g7 z2bK|$qtK_tmYI;9C#32ROdl-s=|G!jjV2%F%djOtHKh&g`rZM z*#I6NB$?uE2{elr6O9M0HjAWBqS98bS{O0-0OLBV`u8@0$=4(WN{@O9jQH*PNO{Lp3U@nyre&Uej!-ZXnfUvIO1s>qZ|V2kdf}FKL)S~QT224NZR5S3IZ5xVKG!~T%@V_R*4-N(c5J;r zWnjUkiC<26Z|nY(LtALvXOACt^+^8uu6ZZ>241+`;o;`UfY)EXIO^z%i$7J(j{WD^ zl{-T2>f27*_-)$SV=ZQEU*XYXd2#LW1%2AF{I{MzFbjQs`Ovj4sa-<+_(7I{8x>zA zXAQnHc}+@fQO7Z~qs(#HK7t^6r;d2+h>zH@BhU+{nKd3Y| zbkzcn?S^h{Q(7I(;U}iVb3=x=T2T|es5rK4S%k{%tx{vptR(?+`Zn|4Uv=s0PQ_~a zT5PXZHh*c(-I{nkD*L2+%&PLpz0H$ucYl4<$=n6edCkhNELt&d!O@-DCVN(|eXOY( z>E%(%p3uC?xII47bytBdH_mf1_xs`=ZwC~N%20ohxM_Ed*QP2dFJsx%@rda+l;Tyql_iNEisxipsJ z8(f-y+P(f z)t94+jLAPoWL_FKF@D>WSa(C)vwY>mWslDN;?e%DW?d9qS{w`9;LX z=APB3i7i}*JaTRGk8PQkLyOMUyy)BRl`BoypiGg$_Qc_@(=fEZAn-KDFbvHypgv@f z|C9kZoj|E#QpVXxA`UZKlH}AR=R#$25TnEAH}`ej_0wyQvzC2NeY;`Z*T{GWGq<2j_VYm{soMQ9a<{48JAo zJN)`l+oiQL_FL~h2)MU8@7I_%CH=zg=Wea2IDfKuzh~r}Sg}h=a7A80*N56;Z(jZE zNw2_)*y}w){4!538vRW{r_-K0UMLG+GAZV4yU6p&1IvpH9rhhsF+G1~W=3h3ci7JP z9wi&kFFvNZ+_`VN2bPSO^p8L8Q?fK^a1&RhOviuysF z1RENNs^gNsfJ*@A@m89LsCYWV|4?U26%O^6F)qjypD3Z62z?sS6zT&;2WHx&q+v+6 zUjRx|I8imCPC*45fr9stFzEL~{_=Ecdd%9DQBLlR4D2jnAXdEqt_QM56W(S(z$i(oU9=$Gpv28jWu8FT%IYU{hT#9eVxI&Z+MSe&z%d{bLv{O z$CC9$Hxgn$-SHvq*?P@)+Ulz_e|f3oWpP?|$&&{IvX_27`@ob7l?y}DTV3yc_Os~G zWy7aTe8P|U?P0S{Z39itC=HQO@A0Nl+MfKCAPr?Bc}>?rtushB1;TTsN{TK z4Uq&AB@z3qa7;G=$9AI>H~zByhRg1sUm*Z~>Q&cR>iq0H#GhRDT%{n$4N$Qq6!_Q776KkCP_5NAlh z304^hr?{~(9wUu32OcA&kuwT7My2o^DkSqDV`2;%WN)abLnftB!ZFa1C(^JdaEvt6 z&!HpXA=>K(+~a^_RpTIH7wwDSRFpj{H14iyK(B!eQN4rrT(USx{ z3zvxV`lh_RXMkg3qn)q)2P2P_J@Ugj_H}Sf^1LI_)u#&OTO^DHgeB=w6$Z6V<9CY! zn(NOiFutCs_)Jz$RDOn0zNJ#wP)$D$s&l(!rzMC_$M;snl09wu!&x;SM3btaK~e`^ za!wC1r{DvNRt+>7@Wn|!??%@@G3}qI>-FTCG%3v@ji=z}rKX^ob^Ot4QRGE>JY7e_ z@&^BClS~se8qmHGO;m%7Ml?0NSe$53?l{pPzMW_q08{*{m&-8DG8kS9ci3nj=PZ}e za87n`qS{FY$BPgn4f$~lf=@#l--K<92A=zk_OYxM!m;65mUs3aJmj3t3WCnbe*&j< z+Q;hvcpAwNMfix;h{mfS|1_eBT3&G)|*7R1t%N|UFde6bhqeG zdVD}k2#5@zQz_AON_e1FTu2NpJUU9t2yF-}HJU~@Ha0$l4i1Sk)C)U+3B?2-G~TC0 zqSL9S1_uAyp`&BM3U!O!%5HqWJZN5COmT4Mxdr-zE04!CReGCZzgbL>&6aK7M5F$@$D*#EV z)=~i6wI)G8oZ_q9W4Sn#XmLKQwyrK>v@_SDui)9t?{W`M9&Xogo74e+=&2waP?s4Ce_dlR z7%B+X-le*z_phH_))mc-I;y7I_4TbTw^$v_@4FZI?xTpIDle1k%!yr`3yG!EJw;)2 zW}%W))b^hNItPcUjS!$SGc%uQl-Oz)>HFOK+>x~-=hj$v!Q`tV8**eMdv@i)>E)V$ zR+-FS7KZ@^ZB}vr>P`ykOTJCE2Gl-?|gd`1@OSb#-~)kBe;hG@GE3 z-u6ZyAl6#=7)xN)izKLN?d?bTUe!l6H8mYLy`v25Hgsyr+Pru*QU905uNESg-M4yr zdhV>gy)O5#K^B>m{&iuYb8LQG_~=|?;?Mw^&e$h?M+Ap zg*zP1vF7IHi?-ShrFf69bB}}>JA)_`oJb^cUtVX0Hp`ZI81ktrpEErjwLwy%6u+k} za6eLBp0v6oT1$*toEz;7t=^mKaNRh}xj{Vr-mJE!hA`FLj{`5;oTP-xZGlxE;<4L2 z_U7gc%?SFqMDER@s-RTpi!w-kUIfe9Dt>yPXJP6ccOfhS1;(@w0CdmLP$drK=IV3T zKiQ+wH!}7?QIXaC_?iCU)>MqC>75hk_2-;CygfE9&SPqAdmXZW{o@3GU)zSxa> z_jP`;sjRF_MP7#a76+y+N#MliwsdvI+{d)W#zt~8BFREFOBbk? zRltE5cXPSiUijw^n49}nXdYn@d@G61^YppHq2NYR{8n(quEf^Ep2RUpzlm$K3=$_X;$X4n=si2uwW=0xCHc;IeAwF zvWk1kmDA4qHZybzx`~sua2J9hTsT_N$Xt66HQ01JUEM%g16-L+khEm=_j@1}6}f!A zQB={W7-`QmrG3Kj1yDQyL7AOi zsxd#kbSvSo@1#4xDj8TyGV5Wyk=MklWHK4==U1?_ygd4CIigt&Z2V9r@x8T+ZARpJ z@bTDf{X$_OL`$5^1z44tfASnW^T%Yn|CLAQOdOv6rVR#ny@j^}dpl>_3Tywfe*;uv B>2d%7 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.svg new file mode 100644 index 000000000000..5b7bab5501a8 --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_82.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index de089f4e1c4f..5371f92616da 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -110,6 +110,7 @@ r'$\overline{\omega}^x \frac{1}{2}_0^x$', # github issue #5444 r'$,$ $.$ $1{,}234{, }567{ , }890$ and $1,234,567,890$', # github issue 5799 r'$\left(X\right)_{a}^{b}$', # github issue 7615 + r'$\dfrac{\$100.00}{y}$', # github issue #1888 ] digits = "0123456789" @@ -223,6 +224,8 @@ def test_fontinfo(): (r'$\rightF$', r'Unknown symbol: \rightF'), (r'$\left(\right$', r'Expected a delimiter'), (r'$\left($', r'Expected "\right"'), + (r'$\dfrac$', r'Expected \dfrac{num}{den}'), + (r'$\dfrac{}{}$', r'Expected \dfrac{num}{den}'), ], ids=[ 'hspace without value', @@ -243,6 +246,8 @@ def test_fontinfo(): 'right with invalid delimiter', 'unclosed parentheses with sizing', 'unclosed parentheses without sizing', + 'dfrac without parameters', + 'dfrac with empty parameters', ] ) def test_mathtext_exceptions(math, msg): From 0d10078c59909858b8a674f290c6ba1b0027260d Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Wed, 1 Mar 2017 17:21:07 -0800 Subject: [PATCH 4/8] Documentation update: I updated the dfrac_demo docstring to be a raw string with the backslashes escaped. Feature modification: I added in a dictionary to the Parser class of mathtex to link math style names to their TeX numerical values. I used a dictionary instead of hardcoding specific math style (ex. DISPLAYSTYLE=0) as I will use the dictionary in my implementation of the math styles in the future. --- .../text_labels_and_annotations/dfrac_demo.py | 16 ++++++++-------- lib/matplotlib/mathtext.py | 18 +++++++++++++----- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py index b807338a74d4..989d27f11443 100644 --- a/examples/text_labels_and_annotations/dfrac_demo.py +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -1,19 +1,19 @@ -""" -======================================= -The difference between \dfrac and \frac -======================================= +r""" +========================================= +The difference between \\dfrac and \\frac +========================================= -In this example, the differences between the \dfrac and \frac TeX macros are +In this example, the differences between the \\dfrac and \\frac TeX macros are illustrated; in particular, the difference between display style and text style -fractions when using Mathtex. +fractions when using Mathtex. aasdsads .. versionadded:: 2.1 .. note:: - To use \dfrac with the LaTeX engine (text.usetex : True), you need to + To use \\dfrac with the LaTeX engine (text.usetex : True), you need to import the amsmath package with the text.latex.preamble rc, which is an unsupported feature; therefore, it is probably a better idea to just - use the \displaystyle option before the \frac macro to get this behavior + use the \\displaystyle option before the \\frac macro to get this behavior with the LaTeX engine. """ diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 82a8e63abc85..07e788169511 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -2224,6 +2224,10 @@ class Parser(object): The grammar is based directly on that in TeX, though it cuts a few corners. """ + + _math_style_dict = dict(displaystyle=0, textstyle=1, + scriptstyle=2, scriptscriptstyle=3) + _binary_operators = set(''' + * - \\pm \\sqcap \\rhd @@ -3052,7 +3056,7 @@ def _genfrac(self, ldelim, rdelim, rule, style, num, den): rule = float(rule) # If style != displaystyle == 0, shrink the num and den - if style: + if style != self._math_style_dict['displaystyle']: num.shrink() den.shrink() cnum = HCentered([num]) @@ -3101,7 +3105,8 @@ def frac(self, s, loc, toks): state.font, state.fontsize, state.dpi) num, den = toks[0] - return self._genfrac('', '', thickness, 1, num, den) + return self._genfrac('', '', thickness, + self._math_style_dict['textstyle'], num, den) def dfrac(self, s, loc, toks): assert(len(toks) == 1) @@ -3112,21 +3117,24 @@ def dfrac(self, s, loc, toks): state.font, state.fontsize, state.dpi) num, den = toks[0] - return self._genfrac('', '', thickness, 0, num, den) + return self._genfrac('', '', thickness, + self._math_style_dict['displaystyle'], num, den) def stackrel(self, s, loc, toks): assert(len(toks) == 1) assert(len(toks[0]) == 2) num, den = toks[0] - return self._genfrac('', '', 0.0, 1, num, den) + return self._genfrac('', '', 0.0, + self._math_style_dict['textstyle'], num, den) def binom(self, s, loc, toks): assert(len(toks) == 1) assert(len(toks[0]) == 2) num, den = toks[0] - return self._genfrac('(', ')', 0.0, 1, num, den) + return self._genfrac('(', ')', 0.0, + self._math_style_dict['textstyle'], num, den) def sqrt(self, s, loc, toks): #~ print "sqrt", toks From 2c9b9bcf45cc7bbb0bd1b336bf66c994cced5617 Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Sat, 25 Mar 2017 07:29:22 -0700 Subject: [PATCH 5/8] Although Sphyinx requires "\\" to show "\" characters, I removed them as matplotlib doesn't currently support this behavior in docstrings. --- examples/text_labels_and_annotations/dfrac_demo.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py index 989d27f11443..4c0e0e3d04ce 100644 --- a/examples/text_labels_and_annotations/dfrac_demo.py +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -1,19 +1,19 @@ r""" ========================================= -The difference between \\dfrac and \\frac +The difference between \dfrac and \frac ========================================= -In this example, the differences between the \\dfrac and \\frac TeX macros are +In this example, the differences between the \dfrac and \frac TeX macros are illustrated; in particular, the difference between display style and text style fractions when using Mathtex. aasdsads .. versionadded:: 2.1 .. note:: - To use \\dfrac with the LaTeX engine (text.usetex : True), you need to + To use \dfrac with the LaTeX engine (text.usetex : True), you need to import the amsmath package with the text.latex.preamble rc, which is an unsupported feature; therefore, it is probably a better idea to just - use the \\displaystyle option before the \\frac macro to get this behavior + use the \displaystyle option before the \frac macro to get this behavior with the LaTeX engine. """ From 57fd91004a4d22274e15fe5f0883583887a1a993 Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Sun, 16 Apr 2017 10:30:27 -0700 Subject: [PATCH 6/8] Remove stray text from documentation. --- examples/text_labels_and_annotations/dfrac_demo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py index 4c0e0e3d04ce..71e2e9df31f1 100644 --- a/examples/text_labels_and_annotations/dfrac_demo.py +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -5,7 +5,7 @@ In this example, the differences between the \dfrac and \frac TeX macros are illustrated; in particular, the difference between display style and text style -fractions when using Mathtex. aasdsads +fractions when using Mathtex. .. versionadded:: 2.1 From d0cfe37ec401bd3ad80ea2dfae20e986ccc80ada Mon Sep 17 00:00:00 2001 From: Ryan Watkins Date: Tue, 4 Jul 2017 13:45:18 -0700 Subject: [PATCH 7/8] With the resent merging of the sphinx-gallery branch, I went through and updated the docstring to appropriately escape the backslashes. --- examples/text_labels_and_annotations/dfrac_demo.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/text_labels_and_annotations/dfrac_demo.py b/examples/text_labels_and_annotations/dfrac_demo.py index 71e2e9df31f1..4ffd7767c5b0 100644 --- a/examples/text_labels_and_annotations/dfrac_demo.py +++ b/examples/text_labels_and_annotations/dfrac_demo.py @@ -1,19 +1,19 @@ r""" ========================================= -The difference between \dfrac and \frac +The difference between \\dfrac and \\frac ========================================= -In this example, the differences between the \dfrac and \frac TeX macros are +In this example, the differences between the \\dfrac and \\frac TeX macros are illustrated; in particular, the difference between display style and text style fractions when using Mathtex. .. versionadded:: 2.1 .. note:: - To use \dfrac with the LaTeX engine (text.usetex : True), you need to + To use \\dfrac with the LaTeX engine (text.usetex : True), you need to import the amsmath package with the text.latex.preamble rc, which is an unsupported feature; therefore, it is probably a better idea to just - use the \displaystyle option before the \frac macro to get this behavior + use the \\displaystyle option before the \\frac macro to get this behavior with the LaTeX engine. """ From b80d97522efa02d80762e5c571e693f55820686c Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 16 Jul 2017 11:34:48 -0500 Subject: [PATCH 8/8] TST: add missing tests --- .../test_mathtext/mathtext_cm_82.pdf | Bin 0 -> 6940 bytes .../test_mathtext/mathtext_cm_82.png | Bin 0 -> 1805 bytes .../test_mathtext/mathtext_cm_82.svg | 231 ++++++++++++++++++ .../test_mathtext/mathtext_dejavusans_82.pdf | Bin 0 -> 5955 bytes .../test_mathtext/mathtext_dejavusans_82.png | Bin 0 -> 1892 bytes .../test_mathtext/mathtext_dejavusans_82.svg | 141 +++++++++++ .../test_mathtext/mathtext_dejavuserif_82.pdf | Bin 0 -> 6130 bytes .../test_mathtext/mathtext_dejavuserif_82.png | Bin 0 -> 1917 bytes .../test_mathtext/mathtext_dejavuserif_82.svg | 154 ++++++++++++ .../test_mathtext/mathtext_stix_82.pdf | Bin 0 -> 6427 bytes .../test_mathtext/mathtext_stix_82.png | Bin 0 -> 1689 bytes .../test_mathtext/mathtext_stix_82.svg | 177 ++++++++++++++ 12 files changed, 703 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_82.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_82.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_82.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.svg diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7fcd5d932ab1ae07c54af426b117f400fbc3cb37 GIT binary patch literal 6940 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 D8<25R literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.png new file mode 100644 index 0000000000000000000000000000000000000000..55c704c48547539535eb45c226640ac04e44b84d GIT binary patch literal 1805 zcmcJPX;4#F6vrPz7)oWC7AhhL;x?=i2u+MgkVV20mV`wJs~`yoB$CGx6-Zmw0xk$L z>?mOin^6RnwJ?GkO9&A}0TndE4gyI*(Oz}N_DjFDZ|2>1-<@;Md;i}(=bz^6Xd@@9 zDhol7oGspp2tnKAz}#L&8jP#SjZeTsieX{vDg&)^uJOzaZ!1OR092Rm?Gx}5{BZL;AX=HH7z{r43W56h5l%XyKjm8)T zoeVl0sHaJVVLBFx{CkrDEs}!FyOBEpLDKHFR>xdp3m3+5R6bdwcg5+7G&wL#FEqP? zSgnOBm63K~dmTfh=Ma|_K6bn>134>Ncplj@o?lcXNKw!j=JU(?`yB}m4%5RFqn%MO{9s93Q&DmJ zq6Y41<}P$lHQBWZM4X=sP}j5ZSB7;QPb&Ph&Az8O$jU+-v;Yrhif-4e6po{-Sd z)6=uIu_{D3X&U&o*Dg(V%ss6mXR&j1Jvg^-yY1b(H}bAGQ@GV1s)e14B`H80k*_?D=@=tu>JqeBUci0H39!R>;hqE7V=%`|Ew zk?8L3?r*8e(^3^MiM><2cW)jmr&-+;BWiuyydDM-Gcz-pbABE1byix}0D}3^>(=Q? z+ojjnX85hENo$QhlASy6m`Y&q6iTI+mlrHv^hvVVgV-ifggMj25skORWU=?#U!Bf4 z*XB!bbbMQcWLGYzLj9e#k}oyiiU zDkmq$?!XnM@cWsN7HO6-eF(xlxvEcwUv(kE#~N+j+}uKGG!Gk_l%K;!mz$%^N}Pr? zoQys+l;9E`O|4A-^J|K$tE*W0OBPVE&lW(hbSiNtlM9M*3B}E3iZb}2PeY1WPN>o*(8f+TmX^Ba|s{6XF_Z1opNC?ZWWs{v($H~ zs9YKlk{FE7IpRM2=>iVguAKNK2gaORvLWS93k`jwhKqmE*xXzY_g<9OouW{{-}WhdqLg!5C1{D5rIH>J6uhAD_)xHQ3;%Ak30Re!H;&YrKRt2F0v1lEdiz4_f%Nm zmrD3j=DU6O%3%g?Q3jOK@53KIFahnYvN0H27i(JYaG;EiDQpvVMz>!oP7)!Uy}ov= z_)D|4R!Y!Q6VC4J3c;*N*=byppv%O&N+|8hJqY2m;!Ax{x2<2Ovxvv2Q0eC8*@aQAB~a)=CX+>$M9@1&Vixt@EkfC{z+OyHC~ADX zuflHAL0*~7t*Otg6}_M{(F0{G`7TPCXQ9l@>XVbD`<^_hx_;fF+SM+;!w>1(`e0)M z!Ad|nszUh9DU!gq!9!VDIg33p;j2$>%IJhN(}D0y`@&z`ae3Yp&hINgyLoz6&y6%N zaFQ%F;9XhlAfsv!4$k1AaCK&=+#Vad?9XjRlqS-d+gN6Cn{59>RlqPfO-=4Rs;fXC zz(!8vxy{n0iNNn3EJW+7$=7hXF5D9i;>B?iO4W^dIOQ_*F}?CL(*p+&3MMBT#>Tu% vOiUiWd5uG`yuUhT#}EIvk^ZYi=X`=_KYCPnn=zMxZ9}%!j#l*+{=fbOHqI4A literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.svg new file mode 100644 index 000000000000..19f8a85b606a --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_82.svg @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_82.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_82.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4b1874debd8a53dc243b4d7495be401594e0a1ce GIT binary patch literal 5955 zcmeHLe^gXe9!HlHM5h18p?1{TcwJu`yHZ$;$CVN5hux@I0_jm6DO@@Hwf-|u_#hH-{CZtFSwPc!Fx?tAy$ z`~7vl_j^CzJ1Qd~DV&brbfexlOD5WOX;;kzY2w9Y-#XB z#DMzqFOGY>-+@!Z+J8u&v3pqUGb_VR4*!>b9dqK}*MbLsnwawH!nt?9{IO}l%#a!V z1M-sU3(QBeQHoluMeq`|En;1k+dz|5<*oh9IO$IH*Xk7FAauRF0 z$3x@R)c4y@`6Vpa-uTd3pOBCv>)W&L+Z?sYO?$$>=)z9iA(~Bb zV!5Pj6^O%PacYGb!Y@2Muf#gL0{2{z=)m1lPH5-eNwh(1;AX(^O|TXeNEoURY1xEk zXriBo(Wq`%*U;!_2rR3kTt;?;(&cRj(>$)Zyd!}CO+CYFLB-p1+l=88O7$t{K>UvKAJ}@ExS7U&0wyQ1(6)P1*!96^@nq{eUD)y`X_i&+pnoB`9d(c3%Cz}Wq^&m+1bNR5e zk#Mk{97KVUH4=dpbS5y%V5A6R;0bGjga^cfp7_303uBRxhekXL z;YXnZj2sX!G8u`%0PieAco1$t;u*r2cpVTCc!BUdFcDZ{;9#r~6rkW4Tl~%fK|(RW zeB@~|nxIwtuvLs<4LWR52{Z~xfI!E&JQ%L>fUzJ~d1g6qgi#^hU{YF>0rZ7_fo8x! zRW1i|dDx4r3FmQyht>$r!d4*$#|erPutoXGqM-vp2XL$oW%4jbaf+rKwo0U-Bo1FF zbP=kJreO=DtP6@$Nyj_a%*9H500mVRj4GW+tw3`v47BCaT39ljrij9UGte+WT}O-q z7k?auHYvdb0fp}_E~pem>6C9y1}4D-yHh0$1T_XQ4(=tz*AN#N6K1 z#zhzxxT@IBa2;h36fs(Os}|KwKS?M1Iw zrp!Om_}Jk)`-$H|)KhaB;!)Yd52R-@I&0{ebqm zs=TKCzsXs%VZ~57d%)k=zOTlth*>q{%(Q|H2r}xs7fq_TXoy^ju`h8Gmnce^C*MvRG8rVl8*3UU`He&Pq{RNYlvCpsR7=9u@ za{iGfW8e0woX=xlJAX{9dTFzHQcFwGiZ{xxJXe`j{pa_7yT5+-rYk#Vh6i4M>!G=^ z7Jm9Z|39s=^*s@MW5<+_grpubn{CCzf=Z{3^*`Tp6Id@AekmJc0$W*&X>*UOJx=@S{ymP%}U1HT=- zdi`53`2+>6s3F-ygD6XW)c4z3Cd3b9UYOPDQ~u`kcOqwn?qB!$zMWTN2H%;^f0c7& z@7*?e?F#R+pV9I?9^c(986;hIz?ZnPsoy>Y&gA+&H@aYJ=!S;pL&&7lW$C*YG>#p> zn9qnym-%k-e`=|@qgVB|T)r_WbJgaH+jiP!RxECtZ+`vSjoxF@=ggTs?(io=u6Ci9 z`?=bkUfjJfixqZdP#F|Q^{z@<8nbcT^0?nU9yHPCFQ0z3q)*$T>AhltUorNs8@=qw zem;L~?>D*&!R}zFJHZUVdv}lU8K3lvr~R4=b%S;c?77&oW$FhNcW0FzjT9fb8#nFa z7yahFcJQ;X3n|fKCqMjd#NPT5ec!AYb@9+9vgOHdYpUO_Z#mhTTNXSzXVD--Zo73= zFfX55vOQu$+~WPCE>}NWv7o&3^te|h& z#vXNP<5vdw;#XHgTgsDglU6` z1GvVrU4ciX3VIOW@%})gS7GR0sQy==k!3tV<4@Y_2^yh*bq9-3J9dIaj`?|D5e@qV zEdBx(H9)1Jz3#vwMB0M|ivW#4>dyp=fP(>l{SRP~aREgHjQ?M-$afDGjR4@Wh;Rdn z_^g3Mt$ko%Q8@rKu;@(l3P6PGC(P^$@_=V&+Gm_sb4u!G)H}P*vh*G_0MK5!ID^#B z5ZZI7+xgu&-wn8ScDh~VbarYf4UVhMPIr(LZ?AwFA8s~MtQO^#LpkU=4=VMh(rs>+ zvMU`@fez|eK?hZ)^9MyF50JZnxcU%bb2G*nrheGC*8UVTt> zc=hq%Z~S%2r6>XH@aSWqAoA>EC^+0a#$j>n(MNMoba?hLls7-4(Tg9$b)k!3@R9*F zotIx&V;6m#w+tRDSr7df&g8|9F?susrM&&ZGL)D9coqsSmkik@?- zF%lp$U|@i7i4t|990SZ4g#?&#DFni$9CB=9P1SDI{@beUs_xhQ>UGyUzV~&;8TV62 zggOEMfW$gGdIBJggnL&xS-37;dn|xLhHj7bmV<*S7yKhU?}>EA(E(5h+L=-hZCFI8 z{DI+gj^RZMWyA(Wg#bzrBa%#GkckAXn2;zskw(=rM4dz#q9SQ@hOv>cfo_n-65sB8<|Mw*nEhR^#FJ0uX_k@O;VlZSiH8me!UzO-l&x(RWB>3nl_-H7ZEHE@Os$;WX zq5^o~%F4_g4ae?2to(Id&D^75*xXF6}5KYz|!xXAwrmypo7G|Q#t??sx|97Wmi=>RaRE6&yPC{k;r2_++|x^QD;h-+1C44MbAHmPZMU9vID^W?0yg@ zSYBSPm`s^FSsT!fo;K0d)m28MFN?d=;wNM0-g(&BU2dX@G|!gkq}w0FWN{8$oZF@J}B6{K87Z`WjId}CS5D0HPzGQ|1 zQgt%;N;@nN`-L1{LjWv_%zNgyQx8_8?l6YJc)m8!pIndu5EN5y8pARJ4yvhn&}g(P zu`*qmkV1yW#yD&?dv`3lBYBhE&|qklu>3vNa+ml!NGC!rDgObB^>J>rEq*d9D{FC$ z84(fT^12tqA0s#N+V^TN^EvhnUd0J zowWXswphu2RiJmn5($irj4B5QJ(Uj}V6#|9-@KI)dlVDFR(Ef2uXjKIXJUe|JIyXS zCgw<@E5O|3D|OkNGyf(}B=L=o=0=c6+?ZKmFl|rj^@TWTNYLZ30{>6m{;wZlO{Fj> VVmT+No(#VOfOT?r + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6170feca8d3886e00b2e04c433b6916f6dc4eee9 GIT binary patch literal 6130 zcmeHLdstIP78k2XuVS@gMg5d*?%Z={&YW}R zH#5I8{Wa>yAS#$8`fsX2r4 zp@e8M;D#!f4iPqKv`*4XB4X{GBF!cVG4{GfFG-@sggE?4C^Qyxs!o(p5{#pc1pT5- zLW<}t7;}{48SZ#SqhzGeW#|n?Q##`9-6zDSOc7Hhq?DC6nM08va5@lXGMObS3<3Sa z!4%O1Z-QOHXp1>F8(}xYbx5HW^NgvYb~FqPZ{sX_lQmm!5lyMnou1py^e%8NUR6 zq3%=P_q4~oL)}%gDkhg(*7#2R`9_I4w8Z#gm>4KnLcX%h-|+p#)3eIH9jaORL-<&# z+^g5Z^4WLpy}KuN&s!<|)aI9O8B4|_EgI~9YSq!7OtlpcLa&}%5!`0?s{h0 z@@wDuKv6j8ZNGze4b_|J+AEzizRBD-Fn?Wy-_oTq9fG^=`)Ggpo&9;IYA#jz4Dv|w zI5c-PYCBE$+)K9#H7{+Sn>}F2(O&)uQJR})=cHGitnXJ-FV4&T^4!kkVLI<&_j1pT zK3isc*EX^E-`cAIs+@NM#L2q6sS0yXU4e-Uy|=nHxVA+7OSgY)|8o9I!;@2NB-9~NBx!>!SShRIh_4*I*j~l#yUDYpZ!)~1& z@#xJv+bjKMpN${fO3d(5bH-(12U0MQf_Xm@Szth>~{%d&fAvWHHK1DVQWN#^K*sgRZf9$3Qg4 zA;nmI7A%RDz7YytZi*!DP}o|=X|z2SiAIBz0Z!X@GMBvq+u;mdm^BqIUV#?yE|(o8 z8q+f*_zt7lzXZ_?FR#sX*hBayb^G@%w$DnKDLqrf!^G)rvYikemWEwO60^o*xjp)B z5mZcQw9myI>>qX~3GpQPM-<|J)x%IK#F8{(c@n7@72+A55ICp{B%+lZV&I7j2X^A` zxINSORO0rJD}?hq!ziJjQr3a>;KD&)iUh?n)MqwFQDKu0eCBTUX_jo~ehmcJHmt+%Q zbnF@@fE%zPINT0D1sGLnuk$R67#N6wCBl=uTo+gf70W`{K{vF=g~i7UtQZ_l+=s*7 za6CNib&j@&3y+V(g2$Jq4Tq2<2|2VdCI=yw!y+5zFi^%Cc8>)CMPU_C!7e#xUhWQE zIf^2nfD51sH^vces>lYCNKgrKPuVDN+KB__d^w(Su$*?tnpg-s4-v)IV<0rD$E~ms zPZTcrod+agO`x5?@A5YsR!|`DLSw;5kU@Zf;8tJ&n0bgLMgyBcm!EH+ zrcU~Ga!zQ$PTRsTzpa-pepPkkldcA4gn;}CVjy}vs_gVtOAw;n{Xt z-|Rj|-pI@fUl6c(f#LQm0SQJXO=!1{`gF{o;0}KwCYByf98+I6vE)_$&dWa+cbav~ z`}*vY-K#$TSJ}Xe#eoH<5>LI5HGOOT$=9-kH5Y$6v1Z5R*E2t^3te-i(Cg2NdJm7& zN0=Ek!r%hWnf->|Smj?=G3R01Ih~i2E$INj{K;lf#Wb75xRalF?&X(XzWq%{bZ*H=|pgsk;`wYia&~Y zZQ$g&o{F41k?#!{+u1O-u*WyU4-EO|)Lq1qy;(sCy|>Kg7u5Ca^XN#Qdz4?c^}d85z5`ove} zWDE^RY{dyzy7f3GXxJ=Wo!~S_a}IzLr372pGhx@-86_94+<)X9CMf5a2D|k~uX#V_M}6D#nrGmih?MgCrTP+|Z9}4|s!zFoi@Oz%dm-d| zU*CPTJ%4KW^hnU5;+iRjn4M82c~@sz3s%K?zOAwD{A}^$%hk6B#os=_eG#!EswkmL z@_CTL*nN?kyb3E_6&BkN3 z>$*@YJC(hcc17n`wsv65qb)T{D*dJ`()DT?8_G4AX_bn)a!}ac{u2j<{aax$XJ!J= zWTBc3Y}RZ*a7Zd@IHhxI$I)=bM{3y0nuldSj+&kuT??O=)IC lW8eVDwPrKMn_Sl!XTZwg?c`H$kz^PFYAB+A|A_cV;x~It#!3JH literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_82.png new file mode 100644 index 0000000000000000000000000000000000000000..a6aa19c18065bd427a0130c11420c3168c926242 GIT binary patch literal 1917 zcmbVNdo8}tP}l*fxA6N&#A5jZg+#De<#J^-{H(;Nxk zE9l^D-abNS&50^}?6C|3RNjT3Zff=xY1jPsK|TJH%{+&vxO4h?2yD&HE}=1YJEqhb zA9Qi1xJlwiFYKnjJKa9DlPf7#v*)I`ZGDYbR?o}^uQ=k?Ow~06AZ3?5 z5`Zu5L!rbG1_TBw4?@>=m<9HRCnfoN zczASgB*nzIGnq_N6O;b;>uS~1lPqS!*JN^Tetuh~B=wkCd-}Yj`M%p33m@@?z5N9NgE3>$`sS zYCT3zuSO&yCr9x4a(NRgCw6|I{N}nquSZoPLFmSBxi!14UXr&bxAPMcyy*1m)&#Zb zfdek(<>lmrm2f-G(W6ibL9Pd8-c^V5{;;JA+XYIo4Ja(4IughAp?K2pauBDW0616bxe7lwzW= z&226{Xm?7-rHG#^&| zJ2sfWLwx1uHw6MgMRqoZHn6xD{xoDa7RzQZ4%Y>=>j>NVs&8RMY=Q{+ei~=2Ew6iK zpvJc)^@d(J5rp7jtnXgGuqKg6EC%C#K;swRA(2Q}rUOGYzG;-k`g*tc_;^v$d(kEd znUd}!otD^evWwYN2`H>!NTI=AXG@C6uWzP7#JDVNFYU#(kyrk#X%95!aFaW>XC+htBRri&MdK^se=XJ8%H*V}Z6#v!%;v}zU zeDl4;XwRN2vR7V?ju{vX#$K`G$zLVC2NvM{(R=Zwj~_e2c%QdwgE!Z-#GQ0P{`vFg z7yXgIIJ$C+8zx=1DC5Cg6G8`LV8B#sUw(u>CfbsBBp0%SSL@~ak<>8+S=nTE@&Kin;oV^L!8{% z+biwqxhN^7)}^Ow8c~ym74RO-V$^oLc=DCuK5A0+>7~)<_t0Sfge&q*{`G6u1|B_1 z-wbJaaex*U8tMk|_hV~B;qBoeJ0imC$dPl7PEIQ2yoZ6lzObUgaZXaym_PzL51;9Y z0|>UZ-a$b@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1657aaf5625a8e83e155f6810f0ea467f4bcebef GIT binary patch literal 6427 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_82.png new file mode 100644 index 0000000000000000000000000000000000000000..0143688609e47b1eea4c804f4a9888ce8c614177 GIT binary patch literal 1689 zcmcgsi8s_+9KWbA&t%DqGbm~7%w#(<81kqY%TRAbc$TtEDdRC2Y3xywya;b>QJM*^8KE3zu)`$-0$a`;6OM7haq4905~3J zc@6+UICQoVIRLHP_{uhD+ZSwsCyGFWCgObuvPA=N7lHv0_u88Rg=WmlkkgK0`S3~1^Iw$UX;MAWXjdc7ZpQ%f`TuT0~B>pCs4YmKyoleUr%30)6dZGq>lGRZ=*|E ziX;jp5Q9d4y@VnM`Jw6M8Jz&^|A@CdMGVcJe`k+NjRdckJ0s|S-a)3{he^p9ZN~nh zO~q z$uydq$4lB-MTw1ZgV@;E;f9;kmW_#tC!1SaY1U7r58kf&b-cMTlhN)rC(6E2(*tVS zR#z+I}R>eS1FF(|T<*Ze(vJzxxXQ!Up@_BBk0u%h{ zUICMt*iRmLVfP`>nMue=L7IlG;_5=?yR!_*mA>tWR^CusQ!dC(Fos9jY;P?8BrJY} z=;V|UvM^fYd7?0Qs-uX-BG7G5r%bGcO>%ja7n|;;tl8(9boDUp`vwP{W&KH{w<*dt zl*uY@t2m$k?OKyhnr1~B+tyuP>d3&IEG-&Xi_!p5V`*=h(ZZ9@^i!lPM@V;S~~oW|;GMj1qeOc$uZ zk;!Em8XA<1B`=7)>5*!3vwvgcE())qskxJ1)RZWrnbq#n(K!IY+j|jGR!rka^6clX z{F(WA#}l$dt;2dQbwQKXcnw~8hi^qOi}m7b^tSG&Hhum51?%e}eZ9SEh@=@FcPf4M ziod@yo?#Y=LhPch5NL@+| zVQa;t&Ib=9t@6))gV-c=$sFxouZAdj_N=$SF3XzL?pv|BtLa=^Tr8b*x^G~>Nmfo? zzW2FLYwzgjRij;3DzzG8Y`i<23r3?MNE5FT4!xNSiesp%sOanJ<`opE;JZ5+X4ko& z?5eBYlZ;^Q~ZMrisb2O&a`Ko_wZn(qdfxj(Rjmv(YFv?|AjTQ z5Jc(d=sfP|ASg?Tmby2%95ss|Iy$DUFT8VIT|piqb6z@Pa{A-pazuCc9Vc#TYHB8( zu1;%N_J9gp;m!eeocl{!(d*=+B~?{@3;Dp=Jk&&><~PpbK!2(0JoZ4;{&?d(q2lOk z${?FPzC0Ly%cyA)9mU-%gQdqXb^whD=~?y|0;th#XF76>Ys1#Abp76vr6QmuZz%*O zxi=aj_%7Po+SV$mDNm@2W7GdUI1Y*7IgbLeV@TjpW+p;;*_vQ^m=TA4>i7^q;N4W6thV!K^PhG16mKkaS(jO)X z;BN20fTmP}gcz`13KcXz1!aMRTt((!>yic8(GVk#-a~1JEBun7dY#9@fbd6xP&wO_ zw&C#D0jFx8OH`9qk_Fq6R7BK%RGM`WlX+(A%VGv+v3lzykiSQQy4-0f%=hVa-?Y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +