Помощь с JEuclid на Java

#java #math #tex

#java #математика #текс

Вопрос:

Я должен отобразить некоторые математические уравнения в приложении Java. Я скачал JEuclid, но понятия не имею, как им пользоваться, и, похоже, не могу найти ни одного хорошего руководства. Я должен отображать дроби в виде

(P R * sqrt(D))/Q

На данный момент я использую jTextArea , и результат в основном

P: число, R: число, D: число, Q: число

Как можно представить эту дробь с помощью JEuclid? В latex я бы сделал

 frac{...}{...}
  

но как это сделать с JEuclid?

Заранее большое вам спасибо!

Ответ №1:

Вот Java-программа для преобразования MathML в image:

 import java.io.File;
import java.io.IOException;

import net.sourceforge.jeuclid.MutableLayoutContext;
import net.sourceforge.jeuclid.context.LayoutContextImpl;
import net.sourceforge.jeuclid.context.Parameter;
import net.sourceforge.jeuclid.converter.Converter;

public class MathMLToImage{
    public static void main(String[] args) throws IOException {
        Converter converter = Converter.getInstance();
        File inputFile = new File("D:\TEMP\mathml.xml");
        File outputFile = new File("D:\TEMP\image.jpg"); 
        //params to mention the size of image
        MutableLayoutContext params = new LayoutContextImpl(
                LayoutContextImpl.getDefaultLayoutContext());
        params.setParameter(Parameter.MATHSIZE, 50f);

        converter.convert(inputFile, outputFile , "image/jpeg", params);
    }

}
  

Вы можете использовать этот вывод изображения для отображения в вашем приложении.

Ответ №2:

Как я понимаю (из чтения веб-сайта), JEuclid — это программа, которая преобразует существующий MathML в графику. Таким образом, вам придется записать свои входные данные в MathML либо в текстовой форме, либо с помощью некоторого XML API, а затем передать это в JEuclid.

Для вашего примера это будет выглядеть примерно так (адаптировано по примеру в Википедии):

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mrow>
    <mi>x</mi>
    <mo>=</mo>
    <mfrac>
      <mrow>
        <mi>P</mi>
        <mo> </mo>
        <mn>R</mn>
        <mo>⁢<!-- amp;InvisibleTimes; --></mo>
        <msqrt>
          <mi>Q</mi>
        </msqrt>
      </mrow>
      <mrow>
        <mn>Q</mn>
      </mrow>
    </mfrac>
  </mrow>
</math>
  

Вот скриншот этого документа MathML в JEuclids MathViewer:

скриншот

Комментарии:

1. JEuclid также может напрямую отображать MathML в виде изображения, не требуя промежуточного файла изображения.