Class TeXParser


  • public class TeXParser
    extends java.lang.Object
    This class implements a parser for LaTeX' formulas.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static boolean isLoading  
    • Constructor Summary

      Constructors 
      Constructor Description
      TeXParser​(boolean isPartial, java.lang.String parseString, ArrayOfAtoms aoa, boolean firstpass)
      Create a new TeXParser in the context of an array.
      TeXParser​(boolean isPartial, java.lang.String parseString, ArrayOfAtoms aoa, boolean firstpass, boolean space)
      Create a new TeXParser in the context of an array.
      TeXParser​(boolean isPartial, java.lang.String parseString, TeXFormula formula)
      Create a new TeXParser
      TeXParser​(boolean isPartial, java.lang.String parseString, TeXFormula formula, boolean firstpass)
      Create a new TeXParser with or without a first pass
      TeXParser​(boolean isPartial, java.lang.String parseString, TeXFormula formula, boolean firstpass, boolean space)
      Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command
      TeXParser​(java.lang.String parseString, ArrayOfAtoms aoa, boolean firstpass)
      Create a new TeXParser in the context of an array.
      TeXParser​(java.lang.String parseString, TeXFormula formula)
      Create a new TeXParser
      TeXParser​(java.lang.String parseString, TeXFormula formula, boolean firstpass)
      Create a new TeXParser with or without a first pass
      TeXParser​(java.lang.String parseString, TeXFormula formula, boolean firstpass, boolean space)
      Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addAtom​(Atom at)
      Put an atom in the current formula
      void addRow()
      Add a new row when the parser is in array mode
      Atom convertCharacter​(char c, boolean oneChar)
      Convert a character in the corresponding atom in using the file TeXFormulaSettings.xml for non-alphanumeric characters
      void finish()  
      Atom getArgument()
      Get the argument of a command in his atomic format
      int getCol()
      Get the number of the current column
      java.lang.String getDollarGroup​(char openclose)
      Get the contents between two delimiters
      Atom getFormulaAtom()
      Get the atom represented by the current formula
      java.lang.String getGroup​(char open, char close)
      Get the contents between two delimiters
      java.lang.String getGroup​(java.lang.String open, java.lang.String close)
      Get the contents between two strings as in \begin{foo}...\end{foo}
      boolean getIsPartial()
      Return true if we get a partial formula
      Atom getLastAtom()
      Get the last atom of the current formula
      float[] getLength()  
      int getLine()
      Get the number of the current line
      java.lang.String[] getOptsArgs​(int nbArgs, int opts)
      Get the arguments ant the options of a command
      java.lang.String getOverArgument()  
      int getPos()
      Return the current position in the parsed string
      java.lang.String getStringFromCurrentPos()  
      boolean isArrayMode()
      Return a boolean indicating if the parser is used to parse an array or not
      boolean isAtLetter()
      Return a boolean indicating if the character @ is considered as a letter or not
      boolean isIgnoreWhiteSpace()
      Return a boolean indicating if the parser must ignore white spaces
      boolean isMathMode()
      Return a boolean indicating if the parser is in math mode
      boolean isValidCharacterInCommand​(char ch)
      Test the validity of a character in a command.
      boolean isValidName​(java.lang.String com)
      Test the validity of the name of a command.
      void makeAtLetter()
      Indicate if the character @ can be used in the command's name
      void makeAtOther()
      Indicate if the character @ can be used in the command's name
      void parse()
      Parse the input string
      void reset​(java.lang.String latex)
      Reset the parser with a new latex expression
      int rewind​(int n)
      Rewind the current parsed string
      void setArrayMode​(boolean arrayMode)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • isLoading

        protected static boolean isLoading
    • Constructor Detail

      • TeXParser

        public TeXParser​(java.lang.String parseString,
                         TeXFormula formula)
        Create a new TeXParser
        Parameters:
        parseString - the string to be parsed
        formula - the formula where to put the atoms
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(boolean isPartial,
                         java.lang.String parseString,
                         TeXFormula formula)
        Create a new TeXParser
        Parameters:
        isPartial - if true certains exceptions are not thrown
        parseString - the string to be parsed
        formula - the formula where to put the atoms
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(boolean isPartial,
                         java.lang.String parseString,
                         TeXFormula formula,
                         boolean firstpass)
        Create a new TeXParser with or without a first pass
        Parameters:
        isPartial - if true certains exceptions are not thrown
        parseString - the string to be parsed
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(java.lang.String parseString,
                         TeXFormula formula,
                         boolean firstpass)
        Create a new TeXParser with or without a first pass
        Parameters:
        parseString - the string to be parsed
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(boolean isPartial,
                         java.lang.String parseString,
                         ArrayOfAtoms aoa,
                         boolean firstpass)
        Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created.
        Parameters:
        isPartial - if true certains exceptions are not thrown
        parseString - the string to be parsed
        aoa - an ArrayOfAtoms where to put the elements
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(boolean isPartial,
                         java.lang.String parseString,
                         ArrayOfAtoms aoa,
                         boolean firstpass,
                         boolean space)
        Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created.
        Parameters:
        isPartial - if true certains exceptions are not thrown
        parseString - the string to be parsed
        aoa - an ArrayOfAtoms where to put the elements
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(java.lang.String parseString,
                         ArrayOfAtoms aoa,
                         boolean firstpass)
        Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created.
        Parameters:
        parseString - the string to be parsed
        aoa - an ArrayOfAtoms where to put the elements
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(boolean isPartial,
                         java.lang.String parseString,
                         TeXFormula formula,
                         boolean firstpass,
                         boolean space)
        Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command
        Parameters:
        isPartial - if true certains exceptions are not thrown
        parseString - the string to be parsed
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        space - a boolean to indicate if the parser must ignore or not the white space
        Throws:
        ParseException - if the string could not be parsed correctly
      • TeXParser

        public TeXParser​(java.lang.String parseString,
                         TeXFormula formula,
                         boolean firstpass,
                         boolean space)
        Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command
        Parameters:
        parseString - the string to be parsed
        firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
        space - a boolean to indicate if the parser must ignore or not the white space
        Throws:
        ParseException - if the string could not be parsed correctly
    • Method Detail

      • reset

        public void reset​(java.lang.String latex)
        Reset the parser with a new latex expression
      • getIsPartial

        public boolean getIsPartial()
        Return true if we get a partial formula
      • getLine

        public int getLine()
        Get the number of the current line
      • getCol

        public int getCol()
        Get the number of the current column
      • getLastAtom

        public Atom getLastAtom()
        Get the last atom of the current formula
      • getFormulaAtom

        public Atom getFormulaAtom()
        Get the atom represented by the current formula
      • addAtom

        public void addAtom​(Atom at)
        Put an atom in the current formula
      • makeAtLetter

        public void makeAtLetter()
        Indicate if the character @ can be used in the command's name
      • makeAtOther

        public void makeAtOther()
        Indicate if the character @ can be used in the command's name
      • isAtLetter

        public boolean isAtLetter()
        Return a boolean indicating if the character @ is considered as a letter or not
      • isArrayMode

        public boolean isArrayMode()
        Return a boolean indicating if the parser is used to parse an array or not
      • setArrayMode

        public void setArrayMode​(boolean arrayMode)
      • isIgnoreWhiteSpace

        public boolean isIgnoreWhiteSpace()
        Return a boolean indicating if the parser must ignore white spaces
      • isMathMode

        public boolean isMathMode()
        Return a boolean indicating if the parser is in math mode
      • getPos

        public int getPos()
        Return the current position in the parsed string
      • rewind

        public int rewind​(int n)
        Rewind the current parsed string
        Parameters:
        n - the number of character to be rewinded
        Returns:
        the new position in the parsed string
      • getStringFromCurrentPos

        public java.lang.String getStringFromCurrentPos()
      • finish

        public void finish()
      • addRow

        public void addRow()
                    throws ParseException
        Add a new row when the parser is in array mode
        Throws:
        ParseException - if the parser is not in array mode
      • parse

        public void parse()
                   throws ParseException
        Parse the input string
        Throws:
        ParseException - if an error is encountered during parsing
      • getDollarGroup

        public java.lang.String getDollarGroup​(char openclose)
                                        throws ParseException
        Get the contents between two delimiters
        Parameters:
        openclose - the opening and closing character (such $)
        Returns:
        the enclosed contents
        Throws:
        ParseException - if the contents are badly enclosed
      • getGroup

        public java.lang.String getGroup​(char open,
                                         char close)
                                  throws ParseException
        Get the contents between two delimiters
        Parameters:
        open - the opening character
        close - the closing character
        Returns:
        the enclosed contents
        Throws:
        ParseException - if the contents are badly enclosed
      • getGroup

        public java.lang.String getGroup​(java.lang.String open,
                                         java.lang.String close)
                                  throws ParseException
        Get the contents between two strings as in \begin{foo}...\end{foo}
        Parameters:
        open - the opening string
        close - the closing string
        Returns:
        the enclosed contents
        Throws:
        ParseException - if the contents are badly enclosed
      • getArgument

        public Atom getArgument()
                         throws ParseException
        Get the argument of a command in his atomic format
        Returns:
        the corresponding atom
        Throws:
        ParseException - if the argument is incorrect
      • convertCharacter

        public Atom convertCharacter​(char c,
                                     boolean oneChar)
                              throws ParseException
        Convert a character in the corresponding atom in using the file TeXFormulaSettings.xml for non-alphanumeric characters
        Parameters:
        c - the character to be converted
        Returns:
        the corresponding atom
        Throws:
        ParseException - if the character is unknown
      • getOptsArgs

        public java.lang.String[] getOptsArgs​(int nbArgs,
                                              int opts)
        Get the arguments ant the options of a command
        Parameters:
        nbArgs - the number of arguments of the command
        opts - must be 1 if the options are found before the first argument and must be 2 if they must be found before the second argument
        Returns:
        an array containing arguments and at the end the options are put
      • isValidName

        public final boolean isValidName​(java.lang.String com)
        Test the validity of the name of a command. It must contains only alpha characters and eventually a @ if makeAtletter activated
        Parameters:
        com - the command's name
        Returns:
        the validity of the name
      • isValidCharacterInCommand

        public final boolean isValidCharacterInCommand​(char ch)
        Test the validity of a character in a command. It must contains only alpha characters and eventually a @ if makeAtletter activated
        Parameters:
        com - the command's name
        Returns:
        the validity of the name