diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 02428615ae50..fe7138fedec0 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -28,7 +28,7 @@ from pyparsing import ( Combine, Empty, FollowedBy, Forward, Group, Literal, oneOf, OneOrMore, Optional, ParseBaseException, ParseFatalException, ParserElement, - QuotedString, Regex, StringEnd, Suppress, ZeroOrMore) + ParseResults, QuotedString, Regex, StringEnd, Suppress, ZeroOrMore) from matplotlib import cbook, colors as mcolors, rcParams from matplotlib.afm import AFM @@ -2873,11 +2873,7 @@ def accent(self, s, loc, toks): ]) def function(self, s, loc, toks): - self.push_state() - state = self.get_state() - state.font = 'rm' - hlist = Hlist([Char(c, state) for c in toks[0]]) - self.pop_state() + hlist = self.operatorname(s, loc, toks) hlist.function_name = toks[0] return hlist @@ -2885,13 +2881,29 @@ def operatorname(self, s, loc, toks): self.push_state() state = self.get_state() state.font = 'rm' + hlist_list = [] # Change the font of Chars, but leave Kerns alone for c in toks[0]: if isinstance(c, Char): c.font = 'rm' c._update_metrics() + hlist_list.append(c) + elif isinstance(c, str): + hlist_list.append(Char(c, state)) + else: + hlist_list.append(c) + next_char_loc = loc + len(toks[0]) + 1 + if isinstance(toks[0], ParseResults): + next_char_loc += len('operatorname{}') + next_char = next((c for c in s[next_char_loc:] if c != ' '), '') + delimiters = self._left_delim | self._ambi_delim | self._right_delim + delimiters |= {'^', '_'} + if (next_char not in delimiters and + toks[0] not in self._overunder_functions): + # Add thin space except when followed by parenthesis, bracket, etc. + hlist_list += [self._make_space(self._space_widths[r'\,'])] self.pop_state() - return Hlist(toks[0]) + return Hlist(hlist_list) def start_group(self, s, loc, toks): self.push_state() diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.pdf deleted file mode 100644 index 1447f1a5a6ee..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.pdf and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.png deleted file mode 100644 index fb9f1ce54186..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.png and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.svg deleted file mode 100644 index 68674dc6ae48..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_66.svg +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.pdf deleted file mode 100644 index b67c465c0f74..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.pdf and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.png deleted file mode 100644 index 4355536a39a7..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.png and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.svg deleted file mode 100644 index 89e96a72bc99..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_66.svg +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.pdf deleted file mode 100644 index 7249772bd597..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.pdf and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.png deleted file mode 100644 index fb1c41c2c248..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.png and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.svg deleted file mode 100644 index 2c3d08c82b2b..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_66.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.pdf deleted file mode 100644 index da794b5b7bda..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.pdf and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.png deleted file mode 100644 index 7c75c2893837..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.png and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.svg deleted file mode 100644 index bce6b5573076..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_66.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.pdf deleted file mode 100644 index 4e72c0fd146a..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.pdf and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.png deleted file mode 100644 index 2d2a22d88f8b..000000000000 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.png and /dev/null differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.svg deleted file mode 100644 index 56641fa94ea7..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_66.svg +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index 6bc84b19f1eb..285841f7277b 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -11,6 +11,7 @@ from matplotlib import mathtext +# If test is removed, use None as placeholder math_tests = [ r'$a+b+\dot s+\dot{s}+\ldots$', r'$x \doteq y$', @@ -91,7 +92,7 @@ r"$\left( \xi \left( 1 - \xi \right) \right)$", # Bug 2969451 r"$\left(2 \, a=b\right)$", # Sage bug #8125 r"$? ! &$", # github issue #466 - r'$\operatorname{cos} x$', # github issue #553 + None, r'$\sum _{\genfrac{}{}{0}{}{0\leq i\leq m}{0