@@ -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