首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在javafx-label中显示LaTeX中给出的公式或其MathML转换?

如何在javafx-label中显示LaTeX中给出的公式或其MathML转换?
EN

Stack Overflow用户
提问于 2018-09-20 00:49:40
回答 1查看 0关注 0票数 0

想在javafx-labels(以及其他标记的控件(最坏情况:图像))中显示数学公式

以下示例显示了确切的设置。该公式以LaTeX代码和MathML(由SnuggleTeX转换)给出。

为了让标签通过呈现LaTeX或MathML代码来显示公式,任何人都可以帮助进展吗?

代码语言:javascript
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;

public class TestRM extends Application{    
    private Stage window;
    private Scene scene;    
    private String string1 = new String("\\frac{-b \\pm \\sqrt{b^2-4ac {2a}");
    private String string2 = new String("<math xmlns=\"http://www.w3.or/1998/Math/MathML\" display=\"block\">\r\n" + 
        "   <semantics>\r\n" + 
        "      <mfrac>\r\n" + 
        "         <mrow>\r\n" + 
        "            <mo>-</mo>\r\n" + 
        "            <mi>b</mi>\r\n" + 
        "            <mo>&pm;</mo>\r\n" + 
        "            <msqrt>\r\n" + 
        "               <mrow>\r\n" + 
        "                  <msup>\r\n" + 
        "                     <mi>b</mi>\r\n" + 
        "                     <mn>2</mn>\r\n" + 
        "                  </msup>\r\n" + 
        "                  <mo>-</mo>\r\n" + 
        "                  <mn>4</mn>\r\n" + 
        "                  <mi>a</mi>\r\n" + 
        "                  <mi>c</mi>\r\n" + 
        "               </mrow>\r\n" + 
        "            </msqrt>\r\n" + 
        "         </mrow>\r\n" + 
        "         <mrow>\r\n" + 
        "            <mn>2</mn>\r\n" + 
        "            <mi>a</mi>\r\n" + 
        "         </mrow>\r\n" + 
        "      </mfrac>\r\n" + 
        "      <annotation encoding=\"SnuggleTeX\">$$ \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a} $$</annotation>\r\n" + 
        "   </semantics>\r\n" + 
        "</math>");
    private Label lb1 = new Label(string1);
    private Label lb2 = new Label(string2); 
    VBox vbox = new VBox(lb1,lb2);

    public static void main(String[] args) {
        launch(args);
    }
    public void start(Stage primaryStage) {
        window = primaryStage;
        scene = new Scene(vbox, 300, 700);
        window.setScene(scene);
        window.show();        
    }
}

@ScientificWare:

在此处输入图像描述
在此处输入图像描述
EN

回答 1

Stack Overflow用户

发布于 2018-09-20 09:54:34

以下代码可以帮助您完成任务,如果只想显示MathML,只需使用WebView控件即可。

如果你想编辑它;-) ...你可以使用HTMLEditor控件。请注意,MathML编辑无法正常工作

如果你有Java,C ++或JavaScript技能,那么你也可以尝试改进它,如果你有兴趣建立一个社区

JavaFX / OpenJFX自2011年以来一直支持MathML。但是一个小错误打破了它。

由于用户兴趣或反馈很少,这个问题在2018年之前对维护者来说是低优先级的。但是,感谢有关JavaFX的新Oracle路线图,OpenJFX团队为我提供了一些帮助,并提供了一些帮助来集成我的补

现在,似乎Oracle将把JavaFX交给Gluon,所以我鼓励你给他们反馈,以表明你对MathML支持或数学编辑的兴趣,并保留MathML支持。

在此处输入图像描述
在此处输入图像描述
代码语言:javascript
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;

public class TestRM extends Application {

    private Stage window;
    private Scene scene;


    private WebView webView = new WebView();

    String javaversion = "Version de Java.. : " + System.getProperty("java.runtime.version");
    String javafxversion = "Version de JavaFX : " + System.getProperty("javafx.runtime.version");
    String osinfo = "OS .............. : " + System.getProperty("os.name");
    String osarch = "CPU ............. : " + System.getProperty("os.arch");
    String agent = "User Agent ...... : " + webView.getEngine().getUserAgent();

