问题
I've written small Java application to create printable flashcards for my Maths revision.
At the moment, I'm using JLaTeXMath to generate the images for each side from LaTeX.
The only problem is, that JLaTeXMath seems to be limited to LaTeX formula. I want to use the same program to create flashcards for other subjects such as Biology, where the questions and answers will be text based (rather than equation based) and LaTeX formula's aren't suitable for this.
Are there any Java libraries that can parse LaTeX? Or is there a better way of doing this?
回答1:
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.
回答2:
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)
来源:https://stackoverflow.com/questions/13777558/full-latex-parser-in-java