【问题标题】:Full LaTeX parser in Java [closed]Java中的完整LaTeX解析器[关闭]
【发布时间】:2012-11-26 11:39:14
【问题描述】:

我写了small Java application 来为我的数学复习创建可打印的抽认卡。

目前,我正在使用 JLaTeXMath 从 LaTeX 生成每一面的图像。

唯一的问题是,JLaTeXMath 似乎仅限于 LaTeX 公式。我想使用相同的程序为生物学等其他科目创建抽认卡,其中问题和答案将基于文本(而不是基于方程),而 LaTeX 公式不适合此。

有没有可以解析 LaTeX 的 Java 库? 或者有更好的方法吗?

【问题讨论】:

  • LaTeX 是一个庞大的库,我敢打赌你可以从命令行调用它(也可以使用 Java)。

标签: java latex tex


【解决方案1】:

LaTeX 是一种完整的编程语言。解析它意味着执行程序。

虽然在许多常见情况下似乎很简单 - \section 等 - 但它远非微不足道。事实上,它应该是图灵完备的。有些部分甚至会有或多或少不同的语法。以 TIKZ 为例——一个优秀的 LaTeX 绘图库。它的语法有点像乳胶,但其他部分更像是现代编程语言。很多都类似于样式表。

但是,您也许可以只支持部分乳胶语法。看看Texlipse 做了什么。它是用 Java 编写的。

【讨论】:

  • 我明白了,所以也许我最好用 LATEX 编写我的应用程序... 是否可以从 LATEX 读取/写入文件。或者我可以使用 Java 创建 .tex 文件,然后运行它们来创建输出。你觉得哪个最好?
  • 使用latex作为仅输出格式然后使用pdflatex生成PDF文件并没有错。必须有成千上万的工具可以做到这一点。
  • 我确实想知道是否有人会纠正我!感谢您的编辑!
【解决方案2】:

我会使用JLaTeXMath:

“JLaTeXMath 是显示 LaTeX 代码的最佳 Java 库。”


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);
    }
}

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

其他解决方案

(部分基于https://tex.stackexchange.com/q/41609/9075)

【讨论】:

    猜你喜欢
    • 2011-06-19
    • 2023-03-26
    • 2011-03-30
    • 2012-07-21
    • 2011-07-25
    • 2011-03-15
    • 1970-01-01
    • 2010-10-14
    • 2014-07-15
    相关资源
    最近更新 更多