    private String string2 = new String(""
            + "<p>"
            + "<math xmlns=\"http://www.w3.or/1998/Math/MathML\" display=\"block\">"
            + "   <semantics>"
            + "      <mfrac>"
            + "         <mrow>"
            + "            <mo>-</mo>"
            + "            <mi>b</mi>"
            + "            <mo>&pm;</mo>"
            + "            <msqrt>"
            + "               <mrow>"
            + "                  <msup>"
            + "                     <mi>b</mi>"
            + "                     <mn>2</mn>"
            + "                  </msup>"
            + "                  <mo>-</mo>"
            + "                  <mn>4</mn>"
            + "                  <mi>a</mi>"
            + "                  <mi>c</mi>"
            + "               </mrow>"
            + "            </msqrt>"
            + "         </mrow>"
            + "         <mrow>"
            + "            <mn>2</mn>"
            + "            <mi>a</mi>"
            + "         </mrow>"
            + "      </mfrac>"
            + "      <annotation encoding=\"SnuggleTeX\">$$ \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a} $$</annotation>"
            + "   </semantics>"
            + "</math>"
            + "</p>"
            + "<p>" + javafxversion + "</p>"
            + "<p>" + javaversion + "</p>"
            + "<p>" + osinfo + "</p>"
            + "<p>" + osarch + "</p>"
            + "<p>" + agent + "</p>");

    VBox vbox = new VBox(webView);

    public static void main(String[] args) {
        launch(args);
    }

    public void start(Stage primaryStage) {
        webView.getEngine().loadContent(string2);
        window = primaryStage;
        scene = new Scene(vbox, 400, 300);
        window.setScene(scene);
        window.show();
    }
}

HTMLEditor是基于WebView,只添加一个工具栏WebView,适用于许多Web浏览器,而WebView“只是”一个WebKit端口。

代码语言:javascript
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;

public class TestRM extends Application {

    private Stage window;
    private Scene scene;


    private WebView webView = new WebView();

    String javaversion = "Version de Java.. : " + System.getProperty("java.runtime.version");
    String javafxversion = "Version de JavaFX : " + System.getProperty("javafx.runtime.version");
    String osinfo = "OS .............. : " + System.getProperty("os.name");
    String osarch = "CPU ............. : " + System.getProperty("os.arch");
    String agent = "User Agent ...... : " + webView.getEngine().getUserAgent();

    private String string2 = new String(""
            + "<html>"
            + "<head>"
            + "<title>TestRM</title>"
            + "</head>"
            + "<body>"
            + "<p contenteditable=\"true\">"
            + "<math xmlns=\"http://www.w3.or/1998/Math/MathML\" display=\"block\">"
            + "   <semantics>"
            + "      <mfrac>"
            + "         <mrow>"
            + "            <mo>-</mo>"
            + "            <mi>b</mi>"
            + "            <mo>&pm;</mo>"
            + "            <msqrt>"
            + "               <mrow>"
            + "                  <msup>"
            + "                     <mi>b</mi>"
            + "                     <mn>2</mn>"
            + "                  </msup>"
            + "                  <mo>-</mo>"
            + "                  <mn>4</mn>"
            + "                  <mi>a</mi>"
            + "                  <mi>c</mi>"
            + "               </mrow>"
            + "            </msqrt>"
            + "         </mrow>"
            + "         <mrow>"
            + "            <mn>2</mn>"
            + "            <mi>a</mi>"
            + "         </mrow>"
            + "      </mfrac>"
            + "      <annotation encoding=\"SnuggleTeX\">$$ \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a} $$</annotation>"
            + "   </semantics>"
            + "</math>"
            + "</p>"
            + "<p>" + javafxversion + "</p>"
            + "<p>" + javaversion + "</p>"
            + "<p>" + osinfo + "</p>"
            + "<p>" + osarch + "</p>"
            + "<p>" + agent + "</p>")
            + "</body>"
            + "</html> ";

    VBox vbox = new VBox(webView);

    public static void main(String[] args) {
        launch(args);
    }

    public void start(Stage primaryStage) {
        webView.getEngine().loadContent(string2);
        window = primaryStage;
        scene = new Scene(vbox, 400, 300);
        window.setScene(scene);
        window.show();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档