pylatexenc/latexwalker.py
def get_latex_environment(self, pos, environmentname=None):
        r"""
        Parses the latex content given to the constructor (and stored in `self.s`),
        starting at position `pos`, to read a latex environment.

        Reads a latex expression enclosed in a
        ``\begin{environment}...\end{environment}``.  The first token in the
        stream must be the ``\begin{environment}``.

        If `environmentname` is given and nonempty, then additionally a
        :py:exc:`LatexWalkerParseError` is raised if the environment in the
        input stream does not match the provided name.

        This function will attempt to heuristically parse an optional argument,
        and possibly a mandatory argument given to the environment.  No space is
        allowed between ``\begin{environment}`` and an opening square bracket or
        opening brace.

        Returns a tuple (node, pos, len) with node being a
        :py:class:`LatexEnvironmentNode`.
        """

        startpos = pos

        firsttok = self.get_token(pos)
        if (firsttok.tok != 'begin_environment'  or
            (environmentname is not None and firsttok.arg != environmentname)):
            raise LatexWalkerParseError(s=self.s, pos=pos,
                                        msg=r'get_latex_environment: expected \begin{%s}: %s' %(
                environmentname if environmentname is not None else '<environment name>',
                firsttok.arg
                ))
        if (environmentname is None):
            environmentname = firsttok.arg

        pos = firsttok.pos + firsttok.len


        optargs = []
        args = []

        # see if the \begin{environment} is immediately followed by some
        # options.  Important: Don't eat the brace of a commutator!! Don't allow
        # any space between the environment and the open bracket.
        optargtuple = None
        if (self.s[pos] == '['):
            optargtuple = self.get_latex_maybe_optional_arg(pos)

        if (optargtuple is not None):
            optargs.append(optargtuple[0])
            pos = optargtuple[1]+optargtuple[2]
        else:
            # Try to see if we have a mandatory argument.  Don't use get_token
            # as we don't want to skip any space.
            if self.s[pos] == '{':
                (argnode, apos, alen) = self.get_latex_braced_group(pos)
                args.append(argnode)
                pos = apos+alen

        (nodelist, npos, nlen) = self.get_latex_nodes(pos, stop_upon_end_environment=environmentname)

        return (LatexEnvironmentNode(envname=environmentname,
                                     nodelist=nodelist,
                                     optargs=optargs,
                                     args=args),
                startpos, npos+nlen-startpos)
def get_latex_environment(self, pos, environmentname=None):
        r"""
        Parses the latex content given to the constructor (and stored in `self.s`),
        starting at position `pos`, to read a latex environment.

        Reads a latex expression enclosed in a
        ``\begin{environment}...\end{environment}``.  The first token in the
        stream must be the ``\begin{environment}``.

        If `environmentname` is given and nonempty, then additionally a
        :py:exc:`LatexWalkerParseError` is raised if the environment in the
        input stream does not match the provided name.

        This function will attempt to heuristically parse an optional argument,
        and possibly a mandatory argument given to the environment.  No space is
        allowed between ``\begin{environment}`` and an opening square bracket or
        opening brace.

        Returns a tuple (node, pos, len) with node being a
        :py:class:`LatexEnvironmentNode`.
        """

        startpos = pos

        firsttok = self.get_token(pos)
        if (firsttok.tok != 'begin_environment'  or
            (environmentname is not None and firsttok.arg != environmentname)):
            raise LatexWalkerParseError(s=self.s, pos=pos,
                                        msg=r'get_latex_environment: expected \begin{%s}: %s' %(
                environmentname if environmentname is not None else '<environment name>',
                firsttok.arg
                ))
        if (environmentname is None):
            environmentname = firsttok.arg

        pos = firsttok.pos + firsttok.len


        optargs = []
        args = []

        # see if the \begin{environment} is immediately followed by some
        # options.  Important: Don't eat the brace of a commutator!! Don't allow
        # any space between the environment and the open bracket.
        optargtuple = None
        if (self.s[pos] == '['):
            optargtuple = self.get_latex_maybe_optional_arg(pos)

        if (optargtuple is not None):
            optargs.append(optargtuple[0])
            pos = optargtuple[1]+optargtuple[2]
        else:
            # Try to see if we have a mandatory argument.  Don't use get_token
            # as we don't want to skip any space.
            if self.s[pos] == '{':
                (argnode, apos, alen) = self.get_latex_braced_group(pos)
                args.append(argnode)
                pos = apos+alen

        (nodelist, npos, nlen) = self.get_latex_nodes(pos, stop_upon_end_environment=environmentname)

        return (LatexEnvironmentNode(envname=environmentname,
                                     nodelist=nodelist,
                                     optargs=optargs,
                                     args=args),
                startpos, npos+nlen-startpos)
def get_latex_environment ( self , pos , environmentname = None ) : startpos = pos firsttok = self . get_token ( pos ) if ( firsttok . tok != 'begin_environment' or ( environmentname is not None and firsttok . arg != environmentname ) ) : raise LatexWalkerParseError ( s = self . s , pos = pos , msg = r'get_latex_environment: expected \begin{%s}: %s' % ( environmentname if environmentname is not None else '<environment name>' , firsttok . arg ) ) if ( environmentname is None ) : environmentname = firsttok . arg pos = firsttok . pos + firsttok . len optargs = [ ] args = [ ] # see if the \begin{environment} is immediately followed by some # options.  Important: Don't eat the brace of a commutator!! Don't allow # any space between the environment and the open bracket. optargtuple = None if ( self . s [ pos ] == '[' ) : optargtuple = self . get_latex_maybe_optional_arg ( pos ) if ( optargtuple is not None ) : optargs . append ( optargtuple [ 0 ] ) pos = optargtuple [ 1 ] + optargtuple [ 2 ] else : # Try to see if we have a mandatory argument.  Don't use get_token # as we don't want to skip any space. if self . s [ pos ] == '{' : ( argnode , apos , alen ) = self . get_latex_braced_group ( pos ) args . append ( argnode ) pos = apos + alen ( nodelist , npos , nlen ) = self . get_latex_nodes ( pos , stop_upon_end_environment = environmentname ) return ( LatexEnvironmentNode ( envname = environmentname , nodelist = nodelist , optargs = optargs , args = args ) , startpos , npos + nlen - startpos )
r"""
        Parses the latex content given to the constructor (and stored in `self.s`),
        starting at position `pos`, to read a latex environment.

        Reads a latex expression enclosed in a
        ``\begin{environment}...\end{environment}``.  The first token in the
        stream must be the ``\begin{environment}``.

        If `environmentname` is given and nonempty, then additionally a
        :py:exc:`LatexWalkerParseError` is raised if the environment in the
        input stream does not match the provided name.

        This function will attempt to heuristically parse an optional argument,
        and possibly a mandatory argument given to the environment.  No space is
        allowed between ``\begin{environment}`` and an opening square bracket or
        opening brace.

        Returns a tuple (node, pos, len) with node being a
        :py:class:`LatexEnvironmentNode`.
r Parses the latex content given to the constructor ( and stored in self . s ) starting at position pos to read a latex environment .