Full LaTeX parser in Java

LaTeX is a full programming language. Parsing it means executing the program.

While it seems to be simple in many of the common cases - \section etc. - it is by far not trivial. In fact, it should be turing complete. And some parts will even have a more or less different syntax. Take TIKZ for example - an excellent graph drawing library for LaTeX. It's syntax is somewhat like latex, but other parts are more that of modern programming languages. And a lot is like stylesheets.

However, you might be able to get away with supporting just part of the latex syntax. Have a look at what Texlipse does. It's in Java.


I would use JLaTeXMath:

"JLaTeXMath is the best Java library to display LaTeX code."


import org.scilab.forge.jlatexmath.TeXConstants;
import org.scilab.forge.jlatexmath.TeXFormula;

public class Example5 {

    public static void main(String[] args) {

        String latex = "\\begin{array}{|c|l|||r|c|}";
        latex += "\\hline";
        latex += "\\text{Matrix}&\\multicolumn{2}{|c|}{\\text{Multicolumns}}&\\text{Font sizes commands}\\cr";
        latex += "\\hline";
        latex += "\\begin{pmatrix}\\alpha_{11}&\\cdots&\\alpha_{1n}\\cr\\hdotsfor{3}\\cr\\alpha_{n1}&\\cdots&\\alpha_{nn}\\end{pmatrix}&\\Large \\text{Large Right}&\\small \\text{small Left}&\\tiny \\text{tiny Tiny}\\cr";
        latex += "\\hline";
        latex += "\\multicolumn{4}{|c|}{\\Huge \\text{Huge Multicolumns}}\\cr";
        latex += "\\hline";
        latex += "\\end{array}";

        TeXFormula formula = new TeXFormula(latex);
        formula.createPNG(TeXConstants.STYLE_DISPLAY, 20, "target/Example5.png", Color.white, Color.black);
    }
}

Source for TeXFormula: https://github.com/opencollab/jlatexmath/blob/7995ce52b2699c9a3a8428a94c1f3762cdcb0284/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXFormula.java#L244

Other solutions

  • SnuggleTeX - seems to have a good parser, too. See the calling at https://sourceforge.net/p/snuggletex/code/HEAD/tree/trunk/snuggletex-core/src/main/java/uk/ac/ed/ph/snuggletex/samples/MinimalExample.java.
  • JavaTex: https://sourceforge.net/projects/javatex/files/javatex/V0.2/. Seems to be a complete LaTeX engine.
  • JavaTeX from CTAN - from 1998, but might still perform well.

(partially based on https://tex.stackexchange.com/q/41609/9075)

Tags:

Java

Latex

Tex