如何使用jlatextmath在导出的svg图像中保留变量名?

问题描述

我正在使用jlatexmath数学将公式转换为SVG图像。我需要在导出的svg图像中保留变量名称。我已经玩过fontAsShapes参数。输出结果很差:不是数学公式。 如何在输出svg图像中保留变量名?现在,所有变量都在svg图像上绘制(仅坐标)。

是否可以绘制公式并保留可变词?

我稍后将这些词用于超链接。

下面是代码:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import javax.swing.JLabel;

import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.batik.svggen.SVGGeneratorContext;
import org.apache.batik.svggen.SVGGraphics2D;
import org.scilab.forge.jlatexmath.DefaultTeXFont;
import org.scilab.forge.jlatexmath.TeXConstants;
import org.scilab.forge.jlatexmath.TeXFormula;
import org.scilab.forge.jlatexmath.TeXIcon;
import org.scilab.forge.jlatexmath.cyrillic.CyrillicRegistration;
import org.scilab.forge.jlatexmath.greek.GreekRegistration;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;

public class Main {

    public static void main(final String args[]) throws IOException {
        toSVG("End_fD = (Tos_f/2)*(1/60)*(Tos_f)","Example.svg",true);
        System.out.println("done");
    }

    public static void toSVG(final String latex,final String file,final boolean fontAsShapes) throws IOException {
        DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation();
        String svgNS = "http://www.w3.org/2000/svg";
        Document document = domImpl.createDocument(svgNS,"svg",null);
        SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(document);

        SVGGraphics2D g2 = new SVGGraphics2D(ctx,fontAsShapes);

        DefaultTeXFont.registerAlphabet(new CyrillicRegistration());
        DefaultTeXFont.registerAlphabet(new GreekRegistration());

        TeXFormula formula = new TeXFormula(latex);
        TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY,20);
        icon.setInsets(new Insets(5,5,5));
        g2.setSVGCanvasSize(new Dimension(icon.getIconWidth(),icon.getIconHeight()));
        g2.setColor(Color.white);
        g2.fillRect(0,icon.getIconWidth(),icon.getIconHeight());

        JLabel jl = new JLabel();
        jl.setForeground(new Color(0,0));
        icon.paintIcon(jl,g2,0);

        boolean useCSS = true;
        FileOutputStream svgs = new FileOutputStream("target/" + file);
        Writer out = new OutputStreamWriter(svgs,"UTF-8");
        g2.stream(out);
        svgs.flush();
        svgs.close();
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...