Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a34268a

Browse files
committed
Improving spacing operators.
svn path=/trunk/matplotlib/; revision=3635
1 parent 81ae6cc commit a34268a

1 file changed

Lines changed: 26 additions & 16 deletions

File tree

lib/matplotlib/mathtext.py

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,13 +1698,17 @@ def __init__(self):
16981698
space =(FollowedBy(bslash)
16991699
+ (Literal(r'\ ')
17001700
| Literal(r'\/')
1701-
| Group(Literal(r'\hspace{') + number + Literal('}'))
1702-
)
1701+
| Literal(r'\,')
1702+
| Literal(r'\;')
1703+
| Literal(r'\quad')
1704+
| Literal(r'\qquad')
1705+
| Literal(r'\!')
1706+
)
17031707
).setParseAction(self.space).setName('space')
17041708

17051709
symbol = Regex("(" + ")|(".join(
17061710
[
1707-
r"\\(?!left[^a-z])(?!right[^a-z])[a-zA-Z0-9]+(?!{)",
1711+
r"\\(?!quad)(?!qquad)(?!left[^a-z])(?!right[^a-z])[a-zA-Z0-9]+(?!{)",
17081712
r"[a-zA-Z0-9 ]",
17091713
r"[+\-*/]",
17101714
r"[<>=]",
@@ -1794,7 +1798,7 @@ def __init__(self):
17941798

17951799
ambiDelim = oneOf(r"""| \| / \backslash \uparrow \downarrow
17961800
\updownarrow \Uparrow \Downarrow
1797-
\Updownarrow""")
1801+
\Updownarrow .""")
17981802
leftDelim = oneOf(r"( [ { \lfloor \langle \lceil")
17991803
rightDelim = oneOf(r") ] } \rfloor \rangle \rceil")
18001804
autoDelim <<(Suppress(Literal(r"\left"))
@@ -1886,16 +1890,19 @@ def _make_space(self, percentage):
18861890
state = self.get_state()
18871891
metrics = state.font_output.get_metrics(
18881892
state.font, 'm', state.fontsize, state.dpi)
1889-
em = metrics.width
1890-
return Hbox(em * percentage)
1891-
1893+
em = metrics.advance
1894+
return Kern(em * percentage)
1895+
1896+
_space_widths = { r'\ ' : 0.3,
1897+
r'\,' : 0.4,
1898+
r'\;' : 0.8,
1899+
r'\quad' : 1.6,
1900+
r'\qquad' : 3.2,
1901+
r'\!' : -0.4,
1902+
r'\/' : 0.4 }
18921903
def space(self, s, loc, toks):
18931904
assert(len(toks)==1)
1894-
if toks[0]==r'\ ': num = 0.30 # 30% of fontsize
1895-
elif toks[0]==r'\/': num = 0.1 # 10% of fontsize
1896-
else: # hspace
1897-
num = float(toks[0][1]) # get the num out of \hspace{num}
1898-
1905+
num = self._space_widths[toks[0]]
18991906
box = self._make_space(num)
19001907
return [box]
19011908

@@ -2179,10 +2186,13 @@ def auto_sized_delimiter(self, s, loc, toks):
21792186
state = self.get_state()
21802187
height = max([x.height for x in middle])
21812188
depth = max([x.depth for x in middle])
2182-
hlist = Hlist(
2183-
[AutoSizedDelim(front, height, depth, state)] +
2184-
middle.asList() +
2185-
[AutoSizedDelim(back, height, depth, state)])
2189+
parts = []
2190+
if front != '.':
2191+
parts.append(AutoSizedDelim(front, height, depth, state))
2192+
parts.extend(middle.asList())
2193+
if back != '.':
2194+
parts.append(AutoSizedDelim(back, height, depth, state))
2195+
hlist = Hlist(parts)
21862196
return hlist
21872197

21882198
####

0 commit comments

Comments
 (0)