@@ -1936,6 +1936,7 @@ def csnames(group, names):
19361936 p .function = csnames ("name" , self ._function_names )
19371937
19381938 p .group = p .start_group + ZeroOrMore (p .token )("group" ) + p .end_group
1939+ p .unclosed_group = (p .start_group + ZeroOrMore (p .token )("group" ) + StringEnd ())
19391940
19401941 p .frac = cmd (r"\frac" , p .required_group ("num" ) + p .required_group ("den" ))
19411942 p .dfrac = cmd (r"\dfrac" , p .required_group ("num" ) + p .required_group ("den" ))
@@ -1984,6 +1985,7 @@ def csnames(group, names):
19841985 p .token <<= (
19851986 p .simple
19861987 | p .auto_delim
1988+ | p .unclosed_group
19871989 | p .unknown_symbol # Must be last
19881990 )
19891991
@@ -2072,7 +2074,7 @@ def main(self, s, loc, toks):
20722074 return [Hlist (toks )]
20732075
20742076 def math_string (self , s , loc , toks ):
2075- return self ._math_expression .parseString (toks [0 ][1 :- 1 ])
2077+ return self ._math_expression .parseString (toks [0 ][1 :- 1 ], parseAll = True )
20762078
20772079 def math (self , s , loc , toks ):
20782080 hlist = Hlist (toks )
@@ -2294,6 +2296,9 @@ def end_group(self, s, loc, toks):
22942296 self .pop_state ()
22952297 return []
22962298
2299+ def unclosed_group (self , s , loc , toks ):
2300+ raise ParseFatalException (s , len (s ), "Expected '}'" )
2301+
22972302 def font (self , s , loc , toks ):
22982303 self .get_state ().font = toks ["font" ]
22992304 return []
0 commit comments