Class TeXParser

java.lang.Object
org.scilab.forge.jlatexmath.TeXParser

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

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

    Constructors
    Constructor
    Description
    TeXParser(boolean isPartial, String parseString, ArrayOfAtoms aoa, boolean firstpass)
    Create a new TeXParser in the context of an array.
    TeXParser(boolean isPartial, String parseString, ArrayOfAtoms aoa, boolean firstpass, boolean space)
    Create a new TeXParser in the context of an array.
    TeXParser(boolean isPartial, String parseString, TeXFormula formula)
    Create a new TeXParser
    TeXParser(boolean isPartial, String parseString, TeXFormula formula, boolean firstpass)
    Create a new TeXParser with or without a first pass
    TeXParser(boolean isPartial, 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(String parseString, ArrayOfAtoms aoa, boolean firstpass)
    Create a new TeXParser in the context of an array.
    TeXParser(String parseString, TeXFormula formula)
    Create a new TeXParser
    TeXParser(String parseString, TeXFormula formula, boolean firstpass)
    Create a new TeXParser with or without a first pass
    TeXParser(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

    Modifier and Type
    Method
    Description
    void
    Put an atom in the current formula
    void
    Add a new row when the parser is in array mode
    convertCharacter(char c, boolean oneChar)
    Convert a character in the corresponding atom in using the file TeXFormulaSettings.xml for non-alphanumeric characters
    void
     
    Get the argument of a command in his atomic format
    int
    Get the number of the current column
    getDollarGroup(char openclose)
    Get the contents between two delimiters
    Get the atom represented by the current formula
    getGroup(char open, char close)
    Get the contents between two delimiters
    getGroup(String open, String close)
    Get the contents between two strings as in \begin{foo}...\end{foo}
    boolean
    Return true if we get a partial formula
    Get the last atom of the current formula
    float[]
     
    int
    Get the number of the current line
    getOptsArgs(int nbArgs, int opts)
    Get the arguments ant the options of a command
     
    int
    Return the current position in the parsed string
     
    boolean
    Return a boolean indicating if the parser is used to parse an array or not
    boolean
    Return a boolean indicating if the character @ is considered as a letter or not
    boolean
    Return a boolean indicating if the parser must ignore white spaces
    boolean
    Return a boolean indicating if the parser is in math mode
    final boolean
    Test the validity of a character in a command.
    final boolean
    Test the validity of the name of a command.
    void
    Indicate if the character @ can be used in the command's name
    void
    Indicate if the character @ can be used in the command's name
    void
    Parse the input string
    void
    reset(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 Details

    • isLoading

      protected static boolean isLoading
  • Constructor Details

    • TeXParser

      public TeXParser(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, 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, 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(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, String parseString, ArrayOfAtoms aoa, boolean firstpass)
      Create a new TeXParser in the context of an array. When the parser meets a invalid input: '&' 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, String parseString, ArrayOfAtoms aoa, boolean firstpass, boolean space)
      Create a new TeXParser in the context of an array. When the parser meets a invalid input: '&' 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(String parseString, ArrayOfAtoms aoa, boolean firstpass)
      Create a new TeXParser in the context of an array. When the parser meets a invalid input: '&' 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, 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(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 Details

    • reset

      public void reset(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 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 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 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 String getGroup(String open, 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
    • getOverArgument

      public String getOverArgument() throws ParseException
      Throws:
      ParseException
    • getLength

      public float[] getLength() throws ParseException
      Throws:
      ParseException
    • 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 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(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