Skip to content

Commit e5f318d

Browse files
committed
update substack cmd
1 parent a48e51b commit e5f318d

3 files changed

Lines changed: 13 additions & 17 deletions

File tree

lib/matplotlib/_mathtext.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414

1515
import numpy as np
1616
from pyparsing import (
17-
Empty, Forward, Literal, NotAny, oneOf, OneOrMore, Optional, delimited_list,
17+
Empty, Forward, Literal, NotAny, oneOf, OneOrMore, Optional,
1818
ParseBaseException, ParseException, ParseExpression, ParseFatalException,
1919
ParserElement, ParseResults, QuotedString, Regex, StringEnd, ZeroOrMore,
20-
pyparsing_common)
20+
pyparsing_common, nested_expr, Group)
2121

2222
import matplotlib as mpl
2323
from . import cbook
@@ -1700,7 +1700,6 @@ def names(elt):
17001700
csname = expr.split("{", 1)[0]
17011701
err = (csname + "".join("{%s}" % name for name in names(args))
17021702
if expr == csname else expr)
1703-
print(csname, args, err)
17041703
return csname - (args | Error(f"Expected {err}"))
17051704

17061705

@@ -1871,7 +1870,6 @@ def csnames(group, names):
18711870
p.required_group = Forward()
18721871
p.optional_group = Forward()
18731872
p.token = Forward()
1874-
p.substack = Forward()
18751873

18761874
set_names_and_parse_actions() # for mutually recursive definitions.
18771875

@@ -1917,6 +1915,11 @@ def csnames(group, names):
19171915

19181916
p.text = cmd(r"\text", QuotedString('{', '\\', endQuoteChar="}"))
19191917

1918+
p.substack = cmd(r"\substack",
1919+
nested_expr(opener="{", closer="}",
1920+
content=Group(OneOrMore(p.token)) +
1921+
ZeroOrMore(Literal("\\\\").suppress()))("parts"))
1922+
19201923
p.subsuper = (
19211924
(Optional(p.placeable)("nucleus")
19221925
+ OneOrMore(oneOf(["_", "^"]) - p.placeable)("subsuper")
@@ -1935,9 +1938,6 @@ def csnames(group, names):
19351938

19361939
p.operatorname = cmd(r"\operatorname", "{" + ZeroOrMore(p.simple)("name") + "}")
19371940

1938-
p.substack <<= cmd(
1939-
r"\substack", "{"+delimited_list(OneOrMore(p.token), delim="\\\\", combine=True)("parts")+"}")
1940-
19411941
p.placeable <<= (
19421942
p.accent # Must be before symbol as all accents are symbols
19431943
| p.symbol # Must be second to catch all named symbols and single
@@ -1953,8 +1953,8 @@ def csnames(group, names):
19531953
| p.underset
19541954
| p.sqrt
19551955
| p.overline
1956-
| p.substack
19571956
| p.text
1957+
| p.substack
19581958
)
19591959

19601960
p.auto_delim <<= (
@@ -1977,7 +1977,6 @@ def csnames(group, names):
19771977

19781978
# To add space to nucleus operators after sub/superscripts
19791979
self._in_subscript_or_superscript = False
1980-
self.p = p
19811980

19821981
def parse(self, s, fonts_object, fontsize, dpi):
19831982
"""
@@ -2606,17 +2605,15 @@ def auto_delim(self, s, loc, toks):
26062605
toks["right"])
26072606

26082607
def substack(self, s, loc, toks):
2609-
print(list(toks.keys()))
2610-
print(toks["parts"])
2611-
parts = toks["parts"].split("\\\\")
2612-
print(parts)
2608+
parts = toks["parts"]
26132609
state = self.get_state()
26142610
thickness = state.get_current_underline_thickness()
26152611
vlist = []
26162612

2617-
max_width = max(map(lambda c: c.width, parts))
2613+
hlist = [Hlist(k) for k in parts[0]]
2614+
max_width = max(map(lambda c: c.width, hlist))
26182615

2619-
for sub in parts:
2616+
for sub in hlist:
26202617
cp = HCentered([sub])
26212618
cp.hpack(max_width, 'exactly')
26222619
vlist.append(cp)
@@ -2625,7 +2622,6 @@ def substack(self, s, loc, toks):
26252622
[Vbox(0, thickness * 2)] *
26262623
len(vlist)) for val in pair]
26272624
del vlist[-1]
2628-
26292625
vlt = Vlist(vlist)
26302626
result = [Hlist([vlt])]
26312627
return result
-11 Bytes
Loading

lib/matplotlib/tests/test_mathtext.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@
134134
r'$\sum x\quad\sum^nx\quad\sum_nx\quad\sum_n^nx\quad\prod x\quad\prod^nx\quad\prod_nx\quad\prod_n^nx$', # GitHub issue 18085
135135
r'$1.$ $2.$ $19680801.$ $a.$ $b.$ $mpl.$',
136136
r'$\text{text}_{\text{sub}}^{\text{sup}} + \text{\$foo\$} + \frac{\text{num}}{\mathbf{\text{den}}}\text{with space, curly brackets \{\}, and dash -}$',
137-
r'$\sum_{\substack{k = 1}{k \neq \lfloor n/2\rfloor}}^{n}P(i,j) \sum_{\substack{i \neq 0}{-1 \leq i \leq 3}{1 \leq j \leq 5}} F^i(x,y) \sum_{\substack{\left \lfloor \frac{n}{2} \right\rfloor}} F(n)$',
137+
r'$\sum_{\substack{k = 1\\ k \neq \lfloor n/2\rfloor}}^{n}P(i,j) \sum_{\substack{i \neq 0\\ -1 \leq i \leq 3\\ 1 \leq j \leq 5}} F^i(x,y) \sum_{\substack{\left \lfloor \frac{n}{2} \right\rfloor}} F(n)$',
138138
]
139139

140140
digits = "0123456789"

0 commit comments

Comments
 (0)