Diskuze: používání JEuclid

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Stačí použít JMathComponent.
Příklad:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import net.sourceforge.jeuclid.swing.JMathComponent;
public class Demo {
public static void main(String[] args) {
final JMathComponent component = new JMathComponent();
component.setFontSize(40);
JFrame frame = new JFrame("JEuclid Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(component);
frame.setMinimumSize(new Dimension(500, 400));
frame.setLocationRelativeTo(null);
frame.setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
String content = "<?xml version=\"1.0\"?>\r\n" +
"<!DOCTYPE math PUBLIC \"-//W3C//DTD MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd\">\r\n" +
"<math mode=\"display\">\r\n" +
" <mrow>\r\n" +
" <munderover>\r\n" +
" <mo>∫</mo>\r\n" +
" <mn>1</mn>\r\n" +
" <mi>x</mi>\r\n" +
" </munderover>\r\n" +
" <mfrac>\r\n" +
" <mi>dt</mi>\r\n" +
" <mi>t</mi>\r\n" +
" </mfrac>\r\n" +
" </mrow>\r\n" +
"</math>";
component.setContent(content);
}
});
}
}
děkuju za rychlou pomoc, ale při spuštění mi hodí tuto chybu
run:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sourceforge.jeuclid.swing.JMathComponent.<clinit>(JMathComponent.java:75)
at pokus.Pokus.main(Pokus.java:19)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 2 more
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
jeuclid-core.3.1.9.jar mám mezi knihovnami pro kompilaci v projektu v NetBeans. udělal jsem někde chybu?
Zkušenosti s JEuclid nemám žádné a přiznám se, že MathML jsem vůbec
neznal, takže jsem to musel vyzkoušet
Souhlasím, že rychlost není nic moc, ale s jinými knihovnami zkušenosti nemám.
Je pravda, že APIdocs často nestačí. Pak už zbývá jen metoda pokus-omyl a prohlížení zdrojáků, případně Google, ale o tom jsi už psal, že se ti nepodařilo nic rozumného najít...
no po hraní si s MathML a LatexMath, sbírání kódu a informací po netu jsem si upravil cizí kód:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTextArea;
import net.sourceforge.jeuclid.swing.JMathComponent;
public class MathML extends JFrame implements ActionListener {
private JTextArea latexSource;
private JButton btnRender;
private JPanel drawingArea;
private JSpinner spinner;
public MathML() {
this.setTitle("MathML Example");
this.setSize(500, 500);
Container content = this.getContentPane();
content.setLayout(new GridLayout(2, 1));
this.latexSource = new JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
JPanel editorArea = new JPanel();
editorArea.setLayout(new BorderLayout());
editorArea.add(new JScrollPane(this.latexSource),BorderLayout.CENTER);
editorArea.add(btnRender = new JButton("Render"),BorderLayout.SOUTH);
editorArea.add(spinner = new JSpinner(),BorderLayout.NORTH);
spinner.setValue(18);
content.add(editorArea);
content.add(this.drawingArea = new JPanel());
this.btnRender.addActionListener(this);
String retezec = "<?xml version=\"1.0\"?>\r\n" +
"<!DOCTYPE math PUBLIC \"-//W3C//DTD MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd\">\r\n" +
"<math mode=\"display\">\r\n" +
" <mrow>\r\n" +
" <munderover>\r\n" +
" <mo>∫</mo>\r\n" +
" <mn>1</mn>\r\n" +
" <mi>x</mi>\r\n" +
" </munderover>\r\n" +
" <mfrac>\r\n" +
" <mi>dt</mi>\r\n" +
" <mi>t</mi>\r\n" +
" </mfrac>\r\n" +
" </mrow>\r\n" +
"</math>";
this.latexSource.setText(retezec);
}
public void render() {
// get the text
String latex = this.latexSource.getText();
// create a formula
JMathComponent formula = new JMathComponent();
formula.setFontSize((int)this.spinner.getValue());
this.drawingArea.removeAll();
this.drawingArea.add(formula);
formula.setContent(latex);
}
public static void main(String[] args) {
MathML frame = new MathML();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if( e.getSource()==this.btnRender ) {
render();
}
}
}
první render je celkem pomalý (až 5sec),ale další je již rychlý. Oproti LatexMath (zatim jsem moc nezkoumal vykreslování) je výhoda vykreslení s JEculid ta, že po "resize" rámečku nezmizi renderovaný obsah. Ale jak říkám, JLatexMath jsem nezkoumal blíže.
src:
http://forge.scilab.org/index.php/p/jlatexmath/
Zobrazeno 9 zpráv z 9.