# File lib/math_ml/latex.rb, line 241
                        def parse_newcommand
                                case
                                when @scanner.scan_block
                                        s = Scanner.new(@scanner[1])
                                        raise parse_error("Need newcommand.", s.rest+"}") unless s.scan_command
                                        com = s[1]
                                        raise parse_error("Syntax error." ,s.rest+"}") unless s.eos?
                                when @scanner.scan_command
                                        s = Scanner.new(@scanner[1])
                                        com = s.scan_command
                                else
                                        raise parse_error("Need newcommand.")
                                end

                                optnum = scan_num_of_parameter
                                opt = @scanner.scan_option ? @scanner[1] : nil

                                case
                                when @scanner.scan_block
                                        body = @scanner[1]
                                when @scanner.scan_command
                                        body = @scanner.matched
                                else
                                        body = @scanner.scan(/./)
                                end

                                raise parse_error("Need parameter.") unless body

                                check_parameter_numbers(body, optnum, @scanner.matched)

                                optnum-=1 if opt
                                @commands[com] = Command.new(optnum, body, opt)
                        end