libjlatexmath-java-1.0.3/0000755000175000017500000000000012275735566016166 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/MANIFEST.MF0000644000175000017500000001044712275735442017617 0ustar sylvestresylvestre Name: org/scilab/forge/jlatexmath/fonts/maths/jlm_cmbsy10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/base/jlm_cmex10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/base/jlm_cmmi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmti10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmbxti10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/base/jlm_cmmib10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_cmr10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmss10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmssi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmssbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/maths/jlm_cmsy10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmtt10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/maths/optional/jlm_dsrom10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/euler/jlm_eufb10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/euler/jlm_eufm10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/maths/jlm_msam10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/maths/jlm_msbm10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/maths/jlm_rsfs10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/maths/jlm_stmary10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnr10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnti10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wntt10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnss10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbxti10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbipg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmripg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmrpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsbpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsropg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsrpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fctrpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmr10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmbi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmss10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmsi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmsbi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmsb10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/fonts/latin/jlm_jlmtt10.ttf Content-Type: application/x-fontlibjlatexmath-java-1.0.3/build.xml0000644000175000017500000003031512275735442020002 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/README0000644000175000017500000000101212275735442017031 0ustar sylvestresylvestreTo build the jlatexmath library just type ant... The default task is "buildJar", the others are: - source; - plugin; - embedded; - src-all; - plugin-src; - clean; - minimal (for GeoGebra or web applications), dist/jlatexmath-minimal.zip will be created For the moment, the doc is very poor ... It will come in the future ... But some examples are provided to show how to use easily the library. Have fun and if you meet any problem, don't hesitate to write at : calixte.denizet@scilab-enterprises.com libjlatexmath-java-1.0.3/LICENSE0000644000175000017500000000352512275735442017171 0ustar sylvestresylvestreJLaTeXMath Library - Displays LaTeX commands JLateXMath is an fork of JMathTeX with a lot of modifications to support many more LaTeX commands, drop of the jdom dependency and easy evolution capabilities. Copyright (C) 2009-2011 DENIZET Calixte Copyright (C) Kris Coolsaet Copyright (C) Nico Van Cleemput Copyright (C) Kurt Vermeulen Copyright 2004-2007 Universiteit Gent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. The archive contains several fonts : 1) the fonts eufb10.ttf, eufm10.ttf, msam10.ttf and msbm10.ttf are under OFL (Open Font License); 2) the font dsrom10.ttf is under a free license; 3) the font stmary10.ttf and rsfs10.ttf are in PD (Public Domain); 4) the fonts cmbsy10.ttf, cmbx10.ttf, cmbxti10.ttf, cmex10.ttf, cmmi10.ttf, cmr10.ttf, cmss10.ttf, cmssbx10.ttf, cmsy10.ttf and cmtt10.ttf are under Knuth License. 5) the greek fonts fcmbipg.ttf, fcmripg.tff, fcmrpg.ttf, fcsropg.ttf, fcmbpg.ttf, fcsbpg.ttf, fctrpg.ttf, fcsrpg.ttf are under GNU GPL version 2. 6) the cyrillic fonts wnbx10.ttf, wnss10.ttf, wnti10.ttf, wnr10.ttf, wnssi10.ttf, wnbxti10.ttf, wnssbx10.ttf, wntt10.ttf are under Knuth License. You can find a copy of these licenses in org/scilab/forge/jlatexmath/fonts/licences.libjlatexmath-java-1.0.3/examples/0000755000175000017500000000000012275735442017775 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/0000755000175000017500000000000012275735442020546 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/build.xml0000644000175000017500000000454112275735442022373 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/examples/GIWS/README0000644000175000017500000000131112275735442021422 0ustar sylvestresylvestreIt is a simple example to show how to use JLaTeXMath from C++ in using Giws wrapper. To run it: i) make ii) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server iii) ./latex "\int_0^{+\infty} e^{-x^2}\mathrm{d}x = \frac\sqrt{\pi}2 \text{ and } \sum_{n=0}^{\infty}\frac{1}{n^2}=\frac{\pi^2}6" foo.png Depending of your configuration, you probably need to modify build.xml, Makefile and latex.cpp to adapt the different paths. On Windows : - you must have a environment variable JAVA_HOME to your JDK folder ( ex : C:\Program Files\java\jdk ) - ant must be in you PATH - jvm.dll must be in you PATH ( Ex : C:\Program Files\Java\jre6\bin\server ) Calixte & Sylvestre. libjlatexmath-java-1.0.3/examples/GIWS/LaTeXGenerator.giws.xml0000644000175000017500000000045112275735442025064 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/examples/GIWS/src/0000755000175000017500000000000012275735442021335 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/src/org/0000755000175000017500000000000012275735442022124 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/src/org/scilab/0000755000175000017500000000000012275735442023361 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/src/org/scilab/forge/0000755000175000017500000000000012275735442024463 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/src/org/scilab/forge/example/0000755000175000017500000000000012275735442026116 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/src/org/scilab/forge/example/giws/0000755000175000017500000000000012275735442027067 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/GIWS/src/org/scilab/forge/example/giws/LaTeXGenerator.java0000644000175000017500000000454512275735442032566 0ustar sylvestresylvestre/* * JLaTeXMath ( http://forge.scilab.org/jlatexmath ) - This file is part of JLaTeXMath * * Copyright (C) 2012 - Calixte DENIZET & Sylvestre LEDRU * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ package org.scilab.forge.example.giws; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.swing.JLabel; import javax.imageio.ImageIO; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; public class LaTeXGenerator { public LaTeXGenerator() { } /** * Generate a PNG with the given path and LaTeX formula * @param formula the formula to compile * @param path the image path */ public void generate(String formula, String path) throws IOException { TeXFormula tf = new TeXFormula(formula); TeXIcon ti = tf.createTeXIcon(TeXConstants.STYLE_DISPLAY, 40); BufferedImage bimg = new BufferedImage(ti.getIconWidth(), ti.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = bimg.createGraphics(); g2d.setColor(Color.white); g2d.fillRect(0,0,ti.getIconWidth(),ti.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); ti.paintIcon(jl, g2d, 0, 0); File out = new File(path); ImageIO.write(bimg, "png", out); } } libjlatexmath-java-1.0.3/examples/Export/0000755000175000017500000000000012275735442021256 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/Export/build.xml0000644000175000017500000000434712275735442023107 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/examples/Export/Example5.java0000644000175000017500000000547312275735442023612 0ustar sylvestresylvestre/* Example5.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ 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}"; try { Convert.toSVG(latex, "Example5.svg", false); Convert.toSVG(latex, "Example5_shaped.svg", true); Convert.SVGTo("Example5.svg", "Example5.pdf", Convert.PDF); Convert.SVGTo("Example5_shaped.svg", "Example5_shaped.pdf", Convert.PDF); Convert.SVGTo("Example5.svg", "Example5.ps", Convert.PS); Convert.SVGTo("Example5.svg", "Example5.eps", Convert.EPS); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Export/README0000644000175000017500000000070312275735442022136 0ustar sylvestresylvestreIn using fop 0.95 it's possible to generate PDF, PS or EPS via a SVG file. The glyphs can be converted into path to avoid the embedding of the fonts and make readable SVG files for the web or other usage. To compile check you have put in the classpath or in a directory you can precise in build.xml (with the variable myclasspath), the following jars : fop.jar avalon-framework.jar xml-apis-ext.jar commons-io.jar commons-logging.jar libjlatexmath-java-1.0.3/examples/Export/Main.java0000644000175000017500000000276112275735442023013 0ustar sylvestresylvestre/* Main.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ public class Main { public static void main(String[] args) { Example1.main(new String[0]); Example2.main(new String[0]); Example3.main(new String[0]); Example4.main(new String[0]); Example5.main(new String[0]); } }libjlatexmath-java-1.0.3/examples/Export/Convert.java0000644000175000017500000000654612275735442023554 0ustar sylvestresylvestreimport java.awt.Insets; import java.awt.Color; import java.awt.Dimension; import java.io.FileOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.DefaultTeXFont; import org.scilab.forge.jlatexmath.cyrillic.CyrillicRegistration; import org.scilab.forge.jlatexmath.greek.GreekRegistration; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.TranscoderInput; import org.apache.fop.svg.AbstractFOPTranscoder; import org.apache.fop.svg.PDFTranscoder; import org.apache.fop.render.ps.PSTranscoder; import org.apache.fop.render.ps.EPSTranscoder; import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.batik.svggen.SVGGeneratorContext; import org.apache.batik.svggen.SVGGraphics2D; import org.apache.batik.dom.GenericDOMImplementation; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; public class Convert { public static final int PDF = 0; public static final int PS = 1; public static final int EPS = 2; public static void toSVG(String latex, String file, boolean fontAsShapes) throws IOException { DOMImplementation domImpl = GenericDOMImplementation.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, 5)); g2.setSVGCanvasSize(new Dimension(icon.getIconWidth(),icon.getIconHeight())); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); boolean useCSS = true; FileOutputStream svgs = new FileOutputStream(file); Writer out = new OutputStreamWriter(svgs, "UTF-8"); g2.stream(out, useCSS); svgs.flush(); svgs.close(); } public static void SVGTo(String inSVG, String out, int type) { AbstractFOPTranscoder trans; switch (type) { case PDF : trans = new PDFTranscoder(); break; case PS : trans = new PSTranscoder(); break; case EPS : trans = new EPSTranscoder(); break; default : trans = null; } try { TranscoderInput input = new TranscoderInput(new FileInputStream(inSVG)); OutputStream os = new FileOutputStream(out); TranscoderOutput output = new TranscoderOutput(os); trans.transcode(input, output); os.flush(); os.close(); } catch (Exception e) { System.out.println("Problem when exporting " + inSVG + " to " + out + "!\n" + e.toString()); } } } libjlatexmath-java-1.0.3/examples/Export/Example4.java0000644000175000017500000000457112275735442023607 0ustar sylvestresylvestre/* Example4.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example4 { public static void main(String[] args) { String latex = "\\mbox{An image from the \\LaTeX3 project }\\includegraphics{lion.png}"; try { Convert.toSVG(latex, "Example4.svg", false); Convert.toSVG(latex, "Example4_shaped.svg", true); Convert.SVGTo("Example4.svg", "Example4.pdf", Convert.PDF); Convert.SVGTo("Example4_shaped.svg", "Example4_shaped.pdf", Convert.PDF); Convert.SVGTo("Example4.svg", "Example4.ps", Convert.PS); Convert.SVGTo("Example4.svg", "Example4.eps", Convert.EPS); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Export/Example1.java0000644000175000017500000000726612275735442023610 0ustar sylvestresylvestre/* Example1.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example1 { public static void main(String[] args) { String latex = "\\begin{array}{lr}\\mbox{\\textcolor{Blue}{Russian}}&\\mbox{\\textcolor{Melon}{Greek}}\\\\"; latex += "\\mbox{" + "привет мир".toUpperCase() + "}&\\mbox{" + "γειά κόσμο".toUpperCase() + "}\\\\"; latex += "\\mbox{привет мир}&\\mbox{γειά κόσμο}\\\\"; latex += "\\mathbf{\\mbox{привет мир}}&\\mathbf{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathit{\\mbox{привет мир}}&\\mathit{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathsf{\\mbox{привет мир}}&\\mathsf{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathtt{\\mbox{привет мир}}&\\mathtt{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathbf{\\mathit{\\mbox{привет мир}}}&\\mathbf{\\mathit{\\mbox{γειά κόσμο}}}\\\\"; latex += "\\mathbf{\\mathsf{\\mbox{привет мир}}}&\\mathbf{\\mathsf{\\mbox{γειά κόσμο}}}\\\\"; latex += "\\mathsf{\\mathit{\\mbox{привет мир}}}&\\mathsf{\\mathit{\\mbox{γειά κόσμο}}}\\\\"; latex += "&\\\\"; latex += "\\mbox{\\textcolor{Salmon}{Bulgarian}}&\\mbox{\\textcolor{Tan}{Serbian}}\\\\"; latex += "\\mbox{здравей свят}&\\mbox{Хелло уорлд}\\\\"; latex += "&\\\\"; latex += "\\mbox{\\textcolor{Turquoise}{Bielorussian}}&\\mbox{\\textcolor{LimeGreen}{Ukrainian}}\\\\"; latex += "\\mbox{прывітаньне Свет}&\\mbox{привіт світ}\\\\"; latex += "\\end{array}"; try { Convert.toSVG(latex, "Example1.svg", false); Convert.toSVG(latex, "Example1_shaped.svg", true); Convert.SVGTo("Example1.svg", "Example1.pdf", Convert.PDF); Convert.SVGTo("Example1_shaped.svg", "Example1_shaped.pdf", Convert.PDF); Convert.SVGTo("Example1.svg", "Example1.ps", Convert.PS); Convert.SVGTo("Example1.svg", "Example1.eps", Convert.EPS); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Export/Example3.java0000644000175000017500000001173312275735442023604 0ustar sylvestresylvestre/* Example3.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example3 { public static void main(String[] args) { String latex = "\\definecolor{gris}{gray}{0.9}"; latex += "\\definecolor{bleu}{rgb}{0,0,1}\\newcommand{\\pa}{\\left|}"; latex += "\\begin{array}{c}"; latex += "\\JLaTeXMath\\\\"; latex += "\\begin{split}"; latex += " &Тепловой\\ поток\\ \\mathrm{Тепловой\\ поток}\\ \\mathtt{Тепловой\\ поток}\\\\"; latex += " &\\boldsymbol{\\mathrm{Тепловой\\ поток}}\\ \\mathsf{Тепловой\\ поток}\\\\"; latex += "|I_2| &= \\pa\\int_0^T\\psi(t)\\left\\{ u(a,t)-\\int_{\\gamma(t)}^a \\frac{d\\theta}{k} (\\theta,t) \\int_a^\\theta c(\\xi) u_t (\\xi,t)\\,d\\xi\\right\\}dt\\right|\\\\"; latex += "&\\le C_6 \\Bigg|\\pa f \\int_\\Omega \\pa\\widetilde{S}^{-1,0}_{a,-} W_2(\\Omega, \\Gamma_1)\\right|\\ \\right|\\left| |u|\\overset{\\circ}{\\to} W_2^{\\widetilde{A}}(\\Omega;\\Gamma_r,T)\\right|\\Bigg|\\\\"; latex += "&\\\\"; latex += "&\\textcolor{magenta}{\\mathrm{Produit\\ avec\\ Java\\ et\\ \\LaTeX\\ par\\ }\\mathscr{C}\\mathcal{A}\\mathfrak{L}\\mathbf{I}\\mathtt{X}\\mathbb{T}\\mathsf{E}}\\\\"; latex += "&\\begin{pmatrix}\\alpha&\\beta&\\gamma&\\delta\\\\\\aleph&\\beth&\\gimel&\\daleth\\\\\\mathfrak{A}&\\mathfrak{B}&\\mathfrak{C}&\\mathfrak{D}\\\\\\boldsymbol{\\mathfrak{a}}&\\boldsymbol{\\mathfrak{b}}&\\boldsymbol{\\mathfrak{c}}&\\boldsymbol{\\mathfrak{d}}\\end{pmatrix}\\quad{(a+b)}^{\\frac{n}{2}}=\\sqrt{\\sum_{k=0}^n\\tbinom{n}{k}a^kb^{n-k}}\\quad \\Biggl(\\biggl(\\Bigl(\\bigl(()\\bigr)\\Bigr)\\biggr)\\Biggr)\\\\"; latex += "&\\forall\\varepsilon\\in\\mathbb{R}_+^*\\ \\exists\\eta>0\\ |x-x_0|\\leq\\eta\\Longrightarrow|f(x)-f(x_0)|\\leq\\varepsilon\\\\"; latex += "&\\det\\begin{bmatrix}a_{11}&a_{12}&\\cdots&a_{1n}\\\\a_{21}&\\ddots&&\\vdots\\\\\\vdots&&\\ddots&\\vdots\\\\a_{n1}&\\cdots&\\cdots&a_{nn}\\end{bmatrix}\\overset{\\mathrm{def}}{=}\\sum_{\\sigma\\in\\mathfrak{S}_n}\\varepsilon(\\sigma)\\prod_{k=1}^n a_{k\\sigma(k)}\\\\"; latex += "&\\Delta f(x,y)=\\frac{\\partial^2f}{\\partial x^2}+\\frac{\\partial^2f}{\\partial y^2}\\qquad\\qquad \\fcolorbox{noir}{gris}{n!\\underset{n\\rightarrow+\\infty}{\\sim} {\\left(\\frac{n}{e}\\right)}^n\\sqrt{2\\pi n}}\\\\"; latex += "&\\sideset{_\\alpha^\\beta}{_\\gamma^\\delta}{\\begin{pmatrix}a&b\\\\c&d\\end{pmatrix}}\\xrightarrow[T]{n\\pm i-j}\\sideset{^t}{}A\\xleftarrow{\\overrightarrow{u}\\wedge\\overrightarrow{v}}\\underleftrightarrow{\\iint_{\\mathds{R}^2}e^{-\\left(x^2+y^2\\right)}\\,\\mathrm{d}x\\mathrm{d}y}"; latex += "\\end{split}\\\\"; latex += "\\rotatebox{30}{\\sum_{n=1}^{+\\infty}}\\quad\\mbox{Mirror rorriM}\\reflectbox{\\mbox{Mirror rorriM}}"; latex += "\\end{array}"; try { Convert.toSVG(latex, "Example3.svg", false); Convert.toSVG(latex, "Example3_shaped.svg", true); Convert.SVGTo("Example3.svg", "Example3.pdf", Convert.PDF); Convert.SVGTo("Example3_shaped.svg", "Example3_shaped.pdf", Convert.PDF); Convert.SVGTo("Example3.svg", "Example3.ps", Convert.PS); Convert.SVGTo("Example3.svg", "Example3.eps", Convert.EPS); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Export/lion.png0000644000175000017500000004601212275735442022730 0ustar sylvestresylvestrePNG  IHDRdx IDATxɯm}nޫ*VUIJؑ`B;1 @FALAM8 ,XPDJlսz۝~6ibHts^=ɿc<?!7H~/;V]q,!`@MY.~]'׿?X]YZ}}m?RSe!$ t|'%˅o>n˳x )v>$=%b5Wz)h3Eg 5K֋';nt^&DggWۯ~?/0V{ipB()^?A߼ƫw&dV{ 4k+ہ"{SzgW>Sg o\0\]5ӄ<*;ݝ/ӫo}mWn1wAqux f<"ʮ߻6A(@s$lZ34)'_Ә?Xҏ O("`,W@CE7AٞLn<I \bB1\R6k+tx =G=z },.G2eM>}?hG҃(^ymw/ݾLM)8}]!D"Pu5lB(KI%'KWՎwZXNK`f1%QVu[ Z\*wM,t.ڲX][,7|v>_ϏW~sa}O/?bo\۶mo͚0ܭq1G U$f}g>{.s 퍙fժj6}C;$I%hjl{zLt7oNuB< ! ŋ~5\Kq*8UFz3HWn8?+* -B }M(ol?PVZ ep^kmY.U0!$T2uVsɂ"AH.OX&[76pqb1cWϦǏMpޅVg7nD@V_TwCHZ{ӆ"|ȳHk<{bq54GI*$8P)`pid1L E9eEeO/<~YoYLF{Nm%8Qp! Jbq.MI" O&úmBJ5H$c+ߗME "KTu)݆^.ք`\.9 bQnN/Z hKYao,B@.d盪[w`Z{lxmxWhdk(W/wYás!n8\+ޔg"8쫾{䲼Xwn3t ذl__c%|kۍ@m/BiF9ciIm[z\oۖtawquVMnae,/mS)9ư^8Wnk ֘`Q䙁f\_\NWƓoWo@R?z<.sZ$yBB kC q!Bi嘲Dks jmCqDAt9[MF/hg;#z[N\p.TU%̬۶Y3ȦM2"ЏPlS#_m)9;;}1]"rAJ3ZUXhA\ֻ8d ڔƻhp$"k}on(nmm={zU "IR6ƭV)u1M!(Kd| Ionhh~q:{;9BCbFzNΏ9bt< H-˲kZqlh.2CqMQV2:Rxbؼt7|ig_,W aE`+"I (զ2ol՘զj{7ޙlZĢNw=X=Wvu7U_zDa@Vʤ,Zݜėu-+7ZR*E$CrzYTL)ꨐ,YT-?޻;Qv%$m AGG]ki:m{ 1Ge5_9mo3ɝMLA*S;i'EA[_xhOw*k?>PAcx0 ߽;% l :{3W*!TUYhuٲڲ.xIͦEsjc75Sa䆙 tWNJERvuQ>[6?9U4Puڊ8*R7?xpmwRXݻ3++o~Էp]^/W:;e7ƹM!mS]]^T޹'*6K6´^̱+t$U (8uk{NN"7@;]Aѫ|8MF9AϗNd=cѡd. AhWEwr dg8N9D@,@otPyo6< 0qm0ZkpߛlZ,ꦮv>boZ,Wӥ#ƽ/vs[ EG#iYn@EGjF0 o;Sg֖qZK|۷vAs@;=_%1 ؈ Y:vXex$B1ϓtP<SWbu"XEw}cƑP{$u 9JmgU߻Dqh;q4]_{'|] J8I[n8 RR8)ؙHn{4Puhurbs9/8nTDqG"J]qHFC_w{0JLI`۶nU,B6\nFi>b_1f>_}!"Sn,M#B&p~yY6QwUG Qdtwvk2\5MUY@)tӸ5GOo_?[l|<ΊyQ;%b*uK!rF qD{`w<0ʓL7 Tl9тPyGR$/+oey<[MQ55Yey&r0xv5;8m}ȲOڧ^/%ǃ(>RvZ; rJFC!Ax?9|xg[ɓUۄ)l0`˲$8 eb^A 3ҔO/ٌ<u^f@S F \C)WF*[ȕ-^ۮ 1J"XW58.Eiiï~2r\VM!tbkjC6Mh՛%Dwc,k:әy\^wM+܃YqQk޼{=ϔwͣ2Vv3=-.~y!%OHF18M7j;ߴb4rRJ 8Y e*ꮹXc\i{Jvv P*XrQGW˪lKgu$nttS C۶\]6nr8ː1eֺZں=[,w&[A46u< NT^8od#˓㳫+[g gmi4u7̲Ao<)j۾bZQ\wx|H9= 0qM]Gz&h8HS3pl@_b].Wզ˦*J$cѹ1g/\gzpلǘ[qAt[%F>U3|ն?(_ϋ\N3 !60/8S We:*WD1^0L҈پA_Jнy$Ġ \0yUoo~tWJei"#b䥝l׳M.ynʶߞ4Jb)eQ$tL+F l6崮}nНRk5Z'\"&U9y BљO -$Ôg@RH)r6"n$b8K|plx|wh^{igc![ u99~l{uhGp ʈGLj85+)˦]\MUMhץO:r[#L(CVGCJmpյdYtMXQT: oc@4x0E0cEQYQwWoȇ}wUYϦզgBaF ']<{^Ȇ/?VgJ"٢Z`e}gtgk}ӟ;_Ub3|8$!l}quY\*0wHƑ.dDlmg n{tqtwǑZRu:Pɠid"gUa`-p4{q?z$oh{j<%O/˅ Ν?|Q>;~\f51f8ES]:('Gf~I™"zѝkGeYn$ 2nj5VUs ^\bduZ)Xp'$I:wnD{9 \W?;9~*_vb&P{gϏgE_mmʞx+?!x> XfCY7_NNNڶYhb!'ý`e) "L\$He9{RMU]wbithխ}ׇG{)DRd<龎Z_ xbǰ"5h{^RwF9BQ*t5MPe]uc bX6_xX:cVo7[Zץ>]y?Wwon_ͯή뢾ZB'iNF͇~bIyM)3)\ ^~vU"Qr3c(yw6h~xtx+_p `p,~<ϿF8 \2 Cʩ)g}IE$ˢi:)e_B%@MQw#TiMQC2KpٚHr\P)EmPC!*mL|Y-7]UsD4[]NQ-s yo{ bsFbG{_;ѯMGPEO n<զk'S]VX=fiyo۠MtqggGcCp,U9ۖMDQ6=[ |1- A(ͥtx`l1<@0Z׫釜[6J:yhWsήxͽcԶ[\X4V_5[U;8X..ݝ|s#Hxzgemk]`LOꪵ#0*뚶XF$TrPMBksڀ0+BalG'O , 0Bq>puyp{u 1JvCzԥ|K7vk[w\F@PZ46,䃘RS( gYKfHJD) X-D30&Gt7p/|+_@8|N:{(Mp{ ά.fM# Եkktew]Jf<򄱾,1Ѩ]n6 DGbb۾+8rHsCHd$(ED$sQ$D G!"NiΠ)_" ,^aLSfZ FBQJ%\(EyQ\ͯx24IgXD:@" BD@c 1Ϸ7*>HJ*in_|ɳ3$S^.fWWB`u}gR`t{hX˺xgR wAHeR N-yGN`lPfC,͐ڀ sU&3rC` ,`6 wM10JsoI>}ѓ?.\5ks>e/N,}Ǒ899ql:C0A6eo`f-TB-Q8~UJD)Q_5M݀%ݎ--eIe9y&peE "2D8DI !B8D ?:g"bǒ\ߙ^41Ĕlڶ%P0pU7:B%#{']L/goŻ'_v=r͝O&x9_moWb{U'$Yb,HMZ D/7;^ R  (0A;DTT[{6/iQ[\bƘsN(bAp` @ (LU_ypvs5+?׮ッk7|#d4L_P3ZOȊyɋǧ,_!!@ X'` >S*uÒ\ZMݻ˧.9O;g{o >?Dv獷n÷󽏟X}ģu |54QQ Ż[.7]v>꫏:>E 0! Ix]$Lֵ{￸Ll 2#CT/E`)D ΂]m6Q!^ԧW 0 8٬OřuՓGOgbsh4˛M9i홵:HQ{gPp4lSڜZLgJW_=`@<%}U\-U!~<`EX%zRć'b$q:@{L,a8R Bt }q{~U;,%\ . {<`GE Tc 3gB@W짿E9! :}Q5zt^߿utGӋw](Iic2OQF[{kk!O\[H4(Fz<[k;g=r_IJI-er.];N*<$K\؉e%Q("% A.߽6s<\).RD4Ͽ:ӧO_L,O|d/_d(z˛]Wjӹ>(9gȊP+d>ßOxu|uw˺V)* Uo\/!Nw޼J TjWǜVi} HmÆoe={+o3; S|p4(=ZdUQ%]8wx0 Z]y^F/?s/!Ϝ׾U% #%kU7hExsk6lgܭ.Lh n.NOIC,hdBӉswo<إn<cU5jQȔ_z7'>&@5X 1Nf2}=.׾ErҜ շQ)pJ1ǤUThٮOq…/> @"Of}l}sm3]7Or.d],Ň`] Zjztfb@H+lp+/_^{dklnLy2Hp<_a}kX-z-xqBk(5XfVulf9掷 RrE.Kuֆlmn~gܾMv 1$,AA@Xk>O?g>ۅ0nx\8"Zø#[WW^~ekk_?Y|$*J)R2c *L1ZofX2j ㎘7ww^Ͻ`77~_m\94iCL%{X3ԍƿۿ~^yO=ouX~ijj=򃷾s7_Am?ݽe{4OqׯAwdxAgՇ/_ޛn/?$4ݓdk}dwow.]Ѕ}}H%b5e~B)?:/dcgW'?_CG5=7$#S)gHomT%.lk2c)~HU 1]}`>\<2︶RHG_opXNV'>65ƎF|^[o qqk_a۾'?/ ,+|*|6ݽ{pr|jP/Z%U4H0q4w#kSɩE7`\R\/h?{Ggr8EC7!2H a}L|V1wV}բh [7w|}~|dMVL1:r-{6UU x l8cZ5B9S2H"RPUb9[o w6vVL묬lY#SVJtxV+@llM' ^2;{≟vO [߾oݼVN onsՂw6tBb鬁2[ئm9BtȐԯ׆a#@!5W7oc>r6&]N?,JV- (" }XTW1Gvo旮^ο/Yߥ宝8uN 1.ؐ֎ャCTURuְV@sd4wLRsJY4sK \XШ־ƃnlĽZbOqf2cA 1Qkt/_W7{y-VSCm FIqݧa۴^@ܾ>vw{9 u^/u)䚰5ƏrUrۍFEjU)%i9Vvv\hwfi7 1zwu9!0`)A $A/՚N ҐLgRg_y}lIaTpַ8r-J`:&T_R4E{FЦq$ElA60 U Ui@J28:<rJRTҹG!n9 2xAOo=o#w{"u?z^ahi HKQ l6"0ITdٯ B*z" /E@rα1w]Xޗ!9wx:bYwQJ=鏛fy?;84_p7={¹ֹI;oZﷺJۑf@4 s 1+0fAc [+S[1r&R0sp.dhZ:q(%V`h䴛N<ܸqvY$"w/|sdrg}-V_L>?23'IRI@[n#р S+QIT\5TZճ)USMp>! kS֐/b^jiQj= EF~d՛ouptxr?ԓ)u.>1?>zMO: X)Woo,חFk~og3RZ*`-[c`g@+0dF(`Y-"dzh8~H~Mjj. Ź&x'د^c" x&O&WcNgxկK,Y5/o믿yǟh?BSpu3Nt<7< qkQ2HA*Oٶ$dA;U IDATLTA;ӎؚA+Ԝq֊ 6XgqQuvkk;8>B3M{ZO6 dr7wܹLؔev}{tV[߽8:O%8˞ɜ̉ٸ^#$C"ő) 0l0lͣ0''qֆ L2cQxRTJ9j$ kd,8xccCQ%hb;mڰsT*:@_Ԫхr9-Z4~ۻajޜtc6kUIĨ(T1hPTj5HAg7֝xo!@glMJ6PJb+dVG[`ݤmI`)(ʵbIT(?9 E].-Bk/Nf"ӤNuĜ@T CRUT2IZ*Zc%'$ -qADbzcA ޗZVDQKg #&$Ӧk뗋lL*ٳAR;E4 ٚT˕_F_/˕u_%ydi4qvk!RԜ^sL5V3QCQZ1:oABUK8ֱMPPE08&FZ!M06 o 7D]ٍo7fnb~Oo FzWonvnZҲrqwog1fFgTVV9X@U-cj)5R%'Bt`-JR)]"EU)[)l f@C)Y9GR5d QƏhQ G*=߹~D._ %N'4X!!iH13lPŔ3"%JnZoO3֚8h@ԬR,cp9׫&l.y\-*hB/)\%ЯI[K%tB δMSKRs.VL'jڸ^=/>7qdaި;|Z )jLCӅ -\EEZ~MDR$C!xU0A,R97Dc[oaz ن"ҧ:K>tmkEZ;J) */d9ϵm7Zi2A5r}aj?GިuF:y"@1dr[gs;9ba*yoK9PvjEZ7 Yg. j-CH]7&v1Y8ۄ ljNT0Bƍ*8GMHn4 )ԬP|@a֯lf @ (!FZ+aZu"3Ш*Xk1ޟ2ƨ*1wleb  +JU~ @:Lry(r)!pʨ[نM0 eW5¥Kdшkum (!!Ԫ*R- *N0 !4Dc"bD9/^` %7޳aBUT>aH>U@hvrh*d*&$bh9h1Mw7Z!jAIjR) ӟ+zpksyo ԔR2čRJ%x5KQTQ1i3Y?_|]""3[k-auV2.feB!2m cXg9쌧HU}}|HZ *u'#F`aP),,G6?h&P`BL(*xk1oRJ;C QD2kB)g?ka1ƶkqE3MRk0jMy"Z{̔Dzk Z3xw6ͪMjT!*\7>._l~HXد'q %+ XSjGGG;;;d0 ZksΫ*Y* 6yZ5J!efoQAj!t xntM]k R-M7i]¦r:;IC"Ѧzs||ǶFO\,5ּ5\v>3SΙW~X.kfClsUS4tb<==50C"[buxt4jrAzg5% ZӚ ƓzXFY4ƌ&&[YbjYc!&RsHV[b0L[Jɖ;%bVg!""Dt6QH*, c1Ɯ333s)VBC5֧I-:$W))z G,i;#zQшX)EE9I 12YkO~X'5W7;u yIENDB`libjlatexmath-java-1.0.3/examples/Export/Example2.java0000644000175000017500000000770512275735442023607 0ustar sylvestresylvestre/* Example2.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example2 { public static void main(String[] args) { String latex = "\\begin{array}{l}"; latex += "\\forall\\varepsilon\\in\\mathbb{R}_+^*\\ \\exists\\eta>0\\ |x-x_0|\\leq\\eta\\Longrightarrow|f(x)-f(x_0)|\\leq\\varepsilon\\\\"; latex += "\\det\\begin{bmatrix}a_{11}&a_{12}&\\cdots&a_{1n}\\\\a_{21}&\\ddots&&\\vdots\\\\\\vdots&&\\ddots&\\vdots\\\\a_{n1}&\\cdots&\\cdots&a_{nn}\\end{bmatrix}\\overset{\\mathrm{def}}{=}\\sum_{\\sigma\\in\\mathfrak{S}_n}\\varepsilon(\\sigma)\\prod_{k=1}^n a_{k\\sigma(k)}\\\\"; latex += "\\sideset{_\\alpha^\\beta}{_\\gamma^\\delta}{\\begin{pmatrix}a&b\\\\c&d\\end{pmatrix}}\\\\"; latex += "\\int_0^\\infty{x^{2n} e^{-a x^2}\\,dx} = \\frac{2n-1}{2a} \\int_0^\\infty{x^{2(n-1)} e^{-a x^2}\\,dx} = \\frac{(2n-1)!!}{2^{n+1}} \\sqrt{\\frac{\\pi}{a^{2n+1}}}\\\\"; latex += "\\int_a^b{f(x)\\,dx} = (b - a) \\sum\\limits_{n = 1}^\\infty {\\sum\\limits_{m = 1}^{2^n - 1} {\\left( { - 1} \\right)^{m + 1} } } 2^{ - n} f(a + m\\left( {b - a} \\right)2^{-n} )\\\\"; latex += "\\int_{-\\pi}^{\\pi} \\sin(\\alpha x) \\sin^n(\\beta x) dx = \\textstyle{\\left \\{ \\begin{array}{cc} (-1)^{(n+1)/2} (-1)^m \\frac{2 \\pi}{2^n} \\binom{n}{m} & n \\mbox{ odd},\\ \\alpha = \\beta (2m-n) \\\\ 0 & \\mbox{otherwise} \\\\ \\end{array} \\right .}\\\\"; latex += "L = \\int_a^b \\sqrt{ \\left|\\sum_{i,j=1}^ng_{ij}(\\gamma(t))\\left(\\frac{d}{dt}x^i\\circ\\gamma(t)\\right)\\left(\\frac{d}{dt}x^j\\circ\\gamma(t)\\right)\\right|}\\,dt\\\\"; latex += "\\begin{array}{rl} s &= \\int_a^b\\left\\|\\frac{d}{dt}\\vec{r}\\,(u(t),v(t))\\right\\|\\,dt \\\\ &= \\int_a^b \\sqrt{u'(t)^2\\,\\vec{r}_u\\cdot\\vec{r}_u + 2u'(t)v'(t)\\, \\vec{r}_u\\cdot\\vec{r}_v+ v'(t)^2\\,\\vec{r}_v\\cdot\\vec{r}_v}\\,\\,\\, dt. \\end{array}\\\\"; latex += "\\end{array}"; try { Convert.toSVG(latex, "Example2.svg", false); Convert.toSVG(latex, "Example2_shaped.svg", true); Convert.SVGTo("Example2.svg", "Example2.pdf", Convert.PDF); Convert.SVGTo("Example2_shaped.svg", "Example2_shaped.pdf", Convert.PDF); Convert.SVGTo("Example2.svg", "Example2.ps", Convert.PS); Convert.SVGTo("Example2.svg", "Example2.eps", Convert.EPS); } catch (IOException ex) {} } } libjlatexmath-java-1.0.3/examples/Macros/0000755000175000017500000000000012275735536021225 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/Macros/Package_Foo.xml0000644000175000017500000000301012275735442024073 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/examples/Macros/README0000644000175000017500000000053012275735442022077 0ustar sylvestresylvestreThe files in this directory show how to write new macros in Java or how to add new predefined formulas. The commands \newcommand and \newenvironment are already handled by JLaTeXMath but I didn't implemented any TeX functions. So low-level macros can be added to JLaTeXMath but they must be wrote in Java (or in any language callable by Java). libjlatexmath-java-1.0.3/examples/Macros/Main.java0000644000175000017500000000552712275735442022761 0ustar sylvestresylvestre/* Main.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Main { public static void main(String[] args) throws FileNotFoundException { TeXFormula.addPredefinedCommands(new FileInputStream("Package_Foo.xml")); String latex = "\\begin{array}{l}"; latex += "\\fooA{\\pi}{C}\\\\"; latex += "\\mbox{A red circle }\\fooB{75.3}\\\\"; latex += "\\mbox{A red disk }\\fooC[abc]{126.7}\\\\"; latex += "\\mbox{An other red circle }\\fooD{159.81}[ab]"; latex += "\\end{array}"; TeXFormula formula = new TeXFormula(latex); TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 20); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) { } } }libjlatexmath-java-1.0.3/examples/Macros/FooPackage.java0000644000175000017500000000766412275735442024100 0ustar sylvestresylvestre/* FooPackage.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package Foo; import org.scilab.forge.jlatexmath.Atom; import org.scilab.forge.jlatexmath.TeXParser; import org.scilab.forge.jlatexmath.ParseException; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXEnvironment; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.SpaceAtom; import org.scilab.forge.jlatexmath.Box; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; public class FooPackage { /* * The macro fooA is equivalent to \newcommand{\fooA}[2]{\frac{\textcolor{red}{#2}}{#1}} */ public Atom fooA_macro(TeXParser tp, String[] args) throws ParseException { return new TeXFormula("\\frac{\\textcolor{red}{" + args[2] + "}}{" + args[1] + "}").root; } public Atom fooB_macro(TeXParser tp, String[] args) throws ParseException { float f = Float.parseFloat(args[1]); return new MyAtom(f); } public Atom fooC_macro(TeXParser tp, String[] args) throws ParseException { float f = Float.parseFloat(args[1]); return new MyAtom(f, args[2].length() != 0); } public Atom fooD_macro(TeXParser tp, String[] args) throws ParseException { float f = Float.parseFloat(args[1]); return new MyAtom(f, args[2].length() == 0); } public class MyAtom extends Atom { public float f; public boolean filled = false; public MyAtom(float f) { this.f = f; } public MyAtom(float f, boolean filled) { this.f = f; this.filled = filled; } public Box createBox(TeXEnvironment env) { return new MyBox((int) f, new SpaceAtom(TeXConstants.UNIT_POINT, f, 0, 0).createBox(env).getWidth(), filled); } } public class MyBox extends Box { public boolean filled; public int r; public MyBox(int r, float f, boolean filled) { this.r = r; this.filled = filled; this.width = f; this.height = f / 2; this.depth = f / 2; } public void draw(Graphics2D g2, float x, float y) { Color old = g2.getColor(); g2.setColor(Color.RED); AffineTransform oldAt = g2.getTransform(); g2.translate(x, y - height); g2.scale(Math.abs(1 / oldAt.getScaleX()), Math.abs(1 / oldAt.getScaleY())); if (filled) { g2.fillOval(0, 0, r, r); } else { g2.drawOval(0, 0, r, r); } g2.setColor(old); g2.setTransform(oldAt); } public int getLastFontId() { return 0; } } }libjlatexmath-java-1.0.3/examples/Basic/0000755000175000017500000000000012275735442021016 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/examples/Basic/Example7.java0000644000175000017500000000620212275735442023343 0ustar sylvestresylvestre/* Example6.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example7 { public static void main(String[] args) { String latex = "\\mbox{abc abc abc abc abc abc abc abc abc abc abc abc abc abc\\\\abc abc abc abc abc abc abc\\\\abc abc abc abc abc abc abc}\\\\1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"; TeXFormula formula = new TeXFormula(latex); formula.setDEBUG(true); // Note: Old interface for creating icons: //TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 30, TeXConstants.UNIT_CM, 4, TeXConstants.ALIGN_LEFT, TeXConstants.UNIT_CM, 0.5f); // Note: New interface using builder pattern (inner class): TeXIcon icon = formula.new TeXIconBuilder() .setStyle(TeXConstants.STYLE_DISPLAY) .setSize(30) .setWidth(TeXConstants.UNIT_CM, 4, TeXConstants.ALIGN_LEFT) .setInterLineSpacing(TeXConstants.UNIT_CM, 0.5f) .build(); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example7.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Basic/Example5.java0000644000175000017500000000473012275735442023345 0ustar sylvestresylvestre/* Example5.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; /** * A class to test LaTeX rendering. **/ 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, "Example5.png", Color.white, Color.black); } }libjlatexmath-java-1.0.3/examples/Basic/Main.java0000644000175000017500000000303412275735442022545 0ustar sylvestresylvestre/* Main.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009-2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ public class Main { public static void main(String[] args) { Example1.main(new String[0]); Example2.main(new String[0]); Example3.main(new String[0]); Example4.main(new String[0]); Example5.main(new String[0]); Example6.main(new String[0]); } }libjlatexmath-java-1.0.3/examples/Basic/ExampleSwing2.java0000644000175000017500000000176512275735442024357 0ustar sylvestresylvestreimport java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; public class ExampleSwing2 { public static void main(String[] args) { String latex = "\\text{hello world}"; TeXFormula formula = new TeXFormula(latex); TeXIcon icon = formula.new TeXIconBuilder().setStyle(TeXConstants.STYLE_DISPLAY) .setSize(16) .setWidth(TeXConstants.UNIT_PIXEL, 256f, TeXConstants.ALIGN_CENTER) .setIsMaxWidth(true).setInterLineSpacing(TeXConstants.UNIT_PIXEL, 20f) .build(); JFrame frame = new JFrame(); final JLabel label = new JLabel(icon); label.setMaximumSize(new Dimension(100,300)); label.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); frame.getContentPane().add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } } libjlatexmath-java-1.0.3/examples/Basic/Example6.java0000644000175000017500000000564412275735442023353 0ustar sylvestresylvestre/* Example6.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example6 { public static void main(String[] args) { String latex = "\\begin{array}{cc}"; latex += "\\fbox{\\text{A framed box with \\textdbend}}&\\shadowbox{\\text{A shadowed box}}\\cr"; latex += "\\doublebox{\\text{A double framed box}}&\\ovalbox{\\text{An oval framed box}}\\cr"; latex += "\\end{array}"; TeXFormula formula = new TeXFormula(latex); // Note: Old interface for creating icons: //TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 30); // Note: New interface using builder pattern (inner class): TeXIcon icon = formula.new TeXIconBuilder().setStyle(TeXConstants.STYLE_DISPLAY).setSize(30).build(); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example6.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Basic/Example4.java0000644000175000017500000000703412275735442023344 0ustar sylvestresylvestre/* Example4.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.TeXFormula.TeXIconBuilder; /** * A class to test LaTeX rendering. **/ public class Example4 { public static void main(String[] args) { String latex = "\\begin{array}{|c|c|c|c|}\n"; latex += "\\multicolumn{4}{c}{\\shadowbox{\\text{\\Huge An image from the \\LaTeX3 project}}}\\cr\n"; latex += "\\hline\n"; latex += "\\text{Left}\\includegraphics{lion.png}\\text{Right} & \\text{Left}\\includegraphics[width=3cm,interpolation=bicubic]{lion.png}\\text{Right} & \\text{Left}\\includegraphics[angle=45,width=3cm]{lion.png}\\text{Right} & \\text{Left}\\includegraphics[angle=160]{lion.png}\\text{Right} \\cr\n"; latex += "\\hline\n"; latex += "\\text{\\backslash includegraphics\\{lion.png\\}} & \\text{\\backslash includegraphics[width=3cm,interpolation=bicubic]\\{lion.png\\}} & \\text{\\backslash includegraphics[angle=45,width=3cm]\\{lion.png\\}} & \\text{\\backslash includegraphics[angle=160]\\{lion.png\\}}\\cr\n"; latex += "\\hline\n"; latex += "\\end{array}\n"; TeXFormula formula = new TeXFormula(latex); // Note: Old interface for creating icons: //TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 10); // Note: New interface using builder pattern (inner class): TeXIcon icon = formula.new TeXIconBuilder().setStyle(TeXConstants.STYLE_DISPLAY).setSize(10).build(); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example4.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Basic/Example1.java0000644000175000017500000001007412275735442023337 0ustar sylvestresylvestre/* Example1.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example1 { public static void main(String[] args) { String latex = "\\begin{array}{lr}\\mbox{\\textcolor{Blue}{Russian}}&\\mbox{\\textcolor{Melon}{Greek}}\\\\"; latex += "\\mbox{" + "привет мир".toUpperCase() + "}&\\mbox{" + "γειά κόσμο".toUpperCase() + "}\\\\"; latex += "\\mbox{привет мир}&\\mbox{γειά κόσμο}\\\\"; latex += "\\mathbf{\\mbox{привет мир}}&\\mathbf{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathit{\\mbox{привет мир}}&\\mathit{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathsf{\\mbox{привет мир}}&\\mathsf{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathtt{\\mbox{привет мир}}&\\mathtt{\\mbox{γειά κόσμο}}\\\\"; latex += "\\mathbf{\\mathit{\\mbox{привет мир}}}&\\mathbf{\\mathit{\\mbox{γειά κόσμο}}}\\\\"; latex += "\\mathbf{\\mathsf{\\mbox{привет мир}}}&\\mathbf{\\mathsf{\\mbox{γειά κόσμο}}}\\\\"; latex += "\\mathsf{\\mathit{\\mbox{привет мир}}}&\\mathsf{\\mathit{\\mbox{γειά κόσμο}}}\\\\"; latex += "&\\\\"; latex += "\\mbox{\\textcolor{Salmon}{Bulgarian}}&\\mbox{\\textcolor{Tan}{Serbian}}\\\\"; latex += "\\mbox{здравей свят}&\\mbox{Хелло уорлд}\\\\"; latex += "&\\\\"; latex += "\\mbox{\\textcolor{Turquoise}{Bielorussian}}&\\mbox{\\textcolor{LimeGreen}{Ukrainian}}\\\\"; latex += "\\mbox{прывітаньне Свет}&\\mbox{привіт світ}\\\\"; latex += "\\end{array}"; TeXFormula formula = new TeXFormula(latex); // Note: Old interface for creating icons: //TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 20); // Note: New interface using builder pattern (inner class): TeXIcon icon = formula.new TeXIconBuilder().setStyle(TeXConstants.STYLE_DISPLAY).setSize(20).build(); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example1.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) { } } }libjlatexmath-java-1.0.3/examples/Basic/Example3.java0000644000175000017500000001311712275735442023342 0ustar sylvestresylvestre/* Example3.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.TeXFormula.TeXIconBuilder; /** * A class to test LaTeX rendering. **/ public class Example3 { public static void main(String[] args) { String latex = "\\definecolor{gris}{gray}{0.9}"; latex += "\\definecolor{noir}{rgb}{0,0,0}"; latex += "\\definecolor{bleu}{rgb}{0,0,1}\\newcommand{\\pa}{\\left|}"; latex += "\\begin{array}{c}"; latex += "\\JLaTeXMath\\\\"; latex += "\\begin{split}"; latex += " &Тепловой\\ поток\\ \\mathrm{Тепловой\\ поток}\\ \\mathtt{Тепловой\\ поток}\\\\"; latex += " &\\boldsymbol{\\mathrm{Тепловой\\ поток}}\\ \\mathsf{Тепловой\\ поток}\\\\"; latex += "|I_2| &= \\pa\\int_0^T\\psi(t)\\left\\{ u(a,t)-\\int_{\\gamma(t)}^a \\frac{d\\theta}{k} (\\theta,t) \\int_a^\\theta c(\\xi) u_t (\\xi,t)\\,d\\xi\\right\\}dt\\right|\\\\"; latex += "&\\le C_6 \\Bigg|\\pa f \\int_\\Omega \\pa\\widetilde{S}^{-1,0}_{a,-} W_2(\\Omega, \\Gamma_1)\\right|\\ \\right|\\left| |u|\\overset{\\circ}{\\to} W_2^{\\widetilde{A}}(\\Omega;\\Gamma_r,T)\\right|\\Bigg|\\\\"; latex += "&\\\\"; latex += "&\\textcolor{magenta}{\\mathrm{Produit\\ avec\\ Java\\ et\\ \\LaTeX\\ par\\ }\\mathscr{C}\\mathcal{A}\\mathfrak{L}\\mathbf{I}\\mathtt{X}\\mathbb{T}\\mathsf{E}}\\\\"; latex += "&\\begin{pmatrix}\\alpha&\\beta&\\gamma&\\delta\\\\\\aleph&\\beth&\\gimel&\\daleth\\\\\\mathfrak{A}&\\mathfrak{B}&\\mathfrak{C}&\\mathfrak{D}\\\\\\boldsymbol{\\mathfrak{a}}&\\boldsymbol{\\mathfrak{b}}&\\boldsymbol{\\mathfrak{c}}&\\boldsymbol{\\mathfrak{d}}\\end{pmatrix}\\quad{(a+b)}^{\\frac{n}{2}}=\\sqrt{\\sum_{k=0}^n\\tbinom{n}{k}a^kb^{n-k}}\\quad \\Biggl(\\biggl(\\Bigl(\\bigl(()\\bigr)\\Bigr)\\biggr)\\Biggr)\\\\"; latex += "&\\forall\\varepsilon\\in\\mathbb{R}_+^*\\ \\exists\\eta>0\\ |x-x_0|\\leq\\eta\\Longrightarrow|f(x)-f(x_0)|\\leq\\varepsilon\\\\"; latex += "&\\det\\begin{bmatrix}a_{11}&a_{12}&\\cdots&a_{1n}\\\\a_{21}&\\ddots&&\\vdots\\\\\\vdots&&\\ddots&\\vdots\\\\a_{n1}&\\cdots&\\cdots&a_{nn}\\end{bmatrix}\\overset{\\mathrm{def}}{=}\\sum_{\\sigma\\in\\mathfrak{S}_n}\\varepsilon(\\sigma)\\prod_{k=1}^n a_{k\\sigma(k)}\\\\"; latex += "&\\Delta f(x,y)=\\frac{\\partial^2f}{\\partial x^2}+\\frac{\\partial^2f}{\\partial y^2}\\qquad\\qquad \\fcolorbox{noir}{gris}{n!\\underset{n\\rightarrow+\\infty}{\\sim} {\\left(\\frac{n}{e}\\right)}^n\\sqrt{2\\pi n}}\\\\"; latex += "&\\sideset{_\\alpha^\\beta}{_\\gamma^\\delta}{\\begin{pmatrix}a&b\\\\c&d\\end{pmatrix}}\\xrightarrow[T]{n\\pm i-j}\\sideset{^t}{}A\\xleftarrow{\\overrightarrow{u}\\wedge\\overrightarrow{v}}\\underleftrightarrow{\\iint_{\\mathds{R}^2}e^{-\\left(x^2+y^2\\right)}\\,\\mathrm{d}x\\mathrm{d}y}"; latex += "\\end{split}\\\\"; latex += "\\rotatebox{30}{\\sum_{n=1}^{+\\infty}}\\quad\\mbox{Mirror rorriM}\\reflectbox{\\mbox{Mirror rorriM}}"; latex += "\\end{array}"; TeXFormula formula = new TeXFormula(latex); // Note: Old interface for creating icons: //TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 20); // Note: New interface using builder pattern (inner class): TeXIcon icon = formula.new TeXIconBuilder().setStyle(TeXConstants.STYLE_DISPLAY).setSize(20).build(); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example3.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/examples/Basic/lion.png0000644000175000017500000004601212275735442022470 0ustar sylvestresylvestrePNG  IHDRdx IDATxɯm}nޫ*VUIJؑ`B;1 @FALAM8 ,XPDJlսz۝~6ibHts^=ɿc<?!7H~/;V]q,!`@MY.~]'׿?X]YZ}}m?RSe!$ t|'%˅o>n˳x )v>$=%b5Wz)h3Eg 5K֋';nt^&DggWۯ~?/0V{ipB()^?A߼ƫw&dV{ 4k+ہ"{SzgW>Sg o\0\]5ӄ<*;ݝ/ӫo}mWn1wAqux f<"ʮ߻6A(@s$lZ34)'_Ә?Xҏ O("`,W@CE7AٞLn<I \bB1\R6k+tx =G=z },.G2eM>}?hG҃(^ymw/ݾLM)8}]!D"Pu5lB(KI%'KWՎwZXNK`f1%QVu[ Z\*wM,t.ڲX][,7|v>_ϏW~sa}O/?bo\۶mo͚0ܭq1G U$f}g>{.s 퍙fժj6}C;$I%hjl{zLt7oNuB< ! ŋ~5\Kq*8UFz3HWn8?+* -B }M(ol?PVZ ep^kmY.U0!$T2uVsɂ"AH.OX&[76pqb1cWϦǏMpޅVg7nD@V_TwCHZ{ӆ"|ȳHk<{bq54GI*$8P)`pid1L E9eEeO/<~YoYLF{Nm%8Qp! Jbq.MI" O&úmBJ5H$c+ߗME "KTu)݆^.ք`\.9 bQnN/Z hKYao,B@.d盪[w`Z{lxmxWhdk(W/wYás!n8\+ޔg"8쫾{䲼Xwn3t ذl__c%|kۍ@m/BiF9ciIm[z\oۖtawquVMnae,/mS)9ư^8Wnk ֘`Q䙁f\_\NWƓoWo@R?z<.sZ$yBB kC q!Bi嘲Dks jmCqDAt9[MF/hg;#z[N\p.TU%̬۶Y3ȦM2"ЏPlS#_m)9;;}1]"rAJ3ZUXhA\ֻ8d ڔƻhp$"k}on(nmm={zU "IR6ƭV)u1M!(Kd| Ionhh~q:{;9BCbFzNΏ9bt< H-˲kZqlh.2CqMQV2:Rxbؼt7|ig_,W aE`+"I (զ2ol՘զj{7ޙlZĢNw=X=Wvu7U_zDa@Vʤ,Zݜėu-+7ZR*E$CrzYTL)ꨐ,YT-?޻;Qv%$m AGG]ki:m{ 1Ge5_9mo3ɝMLA*S;i'EA[_xhOw*k?>PAcx0 ߽;% l :{3W*!TUYhuٲڲ.xIͦEsjc75Sa䆙 tWNJERvuQ>[6?9U4Puڊ8*R7?xpmwRXݻ3++o~Էp]^/W:;e7ƹM!mS]]^T޹'*6K6´^̱+t$U (8uk{NN"7@;]Aѫ|8MF9AϗNd=cѡd. AhWEwr dg8N9D@,@otPyo6< 0qm0ZkpߛlZ,ꦮv>boZ,Wӥ#ƽ/vs[ EG#iYn@EGjF0 o;Sg֖qZK|۷vAs@;=_%1 ؈ Y:vXex$B1ϓtP<SWbu"XEw}cƑP{$u 9JmgU߻Dqh;q4]_{'|] J8I[n8 RR8)ؙHn{4Puhurbs9/8nTDqG"J]qHFC_w{0JLI`۶nU,B6\nFi>b_1f>_}!"Sn,M#B&p~yY6QwUG Qdtwvk2\5MUY@)tӸ5GOo_?[l|<ΊyQ;%b*uK!rF qD{`w<0ʓL7 Tl9тPyGR$/+oey<[MQ55Yey&r0xv5;8m}ȲOڧ^/%ǃ(>RvZ; rJFC!Ax?9|xg[ɓUۄ)l0`˲$8 eb^A 3ҔO/ٌ<u^f@S F \C)WF*[ȕ-^ۮ 1J"XW58.Eiiï~2r\VM!tbkjC6Mh՛%Dwc,k:әy\^wM+܃YqQk޼{=ϔwͣ2Vv3=-.~y!%OHF18M7j;ߴb4rRJ 8Y e*ꮹXc\i{Jvv P*XrQGW˪lKgu$nttS C۶\]6nr8ː1eֺZں=[,w&[A46u< NT^8od#˓㳫+[g gmi4u7̲Ao<)j۾bZQ\wx|H9= 0qM]Gz&h8HS3pl@_b].Wզ˦*J$cѹ1g/\gzpلǘ[qAt[%F>U3|ն?(_ϋ\N3 !60/8S We:*WD1^0L҈پA_Jнy$Ġ \0yUoo~tWJei"#b䥝l׳M.ynʶߞ4Jb)eQ$tL+F l6崮}nНRk5Z'\"&U9y BљO -$Ôg@RH)r6"n$b8K|plx|wh^{igc![ u99~l{uhGp ʈGLj85+)˦]\MUMhץO:r[#L(CVGCJmpյdYtMXQT: oc@4x0E0cEQYQwWoȇ}wUYϦզgBaF ']<{^Ȇ/?VgJ"٢Z`e}gtgk}ӟ;_Ub3|8$!l}quY\*0wHƑ.dDlmg n{tqtwǑZRu:Pɠid"gUa`-p4{q?z$oh{j<%O/˅ Ν?|Q>;~\f51f8ES]:('Gf~I™"zѝkGeYn$ 2nj5VUs ^\bduZ)Xp'$I:wnD{9 \W?;9~*_vb&P{gϏgE_mmʞx+?!x> XfCY7_NNNڶYhb!'ý`e) "L\$He9{RMU]wbithխ}ׇG{)DRd<龎Z_ xbǰ"5h{^RwF9BQ*t5MPe]uc bX6_xX:cVo7[Zץ>]y?Wwon_ͯή뢾ZB'iNF͇~bIyM)3)\ ^~vU"Qr3c(yw6h~xtx+_p `p,~<ϿF8 \2 Cʩ)g}IE$ˢi:)e_B%@MQw#TiMQC2KpٚHr\P)EmPC!*mL|Y-7]UsD4[]NQ-s yo{ bsFbG{_;ѯMGPEO n<զk'S]VX=fiyo۠MtqggGcCp,U9ۖMDQ6=[ |1- A(ͥtx`l1<@0Z׫釜[6J:yhWsήxͽcԶ[\X4V_5[U;8X..ݝ|s#Hxzgemk]`LOꪵ#0*뚶XF$TrPMBksڀ0+BalG'O , 0Bq>puyp{u 1JvCzԥ|K7vk[w\F@PZ46,䃘RS( gYKfHJD) X-D30&Gt7p/|+_@8|N:{(Mp{ ά.fM# Եkktew]Jf<򄱾,1Ѩ]n6 DGbb۾+8rHsCHd$(ED$sQ$D G!"NiΠ)_" ,^aLSfZ FBQJ%\(EyQ\ͯx24IgXD:@" BD@c 1Ϸ7*>HJ*in_|ɳ3$S^.fWWB`u}gR`t{hX˺xgR wAHeR N-yGN`lPfC,͐ڀ sU&3rC` ,`6 wM10JsoI>}ѓ?.\5ks>e/N,}Ǒ899ql:C0A6eo`f-TB-Q8~UJD)Q_5M݀%ݎ--eIe9y&peE "2D8DI !B8D ?:g"bǒ\ߙ^41Ĕlڶ%P0pU7:B%#{']L/goŻ'_v=r͝O&x9_moWb{U'$Yb,HMZ D/7;^ R  (0A;DTT[{6/iQ[\bƘsN(bAp` @ (LU_ypvs5+?׮ッk7|#d4L_P3ZOȊyɋǧ,_!!@ X'` >S*uÒ\ZMݻ˧.9O;g{o >?Dv獷n÷󽏟X}ģu |54QQ Ż[.7]v>꫏:>E 0! Ix]$Lֵ{￸Ll 2#CT/E`)D ΂]m6Q!^ԧW 0 8٬OřuՓGOgbsh4˛M9i홵:HQ{gPp4lSڜZLgJW_=`@<%}U\-U!~<`EX%zRć'b$q:@{L,a8R Bt }q{~U;,%\ . {<`GE Tc 3gB@W짿E9! :}Q5zt^߿utGӋw](Iic2OQF[{kk!O\[H4(Fz<[k;g=r_IJI-er.];N*<$K\؉e%Q("% A.߽6s<\).RD4Ͽ:ӧO_L,O|d/_d(z˛]Wjӹ>(9gȊP+d>ßOxu|uw˺V)* Uo\/!Nw޼J TjWǜVi} HmÆoe={+o3; S|p4(=ZdUQ%]8wx0 Z]y^F/?s/!Ϝ׾U% #%kU7hExsk6lgܭ.Lh n.NOIC,hdBӉswo<إn<cU5jQȔ_z7'>&@5X 1Nf2}=.׾ErҜ շQ)pJ1ǤUThٮOq…/> @"Of}l}sm3]7Or.d],Ň`] Zjztfb@H+lp+/_^{dklnLy2Hp<_a}kX-z-xqBk(5XfVulf9掷 RrE.Kuֆlmn~gܾMv 1$,AA@Xk>O?g>ۅ0nx\8"Zø#[WW^~ekk_?Y|$*J)R2c *L1ZofX2j ㎘7ww^Ͻ`77~_m\94iCL%{X3ԍƿۿ~^yO=ouX~ijj=򃷾s7_Am?ݽe{4OqׯAwdxAgՇ/_ޛn/?$4ݓdk}dwow.]Ѕ}}H%b5e~B)?:/dcgW'?_CG5=7$#S)gHomT%.lk2c)~HU 1]}`>\<2︶RHG_opXNV'>65ƎF|^[o qqk_a۾'?/ ,+|*|6ݽ{pr|jP/Z%U4H0q4w#kSɩE7`\R\/h?{Ggr8EC7!2H a}L|V1wV}բh [7w|}~|dMVL1:r-{6UU x l8cZ5B9S2H"RPUb9[o w6vVL묬lY#SVJtxV+@llM' ^2;{≟vO [߾oݼVN onsՂw6tBb鬁2[ئm9BtȐԯ׆a#@!5W7oc>r6&]N?,JV- (" }XTW1Gvo旮^ο/Yߥ宝8uN 1.ؐ֎ャCTURuְV@sd4wLRsJY4sK \XШ־ƃnlĽZbOqf2cA 1Qkt/_W7{y-VSCm FIqݧa۴^@ܾ>vw{9 u^/u)䚰5ƏrUrۍFEjU)%i9Vvv\hwfi7 1zwu9!0`)A $A/՚N ҐLgRg_y}lIaTpַ8r-J`:&T_R4E{FЦq$ElA60 U Ui@J28:<rJRTҹG!n9 2xAOo=o#w{"u?z^ahi HKQ l6"0ITdٯ B*z" /E@rα1w]Xޗ!9wx:bYwQJ=鏛fy?;84_p7={¹ֹI;oZﷺJۑf@4 s 1+0fAc [+S[1r&R0sp.dhZ:q(%V`h䴛N<ܸqvY$"w/|sdrg}-V_L>?23'IRI@[n#р S+QIT\5TZճ)USMp>! kS֐/b^jiQj= EF~d՛ouptxr?ԓ)u.>1?>zMO: X)Woo,חFk~og3RZ*`-[c`g@+0dF(`Y-"dzh8~H~Mjj. Ź&x'د^c" x&O&WcNgxկK,Y5/o믿yǟh?BSpu3Nt<7< qkQ2HA*Oٶ$dA;U IDATLTA;ӎؚA+Ԝq֊ 6XgqQuvkk;8>B3M{ZO6 dr7wܹLؔev}{tV[߽8:O%8˞ɜ̉ٸ^#$C"ő) 0l0lͣ0''qֆ L2cQxRTJ9j$ kd,8xccCQ%hb;mڰsT*:@_Ԫхr9-Z4~ۻajޜtc6kUIĨ(T1hPTj5HAg7֝xo!@glMJ6PJb+dVG[`ݤmI`)(ʵbIT(?9 E].-Bk/Nf"ӤNuĜ@T CRUT2IZ*Zc%'$ -qADbzcA ޗZVDQKg #&$Ӧk뗋lL*ٳAR;E4 ٚT˕_F_/˕u_%ydi4qvk!RԜ^sL5V3QCQZ1:oABUK8ֱMPPE08&FZ!M06 o 7D]ٍo7fnb~Oo FzWonvnZҲrqwog1fFgTVV9X@U-cj)5R%'Bt`-JR)]"EU)[)l f@C)Y9GR5d QƏhQ G*=߹~D._ %N'4X!!iH13lPŔ3"%JnZoO3֚8h@ԬR,cp9׫&l.y\-*hB/)\%ЯI[K%tB δMSKRs.VL'jڸ^=/>7qdaި;|Z )jLCӅ -\EEZ~MDR$C!xU0A,R97Dc[oaz ن"ҧ:K>tmkEZ;J) */d9ϵm7Zi2A5r}aj?GިuF:y"@1dr[gs;9ba*yoK9PvjEZ7 Yg. j-CH]7&v1Y8ۄ ljNT0Bƍ*8GMHn4 )ԬP|@a֯lf @ (!FZ+aZu"3Ш*Xk1ޟ2ƨ*1wleb  +JU~ @:Lry(r)!pʨ[نM0 eW5¥Kdшkum (!!Ԫ*R- *N0 !4Dc"bD9/^` %7޳aBUT>aH>U@hvrh*d*&$bh9h1Mw7Z!jAIjR) ӟ+zpksyo ԔR2čRJ%x5KQTQ1i3Y?_|]""3[k-auV2.feB!2m cXg9쌧HU}}|HZ *u'#F`aP),,G6?h&P`BL(*xk1oRJ;C QD2kB)g?ka1ƶkqE3MRk0jMy"Z{̔Dzk Z3xw6ͪMjT!*\7>._l~HXد'q %+ XSjGGG;;;d0 ZksΫ*Y* 6yZ5J!efoQAj!t xntM]k R-M7i]¦r:;IC"Ѧzs||ǶFO\,5ּ5\v>3SΙW~X.kfClsUS4tb<==50C"[buxt4jrAzg5% ZӚ ƓzXFY4ƌ&&[YbjYc!&RsHV[b0L[Jɖ;%bVg!""Dt6QH*, c1Ɯ333s)VBC5֧I-:$W))z G,i;#zQшX)EE9I 12YkO~X'5W7;u yIENDB`libjlatexmath-java-1.0.3/examples/Basic/Example2.java0000644000175000017500000001050612275735442023340 0ustar sylvestresylvestre/* Example2.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.JLabel; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * A class to test LaTeX rendering. **/ public class Example2 { public static void main(String[] args) { String latex = "\\begin{array}{l}"; latex += "\\forall\\varepsilon\\in\\mathbb{R}_+^*\\ \\exists\\eta>0\\ |x-x_0|\\leq\\eta\\Longrightarrow|f(x)-f(x_0)|\\leq\\varepsilon\\\\"; latex += "\\det\\begin{bmatrix}a_{11}&a_{12}&\\cdots&a_{1n}\\\\a_{21}&\\ddots&&\\vdots\\\\\\vdots&&\\ddots&\\vdots\\\\a_{n1}&\\cdots&\\cdots&a_{nn}\\end{bmatrix}\\overset{\\mathrm{def}}{=}\\sum_{\\sigma\\in\\mathfrak{S}_n}\\varepsilon(\\sigma)\\prod_{k=1}^n a_{k\\sigma(k)}\\\\"; latex += "\\sideset{_\\alpha^\\beta}{_\\gamma^\\delta}{\\begin{pmatrix}a&b\\\\c&d\\end{pmatrix}}\\\\"; latex += "\\int_0^\\infty{x^{2n} e^{-a x^2}\\,dx} = \\frac{2n-1}{2a} \\int_0^\\infty{x^{2(n-1)} e^{-a x^2}\\,dx} = \\frac{(2n-1)!!}{2^{n+1}} \\sqrt{\\frac{\\pi}{a^{2n+1}}}\\\\"; latex += "\\int_a^b{f(x)\\,dx} = (b - a) \\sum\\limits_{n = 1}^\\infty {\\sum\\limits_{m = 1}^{2^n - 1} {\\left( { - 1} \\right)^{m + 1} } } 2^{ - n} f(a + m\\left( {b - a} \\right)2^{-n} )\\\\"; latex += "\\int_{-\\pi}^{\\pi} \\sin(\\alpha x) \\sin^n(\\beta x) dx = \\textstyle{\\left \\{ \\begin{array}{cc} (-1)^{(n+1)/2} (-1)^m \\frac{2 \\pi}{2^n} \\binom{n}{m} & n \\mbox{ odd},\\ \\alpha = \\beta (2m-n) \\\\ 0 & \\mbox{otherwise} \\\\ \\end{array} \\right .}\\\\"; latex += "L = \\int_a^b \\sqrt{ \\left|\\sum_{i,j=1}^ng_{ij}(\\gamma(t))\\left(\\frac{d}{dt}x^i\\circ\\gamma(t)\\right)\\left(\\frac{d}{dt}x^j\\circ\\gamma(t)\\right)\\right|}\\,dt\\\\"; latex += "\\begin{array}{rl} s &= \\int_a^b\\left\\|\\frac{d}{dt}\\vec{r}\\,(u(t),v(t))\\right\\|\\,dt \\\\ &= \\int_a^b \\sqrt{u'(t)^2\\,\\vec{r}_u\\cdot\\vec{r}_u + 2u'(t)v'(t)\\, \\vec{r}_u\\cdot\\vec{r}_v+ v'(t)^2\\,\\vec{r}_v\\cdot\\vec{r}_v}\\,\\,\\, dt. \\end{array}\\\\"; latex += "\\end{array}"; TeXFormula formula = new TeXFormula(latex); // Note: Old interface for creating icons: //TeXIcon icon = formula.createTeXIcon(TeXConstants.STYLE_DISPLAY, 20); // Note: New interface using builder pattern (inner class): TeXIcon icon = formula.new TeXIconBuilder().setStyle(TeXConstants.STYLE_DISPLAY).setSize(20).build(); icon.setInsets(new Insets(5, 5, 5, 5)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); g2.setColor(Color.white); g2.fillRect(0,0,icon.getIconWidth(),icon.getIconHeight()); JLabel jl = new JLabel(); jl.setForeground(new Color(0, 0, 0)); icon.paintIcon(jl, g2, 0, 0); File file = new File("Example2.png"); try { ImageIO.write(image, "png", file.getAbsoluteFile()); } catch (IOException ex) {} } }libjlatexmath-java-1.0.3/COPYING0000644000175000017500000003542212275735442017220 0ustar sylvestresylvestre GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS libjlatexmath-java-1.0.3/plugin/0000755000175000017500000000000012275735442017455 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/0000755000175000017500000000000012275735442020241 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/MANIFEST.MF0000644000175000017500000000003312275735442021667 0ustar sylvestresylvestreClass-Path: jlatexmath.jar libjlatexmath-java-1.0.3/plugin/fop/build.xml0000644000175000017500000001040212275735442022057 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/plugin/fop/LICENSE0000644000175000017500000000145112275735442021247 0ustar sylvestresylvestreJLaTeXMath-FOP Library - Enables inclusion of LaTeX formulas in fo. Copyright (C) 2010-2011 DENIZET Calixte This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. libjlatexmath-java-1.0.3/plugin/fop/examples/0000755000175000017500000000000012275735442022057 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/examples/latex.pdf0000644000175000017500000006260512275735442023700 0ustar sylvestresylvestre%PDF-1.4 % 4 0 obj << /Producer (Apache FOP Version 0.95) /CreationDate (D:20100125204037+01'00') >> endobj 5 0 obj << /N 3 /Length 11 0 R /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 6 0 obj [/ICCBased 5 0 R] endobj 7 0 obj << /Type /Metadata /Subtype /XML /Length 12 0 R /Filter /FlateDecode >> stream xN0K4[1kBAv%>` w=[5({ˬ3LVVl{?g5 8Ɩ-D*"/kF(kb+>&c#ѧiܦVr 0;ZoJ[ LfBeUi8;w6aȡRs=n6]TΊ3Stʳ'qOh5(!!6 k_>Yx|Y]*nh9ni2~YwƞɝɊoV 6 T_|M&z$$݂X"6cY(uP._/" endstream endobj 10 0 obj << /Length 13 0 R /Filter /FlateDecode >> stream x\KsW>A Rl)UĮ-ʁ(KRTHl|%gfw0tY\|GC#SRJy.}I\ ۯ r~{~'_\ ݮ))/}fy7ټū7?)9p>-l?lvME35A\sz:Dj+aB}166wqM9d hh)TtѸK!T$$E*Ci,=%HH6u%eW|bաrĔ<6Ba(H]N\l 7o7߼OߎZ51do 刀/7M Q t@&za( ($C0?a{'yGDOa  n ۝?+:LMPiGƧ(c[);ʰ@ƶG@ G4ȣ7h)=GTj16o4lIuNو֝ jg\Ak88wF v1Ȉ:{i=R5'n}_| ҇ˇ_y|z7}oqJHyGj|)863f 򂂐z+͈x66-bI#<ZȇVk[Ģ})@"R绫{տ{wR:Ϭqg{7o$1ϣ?7{e>w7_uљ ͘Bje5}3s-!~7W\b&WsRIvQ0SpUeتI^*DYHO)W{ЌzŐfܵ{cԍ n_30OߵГya e-sVaSmNV?9ւؑDbw_t=`hp Ký@%\K0& sv hjF-# xm99WFCrxmcoL !_ĚEp}3w}tm%cMK"]ͪ>Y2}N<~=θ1'>O4+FI xrIE/,NIhؼ/{G헃 ~%=rj1aџR'q&S>mv)->;gچ߹̓ ELږS+)Cp82KҧO9&`=`Ti/%!N ".ϟ*kQ: Q?*~6m z,g0w<ԓ4v f73:%'>+ywh|bP~YIaOLŋ3a v̪ g(y|Q‹NpDB)i=@U@BVr(lEpJ*Dz؆ Q)3q͞ԹD xNޜB\Xvi*ٖD6ltHǾ Y'n8`v`eE Ƽh=!ǓIs!v&Fp/AՇ<#m^pPN:P 蠮2 ] )ZG'miqY)N|O8 |Ajr0-BT_vd$(3\U\⠽4Se%GV>OɮvLiwMZ_WIK55x/!ފ׭Ƀ9Zrوw,K^~e`.k4Z„ƼO {ŀGHsa4x)جر6HQM w1'3tfF_ f` 5ŢWFJ0yziw!/Z5]B8]$ME7;~*0M uUxz$.ZMC`{y˭eeP9c4pFV] U3.b*IpV;MjI'S3C*"-ނ4; Xp!匠f8OT/I!&}d) F"MtP2|Qb'hYWT02,7!Yiyjr%!͕/OήPQ~JQxnnoi>mn0R+hM1X@䀆RoX+.+V+f)"lɅbNt/i +Ux+_0`ue}`<9F) e(`:L \2~лmz/q t <[ՏR]?A(zޑ;҂Bh--jAnBt #۔l|c?pB&ʹH4Fn~d\i;wF݇4e?j_*|tdZnnLs-Nӳ xC? *Ff?*`ŁuQZ5Xt)8zBvɸ}v1e-ζ{apg̺ǀ`[ҭIT}څrWY_zGCH#1r 8R %jMHn5#rƬy]˪/$!08=$ Hݤm섣9LDJJfa!L+c&m\$.l.EDV?F/Vy0$W3jC?e\_ gjF?C8v׈8"Z+4vk(TRwe]b=.q".P:88Snk2KZPrʹjBr|~=!e_Dٮir$xzzu@ރ/G]XY)&GV}[$"d5uL`.|wSvHPS_fNϡ ;z\%k@F8s4`L|٦ldzF`h1F%}?{ۻzV=JnK5Y̡醌^m&oRny.5D-%^F\ xN)MNr\! BNF7x$8duoQT3wXC:g io@z#J j9ά+ VΖ $h5D~J vOQ_EHt;v~U4}/C#J"(n,pp^֤Hkō%H&Jksz2XYF5|rY&xjԧt4ǁ endstream endobj 8 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 595 842] /BleedBox [0 0 595 842] /TrimBox [0 0 595 842] /Parent 1 0 R /Contents 10 0 R >> endobj 11 0 obj 2596 endobj 12 0 obj 358 endobj 13 0 obj 3744 endobj 14 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 15 0 obj << /Type /FontDescriptor /FontName /EAAADG+jlm_msbm10 /FontBBox [-55 -420 2343 920] /Flags 33 /CapHeight 685 /Ascent 920 /Descent -420 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 16 0 R /CIDSet 17 0 R >> endobj 16 0 obj << /Length1 536 /Length 51 0 R /Filter /FlateDecode >> stream xUKaƟݽM{/wrF\.B[`I[m6A.]b)788s\ >` Q{X{R+7m-"jR"9AQh}\A'Oح@55?Ŀ^Cz峝)et"оRh'5@ŏ#oϱk}J\gաS=hڢr{sS0E;xrL&ӼٲGx =6\0I`VMs3ը"x%Ja@*i"c\~c#:`n`ˢ+1{a)kMk})?-~<$9 ~&,[_߫CŴUlZXIGxiʑ3 7Y0 |s8ɼH=xƾTTU- endstream endobj 17 0 obj << /Length 52 0 R /Filter /FlateDecode >> stream x{,J endstream endobj 18 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADG+jlm_msbm10 /Encoding /Identity-H /ToUnicode 20 0 R /DescendantFonts [19 0 R] >> endobj 19 0 obj << /Type /Font /BaseFont /EAAADG+jlm_msbm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 15 0 R /DW 0 /W [ 0 [750 0 333 500 ] ] >> endobj 20 0 obj << /Length 53 0 R /Filter /FlateDecode >> stream x]Pn0 >nREUC*ġJpD83E=uFUup )G늪mUjIܯsĩsec%L.sNMFnW~ 'tJ|EW9!9w:l\I\B͸2(qR!I7bq+S5p{NdM5-`T wPY^%<#ZRrGac ք3 endstream endobj 21 0 obj << /Type /FontDescriptor /FontName /EAAADH+jlm_cmr10 /FontBBox [-40 -250 1009 750] /Flags 33 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 22 0 R /CIDSet 23 0 R >> endobj 22 0 obj << /Length1 3276 /Length 54 0 R /Filter /FlateDecode >> stream xeWkl\3wk}ymqt y@RҊE $hQ*@[*U!U[5TRiD*y3wmѵܙ3s|3\ $A(w++7h]3 g 97 A' _D阻t?iPv8gB"gu09Odp SW#ѸPC~;s}N?š\bN9E_+q[:I=B8NIoR$Rƿ$Q8IL($>V(|u6[ wz[݄QӍ\#w|t 7)~H{Fv[u }aM3f }}Mit Hѩ-#p o2d].1R%ir7tNEkkVpۖ_-]CBjL]>fp`uVt{1m"tf By׆e޲]O䅂!EzB-jkL)xɌDs1+89 ҳ,}q1#3OV@;)1:vn;6RiƉLg=8⁖u 1ʑ@fVrs W@T(u3YawE˽r7x&T=?_3\dC?~Ck U_lqۯc E FbҼ*\;{A -gø}&=Kn${uLJLߍ*#dmΈ\k\yVve۵q̌/ʋ_rϺh;ӎwk<j{-3K !r(4R[;lVjE IUtk&$D` 8c(tf-KPAAm%tɿc-&"J`MAkp+l? ),-%p2DAQ[=0e׽x[˥ fbȒQ],IUu|T# :?ęUuR\c0I:+ h^L12"5Ճݱ]w"ގ$Q==~Y'ZyI[3o6$CV #gR*B~:c6OV1~'Y,-H8e@R&ۦjZWk{mhq6}-f΄=Hۡ==;1h$jwnxWwImv^c)?q endstream endobj 23 0 obj << /Length 55 0 R /Filter /FlateDecode >> stream x{ %(x™ ~ endstream endobj 24 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADH+jlm_cmr10 /Encoding /Identity-H /ToUnicode 26 0 R /DescendantFonts [25 0 R] >> endobj 25 0 obj << /Type /Font /BaseFont /EAAADH+jlm_cmr10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 21 0 R /DW 0 /W [ 0 [750 0 333 625 750 722 680 750 777 500 500 555 777 444 388 305 388 388 500 500 394 277 555 500 ] ] >> endobj 26 0 obj << /Length 56 0 R /Filter /FlateDecode >> stream x]Mn09"$RJUET=$HXܾfJ-όKٺѻouNjkt/wjlmiuS??]y endstream endobj 27 0 obj << /Type /FontDescriptor /FontName /EAAADI+jlm_cmmi10 /FontBBox [-32 -250 1048 750] /Flags 97 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 28 0 R /CIDSet 29 0 R >> endobj 28 0 obj << /Length1 4848 /Length 57 0 R /Filter /FlateDecode >> stream xWyly{3o{% K.CԱ!EYmI%YibY:51A (E?Q.I6mi 4ik#$fvyV]ٝy|~E)7:w !+ų]n5. $_dgg>\֕O= QϞ_y ?عcv}}I`raL-IjwփOqgR@}@9x$j?A]b:-2^g{LQ?(;oxD{Ni^|@m>ǴOCH&.B:Br !CH.B[־AH!c {3Ʒ&BU̲u5vW |z W>8Bvh*!;M i^kT+Fa N=`2 k^˦˙t&d3쾲@0d)дCb(:Q MUV5u$)~I؊b0WB "qF&T Mjbm„}]=e "&Ӷ&bb0sP`0#@l0ꚕdinO. w_@,i=%2Q^4^dbl͝1Bl(]6(а#r"V ̘ 0FI[GVD˷tHjzca)!fI|ل,13OM33F9͵Zo銏Jjj1}=]J(ɯG|f;Pa3 lQ3]a):ƛ j Oz:..:׭F-[vCi\ڹ?p<ϫjPK8^ ZB0kħ_Q0/ĺoepޟKw p 4q*A#Oڊ_DfQ`X^TF>(3fgAZzgI^7 fxxD[}kQhFg}⑷1y ʚjъaPp+gPp3}e'ᙥ׊fG*rz`{ HǷհ\t"lpe唢&(8TtՓZ?*WQSd.#aW$95Pxe֮)*+rxfXK:cЎo:|*Ng}$q u1<gx4 6v<R!S6|A /%A(0E-"tx{NY&K󬲕E)@xg>1pqIsδE|XrkNo9pxp ՠPθEe wJnWCNSSID'?q@xa~SW 3c*бaG|ֿ~fY1v֯(V4zTWZk"LC楏eVܿbEPdw/௢$ʢB páHj'\?׵ܣ"3K#*mGU(ф_pSOM0$i'R /wNNǝD@/\x|в;ŜLe5p O<&\ ɅW$yԓZ4utفXkV10f% o^iH2/T>K'2wo ]={?=U[O m܈n>e>֬ZLvSuSǸ :Z'9t_= dD" Ug=GiS*ǟ9ZY }g* |҅޾g$^)xmcaU޶Xھ#_k=;WŔ[gG]5YdA'!Y{0eM#P)C O>M6yjpcL5L,#ۓvᒢA6}9Y(gX{{ᠻ7sWzQ>~_fvS^ul7LhGaAmbGqkjbzIL9%|SϳlD9YlDT^T|TOlaWi'$lbR ,m?F)hJn"r:?6:emjVV9PAL? Ca/Fn3 O=Ts@I~ Z E`8lEn Ocp|z/f utKߨk;XE<'MQSp T>n3͎ kHd7Y=rfu){`^7E!v&}T;\bx*Z+ҿݘɓPx.#5s/-\'j^篯y`sIǣll"=蔛J]ôn_kУî{lVo6P /B`/e;o4sw^%_ؐĥw޴qurM"" I&P7` Lgl _<`36O]־QWd?T+_}45v [_I(jη p0mNevE8 +}֖$`fUdʩ2sz*8g緇4cnPř] QWwo(um}j^eC>5ew 4&<$6;1> stream x{"9Q x endstream endobj 30 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADI+jlm_cmmi10 /Encoding /Identity-H /ToUnicode 32 0 R /DescendantFonts [31 0 R] >> endobj 31 0 obj << /Type /Font /BaseFont /EAAADI+jlm_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 27 0 R /DW 0 /W [ 0 [750 0 333 970 528 361 576 465 571 570 639 565 517 444 595 600 576 759 530 827 520 277 571 466 520 ] ] >> endobj 32 0 obj << /Length 59 0 R /Filter /FlateDecode >> stream x]j )^,QXXeK!=д`t#\kf$VH3Tϕ5DZg 4֭d ߺS~Uz"tk{%}V2V|!L3@ߗz9G3pXgS$qڤk$ 70x!(wՙUKZ\_\洦?*,6Iܑm"whtD{@ёhOt"e="5tR N#@K"I8QI^D|nlȧ56~-ݻu[d5hCHskGi,~ endstream endobj 33 0 obj << /Type /FontDescriptor /FontName /EAAADJ+jlm_cmex10 /FontBBox [-24 -2960 1454 772] /Flags 33 /CapHeight 750 /Ascent 772 /Descent -2960 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 34 0 R /CIDSet 35 0 R >> endobj 34 0 obj << /Length1 1248 /Length 60 0 R /Filter /FlateDecode >> stream xUS]hU>M2ή[I&d;eQwmC51.b"}hE P"(7JѼ$$ ZlvnogϝxGLC?tɥDHINC ٵ>\<bo59yeE #SWJxΆ잷 auB[JiU zkTb͈Y1A&iӄ*+QP*e arc l8@ް? Bp;|F6OH LG̢mn$VN&-e W%&1-ն2?aM/9UU٧rCpLS'(e4iGl曝QTGʌNҐɞ {chJղ(јd 8<Z]D#zm!u*7 rUGV[զM mjh8۰ !&DrkX:)!Vp\li|KG7|^h|Z4 +e62p?S-׉bDmҵ z{YHogrlӡQ p>y)ejp;tƅs>~%ş&$7A4cbL`SC'pRvTQ<(nt |"oZ0FRlE=1'zXX'Z|cx"V,n{mwl< S^U Uw!dq]|/Mc> stream x{A@ u endstream endobj 36 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADJ+jlm_cmex10 /Encoding /Identity-H /ToUnicode 38 0 R /DescendantFonts [37 0 R] >> endobj 37 0 obj << /Type /Font /BaseFont /EAAADJ+jlm_cmex10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 33 0 R /DW 0 /W [ 0 [750 0 333 555 527 527 666 666 666 666 666 666 1444 1277 1055 ] ] >> endobj 38 0 obj << /Length 62 0 R /Filter /FlateDecode >> stream x]n0 y _v҃T!M&q!1].xQu |1_heZmáDhMf ]vFq(cWUj wlU(lS费Rz;4ʡQƗa_ESmHio"d) {0WI!ʹRִ[Uކ(;($`Ӂitd1r&t`j &/$42c7w$K ZǥF,G6 ۹_m endstream endobj 39 0 obj << /Type /FontDescriptor /FontName /EAAAEB+jlm_eufm10 /FontBBox [-25 -224 1054 740] /Flags 33 /CapHeight 666 /Ascent 740 /Descent -224 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 40 0 R /CIDSet 41 0 R >> endobj 40 0 obj << /Length1 1440 /Length 63 0 R /Filter /FlateDecode >> stream xuTle~vu`Kv[Z6Fmcm+Q&0C jCM%Ih8Ơpy=0Ehͣ#J:l>oXHg-^8(ْ,}T .;8k|HCV:09z ~`z03UC޾e՘76 ݲMDnJ.)|J1$[NP&%c!llqp+XA-5 'lM$BDВϒ)nf*sRnuuS9xGqư{;CsbZыnt)t &Ty#1t\!cXmd],߉g\eL".#hWLQS35 pI3*LWVѾJA7Kkk;3fP ۸l[0ܐ_$b-2!Y'x/i2&]``a00 DUU։X#V9+嚔"%Z#Rp98WG X"[+ŽژU&ҸiDЈ&"荪[u#c4R}C=|_9XXE!deB6ubqVጄtCJY K>RR[\ 6q%Qg4FNhn* W9.^?^XL -^Κ2lZm}sJl]Z\-{\LyܣG};{̋߬i_69_3|pyEd٧W[[V_5vZR?Ujƾ}X}<^V{++-zLH& endstream endobj 41 0 obj << /Length 64 0 R /Filter /FlateDecode >> stream x{ ) endstream endobj 42 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAEB+jlm_eufm10 /Encoding /Identity-H /ToUnicode 44 0 R /DescendantFonts [43 0 R] >> endobj 43 0 obj << /Type /Font /BaseFont /EAAAEB+jlm_eufm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 39 0 R /DW 0 /W [ 0 [750 0 0 828 ] ] >> endobj 44 0 obj << /Length 65 0 R /Filter /FlateDecode >> stream x]Pj0 +t=,Σ-RaҴJjhl8}m%l~<3$&x': 0 gBq46+JF&3:Z;86^2Z]g8i$cG8}5pB Zͧhnҿ AϥՑdz?JŖA9 IkK:{T%!VͨC"NJ}wC_-D19#1q|Rר endstream endobj 45 0 obj << /Type /FontDescriptor /FontName /EAAAEA+jlm_cmsy10 /FontBBox [-29 -960 1116 775] /Flags 97 /CapHeight 683 /Ascent 775 /Descent -960 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 46 0 R /CIDSet 47 0 R >> endobj 46 0 obj << /Length1 984 /Length 66 0 R /Filter /FlateDecode >> stream xUQ]HSa~v܆g~t4'M#XbąD]LRG )L(n.Bț37y>`R`=\E^,!a$W - o4Wyxi[h$65>;] B%ӱ0p[t *{i8=# P_6w1CP$QNai_B+e֪ItZ*gjP}LӅ2.6f=@x ϼffvF@í{pCT# vU nCleG3m$ z=^K/|̣VBwLG'7c"${r.9w'9(i^+ endstream endobj 47 0 obj << /Length 67 0 R /Filter /FlateDecode >> stream x{ 2 = endstream endobj 48 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAEA+jlm_cmsy10 /Encoding /Identity-H /ToUnicode 50 0 R /DescendantFonts [49 0 R] >> endobj 49 0 obj << /Type /Font /BaseFont /EAAAEA+jlm_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 45 0 R /DW 0 /W [ 0 [750 0 333 1000 777 833 777 277 666 ] ] >> endobj 50 0 obj << /Length 68 0 R /Filter /FlateDecode >> stream x]j0 y YN@I)Ѕ}VRCc9k!e*ɿ$}jޝzg8tV .&n3u8z0P%\`2{Qo@oNSzWn'rtW>!0sle)Cs%qjFl@%V9X{?~!XMT\QyEUnFwD<}zRuyCs75[V(Z endstream endobj 51 0 obj 432 endobj 52 0 obj 12 endobj 53 0 obj 241 endobj 54 0 obj 2340 endobj 55 0 obj 20 endobj 56 0 obj 341 endobj 57 0 obj 3265 endobj 58 0 obj 25 endobj 59 0 obj 333 endobj 60 0 obj 926 endobj 61 0 obj 20 endobj 62 0 obj 297 endobj 63 0 obj 1130 endobj 64 0 obj 13 endobj 65 0 obj 242 endobj 66 0 obj 707 endobj 67 0 obj 16 endobj 68 0 obj 266 endobj 1 0 obj << /Type /Pages /Count 1 /Kids [8 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Metadata 7 0 R /PageLabels 9 0 R >> endobj 3 0 obj << /Font << /F1 14 0 R /F180 18 0 R /F173 24 0 R /F176 30 0 R /F156 36 0 R /F154 42 0 R /F153 48 0 R >> /ProcSet [ /PDF /ImageB /ImageC /Text ] /ColorSpace << /DefaultRGB 6 0 R >> >> endobj 9 0 obj << /Nums [0 << /P (1) >> ] >> endobj xref 0 69 0000000000 65535 f 0000024044 00000 n 0000024102 00000 n 0000024194 00000 n 0000000015 00000 n 0000000112 00000 n 0000002794 00000 n 0000002827 00000 n 0000007118 00000 n 0000024408 00000 n 0000003298 00000 n 0000007285 00000 n 0000007306 00000 n 0000007326 00000 n 0000007347 00000 n 0000007454 00000 n 0000007708 00000 n 0000008235 00000 n 0000008323 00000 n 0000008481 00000 n 0000008717 00000 n 0000009034 00000 n 0000009287 00000 n 0000011723 00000 n 0000011819 00000 n 0000011976 00000 n 0000012291 00000 n 0000012708 00000 n 0000012964 00000 n 0000016325 00000 n 0000016426 00000 n 0000016584 00000 n 0000016904 00000 n 0000017313 00000 n 0000017569 00000 n 0000018591 00000 n 0000018687 00000 n 0000018845 00000 n 0000019128 00000 n 0000019501 00000 n 0000019755 00000 n 0000020981 00000 n 0000021070 00000 n 0000021228 00000 n 0000021462 00000 n 0000021780 00000 n 0000022036 00000 n 0000022838 00000 n 0000022930 00000 n 0000023088 00000 n 0000023345 00000 n 0000023687 00000 n 0000023707 00000 n 0000023726 00000 n 0000023746 00000 n 0000023767 00000 n 0000023786 00000 n 0000023806 00000 n 0000023827 00000 n 0000023846 00000 n 0000023866 00000 n 0000023886 00000 n 0000023905 00000 n 0000023925 00000 n 0000023946 00000 n 0000023965 00000 n 0000023985 00000 n 0000024005 00000 n 0000024024 00000 n trailer << /Size 69 /Root 2 0 R /Info 4 0 R /ID [ ] >> startxref 24454 %%EOF libjlatexmath-java-1.0.3/plugin/fop/examples/latex.xsl0000644000175000017500000000263612275735442023733 0ustar sylvestresylvestre CMUSerif-Roman CMUSansSerif CMUTypewriter-Regular libjlatexmath-java-1.0.3/plugin/fop/examples/times.pdf0000644000175000017500000007750412275735442023710 0ustar sylvestresylvestre%PDF-1.4 % 4 0 obj << /Producer (Apache FOP Version 0.95) /CreationDate (D:20100213222559+01'00') >> endobj 5 0 obj << /N 3 /Length 11 0 R /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 6 0 obj [/ICCBased 5 0 R] endobj 7 0 obj << /Type /Metadata /Subtype /XML /Length 12 0 R /Filter /FlateDecode >> stream xN@P@o_f&_o*r2ޘ̳۵n  O:MQi#&PeN }d1k]QWzJ!&(MjָPsU:+% UKo0cȡk{>FN;fRǨE Ns&%KoXj> stream xm 0 {I^=x0VD|{YABŸOx A{ CP"*Rnm ɴ&c :+ȉBq@H/z8jxeB[WmO75\F3i$6P3_LM+..]1F ߿՝8z endstream endobj 8 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 10 0 R >> endobj 11 0 obj 2596 endobj 12 0 obj 378 endobj 13 0 obj 169 endobj 15 0 obj << /Length 16 0 R /Filter /FlateDecode >> stream xSN0W̱=4N+ qPJDP߳rm;wFEC3ҼSeOQz>󃸤M j<;)|W(>'u8;H~쨳\o )lufm"Jb˽IMcLRו5NJl]N=frn<<&7[Ir= i‡mm-0ۺY^U;_nX=Эc70 endstream endobj 14 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 15 0 R >> endobj 16 0 obj 249 endobj 20 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream x]nG}Wb1 ,v0ydZYsd5;+ZC[Rw˶͛_Ǎ7?o=Sܟ6ؼ7{'kovH0Hug0XPgdk0o?\~|ͫ 83x௭7v;4Y&k d~~mj>H$-גC).zh[Z^·GLtq!sS"XJprarTu%DSd u%TE\rA*mv90R;JÇ7^|;< ?_~cs-}~AD'yN,{zZM}Sp#fՔrv*i_i (&g[\s\zս*&T^+aw[vl݁_́OG_oB?|gtn*(9[L6ouWSU,Հ)h@P:H@}r1-xwGS}Gx׹П fs/[xy%n~w~/@ޖ ’7l@e\x0~͌E%K"چӢD˄Xt'&z.wtfrw.'K9)%%EKp,X3l-u,P^zA?24Z.H)1xI6=TCﻚ] N_Ú>^mN9$%6lSdxVB`A! Ҹ}Lbn^ 4.|JFYetC1Ą3L.-"C+(`*^|DlEX;ߞ8ZB#${S lGg'ͦH2Wi#4,V R bTaڄlsŪH/c!1C)5~񝟮?j4q /AQU3;kjn#i~ݕ\DQ )=$98)L#`J+)U(}pqgh+Muy[}v2Fv[}rR6jם')ahڥ]^O`[=Q6R1~*[ُQ;cGayMJq.vYx:d76ݷR:45=z\kv/vP@VcV6bO'NCQYjk2bԍAYI= 1(/je8k)JyE嵤t!* ΦdW0i n&P\}VZwv}ǫ߮>]<1WwW~:<~#Ww]/:3Joc|sܓC,i"5j3a+YyKOg[ҹ1|e ΈpZG⻻"bW5:DwTcW"#jt NJE? 6vL7rv]gĥϐ:;Н;b#/ׁue1XƜWrdHC/6Ԏ}Fx=|K\EJV2,~2(Z%r#_|=~v/W~n],z,:Br m-b31 zB.%T%z_H6pKjg 1f"sٝ1L+bZlq&SA<$z.>19QrTr|og0P[|,8ĄnTIFS*yua"k`jUl'ty3yjΟХY!< `rU=J#͜Uxsn<`DJR0]i.O3v2} 't^x]<uvZJVۍnQުo :Áԙ9 b׎j 6)9 +rnDgs-풰lL<y#<j9zFFp ]^sd}qN`@D>^1ٽj&/5Mc%xc3$tǦ`n4qdux#p0Yu#˰~BwlI (9u|Ass|CFEjn2VR2O Q)LέSg&'Ċhgw's^mwgs λ_INyIpϫϐέ+ӣsxꉞXSQohJ<}ߏL><=ynfy?~I\]SCtmWEvhu]tDH+-onVI~N$% j_UŧlI+cb"+5/քӅ#F&DuuHv;۴Vdgh5aD PĚlVzOÍCuk.:Ѫ)y4.ĹP)>;jS@>LpI\ E{&>'=ȣ=G^ãxPay˃)|Po͑G[SdJ ^9]B(/&fחyC ;BgGLd^t1[\k=hR閂wzN,E>"VmgQo;ᬍ^M7dG^Dҙ_~P2 K<ڪi{>k/\ (Djɏm`R!($yPoyܥE!HK"-CTT50J@)ayuy¾W2< V{DP9Pb$n"B;WH¼$I ;wwO/0W81 Dg&>ew-L@n h&ŋ`J 8~"L{]ΰv̬^3.&<ꧺ[X 0U֎űV /]Ib-b3,]Bh{/][Op/pfbV"{{ %l.p+L/J<xYfB8+1|!z^˽_M|是ShgONv@:G9YK? endstream endobj 19 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 20 0 R >> endobj 21 0 obj 5687 endobj 23 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 680.01 186.285 689.01 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 22 0 R /H /I >> endobj 25 0 obj << /Type /Annot /Subtype /Link /Rect [ 534.925 680.01 539.925 689.01 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 22 0 R /H /I >> endobj 26 0 obj << /Length 27 0 R /Filter /FlateDecode >> stream xN@ཟb`8׹HUJP#uX-"{HA|+ '%}n^T%iwyIlY<]rL4)_p=P8?m[y8^x^=P҃u*5oPݧk4mNeԻiW)z~VC{wSZ݈%[57%"JtwqqNax`4q=ڸh_]7syLTњLE8O'0L=anásLSOc=S)i;P\vnfNާ>d܌x#շ+0Qضit%/)=U-vw^^tػ=W\ĩ5\ͥbi5VwV+fTHuRu{c9qYZuNܙIkh'"\P5m0c,oޫ+Dc)y3&,֡ s,֠13,)8c )L` SB*0)4La SB !HAR!c1HARD0SPL0 S0L1|TXa,fXBJXLXb5b0)tLC A J_W )@ * b )(`a )8c S(B P1)TLa ShB:1)A F` )C Ɛ `)@ &b )(`a )8B|);bGʼ_ endstream endobj 24 0 obj [ 23 0 R 25 0 R ] endobj 17 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 24 0 R /Contents 26 0 R >> endobj 27 0 obj 809 endobj 29 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 680.124 138.656 689.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 28 0 R /H /I >> endobj 31 0 obj << /Type /Annot /Subtype /Link /Rect [ 534.925 680.124 539.925 689.124 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 28 0 R /H /I >> endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream xo0{ aysl_2Qô&&hq Jijc9?ۏI(Nfv:OSڕ1ZN۴sS{ kꍏib''~ r8n|o<obe> endobj 33 0 obj 659 endobj 34 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 35 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 36 0 obj << /Type /FontDescriptor /FontName /EAAAEB+jlm_eufm10 /FontBBox [-25 -224 1054 740] /Flags 33 /CapHeight 666 /Ascent 740 /Descent -224 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 37 0 R /CIDSet 38 0 R >> endobj 37 0 obj << /Length1 1440 /Length 73 0 R /Filter /FlateDecode >> stream xuTle~vu`Kv[Z6Fmcm+Q&0C jCM%Ih8Ơpy=0Ehͣ#J:l>oXHg-^8(ْ,}T .;8k|HCV:09z ~`z03UC޾e՘76 ݲMDnJ.)|J1$[NP&%c!llqp+XA-5 'lM$BDВϒ)nf*sRnuuS9xGqư{;CsbZыnt)t &Ty#1t\!cXmd],߉g\eL".#hWLQS35 pI3*LWVѾJA7Kkk;3fP ۸l[0ܐ_$b-2!Y'x/i2&]``a00 DUU։X#V9+嚔"%Z#Rp98WG X"[+ŽژU&ҸiDЈ&"荪[u#c4R}C=|_9XXE!deB6ubqVጄtCJY K>RR[\ 6q%Qg4FNhn* W9.^?^XL -^Κ2lZm}sJl]Z\-{\LyܣG};{̋߬i_69_3|pyEd٧W[[V_5vZR?Ujƾ}X}<^V{++-zLH& endstream endobj 38 0 obj << /Length 74 0 R /Filter /FlateDecode >> stream x{ ) endstream endobj 39 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAEB+jlm_eufm10 /Encoding /Identity-H /ToUnicode 41 0 R /DescendantFonts [40 0 R] >> endobj 40 0 obj << /Type /Font /BaseFont /EAAAEB+jlm_eufm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 36 0 R /DW 0 /W [ 0 [750 0 0 828 ] ] >> endobj 41 0 obj << /Length 75 0 R /Filter /FlateDecode >> stream x]Pj0 +t=,Σ-RaҴJjhl8}m%l~<3$&x': 0 gBq46+JF&3:Z;86^2Z]g8i$cG8}5pB Zͧhnҿ AϥՑdz?JŖA9 IkK:{T%!VͨC"NJ}wC_-D19#1q|Rר endstream endobj 42 0 obj << /Type /FontDescriptor /FontName /EAAADG+jlm_msbm10 /FontBBox [-55 -420 2343 920] /Flags 33 /CapHeight 685 /Ascent 920 /Descent -420 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 43 0 R /CIDSet 44 0 R >> endobj 43 0 obj << /Length1 536 /Length 76 0 R /Filter /FlateDecode >> stream xUKaƟݽM{/wrF\.B[`I[m6A.]b)788s\ >` Q{X{R+7m-"jR"9AQh}\A'Oح@55?Ŀ^Cz峝)et"оRh'5@ŏ#oϱk}J\gաS=hڢr{sS0E;xrL&ӼٲGx =6\0I`VMs3ը"x%Ja@*i"c\~c#:`n`ˢ+1{a)kMk})?-~<$9 ~&,[_߫CŴUlZXIGxiʑ3 7Y0 |s8ɼH=xƾTTU- endstream endobj 44 0 obj << /Length 77 0 R /Filter /FlateDecode >> stream x{,J endstream endobj 45 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADG+jlm_msbm10 /Encoding /Identity-H /ToUnicode 47 0 R /DescendantFonts [46 0 R] >> endobj 46 0 obj << /Type /Font /BaseFont /EAAADG+jlm_msbm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 42 0 R /DW 0 /W [ 0 [750 0 333 500 ] ] >> endobj 47 0 obj << /Length 78 0 R /Filter /FlateDecode >> stream x]Pn0 >nREUC*ġJpD83E=uFUup )G늪mUjIܯsĩsec%L.sNMFnW~ 'tJ|EW9!9w:l\I\B͸2(qR!I7bq+S5p{NdM5-`T wPY^%<#ZRrGac ք3 endstream endobj 48 0 obj << /Type /FontDescriptor /FontName /EAAAEA+jlm_cmsy10 /FontBBox [-29 -960 1116 775] /Flags 97 /CapHeight 683 /Ascent 775 /Descent -960 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 49 0 R /CIDSet 50 0 R >> endobj 49 0 obj << /Length1 752 /Length 79 0 R /Filter /FlateDecode >> stream xURAlA3RBFC* -kB eYb5S"ThDcӚx6`LL/b[զ'KK`o?@@PHޫ,BL Z;ʟ_ PCU\20.=X> De^o\7#t}Ň-}pp{_ol|?|;$_D<a:9෌S8Ca { n r#lV,2kɡ ʼt`nڠ c buuhW;X>I>AtHWQU(J0LiS-yj\iJP EAi$n!활d4,yA)>J1%1V%QWedwPc§"sgC&?WM޺<|  ΆwN[o>q?<`2"{$ Q%" ە`78o KGy>[Oi]˭> stream x{  endstream endobj 51 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAEA+jlm_cmsy10 /Encoding /Identity-H /ToUnicode 53 0 R /DescendantFonts [52 0 R] >> endobj 52 0 obj << /Type /Font /BaseFont /EAAAEA+jlm_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 48 0 R /DW 0 /W [ 0 [750 0 333 1000 277 666 777 ] ] >> endobj 53 0 obj << /Length 81 0 R /Filter /FlateDecode >> stream x]n y CeJU).j `R!}DX>7&{NAn a؊נ,'+u8uV;8Z`i3ǰQo@0;wox'UEW1!0:ة$2q=?jb^jN 唬s&/P-E:YCįs4BD.tWbݗ r-MFBꑞmxs_QX endstream endobj 54 0 obj << /Type /FontDescriptor /FontName /EAAADJ+jlm_cmex10 /FontBBox [-24 -2960 1454 772] /Flags 33 /CapHeight 750 /Ascent 772 /Descent -2960 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 55 0 R /CIDSet 56 0 R >> endobj 55 0 obj << /Length1 1448 /Length 82 0 R /Filter /FlateDecode >> stream xUTohe$zl˵IQL⟍:X&9Ri v EAY'&8S2 ȆΊOBCm/]}.<!D$:5c핗_;J F*xʱD=ïD&3x96xb"<ggE!^9umΈ0x `L~9}Hf7? U{ "I@y*{pyB *u} VQEGATgXzoHy=r#コ"3JG( !9P҈Sp'f3O=nH5uQ-XVǴ(d:s*2L(GedȊ\g-m+9Z~Q+&Va.$U煎Lw_vJ]l剆 oE_J.#AG]&)d(|6tcj?@C&@J^Nե9 X=\U TrZҜ4`-˖mi 3o(Fy`L[KZlI{1(Cb댕]c!L!6M1*}. oc4( `ٻJhl@vW/#M~7Pɟ~n7VlXfF2eIPMl%~Mщ'S;A*:!, Ϟ}\~`x}f/JT'CbП9.xĊ6p Zڇhh<iF.|TyCw !&?{,-4ȿQ_s-_ Ew{BTOc[7Sm^צs!8z3A%8^y0UsVMmT !KyǗ;@kp {szSD> stream x{A@$P endstream endobj 57 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADJ+jlm_cmex10 /Encoding /Identity-H /ToUnicode 59 0 R /DescendantFonts [58 0 R] >> endobj 58 0 obj << /Type /Font /BaseFont /EAAADJ+jlm_cmex10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 54 0 R /DW 0 /W [ 0 [750 0 333 555 527 527 666 666 666 666 666 666 1444 1277 1055 458 458 ] ] >> endobj 59 0 obj << /Length 84 0 R /Filter /FlateDecode >> stream x]n0 .*(UHSI\젱=@HLi( ~fT]$0c$&@;UaXjJ3FZVI,>`[ڦUzp }#uWhl荽R-jp[jEW"$)u0nbM9:8TwRs\}:Ս~7qDewGb'Dyt`3L'I2j>u|-ĎB=;)Nj8r!Jξ4Mgej>N6= X\NTE/ endstream endobj 60 0 obj << /Type /FontDescriptor /FontName /EAAADH+jlm_cmr10 /FontBBox [-40 -250 1009 750] /Flags 33 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 61 0 R /CIDSet 62 0 R >> endobj 61 0 obj << /Length1 3824 /Length 85 0 R /Filter /FlateDecode >> stream xmWi[}l?{&c~m<''0a2I,dL6dЪBeI m)TPP@[UUJJ5TT)@[ UHsgIR,={swL"dh;%~G+v`Ow (;sٜCGv/ Go}Q_~K4vz]!w -ΊSʈAؕV 9}>g_8S'H1i?v[$) lallirN$8v!Os;Zmtvo#wٛ:m:LkqJ'6Xsh>b{g11l c؞#D5Q]e,O57F'=6sKoy i/ QJrPbǴhP188V#ᙫ-U^w['4^%ѴKhXXg$sQA8hF}HA/ f w)ʥq7Yix)B"< }oWi<]M-UNţٙSQ`T^]stA p&wzH ٩t9fE;m;<4/$B5%ݚLf6vЦRh/ޑ:yX. : 4CtZ7.'ΰCB23Ev&,f7FVWt#RE*9BA.ߔRz^A:\Hܹ]Q}Kխeޯ'ܢnvFb(k7 =(?JlےCs#-\䙮^pcFy(1;R :YxgQҟ6J4% H^:F-QIw *K|WH +xTQ&/[y4.᱁y@]{u-K^7&/6iu9ݰm ձ}=c6Eդ46pYQϟluɑݛ>o|\ ,]NvtyJ<29Vi f\"^0f~^@,ptghdpԲ\$\<ɭ.}(_3;i)FB H&,EKtEo}kګ,X\Z(42@k:gjS&qgx˨z]lLwZmq|-<l\)!c@Z`p~v[Fêxr8 +J.Py>2:$pjl\i|sn:R|;vnQ:dB#\-N "6"sT$enq'/tBabGh^S ^*[:szaSl1 endstream endobj 62 0 obj << /Length 86 0 R /Filter /FlateDecode >> stream x{!%Q3 endstream endobj 63 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADH+jlm_cmr10 /Encoding /Identity-H /ToUnicode 65 0 R /DescendantFonts [64 0 R] >> endobj 64 0 obj << /Type /Font /BaseFont /EAAADH+jlm_cmr10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 60 0 R /DW 0 /W [ 0 [750 0 333 625 750 722 680 750 388 388 777 500 500 500 500 394 277 555 555 444 388 305 777 500 500 500 277 ] ] >> endobj 65 0 obj << /Length 87 0 R /Filter /FlateDecode >> stream x]Kn0}NeD"U*C=CTe`ORK|gcsfѻtAk<5.]I%LYmVQ.@mnN$eF7"_t=C ^\,dsYRײ%qMn¤fnBmՑPl5PJMZNio\%j]ezډ%qЖM c[h=TUМECs)Y%cVv$DֹCNufu :yl_8@ؑ#R&"FbIf)4]TxK5P\w\7v D\ endstream endobj 66 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 67 0 obj << /Type /FontDescriptor /FontName /EAAADI+jlm_cmmi10 /FontBBox [-32 -250 1048 750] /Flags 97 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 68 0 R /CIDSet 69 0 R >> endobj 68 0 obj << /Length1 4496 /Length 88 0 R /Filter /FlateDecode >> stream xWyl$gWU_]GWv݇qw/}3I3gqld2d&NfrLHBf)@ vW+%h VڕK !vvV˲ H`{_U=LnUu}GU~ BJfWu=!YB7.l>rN5"5GzvUq7 p|g J$8Kw}Y^z16Q_ }s1+Gÿg.;_Q>F$qr;[j"<3EWHtp&I;R6)rH%U:Ncq R/ (> E[l(<Wǫh9Bb#D"DF\SxӄhBBx_>F^Wk5wMzU^'p1׉Hrbk[VUosD-ڈf^U|+7 .Y3ek`%h* Sa粦*|Ȫm?ȝ}y( '(XKQ%xTyqi zvlfpfѐO'?lA^wCg0WV 69*QjQx}m@ + H] :QC D@inw|< ]܃ MxZH,}(1f,5<ž⑓8pvP/Ray $dM'e+ib,UьŅb{$o_Ѝ%Yp~fDѧI􉄹isc4o?$Z92s#!&kb;Lkq+t g\i-AM;?G73:(fʼn=!}=ImhM=?|P݈1s|}  ízZ<uWcS} ;8_TROq(h+\HEh}:rF?;},+A۵_;K83`VUwkt( C_H4ѬQȅ!5;A_}lZF3-?X[f:S;SgJ.q]';&$tB8.7?MM/8km3SJp4H4de:sf5ʐ(͍IQБʩ8?g~Ub~ܢ"ȽsvyMv#rsXHP!Wf+V#4bYowPo(4U?ㇷ uİzǵo R#aIɔ[qMjH|K.-*>g\) =n)7b用la_1hpA x!"\%ѧApP ,woDw ե ZըYol*Z8rCpfqIrx&wC ̟.ҁ_Y{幧\5قD>E\y1+tuXG/}^y'ٟDGBg{_C?y7߽k*A!ցroZ!t΍qբ\}s7,A({,sji힁,b+ ]X EXuf)0y5j+Vc6PԘNH wP^@~ޕ5Bv5O!,@#6,}}aɳ%e48E42 U laBU`hPlsx&P/KbZVBK N]FUUOJ%,t`qAL; ޔpƂ}Ǧ4 Bc Ta<1&^ǘ;0wקzZ f ~I3'C] b!JaENڬa51!!?8\=r 7Gƹ=vf:#=.kJPGJhZ>VnuN |,՞mJQ!gNy+?[:~,Qs!ϙ]M&c{W%('kB7ж堂A.f Y Hԁ8[O%Iv{R=4TlvԦڃ =$ G<\yCHM$jku^>4Z`p,{ lC>8s!}<J- endstream endobj 69 0 obj << /Length 89 0 R /Filter /FlateDecode >> stream x{"/(C endstream endobj 70 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAADI+jlm_cmmi10 /Encoding /Identity-H /ToUnicode 72 0 R /DescendantFonts [71 0 R] >> endobj 71 0 obj << /Type /Font /BaseFont /EAAADI+jlm_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 67 0 R /DW 0 /W [ 0 [750 0 333 970 528 361 576 595 600 576 570 759 530 827 520 277 571 466 520 571 429 432 490 ] ] >> endobj 72 0 obj << /Length 90 0 R /Filter /FlateDecode >> stream x]j0 .JbJat rt1Nr#ΐglIٵ|* {p:ƠjYC"zVU-]UfI }ğ~MWl`0Xw׵Zvl :Cj2)MaD?$3`Ơ W< er"o;w;ô#:=Qc:T< NDu4SMLL)C!*"sL'B_+ԂP^Kj .dR}> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Lang (en) /Metadata 7 0 R /PageLabels 9 0 R >> endobj 3 0 obj << /Font << /F5 34 0 R /F3 35 0 R /F271 45 0 R /F245 39 0 R /F244 51 0 R /F247 57 0 R /F7 66 0 R /F264 63 0 R /F267 70 0 R >> /ProcSet [ /PDF /ImageB /ImageC /Text ] /ColorSpace << /DefaultRGB 6 0 R >> >> endobj 9 0 obj << /Nums [0 << /P (1) >> 1 << /P (2) >> 2 << /P (iii) >> 3 << /P (iv) >> 4 << /P (1) >> ] >> endobj 22 0 obj << /Type /Action /S /GoTo /D [19 0 R /XYZ 72.0 720.0 null] >> endobj 28 0 obj << /Type /Action /S /GoTo /D [19 0 R /XYZ 72.0 575.027 null] >> endobj xref 0 91 0000000000 65535 f 0000029903 00000 n 0000029989 00000 n 0000030094 00000 n 0000000015 00000 n 0000000112 00000 n 0000002794 00000 n 0000002827 00000 n 0000003563 00000 n 0000030334 00000 n 0000003318 00000 n 0000003730 00000 n 0000003751 00000 n 0000003771 00000 n 0000004116 00000 n 0000003791 00000 n 0000004284 00000 n 0000011449 00000 n 0000012701 00000 n 0000010067 00000 n 0000004304 00000 n 0000010235 00000 n 0000030447 00000 n 0000010256 00000 n 0000011415 00000 n 0000010392 00000 n 0000010530 00000 n 0000011634 00000 n 0000030525 00000 n 0000011654 00000 n 0000012667 00000 n 0000011792 00000 n 0000011932 00000 n 0000012886 00000 n 0000012906 00000 n 0000013015 00000 n 0000013127 00000 n 0000013381 00000 n 0000014607 00000 n 0000014696 00000 n 0000014854 00000 n 0000015088 00000 n 0000015406 00000 n 0000015660 00000 n 0000016187 00000 n 0000016275 00000 n 0000016433 00000 n 0000016669 00000 n 0000016986 00000 n 0000017242 00000 n 0000017892 00000 n 0000017982 00000 n 0000018140 00000 n 0000018389 00000 n 0000018721 00000 n 0000018977 00000 n 0000020148 00000 n 0000020246 00000 n 0000020404 00000 n 0000020695 00000 n 0000021075 00000 n 0000021328 00000 n 0000024105 00000 n 0000024201 00000 n 0000024358 00000 n 0000024685 00000 n 0000025110 00000 n 0000025218 00000 n 0000025474 00000 n 0000028562 00000 n 0000028663 00000 n 0000028821 00000 n 0000029133 00000 n 0000029545 00000 n 0000029566 00000 n 0000029585 00000 n 0000029605 00000 n 0000029625 00000 n 0000029644 00000 n 0000029664 00000 n 0000029684 00000 n 0000029703 00000 n 0000029723 00000 n 0000029744 00000 n 0000029763 00000 n 0000029783 00000 n 0000029804 00000 n 0000029823 00000 n 0000029843 00000 n 0000029864 00000 n 0000029883 00000 n trailer << /Size 91 /Root 2 0 R /Info 4 0 R /ID [<348C5E26017C31A484ED125F07E9301D> <348C5E26017C31A484ED125F07E9301D>] >> startxref 30605 %%EOF libjlatexmath-java-1.0.3/plugin/fop/examples/latex_docbook.xml0000644000175000017500000000764612275735442025433 0ustar sylvestresylvestre Very simple book with mathematical formulas <latex xmlns="http://forge.scilab.org/p/jlatexmath">\JLaTeXMath</latex> The Java package \JLaTeXMath combining with FOP gives the possibility to write \LaTeX commands in Docbook. This example has been written in using the CM Unicode fonts available at http://sourceforge.net/projects/cm-unicode/ . For example : We can use an example block : The formulas can be in displaystyle \sum_{n=1}^{+\infty}\frac1{n^2}=\frac{\pi^2}{6} or in textstyle \sum_{n=1}^{+\infty}\frac1{n^2}=\frac{\pi^2}{6}. Several centered formulas with gather environment : Several formulas with flalign environment : Several formulas with split environment : Splitting a long formula on several lines with multline environment : An array with vertical and horizontal lines and different sizes of font : libjlatexmath-java-1.0.3/plugin/fop/examples/latex_docbook.pdf0000644000175000017500000013504712275735442025401 0ustar sylvestresylvestre%PDF-1.4 % 4 0 obj << /Producer (Apache FOP Version 0.95) /CreationDate (D:20100630204109+02'00') >> endobj 5 0 obj << /N 3 /Length 11 0 R /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 6 0 obj [/ICCBased 5 0 R] endobj 7 0 obj << /Type /Metadata /Subtype /XML /Length 12 0 R /Filter /FlateDecode >> stream xN0^ha ś颋^w푑A!ܫy# –e1?%;T YtI^q; 4Fm^栙晬h"& Ps1F9^ ShuI1niN=6 n1T\N 98 ~4*k6c +:.FV76ECY N3&% iwy%6d:q)oG z(gX'OoEMP/)M+3vI*DAE`-V֠OcC4Lй)R!63S S96 endstream endobj 10 0 obj << /Length 13 0 R /Filter /FlateDecode >> stream xm 0 {I^=x0VD|{YABŸOx A{ CP"*Rnm ɴ&c :+ȉBq@H/z8jxeB[WmO75\F3i$6P3_LM+..]1F ߿՝8z endstream endobj 8 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 10 0 R >> endobj 11 0 obj 2596 endobj 12 0 obj 356 endobj 13 0 obj 169 endobj 15 0 obj << /Length 16 0 R /Filter /FlateDecode >> stream xSN0W̱=4N+ qPJDP߳rm;wFEC3ҼSeOQz>󃸤M j<;)|W(>'u8;H~쨳\o )lufm"Jb˽IMcLRו5NJl]N=frn<<&7[Ir= i‡mm-0ۺY^U;_nX=Эc70 endstream endobj 14 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 15 0 R >> endobj 16 0 obj 249 endobj 20 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream x]ˎ$qWR^bApgƀ/ !?k3;ŌϠk`ăA&"Oi|__NOIe=Χu>bZ+|ބ;?/忞">x ??.ڷ%\M߼_(L/&Bwqvc&__ߚ?AJEja|uZ!#ArX {Z'jl-M/ M"g\+t4DhLZR.m-f!Aw9PMm e U' MJ|U%Gsg g%BuINsnd)$-N;G'|4 SPf.(i$_CK%4J'a )H';buK{?b%f iImݔsT#{_g(`$sJ’w4p*Hsvn`ޱS \gNƳd'pZ$C)X:4,LJe'PKZ6Feޗw—+?߉]@2J +uwCM1ŸcQ#4cC2)%X3VYU֖+ tJ1]q(X>_i-UZ^kIffv.Zil4N=pz7^:n&ɼ^>_?}^usfuWźd6oG`yFMdt)Ho.ׂ̳={O}Ǣ UeMcQ 6{RPȈa"Vp(בx@47R~$UJU1"Y`O}.p/j&u.c< $Ȕ}xxbVr0 fTo~+0 4euF;V՜]N-l|I鰮Zm:]S- ֽ)dn4LU`Yi( { ^ 9V3تҺd0:(ci2o52c{AככZ[)޲0xz4;sn *(*Q̢^[.PgB"~ ܗO;(fࢡ"pP=)򮠩T"oΡu)WҌ0y;sYv3M?SN a(0ca_Wi^n])(mhNt |艚/7 s2x>_tzK94C>H6OVyN)4}w_x9,0Јj=[M({jEH6uxnJ9@bqhG/F@*VOS8vBq^>oj,l&%\։N@Z3dp13ҒTɧd5]aI q18F,)zѷzq*k%ѤT¿܊@EL7,K wqT e@m\}˓ȪR{FnU[b,N|ê iUmސXn=dZ(цS1jz[Qc%`GGrF􊛅]0h hth匿Jsjܱe8U篜;O_ve -G(7b=}^8"n/dJuhk! ꈰC:VZ(2dY 3mk#D&n E3 ] s){ǹjULXU,i3 Naɿmz_OlCζò& m*r5 Sh !m;@f ?Pl<Szq5ɲUX5Gujq0cfs{OY.;jm||x_kVUwfHUK2E2EiUEJ.Vm5 [cmI8t)\KNEQQ=Ņ)UF1/zڞQi{$Z'(2/*⢺va,2Liu!x7k,lv agL\`!3AO;}XR`>'3oUhU>͊J.bv;:v5x>v7a޷w;C&4<|dk?@fu:W]uIWJ\vQx4n{ƈIhrf79+ȃ2Dg$'Zaܒo1[PJ2ލ4ș% &꧟NBZ]R 6}Z1bA IՐM:rÌoPѕ}(lS^IG {)X9 SG^s^ADf9W/E8N-0"0根ﶰ#P?mP JI~33tӗ+v n%h4[^#!:Z! xV5ݿ>JKRBl^[aĖOFб,ŻRKw؃}_!,AFrh'Fvqg1Ο9_.c=gx.T|o[`;5XZl=$1@Ӽ,r揹Wb}ZfAJ2Qj7Z5?qjnNbyD歽-–_8D2u@Qe,ѧ]갱x"vώ[Ѵ7j] LvqM͗τ.%'Lr]UM?A D° <"Iΐ3 Nb F0v/"{6w}fhf\Gs7lW50{mꄞXEb/)R+"4']m("f/n]-[)7; mp>t3KB )0hTW08sad֦2aO 2Q[~^3uvS.w`MVD\Jb+( |j'FRp/:NJP'ȅK -M('RVCd9^L V9-=3 2cTmLqhN;x!}`6Wg`UЗR_?<|Q_%7u#Cmh/<$;`iϦ\V1THroFAE#g쁝&4JL!VŦTr$ao $7dmPzsC&tt0V} J7]$ǠhH$߷Bv 6dO$KYDr3t0 C>| <:&%ڡٗμuN'jE'Lqt<2?]Poy(Ж<ń^VcFģ݇-y&'ъ#[{H^'D2H^X pLyAO#KgPsܟGеݚ7##HJ7#k(c >}Byz|ʆ1qvw-,vNm~<2|0n2=q @517r@VױwfE:?J*VE@aAW vUm?Rs=آ-٥&VZ33)+A%()6XXҵվnw Tڵ.ɮv)v IJnV8d^Q nM(# $l|7P>qaubXVj nmcە>GOe2Ldw,>mjR'8ۙ=w״m6&od*jn0AXrp=Y6KI<|a){Ē/2vDBU,vw26'])ApZ1Ouݶs<>xZl:r׏PF9D菉Ɏ~='@D3HG>( ]sCnJ6yn@% {k}YzX_N:: D_D'fۖ:d Sa叟:Pk2SCא'e:ñ!{Bu)_w @l)*X jg7S5݂Ԧţ=C"˹olv h+.qB/n٬ҙ endstream endobj 19 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 20 0 R >> endobj 21 0 obj 5864 endobj 23 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 679.624 187.709 689.624 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 22 0 R /H /I >> endobj 25 0 obj << /Type /Annot /Subtype /Link /Rect [ 534.902 679.624 539.902 689.624 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 22 0 R /H /I >> endobj 26 0 obj << /Length 27 0 R /Filter /FlateDecode >> stream xNPཟ.ˢ3IX*CbP=Bq,(ؿϽ-Ci~t8 M)()܄i=>"5_!_vOr_{Ͽ݁Ξ*) 1qo+ycqun\6M^Wi)>-%"oM8GDus.sqړڟ{vܾ]~265Qz( sw5|}}s4sn֨%'ȧIWSƑ}+u? ¯#}20ş8#8>f.?Ć6VXwL}EW1EWajqkSJ<($uV$~lZ,Wbn$Scܬ,VKD*l> endobj 27 0 obj 827 endobj 29 0 obj << /Type /Annot /Subtype /Link /Rect [ 120.0 679.624 140.409 689.624 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 28 0 R /H /I >> endobj 31 0 obj << /Type /Annot /Subtype /Link /Rect [ 534.901 679.624 539.901 689.624 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 28 0 R /H /I >> endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream xKkSAl67,*bEq!jQhPA?srK 7ɜg.g~Y7d=vKӏIw}%/\rڦ};9uaWqYB9N^Ng͏Iƀ_ܝn7tzc<7wjeIV9/kiw?uvi.[JnJ|qW(-~3[}՛xR7tl:KWc=y}yz빢͟|HG\TK[i3D<{.$A gn ܕ+JCBU *qT%jDRP!K-C$-(]PtJgn$+IdYeAYVdYeE Y6dِeGYvdى 4!&ҔXKSbiF,͈4C,Y: d2eFYfdeAYdYeEY6dِeC Yvdّe'.҅XKWbJ,]+t#n Y:td2e @,32#˂, ,Ȳ"ˊ,+Ȳ!ˆ,Ȳ#N,Ce !!2XPbF,ÈeDu@u@u@u@u@u@u@u@uuJ?T+~ endstream endobj 30 0 obj [ 29 0 R 31 0 R ] endobj 18 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Annots 30 0 R /Contents 32 0 R >> endobj 33 0 obj 676 endobj 35 0 obj << /Length 36 0 R /Filter /FlateDecode >> stream xZ6WFIQEL9e{']\jNtՖH#)w?Vy'`bS<$t3Y(3Y 1'ظX{@!MCC+GkSWc~l(erXF)$U3INv-6*B">?H h Mؖ#ojV#o #Me.Yx+Vշ^K4zaͤ a]^(,jE/î\-]tcWD3ڌ*Z*BEjXX;Em| !BoFZ/s 5p˵{. (/~tAZ?̨􄵜 [Zфip(0Q;a2Q;FP;8oO+~ } ޤm>NYۋ8oүHAi,G d:f[x7@U' -jAՈ9P@E')bO0qL[ )쾄)F<o{3'r۞ݟ'-P:G侒Ђ퉷KVBoAJn+l"6Kսޫ$ePe,c ]]8}V /Rd4N@{1`h#` 9D Ls;qD UQVʁ <.mޘZGv{Eed(Q+A灃նBW;f fYB{+wRN p9z`o ')(j]jkWv傽3\Q;7]U~p(K<!.pv&{?-? UnċBP*]34Ԉ \ va}{F#[e/Ϊ'㪟"]{pH#/yeM3ZcSx7u=(w̱Ca'ŝ.gstP|m~8`hx~-VX88w@jA0ꀪ5=|wm`8QLN G'^ w`* pW(QÓ ^DP 2܀9l/C!j#9ܡ 8TR ^e^xj hL"^/C]ᵢhݭe8FZ[IMU <6 Q^ qUBlnD-vh4tE)d50i+ endstream endobj 34 0 obj << /Resources 3 0 R /Type /Page /MediaBox [0 0 612 792] /BleedBox [0 0 612 792] /TrimBox [0 0 612 792] /Parent 1 0 R /Contents 35 0 R >> endobj 36 0 obj 2105 endobj 37 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 38 0 obj << /Type /FontDescriptor /FontName /EAAACF+jlm_cmsy10 /FontBBox [-29 -960 1116 775] /Flags 97 /CapHeight 683 /Ascent 775 /Descent -960 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 39 0 R /CIDSet 40 0 R >> endobj 39 0 obj << /Length1 752 /Length 80 0 R /Filter /FlateDecode >> stream xURAlA3RBFC* -kB eYb5S"ThDcӚx6`LL/b[զ'KK`o?@@PHޫ,BL Z;ʟ_ PCU\20.=X> De^o\7#t}Ň-}pp{_ol|?|;$_D<a:9෌S8Ca { n r#lV,2kɡ ʼt`nڠ c buuhW;X>I>AtHWQU(J0LiS-yj\iJP EAi$n!활d4,yA)>J1%1V%QWedwPc§"sgC&?WM޺<|  ΆwN[o>q?<`2"{$ Q%" ە`78o KGy>[Oi]˭> stream x{  endstream endobj 41 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACF+jlm_cmsy10 /Encoding /Identity-H /ToUnicode 43 0 R /DescendantFonts [42 0 R] >> endobj 42 0 obj << /Type /Font /BaseFont /EAAACF+jlm_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 38 0 R /DW 0 /W [ 0 [750 0 333 1000 277 666 777 ] ] >> endobj 43 0 obj << /Length 82 0 R /Filter /FlateDecode >> stream x]n y CeJU).j `R!}DX>7&{NAn a؊נ,'+u8uV;8Z`i3ǰQo@0;wox'UEW1!0:ة$2q=?jb^jN 唬s&/P-E:YCįs4BD.tWbݗ r-MFBꑞmxs_QX endstream endobj 44 0 obj << /Type /FontDescriptor /FontName /EAAACG+jlm_eufm10 /FontBBox [-25 -224 1054 740] /Flags 33 /CapHeight 666 /Ascent 740 /Descent -224 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 45 0 R /CIDSet 46 0 R >> endobj 45 0 obj << /Length1 1440 /Length 83 0 R /Filter /FlateDecode >> stream xuTle~vu`Kv[Z6Fmcm+Q&0C jCM%Ih8Ơpy=0Ehͣ#J:l>oXHg-^8(ْ,}T .;8k|HCV:09z ~`z03UC޾e՘76 ݲMDnJ.)|J1$[NP&%c!llqp+XA-5 'lM$BDВϒ)nf*sRnuuS9xGqư{;CsbZыnt)t &Ty#1t\!cXmd],߉g\eL".#hWLQS35 pI3*LWVѾJA7Kkk;3fP ۸l[0ܐ_$b-2!Y'x/i2&]``a00 DUU։X#V9+嚔"%Z#Rp98WG X"[+ŽژU&ҸiDЈ&"荪[u#c4R}C=|_9XXE!deB6ubqVጄtCJY K>RR[\ 6q%Qg4FNhn* W9.^?^XL -^Κ2lZm}sJl]Z\-{\LyܣG};{̋߬i_69_3|pyEd٧W[[V_5vZR?Ujƾ}X}<^V{++-zLH& endstream endobj 46 0 obj << /Length 84 0 R /Filter /FlateDecode >> stream x{ ) endstream endobj 47 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACG+jlm_eufm10 /Encoding /Identity-H /ToUnicode 49 0 R /DescendantFonts [48 0 R] >> endobj 48 0 obj << /Type /Font /BaseFont /EAAACG+jlm_eufm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 44 0 R /DW 0 /W [ 0 [750 0 0 828 ] ] >> endobj 49 0 obj << /Length 85 0 R /Filter /FlateDecode >> stream x]Pj0 +t=,Σ-RaҴJjhl8}m%l~<3$&x': 0 gBq46+JF&3:Z;86^2Z]g8i$cG8}5pB Zͧhnҿ AϥՑdz?JŖA9 IkK:{T%!VͨC"NJ}wC_-D19#1q|Rר endstream endobj 50 0 obj << /Type /FontDescriptor /FontName /EAAACA+CMUSerif-Roman /FontBBox [-1135 -387 1495 1094] /Flags 33 /CapHeight 683 /Ascent 1094 /Descent -387 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 51 0 R /CIDSet 52 0 R >> endobj 51 0 obj << /Length1 13496 /Length 86 0 R /Filter /FlateDecode >> stream x{ W̪oW׿+KjdI,ے-˶-62=6`c1m{a ;206f l.ŌZ{VF^{߽s_p/#9uI$aB艻<{^BYϞ{Cɟ D=gNZ0Oӿw ?OرH{ӗ~NdB۠O? Y_&=gz$Gk/ ldo#8;>wz^X6_"s,WܗiOW?sC5Y"G̅I)uxTaN )| #$9ǹpΝk#yK&/"w7-yH5/aN;p?u D0ϳ`kb;8I%M-P A\uyۡeE$ "$A8I Ar,O#d?\{Dn2 ;6FHR$'w|AD'IJi<=%1*/'r?ъ5)W7)8xBIƽ=2 MjbB_J,橻>O>N,, M*6,zٓ'm< Ćf7&6rO⏼ Qp6&BeԤ;*܏8FM=ܾsw͹/O.]{x!w~70:{;pMX>̭^5Ei -ϦNj7'[/^(.P<8W :<`CxS[%KqavN,4׹܇A*8# ^U B7A㩅4trP1 9Ň:H8x#uGn {7>lvܞo8HG]2%ov5c]Zak@Wmt6M), >+v  a!PRsƃp\yO =EH! G!vfIO@)"K)e_RyQ@! 5|A7`,BTزԩ̉S^8-ڦdu%DT: ˂3~r]rSߊ ]t%Jn*\T\n*PQ]rQlu7{7=qXV9rV0~Mr^++>Mpd3嵲3^A4y.ZY}u7n.dzoW$op!e 8j[/DK$*l/9SSx=Y֧IR5*6'hV-f{Br}i֣xvȃ i:"*4<i46H48Y*/d3|Ɂ3R";OnGi)׵`:Dt8Zn"-h~ŒSb)EKV$xXU{&WD$Sl? B8T΃8RZ7N nZg$~^s$\5rYhqɨW` b'quRaZlPXmb3f/.O4.(?h%P2><.9މn^KoT SC|0]n#o(UK?X';40\-K" %Ъ,@ nZdҪjP?ay3c0O&pЁk4ud-s`ӊ/6}Iwgpi.u,inh^<1<^7y0rݲto/Al_-oo |ϹSh!@X#0# ղSneQC5f%F&DP@"siZ_r2'R 5jr hVcQdy60F&EoU2}rtdQ[?uOSRۍ8y+n_~D$v%5;+o qsY !?̄#d~, 㺦~x&K,u Vahjx=B9^-#ҁv6Vy]={`mfR䶛vqU{z}$M?e uXK"ᗉFI iDcXI׶vVMY,BBV5˯.`I˴ҰiA%#30)Uy0~M_"~) :hc@:&&r\$TA)TF@L'zh fPCmE3<=xWPM-n"Z]O/fp(1 M]zLkBpO47yW|ǚiOyfWCx3;5ҩWD#>;9٫u#ݬvg1{onyl`u̧h´}5]~#=g VT^9&MCE)I->(Mf>xr0<ݍuPp &2xP$!'cO-{Jsɣ;0Q|ZVٵw/ :xPQ?2Pa4GP 61(l][(K TX9DshW)0TWur=1֑, Ma@.W$p(iSs!BPxP8.FҾTy[C?nD≐W3G{e-3Rp qc Fɉj#n^a>֠B0ޘM4)$: #:.TV$mXE[7cF})GQtx9!.0g@s@fOqabEߒ{M :xi8z%f  3Bև#jzǎnHވ-(}xoڔDܻPG6s @w, c {MsNgZ7@# *ZlZ70EY1ܦUk4+՗IT.;ZKn*5Oy>4pЗ U $zCKE_oj׭@ӌd57vo\cpY-wfݰ deCW=,d𴃟=uP# TȶonmK ٧S>7Y2QhcG|3|zNvS[I?7&}RevR;?,rGoɆ~ꎙZf$(&w=|6r{E 0(. K@B h+ nƂoq5dTXg RL=}ۭօNr<Dr È7?tϬn-4N,ÜRhBLG~xRc\N۽%5~|VYii:D1ז&v&f!ǜc6&L &؜dD+X&b,a~EѽkrЬ U)CLch+4}sZ&/L~}UV!{F^#彀dz[EF0csn'jn\zڪ%ZL[cAZ,K`X 5Nn+MIimQcXC? HbG~$'-TbwɏDN2K|ݶ73O/*]|Gr wE-ĈCZ|O3Z\ݝJsGGZ_Ϯzn71Mչ_4ɋ[*Xپ 5cEA S@,8F6uZ%JLR"dT FSAT; J7X V 2Fy:CΡ`W+pxwj||9=FZ+_:V|i=P q3=ce䟼*Co37_TG g,0څU+ی)@L $,O!O_~9w}efc*U臟#ʥ?zGEpxx} -+UEk沑& uHlf4lf(XBJf0J5h#|r0pXP<\pY Ehz;3kͅB#o%[Y3l,plȉȿ&mWR7EOwWͬ6ixq 5D50jqb."]$ct; C_S5%0_-jO `֎jKx%HǰFa9^iA"+C&D#t<~ˉwNM6#N(# pFzj)Ԏܸ)z !W$gYoTxg}zSG⹐>A"Tvo Jwr5D0.F]hyƀ=_6yΥC9K!?!v Tr,/Vq] JXyDW3`[$̌H]4uj-XEPk+ iIe,m8??Uds敝0fwa}0€?n?5] n)UTf, (3x+\-Nб##'‘QvH&c屄\orc?yTeK&PiP{Je (BI f y^i5h T9 McXE!m $Ӹ1̶5̶`|S\Me̙ pR(0ՒW17ӦwwH43<ßd;Z)!!!h]+ PSC0e`y! +a<ʢ@DBA\w4-OGmTPæj %P%֣t0]O N )F>pz(1񛎿fH4q~̩>]^-6=;3 1C0e#[bF`n`U5@-w>sļu{?䊘b;a#*b"AV $@`(~/LL+ST,#JmL"*-"D Xl&.:g+oc 1 K2`GK SRzcCSԡ~y.zGR>ouUsO+չ}zwUyYkw|? sWFt_Kj4!?_@wEkAKM4Jc7Qe2cq-޶@]2n8o^X妳~ΆƆ1wGLDvw9E>/'x_fj3ܭΎ>TH[_ny{&?΀]ɳ?i1m#pfQ撏*k76^HpD=Ԓ TRkAДWg3o?4թ|2t{ou"!B: ,o85UF02A42Mw8VK񸞓=fޕ]1~Arx-p_Q+s}/L7 5S:F@)m2X[ԽbԷByuIݐkȿ >=%wo7>ã{8\;D, 5"|S<Mg]#S?{dϭ_~Uxl|W a3t|{5\^v:O$=Qf6>H[t;Fy,`%W]4bM*lqB, LVYs,MZAu)ǐ3.ƚˁGkNNK -IjԠB:MLf -19[0& UWl}#6b k1v_(Eذ'|Zpռ!-^<~s_&EyNfj\yܶS7Bn!.ER;WYtȟCY~''G|}xƥ3gy_>';r/ Wbֳif -:Ѧ*3ejKߤI' @3 g@E@,>bTZEm+(N@(íD, u]O0rчo +z_}I0rpo3S֟s_?map$ ce$ GO6>x Y>Hl] XMc"쫛V ĮikpG7l7VnU&N*l1q;26sE T)H+m9*j=uߍ'c[ȾxJWG>dBH>pL{{V 2wu-C<^=|vE[m5P/h;/SO64pN.<(IN;Qw FsxnОu7V_JKSqx@7HolFx8HEwzAkD"G]ds$=Mh|}?I endstream endobj 52 0 obj << /Length 87 0 R /Filter /FlateDecode >> stream xQ` 8eh߮ endstream endobj 53 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACA+CMUSerif-Roman /Encoding /Identity-H /ToUnicode 55 0 R /DescendantFonts [54 0 R] >> endobj 54 0 obj << /Type /Font /BaseFont /EAAACA+CMUSerif-Roman /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 50 0 R /DW 0 /W [ 0 [760 0 333 333 333 500 278 916 277 527 722 555 444 513 500 555 444 527 500 500 833 555 555 722 388 652 777 680 394 277 527 391 555 763 527 555 722 750 305 277 500 305 1027 680 555 750 444 333 500 ] ] >> endobj 55 0 obj << /Length 88 0 R /Filter /FlateDecode >> stream x]_O ) A[,13&8NgG ._X$j{܅akݞ&':HttJ*71owqUi.ϑ#Ӕ.] O &OxDdÁV6)͜xc0ݧMKxۦEՙrԀ<-TKL#o ;]!APۀ:Dނy #')AԁȀa+᧱k ?@3~~ $ ځ`p.bTph`pJ `=;Spq  'y wpNnEgUy6K]^Ғ9[kv)$wN)P)R> endobj 57 0 obj << /Length1 1684 /Length 89 0 R /Filter /FlateDecode >> stream xUTklUynή iݢ[vRܵ4UJhQFDCCGI5v[̶vs>ιw\ %;mV ӽnZBP%ܐKDYť]ɕD(k;sx׏Mć0z|G}_`q|3oGK gu_ݟO2vB!y)tBdUwϒ4<|CNduY灻qgm2&qPJ0/B`<Fl7ʷxN8wAfjIA)9ku 'F#6=\m.kF,Ydc׍F+!K2B4LEg^2Vt#F>/d3qiju{;c,3ڔ'j 9,jd`)FSVaG|z3@B*е@8FnLSe E\Lȣe'7\e0l_FA7Gv Ij8Ev\ rr@"bfip·6|S\9w>nhtQ}ڬx t$mdhx2@E뜂v+bzu֕p;f4ChUFgg.]l 9QbtYZK anK1V~B5lcaECAv%t z;>;Yܷ -rܞ"V 9Y@Ao*CRWK~ЧTBY쐌]''fڽ:bbEqRʊYrQ#v* }O !MA/!6 DB82!=بwzIW[05P$WXs^GZh'4Mlr~rJYȧ"_ n,ZELΒot<#k*e~ȥ`&ZxaG$xNxX\[ endstream endobj 58 0 obj << /Length 90 0 R /Filter /FlateDecode >> stream x{A@$\ endstream endobj 59 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACE+jlm_cmex10 /Encoding /Identity-H /ToUnicode 61 0 R /DescendantFonts [60 0 R] >> endobj 60 0 obj << /Type /Font /BaseFont /EAAACE+jlm_cmex10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 56 0 R /DW 0 /W [ 0 [750 0 333 555 527 527 666 666 666 666 666 666 1444 1277 1055 458 458 736 736 ] ] >> endobj 61 0 obj << /Length 91 0 R /Filter /FlateDecode >> stream x]n0 .*i;hlE! Ⴗ_Ug 11ɥ|* NU1V{+ƮDڨ0U+*lKtKnv$~j|ͤy+.բVs?آ VӚ\^{-BBu6&ML9>G Au{'zi:1pzq{/洺Q/&ƙHQvGy4-$ӎ(ϘL;ӖȔ3I=ST0!Rsۿo_%[ZRϕKXlDJ$ bżl25xGALo,.ܔE/!% endstream endobj 62 0 obj << /Type /FontDescriptor /FontName /EAAACD+jlm_cmmi10 /FontBBox [-32 -250 1048 750] /Flags 97 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 63 0 R /CIDSet 64 0 R >> endobj 63 0 obj << /Length1 4708 /Length 92 0 R /Filter /FlateDecode >> stream xXklu̝cgMrIqw/r~ID)YiI#vX'uj$-"?R( )m E4hWP1IW0!3\d;;ss!B#B~OW 1qm J- `D/xJ$g G/}C$.uFsOq~w1hÿG.=ǟni>FOl=GI iҤˤBϑEHmRHJ%+tHx_#%:))\<XMﳣpPТ˄Մ!wBA~),x _/16VT+.5HooaSoz\ Nt N6^֬7Z3&zy.lT-7|^>Uq#0r"z{7X /aj3:cl_˲jW+O<7rp)]U7>!A@7fi .tbSDRkbiPR ߣ- @(bZa}oS2D"2D}0 DD滕َF@,uq2\7!!'ޝK4H\z# N7ّ|$K]˩hH'$K}f*Y -YI iiͲf,j.`ϾkPo^7Z7=gaM Os sSF),1H8wgCLVL0żNps ja<:AN,q[YH?Pm߆ԣLFwWcnP;n?aH/N„A܁jD'r_EAx?υX?[9q,g˃ɞgBHb ]CٮQsk]\BtQ̪vNyR&Fv>fn7*N"qJW(kO>+OˆMr}a剴_ܺ&o,Q ø>IHddvG#˩ sy\L29 #qN_X2f!5LcmBt$Ƣr*ΏdP[PĒyl֎V'vUUFn *Dv lj ?kwk Ž^K_ytcnr}\RyP縖Aʔ38,)R3 ~I ZóPYg 6%[֭m"5#k#fMd2 /D䀫$Ԅ$^T݇uG?(/{ڹ4A|uj5#bd5*t]Ȣ+28ՎpW^(pր6$ +Wk9]`Ǻ>LNtDNXwWk??~أs_ޖ'nw~MY bl)~vBX=VN-ȶE*8Eggϝ,l{[ү%PWP`0Ugp湳|axu &{[7 m$͝(Jl?_q2{~jؙ݁8`a¹΄L,AX>`7Mptnyfȶ QPa/gEgZ! u*՚IW 86Xt*3}n8N\^/0.}~]i4i~daLhc`\=UI3nNqg5wx)3Y br1[a֬ V4$ϧL\cNk8ᕐ/jǬ1E9ڽ?}(wy?BwvsyO ԖB>>Y}2\L ixLɨZ7fBk`hlZp"+XL%KVܮ睚 g*/rXv ޤPpƂ}'5 Cm T0KoaLe{nSK-vB{$:P‹jR}H6`XKH?,To\8+\1n/LVtzȰG׳% `I Hm#櫖ji}gR4:r֎d[~@l%Y>ѭfYCp5WLƭV$('kB ж?Af{ Y jHԁ[KEId9z`dKSΊ7LPSl (+pw'& #UIj|`,5Cy0yPX[ICfOi@uާkcx*:d>jDQ/;>uL"hQL9lxg*FS7."1tfzhR7f;zxT굄o^pG[9׳LRp"qP,QPuʒHga?E: endstream endobj 64 0 obj << /Length 93 0 R /Filter /FlateDecode >> stream x{"/(E endstream endobj 65 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACD+jlm_cmmi10 /Encoding /Identity-H /ToUnicode 67 0 R /DescendantFonts [66 0 R] >> endobj 66 0 obj << /Type /Font /BaseFont /EAAACD+jlm_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 62 0 R /DW 0 /W [ 0 [750 0 333 970 528 361 576 595 600 576 570 759 530 827 520 277 571 466 520 571 429 432 490 639 ] ] >> endobj 67 0 obj << /Length 94 0 R /Filter /FlateDecode >> stream x]n0 .*Hz`JSI\젱=@HL4B_ϘHN.c^$o5 ԵC0$Jn%gi_%ѹUBe?+HOׇQl[ҝTMRU?/Ų[ SC)M.ڿDq67O1zY ym(hw),NOqJ̗$oH6R,ht=S`eLfVF#S4ȀJdOA4#Ĝbj&"&IɤS* /é%A&.\=[˥EAjاnLS !.Pq{֎ endstream endobj 68 0 obj << /Type /FontDescriptor /FontName /EAAACB+jlm_msbm10 /FontBBox [-55 -420 2343 920] /Flags 33 /CapHeight 685 /Ascent 920 /Descent -420 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 69 0 R /CIDSet 70 0 R >> endobj 69 0 obj << /Length1 536 /Length 95 0 R /Filter /FlateDecode >> stream xUKaƟݽM{/wrF\.B[`I[m6A.]b)788s\ >` Q{X{R+7m-"jR"9AQh}\A'Oح@55?Ŀ^Cz峝)et"оRh'5@ŏ#oϱk}J\gաS=hڢr{sS0E;xrL&ӼٲGx =6\0I`VMs3ը"x%Ja@*i"c\~c#:`n`ˢ+1{a)kMk})?-~<$9 ~&,[_߫CŴUlZXIGxiʑ3 7Y0 |s8ɼH=xƾTTU- endstream endobj 70 0 obj << /Length 96 0 R /Filter /FlateDecode >> stream x{,J endstream endobj 71 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACB+jlm_msbm10 /Encoding /Identity-H /ToUnicode 73 0 R /DescendantFonts [72 0 R] >> endobj 72 0 obj << /Type /Font /BaseFont /EAAACB+jlm_msbm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 68 0 R /DW 0 /W [ 0 [750 0 333 500 ] ] >> endobj 73 0 obj << /Length 97 0 R /Filter /FlateDecode >> stream x]Pn0 >nREUC*ġJpD83E=uFUup )G늪mUjIܯsĩsec%L.sNMFnW~ 'tJ|EW9!9w:l\I\B͸2(qR!I7bq+S5p{NdM5-`T wPY^%<#ZRrGac ք3 endstream endobj 74 0 obj << /Type /FontDescriptor /FontName /EAAACC+jlm_cmr10 /FontBBox [-40 -250 1009 750] /Flags 33 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 75 0 R /CIDSet 76 0 R >> endobj 75 0 obj << /Length1 6640 /Length 98 0 R /Filter /FlateDecode >> stream xYi\u羵{e{^w^g鞭gF#FeFц]H 'l0T#@* vQ]1r*eSQ6 ~8"vPryZ9@3{9ιW!"J&!.'${M%( ĆO`I{H$s9}KdzJ\msr!?E-Ve}Aؓ]sl/n΢ד8cOYA8Cal X"XX2$:7yc7w5Km$)~P'w{.&q:[#B"5xQ%}LxKvj퐵M\W8 Ꙣ-,X#D8ƌay u.!Q,OkBt\Ϗ}_2naZGsD"䎻3Xn]nz½.g.8n~$˥beȤPcE7}B# '^s3:WYO. Nfpw;lC7!(=xWO*byL\-Vj ^|(H\ =ˏ&7pzi5A ?NpojV8Y^˸w }0әr:V%w[u,ک(or;wt_7pOeլ@9[S{j~L8PNLy9-Y 4m`ceV3B_.DE/T,L>It~XhZn:]T?~O|ܝǧ܊=Ql!_TD3s'F!ޚ!ۘ G`-aTN1xqx"3P>F]f AcVrm/>B{5'hb!'bhfU֞y9_ZI0y@֩aLH5|9^G2ﯔ.馾ĿƠ"P5ݿ_sܮ9OsMuև͆dq sw1q2Jqjal8ًY黡h,׆=ґAXL^9%Ҵ,4~ؘ)@%:6|-}[!IxC[{!\! 1[)ʏl+%Cc5 s"\@tҋ2_%\3i8 rOxBZuWQU<*ʪg;] pj޻t01xFw<axF-QPlcJ [1l@:-f馰b2#մ*%DAi˳Egƌ! ]d'( pбv Yٜt nnf+BWy>󌟂J0nwp\I>"z02ƅ6X(F.d 1.m(|[zRJ.{l\QLQ ߭gHuب (:UA]23#:zhQ2 FwUGS3|XRkH.j-zH~lZOh@քI\: >Ů3Z܍+uچoPչk:榦F4;9Mʲ[/dC]x9߹wbdJ C+zTT|k6NGrSNe3sWo"iP?]Ue;/A}WcXC1Y7x ie!%?3 y ֨{l~ Xeh}=>?4ho8@ϳ$b fxf,T6Qҿg7s׮]l(eN;;2!r݁m` THN֞?+H5I)fÄ};. A_J5/w0l^F^ˑQEԀz+o،mv9۸}$ Օ{Wnܩ>rtS1Ǩ{Y/[:O3WY "ғ_N&Ovfzl־[c Rb3m*R _ybB@ &}.IJyH:\kDwGS3Xbv!Ff4m[kM(tYUj0`o.=?\ḫf54:FʧMJUbRLlt&{7T^Wy'XcNٮ24ZK=6 n4s&t)4R*d!p$X w*F]052eX5X7a,H FƆ1%IVlgZg/q{f5  tg;NAGWns.3g>u tYu[{dwswjE Yc~oS [ oK=ѵMT޽<;{]mSCvCy1g*]Z?e-8f]z帶j8D_XxhQBMΕhyxQ>!TPrx:)_صsbl~CwG6jp[jtڳ=#5׬rў!&2sq}{bv5v/Y9iϲ(t-+ Pk*3[NfoV=vk\Qu=ٖ%y`=~vZy9 vr)~8?) maO}w 2k^z@l.FmZUC!Mk*1EKNQ_B^m (x[JH6I6MZx «v μTGy!OqsFcr`miأ}/QିXn&HNGw_B}]1ǪǝXX쀿u.DnC6s`5+"OYUBxh8>A֟ *\4D%On)ݶl!/Zk57_7Xod$#*!- sU1'.s)XW!KRRl:p]~sCn]|-cQ3_`iy =?_> stream x{!%bs&W endstream endobj 77 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAACC+jlm_cmr10 /Encoding /Identity-H /ToUnicode 79 0 R /DescendantFonts [78 0 R] >> endobj 78 0 obj << /Type /Font /BaseFont /EAAACC+jlm_cmr10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 74 0 R /DW 0 /W [ 0 [750 0 333 625 750 722 680 750 388 388 777 500 500 500 500 394 277 555 555 444 388 305 777 500 500 500 277 916 500 391 527 555 277 444 500 833 652 444 500 736 555 527 750 ] ] >> endobj 79 0 obj << /Length 100 0 R /Filter /FlateDecode >> stream x]n0E|tOBB*CĞHcu%khA$W'D_bQ5 IBjUWEOeh^dX6".Q5?44֜pgOWkc34̱79TX$vW>s,(kJ̙ԏ=g[ՍܼcHQ)MsAAbkPT4* h@eH-H%jJ, tR ,6G%> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Lang (en) /Metadata 7 0 R /PageLabels 9 0 R >> endobj 3 0 obj << /Font << /F3 37 0 R /F281 41 0 R /F68 53 0 R /F282 47 0 R /F283 59 0 R /F293 65 0 R /F294 71 0 R /F291 77 0 R >> /ProcSet [ /PDF /ImageB /ImageC /Text ] /ColorSpace << /DefaultRGB 6 0 R >> >> endobj 9 0 obj << /Nums [0 << /P (1) >> 1 << /P (2) >> 2 << /P (iii) >> 3 << /P (iv) >> 4 << /P (1) >> 5 << /P (2) >> ] >> endobj 22 0 obj << /Type /Action /S /GoTo /D [19 0 R /XYZ 72.0 720.0 null] >> endobj 28 0 obj << /Type /Action /S /GoTo /D [19 0 R /XYZ 72.0 539.347 null] >> endobj xref 0 101 0000000000 65535 f 0000044765 00000 n 0000044858 00000 n 0000044963 00000 n 0000000015 00000 n 0000000112 00000 n 0000002794 00000 n 0000002827 00000 n 0000003541 00000 n 0000045191 00000 n 0000003296 00000 n 0000003708 00000 n 0000003729 00000 n 0000003749 00000 n 0000004094 00000 n 0000003769 00000 n 0000004262 00000 n 0000011626 00000 n 0000012895 00000 n 0000010222 00000 n 0000004282 00000 n 0000010390 00000 n 0000045320 00000 n 0000010411 00000 n 0000011592 00000 n 0000010549 00000 n 0000010689 00000 n 0000011811 00000 n 0000045398 00000 n 0000011831 00000 n 0000012861 00000 n 0000011969 00000 n 0000012109 00000 n 0000013080 00000 n 0000015281 00000 n 0000013100 00000 n 0000015449 00000 n 0000015470 00000 n 0000015582 00000 n 0000015838 00000 n 0000016488 00000 n 0000016578 00000 n 0000016736 00000 n 0000016985 00000 n 0000017317 00000 n 0000017571 00000 n 0000018797 00000 n 0000018886 00000 n 0000019044 00000 n 0000019278 00000 n 0000019596 00000 n 0000019858 00000 n 0000028784 00000 n 0000028891 00000 n 0000029053 00000 n 0000029474 00000 n 0000029995 00000 n 0000030251 00000 n 0000031597 00000 n 0000031695 00000 n 0000031853 00000 n 0000032152 00000 n 0000032540 00000 n 0000032796 00000 n 0000036027 00000 n 0000036128 00000 n 0000036286 00000 n 0000036602 00000 n 0000037020 00000 n 0000037274 00000 n 0000037801 00000 n 0000037889 00000 n 0000038047 00000 n 0000038283 00000 n 0000038600 00000 n 0000038853 00000 n 0000043206 00000 n 0000043302 00000 n 0000043459 00000 n 0000043850 00000 n 0000044346 00000 n 0000044366 00000 n 0000044385 00000 n 0000044405 00000 n 0000044426 00000 n 0000044445 00000 n 0000044465 00000 n 0000044486 00000 n 0000044505 00000 n 0000044525 00000 n 0000044546 00000 n 0000044565 00000 n 0000044585 00000 n 0000044606 00000 n 0000044625 00000 n 0000044645 00000 n 0000044665 00000 n 0000044684 00000 n 0000044704 00000 n 0000044725 00000 n 0000044744 00000 n trailer << /Size 101 /Root 2 0 R /Info 4 0 R /ID [<2ADB946EB8209D26C0A84D68EF66BDAF> <2ADB946EB8209D26C0A84D68EF66BDAF>] >> startxref 45478 %%EOF libjlatexmath-java-1.0.3/plugin/fop/examples/conf.xml0000644000175000017500000001245112275735442023531 0ustar sylvestresylvestre . 72 72 flate libjlatexmath-java-1.0.3/plugin/fop/examples/latex.fo0000644000175000017500000000767212275735442023536 0ustar sylvestresylvestre \JLaTeXMath Extension Page The \JLaTeXMath Extension The \JLaTeXMath extension is an addition to FOP that can be used to draw \LaTeX expressions. Examples This is a 12pt block with a formula : \int_0^{+\infty} e^{-x^2}\mathrm{d}x=\frac{\sqrt\pi}{2} But you can prefer a red block with a font set to 15pt: An other one: Another formula with a \mathfrak : But you can prefer a formula in the text in \displaystyle or in \textstyle libjlatexmath-java-1.0.3/plugin/fop/COPYING0000644000175000017500000003542212275735442021302 0ustar sylvestresylvestre GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS libjlatexmath-java-1.0.3/plugin/fop/src/0000755000175000017500000000000012275735442021030 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/org/0000755000175000017500000000000012275735442021617 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/0000755000175000017500000000000012275735442023054 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/0000755000175000017500000000000012275735442024156 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/0000755000175000017500000000000012275735442026317 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/0000755000175000017500000000000012275735442027103 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/JLaTeXMathElementMapping.javalibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/JLaTeXMathElementMapping.jav0000644000175000017500000000512512275735442034337 0ustar sylvestresylvestre/* JLaTeXMathElementMapping.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop; import java.util.HashMap; import org.apache.fop.fo.ElementMapping; import org.apache.fop.fo.FONode; import org.w3c.dom.DOMImplementation; /** * This class provides the element mapping for FOP. */ public class JLaTeXMathElementMapping extends ElementMapping { public JLaTeXMathElementMapping() { this.namespaceURI = JLaTeXMathObj.JLATEXMATH_NS; } public DOMImplementation getDOMImplementation() { return ElementMapping.getDefaultDOMImplementation(); } protected void initialize() { if (this.foObjs == null) { this.foObjs = new HashMap(); this.foObjs.put("latex", new JLMEMaker()); this.foObjs.put(ElementMapping.DEFAULT, new JLMMaker()); } } public final class JLMMaker extends ElementMapping.Maker { private JLMMaker() { } public FONode make(final FONode parent) { return new JLaTeXMathObj(parent); } } public final class JLMEMaker extends ElementMapping.Maker { private JLMEMaker() { } public FONode make(final FONode parent) { return new JLaTeXMathElement(parent); } } } libjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/JLaTeXMathObj.java0000644000175000017500000000364412275735442032311 0ustar sylvestresylvestre/* JLaTeXMathObj.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop; import org.apache.fop.fo.FONode; import org.apache.fop.fo.XMLObj; public class JLaTeXMathObj extends XMLObj { public static final String JLATEXMATH_NS = "http://forge.scilab.org/p/jlatexmath"; public static final String MIME_TYPE = "image/latex"; public JLaTeXMathObj(FONode parent) { super(parent); } public String getNamespaceURI() { return JLATEXMATH_NS; } public String getNormalNamespacePrefix() { return "latex"; } } libjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/0000755000175000017500000000000012275735442030165 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/ImageJLaTeXMath.java0000644000175000017500000000436712275735442033706 0ustar sylvestresylvestre/* ImageJLaTeXMath.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop.image; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; import org.apache.xmlgraphics.image.loader.Image; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.ImageInfo; import org.apache.xmlgraphics.image.loader.impl.AbstractImage; /** * Image implementation * @author Calixte DENIZET */ public class ImageJLaTeXMath extends AbstractImage { public static final ImageFlavor FLAVOR = new ImageFlavor(JLaTeXMathObj.MIME_TYPE); private TeXIcon icon; public ImageJLaTeXMath(ImageInfo info, TeXIcon icon) { super(info); this.icon = icon; } public TeXIcon getIcon() { return icon; } public boolean isCacheable() { return true; } public ImageFlavor getFlavor() { return FLAVOR; } } libjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/0000755000175000017500000000000012275735442031433 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/ImageConverterJLaTeXMathToG2D.javalibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/ImageConverterJ0000644000175000017500000000503712275735442034407 0ustar sylvestresylvestre/* ImageConverterJLaTeXMathToG2D.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop.image.loader; import java.util.Map; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; import org.apache.xmlgraphics.image.loader.Image; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.impl.AbstractImageConverter; import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D; /** * Convert a LaTeX label to a Graphics2d Painter. * @author Calixte DENIZET */ public class ImageConverterJLaTeXMathToG2D extends AbstractImageConverter { /** * Default Constructor. */ public ImageConverterJLaTeXMathToG2D() { } /** {@inheritDoc} */ public Image convert(Image src, Map hints) throws ImageException { return new ImageGraphics2D(src.getInfo(), new Graphics2DImagePainterJLaTeXMath(((ImageJLaTeXMath) src).getIcon())); } /** {@inheritDoc} */ public ImageFlavor getSourceFlavor() { return ImageJLaTeXMath.FLAVOR; } /** {@inheritDoc} */ public ImageFlavor getTargetFlavor() { return ImageFlavor.GRAPHICS2D; } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/ImageLoaderFactoryJLaTeXMath.javalibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/ImageLoaderFact0000644000175000017500000000545512275735442034336 0ustar sylvestresylvestre/* ImageLoaderFactoryJLaTeXMath.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop.image.loader; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoaderFactory; import org.apache.xmlgraphics.image.loader.spi.ImageLoader; /** * @author Calixte DENIZET */ public class ImageLoaderFactoryJLaTeXMath extends AbstractImageLoaderFactory { private static final ImageFlavor[] FLAVORS = new ImageFlavor[] { ImageJLaTeXMath.FLAVOR }; private static final String[] MIMES = new String[] { JLaTeXMathObj.MIME_TYPE }; /** * Default Constructor. */ public ImageLoaderFactoryJLaTeXMath() { } /** {@inheritDoc} */ public String[] getSupportedMIMETypes() { return ImageLoaderFactoryJLaTeXMath.MIMES.clone(); } /** {@inheritDoc} */ public ImageFlavor[] getSupportedFlavors(final String mime) { return ImageLoaderFactoryJLaTeXMath.FLAVORS.clone(); } /** {@inheritDoc} */ public ImageLoader newImageLoader(final ImageFlavor targetFlavor) { return new ImageLoaderJLaTeXMath(targetFlavor); } /** {@inheritDoc} */ public int getUsagePenalty(final String mime, final ImageFlavor flavor) { return 0; } /** {@inheritDoc} */ public boolean isAvailable() { return true; } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/ImageLoaderJLaTeXMath.javalibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/ImageLoaderJLaT0000644000175000017500000000620712275735442034247 0ustar sylvestresylvestre/* JLaTeXMathObj.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop.image.loader; import java.io.IOException; import java.util.Map; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; import org.apache.xmlgraphics.image.loader.Image; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.ImageInfo; import org.apache.xmlgraphics.image.loader.ImageSessionContext; import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoader; import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; public class ImageLoaderJLaTeXMath extends AbstractImageLoader { private final ImageFlavor targetFlavor; /** * Main constructor. */ public ImageLoaderJLaTeXMath(final ImageFlavor target) { if (!(ImageJLaTeXMath.FLAVOR.equals(target))) { throw new IllegalArgumentException("Unsupported target ImageFlavor: " + target); } this.targetFlavor = target; } /** {@inheritDoc} */ public ImageFlavor getTargetFlavor() { return this.targetFlavor; } /** {@inheritDoc} */ public Image loadImage(ImageInfo info, Map hints, ImageSessionContext session) throws ImageException, IOException { if (!JLaTeXMathObj.MIME_TYPE.equals(info.getMimeType())) { throw new IllegalArgumentException("ImageInfo must be from an LaTeX image"); } final Image img = info.getOriginalImage(); if (!(img instanceof ImageJLaTeXMath)) { throw new IllegalArgumentException("ImageInfo was expected to contain the JLaTeXMath image"); } ImageJLaTeXMath jlmImage = (ImageJLaTeXMath) img; return jlmImage; } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/Graphics2DImagePainterJLaTeXMath.javalibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/Graphics2DImage0000644000175000017500000000571412275735442034256 0ustar sylvestresylvestre/* Graphics2DImagePainterJLaTeXMath.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop.image.loader; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.fop.JLaTeXMathElement; import org.w3c.dom.Document; import org.w3c.dom.Element; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import org.apache.xmlgraphics.java2d.Graphics2DImagePainter; /** * @author Calixte DENIZET */ public class Graphics2DImagePainterJLaTeXMath implements Graphics2DImagePainter { private Dimension dim; private TeXIcon icon; public Graphics2DImagePainterJLaTeXMath(Document doc) { Element e = doc.getDocumentElement(); float size = Float.parseFloat(e.getAttribute("size")); Color fg = new Color(Integer.parseInt(e.getAttribute("fg"))); icon = JLaTeXMathElement.calculate(doc, size); icon.setForeground(fg); dim = new Dimension((int) (icon.getTrueIconWidth() * 1000), (int) (icon.getTrueIconHeight() * 1000)); } public Graphics2DImagePainterJLaTeXMath(TeXIcon icon) { this.icon = icon; dim = new Dimension((int) (icon.getTrueIconWidth() * 1000), (int) (icon.getTrueIconHeight() * 1000)); } public int getDepth() { return (int) (icon.getTrueIconDepth() * 1000); } public Dimension getImageSize() { return dim; } public void paint(Graphics2D g2d, Rectangle2D rect2d) { g2d.scale(rect2d.getWidth() / dim.width * 1000, rect2d.getHeight() / dim.height * 1000); icon.paintIcon(null, g2d, (int) rect2d.getX(), (int) rect2d.getY()); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/PreloaderJLaTeXMath.javalibjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/image/loader/PreloaderJLaTeX0000644000175000017500000000650212275735442034306 0ustar sylvestresylvestre/* PreloaderJLaTeXMath.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop.image.loader; import java.awt.Color; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; import org.scilab.forge.jlatexmath.fop.JLaTeXMathElement; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; import org.apache.xmlgraphics.image.loader.ImageContext; import org.apache.xmlgraphics.image.loader.ImageInfo; import org.apache.xmlgraphics.image.loader.ImageSize; import org.apache.xmlgraphics.image.loader.impl.AbstractImagePreloader; /** * Preloader * @author Calixte DENIZET */ public class PreloaderJLaTeXMath extends AbstractImagePreloader { public PreloaderJLaTeXMath() { } /** {@inheritDoc} */ public ImageInfo preloadImage(String uri, Source src, ImageContext context) { Document doc; Element e; if (src instanceof DOMSource) { doc = (Document) ((DOMSource) src).getNode(); e = doc.getDocumentElement(); } else { return null; } if (!"latex".equals(e.getTagName())) { return null; } ImageInfo info = new ImageInfo(uri, JLaTeXMathObj.MIME_TYPE); ImageSize size = new ImageSize(); float s = Float.parseFloat(e.getAttribute("size")); Color fg = new Color(Integer.parseInt(e.getAttribute("fg"))); TeXIcon icon = JLaTeXMathElement.calculate(doc, s); icon.setForeground(fg); size.setSizeInMillipoints((int) (icon.getTrueIconWidth() * 1000), (int) (icon.getTrueIconHeight() * 1000)); size.setBaselinePositionFromBottom((int) (icon.getTrueIconDepth() * 1000)); size.setResolution(context.getSourceResolution()); size.calcPixelsFromSize(); info.setSize(size); ImageJLaTeXMath jlmImage = new ImageJLaTeXMath(info, icon); info.getCustomObjects().put(ImageInfo.ORIGINAL_IMAGE, jlmImage); return info; } } libjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/JLaTeXMathXMLHandler.java0000644000175000017500000000552712275735442033537 0ustar sylvestresylvestre/* JLaTeXMathXMLHandler.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop; import org.apache.fop.render.Graphics2DAdapter; import org.apache.fop.render.Renderer; import org.apache.fop.render.RendererContext; import org.apache.fop.render.XMLHandler; import org.scilab.forge.jlatexmath.fop.image.loader.Graphics2DImagePainterJLaTeXMath; import org.w3c.dom.Document; /** * XMLHandler which draws LaTeX through a fop G2DAdapter. */ public class JLaTeXMathXMLHandler implements XMLHandler { public JLaTeXMathXMLHandler() { } public void handleXML(RendererContext context, Document document, String ns) throws Exception { Graphics2DAdapter g2dAdapter = context.getRenderer().getGraphics2DAdapter(); if (g2dAdapter != null) { g2dAdapter.paintImage(new Graphics2DImagePainterJLaTeXMath(document), context, ((Integer) context.getProperty("xpos")).intValue(), ((Integer) context.getProperty("ypos")).intValue(), ((Integer) context.getProperty("width")).intValue(), ((Integer) context.getProperty("height")).intValue()); } } public boolean supportsRenderer(Renderer renderer) { return renderer.getGraphics2DAdapter() != null; } public String getMimeType() { return JLaTeXMathObj.MIME_TYPE; } public String getNamespace() { return JLaTeXMathObj.JLATEXMATH_NS; } } libjlatexmath-java-1.0.3/plugin/fop/src/org/scilab/forge/jlatexmath/fop/JLaTeXMathElement.java0000644000175000017500000001462212275735442033166 0ustar sylvestresylvestre/* JLaTeXMathElement.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* This file is largely inspired by files wrote by Jeremias Maerki, * for the fop plugin of barcode4j available at * http://barcode4j.sourceforge.net/ */ package org.scilab.forge.jlatexmath.fop; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.SpaceAtom; import java.awt.Color; import java.awt.geom.Point2D; import java.util.HashMap; import java.util.List; import java.util.LinkedList; import java.util.Map; import java.util.StringTokenizer; import org.apache.fop.apps.FOPException; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.datatypes.Length; import org.apache.fop.fo.FOEventHandler; import org.apache.fop.fo.FONode; import org.apache.fop.fo.XMLObj; import org.apache.fop.fo.PropertyList; import org.apache.fop.fo.properties.CommonFont; import org.apache.fop.fo.properties.FixedLength; import org.apache.fop.fo.properties.Property; import org.apache.fop.fo.properties.PercentLength; import org.apache.fop.datatypes.LengthBase; import org.apache.fop.fo.properties.LengthProperty; import org.apache.fop.fo.flow.BlockContainer; import org.apache.fop.fo.FONode; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.xml.sax.Attributes; import org.xml.sax.Locator; public class JLaTeXMathElement extends JLaTeXMathObj { private float size; private Color fg; private TeXIcon icon = null; private boolean bool = true; private String PR_COLOR = "PR_COLOR"; public JLaTeXMathElement(FONode parent) { super(parent); } public void processNode(final String elementName, final Locator locator, final Attributes attlist, final PropertyList propertyList) throws FOPException { super.processNode(elementName, locator, attlist, propertyList); Element e = createBasicDocument().getDocumentElement(); e.setAttribute("size", "" + size); e.setAttribute("fg", "" + fg.getRGB()); } public Point2D getDimension(Point2D p) { if (icon == null) { icon = calculate(doc, size); } return new Point2D.Float(icon.getTrueIconWidth(), icon.getTrueIconHeight()); } public Length getIntrinsicAlignmentAdjust() { if (icon == null) { icon = calculate(doc, size); } return FixedLength.getInstance(-icon.getTrueIconDepth(), "px"); } public static float getFWidth(String str) { StringTokenizer tok = new StringTokenizer(str, ","); int sum = 0; while (tok.hasMoreTokens()) { int i = 0; String s = tok.nextToken(); for (; i < s.length() && !Character.isLetter(s.charAt(i)); i++); double w = 0; try { w = Double.parseDouble(s.substring(0, i)); } catch (NumberFormatException e) { return 0.0f; } String unit = "px"; if (i != s.length()) { unit = s.substring(i).toLowerCase(); } sum += FixedLength.getInstance(w, unit).getValue(); } return (float) (sum / 1000f); } public static TeXIcon calculate(Document doc, float size) { TeXIcon icon; Element e = doc.getDocumentElement(); String code = e.getTextContent(); String style = e.getAttribute("style"); int st = TeXConstants.STYLE_DISPLAY; if ("text".equals(style)) { st = TeXConstants.STYLE_TEXT; } else if ("script".equals(style)) { st = TeXConstants.STYLE_SCRIPT; } else if ("script_script".equals(style)) { st = TeXConstants.STYLE_SCRIPT_SCRIPT; } NamedNodeMap attributes = e.getAttributes(); int len = attributes.getLength(); Map map = new HashMap(); for (int i = 0; i < len; i++) { map.put(attributes.item(i).getNodeName(), attributes.item(i).getNodeValue()); } String stfw = e.getAttribute("fwidth"); if (stfw.length() != 0) { icon = new TeXFormula(code, map).createTeXIcon(st, size, TeXConstants.UNIT_PIXEL, getFWidth(stfw), TeXConstants.ALIGN_CENTER); } else { icon = new TeXFormula(code, map).createTeXIcon(st, size, true); } return icon; } protected PropertyList createPropertyList(final PropertyList pList, final FOEventHandler foEventHandler) throws FOPException { FOUserAgent userAgent = this.getUserAgent(); CommonFont commonFont = pList.getFontProps(); this.size = (float) commonFont.fontSize.getNumericValue() / 1000; int n = org.apache.fop.fo.Constants.PR_COLOR; try { n = org.apache.fop.fo.Constants.class.getDeclaredField(PR_COLOR).getInt(null); } catch (Exception e) { System.err.println("Error in getting field:\n" + e); } Property colorProp = pList.get(n); this.fg = colorProp != null ? colorProp.getColor(userAgent) : null; return super.createPropertyList(pList, foEventHandler); } }libjlatexmath-java-1.0.3/plugin/fop/src/META-INF/0000755000175000017500000000000012275735442022170 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/0000755000175000017500000000000012275735442024013 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageConverterlibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.xmlgraphics.image.loader.spi.Im0000644000175000017500000000011212275735442033743 0ustar sylvestresylvestreorg.scilab.forge.jlatexmath.fop.image.loader.ImageConverterJLaTeXMathToG2Dlibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.fop.render.XMLHandler0000644000175000017500000000006512275735442031744 0ustar sylvestresylvestreorg.scilab.forge.jlatexmath.fop.JLaTeXMathXMLHandler libjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.fop.fo.ElementMapping0000644000175000017500000000007012275735442032034 0ustar sylvestresylvestreorg.scilab.forge.jlatexmath.fop.JLaTeXMathElementMapping././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactorylibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.xmlgraphics.image.loader.spi.Im0000644000175000017500000000011112275735442033742 0ustar sylvestresylvestreorg.scilab.forge.jlatexmath.fop.image.loader.ImageLoaderFactoryJLaTeXMath././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootlibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloaderlibjlatexmath-java-1.0.3/plugin/fop/src/META-INF/services/org.apache.xmlgraphics.image.loader.spi.Im0000644000175000017500000000010112275735442033741 0ustar sylvestresylvestreorg.scilab.forge.jlatexmath.fop.image.loader.PreloaderJLaTeXMath libjlatexmath-java-1.0.3/version.xml0000644000175000017500000000025012275735442020363 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/0000755000175000017500000000000012275735442016746 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/0000755000175000017500000000000012275735442017535 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/0000755000175000017500000000000012275735442020772 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/0000755000175000017500000000000012275735442022074 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/0000755000175000017500000000000012275735442024235 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/HdotsforAtom.java0000644000175000017500000000420212275735442027507 0ustar sylvestresylvestre/* HdotsforAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom used in array mode to write on several columns. */ public class HdotsforAtom extends MulticolumnAtom { private static final Atom ldotp = SymbolAtom.get("ldotp"); private static final Atom thin = new SpaceAtom(TeXConstants.THINMUSKIP); private float coeff; public HdotsforAtom(int n, float coeff) { super(n, "c", ldotp); this.coeff = coeff; } public Box createBox(TeXEnvironment env) { Box sp = new StrutBox(coeff * thin.createBox(env).getWidth(), 0, 0, 0); HorizontalBox db = new HorizontalBox(sp); db.add(ldotp.createBox(env)); db.add(sp); Box b; if (w != 0) { float dw = db.getWidth(); b = new HorizontalBox(db); while (b.getWidth() < w) { b.add(db); } b = new HorizontalBox(b, w, TeXConstants.ALIGN_CENTER); } else { b = db; } b.type = TeXConstants.TYPE_MULTICOLUMN; return b; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/URLAlphabetRegistration.java0000644000175000017500000000556312275735442031607 0ustar sylvestresylvestre/* URLAlphabetRegistration.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.lang.Character.UnicodeBlock; import java.net.URL; import java.net.URLClassLoader; import java.lang.ClassLoader; public class URLAlphabetRegistration implements AlphabetRegistration { private URL url; private String language; private AlphabetRegistration pack = null; private Character.UnicodeBlock[] blocks; private URLAlphabetRegistration(URL url, String language, Character.UnicodeBlock[] blocks) { this.url = url; this.language = language; this.blocks = blocks; } public static void register(URL url, String language, Character.UnicodeBlock[] blocks) { DefaultTeXFont.registerAlphabet(new URLAlphabetRegistration(url, language, blocks)); } public Character.UnicodeBlock[] getUnicodeBlock() { return blocks; } public Object getPackage() throws AlphabetRegistrationException { URL urls[] = {url}; language = language.toLowerCase(); String name = "org.scilab.forge.jlatexmath." + language + "." + Character.toString(Character.toUpperCase(language.charAt(0))) + language.substring(1, language.length()) + "Registration"; try { ClassLoader loader = new URLClassLoader(urls); pack = (AlphabetRegistration) Class.forName(name, true, loader).newInstance(); } catch (ClassNotFoundException e) { throw new AlphabetRegistrationException("Class at " + url + " cannot be got."); } catch (Exception e) { throw new AlphabetRegistrationException("Problem in loading the class at " + url + " :\n" + e.getMessage()); } return pack; } public String getTeXFontFileName() { return pack.getTeXFontFileName(); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/InvalidDelimiterTypeException.java0000644000175000017500000000331112275735442033044 0ustar sylvestresylvestre/* InvalidDelimiterTypeException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown delimiter type constant was used. * * @author Kurt Vermeulen */ public class InvalidDelimiterTypeException extends JMathTeXException { protected InvalidDelimiterTypeException() { super( "The delimiter type was not valid! " + "Use one of the delimiter type constants from the class 'TeXConstants'."); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/IddotsAtom.java0000644000175000017500000000406412275735442027153 0ustar sylvestresylvestre/* IddotsAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing iddots. */ public class IddotsAtom extends Atom { public IddotsAtom() { } public Box createBox(TeXEnvironment env) { Box ldots = TeXFormula.get("ldots").root.createBox(env); float w = ldots.getWidth(); Box dot = SymbolAtom.get("ldotp").createBox(env); HorizontalBox hb1 = new HorizontalBox(dot, w, TeXConstants.ALIGN_RIGHT); HorizontalBox hb2 = new HorizontalBox(dot, w, TeXConstants.ALIGN_CENTER); HorizontalBox hb3 = new HorizontalBox(dot, w, TeXConstants.ALIGN_LEFT); Box pt4 = new SpaceAtom(TeXConstants.UNIT_MU, 0, 4, 0).createBox(env); VerticalBox vb = new VerticalBox(); vb.add(hb1); vb.add(pt4); vb.add(hb2); vb.add(pt4); vb.add(hb3); float h = vb.getHeight() + vb.getDepth(); vb.setHeight(h); vb.setDepth(0); return vb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/CharFont.java0000644000175000017500000000324712275735442026612 0ustar sylvestresylvestre/* CharFont.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Represents a specific character in a specific font (identified by its font ID). */ public class CharFont { public char c; public int fontId; public int boldFontId; public CharFont(char ch, int f) { this(ch, f, f); } public CharFont(char ch, int f, int bf) { c = ch; fontId = f; boldFontId = bf; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/JavaFontRenderingAtom.java0000644000175000017500000000517512275735442031277 0ustar sylvestresylvestre/* ScaleAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; /** * The string rendering is made in using Java Graphics2D.drawString. */ public class JavaFontRenderingAtom extends Atom { private String str; private int type; private TeXFormula.FontInfos fontInfos; public JavaFontRenderingAtom(String str, int type) { this.str = str; this.type = type; } public JavaFontRenderingAtom(String str, TeXFormula.FontInfos fontInfos) { this(str, 0); this.fontInfos = fontInfos; } public Box createBox(TeXEnvironment env) { if (fontInfos == null) { return new JavaFontRenderingBox(str, type, DefaultTeXFont.getSizeFactor(env.getStyle())); } else { DefaultTeXFont dtf = (DefaultTeXFont) env.getTeXFont(); int type = dtf.isIt ? Font.ITALIC : Font.PLAIN; type = type | (dtf.isBold ? Font.BOLD : 0); boolean kerning = dtf.isRoman; Font font; if (dtf.isSs) { if (fontInfos.sansserif == null) { font = new Font(fontInfos.serif, Font.PLAIN, 10); } else { font = new Font(fontInfos.sansserif, Font.PLAIN, 10); } } else { if (fontInfos.serif == null) { font = new Font(fontInfos.sansserif, Font.PLAIN, 10); } else { font = new Font(fontInfos.serif, Font.PLAIN, 10); } } return new JavaFontRenderingBox(str, type, DefaultTeXFont.getSizeFactor(env.getStyle()), font, kerning); } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/VerticalBox.java0000644000175000017500000000755012275735442027331 0ustar sylvestresylvestre/* VerticalBox.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.util.ListIterator; /** * A box composed of other boxes, put one above the other. */ class VerticalBox extends Box { private float leftMostPos = Float.MAX_VALUE; private float rightMostPos = Float.MIN_VALUE; public VerticalBox() { } public VerticalBox(Box b, float rest, int alignment) { this(); add(b); if (alignment == TeXConstants.ALIGN_CENTER) { StrutBox s = new StrutBox(0, rest / 2, 0, 0); super.add(0, s); height += rest / 2; depth += rest / 2; super.add(s); } else if (alignment == TeXConstants.ALIGN_TOP) { depth += rest; super.add(new StrutBox(0, rest, 0, 0)); } else if (alignment == TeXConstants.ALIGN_BOTTOM) { height += rest; super.add(0, new StrutBox(0, rest, 0, 0)); } } public final void add(Box b) { super.add(b); if (children.size() == 1) { height = b.height; depth = b.depth; } else depth += b.height + b.depth; recalculateWidth(b); } public final void add(Box b, float interline) { if (children.size() >= 1) { add(new StrutBox(0, interline, 0, 0)); } add(b); } private void recalculateWidth(Box b) { leftMostPos = Math.min(leftMostPos, b.shift); rightMostPos = Math.max(rightMostPos, b.shift + (b.width > 0 ? b.width : 0)); width = rightMostPos - leftMostPos; } public void add(int pos, Box b) { super.add(pos, b); if (pos == 0) { depth += b.depth + height; height = b.height; } else depth += b.height + b.depth; recalculateWidth(b); } public void draw(Graphics2D g2, float x, float y) { float yPos = y - height; for (Box b : children) { yPos += b.getHeight(); b.draw(g2, x + b.getShift() - leftMostPos, yPos); yPos += b.getDepth(); } } public int getSize() { return children.size(); } public int getLastFontId() { // iterate from the last child box (the lowest) to the first (the highest) // untill a font id is found that's not equal to NO_FONT int fontId = TeXFont.NO_FONT; for (ListIterator it = children.listIterator(children.size()); fontId == TeXFont.NO_FONT && it.hasPrevious();) fontId = ((Box) it.previous()).getLastFontId(); return fontId; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/StrutBox.java0000644000175000017500000000335512275735442026700 0ustar sylvestresylvestre/* StrutBox.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; /** * A box representing whitespace. */ public class StrutBox extends Box { public StrutBox(float w, float h, float d, float s) { width = w; height = h; depth = d; shift = s; } public void draw(Graphics2D g2, float x, float y) { // no visual effect } public int getLastFontId() { return TeXFont.NO_FONT; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/0000755000175000017500000000000012275735442025332 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/MANIFEST.MF0000644000175000017500000000137212275735442026767 0ustar sylvestresylvestre Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbipg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmripg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmrpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsbpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsropg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsrpg.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/greek/fonts/jlm_fctrpg.ttf Content-Type: application/x-fontlibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/LICENSE0000644000175000017500000000303112275735442026334 0ustar sylvestresylvestreJLaTeXMath Library - Displays LaTeX commands JLateXMath is an fork of JMathTeX with a lot of modifications to support many more LaTeX commands, drop of the jdom dependency and easy evolution capabilities. Copyright (C) 2009-2011 DENIZET Calixte Copyright (C) Kris Coolsaet Copyright (C) Nico Van Cleemput Copyright (C) Kurt Vermeulen Copyright 2004-2007 Universiteit Gent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. The archive contains several fonts : 1) the fonts eufb10.ttf, eufm10.ttf, msam10.ttf and msbm10.ttf are under OFL (Open Font License); 2) the font dsrom10.ttf is under a free license; 3) the font stmary10.ttf and rsfs10.ttf are in PD (Public Domain); 4) the fonts cmbsy10.ttf, cmbx10.ttf, cmbxti10.ttf, cmex10.ttf, cmmi10.ttf, cmr10.ttf, cmss10.ttf, cmssbx10.ttf, cmsy10.ttf and cmtt10.ttf are under Knuth License. You can find a copy of these licenses in the fonts directory. libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/COPYING0000644000175000017500000003542212275735442026373 0ustar sylvestresylvestre GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/GreekRegistration.java0000644000175000017500000000344212275735442031630 0ustar sylvestresylvestre/* GreekRegistration.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath.greek; import java.lang.Character.UnicodeBlock; import org.scilab.forge.jlatexmath.AlphabetRegistration; public class GreekRegistration implements AlphabetRegistration { public GreekRegistration() { } public Character.UnicodeBlock[] getUnicodeBlock() { return new Character.UnicodeBlock[]{Character.UnicodeBlock.GREEK, Character.UnicodeBlock.GREEK_EXTENDED}; } public Object getPackage() { return this; } public String getTeXFontFileName() { return "fonts/language_greek.xml"; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/0000755000175000017500000000000012275735442026463 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbpg.ttf0000644000175000017500000016434412275735442031316 0ustar sylvestresylvestrepFFTMS(GDEF)lGPOSyGSUBge OS/2X3$xVcmapޡ\ gaspdglyfUq6Xhead6hhea4$hmtxفb>loca~`MmaxpX name2;cl)post-%ݘA*_< aS*aS*}}ZC@O1PfEd  8Z} ?M@@@@~)'?%qG#e)'>3@?*?B??????/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?////////*/?/5????????4?9????????????4>/?5?_/_/_/_/_/_/?*?*?*?*?*???*?*?*?*?*?*5555555555555555?O555//??_/e)2''9'@'~@!'%(C('0`?''?O>? )~?>@e"~@>3~??//?@?*?/?//0?.@_ ?n/0/_/O!/.0!?*///5?_/?*55,, x^@ uz'7EWgprtvxz|  tz 0@P`prtvxz| APu&\\V`dr|Rb _aSo `#$(&'%*)78<:;9MQOPNUT>=B@A?DCeighflmsqrnutyz~|}{./312054Y][\Zc^,H+"- WJVLX FkIx ~ ttRuubzz  _aSo `#(&%*)7<:9  M!!""Q#$O%%N&&U''T00>11=22B34@55?66D77C@@eAABBiCDgEEfPQlRRsSTqUUnVVuWWt`aybb~cd|ee{ffggpp!rr6ttKvvExxdzzj||w.31054Y][Zc^,H+"-  WJVLX GFvkpIx  DG6vJrN$dRtn d & N  n$@Jn>r4<( J !!"&"#8#$@$%j& &'T'p'(v)&)*J*+,V--./`/0$0z01`1223 344r55|566778.89l::;6;<=6=>?z@>AABCBDDEFlFGjHVI@IJ$JKRKL0LLMMJMMNNjNNO&OOPPZPPQQTQQR@RSStST5#53;23>746767>;#3'53#.'&'#'@=}}1Y$  11Y[+11+ "]@R1/ |/ 3 K /l//9,  !/)T0%!"'.67>;363!#.'.367655..Z2!=#IO"XT5 '&,l%a%\ D\#&G&/HBi#)V$$0 ')!#.#32>7653#4'.+3'53#'\5$43:P(55 +Bll.>( %;//J% /75456/&'&7>3'567>'&'" U(;G)s )<3pCL 2?! 7/9,  Ehm81M>"0Q/ //j  &5@F?!GF57>776&/.75476;/53/'5?/'5R `   \:Ni2.> EJk ?,0/" % M //~/ Y+/#e77#3'535###LI00IL#00///);25H72767>3:;/53&/.+"3'732'&=&6763)U7  3  V;^  # Mie+rJ  0  L //!C"U  /A &+ 4,"'\#67#!#57#3'53!3'53#2'&=&6763'AlAlAllAllAll  ///////PJA &+ 4,"3 AT%+'363.54>7632267673#"&54>76'&'&#"2'&=&67639 %5 (4 BA4 4'V|O|G24AB c" 5% 1j%) 3   M YNm2-K0 '!->. 0lNZ 2 %_@T%7vZA &+ 4,"@$.96327>7632'.##"'&6766'&676'&6$=!" "{7  "  3"%, !#!#+   +|"8. 8/<$.9a6327>7632'.##"'&6766'&676'&6&>2;276&7636'.4/&$=!" "{7  "  3"%, !#r  8    * $8#!#+   +|"8. 8/ 5+p  %%$H &E8*$.9n2.##"'&67>367>766'&676'&66267676'&'&6&'&'5.'&6+(&B$& "  HN  # 3"%* "# B!:)2I ) @:#9j!'-   "8. :/W"(7 ()3 *ZmV  8=9le '+7O1I* !mHQ".54767>5.'.67>2#.'&'&=4&'&%4'&# .{ '".!,GLN  +N3'y"- !K'&,8. c#+ "t#2 ?eO=;.OV"$`6ibC",bh;( )m' (~%  7>76% L  A & 1% A  &'.'&6P  K %P %2 & &632326746;2#".'&#"+"'&6 Z",  a%)   Q/   #6   y2'&=&6763\  6A &+ 4,"B'&676#"&67637674IE *&"  Kw*E  2/   22#"'&'&676&'.':e \ > G T9  ?< $ C+6"&'?62#"'&'&676&'.'2` ( e \ > G + a)m9  ?< $ 206/&'&62#"'&'&676&'.'#  ^ "e  \ > G  %S  _ 0n9  ?< $ C.6"&'?67>74''&676#"&6762` (    HJ E + a)  &D #7 236/&'&67>74''&676#"&676#  ^ "    HJ E  %S  _ 0  &D #7 $86327>7632'.##"'&676#&'&7>a$=!" "{7  "   " , # !#+   +   $ $66327>7632'.##"'&676'.76"&7>a$=!" "{7  "   # ,#!#+   + $  ^&6"&'?66"'&6%62&'&62` ( A  C C  A + a)       /\GX6#/&'&6&'&67>6?>2;267>32&'6&'&76#   [ " 2&?"(9  ,3 . 6?>2;267>32&'6&'&76lZ#,  b%)   ) 2&?"(9  ,3 . 6?>2;267>32&'6&'&76^IE *&"  K& 2&?"(9  ,3 . 6?>2;267>32&'6&'&76e \ > G  2&?"(9  ,3 . 2#"'&'&676&'.'&'&67>6?>2;267>32&'6&'&76z2 _ e \ > G  2&?"(9  ,3 . 6?>2;267>32&'6&'&76K#   [ "e  \ > G  2&?"(9  ,3 . 7>74''&676#"&676&'&67>6?>2;267>32&'6&'&76z2 _     HJ E  2&?"(9  ,3 . 74''&676#"&676&'&67>6?>2;267>32&'6&'&76K#   [ "    HJ E  2&?"(9  ,3 . 7632.##"'&676#&'&7>&'&67>6?>2;267>32&&36?654'&$=!" # <.M4"   " , # h 2&?"(9  ,3 . 7632.##"'&676'.76"&7>&'&67>6?>2;267>32&'6&'&76$=!" # <.M4"   # ,#d 2&?"(9  ,3 . &'&67>6?>2;267>32&'6&'&762'&=&6763R2` G 2&?"(9  ,3 . 6?>2;267>32&'6&'&762'&=&6763#   [ " 2&?"(9  ,3 . 6?>2;267>32&'6&'&762'&=&6763lZ#,  b%)   ) 2&?"(9  ,3 . 6?>2;267>32&'6&'&762'&=&6763^IE *&"  K& 2&?"(9  ,3 . 6?>2;267>32&'6&'&762'&=&6763e \ > G  2&?"(9  ,3 . 2#"'&'&676&'.'&'&67>6?>2;267>32&'6&'&762'&=&6763z2 _ e \ > G  2&?"(9  ,3 . 6?>2;267>32&'6&'&762'&=&6763K#   [ "e  \ > G  2&?"(9  ,3 . 7>74''&676#"&676&'&67>6?>2;267>32&'6&'&762'&=&6763z2 _     HJ E  2&?"(9  ,3 . 74''&676#"&676&'&67>6?>2;267>32&'6&'&762'&=&6763K#   [ "    HJ E  2&?"(9  ,3 . 7632.##"'&676#&'&7>&'&67>6?>2;267>32&&36?654'&2'&=&6763$=!" # <.M4"   " , # h 2&?"(9  ,3 . 7632.##"'&676'.76"&7>&'&67>6?>2;267>32&'6&'&762'&=&6763$=!" # <.M4"   # ,#d 2&?"(9  ,3 . 32"&676&'#  ^ "#Kd$|:"- G5*;q <1 65 B. %S  _ 0 &#   \! ZCA L >( (A /Y'&676#"&6763767467676'&'&764.'&67>32"&676&'IE *&"  KKd$|:"- G5*;q <1 65 B.w*E  2/   2n &#   \! ZCA L >( (A /[2#"'&'&676'.'67676'&'&764.'&67>32"&676&'e \ > '&>Kd$|:"- G5*;q <1 65 B.T9  ?<  9u &#   \! ZCA L >( (A /+k6"&'?62#"'&'&676&'.'67676'&'&764.'&67>32"&676&'P2` ( e \ > G Kd$|:"- G5*;q <1 65 B.+ a)m9  ?< $ u &#   \! ZCA L >( (A /0p6/&'&62#"'&'&676&'.'67676'&'&764.'&67>32"&676&'!#  ^ "e \ > G Kd$|:"- G5*;q <1 65 B. %S  _ 0n9  ?< $ u &#   \! ZCA L >( (A /.n6"&'?67>74''&676#"&67667676'&'&764.'&67>32"&676&'P2` (    HJ E  Kd$|:"- G5*;q <1 65 B.+ a)  &D #7  &#   \! ZCA L >( (A /3s6/&'&67>74''&676#"&67667676'&'&764.'&67>32"&676&'!#  ^ "    HJ E Kd$|:"- G5*;q <1 65 B. %S  _ 0  &D #7  &#   \! ZCA L >( (A *D2#"'&'&676&'.'&>2;276&7636'.4/&Fe \ > G   8    * $8#T9  ?< $  5+p  %%$H &E8/A'&676#"&67637674&>2;276&7636'.4/&IE *&"  Kq  8    * $8#w*E  2/   2 5+p  %%$H &E8 +S6"&'?62#"'&'&676&'.'&>2;276&7636'.4/&2` ( e  \ > G N  8    * $8#+ a)m9  ?< $  5+p  %%$H &E80X6/&'&62#"'&'&676&'.'&>2;276&7636'.4/&#  ^ "e \ > G _  8    * $8# %S  _ 0n9  ?< $  5+p  %%$H &E8 .V6"&'?67>74''&676#"&676&>2;276&7636'.4/&2` (    HJ E U  8    * $8#+ a)  &D #7 n 5+p  %%$H &E83[6/&'&67>74''&676#"&676&>2;276&7636'.4/&#  ^ "   HJ E c  8    * $8# %S  _ 0  &D #7 n 5+p  %%$H &E8<$8`6327>7632'.##"'&676#&'&7>&>2;276&7636'.4/&$=!" "{7  "   " , # ?  8    * $8#!#+   +   $ g 5+p  %%$H &E8<$6^6327>7632'.##"'&676'.76"&7>&>2;276&7636'.4/&$=!" "{7  "   # ,#C  8    * $8#!#+   + $  f 5+p  %%$H &E8;6/&'&6&>2;276&7636'.4/&8#  ^ "%  8    * $8# %S  _ 0 5+p  %%$H &E8<&N632326746;2#".'&#"+"'&6&>2;276&7636'.4/&9Z",  a%)     8    * $8#Q/   #6    5+p  %%$H &E8;+S6/&'&66"'&6%62&'&6&>2;276&7636'.4/&8#  ^ "SA  C C  A   8    * $8# %S  _ 0        5+p  %%$H &E8/\3DW%&'&67>6?>2;267>32&'6&'&762'&=&6763 2&?"(9  ,3 . '&'.'&76"'&''.767676&/&547>762'&=&67638EIE8.'*q1+WL06q  $ N  7  AP=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"?R'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763o1N OQJ 9 : 0.?    O  f "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"N'"/&7>'.67>>2&'&5454'."#"'&6?>54&54&p d% 7 1N OQJ 9 : 0.?      d% C@ "# " 57%!,).)- >K0v0  8Z'1@$d632326746;2#"&'&#"+"'&6'.67>>2&'&5454'."#"'&6?>54&54&Z/(  _0&   1N OQJ 9 : 0.?    Q/  !6  "# " 57%!,).)- >K0v0  8Z'1@Y'&676#"&67637674'.67>>2&'&5454'."#"'&6?>54&54&IE *&"  K1N OQJ 9 : 0.?    w*E  2/   2 "# " 57%!,).)- >K0v0  8Z'1@+k>7676"'2#"'&'&676&'.''.67>>2&'&5454'."#"'&6?>54&54&M ,'b e  \ > G R1N OQJ 9 : 0.?    Z5 !b i9  ?< $  "# " 57%!,).)- >K0v0  8Z'1@+k'"/&7>%2#"'&'&676&'.''.67>>2&'&5454'."#"'&6?>54&54& d% 7 e  \ > G B1N OQJ 9 : 0.?      d% C@@9  ?< $  "# " 57%!,).)- >K0v0  8Z'1@.n>7676"'7>74''&676#"&676'.67>>2&'&5454'."#"'&6?>54&54&M ,'b    HJ E K1N OQJ 9 : 0.?    Z5 !b %  &D #7  "# " 57%!,).)- >K0v0  8Z'1@.n'"/&7>7>74''&676#"&676'.67>>2&'&5454'."#"'&6?>54&54& d% 7    HJ E =1N OQJ 9 : 0.?      d% C@  &D #7  "# " 57%!,).)- >K0v0  8Z'1@4 67676"4 J#bd3 !#b977&'&67>4=4767>726&'&"#&2?6& 2  > S  Bo= 4F  w   ! 2/6!47   1 &J N $8x6367>7632.##"'&676#&'&7>'.67>>2&'&5454'."#"'&6?>54&54&$=!" # :'A&& "   " , # 1N OQJ 9 : 0.?     !*  *   $  "# " 57%!,).)- >K0v0  8Z'1@$6v6367>7632.##"'&676'.76"&7>'.67>>2&'&5454'."#"'&6?>54&54&$=!" # :'A&& "   # ,#1N OQJ 9 : 0.?     !*  * $   "# " 57%!,).)- >K0v0  8Z'1@Na>7676"'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763% ,'b 1N OQJ 9 : 0.?    O  Z5 !b  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"Na'"/&7>'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763p d% 7 1N OQJ 9 : 0.?    O    d% C@ "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"$dw632326746;2#"&'&#"+"'&6'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763Z/(  _0&   1N OQJ 9 : 0.?    O  Q/  !6  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"Yl'&676#"&67637674'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763IE *&"  K1N OQJ 9 : 0.?    O  w*E  2/   2 "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"+k~>7676"'2#"'&'&676&'.''.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763M ,'b e  \ > G R1N OQJ 9 : 0.?    O  Z5 !b i9  ?< $  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"+k~'"/&7>%2#"'&'&676&'.''.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763 d% 7 e  \ > G B1N OQJ 9 : 0.?    O    d% C@@9  ?< $  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,".n>7676"'7>74''&676#"&676'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763M ,'b    HJ E K1N OQJ 9 : 0.?    O  Z5 !b %  &D #7  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,".n'"/&7>7>74''&676#"&676'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763 d% 7    HJ E =1N OQJ 9 : 0.?    O    d% C@  &D #7  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"$8x6367>7632.##"'&676#&'&7>'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763$=!" # :'A&& "   " , # 1N OQJ 9 : 0.?    O   !*  *   $  "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"4 .7.67>76#"'.6?6676'.'&:OyB{A$T  G%4#(5"SD-9*X F[c*5IS04+Az<",& q-f%6/V4> /K.'&'&"&'&676&'&'4'&'#"&7>767&'.'.67>7>7"s e顡 !" .$  %M^ )42t^#> *'#)  ,HS=! /+ B;6*>44!8&  8- %,&577>#"&#&'&7>7&'&547>;2#&/&YUQ00    .0   t!PE(=%  OP41E  > 6&*H b]'  G+ ( 7&7>7% K   2% $6v6367>7632.##"'&676'.76"&7>'.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763$=!" # :'A&& "   # ,#1N OQJ 9 : 0.?    O   !*  * $   "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"//!16/&'&6>'.%6'&676#  ^ "$3606{P.(!O$%5H4[ %S  _ 0{PC!5:?L S/N*UZY  <//'7'&676#"&67637674>'.%6'&676lIE *&"  K$3606{P.(!O$%5H4[w*E  2/   2PC!5:?L S/N*UZY  <//+9I6"&'?62#"'&'&676&'.'>'.%6'&6762a ( e \ > G d$3606{P.(!O$%5H4[+b)m9  ?< $ PC!5:?L S/N*UZY  <//0>N6/&'&62#"'&'&676&'.'>'.%6'&676Y#  ^ "e  \ > G S$3606{P.(!O$%5H4[ %S  _ 0n9  ?< $ PC!5:?L S/N*UZY  <//.<L6"&'?67>74''&676#"&676>'.%6'&6762a (    HJ E ]$3606{P.(!O$%5H4[+b)  &D #7 PC!5:?L S/N*UZY  <//3AQ6/&'&67>74''&676#"&676>'.%6'&676Y#  ^ "    HJ E O$3606{P.(!O$%5H4[ %S  _ 0  &D #7 PC!5:?L S/N*UZY  <* B"/&7>6267676'&'&6&'&'5.'&6 a% 9 B!:)2I ) @:#9j!' b%*'"(7 ()3 *ZmV  8=9le '+7O1I* !*+`2#".'&#"+"'&676323267>7636267676'&'&6&'&'5.'&6 (#%+   Z ,  B!:)2I ) @:#9j!' "    /  "(7 ()3 *ZmV  8=9le '+7O1I* !*N'&676#"&676376746267676'&'&6&'&'5.'&61IE *&"  KB!:)2I ) @:#9j!'w*E  2/   2"(7 ()3 *ZmV  8=9le '+7O1I* !*Q2#"'&'&676&'.'6267676'&'&6&'&'5.'&6e  \ > G SB!:)2I ) @:#9j!'T9  ?< $ "(7 ()3 *ZmV  8=9le '+7O1I* !* *_67676"'2#"'&'&676&'.'6267676'&'&6&'&'5.'&6 J#be  \ > G B!:)2I ) @:#9j!'d4 !#bi9  ?< $ "(7 ()3 *ZmV  8=9le '+7O1I* !?pj75>%'&7>5@A1A1M+R5$+R5^+6/&'&66"'&6%62&'&6[#  ^ "SA  C C  A  %S  _ 0       * *_"/&7>2#"'&'&676&'.'6267676'&'&6&'&'5.'&6 a% 9 e \ > G B!:)2I ) @:#9j!' b%*'9  ?< $ "(7 ()3 *ZmV  8=9le '+7O1I* !* -b67676"'7>74''&676#"&6766267676'&'&6&'&'5.'&6 J#b   HJ E B!:)2I ) @:#9j!'d4 !#b%  &D #7 >"(7 ()3 *ZmV  8=9le '+7O1I* !* -b"/&7>7>74''&676#"&6766267676'&'&6&'&'5.'&6 a% 9    HJ E B!:)2I ) @:#9j!' b%*'F  &D #7 >"(7 ()3 *ZmV  8=9le '+7O1I* !*$8m2.##"'&67>367>76#&'&7>6267676'&'&6&'&'5.'&6+(&B$& "  HN  #  " , # B!:)2I ) @:#9j!'-      $ 7"(7 ()3 *ZmV  8=9le '+7O1I* !*$6k2.##"'&67>367>76'.76"&7>6267676'&'&6&'&'5.'&6+(&B$& "  HN  # y # ,#B!:)2I ) @:#9j!'-    $  6"(7 ()3 *ZmV  8=9le '+7O1I* !* %Z"/&7>6"'&4%62"'&66267676'&'&6&'&'5.'&6 a% 9 ?  B @  @ B!:)2I ) @:#9j!' b%*'*    !  P"(7 ()3 *ZmV  8=9le '+7O1I* !5b'"/&7>>'&'.'&76"'&''.767676&/&547>76 d% 8 ?8EIE8.'-p0+WL06q  $ N    d% = B;P=_N E8v\D!*"_d/T\$ ,+9' 5(z"&5>732767456;2#".'&#>'&'.'&76"'&''.767676&/&547>76 3(-7!9  -8#9 '8EIE8.'-p0+WL06q  $ N     #< #"P=_N E8v\D!*"_d/T\$ ,+9' 5k'&676#"&67637674>'&'.'&76"'&''.767676&/&547>76IF *&"  K8EIE8.'-p0+WL06q  $ N  w*D 2/   2P=_N E8v\D!*"_d/T\$ ,+9' 5m2#"'&'&676'.'>'&'.'&76"'&''.767676&/&547>769e  \ > '&8EIE8.'-p0+WL06q  $ N  T9  ?<  9P=_N E8v\D!*"_d/T\$ ,+9' 5+}>7676#'2#"'&'&676&'.'>'&'.'&76"'&''.767676&/&547>76&8 %d e  \ > G 8EIE8.'-p0+WL06q  $ N   %d i9  ?< $ P=_N E8v\D!*"_d/T\$ ,+9' 5,~'"/&7>%2#"'&'&676&'.'>'&'.'&76"'&''.767676&/&547>76 d% 8 e  \ > G 8EIE8.'-p0+WL06q  $ N    d% 21 BN9  ?< $ P=_N E8v\D!*"_d/T\$ ,+9' 5.>7676#'7>74''&676#"&676>'&'.'&76"'&''.767676&/&547>76&8 %d    HJ E 8EIE8.'-p0+WL06q  $ N   %d %  &D #7 1P=_N E8v\D!*"_d/T\$ ,+9' 5/'"/&7>%7>74''&676#"&676>'&'.'&76"'&''.767676&/&547>76 d% 8    HJ E 8EIE8.'-p0+WL06q  $ N    d% 21 B   &D #7 1P=_N E8v\D!*"_d/T\$ ,+9' 5&:"&5>7>7632#"'.#&'&7>>'&'.'&76"'&''.767676&/&547>76 "196. /#&   v?5 /&B  " , # ]8EIE8.'-p0+WL06q  $ N  T # =% B   $ 8P=_N E8v\D!*"_d/T\$ ,+9' 5&8"&5>7>7632#"'.'.76"&7>>'&'.'&76"'&''.767676&/&547>76 "196. /#&   v?5 /&B  # ,#Y8EIE8.'-p0+WL06q  $ N  T # =% B $  9P=_N E8v\D!*"_d/T\$ ,+9' 5bu'"/&7>>'&'.'&76"'&''.767676&/&547>762'&=&6763 d% 8 ?8EIE8.'*q1+WL06q  $ N  7    d% = B;P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5`s>7676#>'&'.'&76"'&''.767676&/&547>762'&=&6763Y&8 %d x8EIE8.'*q1+WL06q  $ N  7   %d VP=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5(z"&5>732767456;2#".'&#>'&'.'&76"'&''.767676&/&547>762'&=&6763 3(-7!9  -8#9 '8EIE8.'*q1+WL06q  $ N  7     #< #"P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5k~'&676#"&67637674>'&'.'&76"'&''.767676&/&547>762'&=&6763IE *&"  K8EIE8.'*q1+WL06q  $ N  7  w*E  2/   2P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5m2#"'&'&676'.'>'&'.'&76"'&''.767676&/&547>762'&=&67639e  \ > '&8EIE8.'*q1+WL06q  $ N  7  T9  ?<  9P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5+}>7676#'2#"'&'&676&'.'>'&'.'&76"'&''.767676&/&547>762'&=&6763&8 %d e  \ > G 8EIE8.'*q1+WL06q  $ N  7   %d i9  ?< $ P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"O >&'.^3" &)  T  C50'"/&7>%7>74''&676#"&676>'&'.'&76"'&''.767676&/&547>762'&=&6763 d% 8    HJ E 8EIE8.'*q1+WL06q  $ N  7    d% = B   &D #7 1P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5&:"&5>7>7632#"'.#&'&7>>'&'.'&76"'&''.767676&/&547>762'&=&6763 "196. /#&   v?5 /&B  " , # ]8EIE8.'*q1+WL06q  $ N  7  T # =% B   $ 8P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"5&8"&5>7>7632#"'.'.76"&7>>'&'.'&76"'&''.767676&/&547>762'&=&6763 "196. /#&   v?5 /&B  # ,#Y8EIE8.'*q1+WL06q  $ N  7  T # =% B $  9P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4,"/6G'&676#"&67637674'&'.=4>7>&7>'&#"326LIE *&"  KT9 %(ry&9 6B'RJU? Q(ww*E  2/   2i!C+pCDHE:".I6D K0<(//9J2#"'&'&676&'.''&'.=4>7>&7>'&#"326e \ > G nT9 %(ry&9 6B'RJU? Q(wT9  ?< $ i!C+pCDHE:".I6D K0<(/[2#"'&'&676'.''.67>>2&'&5454'."#"'&6?>54&54&e \ > '&1N OQJ 9 : 0.?    T9  ?<  9 "# " 57%!,).)- >K0v0  8Z'1@2#"'&'&676'.''.67>>2&'&5454'."#"'&6?>54&54&2'&=&6763e \ > '&1N OQJ 9 : 0.?    O  T9  ?<  9 "# " 57%!,).)- >K0v0  8Z'1@hA &+ 4,"//*:2#"'&'&676&'.'>'.%6'&676e \ > G $3606{P.(!O$%5H4[T9  ?< $ PC!5:?L S/N*UZY  <;&N6"&'?66"'&6%62&'&6&>2;276&7636'.4/&2` ( A  C C  A   8    * $8#+ a)        5+p  %%$H &E8);2572767>3:;/53&/.+"3'73)U7  3  V;^  # Mie+r0  L //!C"U  /'3@M%"&#""#53#523373623:>764'&+327>&'.+`RW, * ll * ,W]7966/, +6"$4&5%>9@|<:ES#*&+#/P/ >H 4!GBx $ mh'7!#&'.#3'53#'B`5017>Blln$//J9>32#!"&6?!  ?   h   n$ J'87!#4.'.+3>7653#4'.+3>7>73!'53#'A`@5 A.(} %%"55 -!X@995.bAll '(,&8H9/J@07"&54>7>7#"&#?!23>7673ib I47%+ 5'$_J@::65 + -"&7pJ <26~;'\#?#!#5?#3'53!3'53#'AlAlAllAllAll///////P@=/>&'.63353#5##'67>&'&'.>n +C}Q^>B-!5555@ H*+"" 9=CN.QE ћ=\I< .;?;""""}U3%$2'a!xAD >H!?#3'53#!DrrDrr///P'T<?#7?"33/5276/.3'53#'AlZ)yb&/3 (#5CG lAll/# //  8//  < //P(*726?67>32;/53#3'(<   >8__ Tg_(0<  ."//7( /(A72>5#5327>;#3/53##.'&'#3/(8-l ll?l    -33tl0 7/ $40" ///J  6 /'\,72>5#534?"#"&'.'#3/'8-l#Ilt3H$ ^  -33tl0 7/ 0//  " /0$6"#?!#4'&#"&#!"#"3!53#5!#33!27653!/55 6 2 5U555o5 p$f 5u1"1'd;;d'D l////'M  M)j>?i?&>&'&'&6767676'.INXCH7DZ];I .aO2MW%6 I7U.$mUz!Fc\ ( 2=LtWB]8  $+DS='\37!737#3'53!3'53#'@2K>=EF2@llAllAll///J//J'%52332>;:+3'53#3267>454&'&+' * -Y & 521-/()9"O/1lAllx6F $O{ !Ue"//P  31OU&'&476&74>7>4  \C> / P5E'  -%?0%!".567%656'&'&63!#.'&#267673  5 (?7)!(3i<5  <  >P$ 0 -+r)!373#&'.+3'#'53#"#>+g`5;(&+PBP+&(<5m'//E%o?>>"&7>3>76#".'&#&3'5354.'.#"\ oG/N+-K,!!5@  ) 'J:) BM =L=@I9 J-   Z:8//6>V@,4=3?#2#3/535"'&'&547635#67>&'&'H:HN`L $H181H)>/ J !Ir$M/i E--#' i//j'b .j## T7F("CG73'527>?675&/#57#3??";/53'3@xu1h ,. V;S~$8xu1?:  W;Sn 8//  9 @ //ŧ //   //@=N2#3/535.'.'.54656;2#53?#6767>763 &?C'( H)m'!= : 'H:H&@ $   -'8W5 j//j&)$Xc   D>k/ //C 2lA? 3 A%+'363.54>7632267673#"&54>76'&'&#"9 %5 (4 BA4 4'V|O|G24AB c" 5% 1j%) 3 M YNm2-K0 '!->. 0lNZ 2 %_@T%7vZ} &>&'&6!>'.?#3'53#$*!$$:H "++쎠DrrDrro YQ TD///P?>| X>'.%>'."&7>3>76#".'&#&3'5354.'.#"1&"1 C1&"1 [ oG/N+-K,!!5@  ) 'J:) [  M(  D  M(  DBM =L=@I9 J-   Z:8//6>V/\FW6"&'?>&'&67>6?>2;267>32&'6&'&76R2` G 2&?"(9  ,3 . 32"&676&'(2` ( Kd$|:"- G5*;q <1 65 B.+ a) &#   \! ZCA L >( (A N>7676"'.67>>2&'&5454'."#"'&6?>54&54&% ,'b 1N OQJ 9 : 0.?    Z5 !b  "# " 57%!,).)- >K0v0  8Z'1@@66"&'?6&>2;276&7636'.4/&2` ( M  8    * $8#+ a) 5+p  %%$H &E8* %Z67676"'6"'&4%62"'&66267676'&'&6&'&'5.'&6 J#b?  B @  @ B!:)2I ) @:#9j!'d4 !#bA    !  P"(7 ()3 *ZmV  8=9le '+7O1I* !/\3D%&'&67>6?>2;267>32&'6&'&76 2&?"(9  ,3 . 76547>32&>'.7676&'&#".'47>f K 766767>` $00*  1$24:(, 1)>h9m@&  Wh|" %6 E?K,u# 8PH*//D.'&7>&/&'.6766'&'.M0 !AoN5  .  n$G' /OW8?G- 9M k !+<A9 #: a 2$D #9-eR!4 "-% 29 b;kX  U2/?767676'&'&764.'&67>32"&676&'tKd$|:"- G5*;q <1 65 B. &#   \! ZCA L >( (A 01E4#.'.6767'.767>2'.76736 25A',=!Q""5 $   ,l_G)5' S_(U$ l78%.O- S L  # JIf4+ Q7<0 !4?'.67>>2&'&5454'."#"'&6?>54&54&o1N OQJ 9 : 0.?    f "# " 57%!,).)- >K0v0  8Z'1@."/>.'&546'&325656#76767v"an*Hl&OA1HO ^+' rqJ3 u-(7`Z$ah+b S Io@)Z@'&>2;276&7636'.4/&A  8    * $8# 5+p  %%$H &E8 ?G""'&6766?676>&'&'&65#.7>?>54& [-&FC1* W = !^##r) "#A .f: 2_ FC15 G  - .! $+O )r(  ) 4 *:75+"'&>76?>&'&'&#"'&676#"'&'+)9  A :B %+% cMP> ) ("(7Gd}8  3kC 2  B s0/38 B 8A/bL7&'&?674&/&63765&6?67>32'.'&'&'qL!; "" Q@ 4  6  */ ';HS"\_ *L

 @ *:6&X,!F#12  "=K!5%   Z%# ."0%6'6&'&'.'&676>76.'&6!1 's$Z#)U  4J v&>!^= O0]2, /2V#"&67>2>766"'&67>76'&#"'.767675.6 +! ; Se!  % _  D)=#8'63-)/R 44kM$CUy  ]$$   F  &6  #2WU )/$ % qEiJ '5C// >'.%6'&676B$3606{P.(!O$%5H4[=PC!5:?L S/N*UZY  <!J@+6763232'.=#&'&>7>="'&76763!2r2  r3, 6 -$' l t {?  FE|]b<   #G:Z  @ /-7'&'.=4>7>&7>'&#"326\T9 %(ry&9 6B'RJU? Q(wMi!C+pCDHE:".I6D K0<(/.4&#.'.6767632#"'.7632%E 32? 540!'HTc?, /124 C*+ H ! ':M&p# 3 84' 6 $) :0n2'"&'&'.>7>732327>'.'&n q 3 $1GL, B9L1 # 8)3$)8;*(5-D h   :!/h".1#_`Y#48e)+E 4*!5"+6763232'&'&5#"&'&7>763!:  " #  i5;M  &!  u sR    CG g' !*46267676'&'&6&'&'5.'&6\B!:)2I ) @:#9j!'"(7 ()3 *ZmV  8=9le '+7O1I* !/o9M%2754654?>76#&'&?65"&'&7676327>7>&'&*1:95J E)t'-/ (t(L A*#C 58+L1OB- ] % $FY #4~lE)$ $i/%(Oo[G, ;%c] I"WQ%R O/NE6'&'&'#+"54>7654'&'&#"&7>4?>;26 H83"i I <>! ?<#$"i I1$)wH8 D05 PIS8-,55/oI%6'&7>>76'&'&76&'&>765&'.>7633)4  Cd  &E94L /- |=(#$%  -@&(0! FKLB4;  IYFw/i$I.2 B*iaI45  6!5Q%>'&'.'&76"'&''.767676&/&547>768EIE8.'-p0+WL06q  $ N  AP=_N E8v\D!*"_d/T\$ ,+9' U B4>76&%4676&&>2;276&7636'.4/&]#;""6)"7 ";s  8    * $8#1 $') "*&'+" "'j 5+p  %%$H &E8 O4>76&%6'&66267676'&'&6&'&'5.'&6#;""64.K 1B!:)2I ) @:#9j!'1 #') "*f((!$B"(7 ()3 *ZmV  8=9le '+7O1I* !//,6"&'?6>'.%6'&676`2a ( $3606{P.(!O$%5H4[+b)|PC!5:?L S/N*UZY  <* B67676"6267676'&'&6&'&'5.'&6 J#bB!:)2I ) @:#9j!'d4 !#b"(7 ()3 *ZmV  8=9le '+7O1I* !5`>7676#>'&'.'&76"'&''.767676&/&547>76Y&8 %d x8EIE8.'-p0+WL06q  $ N   %d VP=_N E8v\D!*"_d/T\$ ,+9' 5-'"/&7>%2#"'&'&676&'.'>'&'.'&76"'&''.767676&/&547>762'&=&6763 d% 8 e  \ > G 8EIE8.'*q1+WL06q  $ N  7    d% = BN9  ?< $ P=_N E8v\D!*"_d/T\$ ,+9' wA &+ 4," t' I p  ^  N   ' ZConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fcmbpgjlm_fcmbpgBoldBoldFontForge 2.0 : jlm_fcmbpg : 30-12-2009FontForge 2.0 : jlm_fcmbpg : 30-12-2009jlm_fcmbpgjlm_fcmbpgVersion 001.001 Version 001.001 jlm_fcmbpgjlm_fcmbpg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7uni03D1tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkern|1l88888lN`nx~nnn88`s`    `` @@  ggs``   @@  ```` ss,!"#$%')*+,-./0245defhwxyz{}1 =>?ACDEFGdefh>aHaS*libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_greek.map.xml0000644000175000017500000002727112275735442031731 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsrpg.xml0000644000175000017500000005746512275735442031354 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsropg.xml0000644000175000017500000006403212275735442031517 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbipg.ttf0000644000175000017500000017474412275735442031474 0ustar sylvestresylvestrepFFTMS(GDEF)GPOSO` GSUBge OS/2X$xVcmaps gaspglyf2D-<|head 6hhea4$hmtxzJ:locaև JmaxpX name<߸5post٨ylAEǦ_< aS*aS*}}ZC&d@P!1PfEd!  8Z}cMQQQQ~v'?gqGe)'>X,?oc??k???Mccccccccccccccccccccc;;;;;;;III:IIIII>c`RwRwRwRwRwRwRwRw? RwRwRwRwRwRwRwRwRwRwRw?s>?^Rwcccccc?o?o?o?o?oR?M?o?o?o?o?o?o````````````````?```NNRwRwce)2'';'D'~!'%(C('9`''?>F %>e"~>X!%c;RwI?oc?\b;RRwOI_U?wJcNNe?duRohc`*?oc?o``,, p\@ uz'7EWgprtvxz|  tz 0@P`prtvxz| Pt%ZZV`dr|Qa ^`Rn _"#'%&$)(67;9:8LPNOMTS=<A?@>CBdhfgeklrpqmtsxy}{|z~-.201/43X\Z[Yb]+G*!, VIUKW EjHw } ttQuuazz ^`Rn _"'%$)(6;98  L!!""P#$N%%M&&T''S00=11<22A34?55>66C77B@@dAABBhCDfEEePQkRRrSTpUUmVVtWWs`axbb}cd{eezffgg~pp rr5ttJvvDxxczzi||v-20/43X\ZYb]+G*!,  VIUKW FEujoHw  DG< b:>0bb0b> : 0 h  j&0X$zVl\p^H ^ !!v""#,#$.$%^&&'>'\'(f))*P++,|-D..//0X00112^23R34@45N56b77"7h889Z::;\;<=J=>?@BAABCnD*DEFGGHIJxJKL LM MMNrNNOXOPPhPQ0Q~QR^RSS^SSTNTTUlUVnVWRWXTXYVYZBZ[[t[\@\] ]]^n^_F_`2`j`a>aabHbc"cdddepef32#!"'&?3/~ߋ r A Vv R1  I T-Q$ H!#!#?7#37#?7#3'676;267>7#3'47>2;26?67~ߋ r) (KT &/z/7 (PO 1l0 SY+   n ,7 WX(    >R1 ! !  /l/- u  / (aQ$ J!#!#?7#?/?7#3'?'#/?3?6?/~ߋ r- )RQ  B  !:I '`!< [Y)@ !FK)L&R1  ! 7.S! ! y "/" eR /! $aQ$ `!#!#7>32;;267>72636;#3'47>2;26?67#'&4?65#'6763>?>7~ߋ r# - ,0!~ 1l0 X[+   6   B >^  , R1 " I! g#/l/ "* -E/*8a,v(;%#!.'.67>76;63!#6'&+"6.67>76 ?>E!4b/W M(%O &:N#JM",{ J 0  ,%1}t6^ y$% &ASJ"$%-E'95?!#4>&'.+>7>32;#>'&'&#3/73? P!5 $<#lH60* %K5 JH L b z! /)  1+ & ! / ;g&4.'&>76"3/73?6&#"67> C=3myHS4H38p H d .*$D\%8,24#*\c#K O63T3! /0AIFgGS97>7676&'.767>76;/73/#'?/#'G   [ ` ; RI 6,@ 0 *  $l )>  //*Z), VE e7?#3/73?#LJK$ !- 0  #?H !5/! .! /)-H9=V%4&+"3#/727>7>7632;/##73&/3#27>76&7>@ L J0^V V q   RX  2:63A _(m$ #D68  q " /     ! /eW% '= D1'-9R?#!?#7?#3#/73?6?!"3#/73?7#27>76&7>މB a @5@k B b l G a  *6 l G b  k$ #D68 /// " /%H-" / ,`% '= D1X-Pi%&'.'&7632676?6;+"'&6767>76'.'&+?3327>76&7>= A$Qv4[V: l!%x%+&R/ 9%9r+1-+ % $ #D68 h(^M(iQv!@-bx$- 6 +_)  3<.pK,T8") %*z/1M    % '= D1y'3>767'."/4676&%4676& &9,)-P ="4@* (!'!("% &m  *!B41i&$&",+7V>7>7."/4676&%4676&7>7>'.5476?4763U )!)-Q +$ 4(* (!'"'"'!&4V   %AK< m$  B % h$""%-'  /^*Lo&1n6767'."/4676&%4676&6#"&'.>7654&'&7>676'.'&6LA/ -P >"3@* (!%"&!'8&uI /S    !.%n$ (M%3 &m@ ," B51k$"$1 Ba4Qy)('%?   K>*@2(X!0JIn7 +V 7>76&! 2"q c(= "qC&/&7> $O  N! $){>762676'. @:(6;  %4:() 6 ')  . -27>76&7>/$ #D68  % '= D1#"&7>36367>'#"'&676jO >+cf4> % #;"i2#"'&67>2'&*$& J%T Bp*  #6! / +>7676&'2#"'&67>2'&81 1!r j*$& J%T B " #r*  #6! / k+&'.7>'2#"'&67>2'&(N *$& J%T BU, #*i *  #6! / +676'7#'&676326367>'&'&676b"4 h  @(& :8oD   h9% 0  < & +>72'##"'&67636367>'&'&676E-   0z  9 4$ 2$! jP") & 59:>76767>7'."/'&'462'& &$1",( ="4@* .4  ' m  %  41G  "' 97>76767>7'."/'&67632#"'&6763676'4 &$1",( ="4@* *  # Y $ m  %  41> "4 M  ,6?>76'>'&6%>'&6   5"X A  A QA  A  =% "X ?       cqBS&'&7>2&'&'&67>2>7667676&5'>&'&6-+  ! >7c \N2 </60+*I)`/ (*%U+  *   "C9 %  %X+/^d[ %6@ c|N_>76267>'.'&&'&'&67>2>7667676&5'>&'&6C=+ D '4:) >7c \N2 </60+9 ))  . O/ (*%U+  *   "C9 %  %X+/^d[ %6@ cqL]#"&7>36367>'#"'&676&'&'&67>2>7667676&5'>&'&6QjO >+c >7c \N2 </60+f4> % #;"/ (*%U+  *   "C9 %  %X+/^d[ %6@ cqL]2#"'&67>2'&&'&'&67>2>7667676&5'>&'&6*$& J%T B >7c \N2 </60+p*  #6! / / (*%U+  *   "C9 %  %X+/^d[ %6@ cq )Yj67676'2#"'&67>2'&&'&'&67>2>7667676&5'>&'&65 !.#q o*$& J%T B4 >7c \N2 </60+# #q *  #6! / / (*%U+  *   "C9 %  %X+/^d[ %6@ cq/_p&'&7>2'2#"'&67>2'&&'&'&67>2>7667676&5'>&'&6-+  *$& J%T BW >7c \N2 </60+*I)*  #6! / / (*%U+  *   "C9 %  %X+/^d[ %6@ cq-]n676'7'.>76326367>'.'&76&'&'&67>2>7667676&5'>&'&6#3i !f$ ? , c X >7c \N2 </60+pC  i 7  $ 1   / (*%U+  *   "C9 %  %X+/^d[ %6@ cq,\m>72'#"'&67636367>'&'&676&'&'&67>2>7667676&5'>&'&6+  1y  9 4$ 0 >7c \N2 </60+ 3W iN") & 5/ (*%U+  *   "C9 %  %X+/^d[ %6@ c8hy6767."/'&'462'&&'&'&67>2>7667676&5'>&'&6LA/ -P +$"5'* .4  '  >7c \N2 </60+m@ ," B % G  "' +/ (*%U+  *   "C9 %  %X+/^d[ %6@ c5ev6767."/'&67632#"'&6763676'4&'&'&67>2>7667676&5'>&'&6LA/ -P +$"5'* *  # Y $ Q >7c \N2 </60+m@ ," B % > "4 "/ (*%U+  *   "C9 %  %X+/^d[ %6@ c-qBSl>?>7>&&'&'&67>2>7667676&5'>&'&627>76&7>  : q  >7c \N2 </60+$ #D68 Q* "q\/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-qBSl&'&7>2&'&'&67>2>7667676&5'>&'&627>76&7>-+  ! >7c \N2 </60+$ #D68 *I)`/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-|N_x>76267>'.'&&'&'&67>2>7667676&5'>&'&627>76&7>C=+ D '4:) >7c \N2 </60+$ #D68 9 ))  . O/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-qL]v#"&7>36367>'#"'&676&'&'&67>2>7667676&5'>&'&627>76&7>QjO >+c >7c \N2 </60+$ #D68 f4> % #;"/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-qL]v2#"'&67>2'&&'&'&67>2>7667676&5'>&'&627>76&7>*$& J%T B >7c \N2 </60+$ #D68 p*  #6! / / (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-q )Yj67676'2#"'&67>2'&&'&'&67>2>7667676&5'>&'&627>76&7>5 !.#q o*$& J%T B4 >7c \N2 </60+$ #D68 # #q *  #6! / / (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-q/_p&'&7>2'2#"'&67>2'&&'&'&67>2>7667676&5'>&'&627>76&7>-+  *$& J%T BW >7c \N2 </60+$ #D68 *I)*  #6! / / (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-q-]n676'7'.>76326367>'.'&76&'&'&67>2>7667676&5'>&'&627>76&7>#3i !f$ ? , c X >7c \N2 </60+$ #D68 pC  i 7  $ 1   / (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-q,\m>72'#"'&67636367>'&'&676&'&'&67>2>7667676&5'>&'&627>76&7>+  1y  9 4$ 0 >7c \N2 </60+$ #D68  3W iN") & 5/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-8hy6767."/'&'462'&&'&'&67>2>7667676&5'>&'&627>76&7>LA/ -P +$"5'* .4  '  >7c \N2 </60+$ #D68 m@ ," B % G  "' +/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1c-5ev6767."/'&67632#"'&6763676'4&'&'&67>2>7667676&5'>&'&627>76&7>LA/ -P +$"5'* *  # Y $ Q >7c \N2 </60+$ #D68 m@ ," B % > "4 "/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1;R&'.7>&'&67676#"'&6'.32>&327676'&'&676i(N A# 3XW- S  )#%f=,Kee*U, #*i $K!'%" ?/  3 #3= /, 6R;`#"&7>36367>'#"'&676&'&67676#"'&6'.32>&327676'&'&676jO >+cA# 3XW- S  )#%f=,Kee*f4> % #;"t$K!'%" ?/  3 #3= /, 6R;`2#"'&67>2'&&'&67676#"'&6'.32>&327676'&'&676K*$& J%T BvA# 3XW- S  )#%f=,Kee*p*  #6! / $K!'%" ?/  3 #3= /, 6R;%+o>7676&'2#"'&67>2'&&'&67676#"'&6'.32>&327676'&'&676x0 1t j*$& J%T BAA# 3XW- S  )#%f=,Kee* ! t*  #6! / $K!'%" ?/  3 #3= /, 6R;+o&'.7>'2#"'&67>2'&&'&67676#"'&6'.32>&327676'&'&676(N *$& J%T BA# 3XW- S  )#%f=,Kee*U, #*i *  #6! / $K!'%" ?/  3 #3= /, 6R;%+o676'7#'&676326367>'&'&676&'&67676#"'&6'.32>&327676'&'&676"4 h  @(& :8A# 3XW- S  )#%f=,Kee*oD   h9% 0  < & }$K!'%" ?/  3 #3= /, 6R;+o>72'##"'&67636367>'&'&676&'&67676#"'&6'.32>&327676'&'&676-   0z  9 4$ 2A# 3XW- S  )#%f=,Kee*$! jP") & 5;$K!'%" ?/  3 #3= /, 6RIg;2#"'&67>2'&7>7>'.5476?4763*$& J%T B-V   %AK< p*  #6! / '  /^*LI;#"&7>36367>'#"'&6767>7>'.5476?4763jO >+coV   %AK< f4> % #;"'  /^*LI-L>?676'2#"'&67>2'&7>7>'.5476?4763,3 K r*$& J%T BrV   %AK< " "L *  #6! / '  /^*L: *I.7>'2#"'&67>2'&7>7>'.5476?4763R O *$& J%T BV   %AK< "A #) ~*  #6! / '  /^*LI,K676'7#'&676326367>'&'&6767>7>'.5476?47631$2 '& ~  @(& :8V   %AK< oB  && 9% 0  < & '  /^*LI+J>72'##"'&67636367>'&'&6767>7>'.5476?4763-! 0z  9 5 ( 4V   %AK< $!jP") % 8'  /^*LI<[>7>7."/'&'462'&7>7>'.5476?4763U )!)-Q +$ 4(* .4  ' 5V   %AK< m$  B % G  "' c'  /^*LI9X>7>7."/'&67632#"'&6763676'47>7>'.5476?4763U )!)-Q +$ 4(* *  # Y $ V   %AK< m$  B % > "4 l'  /^*LI1 ,.7>7>7>'.5476?4763 O  V   %AK< "A #) 5'  /^*L>|;>676'.7>7>'.5476?4763> %& $;  Z29()V   %AK<      P. ?'  /^*L %D.7>'>'&6%>'&67>7>'.5476?4763 O @  B QA  A NV   %AK< "A #) :      e'  /^*Lc-q/@Y%&'&'&67>2>7667676&5'>&'&627>76&7> >7c \N2 </60+$ #D68 K/ (*%U+  *   "C9 %  %X+/^d[ %6@ _% '= D1`-Rk%&'&767>:327675&5676?672267>76'.5476'&27>76&7>FF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 HF*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1w*l<U67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>,/J5  @6%  : 5!#/  $Ql6$ #D68 v,[*qr !  H;;< v3 N1 J A% '= D1w*lK&'&7>67632"'"'&?>76'4'&'.6?6'&&'4>/ O  ,/J5  @6%  : 5!#/  $Ql6g!#) v,[*qr !  H;;< v3 N1 J w*z|X>762676'.67632"'"'&?>76'4'&'.6?6'&&'4> C7)8;  %4:(),/J5  @6%  : 5!#/  $Ql68 %*  . ,[*qr !  H;;< v3 N1 J w*lY#"&7>36367>'#"'&67667632"'"'&?>76'4'&'.6?6'&&'4>AjO >+c,/J5  @6%  : 5!#/  $Ql6f4> % #;",[*qr !  H;;< v3 N1 J w*l.k>?676'2#"'&67>2'&67632"'"'&?>76'4'&'.6?6'&&'4>,2 T r*$& J%T BF,/J5  @6%  : 5!#/  $Ql6#   T *  #6! / ,[*qr !  H;;< v3 N1 J w*l+h&'&7>'2#"'&67>2'&67632"'"'&?>76'4'&'.6?6'&&'4>/ O  *$& J%T Bh,/J5  @6%  : 5!#/  $Ql6g!#) *  #6! / ,[*qr !  H;;< v3 N1 J w*l)f676'7#'&676326367>'&'&67667632"'"'&?>76'4'&'.6?6'&&'4>#1j ~  @(& :8F,/J5  @6%  : 5!#/  $Ql6oE j 9% 0  < & ,[*qr !  H;;< v3 N1 J w*l+h>72'##"'&67636367>'&'&67667632"'"'&?>76'4'&'.6?6'&&'4>-0z  9 5 ( 4,/J5  @6%  : 5!#/  $Ql6' jP") % 8,[*qr !  H;;< v3 N1 J p 6?676 + 4!s   !t  632+"#"&'&5467>7>7>763!!"    )3 !U3! 7% F  ' YZ( + ?982 o w*8u>767'."/'&'462'&67632"'"'&?>76'4'&'.6?6'&&'4> &9,)-P ="4@* .4  '  ,/J5  @6%  : 5!#/  $Ql6m  *!B41G  "' ,[*qr !  H;;< v3 N1 J w*5r>767'."/'&67632#"'&6763676'467632"'"'&?>76'4'&'.6?6'&&'4> &9,)-P ="4@* *  # Y $ @,/J5  @6%  : 5!#/  $Ql6m  *!B41> "4 ,[*qr !  H;;< v3 N1 J w*lKd7>76&67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>! +#p ,/J5  @6%  : 5!#/  $Ql6$ #D68 c!-#py,[*qr !  H;;< v3 N1 J A% '= D1w*lKd&'&7>67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>/ O  ,/J5  @6%  : 5!#/  $Ql6$ #D68 g!#) v,[*qr !  H;;< v3 N1 J A% '= D1w*z|Xq>762676'.67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7> C7)8;  %4:(),/J5  @6%  : 5!#/  $Ql6$ #D68 8 %*  . ,[*qr !  H;;< v3 N1 J A% '= D1w*lYr#"&7>36367>'#"'&67667632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>AjO >+c,/J5  @6%  : 5!#/  $Ql6$ #D68 f4> % #;",[*qr !  H;;< v3 N1 J A% '= D1w*l.k>?676'2#"'&67>2'&67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>,2 T r*$& J%T BF,/J5  @6%  : 5!#/  $Ql6$ #D68 #   T *  #6! / ,[*qr !  H;;< v3 N1 J A% '= D1w*l+h&'&7>'2#"'&67>2'&67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>/ O  *$& J%T Bh,/J5  @6%  : 5!#/  $Ql6$ #D68 g!#) *  #6! / ,[*qr !  H;;< v3 N1 J A% '= D1w*l)f676'7#'&676326367>'&'&67667632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>#1j ~  @(& :8F,/J5  @6%  : 5!#/  $Ql6$ #D68 oE j 9% 0  < & ,[*qr !  H;;< v3 N1 J A% '= D1w*l+h>72'##"'&67636367>'&'&67667632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>-0z  9 5 ( 4,/J5  @6%  : 5!#/  $Ql6$ #D68 ' jP") % 8,[*qr !  H;;< v3 N1 J A% '= D1w*8u>767'."/'&'462'&67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7> &9,)-P ="4@* .4  '  ,/J5  @6%  : 5!#/  $Ql6$ #D68 m  *!B41G  "' ,[*qr !  H;;< v3 N1 J A% '= D1s"B,.7>32&'&67>4'&676UHUJ,)X<3' F   > 4 ?$ VZ$!o1?i^' ! &  Yx hka!?.'&#"'&676'&>'&'#.76?>'&'&'.7>?6 0@&  ^S 1  !  1    9 !' A) FgU:  # x& * - m^E>3+&32#"'.7>32>4'&"+&'&67>3232-X.1[ $$&Opq'':!  .E$N,2B;!45D>., q  (&6 (J#90#J   #<=)&54?>72%-(f#*D$  Pw*5r>767'."/'&67632#"'&6763676'467632"'"'&?>76'4'&'.6?6'&&'4>27>76&7> &9,)-P ="4@* *  # Y $ @,/J5  @6%  : 5!#/  $Ql6$ #D68 m  *!B41> "4 ,[*qr !  H;;< v3 N1 J A% '= D1c2-&'.7>6&'.7>>&'&6(N 3df[<3dI! D3 >(?%@U, #*i -a@k#k,Wy}fkb %$c7,;#"&7>36367>'#"'&6766&'.7>>&'&67jO >+cdf[<3dI! D3 >(?%@f4> % #;"a@k#k,Wy}fkb %$cU+;J>7676&'2#"'&67>2'&6&'.7>>&'&60 1t j*$& J%T B2df[<3dI! D3 >(?%@ ! t*  #6! / a@k#k,Wy}fkb %$c2+;J&'.7>'2#"'&67>2'&6&'.7>>&'&6(N *$& J%T BUdf[<3dI! D3 >(?%@U, #*i *  #6! / a@k#k,Wy}fkb %$cU+;J676'7#'&676326367>'&'&6766&'.7>>&'&6"4 h  @(& :8Ydf[<3dI! D3 >(?%@oD   h9% 0  < & a@k#k,Wy}fkb %$c2+;J>72'##"'&67636367>'&'&6766&'.7>>&'&6-   0z  9 4$ 2df[<3dI! D3 >(?%@$! jP") & 5a@k#k,Wy}fkb %$oeP./&7>6#"&'.>7654&'&7>676'.'&6 M  luI /S    !.%n$ (M%3 &=" #)Ba4Qy)('%?   K>*@2(X!0JIn7 +ov|\>7>267>'.'&6#"&'.>7654&'&7>676'.'&6D$. D %5:)uI /S    !.%n$ (M%3 &9  )  . /Ba4Qy)('%?   K>*@2(X!0JIn7 +oeX436367>'#"'&676#"&6#"&'.>7654&'&7>676'.'&6q>+cjOuI /S    !.%n$ (M%3 &% #;"4> 1Ba4Qy)('%?   K>*@2(X!0JIn7 +oeY2#"'&67>2'&6#"&'.>7654&'&7>676'.'&6*$& J%T BuI /S    !.%n$ (M%3 &p*  #6! / Ba4Qy)('%?   K>*@2(X!0JIn7 +oe *g7>76&'2#"'&67>2'&6#"&'.>7654&'&7>676'.'&6! 2"q j*$& J%T BuI /S    !.%n$ (M%3 &c(= "q*  #6! / Ba4Qy)('%?   K>*@2(X!0JIn7 +R- 7>7>3%#R  <&R # rM &&'.7>'>'&6%>'&6)(N A  A QA  A U, #*i ;       oe0m./&7>'2#"'&67>2'&6#"&'.>7654&'&7>676'.'&6 M  *$& J%T BuI /S    !.%n$ (M%3 &=" #)*  #6! / Ba4Qy)('%?   K>*@2(X!0JIn7 +oe-j>76'7'.>76326367>'&'&56766#"&'.>7654&'&7>676'.'&69 g!f$ ?)(b :uI /S    !.%n$ (M%3 &q2 g6  $ 0    Ba4Qy)('%?   K>*@2(X!0JIn7 +oe,i>76'#"'&67636367>'&'&6766#"&'.>7654&'&7>676'.'&6+ 1y  9 4$ 0quI /S    !.%n$ (M%3 &D#"iN") & 5Ba4Qy)('%?   K>*@2(X!0JIn7 +o7t6767'."/'&'462'&6#"&'.>7654&'&7>676'.'&6LA/ -P >"3@* .4  ' uI /S    !.%n$ (M%3 &m@ ," B51G  "' SBa4Qy)('%?   K>*@2(X!0JIn7 +o4q6767'."/'&67632#"'&6763676'46#"&'.>7654&'&7>676'.'&6LA/ -P >"3@* *  # Y $ <uI /S    !.%n$ (M%3 &m@ ," B51> "4 \Ba4Qy)('%?   K>*@2(X!0JIn7 +o*g&/&7>'4>76&%>2&'&66#"&'.>7654&'&7>676'.'&6L $$X(+uI /S    !.%n$ (M%3 &>)"  ?`,: '  &]Ba4Qy)('%?   K>*@2(X!0JIn7 +`f./&7>&'&767>:327675&5676?672267>76'.5476'& N  xFF.T$5 o8 &63    #  6A  .3 3cv2 >" #)]F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`{p>76&'.&'&767>:327675&5676?672267>76'.5476'&.  "& -&/8  3O&A&K.QFF.T$5 o8 &63    #  6A  .3 3cv2  - .,# %LF*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`o#"&7>36367>'#"'&676&'&767>:327675&5676?672267>76'.5476'&jO >+cFF.T$5 o8 &63    #  6A  .3 3cv2 f4> % #;"F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`o2#"'&67>2'&&'&767>:327675&5676?672267>76'.5476'&*$& J%T BXFF.T$5 o8 &63    #  6A  .3 3cv2 p*  #6! / F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`16?>76'2#"'&67>2'&&'&767>:327675&5676?672267>76'.5476'&  5"X q*$& J%T B#FF.T$5 o8 &63    #  6A  .3 3cv2  =% "X *  #6! / F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`0./&7>'2#"'&67>2'&&'&767>:327675&5676?672267>76'.5476'&cN  *$& J%T BFF.T$5 o8 &63    #  6A  .3 3cv2 >" #)*  #6! / F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`,676'7'.>76326367>'.'&76&'&767>:327675&5676?672267>76'.5476'&B#3 C% !f$ ? , c FF.T$5 o8 &63    #  6A  .3 3cv2 pC C%7  $ 1   F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`.>72#'#"'&67636367>'&'&676&'&767>:327675&5676?672267>76'.5476'&$+  1y  9 4$ 0sFF.T$5 o8 &63    #  6A  .3 3cv2  *iN") & 5F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`;>76>7'.'"/'&'462'&&'&767>:327675&5676?672267>76'.5476'&E5 8^6#>=(J. .4  ' `FF.T$5 o8 &63    #  6A  .3 3cv2 m.2 #G  "' (F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`8>76>7'.'"/'&67632#"'&6763676'4&'&767>:327675&5676?672267>76'.5476'&E5 8^6#>=(J. *  # Y $ FF.T$5 o8 &63    #  6A  .3 3cv2 m.2 #> "4 F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`-f./&7>&'&767>:327675&5676?672267>76'.5476'&27>76&7> N  xFF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 >" #)]F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-az>7676&&'&767>:327675&5676?672267>76'.5476'&27>76&7>0 1t ^FF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68  ! tYF*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-{p>76&'.&'&767>:327675&5676?672267>76'.5476'&27>76&7>.  "& -&/8  3O&A&K.QFF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68  - .,# %LF*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-o#"&7>36367>'#"'&676&'&767>:327675&5676?672267>76'.5476'&27>76&7>jO >+cFF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 f4> % #;"F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-o2#"'&67>2'&&'&767>:327675&5676?672267>76'.5476'&27>76&7>*$& J%T BXFF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 p*  #6! / F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-16?>76'2#"'&67>2'&&'&767>:327675&5676?672267>76'.5476'&27>76&7>  5"X q*$& J%T B#FF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68  =% "X *  #6! / F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1T 6&7> '* 2&, 10(*7((`-.>72#'#"'&67636367>'&'&676&'&767>:327675&5676?672267>76'.5476'&27>76&7>$+  1y  9 4$ 0sFF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68  *iN") & 5F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-;>76>7'.'"/'&'462'&&'&767>:327675&5676?672267>76'.5476'&27>76&7>E5 8^6#>=(J. .4  ' `FF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 m.2 #G  "' (F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1`-8>76>7'.'"/'&67632#"'&6763676'4&'&767>:327675&5676?672267>76'.5476'&27>76&7>E5 8^6#>=(J. *  # Y $ FF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 m.2 #> "4 F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1N,7CS#"&7>36367>'#"'&676;6&'&&'&76767>&7>&'&67jO >+cW 2#3! 4-NS+.m)WX=$qJ0v 4  >01Hf4> % #;"%%=  &B;b3 !FjJs-kk_,>< N,5CS2#"'&67>2'&;6&'&&'&76767>&7>&'&6{*$& J%T B 2#3! 4-NS+.m)WX=$qJ0v 4  >01Hp*  #6! / %%=  &B;b3 !FjJs-kk_,>< w*lY2#"'&67>2'&67632"'"'&?>76'4'&'.6?6'&&'4>*$& J%T B,/J5  @6%  : 5!#/  $Ql6p*  #6! / ,[*qr !  H;;< v3 N1 J w*lYr2#"'&67>2'&67632"'"'&?>76'4'&'.6?6'&&'4>27>76&7>*$& J%T B,/J5  @6%  : 5!#/  $Ql6$ #D68 p*  #6! / ,[*qr !  H;;< v3 N1 J A% '= D1c2,;2#"'&67>2'&6&'.7>>&'&6{*$& J%T Bdf[<3dI! D3 >(?%@p*  #6! / a@k#k,Wy}fkb %$ %D7>76&'>'&6%>'&67>7>'.5476?4763! 2!q @  B QA  A NV   %AK< c.8 $q=      e'  /^*L)H9=%4&+"3#/727>7>7632;/##73&/3#@ L J0^V V q   RX  2:63A _( q " /     ! /eW'`2FV%"&#""#73?7#72337326223>7>'&+"#"3267>76'.+TQX, * b  k , ,X]69$>,1 !,J $ )Q0$v-k 55>L 5^%+.51 / ,/  +Z"- $ v3)+w& !X" X5F' ??!#>&'.+3/73? a}+!5 GF\ L b z! ):"! / ;; 632##!"&>7>!       Q )R d 'IP??!#4>&'.#267>7>32;#>&'.#"32>?>;!'73? is+@!5 144r: .2%K5   u6FN> %n `B b z! )*' 8   8Z-- A50/ ;D287>3!2632>7>2;#!"'&7>7>7#"#G   g6IP>  %>  _>A#    C5! 7    (,Z '9?#!?#7?#3#/73?6?!"3#/73?7#މB a @5@k B b l G a  *6 l G b  k/// " /%H-" / ,':>'.676>&'.6763373#7#"+'Il{I?y`.&& Gk;$FN'#vk(u55.%  %=BC pV?xp6r&D;W_@M_/+J$"" "!J+?33737+"3/7>2;26767>7 #?7@5B Q  c q C  L| " *.J, /" &'V%27/.'3/73?7#7?#"5?+33/#>7662 Zm 9l G b  k B a  1 yb' 8;  # Hf4C 0  K ! / ,//9s%60 /  +5 "  !(172326767>323/##?3#3/4;m  -U 1773BW3)R ,aO0 &2) o" ! !=, (R32>7676;#3#/73?#"&#.'&5#3#/72767>7#  1H  b l Cy~ b    M  6$ 3 6`g ` kk E| (/ ! / 8 ,#g2 %T 6! / %e ':3>76'?"#"/&'3#/72767>7#  M_ lt4 L#z   #h 3 6`g ` kk/T //82D5|" / %e 9s2P?!#>74&#&+""#?3!22>?>32;#7!333!27267>76;!?39 q,5O8, 2% ,&75  K6(  &/  #% ޶& // / "g/''>'6$&'&'.6>.'.676U+&*B}0/:J  OG4j2 "$:u4g([I=XSV ;Hi? E0C\G%I'+?37!737#3#/73?!3#/73? '8O9??J2A bl G b l G b z! ! " / ;" / ;'[%>2632+3/73?7#72336>767>&'&+"ER=IW+"JtOtDl G b  k + -,O+.)'nk %"!(YM? ! / ,/ G  03LT"'&54676&74>76oJ ;4') "D+1 &'.67>!#6&'.+3:>7673#!"'&7%6 w% QGlV 'C5(5R=$/  -.\  '$  .?373#6'.+"3/73?&#Oa(%7$!  K %EJ)! y% ! / 8$c8+65&#?+"3'737'/#?373 @c ib+ 4  +l A m;j U 4984'/!    -//: " ]8EP?7#2#3/73?"'&'&676763>7>7676&'&|  P { &."%f&  O {  +Y  xR=J "/!59 " / ^ Q,/0@81! / _sL#L7?2SU-3 2K2"[%>;'#/7>;276?4'&'#?3737#6?6.#&#?37#"+";/ =m A8na  Ht b 4975BJY/9E  %8na F \Q  W ;' "    " ! /7D" !  \O /T>;27#73?#>7>7;23/73?"&'.>'.'& : .  dX I9I z t:] 4$ 3 NYC!    O z !c   L'rK// P cFGFN ;V*6! /a&#"^HE  XP%&'.'&7632676?6;+"'&6767>76'.'&+?33= A$Qv4[V: l!%x%+&R/ 9%9r+1-+ % h(^M(iQv!@-bx$- 6 +_)  3<.pK,T8") %*z/1M    !} B6&7>%6'&6?33737+"3/7>2;26767>70$.1%0 11&- 2,9 #?7@5B Q  c q C  L| |0'+4')3()!+R" *.J, /" &} P6&7>%6&7>+65&#?+"3'737'/#?373&/ 2$.2M&/ 2$.2 @c ib+ 4  +l A m;j U 4984|6&*3%+6&*3%+'/!    -//: " cqBS>?>7>&&'&'&67>2>7667676&5'>&'&6  : q  >7c \N2 </60+Q* "q\/ (*%U+  *   "C9 %  %X+/^d[ %6@ ;X6?>76&'&67676#"'&6'.32>&327676'&'&676I  5"X A# 3XW- S  )#%f=,Kee* =% "X $K!'%" ?/  3 #3= /, 6Rw*lK7>76&67632"'"'&?>76'4'&'.6?6'&&'4>! +#p ,/J5  @6%  : 5!#/  $Ql6c!-#py,[*qr !  H;;< v3 N1 J I ,7>76&7>7>'.5476?4763! 2!q 7V   %AK< c.8 $q2'  /^*Lo )f67676'4>76&%>2&'&66#"&'.>7654&'&7>676'.'&6~? 8&\#$$X(+uI /S    !.%n$ (M%3 &' &a'#: '  &]Ba4Qy)('%?   K>*@2(X!0JIn7 +cq/@%&'&'&67>2>7667676&5'>&'&6 >7c \N2 </60+K/ (*%U+  *   "C9 %  %X+/^d[ %6@ ,QE7'&>?67>'&>'.7>76'&'.7>  2 I/#prM-+"'Z6P W>%F&-2(Z  # ;G( &^W1WKHO9TU`m5,.)h6"6  %2J $ \ y8%676.7>'&767>7>'.&747>P ? ; D-!&;'A* v)  >;6Tht6E. $+b^@. /aS1 5  *.; B0'^Tb6.=&'.67632#"'&654'&&'.6762>&'&9 !^c!  -, )(K2fC-AA,LC0R(:2  YI!+%- !  8 VGv ,,Zus[aZ ;C7&'&67676#"'&6'.32>&327676'&'&676A# 3XW- S  )#%f=,Kee*$K!'%" ?/  3 #3= /, 6RRDS.67>76?6&;2'.76;2>76'&+".'&7676'` !  / K ,FKz $H!% :Y+  ",< " \$ !,X %(! )4 h-( 7&$    8  'IiSw*l<67632"'"'&?>76'4'&'.6?6'&&'4>,/J5  @6%  : 5!#/  $Ql6v,[*qr !  H;;< v3 N1 J N['.'&'&'&467>76'&#"&7>7676?67"&467>'654'.AX 7 :$PJ     N&; $ !  Cc_@ ( m #I G/%!UH),   !! 2=3S  d ,n1JzM  9PQ6)!LI*7>7>'.5476?4763V   %AK< '  /^*LU\>7676674676'&7+"&7>?>?6&&7>7676N)  B\ i8 "AA0<79# < <  /  -3"M   [5 +[ !+=+#x0:$  *O"" /  `"1)@767>=46.'&#"&'&7>32227>76'.=4'% "  .!    + &u  '%*dH   " C\n@L7#"767>7656;676?>76;67676&'&'&'   7L_ f)  *2 (f -  -  2K42:RO@$ f8d77 9#A  #IL)*%%  !G  w067654'.#&56?632>7>7676, +3M !N  /$/18Q qA & R[r[1G-  b5),@JDl'.;2#"5476;27>76'.+"'.67>7.'&67675.67>6#"&>32?)!==")L0,#$4,  "/   N? 2!  ! e  / $ ]/"H 1 :,,;H  @$ s522  YT& 'G )*  '";  c26&'.7>>&'&6xdf[<3dI! D3 >(?%@a@k#k,Wy}fkb %$NP%2>32'&767''&'&6767>7>7&&'&7>7632>76#"8$ (O,r ! 25    28  %'6P9  J 2M2*42X#Y&-I(1- If% 5  +*#   A#&N,5&67;6&'&&'&76767>&7>&'&6 2#3! 4-NS+.m)WX=$qJ0v 4  >01H2%%=  &B;b3 !FjJs-kk_,>< ea16'.#"6"'&4763676'&+&'&6762_;6  )d' (LI :k #i""7A%"#1' &F%v 7-4 (! 76?Xd,#"&7>7>65.'&326&$!TaZ1Ik;a. %%@4) 4 /XSFUPmT+XJ*4) 0*`ORuYH"'&"&5&76767>76/"&#"67>76&'.>76- % - *b1*( ,.  9 A  !!VN[,  Q + D   7$ =+@.oe<6#"&'.>7654&'&7>676'.'&6 uI /S    !.%n$ (M%3 &Ba4Qy)('%?   K>*@2(X!0JIn7 +h&'@N.67>3>'&'.>>4&'.7>767>76'&"[`+ VMB _[)9y0" "  D  #0 # [$*3I .3 bP:>18cLf2 O !!H##"& Jn#  Lc9c it'5D676'&'&'&&'4676?367>76&'&'# . *   !@4#u b( *  'B2( @7N  Y  -/95      'E >W<c+X%67>.'&632"'&5&?&'.>76'&&'&67>>?676`2  /  %L   ?&8- !F$)  3  %7!e6(6YeJr:* /m),2 < J 9  B&@(g%%5 :327675&5676?672267>76'.5476'&FF.T$5 o8 &63    #  6A  .3 3cv2 HF*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G*~ 64676&%4676&7>7>'.5476?4763*1& .0( -/(05"0%V   %AK< '4#8#5 $1!J'  /^*Lo~ T4676&%4676&6#"&'.>7654&'&7>676'.'&65"05"00'11&2+uI /S    !.%n$ (M%3 &#$1 $1 "4$47Ba4Qy)('%?   K>*@2(X!0JIn7 +c2$36?>766&'.7>>&'&6y  5"X df[<3dI! D3 >(?%@ =% "X )a@k#k,Wy}fkb %$oe J6?6766#"&'.>7654&'&7>676'.'&6 + 5"r uI /S    !.%n$ (M%3 &  "s Ba4Qy)('%?   K>*@2(X!0JIn7 +`a>7676&&'&767>:327675&5676?672267>76'.5476'&1 1!r ^FF.T$5 o8 &63    #  6A  .3 3cv2  " #rYF*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G`-0./&7>'2#"'&67>2'&&'&767>:327675&5676?672267>76'.5476'&27>76&7>cN  *$& J%T BFF.T$5 o8 &63    #  6A  .3 3cv2 '$ #D68 >" #)*  #6! / F*'CZC%('B=  *4=  N4) ;!'`  MCC(R$G[% '= D1 v( $R {  ^  P    0 cConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fcmbipgjlm_fcmbipgBoldBoldFontForge 2.0 : jlm_fcmbipg : 30-12-2009FontForge 2.0 : jlm_fcmbipg : 30-12-2009jlm_fcmbipgjlm_fcmbipgVersion 001.001 Version 001.001 jlm_fcmbipgjlm_fcmbipg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkern \~****8888n8888888888n88888~~~~~~~~~<v~\Pbp8~&pv*~P^2z & <~`s`_@cdeg_@    `` @@ ci ci !*+,G_@ij_cijkmqrst5 _@ij _@ijij__@ _@ij 5 ij D E _@c   ggs``    @@  ```` ss5 D E _c @ _@ !*+,G_@ij. !*+,5GHIJKUVW_cijvw 5 D E _ _@  !*+,G_@ij` !*+,GH_cijvw !*+,GH _@cv w  !*+,5G_cij D E _@c  !*+,GH_@cvw !*+,5GH_@cvwIJKUVW_@ij4 !*+,5DEGHIJKUVW_@cijvw_@ij  >@@-BP.S`=bnKpXnxz{}~>aHaS*libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmripg.xml0000644000175000017500000024101412275735442031500 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsbpg.ttf0000644000175000017500000013720012275735442031313 0ustar sylvestresylvestrepFFTMS(dGDEF)8GPOS6NxGSUBgeX OS/2X6$xVcmaps gasp0glyf8<head6hheaT4$hmtx[:locayŖmaxpwX nameDS#cD)postٶylpAx _< aS+aS+lOOZlt@.1PfEd  8ZOM====W(c[&$J[1=&) oz N&1 11 1oo1&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.-------=&.&&&&&&&&&&<&&&&&&&&&&&&4/&<&D.D.D.D.D.D.&)&)&)&)&)=1&)&)&)&)&)&)&&&&&&&&&&&&&&&&1_&&&--&&D.]D[.[=[W=4[aea.=[[1^=(W=<W=14W=&.-&0&)&.&-c--.&r=D(&J---D.5--r.&)-c-,&&)D.&)&&,, p\@ uz'7EWgprtvxz|  tz 0@P`prtvxz| Pt%ZZV`dr|Qa ^`Rn _"#'%&$)(67;9:8LPNOMTS=<A?@>CBdhfgeklrpqmtsxy}{|z~-.201/43X\Z[Yb]+G*!, VIUKW EjHw } ttQuuazz ^`Rn _"'%$)(6;98  L!!""P#$N%%M&&T''S00=11<22A34?55>66C77B@@dAABBhCDfEEePQkRRrSTpUUmVVtWWs`axbb}cd{eezffgg~pp rr5ttJvvDxxczzi||v-20/43X\ZYb]+G*!,  VIUKW FEujoHw  DG*L2tj2Z*b<8B V p  z | 0`6L `B@(t2  !"!"R"#$$l$$% %%&N&'"''(T()@)*4*L*++,,--../8/0j1 12F23445B56767N789Z9:::;D;;<2>F>t>>>? ?T??@4@b@A(ABBBBCCCDBDE"E~EFFvFG:GrGH4HHIINIIJ?>7654&/.=ffy df v6N2 V)wPf v,V +V$RH Nr@ % };  ">} %> }2=V*!#!#%+*&7'.'##3376?3##=ff)+YF  8fIRH[g sJ55$RL(?#%#"".'&'&>76;327655&#"?(-%07"5tKR83 Y3U f4 .JKf pX"p$[4 !%!!#[.}h_$)75454&'&'&'.7>"32>'&  M=8  P? ?*@ $:*@ %  ;B@JJ9rf X@W-:?X-:#/#?/#6?>?674/.7z%o 9LNT{U%D  S h o 5  Jg73#Jaa  7?3#/&'!73 3&'&5  / u $3X|)b :   ^0 P|i*  *[  3!3#!#3&'&5[}i}}}b : R5Di*  *1 .87.'&76732737!4>'.'&!533&'&5?4,9F$D @M]B.6)$K66?8 A#B]b : k%[C`0gCU X:1ei)l:c8"46!Jc m5li*  *='4767653.6#&7636#&76=.!U<=F.!U<=    ]00/11/#!+A47667653.6&7636'.763676'".'&5J1;;/& F1;;/&      m_ ( 0%*]008//7n  %=- %) *^47>673'".6'.7676#&766&'.'&6&'.'&6767>7>&'.'&64.A)%-"F*8o  d0+!mM3= # S4/ #  !]0 1"& /801[>W3:v;+ UQ $":M:ZF 69 *&,@U% )?3F Vh   3#/ V F(  &n'.#466765nCC, NCC, $;  $;   o 3'&5 b : Cd*  *N>'4''&676#54632l  @ " =- &M#&2"'&676&' = " @ -#M&  -2"'&676&'?3m = " @ F Vf -#M& 4 *2"'&676&'73#/` = " @ (W E) -#M&  ->'4''&676#546?3'  @ " =dF Vf - &M#3 *>'4''&676#54673#/  @ " =lW E) - &M#n!4767653."'&676.!U<=F.!U<=( ]00d, n#4767653."'&676#5?.!U<=F.!U<=s   (]00D #,!?3#7#'.7>76#'&6g; Vg )$ 5     )('.c/C3#/.'&767>?3673'.'>&'.V E( _#N?( G:BP!"' V-   ac66E $0  7 J!&  ;{/ ?} 9K   .c=Q'.#46765.'&767>?3673'.'>&'.CC7  NCC7  #N?( G:BP!"' V-   ac66E $0  7$;  $;  !&  ;{/ ?} 9K   .c>R>'4''&676#546.'&767>?3673'.'>&'.  @ " =p#N?( G:BP!"' V-   ac66E $0  7- &M#'!&  ;{/ ?} 9K   .c>R2"'&676&'.'&767>?3673'.'>&'.# = " @ U#N?( G:BP!"' V-   ac66E $0  7-#M& &!&  ;{/ ?} 9K   .cFZ2"'&676&'?3.'&767>?3673'.'>&'. = " @ F Vg F#N?( G:BP!"' V-   ac66E $0  7-#M& 4 Z!&  ;{/ ?} 9K   .cFZ2"'&676&'73#/.'&767>?3673'.'>&'. = " @ (V E( #N?( G:BP!"' V-   ac66E $0  7-#M&  J!&  ;{/ ?} 9K   .cFZ>'4''&676#546?3.'&767>?3673'.'>&'.  @ " =cF Vg F#N?( G:BP!"' V-   ac66E $0  7- &M#3 Z!&  ;{/ ?} 9K   .cFZ>'4''&676#54673#/.'&767>?3673'.'>&'.  @ " =lV E( #N?( G:BP!"' V-   ac66E $0  7- &M# J!&  ;{/ ?} 9K   .c!I]47>653&'&"'&676.'&767>?3673'.'>&'.^-@/"0"F-@/"0"( F#N?( G:BP!"' V-   ac66E $0  7]1 1 d, G!&  ;{/ ?} 9K   .c#K_47>653&'&"'&676#5?.'&767>?3673'.'>&'.^-@/"0"F-@/"0"s   (V#N?( G:BP!"' V-   ac66E $0  7]1 1 D #, . c/CM?3.'&767>?3673'.'>&'.3&'&5E Vh l#N?( G:BP!"' V-   ac66E $0  7b :  Z!&  ;{/ ?} 9K   i*  *. c/CM3#/.'&767>?3673'.'>&'.3&'&5V E( _#N?( G:BP!"' V-   ac66E $0  7b :  J!&  ;{/ ?} 9K   i*  *. c=Q['.#46765.'&767>?3673'.'>&'.3&'&5CC7  NCC7  #N?( G:BP!"' V-   ac66E $0  7b : $;  $;  !&  ;{/ ?} 9K   i*  *. c>R\>'4''&676#546.'&767>?3673'.'>&'.3&'&5  @ " =p#N?( G:BP!"' V-   ac66E $0  7b : - &M#'!&  ;{/ ?} 9K   i*  *. c>R\2"'&676&'.'&767>?3673'.'>&'.3&'&5# = " @ U#N?( G:BP!"' V-   ac66E $0  7b : -#M& &!&  ;{/ ?} 9K   i*  *. cFZd2"'&676&'?3.'&767>?3673'.'>&'.3&'&5 = " @ F Vg F#N?( G:BP!"' V-   ac66E $0  7b : -#M& 4 Z!&  ;{/ ?} 9K   i*  *. cFZd2"'&676&'73#/.'&767>?3673'.'>&'.3&'&5 = " @ (V E( #N?( G:BP!"' V-   ac66E $0  7b : -#M&  J!&  ;{/ ?} 9K   i*  *. cFZd>'4''&676#546?3.'&767>?3673'.'>&'.3&'&5  @ " =cF Vg F#N?( G:BP!"' V-   ac66E $0  7b : - &M#3 Z!&  ;{/ ?} 9K   i*  *. cFZd>'4''&676#54673#/.'&767>?3673'.'>&'.3&'&5  @ " =lV E( #N?( G:BP!"' V-   ac66E $0  7b : - &M# J!&  ;{/ ?} 9K   i*  *. c!I]g47>653&'&"'&676.'&767>?3673'.'>&'.3&'&5^-@/"0"F-@/"0"( F#N?( G:BP!"' V-   ac66E $0  7b : ]1 1 d, G!&  ;{/ ?} 9K   i*  *. c#K_i47>653&'&"'&676#5?.'&767>?3673'.'>&'.3&'&5^-@/"0"F-@/"0"s   (V#N?( G:BP!"' V-   ac66E $0  7b : ]1 1 D #, i*  *- T3#/&'&67676'&'.76762#.326?632'"'&#&76|W 4 )  B&Z#B01% 4f<8  8!  %{d #K3/%z( W< & &,   ZR-a>'4''&676#546&'&67676'&'.76762#.326?632'"'&#&76  @ " = B&Z#B01% 4f<8  8!  %{d- &M#kK3/%z( W< & &,   ZR-a2"'&676&'&'&67676'&'.76762#.326?632'"'&#&76 = " @  B&Z#B01% 4f<8  8!  %{d-#M& jK3/%z( W< & &,   ZR-i2"'&676&'?3&'&67676'&'.76762#.326?632'"'&#&76 = " @ F Vf  B&Z#B01% 4f<8  8!  %{d-#M& 4 K3/%z( W< & &,   ZR-i2"'&676&'73#/&'&67676'&'.76762#.326?632'"'&#&76 = " @ (W E) q B&Z#B01% 4f<8  8!  %{d-#M& K3/%z( W< & &,   ZR-i>'4''&676#546?3&'&67676'&'.76762#.326?632'"'&#&76{  @ " =dF Vf  B&Z#B01% 4f<8  8!  %{d- &M#3 K3/%z( W< & &,   ZR-i>'4''&676#54673#/&'&67676'&'.76762#.326?632'"'&#&76o  @ " =lW E) q B&Z#B01% 4f<8  8!  %{d- &M#K3/%z( W< & &,   ZR,2"'&676&'3676'".'&5{ = " @ 3_ ( 0%*-#M& X  %=- %=,>'4''&676#5463676'".'&5_  @ " =_ ( 0%*- &M#W  %=- %42"'&676&'?33676'".'&5B = " @ F Vg A_ ( 0%*-#M& 4 $  %=- %42"'&676&'73#/3676'".'&55 = " @ (V E( }_ ( 0%*-#M&  4  %=- % 6>'4''&676#54632?33676'".'&5  @ " =ZF Vg A_ ( 0%*- &M#3 $  %=- % 6>'4''&676#5463273#/3676'".'&5  @ " =cV E( }_ ( 0%*- &M# 4  %=- %##947667653."'&6763676'".'&5J1;;/& F1;;/& ( A_ ( 0%*]00d, 7  %=- %#%;47667653."'&676#5?3676'".'&5J1;;/& F1;;/& r   (1_ ( 0%*]00D #,B  %=- %3#/3676'".'&5V F( (_ ( 0%*4  %=- %#/467667653&'.3676'".'&5J&+G N&+G 9_ ( 0%*&-    ,    P  %=- %23476'#/6#'&63676'".'&5V ; 2 ( \H_ ( 0%*  6&'j  %=- %. c';E%.'&767>?3673'.'>&'.3&'&5m#N?( G:BP!"' V-   ac66E $0  7b : T!&  ;{/ ?} 9K   i*  *& IS7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&58(X7.!    !9;@(7 .s @!; E9+ Lyb : N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *:D454'&'&?>7>'4&5&''&5463676'&'3'&5Y=8 # /   #3:39*"a>5 .b : D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *B3#/454'&'&?>7>'4&5&''&5463676'&W E) >=8 # /   #3:39*"a>5 .D+Qi 1&  !D2 9 J#< 70 :Oe  Q46?653&'&454'&'&?>7>'4&5&''&5463676'&mBD6NB-F# =8 # /   #3:39*"a>5 .&%:  <  D+Qi 1&  !D2 9 J#< 70 :Oe  S>'4''&676#54632454'&'&?>7>'4&5&''&5463676'&  @ " =D=8 # /   #3:39*"a>5 .- &M#D+Qi 1&  !D2 9 J#< 70 :Oe  Y2"'&676&'?3454'&'&?>7>'4&5&''&5463676'& = " @ F Vg $=8 # /   #3:39*"a>5 .-#M& 40D+Qi 1&  !D2 9 J#< 70 :Oe  Y2"'&676&'73#/454'&'&?>7>'4&5&''&5463676'& = " @ (W E) =8 # /   #3:39*"a>5 .-#M& D+Qi 1&  !D2 9 J#< 70 :Oe  Y>'4''&676#546?3454'&'&?>7>'4&5&''&5463676'&  @ " =cF Vg $=8 # /   #3:39*"a>5 .- &M#30D+Qi 1&  !D2 9 J#< 70 :Oe  Y>'4''&676#54673#/454'&'&?>7>'4&5&''&5463676'&  @ " =lW E) =8 # /   #3:39*"a>5 .- &M#D+Qi 1&  !D2 9 J#< 70 :Oe  ?3E Wg <-7'&54>7>732+"32&#< F3! -     &,    07!\4767653."'&676454'&'&?>7>'4&5&''&5463676'&m.!U;=F3!T9;( $=8 # /   #3:39*"a>5 .].2d, D+Qi 1&  !D2 9 J#< 70 :Oe  #^4767653."'&676#5?454'&'&?>7>'4&5&''&5463676'&m.!U;=F3!T9;r   (4=8 # /   #3:39*"a>5 .].2D #,D+Qi 1&  !D2 9 J#< 70 :Oe  BL?3454'&'&?>7>'4&5&''&5463676'&'3'&5F Vg I=8 # /   #3:39*"a>5 .b :  0D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *BL3#/454'&'&?>7>'4&5&''&5463676'&'3'&5W E) >=8 # /   #3:39*"a>5 .b : D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *Q[46?653&'&454'&'&?>7>'4&5&''&5463676'&'3'&5mBD6NB-F# =8 # /   #3:39*"a>5 .b : &%:  <  D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *S]>'4''&676#54632454'&'&?>7>'4&5&''&5463676'&'3'&5  @ " =D=8 # /   #3:39*"a>5 .b : - &M#D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *Yc2"'&676&'?3454'&'&?>7>'4&5&''&5463676'&'3'&5 = " @ F Vg $=8 # /   #3:39*"a>5 .b : -#M& 40D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *Yc2"'&676&'73#/454'&'&?>7>'4&5&''&5463676'&'3'&5 = " @ (W E) =8 # /   #3:39*"a>5 .b : -#M& D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *Yc>'4''&676#546?3454'&'&?>7>'4&5&''&5463676'&'3'&5  @ " =cF Vg $=8 # /   #3:39*"a>5 .b : - &M#30D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *Yc>'4''&676#54673#/454'&'&?>7>'4&5&''&5463676'&'3'&5  @ " =lW E) =8 # /   #3:39*"a>5 .b : - &M#D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *!\f4767653."'&676454'&'&?>7>'4&5&''&5463676'&'3'&5m.!U;=F3!T9;( $=8 # /   #3:39*"a>5 .b : ].2d, D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *4"17.'&547>76#"'&567>.'&24wF79,/  ;-14>%E; 3+9e4Y0(=I ,H-+G0 7# <<} /-1A:)/4+4>7>7&'4#4/#46767.'&U'JKl#!:}+!a27/a?O#I  ;| /A% @YI>օfnxz!1 4J+Y' <$%&'.67>2363"'.7>3'#m1)%`X0B ?>CEB 8e+ b+FMa B  X!D?3g )E #^h4767653."'&676#5?454'&'&?>7>'4&5&''&5463676'&'3'&5m.!U;=F3!T9;r   (4=8 # /   #3:39*"a>5 .b : ].2D #,D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *.)3#/>&'&'&>&'&'&6V E( %(; 2|'; ~ -2R#  2CZ k# 0E}%6kSg%(Oe?.%8>'4''&676#546>&'&'&>&'&'&6  @ " =%(; 2|'; ~ -2R#  2CZ- &M## 0E}%6kSg%(Oe?.-@2"'&676&'?3>&'&'&>&'&'&6 = " @ F Vg %(; 2|'; ~ -2R#  2CZ-#M& 4 [# 0E}%6kSg%(Oe?..A2"'&676&'73#/>&'&'&>&'&'&6 = " @ (V @( %(; 2|'; ~ -2R#  2CZ-#M&  k# 0E}%6kSg%(Oe?.-@>'4''&676#546?3>&'&'&>&'&'&6  @ " =cF Vg %(; 2|'; ~ -2R#  2CZ- &M#3 [# 0E}%6kSg%(Oe?..A>'4''&676#54673#/>&'&'&>&'&'&6  @ " =lV @( %(; 2|'; ~ -2R#  2CZ- &M# k# 0E}%6kSg%(Oe?);3#/6&'.'&6&'.'&6767>7>&'.'&6|V F( 0+!mM3= # S4/ #  ! >W3:v;+ UQ $":M:ZF 69 *&,@U% ))M467673&'.6&'.'&6&'.'&6767>7>&'.'&64CC5 NT: 0+!mM3= # S4/ #  !&$;      ;>W3:v;+ UQ $":M:ZF 69 *&,@U% ))J>'4''&676#5466&'.'&6&'.'&6767>7>&'.'&6  @ " =0+!mM3= # S4/ #  !- &M#B>W3:v;+ UQ $":M:ZF 69 *&,@U% ))J2"'&676&'6&'.'&6&'.'&6767>7>&'.'&6 = " @ 0+!mM3= # S4/ #  !-#M& C>W3:v;+ UQ $":M:ZF 69 *&,@U% ))R2"'&676&'?36&'.'&6&'.'&6767>7>&'.'&6 = " @ E Wh 0+!mM3= # S4/ #  !-#M& 4>W3:v;+ UQ $":M:ZF 69 *&,@U% )=nA 37#465=YY(A77;672  3476&'##/6#'&6(W ; 5 $) [    4'()R2"'&676&'73#/6&'.'&6&'.'&6767>7>&'.'&6 = " @ (V F) S0+!mM3= # S4/ #  !-#M&   >W3:v;+ UQ $":M:ZF 69 *&,@U% ))R>'4''&676#546?36&'.'&6&'.'&6767>7>&'.'&6{  @ " =cE Wh 0+!mM3= # S4/ #  !- &M#3>W3:v;+ UQ $":M:ZF 69 *&,@U% ))R>'4''&676#54673#/6&'.'&6&'.'&6767>7>&'.'&6o  @ " =lV F) S0+!mM3= # S4/ #  !- &M#  >W3:v;+ UQ $":M:ZF 69 *&,@U% ))$X47>673'"."'&6766&'.'&6&'.'&6767>7>&'.'&64.A)%-"F*8o( 0+!mM3= # S4/ #  !]0 1"& d, ">W3:v;+ UQ $":M:ZF 69 *&,@U% ))&Z47>673'"."'&676#5?6&'.'&6&'.'&6767>7>&'.'&64.A)%-"F*8os   (0+!mM3= # S4/ #  !]0 1"& D #,->W3:v;+ UQ $":M:ZF 69 *&,@U% ))R3476&'##/6'&66&'.'&6&'.'&6767>7>&'.'&6|V ; 5 " ( \0+!mM3= # S4/ #  !     7&&U>W3:v;+ UQ $":M:ZF 69 *&,@U% )& S3#/7>54&5'&'&67627>'&'&'57&'#'&'&'&76W 4 ) 8(X7.!    !9;@(7 .s @!; E9+ Ly #+N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&[467673'.7>54&5'&'&67627>'&'&'57&'#'&'&'&76zvVNvV8(X7.!    !9;@(7 .s @!; E9+ Ly&6161EN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&b>'4''&676#546327>54&5'&'&67627>'&'&'57&'#'&'&'&76`  @ " =8(X7.!    !9;@(7 .s @!; E9+ Ly- &M#LN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&`2"'&676&'7>54&5'&'&67627>'&'&'57&'#'&'&'&76| = " @ 8(X7.!    !9;@(7 .s @!; E9+ Ly-#M& MN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&h2"'&676&'?37>54&5'&'&67627>'&'&'57&'#'&'&'&76C = " @ F Vf 8(X7.!    !9;@(7 .s @!; E9+ Ly-#M& 4 N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&h2"'&676&'73#/7>54&5'&'&67627>'&'&'57&'#'&'&'&766 = " @ (W E) 8(X7.!    !9;@(7 .s @!; E9+ Ly-#M& *N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&h>'4''&676#546?37>54&5'&'&67627>'&'&'57&'#'&'&'&76  @ " =dF Vf 8(X7.!    !9;@(7 .s @!; E9+ Ly- &M#3 N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&h>'4''&676#54673#/7>54&5'&'&67627>'&'&'57&'#'&'&'&76  @ " =lW E) 8(X7.!    !9;@(7 .s @!; E9+ Ly- &M#*N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&g4767673&"'&6767>54&5'&'&67627>'&'&'57&'#'&'&'&76zP>+FP>+( 8(X7.!    !9;@(7 .s @!; E9+ Ly]<- <- d, ,N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&i4767673&"'&676#5?7>54&5'&'&67627>'&'&'57&'#'&'&'&76zP>+FP>+   (8(X7.!    !9;@(7 .s @!; E9+ Ly]<- <- D #,7N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y&  S]3#/7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5W 4 ) 8(X7.!    !9;@(7 .s @!; E9+ Lyb :  #+N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& R\?37>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&517 Wg 8(X7.!    !9;@(7 .s @!; E9+ Lyb : #N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& [e467673'.7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5zvVNvV8(X7.!    !9;@(7 .s @!; E9+ Lyb : &6161EN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& bl>'4''&676#546327>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5`  @ " =8(X7.!    !9;@(7 .s @!; E9+ Lyb : - &M#LN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& `j2"'&676&'7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5| = " @ 8(X7.!    !9;@(7 .s @!; E9+ Lyb : -#M& MN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& hr2"'&676&'?37>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5C = " @ F Vf 8(X7.!    !9;@(7 .s @!; E9+ Lyb : -#M& 4 N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *_Y 6'.j)'::& hr>'4''&676#54673#/7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5  @ " =lW E) 8(X7.!    !9;@(7 .s @!; E9+ Lyb : - &M#*N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& gq4767673&"'&6767>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5zP>+FP>+( 8(X7.!    !9;@(7 .s @!; E9+ Lyb : ]<- <- d, ,N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *& is4767673&"'&676#5?7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&5zP>+FP>+   (8(X7.!    !9;@(7 .s @!; E9+ Lyb : ]<- <- D #,7N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  *-2F>'4''&676#546'.5<>7>76&'.67>  @ " =m, <"  #|t"P \ WI$1L4+7- &M# +''#$+C  S" H)3 3-2F2"'&676&''.5<>7>76&'.67> = " @ , <"  #|t"P \ WI$1L4+7-#M&  +''#$+C  S" H)3 3Q2"'&676&'454'&'&?>7>'4&5&''&5463676'&2 = " @ 2=8 # /   #3:39*"a>5 .-#M& D+Qi 1&  !D2 9 J#< 70 :Oe  Q[2"'&676&'454'&'&?>7>'4&5&''&5463676'&'3'&52 = " @ 2=8 # /   #3:39*"a>5 .b : -#M& D+Qi 1&  !D2 9 J#< 70 :Oe  d*  *.%82"'&676&'>&'&'&>&'&'&6/ = " @ %(; 2|'; ~ -2R#  2CZ-#M& # 0E}%6kSg%(Oe?3?3#7'.7>76#'&63676'".'&5<: Vh ( 2 q_ ( 0%*  ('&j  %=- %7?3#/&'!73  / u $3X|  ^0 P]!-322#!267>'.+32>76&'&+]c&"$/3b*:U94wS!$]Fop?4N'2k0+p) %"8&R#'][!%#[}h.e 7?3%!#.@ Fw Tp[S !%!!?![M(h_n=h !%!5?L  v*i-[ 3!3#!#[}i}}}R5=)6'.'&!!67654'.d>  [(zPyE- r9O( H=?/@D*s[ .Be+@-?ZO/xpc 7'&767676'.M ,5>=9-PH "=nIce y (287 I2B'0M." YQ6`gL8_a@wc4DA?N2 9'yT[!#!#[c}}UL[!2+#4.+326[16P/) $xV}53)WSpl&4"*64^'.76'&'6D3 !.F 4 $0N4'=!%%!75/= aCh k4A (!%#(}hC=#467667676#4&#4&'&=fC/  L -BguF&1}1B &AW "&q VB%%7  <!/32##5"&'.76763>76'.#Nw1)3/:~"w'r)5%$#JH.#MwI1# i&0:>Iii)?< HHf2& 1j1 /3232?>;#"./&'#+677'      ,   " < =63>5476;"##5.'&56.'5:mw' $ &a(0.` w9f4 a   - &3Y> ;3RpGE jj1*Hw ..*; &dPo" 1-7.'&7632737!4>'.'&!53?4,8LD @M]B.6)$K66?8 A#B]k%[C`0eD^ X:1ei)l:c8"46!Jc m5l>O 6'&676'&63#    r}}G>>>>R=O 76'&6%6'&6467667676#4&#4&'&    RfC/  L -BguF&1}1B G>>>>AW "&q VB%%7  .c/C?3.'&767>?3673'.'>&'.E Vh l#N?( G:BP!"' V-   ac66E $0  7 Z!&  ;{/ ?} 9K   -S?3&'&67676'&'.76762#.326?632'"'&#&767 Wg  B&Z#B01% 4f<8  8!  %{d#K3/%z( W< & &,   ZRB?3454'&'&?>7>'4&5&''&5463676'&F Vg I=8 # /   #3:39*"a>5 . 0D+Qi 1&  !D2 9 J#< 70 :Oe  0?33676'".'&50E Vh _ ( 0%* $  %=- %)M?3#7'.7>76'&66&'&'&6&'.'&6767>7>4'.'&6: Vg ) / u  j(@} ' #  Y2%, ! !  !  ' F0J<; -3S $"6P#Z99 2)"3;% ).c';%.'&767>?3673'.'>&'.m#N?( G:BP!"' V-   ac66E $0  7T!&  ;{/ ?} 9K   -C''.454767667>&'.'"#'&7>727676&#"8:*5da=9!0ykZ  ?^G 3 /4 V" /9- i4Mde++) FX  'D"T 4346>76'.747465/&'&u;2'8 (B6 R (UGJX0-2 1i?aFH &Jyd(i -7D.'.'&676/&'&'.767676'&#"326 &#+A'k.  $:?&$>>w%@>r V5I18#< +a=*e "# #>&@? 5gI*3VT7[k(-J%&'&67676'&'.76762#.326?632'"'&#&76 B&Z#B01% 4f<8  8!  %{dK3/%z( W< & &,   ZR.FG&'&'.67637>2'&5472>7>'.'&'&76 1    )  *_y -+ !f-"04C % Da'E%D#)%$% " N  'EXFb :-i  ) -X|A:454'&'&?>7>'4&5&''&5463676'&Y=8 # /   #3:39*"a>5 .D+Qi 1&  !D2 9 J#< 70 :Oe  D@J2'&'&'&546&'&#47>6765.'&'.67>3'4'.7 +BQ$ a.D>/$07 Y6!#/>IE y#( ) (#'N)$ W\.:%) ((JB8r  %WR  ?7O[6 !EL=3676'".'&5=_ ( 0%*  %=- %(?%".'&'&>'&/&7>67>.323k"  M  7  C:<,  &.&Gjlu.  1Q +-  ",iL;A!  P&+$3 6   h'D8) 37>?65&/&#"&'.7632'./3B! )A *,L3 AA/.- (8  hJU  j /-G5ǫ $ E \C$#l|9-KM%>54&67667653'&'&''.'&54&=4654767>G  , a n- -a'  ,&#*  = ?   kA1  $ 22{5 E OG "C$r--"4'.546674.7> (&)<> (3HG, ף  &)X?=>= 7' m-Jt;$-FW.467&'.763?6636&'&5462767>'.&'.7>  E 4% 3d"@>a   $ ?2 L&2 '$1:   ;@W$*G*#3 ( %B0  3W1N".56  " "*r9/O.!>&'&'&>&'&'&6p%(; 2|'; ~ -2R#  2CZ# 0E}%6kSg%(Oe?P2#"&76763!#673'&'&=#"'.>76! ,0ib a?R(;a5 r&- Y& 1G #l'Pg8^o/( ! H-/7'.5<>7>76&'.67>~, <"  #|t"P \ WI$1L4+7 +''#$+C  S" H)3 3-*6'.7>7>'&#".7>5Z 2 0/JJ p 7  X9^. r . c4] I! ,   :\q6-S.R &'&767>3!'>'.6IHA8AJL4. # um&V^p@is40 8Bu3a!f*2$&,# "'&6?63!#673'.7p $0>a~9"( r# 6 Y4; JJ!N_s9)36&'.'&6&'.'&6767>7>&'.'&60+!mM3= # S4/ #  !>W3:v;+ UQ $":M:ZF 69 *&,@U% )-T1?&'.767646767>#&'&567676'&W?$':"  +9; (RR * )a` ##L 1[]/R@&0(",bZ .B35Ro)e" >N%#.&g-5;67654&'&'".'&7>?32.'.'.8$ 0;~ b8$ 0;~ @  H!+'A=   H!+'A=,S=%47676>76'.'&676#'.4="&'.76$%N#B #= (3 [">+# 6  02N$ $ QPi2, )^{/   ">`,+A)/o'% &I7>54&5'&'&67627>'&'&'57&'#'&'&'&768(X7.!    !9;@(7 .s @!; E9+ LyN%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y /6"'.76>&3676'".'&5 (  )__ ( 0%*1 :$9/c  %=- %) L>3&76'&'&66&'.'&6&'.'&6767>7>&'.'&6F ( * i0+!mM3= # S4/ #  !W;/= 9 =|>W3:v;+ UQ $":M:ZF 69 *&,@U% ).)?3>&'&'&>&'&'&6F Vh %(; 2|'; ~ -2R#  2CZ[# 0E}%6kSg%(Oe?);?36&'.'&6&'.'&6767>7>&'.'&6E Wg 0+!mM3= # S4/ #  !>W3:v;+ UQ $":M:ZF 69 *&,@U% )&R?37>54&5'&'&67627>'&'&'57&'#'&'&'&7617 Wg 8(X7.!    !9;@(7 .s @!; E9+ Ly#N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a y& hr2"'&676&'73#/7>54&5'&'&67627>'&'&'57&'#'&'&'&763&'&56 = " @ (W E) 8(X7.!    !9;@(7 .s @!; E9+ Lyb : -#M& *N%a_3P 4  (/  /(  4  w9JG%N, DJ1-0 a yi*  * t' I p  ^  N   ' ZConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fcsbpgjlm_fcsbpgBoldBoldFontForge 2.0 : jlm_fcsbpg : 30-12-2009FontForge 2.0 : jlm_fcsbpg : 30-12-2009jlm_fcsbpgjlm_fcsbpgVersion 001.001 Version 001.001 jlm_fcsbpgjlm_fcsbpg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkernN1l     l 2@JP@^lv@@  gzg    gg II  mmzgg   II  gggg zz, !"#$&()*+,-./134cdegvwxyz|~1 <=>@BCDEFcdeg>aHaS+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmrpg.xml0000644000175000017500000006052712275735442031337 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/symbols_greek.xml0000644000175000017500000001760112275735442032057 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fctrpg.ttf0000644000175000017500000015267412275735442031350 0ustar sylvestresylvestrepFFTMS(ՠGDEF)GPOSԏ׊D\GSUBge$ OS/2V!LxVcmapsx gaspglyfb`head6hheal)4$hmtxloca< maxpX nameiHP2postٶym<Aѐ_< aS,aS,Z @ 1 PfEd@  8Z   """"3"W+V{~WW++++++++++++++++++++++++++++=L@UzQ+ 98,.))))))+++++9++++++ ++)P!.8N 8'%'%N%+++++.+-.,(+,)+*& +$&, +)+ ,, p\@ uz'7EWgprtvxz|  tz 0@P`prtvxz| Pt%ZZV`dr|Qa ^`Rn _"#'%&$)(67;9:8LPNOMTS=<A?@>CBdhfgeklrpqmtsxy}{|z~-.201/43X\Z[Yb]+G*!, VIUKW EjHw } ttQuuazz ^`Rn _"'%$)(6;98  L!!""P#$N%%M&&T''S00=11<22A34?55>66C77B@@dAABBhCDfEEePQkRRrSTpUUmVVtWWs`axbb}cd{eezffgg~pp rr5ttJvvDxxczzi||v-20/43X\ZYb]+G*!,  VIUKW FEujoHw  DGd~h.@.PvZ 2 p | |  P :lPz40(T(nX|` X !L!"L"#h#$$T$%& &'L'()0)*+H+, ,^,~-8--.F./$//0l01:122D23H34Z45l56778>89:,:;<(<=~>$>??@fA2ABbBC3&/&'4'#[q # E  \  H&"#1 k_N Bi%S""\"'&54763!2'&5&#"'&7>754&'&676;2354&76;2+"&6=[q    "v"   $ H&"  %% x("j"'&54763!2'&5#*.54?4654/&5465>3:36?676326"#"&/&[q  )  __  00  __  )H&"~h& q" "q&h"b"'&54763!2'&52&#"'&6=#'./&'##"&5&65547>67>[q J  #      07H&"  Z  265 K  p> ( 3/?2#"'&=#32++&&'.547676;226;'#";7T (7D G5. ,G<(( G 2%"rvx<} Fpe[@%".7#32+"'.76;#"'&6763!2#"'&=#347632U2%%^#    (' ) 83%  H"*7754.'&'.7>32+"'.7637>. I53  T,5EvG64*wG+7>  %;PO!C,a4&3'(w12ad2I@H7>76&/.5<>7632+"'.763'#2+"&"+"'.76;?/7.<9   E# O   f  ` -$F > N# .   oW" ## $ ' HyE7"'&676;2#2+"'.763   6   6   K + (  H8@U7>7>3:32+"'&4763/#2+"'.76373/#4632'.45Vom  P$ $ $ $P *+    >$  #  & $R  e$ & Q77f  HK`#"'&676;2+35#"'&476;2+32+"'&476;5#32+"'.76;4632'.45V#nn##nn#    C &&&&  &&&&   HMb%"&7>'.'&+&&'&=4763.'.67>347>#4632'.45] >, D/e6"d B   DYf,H$B      ;60I [$_C1*R{   &'01 2">Z&$I#LYD80N   h  W&26726?6'.'.766&76"'.76$n ]=-  /    0  ! %  & &1)$* 2 v(4R>72>76'.'.6&7636#'.764632>76&'&5!(C'2 b9+ e   [   %'?    *&  &G$*)1 %9  / ( /!L+(6c6727>76'.'.766#'.7636#'.7667>.'.'&6&'.'.5&6$l  _:-  H ,1%D0   )&%/s 0  )%  & &z)1 2 2 |`X!(A 0PL; Gn"/ SO 2 Ee6&76?6* %d-4Ef6/&'&6    /d - 3V >72>76'.#'.`)C'2 `?!  T   " & 'H)4632'.45    g  T&676'.7>7"9  5; * 8 ,3'.7> 5" 7";   8 *{u$3'.7>76&76?6 5" 7"* %;   8 *4-4$3'.7>76/&'&6 5" 7"S! /;   8 *4 - 3~u&'&476'.7>276?6&76?66  * %; , : 5-4&'&476'.7>276?6/&'&66  `! /; , : 5 - 3W,6726?6'.'.76'&676$n ]=-    0  ! %  & & 7 " W+6726?6'.'.76.76&767$n ]=-   $   0  ! %  & & "  > }e"7>76&''.7>76'&6$ $  # z  2 &     #"+e=M6/&'&62632&'&'&67>>6765&/&'&  1#    =C $?h &+3 *M*$ #+,'$d - 5$Q4)  !00  .A6:C DK.UQ9&0+ z.)+M]>72>76'.'.2632&'&'&67>>6765&/&'&f)A&0^=+ o#    =C $?h &+3 *M*$ #+,'$S   " $  &$Q4)  !00  .A6:C DK.UQ9&0+ z.)+@P&676'.7>72632&'&'&67>>6765&/&'&#"9  5#    =C $?h &+3 *M*$ #+,'$; * 8 z$Q4)  !00  .A6:C DK.UQ9&0+ z.)+BR3'.7>2632&'&'&67>>6765&/&'& 5" 7"#    =C $?h &+3 *M*$ #+,'$;   8 *{$Q4)  !00  .A6:C DK.UQ9&0+ z.)+&Td3'.7>76&76?>2632&'&'&67>>6765&/&'& 5" 7"~* $ #    =C $?h &+3 *M*$ #+,'$;   8 *4.3 $Q4)  !00  .A6:C DK.UQ9&0+ z.)+$Rb3'.7>76/&'&62632&'&'&67>>6765&/&'& 5" 7"S  1#    =C $?h &+3 *M*$ #+,'$;   8 *4 - 5$Q4)  !00  .A6:C DK.UQ9&0+ z.)+(Vf'&476'.7>276?6&76?>2632&'&'&67>>6765&/&'&6  * $ #    =C $?h &+3 *M*$ #+,'$; , : 5.3 $Q4)  !00  .A6:C DK.UQ9&0+ z.)+&Td'&476'.7>276?6/&'&62632&'&'&67>>6765&/&'&6  `  1#    =C $?h &+3 *M*$ #+,'$; , : 5 - 5$Q4)  !00  .A6:C DK.UQ9&0+ z.)+.\l>7>76'.'.'&6762632&'&'&67>>6765&/&'&f)C'2]=,   #    =C $?h &+3 *M*$ #+,'$  (%  &o 7 " Z$Q4)  !00  .A6:C DK.UQ9&0+ z.)+-[k>7>76'.'..76&7672632&'&'&67>>6765&/&'&f)C'2]=,  $   #    =C $?h &+3 *M*$ #+,'$  (%  &m "  > X$Q4)  !00  .A6:C DK.UQ9&0+ z.)+He>Nc6&76?62632&'&'&67>>6765&/&'&4632'.450*&#    =C $?h &+3 *M*$ #+,'$w    d- 4$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +He=Mb6/&'&62632&'&'&67>>6765&/&'&4632'.45  1#    =C $?h &+3 *M*$ #+,'$w    d - 5$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +HL\q>72>76'.'.2632&'&'&67>>6765&/&'&4632'.45g$M40^=+ o#    =C $?h &+3 *M*$ #+,'$w    T   " $  '$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H@Pe&676'.7>72632&'&'&67>>6765&/&'&4632'.45#"9  5#    =C $?h &+3 *M*$ #+,'$w    ; * 8 z$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +HBRg3'.7>2632&'&'&67>>6765&/&'&4632'.45 5" 7"#    =C $?h &+3 *M*$ #+,'$w    ;   8 *{$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H&Tdy3'.7>76&76?>2632&'&'&67>>6765&/&'&4632'.45 5" 7"~* $ #    =C $?h &+3 *M*$ #+,'$w    ;   8 *4.3 $Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H$Rbw3'.7>76/&'&62632&'&'&67>>6765&/&'&4632'.45 5" 7"S  1#    =C $?h &+3 *M*$ #+,'$w    ;   8 *4 - 5$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H(Vf{'&476'.7>276?6&76?>2632&'&'&67>>6765&/&'&4632'.456  * $ #    =C $?h &+3 *M*$ #+,'$w    ; , : 5.3 $Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H&Tdy'&476'.7>276?6/&'&62632&'&'&67>>6765&/&'&4632'.456  `  1#    =C $?h &+3 *M*$ #+,'$w    ; , : 5 - 5$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H.\l>7>76'.'.'&6762632&'&'&67>>6765&/&'&4632'.45f)C'2]=,   #    =C $?h &+3 *M*$ #+,'$w      (%  &o 7 " Z$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +H-[k>7>76'.'..76&7672632&'&'&67>>6765&/&'&4632'.45f)C'2]=,  $   #    =C $?h &+3 *M*$ #+,'$w      (%  &m "  > X$Q4)  !00  .A6:C DK.UQ9&0+ z.)l  +f I6/&'&6&'&7>'.'&26&#7>76&'.6(-Q$ 4=SKF  DsL<7  QNvF( _H5+)d91 {@= ,  &  #+   %$ &M<+N&676'.7>7&'&7>'.'&26&#7>76&'.6"9  5f$ 4=SKF  DsL<7  QNvF( _H5+); * 8 @= ,  &  #+   %$ &M<+P3'.7>&'&7>'.'&26&#7>76&'.6 5" 7"$ 4=SKF  DsL<7  QNvF( _H5+);   8 *@= ,  &  #+   %$ &M<+$`3'.7>76&76?6&'&7>'.'&26&#7>76&'.6 5" 7"* %$ 4=SKF  DsL<7  QNvF( _H5+);   8 *4-4z@= ,  &  #+   %$ &M<+$`3'.7>76/&'&6&'&7>'.'&26&#7>76&'.6 5" 7"S! /$ 4=SKF  DsL<7  QNvF( _H5+);   8 *4 - 3z@= ,  &  #+   %$ &M<+&b'&476'.7>276?6&76?6&'&7>'.'&26&#7>76&'.66  * %$ 4=SKF  DsL<7  QNvF( _H5+); , : 5-4z@= ,  &  #+   %$ &M<+&b'&476'.7>276?6/&'&6&'&7>'.'&26&#7>76&'.66  `! /$ 4=SKF  DsL<7  QNvF( _H5+); , : 5 - 3z@= ,  &  #+   %$ &M<g23'.7>4632>76&'&5 5" 7"B   %'? ;   8 *%9  / ( /!Lg0&676'.7>74632>76&'&5"9  5   %'? ; * 8 %9  / ( /!L=g$B3'.7>76&76?64632>76&'&5t 5" 7"~,%Z   %'? ;   8 *403%9  / ( /!LLg'E3'.7>76/&'&64632>76&'&5 5" 7"S  0;   %'? ;   8 *4   4%9  / ( /!L@g&D'&476'.7>276?6&76?64632>76&'&5{6  ,%Z   %'? ; , : 503%9  / ( /!LUg)G'&476'.7>276?6/&'&64632>76&'&56  `  0;   %'? ; , : 5   4%9  / ( /!Lv.L>72>76'.'.'&6764632>76&'&5!(C'2 b9+   2   %'?    *&  &o 7 " %9  / ( /!Lv-K>72>76'.'..76&7674632>76&'&5!(C'2 b9+  $      %'?    *&  &m "  > %9  / ( /!Lzge-6/&'&64632>76&'&5  /!   %'? d - 3%9  / ( /!Lv<>726'6'.'.4632>76&'&5!(A& (`<+    %'? S # $  &%9  / ( /!LQge"@'.'&'&66/62'&44632>76&'&5   #?? * U   %'?    4  %9  / ( /!L+H-=R2632&'&'&67>>6765&/&'&4632'.45#    =C $?h &+3 *M*$ #+,'$w    $Q4)  !00  .A6:C DK.UQ9&0+ z.)l   HCX%'.7>767>74&'&632676&'.476&'&'4632'.45/6+;?%   E ) '(  & (-  (.( #1 #    ( ".q3  )p^( )G3 g ")::   DMD    7L676&'&54'.'&#"&'.754'&#"&'&>4632'.458V  $ 9&3$  5 0 )    k)"sg R# p(8?<4-  +.  fG6/&'&6676&'&54'.'&#"&'.754'&#"&'&>  /+8V  $ 9&3$  5 0 d!- 3)"sg R# p(8?<4-  +V67>?>'.'&76676&'&54'.'&#"&'.754'&#"&'&>(.2 _9 * !8V  $ 9&3$  5 0  ! % *&)"sg R# p(8?<4-  +J&676'.7>7676&'&54'.'&#"&'.754'&#"&'&>/"9  58V  $ 9&3$  5 0 ; * 8 )"sg R# p(8?<4-  +$\3'.7>76&76?6676&'&54'.'&#"&'.754'&#"&'&> 5" 7"~,%8V  $ 9&3$  5 0 ;   8 *403)"sg R# p(8?<4-  +$\3'.7>76/&'&6676&'&54'.'&#"&'.754'&#"&'&> 5" 7"S(  08V  $ 9&3$  5 0 ;   8 *4"7 4)"sg R# p(8?<4-  +&^'&476'.7>276?6&76?6676&'&54'.'&#"&'.754'&#"&'&>6  ,%8V  $ 9&3$  5 0 ; , : 503)"sg R# p(8?<4-  +&^'&476'.7>276?6/&'&6676&'&54'.'&#"&'.754'&#"&'&>6  `(  08V  $ 9&3$  5 0 ; , : 5"7 4)"sg R# p(8?<4-  +e6&76?6*$d .39#(7#"'&5467>2;2+"32#} # " ".+ !  "\!1i>72>76'.'&'&676676&'&54'.'&#"&'.754'&#"&'&>v'@% (  b4    ~8V  $ 9&3$  5 0    ('  Q 7 " )"sg R# p(8?<4-  +!0h>72>76'.'&.76&767676&'&54'.'&#"&'.754'&#"&'&>v'@% (  b4   $   ]8V  $ 9&3$  5 0    ('  O "  > )"sg R# p(8?<4-  +eI^6&76?6676&'&54'.'&#"&'.754'&#"&'&>4632'.45< * %8V  $ 9&3$  5 0 )    d -4)"sg R# p(8?<4-  +.  fG\6/&'&6676&'&54'.'&#"&'.754'&#"&'&>4632'.45  /+8V  $ 9&3$  5 0 )    d!- 3)"sg R# p(8?<4-  +.  Vk67>?>'.'&76676&'&54'.'&#"&'.754'&#"&'&>4632'.45(.2 _9 * !8V  $ 9&3$  5 0 )     ! % *&)"sg R# p(8?<4-  +.  J_&676'.7>7676&'&54'.'&#"&'.754'&#"&'&>4632'.45/"9  58V  $ 9&3$  5 0 )    ; * 8 )"sg R# p(8?<4-  +.  $\q3'.7>76&76?6676&'&54'.'&#"&'.754'&#"&'&>4632'.45 5" 7"~,%8V  $ 9&3$  5 0 )    ;   8 *403)"sg R# p(8?<4-  +.  $\q3'.7>76/&'&6676&'&54'.'&#"&'.754'&#"&'&>4632'.45 5" 7"S(  08V  $ 9&3$  5 0 )    ;   8 *4"7 4)"sg R# p(8?<4-  +.  &^s'&476'.7>276?6&76?6676&'&54'.'&#"&'.754'&#"&'&>4632'.456  ,%8V  $ 9&3$  5 0 )    ; , : 503)"sg R# p(8?<4-  +.  &^s'&476'.7>276?6/&'&6676&'&54'.'&#"&'.754'&#"&'&>4632'.456  `(  08V  $ 9&3$  5 0 )    ; , : 5"7 4)"sg R# p(8?<4-  +.  !1i~>72>76'.'&'&676676&'&54'.'&#"&'.754'&#"&'&>4632'.45v'@% (  b4    ~8V  $ 9&3$  5 0 )       ('  Q 7 " )"sg R# p(8?<4-  +.  8a"0>"'"'.75<&"&'.676'&'&sD9% (  <0* <'a&7 @?BE0E9 % ww^T'+\P'()F#,M&'&=47>.'#&'&76?67'.'"'.7632&'&6&'.U+ (:3,+   Q&6%5bA: S  # 0.D  ;7V) -Ob,  ' $1B. 5R43C..87&'&6767>3262#'&;2#'&'46546546# ?;` .  5BZ,BMb   ?M$ %  .#' "/A  !EtM!6&76?6,%*4 -!0h}>72>76'.'&.76&767676&'&54'.'&#"&'.754'&#"&'&>4632'.45v'@% (  b4   $   ]8V  $ 9&3$  5 0 )       ('  O "  > )"sg R# p(8?<4-  +.  )f +6/&'&64>76'&676&(-*O4.\!"$'9PM+F$$na&_d91 w*>4+#!"`u1F>C.DV&400M)$0&676'.7>74>76'&676&"9  5*O4.\!"$'9PM+F$$na&_; * 8 *>4+#!"`u1F>C.DV&400M)$6B3'.7>76&76?64>76'&676& 5" 7"* %*O4.\!"$'9PM+F$$na&_;   8 *4-4v*>4+#!"`u1F>C.DV&400M)$6B3'.7>76/&'&64>76'&676& 5" 7"S! /*O4.\!"$'9PM+F$$na&_;   8 *4 - 3v*>4+#!"`u1F>C.DV&400M)&8D'&476'.7>276?6&76?64>76'&676&6  * %*O4.\!"$'9PM+F$$na&_; , : 5-4v*>4+#!"`u1F>C.DV&400M)&8D'&476'.7>276?6/&'&64>76'&676&6  `! /*O4.\!"$'9PM+F$$na&_; , : 5 - 3v*>4+#!"`u1F>C.DV&400M+e>6/.'&667>.'.'&6&'.'.5&6  ,U,1%D0   )&%/s d - 0 `X!(A 0PL; Gn"/ SO 2 +J6326?6'.'.7667>.'.'&6&'.'.5&6%n  6.7*  ,1%D0   )&%/s .  *(   ' $`X!(A 0PL; Gn"/ SO 2 +?&676'.7>767>.'.'&6&'.'.5&6"9  5,1%D0   )&%/s ; * 8 v`X!(A 0PL; Gn"/ SO 2 +A3'.7>67>.'.'&6&'.'.5&6 5" 7",1%D0   )&%/s ;   8 *w`X!(A 0PL; Gn"/ SO 2 +$Q3'.7>76&76?667>.'.'&6&'.'.5&6 5" 7"* %,1%D0   )&%/s ;   8 *4 -4`X!(A 0PL; Gn"/ SO 2 94%#&547>>?6"'&546546546564+:+/& $ 87$ $ 8 6}e '&'&'&6676'6'&64 6$ #    = ,2   B" #+$Q3'.7>76/&'&667>.'.'&6&'.'.5&6 5" 7"T  .,1%D0   )&%/s ;   8 *4 - 2`X!(A 0PL; Gn"/ SO 2 +&S'&476'.7>276?6&76?667>.'.'&6&'.'.5&66  * %,1%D0   )&%/s ; , : 5 -4`X!(A 0PL; Gn"/ SO 2 +&S'&476'.7>276?6/&'&667>.'.'&6&'.'.5&66  a  .,1%D0   )&%/s ; , : 5 - 2`X!(A 0PL; Gn"/ SO 2 +,Y6727>76'.'.76'&67667>.'.'&6&'.'.5&6$l  _:-    ,1%D0   )&%/s 0  )%  & & 7 " V`X!(A 0PL; Gn"/ SO 2 ++X6727>76'.'.76.76&76767>.'.'&6&'.'.5&6$l  _:-   $   ,1%D0   )&%/s 0  )%  & & "  > T`X!(A 0PL; Gn"/ SO 2 +(U632'&'#'&/.'&6'6#'.7667>.'.'&6&'.'.5&6    5 "{8,1%D0   )&%/s -  @ )-2 2 y`X!(A 0PL; Gn"/ SO 2  f Q6/&'&6'.7>767>74&'&632676&'.476&'&'(-A/6+;?%   E ) '(  & (-  (.( #1 d91  ".q3  )p^( )G3 g ")::   DMD    d>72>76'.#'.'.7>767>74&'&632676&'.476&'&'`)C'2 `?!  /6+;?%   E ) '(  & (-  (.( #1 T   " & ' ".q3  )p^( )G3 g ")::   DMD   V&676'.7>7'.7>767>74&'&632676&'.476&'&'"9  5/6+;?%   E ) '(  & (-  (.( #1 ; * 8  ".q3  )p^( )G3 g ")::   DMD   X3'.7>'.7>767>74&'&632676&'.476&'&' 5" 7"/6+;?%   E ) '(  & (-  (.( #1 ;   8 * ".q3  )p^( )G3 g ")::   DMD   $h3'.7>76&76?6'.7>767>74&'&632676&'.476&'&' 5" 7"* %:/6+;?%   E ) '(  & (-  (.( #1 ;   8 *4-4 ".q3  )p^( )G3 g ")::   DMD   $h3'.7>76/&'&6'.7>767>74&'&632676&'.476&'&' 5" 7"S! //6+;?%   E ) '(  & (-  (.( #1 ;   8 *4 - 3 ".q3  )p^( )G3 g ")::   DMD   &j'&476'.7>276?6&76?6'.7>767>74&'&632676&'.476&'&'6  * %:/6+;?%   E ) '(  & (-  (.( #1 ; , : 5-4 ".q3  )p^( )G3 g ")::   DMD   &j'&476'.7>276?6/&'&6'.7>767>74&'&632676&'.476&'&'6  `! //6+;?%   E ) '(  & (-  (.( #1 ; , : 5 - 3 ".q3  )p^( )G3 g ")::   DMD   ,p6726?6'.'.76'&676'.7>767>74&'&632676&'.476&'&'$n ]=-    /6+;?%   E ) '(  & (-  (.( #1 0  ! %  & & 7 "  ".q3  )p^( )G3 g ")::   DMD   +o6726?6'.'.76.76&767'.7>767>74&'&632676&'.476&'&'$n ]=-   $   /6+;?%   E ) '(  & (-  (.( #1 0  ! %  & & "  >  ".q3  )p^( )G3 g ")::   DMD   Hf Qf6/&'&6'.7>767>74&'&632676&'.476&'&'4632'.45(-A/6+;?%   E ) '(  & (-  (.( #1 #    d91  ".q3  )p^( )G3 g ")::   DMD     HeRg6&76?6'.7>767>74&'&632676&'.476&'&'4632'.45)>%/6+;?%   E ) '(  & (-  (.( #1 #    d B3 ".q3  )p^( )G3 g ")::   DMD     H dy>72>76'.#'.'.7>767>74&'&632676&'.476&'&'4632'.45`)C'2 `?!  /6+;?%   E ) '(  & (-  (.( #1 #    T   " & ' ".q3  )p^( )G3 g ")::   DMD     HVk&676'.7>7'.7>767>74&'&632676&'.476&'&'4632'.45"9  5/6+;?%   E ) '(  & (-  (.( #1 #    ; * 8  ".q3  )p^( )G3 g ")::   DMD     HXm3'.7>'.7>767>74&'&632676&'.476&'&'4632'.45 5" 7"/6+;?%   E ) '(  & (-  (.( #1 #    ;   8 * ".q3  )p^( )G3 g ")::   DMD     H$h}3'.7>76&76?6'.7>767>74&'&632676&'.476&'&'4632'.45 5" 7"* %:/6+;?%   E ) '(  & (-  (.( #1 #    ;   8 *4-4 ".q3  )p^( )G3 g ")::   DMD    2E 2"'.76    ?? H&j'&476'.7>276?6/&'&6'.7>767>74&'&632676&'.476&'&'4632'.456  `! //6+;?%   E ) '(  & (-  (.( #1 #    ; , : 5 - 3 ".q3  )p^( )G3 g ")::   DMD     H,p6726?6'.'.76'&676'.7>767>74&'&632676&'.476&'&'4632'.45$n ]=-    /6+;?%   E ) '(  & (-  (.( #1 #    0  ! %  & & 7 "  ".q3  )p^( )G3 g ")::   DMD     H+o6726?6'.'.76.76&767'.7>767>74&'&632676&'.476&'&'4632'.45$n ]=-   $   /6+;?%   E ) '(  & (-  (.( #1 #    0  ! %  & & "  >  ".q3  )p^( )G3 g ")::   DMD    +#2?&676'.7>7"'#"'&547>6'."9  5YB  3DY#A4RoPd1; * 8 B(R1 ) ;(HG<"+L% :-aVpK9K +#4A3'.7>"'#"'&547>6'. 5" 7"YB  3DY#A4RoPd1;   8 *B(R1 ) ;(HG<"+L% :-aVpK9K L3'.7>676&'&54'.'&#"&'.754'&#"&'&> 5" 7"q8V  $ 9&3$  5 0 ;   8 *)"sg R# p(8?<4-  +La3'.7>676&'&54'.'&#"&'.754'&#"&'&>4632'.45 5" 7"q8V  $ 9&3$  5 0 )    ;   8 *)"sg R# p(8?<4-  +.  )&23'.7>4>76'&676& 5" 7"*O4.\!"$'9PM+F$$na&_;   8 **>4+#!"`u1F>C.DV&400MPge!?67676&'&'&676'&64632>76&'&5, )  (' {  W   %'? 8  ,  ""%9  / ( /!L8@7>7>3:32+"'&4763/#2+"'.76373/#Vom  P$ $ $ $P *+>$  #  & $P  g$ & Q77(5C#"'&476;6+"'&476;3:>76&'&+3:>7>&'&+[  &&0 $.4 -L FS  962fd  +($6lC&!YY &*o+, &. $} [P +#"'&=#32+"'.76;#"'&6763!2 5'(Z# 3(( ) !>32#!"'&76!/#     G dDn   )"D%2&!"'&476;#"'&673!2#"'&=#347632#".7#!5476 ### !k    F ' *93%  H  =..%#!"'&7>7!#".=463!2!547632  ( T 5 "! / A 4! A  K#"'&676;2+35#"'&476;2+32+"'&476;5#32+"'&476;V#nn##n#nC &&&&  && &&8 =\#".'.547>36&'&=47>346&'&5' 32>76'.'&#"62.,,?%@21 &', % > %0  *+ME]A"0 .15)+J:  :+G+  1)8* !$N%#"'.7>!2+32'!"'&676;q  # pq  # pC * *R#"32+"'&4763#32+"'.76;#"'&476;2+3"'.76;2& d  n  8# [$J$J  Q(c '& # z%'%'";7>7>3:2+"'.76;/#32+"'&676UX m$$RK  ?R$> v  # & '\e;;!u' &T"'&476;234?>;2#2+"'.763##"&/&'#2+"'.763F"1 44!1""  B  "I I"  @  "C%$?CN%$&  0$&D#"'.76;2#"'&676;2+#"'&'.'#32+"'.76;]   3$    %M   %MC%  "8-&' ) &' 2J#"'&5!#"&5&6763!2"&5##"&=46234632#!"'&5&>32!4632   vi  (  XD  ?   43 # 8 =#".'.547>3632>76'&'.#"62.,,?%@21 &',  )&0   *:5 E]A"0 .15)+B#+)2 0(> ,)7#"'&6763!2+32+"'&476;#32+"'&476;V y#n#nC (' && &&(9#"'&476;2+32+"'.76;3>7>&'."+`":-;0/4'Y# #FU &(  PC& BE&(BN KV#.7>'&5&>76 # ,. '>  29 3r(=   2'2".=!!547632#!"&?656/&76763!2f' R-  "ng 1A Q/ B#: I2#"'&=#32+"'.76;##"'&=4763!2 33y 3'(3 F  %C"7>3234767632#"&4'.#"32+"'&476;54&'&#"H(& Q: &(B' ' )&6 n^  6&) 7n(&˟& '5<C32+"'.76;5.'&7675#"'&476;2+3>54&')Um W,+++4=/ 78T++F+JJ+F)LK*j@O)b'(b;%B35b'(8'&88&(7p2#"3232+"'&4763'#2+"'&6763232>?654/&/.#*.'&546;2#37"'&4763$ 4J4 \"d <  "] 73   ["A H !  &m* f   # 0$ rl  A/4    # # %O2#"'&476;2+654763232+"'&476;54&'&'.6'.'4G-P' 'P!  /.' ' E&   79b&(H DNY  X(&X H'Z7 "M%"&7>'.'&+&&'&=4763.'.67>347>#] >, D/e6"d B   DYf,H$B  ;60I [$_C1*R{   &'01 2">Z&$I#LYD80N   N 96'&676'&6#"'.7>!2+32'!"'&676;@q  # pq  # p5555 * *% W6'&676'&6"7>3234767632#"&4'.#"32+"'&476;54&'&#"(& Q: &(B' ' 5555)&6 n^  6&) 7n(&˟& +e>N6&76?62632&'&'&67>>6765&/&'&0*&#    =C $?h &+3 *M*$ #+,'$d- 4$Q4)  !00  .A6:C DK.UQ9&0+ z.)+eJ6&76?6&'&7>'.'&26&#7>76&'.6)>%$ 4=SKF  DsL<7  QNvF( _H5+)d B3{@= ,  &  #+   %$ &M<eI6&76?6676&'&54'.'&#"&'.754'&#"&'&>< * %8V  $ 9&3$  5 0 d -4)"sg R# p(8?<4-  +ge-6&76?64632>76&'&5* %9   %'? d-4%9  / ( /!L+"O7676&'#"&>76#'.7667>.'.'&6&'.'.5&6I  E    ,1%D0   )&%/s h S " )1 y`X!(A 0PL; Gn"/ SO 2 +-=2632&'&'&67>>6765&/&'&#    =C $?h &+3 *M*$ #+,'$$Q4)  !00  .A6:C DK.UQ9&0+ z.)+"D7'.45467>.6&>76&'."&'&546>o  "h50H$(O2 (^R<3",H2\C-8C' ".+R  S.;#-.A09. `K!)2(: #%;   .O1"=4&'.'#"&67667676"#  996&%$  ! /g[Q" )`&-  .]AS&J.}.:&'&67>.'&'&'.6766&'&7>H-g>   B#'&*%!Y>J>C>#>OD3btN#F&e +  % < -uhQ $1?gS?So F+;7&'&7>'.'&26&#7>76&'.6s$ 4=SKF  DsL<7  QNvF( _H5+)@= ,  &  #+   %$ &M<-{>"'&767632'.632>&'&#.'.>76g& D2bw)7 A, '@R f"/1M !'%( "B@  (Q6T/=s',BB " !,fX847676&'&54'.'&#"&'.754'&#"&'&>8V  $ 9&3$  5 0 k)"sg R# p(8?<4-  +.&>&'.'&!.'.7>767MFJCBCGJ&P"?FK&!!OJVM39G as!dx+*p986uv 2)9Kg4632>76&'&5   %'? |%9  / ( /!L,@7"'&>/&5>67>"&'. 3  '   67654/&'"'&67632'&/&0e    4?. Z=!`% @W X`  - f .X-93:   6( <%''.6'476727>'547>632'.u9<  ;B  3>?9 # ..3(.5.,   #5 ! "+/%>76.'&76#&"'.'&/.767>%8;  A77  }   T'a1V6+# *,KLa.1#} "  T} ,{P.7"&'&76263>76>363'.76326'.'&'.67$"8 %][  A+S>.(,0!O25~  "R! 6+Ioe /,}X-#   0$   6Z2I1B-   "Z!FR")74>76'&676&)*O4.\!"$'9PM+F$$na&_*>4+#!"`u1F>C.DV&400M.'#632'.5##"'&5"'.76763!2 =%8! j * . ' zhH(1%jB#  +#,"'#"'&547>6'.YB  3DY#A4RoPd1B(R1 ) ;(HG<"+L% :-aVpK9K *132#"32#"'&6763276'."#&'.67> D5 326'327>&'&'"n& " eY!8('3#Hr 1"0 ">03* g0@:.)*  (  9HP:j{$ &#"/.76763!2+632&'&G!#  - . #'9Fm 5}WU)hl5+,67>.'.'&6&'.'.5&6H,1%D0   )&%/s `X!(A 0PL; Gn"/ SO 2 $(="=.'&67654&567>5>7>&'&(D=|&(  )$(J#"5#.=8+D   3qY5q-#%1o#!m 0 d/  ]t|'4B+FV ,0&O7#"'&'&7>&/.'&#.54766?>3263.'&!C   #4 #5&$ !C   #4 #5&$  8l$#  -_] ,E:$ 8l$#  -_] ,E:$,7"=&'.547676476267>'.'&676(D EO   ( 44  (P@3OVC 85S6&!! 656%O C%'.7>767>74&'&632676&'.476&'&'/6+;?%   E ) '(  & (-  (.( #1 ( ".q3  )p^( )G3 g ")::   DMD   76#'.76>'.4632>76&'&5)     %'? 22  7 1%9  / ( /!L+ G>&76"'&67667>.'.'&6&'.'.5&6P   #    ,1%D0   )&%/s i6702 5 `X!(A 0PL; Gn"/ SO 2 )e ,6&76?64>76'&676&)>%*O4.\!"$'9PM+F$$na&_d B3w*>4+#!"`u1F>C.DV&400M+e<6&76?667>.'.'&6&'.'.5&6,%,1%D0   )&%/s d03`X!(A 0PL; Gn"/ SO 2  eR6&76?6'.7>767>74&'&632676&'.476&'&')>%/6+;?%   E ) '(  & (-  (.( #1 d B3 ".q3  )p^( )G3 g ")::   DMD   H$h}3'.7>76/&'&6'.7>767>74&'&632676&'.476&'&'4632'.45 5" 7"S! //6+;?%   E ) '(  & (-  (.( #1 #    ;   8 *4 - 3 ".q3  )p^( )G3 g ")::   DMD     t' %R y  ^  N   0 cConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fctrpgjlm_fctrpgRegularRegularFontForge 2.0 : jlm_fctrpg : 30-12-2009FontForge 2.0 : jlm_fctrpg : 30-12-2009jlm_fctrpgjlm_fctrpgVersion 001.001 Version 001.001 jlm_fctrpgjlm_fctrpg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkern >aHaS,libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbpg.xml0000644000175000017500000006101512275735442031310 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsropg.ttf0000644000175000017500000014504412275735442031517 0ustar sylvestresylvestrepFFTMS(GDEF)GPOSGSUBge OS/2W xVcmaps gaspglyf,G<head^6hhea24$hmtxHAO:loca.-W0maxpX name">post٨ylA>_< aS+aS+AAZkYd@!1PfEd  8ZAMA@A@A@A@ `9_~'_,5|\MpoompjM~M~zPPPPPPPPPPPPPPPPPPPPP>>>>>>>JJA?B<55J'JPACdddddddr ddCCCCCCCCC[vCRRRRRR|||||[z||||||AAAAAAAAAAAAAAAAAAAdCRJc`A*U_c7_ w`ackda*u_a7 { ,` P>dJ|P+dP>Sd92J) ~ORfL9Qa|GS+GZA:|R|AA,, p\@ uz'7EWgprtvxz|  tz 0@P`prtvxz| Pt%ZZV`dr|Qa ^`Rn _"#'%&$)(67;9:8LPNOMTS=<A?@>CBdhfgeklrpqmtsxy}{|z~-.201/43X\Z[Yb]+G*!, VIUKW EjHw } ttQuuazz ^`Rn _"'%$)(6;98  L!!""P#$N%%M&&T''S00=11<22A34?55>66C77B@@dAABBhCDfEEePQkRRrSTpUUmVVtWWs`axbb}cd{eezffgg~pp rr5ttJvvDxxczzi||v-20/43X\ZYb]+G*!,  VIUKW FEujoHw  DGRh \j\ Dt T <  f  ,z"<rn2\`n>t X !!!"#,#$<$%~&.&'(8()@))***+R+, ,,-2--.h../0/001112h23445J56v7 78T89|::;r;<6<=>*>?4?@6@@A(AJAlAAAB&B6B`BBBC0CnCCCDD4DDE$EEFF~FGhGHHHIjIJ*JJKfKLL`LM"MbMNNhNNO:OOP.PPQfQRR\RSS@)2!#!#"+367>2;232!.76‘K=  6m ,1  U`DPN'  * $T0 J{&B@8!#!#"+3!276?>73"+!"+‘K=  6N) > Nf 99 8U`DPN' ;1;!   'n'+@+!#!#"+3?3#/#7'‘K=  6^k=) S M OU`DPN' ;* <@K!#!#"+2676;"+#+.7465#+‘K=  6E 9 gf 9n0uB579yU`DPN' ;\r6Bm   d = rH ;`++"'&'&7673272676?67&#"j8E%22Q\tCM #1A&!5+3(87 Z Bfbp , "@;GY_!#"&+"!!"+ 0 @ 0 / MAU=C~<+74?>765.'&'&67>6&'&6 *;F=:<6CB52/)/ '2D)2f7v,RC,) ()/%8`  ]6 *!Eb"#/##7/##>76&/&67>:= he .@.  4 {j &2'd73#iNBN~'42#'!#>7>3.5#3'.>P Y! L 5X3  *vN ,   ,KU ~"  -B#U>] &Lc)  :_3!?3#!#3'.>V?P:VNE@MN ,  fEAc)  :,4A7.'&7>7#>76'.'&#"+73'.>0 @i?b)>/ 2*Y.  2]O!K/>v&25 N ,  G+yJF !,L/(gA Gc)  :%167>673&'&#6&7>76&7> +; ! B +3673'.6&7>76&7>'&7>;7>5D#8Bb:" 2K >7?  O"%,J  7*$#K&   |$0X>7632?6;'."6&7>76&7>&63'.>'&6766767654&>2 W  -B",   4G$ z51 !OI-  Ou1dJ8!SQd23  =?v$LA32>;&#"#p -B%  /5"(g   "4 *P 3'.>N ,  @c)  :S&'&676#>3676'4  !,P < # I75""&'&676&'&53 6 -8 #  #B  $ o$"&'&676&'&53?3 6 -8 #  5#B  $ *m""&'&676&'&5373#/ 6 -8 #  3N4+#B  $ p &'&676#>7654?3  $, E,9 5 #:3$ 4j&'&676#>765473#/  $, E,93N4+ #:3$ 4@~%67>3673'.#3"'&676'&~D$8 BV58=- # )O "&(H #54 % ~*67>3673'.##.7>#>4676~D$8 BV58t  1 O "&(H #4  !& z?3#7#"&767676&76g 5&k)  !  4#! P55K3#/&'&67>?3767632;&'&'>54&5&'&7>7$N4+ @i :8;J F5D!   4-57)#('(< ] #32>76;&#"#&'&67>?3767632;&'&'>54&5&'&7>70)/   /9%$ci @i :8;J F5D!   4-57)#('(<   $5* A #3676'4&'&67>?3767632;&'&'>54&5&'&7>7 !,P <c @i :8;J F5D!   4-57)#('(<  # I75 #?3767632;&'&'>54&5&'&7>7 6 -8 #  ' @i :8;J F5D!   4-57)#('(< #B  $ D #?3767632;&'&'>54&5&'&7>7L 6 -8 #  6 @i :8;J F5D!   4-57)#('(< #B  $ *n #?3767632;&'&'>54&5&'&7>7J 6 -8 #  3N) + $3 @i :8;J F5D!   4-57)#('(< #B  $ /l #7>54?3&'&67>?3767632;&'&'>54&5&'&7>7D  $, E, 6 @i :8;J F5D!   4-57)#('(<  #:3$  'n #7>5473#/.'&'&67>?3767632;&'&'>54&5&'&7>7>  $, E, 3N) + $3 @i :8;J F5D!   4-57)#('(<  #:3$  'A/l #3>73&'.#3"'&676'&&'&67>?3767632;&'&'>54&5&'&7>7B$>B,=!>- # ) @i :8;J F5D!   4-57)#('(< O$  54 % > #3>73&'.##.7>#>4676&'&67>?3767632;&'&'>54&5&'&7>7B$>B,=!u  1 * @i :8;J F5D!   4-57)#('(< O$  4  !& P #?3767632;&'&'>54&5&'&7>73'.># 5)i  @i :8;J F5D!   4-57)#('(< `N ,  8n #?3767632;&'&'>54&5&'&7>73'.>$N4+ @i :8;J F5D!   4-57)#('(< `N ,  ] #32>76;&#"#&'&67>?3767632;&'&'>54&5&'&7>73'.>0)/   /9%$ci @i :8;J F5D!   4-57)#('(< `N ,    $5* A #3676'4&'&67>?3767632;&'&'>54&5&'&7>73'.> !,P <c @i :8;J F5D!   4-57)#('(< `N ,   # I75 #?3767632;&'&'>54&5&'&7>73'.> 6 -8 #  ' @i :8;J F5D!   4-57)#('(< `N ,  #B  $ D #?3767632;&'&'>54&5&'&7>73'.>L 6 -8 #  6 @i :8;J F5D!   4-57)#('(< `N ,  #B  $ *n #?3767632;&'&'>54&5&'&7>73'.>J 6 -8 #  3N) + $3 @i :8;J F5D!   4-57)#('(< `N ,  #B  $ /l #7654?3&'&67>?3767632;&'&'>54&5&'&7>73'.>D  $, E,9 6 @i :8;J F5D!   4-57)#('(< `N ,   #:3$ 4n #7>5473#/.'&'&67>?3767632;&'&'>54&5&'&7>73'.>>  $, E, 3N) + $3 @i :8;J F5D!   4-57)#('(< `N ,   #:3$  '=/l #3>73'.#3"'&676'&&'&67>?3767632;&'&'>54&5&'&7>73'.>,=!BB$>>- # ) @i :8;J F5D!   4-57)#('(< `N ,  O  $54 % > #3>73'.##.7>#>4676&'&67>?3767632;&'&'>54&5&'&7>73'.>,=!BB$>u  1 * @i :8;J F5D!   4-57)#('(< `N ,  O  $4  !& P #G3#/&"&#&6767.'&6767.'&7>.'.676N4+7&  7%Gh,,*&ZI7$  30<C $6C; "'!  .  F!-J$ @"!"* ($ >Y&'&676#>3676'4"&#&6767.'&6767.'&7>.'.676Q !,P <]&  7%Gh,,*&ZI7$  30<C $6C; "' # I75E  .  F!-J$ @"!"* ($ >]"&'&676&'&53"&#&6767.'&6767.'&7>.'.676Y 6 -8 #  X&  7%Gh,,*&ZI7$  30<C $6C; "'#B  $   .  F!-J$ @"!"* ($ >$e"&'&676&'&53?3"&#&6767.'&6767.'&7>.'.676% 6 -8 #  5I&  7%Gh,,*&ZI7$  30<C $6C; "'#B  $ *  .  F!-J$ @"!"* ($ >"c"&'&676&'&5373#/"&#&6767.'&6767.'&7>.'.676# 6 -8 #  3N4+&  7%Gh,,*&ZI7$  30<C $6C; "'#B  $   .  F!-J$ @"!"* ($ > a&'&676#>7654?3"&#&6767.'&6767.'&7>.'.676  $, E,9 5I&  7%Gh,,*&ZI7$  30<C $6C; "' #:3$ 4  .  F!-J$ @"!"* ($ >_&'&676#>765473#/"&#&6767.'&6767.'&7>.'.676  $, E,93N4+&  7%Gh,,*&ZI7$  30<C $6C; "' #:3$ 4@  .  F!-J$ @"!"* ($ J3"&'&676&'&53'&7>;7> 6 -8 #  K >7?  #B  $ ]*$#K&   JA/&'&676#>3676'4'&7>;7> !,P <JK >7?   # I75*$#K&   A$;"&'&676&'&53?3'&7>;7> 6 -8 #  5K >7?  #B  $ **$#K&   ?d"9"&'&676&'&5373#/'&7>;7> 6 -8 #  3N4+JK >7?  #B  $ v*$#K&   B 7&'&676#>7654?3'&7>;7>  $, E,9 5K >7?   #:3$ 4*$#K&   <d5&'&676#>765473#/'&7>;7>  $, E,93N4+JK >7?   #:3$ 4@v*$#K&   5'>67>3673'.3"&'&676'&'&7>;7>5D#8Bb:" = # )K >7?  O"%,J  5 4 % W*$#K&   5+B67>3673'.#.7>#>4676'&7>;7>5D#8Bb:" t  1 K >7?  O"%,J  4  !& i*$#K&   J3#/&'&7>;7>N4+7LK >7?  *$#K&   's0'.#"+67>32>3'&7>;7> Z79  / L(;  K >7?  r29" *$#K&   JJ433676'#/&6&7>'&7>;7>N  0+7nK >7?  'k;*$#K&   P5/ER%&'&67>?3767632;&'&'>54&5&'&7>73'.>_ @i :8;J F5D!   4-57)#('(< `N ,  R #76&54>76327>'&'573'.''.>763'.>i)$ !: 9MG;9)#b2 /';}( M=N ,   2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :CCP>32'.67676&'&'.>7>7654'&7>3'.>2 . e  & f+  #  W&N ,  """+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :dK3#/>32'.67676&'&'.>7>7654'&7>/81+`2 . e  & f+  #  W&t"""+ Be".) 52IJP!-5:<9 4G&% ,+-d4r\67>673.#"#>32'.67676&'&'.>7>7654'&7>J'%E7"<2   2 . e  & f+  #  W&   "4"""+ Be".) 52IJP!-5:<9 4G&% ,+-d\&'&676#>3676'4>32'.67676&'&'.>7>7654'&7> !,P <2 . e  & f+  #  W& # I75"""+ Be".) 52IJP!-5:<9 4G&% ,+-d4$h"&'&676&'&53?3>32'.67676&'&'.>7>7654'&7>W 6 -8 #   5s2 . e  & f+  #  W&#B  $ *c"""+ Be".) 52IJP!-5:<9 4G&% ,+-d$h"&'&676&'&5373#/>32'.67676&'&'.>7>7654'&7>V 6 -8 #  280+2 . e  & f+  #  W&#B  $ t"""+ Be".) 52IJP!-5:<9 4G&% ,+-d4 d&'&676#>7654?3>32'.67676&'&'.>7>7654'&7>O  $, E,9 5s2 . e  & f+  #  W& #:3$ 4c"""+ Be".) 52IJP!-5:<9 4G&% ,+-d d&'&676#>765473#/>32'.67676&'&'.>7>7654'&7>I  $, E,9380+2 . e  & f+  #  W& #:3$ 4@t"""+ Be".) 52IJP!-5:<9 4G&% ,+-rN?3r 5 +7'&6767>32'#"326# / %S /-/ /%  9-' 9O/! '&V'dC(l676327>;'.3"&'&676'&>32'.67676&'&'.>7>7654'&7>Fp - T4(" = # )U2 . e  & f+  #  W&O]C.C  5 4 % """+ Be".) 52IJP!-5:<9 4G&% ,+-dC,p676327>;'.#.7>#>4676>32'.67676&'&'.>7>7654'&7>Fp - T4(" t  1 2 . e  & f+  #  W&O]C.C  4  !& """+ Be".) 52IJP!-5:<9 4G&% ,+-C KX?3>32'.67676&'&'.>7>7654'&7>3'.>. 5I2 . e  & f+  #  W&N ,  c"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :CKX3#/>32'.67676&'&'.>7>7654'&7>3'.>/81+`2 . e  & f+  #  W&N ,  t"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :C4r\i67>673.#"#>32'.67676&'&'.>7>7654'&7>3'.>J'%E7"<2   2 . e  & f+  #  W&N ,     "4"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :C\i&'&676#>3676'4>32'.67676&'&'.>7>7654'&7>3'.> !,P <2 . e  & f+  #  W&N ,   # I75"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :C4$hu"&'&676&'&53?3>32'.67676&'&'.>7>7654'&7>3'.>W 6 -8 #   5s2 . e  & f+  #  W&N ,  #B  $ *c"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :C$hu"&'&676&'&5373#/>32'.67676&'&'.>7>7654'&7>3'.>V 6 -8 #  280+2 . e  & f+  #  W&N ,  #B  $ t"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :C4 dq&'&676#>7654?3>32'.67676&'&'.>7>7654'&7>3'.>O  $, E,9 5s2 . e  & f+  #  W&N ,   #:3$ 4c"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :C dq&'&676#>765473#/>32'.67676&'&'.>7>7654'&7>3'.>I  $, E,9380+2 . e  & f+  #  W&N ,   #:3$ 4@t"""+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :CC(ly676327>;'.3"&'&676'&>32'.67676&'&'.>7>7654'&7>3'.>Fp - T4(" = # )U2 . e  & f+  #  W&N ,  O]C.C  5 4 % """+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :Y07&'.7>&?>7>&'.6$R4".J  7  + ](-9 48'"i(LZ "TN"E-{2-"*x/C8><&PO!!"[F.#67467632+>.'#"+67>7&/"#>767$.,: liy8 ME 5%"s&(YEF-N%5AB 5=   $2;qQ Am5D /M* &70W<0 *!,<%";+('v)#"#"'.763'#7.'&6767>7 E): s&0N+P;68)  /+ NG . ?3)Z #CC,p}676327>;'.#.7>#>4676>32'.67676&'&'.>7>7654'&7>3'.>Fp - T4(" t  1 2 . e  & f+  #  W&N ,  O]C.C  4  !& """+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :R"3#/&>&7>6'&7>.N4+7#9^D Zgje(0J:TdD9N De.Y}_Em;)-k3676'4>&7>6'&7> !,P <9^D Zgje(0J:TdD9N # I75 De.Y}_Em;)-k&7>6'&7>V 6 -8 #  5n9^D Zgje(0J:TdD9N#B  $ *9 De.Y}_Em;)-k"&'&676&'&5373#/>&7>6'&7>T 6 -8 #  3N4+9^D Zgje(0J:TdD9N#B  $ J De.Y}_Em;)-k7>54?3>&7>6'&7>N  $, E, 5n9^D Zgje(0J:TdD9N #:3$  '9 De.Y}_Em;)-k7>5473#/>&7>6'&7>H  $, E, 3N4+9^D Zgje(0J:TdD9N #:3$  'AJ De.Y}_Em;)-k'&6766767654&81+b   4G$ z51 !] Ou1dJ8!SQd23  =?v$LA32>76;&#"#&63'.>'&6766767654& L(< /A'#Y     4G$ z51 !" &6&y Ou1dJ8!SQd23  =?v$LA3676'4&63'.>'&6766767654& !,P <   4G$ z51 ! # I75 Ou1dJ8!SQd23  =?v$LA'&6766767654&W 6 -8 #  ?   4G$ z51 !#B  $ v Ou1dJ8!SQd23  =?v$LA'&6766767654&" 6 -8 #   5O   4G$ z51 !#B  $ *L Ou1dJ8!SQd23  =?v$LAN  0+7'k|$L"&'&676&'&5373#/&63'.>'&6766767654&! 6 -8 #  281+   4G$ z51 !#B  $ ] Ou1dJ8!SQd23  =?v$LA7654?3&63'.>'&6766767654&  $, E,9 5O   4G$ z51 ! #:3$ 4L Ou1dJ8!SQd23  =?v$LA765473#/&63'.>'&6766767654&  $, E,9381+   4G$ z51 ! #:3$ 4@] Ou1dJ8!SQd23  =?v$LA7632?6;'."3"'&676'&&63'.>'&6766767654&>2 W  -B",=- # )m   4G$ z51 !OI- 54 % | Ou1dJ8!SQd23  =?v$LA7632?6;'."#.7>#>4676&63'.>'&6766767654&>2 W  -B",t  1 =   4G$ z51 !OI- 4  !& j Ou1dJ8!SQd23  =?v$LA'#/6&7>&63'.>'&6766767654&8&6+K   4G$ z51 !   = Ou1dJ8!SQd23  =?v$LA76&54>76327>'&'573'.''.>76s8# =i)$ !: 9MG;9)#b2 /';}( M=8 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5As]>327>;&#"#7>76&54>76327>'&'573'.''.>76xK 3&2 .%/#(z2 i)$ !: 9MG;9)#b2 /';}( M=:2 ) & L 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A[&'&676#>3676'47>76&54>76327>'&'573'.''.>76 !,P <i)$ !: 9MG;9)#b2 /';}( M= # I75 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A_"&'&676&'&537>76&54>76327>'&'573'.''.>76 6 -8 #  i)$ !: 9MG;9)#b2 /';}( M=#B  $ I 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A$g"&'&676&'&53?37>76&54>76327>'&'573'.''.>76 6 -8 #   5i)$ !: 9MG;9)#b2 /';}( M=#B  $ * 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A#f"&'&676&'&5373#7>76&54>76327>'&'573'.''.>76 6 -8 #  28# =i)$ !: 9MG;9)#b2 /';}( M=#B  $ 8 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A c&'&676#>7654?37>76&54>76327>'&'573'.''.>76  $, E,9 5i)$ !: 9MG;9)#b2 /';}( M= #:3$ 4 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5Ab&'&676#>765473#7>76&54>76327>'&'573'.''.>76  $, E,938# =i)$ !: 9MG;9)#b2 /';}( M= #:3$ 4@8 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A,o67667673'.3"&'&676'&7>76&54>76327>'&'573'.''.>76#@W*!&&BS)*!'%u # )i)$ !: 9MG;9)#b2 /';}( M=O"8     5 4 % O 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A0s67667673'.#.7>#>46767>76&54>76327>'&'573'.''.>76#@W*!&&BS)*!'%  1 i)$ !: 9MG;9)#b2 /';}( M=O"8     4  !& = 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5AIV3#7>76&54>76327>'&'573'.''.>763'.>s8# =i)$ !: 9MG;9)#b2 /';}( M=N ,  8 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :AJW?37>76&54>76327>'&'573'.''.>763'.>r7i)$ !: 9MG;9)#b2 /';}( M=N ,   2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :As]j>327>;&#"#7>76&54>76327>'&'573'.''.>763'.>xK 3&2 .%/#(z2 i)$ !: 9MG;9)#b2 /';}( M=N ,  :2 ) & L 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :A[h&'&676#>3676'47>76&54>76327>'&'573'.''.>763'.> !,P <i)$ !: 9MG;9)#b2 /';}( M=N ,   # I75 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :A_l"&'&676&'&537>76&54>76327>'&'573'.''.>763'.> 6 -8 #  i)$ !: 9MG;9)#b2 /';}( M=N ,  #B  $ I 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :A$gt"&'&676&'&53?37>76&54>76327>'&'573'.''.>763'.> 6 -8 #   5i)$ !: 9MG;9)#b2 /';}( M=N ,  #B  $ * 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :D >&+ |! "Abo&'&676#>765473#7>76&54>76327>'&'573'.''.>763'.>  $, E,938# =i)$ !: 9MG;9)#b2 /';}( M=N ,   #:3$ 4@8 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :A,o|67667673'.3"&'&676'&7>76&54>76327>'&'573'.''.>763'.>#@W*!&&BS)*!'%u # )i)$ !: 9MG;9)#b2 /';}( M=N ,  O"8     5 4 % O 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :A0s67667673'.#.7>#>46767>76&54>76327>'&'573'.''.>763'.>#@W*!&&BS)*!'%  1 i)$ !: 9MG;9)#b2 /';}( M=N ,  O"8     4  !& = 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  :9G&'&676#>3676'4"'&767>7>'&%6&'&6 !,P <# $ $?4 "2+a1 "#&!5M1.7w # I75MC)BSgC/N$F5 VP:7%&C ^82Ee=K"&'&676&'&53"'&767>7>'&%6&'&6n 6 -8 #  # $ $?4 "2+a1 "#&!5M1.7w#B  $ MC)BSgC/N$F5 VP:7%&C ^82Eed`"&'&676&'&53>32'.67676&'&'.>7>7654'&7> 6 -8 #  2 . e  & f+  #  W&#B  $ """+ Be".) 52IJP!-5:<9 4G&% ,+-C`m"&'&676&'&53>32'.67676&'&'.>7>7654'&7>3'.> 6 -8 #  2 . e  & f+  #  W&N ,  #B  $ """+ Be".) 52IJP!-5:<9 4G&% ,+-c)  :R+8"&'&676&'&53>&7>6'&7> 6 -8 #  }9^D Zgje(0J:TdD9N#B  $ c De.Y}_Em;)-k;7>g 5&k)  ! ,K >7?   4#! =*$#K&   ~'2#'!#>7>3.5#P Y! L 5X3  *v ,KU ~"  -B#U>] &Lc&836+;676'.'&+32>7>'."+.(.Q1+ 22[x ^W;L5F((Odys, : '3*.l *F!;*?-Q $09' G'#`!#"&+"#"#+ - : wMA  *7?3%!.'&5#* Q.7 UQ L0,$_!#'#!!"%#! KS-L u BA=" %D7!7373!?67<j  0"_3!?3#!#V?P:VNE@MfEw$#6&'&67>>.!!w6* oSxF1-*]i`\s VTEi 1`0Na7PbNZT~7^.+jc ];`G3#VNfa3?3#/#SM@Q 'Ka  o\zF7?3#&/##r MX[# . U/o> 0ZFd+3677>;+##&/#+e MVgc 9 M 1 9 h9 IX3++, e\ AMnS-'a33#/'#+o N e  h9 e~ 4-'* +"&#"#>&623!#!3%#! xEE   Qy  9! ABu#6.7>327676.'&9-4.Gj>^5 SVAiYP  1$GUV]\}(,JTlD\WVUrvk 22_ !#!#kNNk a36+#3267>&'&+ 8:B/-Q2YH}7MdAU$ '$Pq#>7"V!OQO"'.7>'&54>76  %P&M&*? (7+%#!7''?!+"&# $  c  }<. eJ7%>54&5&'&+>76676"+6&##Z)=(H 6 Z:M+'T(9 82,5'$ S^`  W +:W .*i#/84 &3 8$ip {!+A3#7&'&'&67672676>7>5&'&'&PFf5PB3)8{3! A8OkdK&@'"6"2  Q  )haO7^<# Mh@'3>v*; -_4,j0*66)"9 , C3>7>;#/#5&'Z (e; TZ  UY7*i? " h ^R<32>767>7676;##7&'&?656'˜Pb W# %> $<+8D2J'" D  *+37 7 ?.- =2*; 4Ni2Q D=)97 ,47.'&7>7#>76'.'&#"+70 @i?b)>/ 2*Y.  2]O!K/>v&25 G+yJF !,L/(gA G`A 2"&7>76&7>3#    VNA!!!fJA M6'&7>76'&7>>54&5&'&+>76676"+6&##8 8 )=(H 6 Z:M+'T(9 82,5'$ @$ #$ #S^`  W +:W .*i#/84 &3 8$ip P58N?3&'&67>?3767632;&'&'>54&5&'&7>7# 5)i  @i :8;J F5D!   4-57)#('(< 8n #I?3"&#&6767.'&6767.'&7>.'.676 5&k&  7%Gh,,*&ZI7$  30<C $6C; "'4  .  F!-J$ @"!"* ($ d K?3>32'.67676&'&'.>7>7654'&7>. 5I2 . e  & f+  #  W&c"""+ Be".) 52IJP!-5:<9 4G&% ,+-J]?3'&7>;7> 5&k,K >7?  4*$#K&   |G?3#7#"&767676&7>&63'.>'&6766767654&f 5*   4G$ z51 !  " Ou1dJ8!SQd23  =?v$LA?3767632;&'&'>54&5&'&7>7_ @i :8;J F5D!   4-57)#('(< R #7>&2676&'&67>'.'75"&7635'9+ $2' T\] D TI*CG+J &? 7j)8,  " ( %C 6Q$JB+3JN$ 7)'1 6$ *|Kc $)- !d(W:>766?>32#"'&54?>56546&'&d0,#-#  $69 #06 < -  R@ ^Z# -$2>! !?w5 #226 #  /i\ P 0>&'.7>76&/&'&'.7>766&'&7> "( A%$$V  k' S6  -Ea5F= T<'%1r )&%+50+%7; I(9% [/(RD#vLAj.C kX/E_>@$"&#&6767.'&6767.'&7>.'.676&  7%Gh,,*&ZI7$  30<C $6C; "'  .  F!-J$ @"!"* ($ Sh1I656&'*&'.>7>7"&7>327>2&4676 JR: < CB:  7~ ,I(0 25D M'#[Y>)O$@8+L   Q  32 $dC>32'.67676&'&'.>7>7654'&7>2 . e  & f+  #  W&"""+ Be".) 52IJP!-5:<9 4G&% ,+-2X:H.'&67>'&'&?4654'&#>767>7464'&'&9L"6#H&#   +8h7%X%  N& %\   O%#   !? ;I;#/) TU, + .wT+   MU+:u;#!;7>K >7?  k*$#K&   )B:7&'&>7>7676767>/&2'.  1  *  0FQ%Fm ;"  +'0+   6Dh6#"! -j6D?# `.h    j37>?6?67>/.&'&67>2.'4&'*U30 %&  8F *!%h1=UQ DP % *.C1/J)!* BHK7'&76763227>?>367>7;'&'&'&'~,$A (-  (    #2+A( K@+uG# &8X]+##*)3S<.  (Ij%!  2 -   ~'>54&5&'.7>676'4.67>W ()!V $ i ' j  ,>vM]_ _bOh0P7467&'&7"&767623>767>722'&67>7>'..'&OgK"U1, % g_ #/| 4<= $#WL CD@  ?  U:F K&Fb&%  "  +O 9\.B  ,Z #   =*R>&7>6'&7>9^D Zgje(0J:TdD9N De.Y}_Em;)-k763!#"67>7;&'&K&` D $ & , 4%AW  2 076q) 9  %L!$ K([I-   $3 .7"'&767>7>'&%6&'&6y# $ $?4 "2+a1 "#&!5M1.7w)MC)BSgC/N$F5 VP:7%&C ^82EeL,63#"'&67626'&#"'&4>`e /`n %_ M' > KU*7 % k:4 +0  (  6&nn`Qv!'.676763!6'.76$4N5>::>G'!L';W 4-Uc(v.bOYlw+. NI7" [<63a-#"#.7>763!#">7>7;&'&766  - "2<*/ d K  D AW|'&63'.>'&6766767654&   4G$ z51 ! Ou1dJ8!SQd23  =?v$LA767>'&6767>7>'&'M!3 *13. %B;"X6*!/.']0R = -%'cV)3) #!Dz+ 2 );3N  &J>+AN sv^76?>'&'&'.7>?36'&'# C, &7) =!,  N"8W9  +s3%*2  8Z\I%>7>7>>76.5&673'&5>?67.'&7676  J ] Ej     vN  %  "O54VK!<UD]6CQL5}C"6!3ZYOv)`"  ,s'6%b@#* d%AB7>76&54>76327>'&'573'.''.>76i)$ !: 9MG;9)#b2 /';}( M= 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5:rr .2"&7>76&7>'&7>;7>u   UK >7?  r"!!!*$#K&   |r ?6"&7>76"&7>&63'.>'&6766767654&     4G$ z51 !q!!$! Ou1dJ8!SQd23  =?v$LA&7>6'&7>- 5&kC9^D Zgje(0J:TdD9N49 De.Y}_Em;)-k'&6766767654&7y   4G$ z51 !L Ou1dJ8!SQd23  =?v$LA76&54>76327>'&'573'.''.>76r7i)$ !: 9MG;9)#b2 /';}( M= 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5A#fs"&'&676&'&5373#7>76&54>76327>'&'573'.''.>763'.> 6 -8 #  28# =i)$ !: 9MG;9)#b2 /';}( M=N ,  #B  $ 8 2aa9FV'+((M ?OP>C;A6-/ 4*46,LQj5c)  : v( -[   ^  P   9 lConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fcsropgjlm_fcsropgRegularRegularFontForge 2.0 : jlm_fcsropg : 30-12-2009FontForge 2.0 : jlm_fcsropg : 30-12-2009jlm_fcsropgjlm_fcsropgVersion 001.001 Version 001.001 jlm_fcsropgjlm_fcsropg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkernN1l     l 2@JP@^lv@@  uu    uu YY  {{uu   YY  uuuu , !"#$&()*+,-./134cdegvwxyz|~1 <=>@BCDEFcdeg>aHaS+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmripg.ttf0000644000175000017500000017702012275735442031502 0ustar sylvestresylvestrepFFTMS(GDEF)GPOSXZh$ GSUBge OS/2V xVcmaps gaspglyf[<Ӡhead6hhea%4$hmtxEX:locahmaxpX name>post٨ylA_< aS+aS+$BBZA$d@!1PfEd  8ZB3MABABABAB o!e& "M?h3Mo~MM{+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y6666666?????????8?+YKtttttttttttttttttttgTtZZZZZZhhhhhS{hhhhhhKKKKKKKKKKKKKKKKKKK@@ttZ? %q"A0"c:" i ! &"2 "#: Mi+Y6t?h+YdY6Itz?LrCZ9Q@]\whG_+iK?hZhKK,, p\@ uz'7EWgprtvxz|  tz 0@P`prtvxz| Pt%ZZV`dr|Qa ^`Rn _"#'%&$)(67;9:8LPNOMTS=<A?@>CBdhfgeklrpqmtsxy}{|z~-.201/43X\Z[Yb]+G*!, VIUKW EjHw } ttQuuazz ^`Rn _"'%$)(6;98  L!!""P#$N%%M&&T''S00=11<22A34?55>66C77B@@dAABBhCDfEEePQkRRrSTpUUmVVtWWs`axbb}cd{eezffgg~pp rr5ttJvvDxxczzi||v-20/43X\ZYb]+G*!,  VIUKW FEujoHw  DGDz0h$`N||L~  b  ^ * V DXXX$|.DT*  !!!"@"#:#$X$%b%&'D'(())*v++,j- -./0T1*1x12@2d3B334t45n56\67v88899:R:;&>?h@&@AB\C"CDEHF FGHvHIpJZK@KLVLMMNrNOZOOPbPQLQQRRSbST:T|TUnUUVVVWbWXYYZZ[[[\\]R]^(^__d_`(`aaab`bccvcd dpdeNefDfggghfhiB!$!#!'#6#!"&76!Q g  ; H 5_05UZ -W 1    pB`!#!'#7"36765&#?37"3/>7>?#"3'6763>74>&'&#Q g  ;G`% 3'p- X! ?;  ) $ ^I U&UZ -W 2)   a  %" B>   Bj!#!'#?33?6?67#3/72676.'#/72>?6?5'.Q g  ;2 H- 1 F Ql :,^   )%X_! 1   $GA66'1UZ -W   0? U" 0s 3^$  Q1?  B/&By!#!'#."#73;267676;"3#'6763>7>7#'.747#3/674>7>76776Q g  ;- B  $b, X!0z R T  ,7   QUZ -W  9(ciG a  "31 9(F    (-o'?%!"'&5467>;263!#6'.#36&'.7>76f]%Mg!?4$, %  %$'k -)$/27P'B)5 a!93 o912U& hx!R74;263>7464'.#7!#4>4&'.+*>7>;#>4'.+3&&#"&"#'  ' &% %   3,%J  E0G1! G,2C +(S "_J / '(!  "    +   e[&6<&'.>323!>;276?676&'&32637'#=&0Gm:I48`X P<  $5EA8  ;p29 :)]`M04@^Ae+ 4i   :_8CZTI_1,yb&PSV7>326?>&/.'#3'73267654&'&676323#'#>32>&'./.'3/?7 _  5Q %)2AV*5   (o + 8 9r!NQ    X" *d#>3>?>5&#?37#63#'   ()i  () 2r $   2r $   -.2K3/7276&'.'#"3'72>77>3#667>&'&67>:.%0psG:!"]V&(:X   *' ( \_0 7E J  $&"-j?+"#!:>?6&'?+"#3'>;263>?67!"3'>;263>76776&#667>&'&67>r~6 >  1 +s}6  i -r~6 ( ,- Rr~6  l!B  *'   *  @ w% !<,     @   G J  $&M-Ri%4.'&>3:6>7>;+"'&67>74'&+?33667>&'&676*6qj]v V#H # )U4/<2rj!      *' B/bf*_\gDcf;   "L  ]'tOr0Z( @/&SEE/P+G0 '  n J  $&@B&2#.'&#&54?672>36&7>76&7>B;?' 'Y F)  30 9.9Y D+ ?(3Q#".#&5467672>76&7>76&7>367>762'"'.6?6:@"$. B( #K9  073 9. . < " #N$ +,R2 ,h['3n#.'&#&547>726?6&7>76&7>267676/&'&6&'&76?6'4'.&7>[;?' &Z  1  2  8#!&   3?7;#>   " G9.9Z    #'"P.2 .Oo>"Y?7#- =Y2 >9T?>?>""& p  ?O    &/&5>!8 q g>767>36'.&'5; +/  49 -?  4?(  3@.  -x667>&'&676%  *' , J  $&@'&676".7>767>'&F O XC  .   * "+<+ G2#&'&7>&'&+ "( D&J ,%)&,3! * ->?>76'2#&'&7>&'&# 6 ' j7+ "( D&J ,u#   %)&,3! * ~ )&/&6762#&'&7>&'&  + "( D&J ,E4$%)&,3! * 0>?>76''&54676"'&6763267>&# 6 ' j3 # H UE =u#     !)=, ,&/&676'&54676"'&6763267>&   # H UE =E4$  !)=, 7#".#&5467672>72#"'&67>2'& :@"$. B(   + 02 " 9. . < " (''  9'#"'&6?676&'&676325.'&#&5467672>7 E;8  1   : B( B&2! " ,1 < " {(6?>76'6&7>76&7>7 & jS x    PY ?Q./&7>76&'&67>676267636&?6.'&676 ; 37eSI8>  & *  (- 9(,5" >13 ;5 S'^l4 4EV00A )UX$. " [/7>R$0>7 0YEgN`>767>36'.&'&'&67>676267636&?6.'&6765; /  5; *(  37eSI8>  & *  (- 9(,5" >13 ;54$(  4?  R4 4EV00A )UX$. " [/7>R$0>7 0Y L^'&676".7>767>'&&'&67>676267636&?6.'&676 O XC  .  37eSI8>  & *  (- 9(,5" >13 ;5  * "+<+ 4 4EV00A )UX$. " [/7>R$0>7 0Y K]2#&'&7>&'&&'&67>676267636&?6.'&676+ "( D&J ," 37eSI8>  & *  (- 9(,5" >13 ;5%)&,3! * 4 4EV00A )UX$. " [/7>R$0>7 0Y7/^p6?>7>'2#&'&7>&'&&'&67>676267636&?6.'&6767  % G'<+ "( D&J , 37eSI8>  & *  (- 9(,5" >13 ;5 y V. %)&,3! * 4 4EV00A )UX$. " [/7>R$0>7 0Y  )Xj.'&5>'2#&'&7>&'&&'&67>676267636&?6.'&676%7 + "( D&J , 37eSI8>  & *  (- 9(,5" >13 ;5z ^M%)&,3! * 4 4EV00A )UX$. " [/7>R$0>7 0Y72as6?>7>''&54676"'&6763267>&&'&67>676267636&?6.'&6767  % G'8 # H UE = 37eSI8>  & *  (- 9(,5" >13 ;5 y V.   !)=,4 4EV00A )UX$. " [/7>R$0>7 0Y  ,[m.'&5>''&54676"'&6763267>&&'&67>676267636&?6.'&676%7  # H UE = 37eSI8>  & *  (- 9(,5" >13 ;5z ^M  !)=,4 4EV00A )UX$. " [/7>R$0>7 0Yb3bt'"&'&#&547>72>72#"'&67>2'&&'&67>676267636&?6.'&676b=>('Y  1'$11   + 02 "  37eSI8>  & *  (- 9(,5" >13 ;5:-9Y  @+ ('' 4 4EV00A )UX$. " [/7>R$0>7 0Yb5dv'#"'&6?676&'&676325.'&#&547>72>7&'&67>676267636&?6.'&676bD<8  1   (W  1'$11 37eSI8>  & *  (- 9(,5" >13 ;5B&2! " ,W  @+ 4 4EV00A )UX$. " [/7>R$0>7 0Y- =Of6?>76&'&67>676267636&?6.'&676667>&'&676d! O) 37eSI8>  & *  (- 9(,5" >13 ;5*  *' %H:%`1q4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y- ?Qh./&7>76&'&67>676267636&?6.'&676667>&'&676 ; 37eSI8>  & *  (- 9(,5" >13 ;5*  *'  S'^l4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-EgN`w>767>36'.&'&'&67>676267636&?6.'&676667>&'&6765; /  5; *(  37eSI8>  & *  (- 9(,5" >13 ;5*  *' 4$(  4?  R4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y- L^u'&676".7>767>'&&'&67>676267636&?6.'&676667>&'&676 O XC  .  37eSI8>  & *  (- 9(,5" >13 ;5*  *'   * "+<+ 4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y- K]t2#&'&7>&'&&'&67>676267636&?6.'&676667>&'&676+ "( D&J ," 37eSI8>  & *  (- 9(,5" >13 ;5*  *' %)&,3! * 4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-7/^p6?>7>'2#&'&7>&'&&'&67>676267636&?6.'&676667>&'&6767  % G'<+ "( D&J , 37eSI8>  & *  (- 9(,5" >13 ;5*  *'  y V. %)&,3! * 4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-  )Xj.'&5>'2#&'&7>&'&&'&67>676267636&?6.'&676667>&'&676%7 + "( D&J , 37eSI8>  & *  (- 9(,5" >13 ;5*  *' z ^M%)&,3! * 4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-72as6?>7>''&54676"'&6763267>&&'&67>676267636&?6.'&676667>&'&6767  % G'8 # H UE = 37eSI8>  & *  (- 9(,5" >13 ;5*  *'  y V.   !)=,4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-  ,[m.'&5>''&54676"'&6763267>&&'&67>676267636&?6.'&676667>&'&676%7  # H UE = 37eSI8>  & *  (- 9(,5" >13 ;5*  *' z ^M  !)=,4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-b3bt'"&'&#&547>72>72#"'&67>2'&&'&67>676267636&?6.'&676667>&'&676b=>('Y  1'$11   + 02 "  37eSI8>  & *  (- 9(,5" >13 ;5*  *' :-9Y  @+ ('' 4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@Y-b5dv'#"'&6?676&'&676325.'&#&547>72>7&'&67>676267636&?6.'&676667>&'&676bD<8  1   (W  1'$11 37eSI8>  & *  (- 9(,5" >13 ;5*  *' B&2! " ,W  @+ 4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@6R&/.7676.'&676'&5&656'&2>.767>76'.67>P  % 6 ^c%:  &"E:.5 *&R JE(,n5(&(S " ',h    . 7"#,   Z3%3 &D *>16`'&676".7>767>'&.'&676'&5&656'&2>.767>76'.67>b O XC  . 6 ^c%:  &"E:.5 *&R JE(,n5(&  * "+<+ \,h    . 7"#,   Z3%3 &D *>16_2#&'&7>&'&.'&676'&5&656'&2>.767>76'.67>J+ "( D&J ,6 ^c%:  &"E:.5 *&R JE(,n5(&%)&,3! * ],h    . 7"#,   Z3%3 &D *>16/r>?>76'2#&'&7>&'&.'&676'&5&656'&2>.767>76'.67>Z #i 5+ "( D&J ,b6 ^c%:  &"E:.5 *&R JE(,n5(&? ?#  %)&,3! * ],h    . 7"#,   Z3%3 &D *>16,o.'.7676'2#&'&7>&'&.'&676'&5&656'&2>.767>76'.67> &+ "( D&J ,J6 ^c%:  &"E:.5 *&R JE(,n5(& S " 'u %)&,3! * ],h    . 7"#,   Z3%3 &D *>162u>?>76''&54676"'&6763267>&.'&676'&5&656'&2>.767>76'.67>Z #i 2 # H UE =t6 ^c%:  &"E:.5 *&R JE(,n5(&? ?#    !)=,V,h    . 7"#,   Z3%3 &D *>16/r.'.7676''&54676"'&6763267>&.'&676'&5&656'&2>.767>76'.67> & # H UE =w6 ^c%:  &"E:.5 *&R JE(,n5(& S " 'u   !)=,V,h    . 7"#,   Z3%3 &D *>1?;:2#&'&7>&'&367>762'"'.6?6+ "( D&J ,LK9  073 %)&,3! * N$ +,R2 ,?e;'&676".7>767>'&367>762'"'.6?6 O XC  . K9  073   * "+<+ N$ +,R2 ,?+I6?>76'2#&'&7>&'&367>762'"'.6?6! O)<+ "( D&J , K9  073 %H:%`1%)&,3! * N$ +,R2 ,?`,J.5&7>'2#&'&7>&'&367>762'"'.6?6B,5+ "( D&J , K9  073 $U5 %)&,3! * N$ +,R2 ,?.L6?>76''&54676"'&6763267>&367>762'"'.6?6! O)8 # H UE =3K9  073 %H:%`1  !)=,N$ +,R2 ,?`/M.5&7>''&54676"'&6763267>&367>762'"'.6?6B,5 # H UE =6K9  073 $U5   !)=,N$ +,R2 ,?8V#".#&5467672>72#"'&67>32'&367>762'"'.6?6:@"$. B(   + 1 " 3K9  073 9. . < " ('' N$ +,R2 ,?9W'#"'&6?676&'&676325.'&#&5467672>7367>762'"'.6?6E;8  1   : B( K9  073 B&2! " ,1 < " N$ +,R2 ,? +&/&7>367>762'"'.6?6  7eK9  073  1JN$ +,R2 ,8g;>767>36'.&'367>762'"'.6?685; +/  49 -?  dK9  073 4?(  3@.  QN$ +,R2 ,?| %C&/&7>6&7>76&7>367>762'"'.6?6  7K9  073  1J}N$ +,R2 ,Y- .@W%&'&67>676267636&?6.'&676667>&'&676a 37eSI8>  & *  (- 9(,5" >13 ;5*  *' R4 4EV00A )UX$. " [/7>R$0>7 0 J  $&@K-Kb%'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676iK'A1>&dC C_ >+   ,#-)))/JMG/  *' k K />vHq\b" `;r./ :@s  #+uP*?= J  $&@t*(@W>76&54?>'.#"&54>7654'.'&>667>&'&676>K*KM 6 *+# *  (  *>'  *' KE D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*( N&/&5>>76&54?>'.#"&54>7654'.'&>!8dK*KM 6 *+# *  (  *>' q E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*=h a>76?>'.&'>76&54?>'.#"&54>7654'.'&>,)*   /4;   =  fK*KM 6 *+# *  (  *>''!(3 -  E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*(^'&676".7>767>'&>76&54?>'.#"&54>7654'.'&> O XC  . K*KM 6 *+# *  (  *>'  * "+<+ E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*..o6?67>'2#&'&7>&'&>76&54?>'.#"&54>7654'.'&>! # M <+ "( D&J ,K*KM 6 *+# *  (  *>'H."   ^%)&,3! * E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*( *k&/&5>'2#&'&7>&'&>76&54?>'.#"&54>7654'.'&>  6+ "( D&J ,K*KM 6 *+# *  (  *>'(Q' %)&,3! * E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*.1r6?67>''&54676"'&6763267>&>76&54?>'.#"&54>7654'.'&>! # M 8 # H UE =2K*KM 6 *+# *  (  *>'H."   ^  !)=,E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*( -n&/&5>''&54676"'&6763267>&>76&54?>'.#"&54>7654'.'&>  6 # H UE =5K*KM 6 *+# *  (  *>'(Q'   !)=,E D.͌  Q;ZJ /(HCz6 ,X% #  -- ES6?>76" "j I@"  1'&67>7>763!#!"!2# 8   n $+    $"| % 2 32 5 /N  t*Z6w#.'&#&547>726?2#"'&67>2'&>76&54?>'.#"&54>7654'.'&>Z;@' &Z  1  2   + 02 " 2K*KM 6 *+# *  (  *>'9.9Z   ('' E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*Z9;|'#"'&6?676&'&'&676.'&#&547>726?'>76&54?>'.#"&54>7654'.'&>Z.C8      'W  1  2 vK*KM 6 *+# *  (  *>'0)2! "   )W   cE D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*(Ri6?>76>76&54?>'.#"&54>7654'.'&>667>&'&676\ 6 # i&K*KM 6 *+# *  (  *>'  *'  v#  E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*( Ne&/&5>>76&54?>'.#"&54>7654'.'&>667>&'&676!8dK*KM 6 *+# *  (  *>'  *'  q E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*=h ax>76?>'.&'>76&54?>'.#"&54>7654'.'&>667>&'&676,)*   /4;   =  fK*KM 6 *+# *  (  *>'  *' '!(3 -  E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*(^u'&676".7>767>'&>76&54?>'.#"&54>7654'.'&>667>&'&676 O XC  . K*KM 6 *+# *  (  *>'  *'   * "+<+ E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*..o6?67>'2#&'&7>&'&>76&54?>'.#"&54>7654'.'&>667>&'&676! # M <+ "( D&J ,K*KM 6 *+# *  (  *>'  *' H."   ^%)&,3! * E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*( *k&/&5>'2#&'&7>&'&>76&54?>'.#"&54>7654'.'&>667>&'&676  6+ "( D&J ,K*KM 6 *+# *  (  *>'  *' (Q' %)&,3! * E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*.1r6?67>''&54676"'&6763267>&>76&54?>'.#"&54>7654'.'&>667>&'&676! # M 8 # H UE =2K*KM 6 *+# *  (  *>'  *' H."   ^  !)=,E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*( -n&/&5>''&54676"'&6763267>&>76&54?>'.#"&54>7654'.'&>667>&'&676  6 # H UE =5K*KM 6 *+# *  (  *>'  *' (Q'   !)=,E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@t*Z6w#.'&#&547>726?2#"'&67>2'&>76&54?>'.#"&54>7654'.'&>667>&'&676Z;@' &Z  1  2   + 02 " 2K*KM 6 *+# *  (  *>'  *' 9.9Z   ('' E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@g'/"'.6762#"'&67>6'&67>"!2?@HO*!%K8:4 , ( .!?27*!>42 "5:Z1Bx&(%I$2 $ bMO$)9J!/@&'.#"'&672'.>76'&5&'&>?>&'.''&4?%0s+FxPB" X= ! , % % #2D6 +{ `  q&. n   gTJB6+"&"32+"'.76;276'.+".'.>767676;26/ =7,36%, &"d`/b  P%2 ,,H"$3@f ,O14 B  #[*=   ,6$F*\(76"&76?6a  )u   &&n t*Z9;|'#"'&6?676&'&'&676.'&#&547>726?'>76&54?>'.#"&54>7654'.'&>667>&'&676Z.C8      'W  1  2 vK*KM 6 *+# *  (  *>'  *' 0)2! "   )W   cE D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@Z -&'&7>766'.767>6'&6z!  6,%/" Y2g":;  w / ?36IFyi/ |% ,f9qN, mM"&GeK&,=g Z /<'&676".7>767>'&6'.767>6'&6 O XC  . ,%/" Y2g":;  w / ?36IFy  * "+<+ f9qN, mM"&GeK&,=g Z%-?L>?>76'2#&'&7>&'&6'.767>6'&6 6 ' j7+ "( D&J ,,%/" Y2g":;  w / ?36IFyu#   %)&,3! * f9qN, mM"&GeK&,=g Z );H&/&6762#&'&7>&'&6'.767>6'&6  + "( D&J ,,%/" Y2g":;  w / ?36IFyE4$%)&,3! * f9qN, mM"&GeK&,=g Z%0BO>?>76''&54676"'&6763267>&6'.767>6'&6 6 ' j3 # H UE =,%/" Y2g":;  w / ?36IFyu#     !)=,f9qN, mM"&GeK&,=g Z ,>K&/&676'&54676"'&6763267>&6'.767>6'&6   # H UE =,%/" Y2g":;  w / ?36IFyE4$  !)=,f9qN, mM"&GeK&,=g h H&/&5>267676/&'&6&'&76?6'4'.&7> 6  8#!&   3?7;#>   " GT' , #'"P.2 .Oo>"Y?7#- =Y2 >9Th>h [>76?>'.&'267676/&'&6&'&76?6'4'.&7>,)*   /4;   =   8#!&   3?7;#>   " G'!(3 -  F #'"P.2 .Oo>"Y?7#- =Y2 >9ThX'&676".7>767>'&267676/&'&6&'&76?6'4'.&7> O XC  .  8#!&   3?7;#>   " G  * "+<+  #'"P.2 .Oo>"Y?7#- =Y2 >9ThW2#&'&7>&'&267676/&'&6&'&76?6'4'.&7>~+ "( D&J , 8#!&   3?7;#>   " G%)&,3! *  #'"P.2 .Oo>"Y?7#- =Y2 >9Th//j6?>7>'2#&'&7>&'&267676/&'&6&'&76?6'4'.&7>7  # M <+ "( D&J ,o 8#!&   3?7;#>   " Gy   ^%)&,3! *  #'"P.2 .Oo>"Y?7#- =Y2 >9TS- 337#!672<# `6 2`{&&'&7>76'6&7>76&7>!  i/ |% Lh )d&/&5>'2#&'&7>&'&267676/&'&6&'&76?6'4'.&7> !6+ "( D&J ,X 8#!&   3?7;#>   " G(p %)&,3! *  #'"P.2 .Oo>"Y?7#- =Y2 >9Th/2m6?>7>''&54676"'&6763267>&267676/&'&6&'&76?6'4'.&7>7  # M 8 # H UE = 8#!&   3?7;#>   " Gy   ^  !)=, #'"P.2 .Oo>"Y?7#- =Y2 >9Th ,g&/&5>''&54676"'&6763267>&267676/&'&6&'&76?6'4'.&7> !6 # H UE = 8#!&   3?7;#>   " G(p   !)=, #'"P.2 .Oo>"Y?7#- =Y2 >9Th[7r#.'&#&547>726?2#"'&67>32'&267676/&'&6&'&76?6'4'.&7>[;?' &Z  1  2   + 1 "  8#!&   3?7;#>   " G9.9Z   ('' } #'"P.2 .Oo>"Y?7#- =Y2 >9Th[9;v'#"'&6?676&'&'&676.'&#&547>726?'267676/&'&6&'&76?6'4'.&7>[,B8      'W  1  2  8#!&   3?7;#>   " G/(2! "   )W   c #'"P.2 .Oo>"Y?7#- =Y2 >9Th!(c.'&5>'6&7>76&7>267676/&'&6&'&76?6'4'.&7>&6  8#!&   3?7;#>   " G   sU #'"P.2 .Oo>"Y?7#- =Y2 >9TK[&/.7676'&7>76>7>&7>7>;67>'.'4&'.'  % K'A1>&dC C_ >+   ,#-)))/JMG(S " ' K />vHq\b" `;r./ :@s  #+uP*?=Kgk>27676.&''&7>76>7>&7>7>;67>'.'4&'.'  C%B -! 6+%B  UK'A1>&dC C_ >+   ,#-)))/JMG  >7  +  7  k K />vHq\b" `;r./ :@s  #+uP*?=Ki'&676".7>767>'&'&7>76>7>&7>7>;67>'.'4&'.'% O XC  . K'A1>&dC C_ >+   ,#-)))/JMG  * "+<+ K />vHq\b" `;r./ :@s  #+uP*?=Kh2#&'&7>&'&'&7>76>7>&7>7>;67>'.'4&'.'+ "( D&J ,jK'A1>&dC C_ >+   ,#-)))/JMG%)&,3! *  K />vHq\b" `;r./ :@s  #+uP*?=K/{>?>76'2#&'&7>&'&'&7>76>7>&7>7>;67>'.'4&'.' #i 5+ "( D&J ,LK'A1>&dC C_ >+   ,#-)))/JMG? ?#  %)&,3! *  K />vHq\b" `;r./ :@s  #+uP*?=K,x.'.7676'2#&'&7>&'&'&7>76>7>&7>7>;67>'.'4&'.': &+ "( D&J ,4K'A1>&dC C_ >+   ,#-)))/JMG S " 'u %)&,3! *  K />vHq\b" `;r./ :@s  #+uP*?=K2~>?>76''&54676"'&6763267>&'&7>76>7>&7>7>;67>'.'4&'.' #i 2 # H UE =^K'A1>&dC C_ >+   ,#-)))/JMG? ?#    !)=, K />vHq\b" `;r./ :@s  #+uP*?=K/{.'.7676''&54676"'&6763267>&'&7>76>7>&7>7>;67>'.'4&'.': & # H UE =aK'A1>&dC C_ >+   ,#-)))/JMG S " 'u   !)=, K />vHq\b" `;r./ :@s  #+uP*?=K9#"&'&#&54?6367>72#"'&67>32'&'&7>76>7>&7>7>;67>'.'4&'.' "!&A7[ N*(.$   + 1 " ^K'A1>&dC C_ >+   ,#-)))/JMG :[ J  ('' 4 K />vHq\b" `;r./ :@s  #+uP*?=K7#"&'&#&54?6367>7#"&6?676&''&676'&7>76>7>&7>7>;67>'.'4&'.' "!&A7[ N*(.$ ,#  / =K'A1>&dC C_ >+   ,#-)))/JMG :[ J  # " !2 K />vHq\b" `;r./ :@s  #+uP*?=K-[r&/.7676'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676  % K'A1>&dC C_ >+   ,#-)))/JMG/  *' (S " ' K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-\s6?676'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676% $i QK'A1>&dC C_ >+   ,#-)))/JMG/  *'  P@-    K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-gk>27676.&''&7>76>7>&7>7>;67>'.'4&'.'667>&'&676  C%B -! 6+%B  UK'A1>&dC C_ >+   ,#-)))/JMG/  *'   >7  +  7  k K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-i'&676".7>767>'&'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676% O XC  . K'A1>&dC C_ >+   ,#-)))/JMG/  *'   * "+<+ K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-h2#&'&7>&'&'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676+ "( D&J ,jK'A1>&dC C_ >+   ,#-)))/JMG/  *' %)&,3! *  K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-/{>?>76'2#&'&7>&'&'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676 #i 5+ "( D&J ,LK'A1>&dC C_ >+   ,#-)))/JMG/  *' ? ?#  %)&,3! *  K />vHq\b" `;r./ :@s  #+uP*?= J  $&@E' 6&7>    K-/{.'.7676''&54676"'&6763267>&'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676: & # H UE =aK'A1>&dC C_ >+   ,#-)))/JMG/  *'  S " 'u   !)=, K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-9#"&'&#&54?6367>72#"'&67>32'&'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676 "!&A7[ N*(.$   + 1 " ^K'A1>&dC C_ >+   ,#-)))/JMG/  *'  :[ J  ('' 4 K />vHq\b" `;r./ :@s  #+uP*?= J  $&@K-7#"&'&#&54?6367>7#"&6?676&''&676'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676 "!&A7[ N*(.$ ,#  / =K'A1>&dC C_ >+   ,#-)))/JMG/  *'  :[ J  # " !2 K />vHq\b" `;r./ :@s  #+uP*?= J  $&@@, FX'&676".7>767>'&;2&'&#"&'&7>7>'&%>&'.676 O XC  . :.5E   <&9237&*+`R' ;B?P   B#  * "+<+ l 6  UAM'($UV8fI<Y,^e:>EZR@,EW2#&'&7>&'&;2&'&#"&'&7>7>'&%>&'.676s+ "( D&J ,:.5E   <&9237&*+`R' ;B?P   B#%)&,3! *  l 6  UAM'($UV8fI<Y,^e:>EZRt*(]2#&'&7>&'&>76&54?>'.#"&54>7654'.'&>}+ "( D&J ,=K*KM 6 *+# *  (  *>'%)&,3! * E D.͌  Q;ZJ /(HCz6 ,X% #  -- Et*(]t2#&'&7>&'&>76&54?>'.#"&54>7654'.'&>667>&'&676}+ "( D&J ,=K*KM 6 *+# *  (  *>'  *' %)&,3! * E D.͌  Q;ZJ /(HCz6 ,X% #  -- Eq J  $&@Z.;2#&'&7>&'&6'.767>6'&6s+ "( D&J ,,%/" Y2g":;  w / ?36IFy%)&,3! * f9qN, mM"&GeK&,=g ?|)G4?>76'6&7>76&7>367>762'"'.6?6( $ TWK9  073 Y@# e$ON$ +,R2 , 043/7276&'.'#"3'72>77>3#:.%0psG:!"\W&(:X ( \_0 7E%7Pf%"&#"#>;263>76776H326322&3>7>&'.#">'.+";2TGCNK  l!BKN ?G<9L,V :>2,749:4n &$'  C> +,D   4#x-  @   #S%@ 2#1d# n   /4E@JM0":?!#65.'&+"3/>;263>767746&'.#tY%  !0A7*F3n  N&% [    @ !f 0%#!"&>7>76%!'C  v#sv   y #9" X??!#>&'.'">73#654'&+"33667>?6;!'>;263>7676'." ^M$A  ^U = 5L5" B -G F,>^Y"+ f Nl6  g &2C Aa%21(, J !   }F## :16?63!232>7673#!"'&767#"#" &2?>'?+"#3'>;263>?67!"3'>;263>76776&#r~6 >(  Rr~6  i -r~6 ( ,- Rr~6  l!B   ,   @ w% !<,     @   ;&:>&'&7>6'.'&67>?3!?3#7#8PS"4"xVs@l-u :&\.;kF`1Qbl #   1Mb8G@lz;$$6+!X"8f "  " )?+"#3'>;26367676&'&#w8 5 i /w8 5 i / sw# s#!a74;263>776?+"#6?>76567#3/>6'&/3''  ' !Bs}7  ) )] fm%=)*vB e#,*fq B Vc   '+s}7 /  %) 9 F     Z2.$;K !H@ 7%45#3'>367>323#'#>3>'4&""[Q"<#b  ">T(7-l %k  5X cb' &$[7>327>76'."#73?3+"#3'>;263>767#'&'&'&5#3'& K f >p  i -py5 ('  + #CQ]`0;#|#-2  @ w% #<%"?ym,!xx*"EI676'&'#7?"#"&'.'#3'>3267>76'&+K e  >[b,!!U   $bA\a, 8  M) #x"  65$#F) 2+H4.#&#"&#!""#7!#>3!73#7!&+?333;27267>; . 1,! R )! F6& '  C   &333  O ! z ;%>&'&7>6&'&327>8PS"4"xVs@l-s25Xp3&.GJ=q  1Mb8G@lz[*FWUuP(5-"Q7!37"3'>;263>?6?>7!3'>;263>767746&'.#7_."()t8( S -r~6 ( C )k -r~6  N&%  "AJ# #60` -&o  @ !f #5O23263:+3'>;263>76776&#32>7676&'.&JO ;E" --DZB|1  +s}6  l!BjS%) &! 0K  )3g$8/  @    22O 9ds"'&5&676'&>76Z6 & J% Ga'@<^ G:52%#!"'&67>'.7623!#6&'.+327676763+  /v ) W\ 3O, 2p). ^> $q OG3?3#654'&'&#"3&#&#"&#72>76767>&'&#&#"+OJ$% #L0  .Q )l/.& M$ ("+8 R      0  9B bE%3'>;26?>'4/.'.'7">?65&#?37"@q|67  ?#/pt(& ' !%0)PI[9,=  9X . &= ),L ^cq7>;26767.'&5>76726?6'."#>732?+"223&&#"&7267>76.' <& Fs?65.#7?"3/72676/&53#/>67>76&/.#/pt !%$+ $" e`* 9,p >/pu/D$!1WQ T7 V B (\(&. &" % # 5!$7 2c747633237+"#">7>7>73223#&#"&#>;2>7&'&7>&'.'&67326767>'.'W~   U@_   'JM<  ('W~ "  Y)+ + (" *_-  ,V eDT$ *0W9U+)   , >>h8#,  Cm  d2 MR%4.'&>3:6>7>;+"'&67>74'&+?33*6qj]v V#H # )U4/<2rj!    B/bf*_\gDcf;   "L  ]'tOr0Z( @/&SEE/P+G0 '  B D6"'.7>76&7>?+"#3'>;26367676&'&#0"    w8 5 i /w8 5 i /@"! $ sw# s#bAW>&7>&3'>;26?>'4/.'.'7">?65&#?37"C% C% @q|67  ?#/pt(& ' !%0)PI[9, "G!"G!H  9X . &= ),L Y =O6?>76&'&67>676267636&?6.'&676d! O) 37eSI8>  & *  (- 9(,5" >13 ;5%H:%`1q4 4EV00A )UX$. " [/7>R$0>7 06S6?676.'&676'&5&656'&2>.767>76'.67>(% $i g6 ^c%:  &"E:.5 *&R JE(,n5(& P@-   ,h    . 7"#,   Z3%3 &D *>1t*(R6?>76>76&54?>'.#"&54>7654'.'&>\ 6 # i&K*KM 6 *+# *  (  *>' v#  E D.͌  Q;ZJ /(HCz6 ,X% #  -- E?[/4?>76367>762'"'.6?6( $ T+K9  073 Y@# e$4N$ +,R2 ,h!(c67676'6&7>76&7>267676/&'&6&'&76?6'4'.&7>[F $ p Q 8#!&   3?7;#>   " G2  Y #'"P.2 .Oo>"Y?7#- =Y2 >9TY .@%&'&67>676267636&?6.'&676a 37eSI8>  & *  (- 9(,5" >13 ;5R4 4EV00A )UX$. " [/7>R$0>7 0,A7'&67>7676&>'&7>'&#&7636k7!~.@+*+.^)<&%#, '?Ga"<R&)> k254 G0  N .,*'~+  1Of968GJ"##u,`^.*22A  d'7D%67676'&7>'&4676767>767>'.'&5467>*k %   B?@  "F O ")$ + 2 E%[J43  E7(S95  !, +">G :+) H ;1}Y.?&'&67>'&74>'.'.7>7>>54'.6RM b% 2#B1.7hb0 {O53 #/7.#B%22OA#D %$ 1.& V`W&;*R-n:V{/:? /)P^T 6B7.'&676'&5&656'&2>.767>76'.67>6 ^c%:  &"E:.5 *&R JE(,n5(&,h    . 7"#,   Z3%3 &D *>1IdI.67>7>76#"&;2'.6;263676&'&+"'&761$" L - ;3 &> 24E* )B Le0. * T>O0BD$"% 3  %2Ax$!!W =j  (5'Nt*(@>76&54?>'.#"&54>7654'.'&>>K*KM 6 *+# *  (  *>'KE D.͌  Q;ZJ /(HCz6 ,X% #  -- EzCL`&'.7>'&6'&7>'&'&67632>7>74654'."T"-#",E  ' R7Se    #<  /B$  > #,1n.,+w!J F &%762'"'.6?6K9  073 N$ +,R2 ,LEX%67>7676667>76&'.67+"'&767>7>&'&&7676/ 0@2D&/  ,G= &   #  !\   C :<   G-  <* e+   Z,\?  5/_F/8  R #J9<767>4=4&'&'&67>7667>762&'&=  1   /   wE5     :R֧  ( "&\ "H7#"7676?676;67>?>2;27>76&'&'#'&7{   . [ 7I26  9  50   ;.  =HvY+3J@3FS5' j / C T " ,)%(+ !Hr.2>7>76>76'&&54?>R .-h  %I53A    #e q=Y1 o)R.)3(+yX]/  %)Cec.67>">&#&7>76'&'";2+.76;263676&'&+"'&'&7>7&'&67%" H , 2? V !8$, : 84 1:0@S!# J) jK,1>/) O/#%'4    0.9   7F! W*+ @$ I@/$+3uZ6'.767>6'&6T,%/" Y2g":;  w / ?36IFyf9qN, mM"&GeK&,=g Q}Q&'&767>76676"7>76&'.6?''.76>7> 2"  "$_<:, .! @#  "+/ #A) Dn  5 ,$  9 -~f6 )% Z  @,(:7;2&'&#"&'&7>7>'&%>&'.676e:.5E   <&9237&*+`R' ;B?P   B#W l 6  UAM'($UV8fI<Y,^e:>EZR]~27>'.6#"&7>327>'.&'&`2FSW'")- 2F! OT; AL!   O  h0'@e;   '<;!n *W  &5\E*'&67>32?634&#"67676H5,\-P[$O7^%  #l7".J')EN p]ba .X#   %ZCw?&'&>7>767>2"&#67>76&76?63,&  */G 3"H/ 0  N1/B  /l   &  4  !cF;#?h:267676/&'&6&'&76?6'4'.&7> 8#!&   3?7;#>   " G #'"P.2 .Oo>"Y?7#- =Y2 >9T_!l-@P.'&767>67>'&'&5?6>'&76?67>7>'&0B#@$(]" +xF!    F 5!/L # 48y 7 '!4(X6 $% 1.ENKn -J   +XQ>"RA (W]BHYn+|4!F6?>&5&'&'&676?367>7>'.'<'4/>/D  4,  3 ?/" I  > &eUj  A g )A-$ iXY4>7.'&7>76'4'&&7>326?>67>'.'&676'& ;+  ;*"   +7 85.86Wi,)   /R4&?YU  4 !O=+0*701 L K\ .6?"b9 A+KK%'&7>76>7>&7>7>;67>'.'4&'.'iK'A1>&dC C_ >+   ,#-)))/JMGk K />vHq\b" `;r./ :@s  #+uP*?=?} 56&7>76&7>367>762'"'.6?6 "!( K9  073 |"!# #N$ +,R2 ,h0} R6&7>76&7>267676/&'&6&'&76?6'4'.&7>1 "!    8#!&   3?7;#>   " G|"!"! #'"P.2 .Oo>"Y?7#- =Y2 >9TZ"/6?>766'.767>6'&6R7 & j,%/" Y2g":;  w / ?36IFy x    (f9qN, mM"&GeK&,=g hN>?>76267676/&'&6&'&76?6'4'.&7>] 9 # jv 8#!&   3?7;#>   " G|#  ( #'"P.2 .Oo>"Y?7#- =Y2 >9TK\6?676'&7>76>7>&7>7>;67>'.'4&'.'% $i QK'A1>&dC C_ >+   ,#-)))/JMG P@-    K />vHq\b" `;r./ :@s  #+uP*?=K-,x.'.7676'2#&'&7>&'&'&7>76>7>&7>7>;67>'.'4&'.'667>&'&676: &+ "( D&J ,4K'A1>&dC C_ >+   ,#-)))/JMG/  *'  S " 'u %)&,3! *  K />vHq\b" `;r./ :@s  #+uP*?= J  $&@ v( -[   ^  P   9 lConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fcmripgjlm_fcmripgRegularRegularFontForge 2.0 : jlm_fcmripg : 30-12-2009FontForge 2.0 : jlm_fcmripg : 30-12-2009jlm_fcmripgjlm_fcmripgVersion 001.001 Version 001.001 jlm_fcmripgjlm_fcmripg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkern \~****8888n8888888888n88888~~~~~~~~~<v~\Pbp8~&pv*~P^2z & <~uu_Ycdeg_Y   uu YY ci ci !*+,G_Yij_"cijkmqrst5_Yij_Yijij_"_Y _Yij 5ijDE_Yc {{uu    YY  uuuu 5DE_c8_Y !*+,G_Yij. !*+,5GHIJKUVW_cijvw 5DE__Y !*+,G_Yiju !*+,GH_"cijvw !*+,GH_Ycvw !*+,5G_cij DE_Yc !*+,GH_Ycvw !*+,5GH_YcvwIJKUVW_Yij4 !*+,5DEGHIJKUVW_Ycijvw_Yij  >@@-BP.S`=bnKpXnxz{}~>aHaS+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmbipg.xml0000644000175000017500000024021512275735442031462 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsrpg.ttf0000644000175000017500000013403412275735442031335 0ustar sylvestresylvestrepFFTMS(GDEF)GPOSGSUBge OS/2W !fxVcmaps gaspglyf\^<head6hheak4$hmtx7:loca maxp|X namehEO2postٶyl A**-_< aS+aS+AAZky@1PfEd@  8ZAMA7A7A7A7 #9_ H_,7(MoG MM )))))))))))))))))))))*******5)  60+6******(((((7 ((((((                U   ))*c`A*U_c7_ 6`ackda*7_aV7$ 77 7, 7)*())+)**97' ))**)(9*(G)+*G( (*( ,, p\@ uz'7EWgprtvxz|  tz 0@P`prtvxz| Pt%ZZV`dr|Qa ^`Rn _"#'%&$)(67;9:8LPNOMTS=<A?@>CBdhfgeklrpqmtsxy}{|z~-.201/43X\Z[Yb]+G*!, VIUKW EjHw } ttQuuazz ^`Rn _"'%$)(6;98  L!!""P#$N%%M&&T''S00=11<22A34?55>66C77B@@dAABBhCDfEEePQkRRrSTpUUmVVtWWs`axbb}cd{eezffgg~pp rr5ttJvvDxxczzi||v-20/43X\ZYb]+G*!,  VIUKW FEujoHw  DG<`(>.*0X X(  "  $ Jhz~R2|n*rZdxV|l  !L!""##N#`$$F$%%j%&,&&'P'(.(H(z()`)*L*+<+,:,-N-.//0N01z223034r45.5677p78~89$9X999::(:@::::;(;H;h;;;<Z>?"??@"@x@A>AABTBC CBCCDLD|DE4EEFFHF~FG:GHHjHI IbIJ(J7 #!#!#367763";2!57KKv  + y',1 U`# 'W* !$mc7 !#!#3!53#!#7KKpNVNNNU`; 7 )!#!#33?3#'&/##6?/7KKqR (h PB n PU`;:)0)7 *!#!#324?>;###/5##7KKpd aS gN ,$I aNU`; ҂ )$)Z  ;3dt'J1Q#)%#"&'&'&67>76;2656&'&#"&#"32 29I& /G* Ir   . 0A$ ?<:/dMM/9( 3? _ !%!!#_0VA= +75454&'&'.'&6762>'&'& ,> D9Z!%7#. */HE *; & :B1Au+M^B- ?Ge7; B,>3Bb#/##7/#6774654/&5o<@ALZq.u Vz   &Hd73#HNN~)7>7676;2#/!3/#3&'&5$ ( PBKaI$ N +F\ %!1  d<+r' ,_d 3!3#!#3&'&5_VYVVVN +)UEAr' ,,-77.'&7>767#4>76'.#53'&5 53, X>IF3E $.& #= 5F,.> *N+ G)bKh1>b 'U3'WKS#B,G5o#W89:X_:U%Gb, '7(4767673.6'.7676&7676+9EB6+9E  O?!%?!%- 34-(:4767673.6'.7676&76376''&5I7*53.6&7636#&766'.'5&'.5&7667>&'.'&6.7*!%,-..n";.Or\IC  {&@4)(1k=  ?3 Y 7h 3#/7 Y+ Lr47667653'&-5` E-5` 7"+ 7"+ _ 3&'&5N +@r' ,G&'&676#52674& &!%> 9  !,=& 3"&'&676'&G 9 H !& &!B! "3"&'&676'&?3/ 9 H !& AY 7h &!B! +3"&'&676'&73#/- 9 H !& L7 X* &!B! ?"&'&676#52674?3F )/KF 9Y 7h  " Z3&*+&'&676#5267473#/@ )/KF 97 X*  " Z3&*AL!4767673.3"'&676"7*9DB7*9DI-2 ) O?!%?!%5!"+ L#4767673.'&7>#52657*9DB7*9D   *O?!%?!%4   7  ?3#7'.7676'.76]F7h *,~   2 #- 3)!->3#/'.'&6762?3673'&/6765.'.7 X* TX&,B #/F6$! 60  N[1)  ,? ,"[(8E/>8H#7'l vz J 7:C\.O 38 $^ )!s:K4767653.'.'&6762?3673'&/6765.'.W. K03 EK24 X&,B #/F6$! 60  N[1)  ,? ,"6  *A(8E/>8H#7'l vz J 7:C\.O 38 $^ )!<M&'&676#52674&'.'&6762?3673'&/6765.'.% &!%> 9 X&,B #/F6$! 60  N[1)  ,? ," !,=&(8E/>8H#7'l vz J 7:C\.O 38 $^ )!<M3"&'&676'&'.'&6762?3673'&/6765.'. 9 H !& sX&,B #/F6$! 60  N[1)  ,? ,"&!B! (8E/>8H#7'l vz J 7:C\.O 38 $^ )!DU3"&'&676'&?3'.'&6762?3673'&/6765.'. 9 H !& AY 7h <X&,B #/F6$! 60  N[1)  ,? ,"&!B! n(8E/>8H#7'l vz J 7:C\.O 38 $^ )!EV3"&'&676'&73#'&''.'&6762?3673'&/6765.'. 9 H !& L7 X+ X&,B #/F6$! 60  N[1)  ,? ,"&!B! ? 21(8E/>8H#7'l vz J 7:C\.O 38 $^ )!AR&'&676#52674?3'.'&6762?3673'&/6765.'. )/KF 9Y 7h <X&,B #/F6$! 60  N[1)  ,? ," " Z3&*n(8E/>8H#7'l vz J 7:C\.O 38 $^ )!BS&'&676#5267473#'&''.'&6762?3673'&/6765.'. )/KF 97 X+ X&,B #/F6$! 60  N[1)  ,? ," " Z3&*A 21(8E/>8H#7'l vz J 7:C\.O 38 $^ )!!GX4767673.3"'&676"'.'&6762?3673'&/6765.'.W6+9EB6+:DJ-2 ) _X&,B #/F6$! 60  N[1)  ,? ,"O?!%?!%5!"+ E(8E/>8H#7'l vz J 7:C\.O 38 $^ )!#IZ4767673.'&7>#5265'.'&6762?3673'&/6765.'.W6+9EB6+:D   *2X&,B #/F6$! 60  N[1)  ,? ,"O?!%?!%4   77(8E/>8H#7'l vz J 7:C\.O 38 $^ )!->H?3'.'&6762?3673'&/6765.'.3'&5Y 7h fX&,B #/F6$! 60  N[1)  ,? ,">N+ n(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!->H3#/'.'&6762?3673'&/6765.'.3'&57 X* TX&,B #/F6$! 60  N[1)  ,? ,">N+ [(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!s:KU4767653.'.'&6762?3673'&/6765.'.3'&5W. K03 EK24 X&,B #/F6$! 60  N[1)  ,? ,">N+ 6  *A(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!<MW&'&676#52674&'.'&6762?3673'&/6765.'.3'&5% &!%> 9 X&,B #/F6$! 60  N[1)  ,? ,">N+  !,=&(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!<MW3"&'&676'&'.'&6762?3673'&/6765.'.3'&5 9 H !& sX&,B #/F6$! 60  N[1)  ,? ,">N+ &!B! (8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!DU_3"&'&676'&?3'.'&6762?3673'&/6765.'.3'&5 9 H !& AY 7h <X&,B #/F6$! 60  N[1)  ,? ,">N+ &!B! n(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!EV`3"&'&676'&73#'&''.'&6762?3673'&/6765.'.3'&5 9 H !& L7 X+ X&,B #/F6$! 60  N[1)  ,? ,">N+ &!B! ? 21(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!AR\&'&676#52674?3'.'&6762?3673'&/6765.'.3'&5 )/KF 9Y 7h <X&,B #/F6$! 60  N[1)  ,? ,">N+  " Z3&*n(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!BS]&'&676#5267473#'&''.'&6762?3673'&/6765.'.3'&5 )/KF 97 X+ X&,B #/F6$! 60  N[1)  ,? ,">N+  " Z3&*A 21(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!!GXb4767673.3"'&676"'.'&6762?3673'&/6765.'.3'&5W6+9EB6+:DJ-2 ) _X&,B #/F6$! 60  N[1)  ,? ,">N+ O?!%?!%5!"+ E(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ')!#IZd4767673.'&7>#5265'.'&6762?3673'&/6765.'.3'&5W6+9EB6+:D   *2X&,B #/F6$! 60  N[1)  ,? ,">N+ O?!%?!%4   77(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, '*?3#/"&#&767'.>7&'&7>.'&72676i7 Y* & 1N.kC71 "3 f3"9IB*   !  C,# %-!HH= .8-&C&  ,*N&'&676#52674&"&#&767'.>7&'&7>.'&72676 &!%> 9 & 1N.kC71 "3 f3"9IB*   ! !,=&C  C,# %-!HH= .8-&C&  ,*N3"&'&676'&"&#&767'.>7&'&7>.'&72676 9 H !& & 1N.kC71 "3 f3"9IB*   !&!B! F  C,# %-!HH= .8-&C&  ,*V3"&'&676'&?3"&#&767'.>7&'&7>.'&72676{ 9 H !& AY 7h & 1N.kC71 "3 f3"9IB*   !&!B!   C,# %-!HH= .8-&C&  ,*V3"&'&676'&73#/"&#&767'.>7&'&7>.'&72676y 9 H !& L7 X* a& 1N.kC71 "3 f3"9IB*   !&!B! ?  C,# %-!HH= .8-&C&  ,*S&'&676#52674?3"&#&767'.>7&'&7>.'&72676 )/KF 9Y 7h & 1N.kC71 "3 f3"9IB*   ! " Z3&*  C,# %-!HH= .8-&C&  ,*S&'&676#5267473#/"&#&767'.>7&'&7>.'&72676 )/KF 97 X* a& 1N.kC71 "3 f3"9IB*   ! " Z3&*A  C,# %-!HH= .8-&C&  ,(3"&'&676'&376''&55 9 H !& K$ )<&!B!   ;^5(&'&676#52674&376''&5 &!%> 9 `K$ )< !,=&  ;^03"&'&676'&?3376''&5 9 H !& AY 7h 8K$ )<&!B! *  ;^03"&'&676'&73#/376''&5 9 H !& L7 X* K$ )<&!B! ?=  ;^-&'&676#52674?3376''&5 )/KF 9Y 7h 8K$ )< " Z3&**  ;^-&'&676#5267473#/376''&5 )/KF 97 X* K$ )< " Z3&*A=  ;^!34767673.3"'&676"376''&5I7*#5265376''&5I7*'#/6&76376''&57G, * W FK$ )<  1 ;4-x  ;^)!%6@%'.'&6762?3673'&/6765.'.3'&5LX&,B #/F6$! 60  N[1)  ,? ,">N+ R(8E/>8H#7'l vz J 7:C\.O 38 $^ bb, ' zBL%7>'&/&4?3'&'#&'&767>54&'&76363'&5o !93 C "J'8/:nK  3-7% "  IN+   |=HE  .R;4 -@ 3jY*"L.+  b, '<F'&546676'&54'.#'&7>4'.3&'&5` % E)  $)j&& .) :  9" N +z *+%0BGrBA 1c/,?  B7Z=Hr' ,E3#/'&546676'&54'.#'&7>4'.7 E*  % E)  $)j&& .) :  9" (| *+%0BGrBA 1c/,?  B7Z=sR47667653".'&546676'&54'.#'&7>4'.c.43(" E-;.*! H % E)  $)j&& .) :  9" 6 6 *+%0BGrBA 1c/,?  B7Z=S&'&676#52674&'&546676'&54'.#'&7>4'.1 &!%> 9  % E)  $)j&& .) :  9"  !,=& *+%0BGrBA 1c/,?  B7Z=[3"&'&676'&?3'&546676'&54'.#'&7>4'. 9 H !& BY 7h  % E)  $)j&& .) :  9" &!B! j *+%0BGrBA 1c/,?  B7Z=\3"&'&676'&73#/'&546676'&54'.#'&7>4'. 9 H !& L7 E*  % E)  $)j&& .) :  9" &!B! ?(| *+%0BGrBA 1c/,?  B7Z=X&'&676#52674?3'&546676'&54'.#'&7>4'. )/KF 9Y 7h  % E)  $)j&& .) :  9"  " Z3&*j *+%0BGrBA 1c/,?  B7Z=Y&'&676#5267473#/'&546676'&54'.#'&7>4'. )/KF 9 7 E*  % E)  $)j&& .) :  9"  " Z3&*A(| *+%0BGrBA 1c/,?  B7Z= ?3 P 7h 6+7#"'&5467>;2&#"&32#)%7   '#52 $   D# #`46767>53.3"'&676"'&546676'&54'.#'&7>4'.c$+=B B8+9BI-2 )  % E)  $)j&& .) :  9" O%/ !? %5!"+  *+%0BGrBA 1c/,?  B7Z=%b46767>53.'&7>#5265'&546676'&54'.#'&7>4'.c$+=B B8+9B   * % E)  $)j&& .) :  9" O%/ !? %4   7 *+%0BGrBA 1c/,?  B7Z=BL3#'&546676'&54'.#'&7>4'.3&'&5(Nh *g % E)  $)j&& .) :  9" N +j *+%0BGrBA 1c/,?  B7Z=Hr' ,EO3#/'&546676'&54'.#'&7>4'.3&'&57 E*  % E)  $)j&& .) :  9" N +(| *+%0BGrBA 1c/,?  B7Z=Hr' ,sR\47667653".'&546676'&54'.#'&7>4'.3&'&5c.43(" E-;.*! H % E)  $)j&& .) :  9" N +6 6 *+%0BGrBA 1c/,?  B7Z=Hr' ,S]&'&676#52674&'&546676'&54'.#'&7>4'.3&'&51 &!%> 9  % E)  $)j&& .) :  9" N + !,=& *+%0BGrBA 1c/,?  B7Z=Hr' ,[e3"&'&676'&?3'&546676'&54'.#'&7>4'.3&'&5 9 H !& BY 7h  % E)  $)j&& .) :  9" N +&!B! j *+%0BGrBA 1c/,?  B7Z=Hr' ,\f3"&'&676'&73#/'&546676'&54'.#'&7>4'.3&'&5 9 H !& L7 E*  % E)  $)j&& .) :  9" N +&!B! ?(| *+%0BGrBA 1c/,?  B7Z=Hr' ,Xb&'&676#52674?3'&546676'&54'.#'&7>4'.3&'&5 )/KF 9Y 7h  % E)  $)j&& .) :  9" N + " Z3&*j *+%0BGrBA 1c/,?  B7Z=Hr' ,Yc&'&676#5267473#/'&546676'&54'.#'&7>4'.3&'&5 )/KF 9 7 E*  % E)  $)j&& .) :  9" N + " Z3&*A(| *+%0BGrBA 1c/,?  B7Z=Hr' ,#`j46767>53.3"'&676"'&546676'&54'.#'&7>4'.3&'&5c$+=B B8+9BI-2 )  % E)  $)j&& .) :  9" N +O%/ !? %5!"+  *+%0BGrBA 1c/,?  B7Z=Hr' ,0Y)7&'.7>'&567>&'&1+u;076b""53.'&7>#5265'&546676'&54'.#'&7>4'.3&'&5c$+=B B8+9B   * % E)  $)j&& .) :  9" N +O%/ !? %4   7 *+%0BGrBA 1c/,?  B7Z=Hr' ,*&3#/>'&66&'&'"6767 Y* k'&66&'&'"676/ &!%> 9 '&66&'&'"676 9 H !& AY 7 I '&66&'&'"676 9 H !& L7 X* '&66&'&'"676 )/KF 9Y 7 I '&66&'&'"676 )/KF 97 X* &'.'&6g7 @* $A[@b NI &.";.Or\IC  {&@4)(1k=  (s@4767653".6'.'5&'.5&7667>&'.'&6..E14 E-;.*! $A[@b NI 6  6I";.Or\IC  {&@4)(1k=  (B&'&676#52674&6'.'5&'.5&7667>&'.'&6 &!%> 9 \$A[@b NI  !,=&";.Or\IC  {&@4)(1k=  (B3"&'&676'&6'.'5&'.5&7667>&'.'&6 9 H !& $A[@b NI &!B! ";.Or\IC  {&@4)(1k=  (J3"&'&676'&?36'.'5&'.5&7667>&'.'&6x 9 H !& BY 7h $A[@b NI &!B! ";.Or\IC  {&@4)(1k=  7M3 +37M6 6K `N.=  3>'#/6&767G, * W   1 ;4-(K3"&'&676'&73#/6'.'5&'.5&7667>&'.'&6w 9 H !& L7 E* =$A[@b NI &!B! ?(.";.Or\IC  {&@4)(1k=  (G&'&676#52674?36'.'5&'.5&7667>&'.'&6 )/KF 9Y 7h $A[@b NI  " Z3&*";.Or\IC  {&@4)(1k=  (H&'&676#5267473#/6'.'5&'.5&7667>&'.'&6 )/KF 9 7 E* =$A[@b NI  " Z3&*A(.";.Or\IC  {&@4)(1k=  ("N4767>53.3"'&676"6'.'5&'.5&7667>&'.'&6.7*!%5!"+ E";.Or\IC  {&@4)(1k=  ($P4767>53.'&7>#52656'.'5&'.5&7667>&'.'&6.7*!%4   7S";.Or\IC  {&@4)(1k=  (G'#/3>'6#&766'.'5&'.5&7667>&'.'&6R$* h6H   $A[@b NI     ..j";.Or\IC  {&@4)(1k=   z L3#/7>'&/&4?3'&'#&'&767>54&'&76367 F* ] !93 C "J'8/:nK  3-7% "  (.  |=HE  .R;4 -@ 3jY*"L.+   zrX47>673.'&7>'&/&4?3'&'#&'&767>54&'&7636o?@*F 12E?@*F 12 !93 C "J'8/:nK  3-7% "  8   8     |=HE  .R;4 -@ 3jY*"L.+   zY&'&676#52674&7>'&/&4?3'&'#&'&767>54&'&7636u &!%> 9  !93 C "J'8/:nK  3-7% "   !,=&T  |=HE  .R;4 -@ 3jY*"L.+   zY3"&'&676'&7>'&/&4?3'&'#&'&767>54&'&7636& 9 H !& F !93 C "J'8/:nK  3-7% "  &!B! W  |=HE  .R;4 -@ 3jY*"L.+   z"e3"&'&676'&7>?37>'&/&4?3'&'#&'&767>54&'&7636 9 H !& B . 7h  !93 C "J'8/:nK  3-7% "  &!B! e &  |=HE  .R;4 -@ 3jY*"L.+   zb3"&'&676'&73#/7>'&/&4?3'&'#&'&767>54&'&7636 9 H !& L7 F* 8 !93 C "J'8/:nK  3-7% "  &!B! ?(  |=HE  .R;4 -@ 3jY*"L.+   zb&'&676#526747>?37>'&/&4?3'&'#&'&767>54&'&7636 )/KF 9 . 7h  !93 C "J'8/:nK  3-7% "   " Z3&*e &  |=HE  .R;4 -@ 3jY*"L.+   z_&'&676#5267473#/7>'&/&4?3'&'#&'&767>54&'&7636 )/KF 9 7 F* 8 !93 C "J'8/:nK  3-7% "   " Z3&*A(  |=HE  .R;4 -@ 3jY*"L.+   z)l47>7653.'&3"'&676"7>'&/&4?3'&'#&'&767>54&'&7636oI/-&) UBI/-&) U-2 ) 3 !93 C "J'8/:nK  3-7% "  OC  'C  '5!"+   |=HE  .R;4 -@ 3jY*"L.+   z+n47>7653.'&'&7>#52657>'&/&4?3'&'#&'&767>54&'&7636oI/-&) UBI/-&) U   * !93 C "J'8/:nK  3-7% "  OC  'C  '4   7  |=HE  .R;4 -@ 3jY*"L.+   z LV3#/7>'&/&4?3'&'#&'&767>54&'&76363'&57 F* ] !93 C "J'8/:nK  3-7% "  IN+ (.  |=HE  .R;4 -@ 3jY*"L.+  b, ' z LV?37>'&/&4?3'&'#&'&767>54&'&76363'&5 Y 7J : !93 C "J'8/:nK  3-7% "  IN+ *  |=HE  .R;4 -@ 3jY*"L.+  b, ' zrXb47>673.'&7>'&/&4?3'&'#&'&767>54&'&76363'&5o?@*F 12E?@*F 12 !93 C "J'8/:nK  3-7% "  IN+ 8   8     |=HE  .R;4 -@ 3jY*"L.+  b, ' zYc&'&676#52674&7>'&/&4?3'&'#&'&767>54&'&76363'&5u &!%> 9  !93 C "J'8/:nK  3-7% "  IN+  !,=&T  |=HE  .R;4 -@ 3jY*"L.+  b, ' zYc3"&'&676'&7>'&/&4?3'&'#&'&767>54&'&76363'&5& 9 H !& F !93 C "J'8/:nK  3-7% "  IN+ &!B! W  |=HE  .R;4 -@ 3jY*"L.+  b, ' z"eo3"&'&676'&7>?37>'&/&4?3'&'#&'&767>54&'&76363'&5 9 H !& B . 7h  !93 C "J'8/:nK  3-7% "  IN+ &!B! e &  |=HE  .R;4 -@ 3jY*"L.+  b, 'UE 6#&7>& &-- z_i&'&676#5267473#/7>'&/&4?3'&'#&'&767>54&'&76363'&5 )/KF 9 7 F* 8 !93 C "J'8/:nK  3-7% "  IN+  " Z3&*A(  |=HE  .R;4 -@ 3jY*"L.+  b, ' z)lv47>7653.'&3"'&676"7>'&/&4?3'&'#&'&767>54&'&76363'&5oI/-&) UBI/-&) U-2 ) 3 !93 C "J'8/:nK  3-7% "  IN+ OC  'C  '5!"+   |=HE  .R;4 -@ 3jY*"L.+  b, ' z+nx47>7653.'&'&7>#52657>'&/&4?3'&'#&'&767>54&'&76363'&5oI/-&) UBI/-&) U   * !93 C "J'8/:nK  3-7% "  IN+ OC  'C  '4   7  |=HE  .R;4 -@ 3jY*"L.+  b, ')8D&'&676#52674&'.54&67>76&'&76&7> &!%> 9  6 N1N<@*-3G%VA0AVA0@ !,=&5/P(&  7%58/A 46H$ @f R2@d Q)8D3"&'&676'&'.54&67>76&'&76&7> 9 H !& W 6 N1N<@*-3G%VA0AVA0@&!B! 5/P(&  7%58/A 46H$ @f R2@d QS3"&'&676'&'&546676'&54'.#'&7>4'. 9 H !&  % E)  $)j&& .) :  9" &!B!  *+%0BGrBA 1c/,?  B7Z=S]3"&'&676'&'&546676'&54'.#'&7>4'.3&'&5 9 H !&  % E)  $)j&& .) :  9" N +&!B!  *+%0BGrBA 1c/,?  B7Z=Hr' ,*%53"&'&676'&>'&66&'&'"676 9 H !& L7676;2#/!3/#$ ( PBKaI$ F\ %!1  d<+cb$132+32>7>'.'+327>'.'&+c +&:SNWP_';%[K-^vK$.@TH:d"BUW  U8Kb 6'? D,-I `!%#`VA*7>7>?>;2%!/#*- ;* 4 G>C _{!  =Qep%_* !%!!%!_Lu5A=G70!7373!5?E [<j yVB2_d 3!3#!#_VYVVV)UE6,>'.6!!676'.'. 9>U,%Yr eSP i m}J*]#_'4,>/-R& &c&8_8~Qmhz($g9\9  `3#`VVUa3?3#/#aS` @Q z Sb  l ZzF!7>7>?6;6#&'&'#x#*) |-[ 7`Sh' uz!W/;YYd37?3###/'##dd    hN(I!N .K$? Ue3267>'.'&]#38c3xFMi' Nh0- Z9$F>-X6F>oSrN) |.?:L%H^4E_d!#!#_VVXkaG!36+#36>7>&'.+aDFM yf?yVSo (&'  "3!n -$,-OV  '9> V"'&476'&46761 /  M0MYR#  ,7!%%!?'/7c ,%  A5 7 E4 $!%#$_VAe7047>>7>#4&#<.'&'.77%h*';BF8&NM,/V .%# #H1 =.F & @P,<-/AD/)')&)?7"-2=3#54#.54>3>7>&'.'4 P=o?rb!P w/KW6C%5 .+OP&G H*C ]h9? h] P3W:$7 -4/)GW",3?3#'&/##7'Z 9{ U Z 2 UH  C_ 79326765&>76;#5.'&'4.'&'532ZP*M$@+)5?,P@Z)@! !0%< 331 =1*> =`4" ii>7-0="<@\-,-7.'&7>767#4>76'.#5 53, X>IF3E $.& #= 5F,.> *G)bKh1>b 'U3'WKS#B,G5o#W89:X_:U%GA >'.76"'&6763#"&   pVV*  9 5,-  8U7A D6'&76'&47>>7>#4&#<.'&'.6 6 7%h*';BF8&NM,/V .%# *: :H1 =.F & @P,<-/AD/)')&)?)!->?3'.'&6762?3673'&/6765.'.Y 7h fX&,B #/F6$! 60  N[1)  ,? ,"n(8E/>8H#7'l vz J 7:C\.O 38 $^ *??3"&#&767'.>7&'&7>.'&72676Y 7h & 1N.kC71 "3 f3"9IB*   !  C,# %-!HH= .8-&C&  ,B3#'&546676'&54'.#'&7>4'.(Nh *g % E)  $)j&& .) :  9" j *+%0BGrBA 1c/,?  B7Z=?3376''&5Y 7h K$ )<*  ;^(E273#7#&'&66&766'.'5&'.5&7667>&'.'&6MNh *    W$A[@b NI 3#+,-j";.Or\IC  {&@4)(1k=  )!%6%'.'&6762?3673'&/6765.'.LX&,B #/F6$! 60  N[1)  ,? ,"R(8E/>8H#7'l vz J 7:C\.O 38 $^ )G&''.4547>'26'.'"676&'.'"&'75"'&67635'U3 ! \o-' F40&$9B-*I  $OY?%   9KRT!!$ $  u;- !PN!%Y.!2-$ /!G * & (9%&'&54?4654&'&'&#46766?676= D  - N0%D-"81!*" %3D'(   DF% '1 %:e,l - !Hj3)-9'.'&676/..67>7>'.#$64'A$q  D#6' 3\hW. AQ)4;/6:_ .f)[1C  (!*7mV4B`w4"/bH0FU4X[*77"&#&767'.>7&'&7>.'&72676& 1N.kC71 "3 f3"9IB*   !  C,# %-!HH= .8-&C&  ,*g=4#&.'&7>7"'&67667>'.7636_X "!&D`3i ,K/ VRX&Ur1((:/ $A&' Jy`3C2    EKA= , %4#<'&546676'&54'.#'&7>4'.` % E)  $)j&& .) :  9" z *+%0BGrBA 1c/,?  B7Z=<G47>767>7654.'.67>'&'.=&6&'&%4&" ))(O B,089@ ,K9/ -P@7H P7. b 0K60 )XM5L& URH5H+ [=,%W "( &>j\+P1 7376''&57K$ )<  ;^'=%".'&'&?67464&5&'&76>7>"&320ax"@ ?  &[P:W9Zhl&   ,O-Y  *'O  x(# &N% , -6  W:>3! 67>?65&/.#'.7632&'.'5P#   $!;)& .) *Y+ H kb   & %5TA-@:L  - ::) :7'&'&=476765476673&'#'&u %2    7!T (  N'#HX&+1  dl+  fP-!* / HI $.   )4&'.5>6'.676ZE " 0aj7 & S_` jA 0ltt "]*gT>727>76'&676367>'."'.6767.6767"'&76cY ,eG=:4~>'>6?59   (L +D( R a- "  A0 !  6^1E (< $ ):DFJ0;5 J  *>'&66&'&'"6767!#673&'.4=##"'&676|  3# A` N3A _   d  %KM> * ((+$# eA )"F)!-7'.54&67>76&'&76&7>p 6 N1N<@*-3G%VA0AVA0@*5/P(&  7%58/A 46H$ @f R2@d Q()>32'.76326'&#"&'&6u; .;`// S1 ^ " PK_ (f4+ '  @46Z %D+  W89t*&'&'&47676;>'.?E!\t1&&5h NA@ \61Q fc?Q_B"'88PNs55DE9Lp!#"&7>763!#673'.66  $ " Nh0 d! #KK; =: 6EUW(+6'.'5&'.5&7667>&'.'&6k$A[@b NI ";.Or\IC  {&@4)(1k=  ):J&'.6767646767>#'&5>76'&'&$ , 3"$ 8. !'D0%Y&  N-F ,; #,>J/F9$!-AB8u,6  48V& ?*!5QB;J*<6?656&'&'&#.'&76?36.'&'#*0~ 2' C"2'~ N0;1!2$" ~ Y"Q  WnY1#7+;(I4&#.'.>767647632>'.'&632#".45 3.,  M29M  ( &@'    +llK$ 2,Q4QJ'&iw8  Rb,92-  $    zB%7>'&/&4?3'&'#&'&767>54&'&7636o !93 C "J'8/:nK  3-7% "    |=HE  .R;4 -@ 3jY*"L.+  r *>'.%6"'&676376''&55 "&  zK$ )<[ 8 5,-  9  ;^(r B6'.7676'.766'.'5&'.5&7667>&'.'&6g&% & !  S$A[@b NI q,7+"7";.Or\IC  {&@4)(1k=  *&?3>'&66&'&'"676Y 7h Y&'.'&6Nh *$A[@b NI ";.Or\IC  {&@4)(1k=   z L?37>'&/&4?3'&'#&'&767>54&'&7636 Y 7J : !93 C "J'8/:nK  3-7% "  *  |=HE  .R;4 -@ 3jY*"L.+   zbl3"&'&676'&73#/7>'&/&4?3'&'#&'&767>54&'&76363'&5 9 H !& L7 F* 8 !93 C "J'8/:nK  3-7% "  IN+ &!B! ?(  |=HE  .R;4 -@ 3jY*"L.+  b, ' t' %R y  ^  N   0 cConverted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.Converted by Alexej Kryukov from METAFONT sources. This font is subject to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This font is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.jlm_fcsrpgjlm_fcsrpgRegularRegularFontForge 2.0 : jlm_fcsrpg : 30-12-2009FontForge 2.0 : jlm_fcsrpg : 30-12-2009jlm_fcsrpgjlm_fcsrpgVersion 001.001 Version 001.001 jlm_fcsrpgjlm_fcsrpg2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkernN1l     l 2@JP@^lv@@  uu    uu YY  {{uu   YY  uuuu , !"#$&()*+,-./134cdegvwxyz|~1 <=>@BCDEFcdeg>aHaS+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/mappings_greek.xml0000644000175000017500000003115612275735442032206 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcmrpg.ttf0000644000175000017500000016546412275735442031342 0ustar sylvestresylvestrepFFTMS(GDEF)GPOSkGSUBge OS/2W!lxVcmapޡ\ gaspglyfX\head6hhea@4$hmtx>locajRmaxpX nameb3Iش2post-%Ax_< aS+aS+nAAZn@1PfEd@  8ZAMA7A7A7A7 $!!& !,7'9MoG MM ))))))))))))))))))))))))))))')!%%%%%%%%&4%%%%%%%%%%%6*!%******'''''7 ''''''!!!!!!!!!!!!!!!!V!!!**%%* $q!A/!c7! 6i ! %!* 6!"V7$ 67 7,i 6))%5')+)))%(6)))**(9*'G*+)G)!'*'!!,, x^@ uz'7EWgprtvxz|  tz 0@P`prtvxz| APu&\\V`dr|Rb _aSo `#$(&'%*)78<:;9MQOPNUT>=B@A?DCeighflmsqrnutyz~|}{./312054Y][\Zc^,H+"- WJVLX FkIx ~ ttRuubzz  _aSo `#(&%*)7<:9  M!!""Q#$O%%N&&U''T00>11=22B34@55?66D77C@@eAABBiCDgEEfPQlRRsSTqUUnVVuWWt`aybb~cd|ee{ffggpp!rr6ttKvvExxdzzj||w.31054Y][Zc^,H+"-  WJVLX GFvkpIx  DG:& `@2(XZ|f N | " N  r"Xp&lP8H.|B6 $ !L!""# #$$%,%&P&'(2(T()Z**+<+,-J. ./0P011f12\233x34b45:56$67"7T78"8989:t:;<<<=>D??@vADBBC~DDEEFFGHtIbIJ>JKnKLBLMMVMMN,NNO OOPDPPQ*QQR RbRS SvSTrTUFUVVVWNWXXYY`YZ0ZZ[F[[\>\\]v]^^N^^_$_h_`d`aXabbhbcXd.7 !#!#6#!"7676!#7QQ`    5   /UZ1 !{,#-q7 D!#!#73'5:67654'."#57"3547"23'5276=#7QQ >i  i> >i  i>UZF  %     7 ]!#!#%26'4/&'#'5276?6'4/&'7"36?>76&'5?"3/7QQv6" RJ!5" A k ,&X^5 "RJ!5" A k ,'V_UZ  m> ! +w   k>! +w 7 c!#!#%265##"'&'&'#3'52?>'4'.#532;234?67>76;"23'7QQ$V O  Q7  D;, e  LM$UZ  G#QO$  lI!!I;  $#8%!"'.67>;363!#&'.+3767655&'&'&fiBJ/BP%B7` 0!- -5@/a15D)#45<.'!#.'."+"3267653#4.'&+3'! -% !#%OC;+  %C'Y8   +&' ?#"! /572>46&75&'.7>323!27>'&'"37'#e &?:vFRk7C!MK,5"0 *!A2L29  #FD\U;H&9 ,:!*#/:Hb&8;>7676'4&'&=423/5276&/3'5376?/3'5%75Nb<  )(0pr?@$:O6 / Ws7O![TM :   %X3 ,wsd74."#57"23/5265S  AB!  AB!^     :?T73'52>7>323/52>&'&/.+"73'#432;2&'&5#'\V&".  z  J0qr&  , 45<.'?"!54?"3/5265!3/432;2&'&5! -t|7G + Gs}78#  -7{uG G7{u/"    "   O 7 ,Ti%#"+"'&5'32;.767>3276?476;+&'&747>&'.432;2&'&5    >= 43/ lz|0>W 4<(=>  p66;%<"   8 ([MR\.:M d?Na&VG1 8  4]K)D3>JX.+P`=r 7 7&0<"546766?4>323'.#"6'.7676&76G,'4-! j2 #F  I>/ ",51 #!,34-(2>b"54676676765432'.##"6'.7676&764&4676;27>76&'.7.549-%4,! )#61 "E  X$ &  - I!:. #  : 2 !,34- 7F > oj''1;f"546766?46232'.##"6#&7636&7667>&/&62&'&'5&'&'&63A-&3/ " j/ !F    9!E"   H(aU! I!:0 #6/ !--,+*C*?Q ;Vh1 -#`[cB&"LW'&'&=4'&&'54767>5465<.'&'&7>&'4&'&-*8#Z# ! 6B :$ ^%&5!'@%"  X+!IIMG~`Z 9+]iW9 } @A] ((+ R %  .BOM#@]J! , /6E7`" 6?676 3 4U j ./&7>U4 3  j!Ls+"&546766?>;2.'&## -'9&   1&    4    "'  ^432;2&'&5" N 7 G'.76"'&763676&,E 7' ;! 1  0+   %> 2#&'&>76&'&H1-F/$ !#V '>6 1  " (?>3'2#&'&>76&'&*  Re1-F/$ !?k#g$#V '>6 1  & )&/&7>'2#&'&>76&'& \4 3 1-F/$ !t!#V '>6 1  " &?>3''.76'&763676&*  RP'I- <?k#g$ 0 #'&   %:& '&/&7>''.76'&763676& \4 3 'I- <t! 0 #'&   %:M(>"546766?4>323'.#"2#"&7>'&'-&4/ !  ( 63 "l9  ++ #&  I!:1 "% 3 3 !!1 2#  M(A"546766?4>323'.#"'&676#"&6?>54-&4/ !  ( 63 ", $ "  I!:1 "% 3 3 !! &3      #6?676'6&7636'.76c22 hB   #   R4-,3)HY6#/.'&62>76'.5'&'.7>7>;2'6&'&'&76 > Y + (&\&$ ) I-5  6 + ; 9 )F 1>6 p ?  ): 3$ )9A.=>2.  & +0L"7b=)s']n"&546766?>;2'.##2>76'.5'&'.7>7>;2'6&'&'&76j -'!4  &#;+  + (&\&$ ) I-5  6 + ; 9 )F 1>6 4  - $ x?  ): 3$ )9A.=>2.  & +0L"7b=)N_'.76"'&763676&2>76'.5'&'.7>7>;2'6&'&'&76$,E 7' ;-+ (&\&$ ) I-5  6 + ; 9 )F 1>6! 1  0+   %>?  ): 3$ )9A.=>2.  & +0L"7b=)Qb2#&'&>76&'&2>76'.5'&'.7>7>;2'6&'&'&761-F/$ !+ (&\&$ ) I-5  6 + ; 9 )F 1>6#V '>6 1  ?  ): 3$ )9A.=>2.  & +0L"7b=)2hy6#"&7>57>2#&'&>76&'&2>76'.5'&'.7>7>;2'6&'&'&76f . 1 1-F/$ !+ (&\&$ ) I-5  6 + ; 9 )F 1>6 8  | !#V '>6 1  ?  ): 3$ )9A.=>2.  & +0L"7b=),bs"&/.'46'2#&'&>76&'&2>76'.5'&'.7>7>;2'6&'&'&76b+   1-F/$ !+ (&\&$ ) I-5  6 + ; 9 )F 1>6{  @N#V '>6 1  ?  ): 3$ )9A.=>2.  & +0L"7b=)0fw6#"&7>57>'.76'&763676&2>76'.5'&'.7>7>;2'6&'&'&76f . 1 'I- <+ (&\&$ ) I-5  6 + ; 9 )F 1>6 8  | ! 0 #'&   %:?  ): 3$ )9A.=>2.  & +0L"7b=)*`q"&/.'46''.76'&763676&2>76'.5'&'.7>7>;2'6&'&'&76b+   'I- <+ (&\&$ ) I-5  6 + ; 9 )F 1>6{  @N 0 #'&   %:?  ): 3$ )9A.=>2.  & +0L"7b=))?u"5467667>546232'.##"2#"&7>'&'2>76'.5'&'.7>7>;2'6&'&'&76h-&20 ! ($7/ "l9  ++ #&  + (&\&$ ) I-5  6 + ; 9 )F 1>6I!:0 "  ; 1 !1 2#  k?  ): 3$ )9A.=>2.  & +0L"7b=))Bx"5467667>546232'.##"'&676#"&6?>542>76'.5'&'.7>7>;2'6&'&'&76h-&20 ! ($7/ ", $ "  H+ (&\&$ ) I-5  6 + ; 9 )F 1>6I!:0 "  ; 1 ! &3   f?  ): 3$ )9A.=>2.  & +0L"7b=)GXm>?676"2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5   +b+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" I1  {?  . 3$ )9A.=>2.  & + 0K"7b= 7 )HYn6#/.'&62>76'./'&'.7>7>;2'6&'&'&76432;2&'&5 > Y + ( &\&$ ) I-5  6 + ; 9 *F 1>6/"  p ?  . 3$ )9A.=>2.  & + 0K"7b= 7 )s']n"&546766?>;2'.##2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5j -'!4  &#;+  + ( &\&$ ) I-5  6 + ; 9 *F 1>6/"  4  - $ x?  . 3$ )9A.=>2.  & + 0K"7b= 7 )N_t'.76"'&763676&2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5$,E 7' ;-+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" ! 1  0+   %>?  . 3$ )9A.=>2.  & + 0K"7b= 7 )Qbw2#&'&>76&'&2>76'./'&'.7>7>;2'6&'&'&76432;2&'&51-F/$ !+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" #V '>6 1  ?  . 3$ )9A.=>2.  & + 0K"7b= 7 )2hy6#"&7>57>2#&'&>76&'&2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5f . 1 1-F/$ !+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/"  8  | !#V '>6 1  ?  . 3$ )9A.=>2.  & + 0K"7b= 7 ),bs"&/.'46'2#&'&>76&'&2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5b+   1-F/$ !+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" {  @N#V '>6 1  ?  . 3$ )9A.=>2.  & + 0K"7b= 7 )0fw6#"&7>57>'.76'&763676&2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5f . 1 'I- <+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/"  8  | ! 0 #'&   %:?  . 3$ )9A.=>2.  & + 0K"7b= 7 )*`q"&/.'46''.76'&763676&2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5b+   'I- <+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" {  @N 0 #'&   %:?  . 3$ )9A.=>2.  & + 0K"7b= 7 ))?u"5467667>546232'.##"2#"&7>'&'2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5h-&20 ! ($7/ "l9  ++ #&  + ( &\&$ ) I-5  6 + ; 9 *F 1>6/" I!:0 "  ; 1 !1 2#  k?  . 3$ )9A.=>2.  & + 0K"7b= 7 ))Bx"5467667>546232'.##"'&676#"&6?>542>76'./'&'.7>7>;2'6&'&'&76432;2&'&5h-&20 ! ($7/ ", $ "  H+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" I!:0 "  ; 1 ! &3   f?  . 3$ )9A.=>2.  & + 0K"7b= 7 ) Q'.7>".#"32676&'&#67>76'.'&7>7.7676h 22`(@#d ."  1( US  $k1,@! 9J    # D% %  - )  5 & B+0/ 5B '"  )\'.76"'&763676&".#"32676&'&#67>76'.'&7>7.7676,E 7' ;y(@#d ."  1( US  $k1,@! 9J ! 1  0+   %>D% %  - )  5 & B+0/ 5B '"  )_2#&'&>76&'&".#"32676&'&#67>76'.'&7>7.76761-F/$ !(@#d ."  1( US  $k1,@! 9J #V '>6 1  D% %  - )  5 & B+0/ 5B '"  ) (l?>3'2#&'&>76&'&".#"32676&'&#67>76'.'&7>7.7676*  Re1-F/$ !(@#d ."  1( US  $k1,@! 9J ?k#g$#V '>6 1  D% %  - )  5 & B+0/ 5B '"  ) )m&/&7>'2#&'&>76&'&".#"32676&'&#67>76'.'&7>7.7676e \4 3 1-F/$ !(@#d ."  1( US  $k1,@! 9J t!#V '>6 1  D% %  - )  5 & B+0/ 5B '"  ) &j?>3''.76'&763676&".#"32676&'&#67>76'.'&7>7.7676*  RP'I- <(@#d ."  1( US  $k1,@! 9J ?k#g$ 0 #'&   %:D% %  - )  5 & B+0/ 5B '"  ) 'k&/&7>''.76'&763676&".#"32676&'&#67>76'.'&7>7.7676e \4 3 'I- <(@#d ."  1( US  $k1,@! 9J t! 0 #'&   %:D% %  - )  5 & B+0/ 5B '"  ?2#&'&>76&'&4&4676;27>76&'.7.54D1-F/$ ! $ &  - #V '>6 1   7F > oj'<'.76"'&763676&4&4676;27>76&'.7.54u,E 7' ;\$ &  - ! 1  0+   %> 7F > oj (L?>3'2#&'&>76&'&4&4676;27>76&'.7.54_*  Re1-F/$ !4$ &  - ?k#g$#V '>6 1   7F > oj )M&/&7>'2#&'&>76&'&4&4676;27>76&'.7.54 \4 3 1-F/$ !:$ &  - t!#V '>6 1   7F > oj &J?>3''.76'&763676&4&4676;27>76&'.7.54_*  RP'I- <$ &  - ?k#g$ 0 #'&   %: 7F > oj 'K&/&7>''.76'&763676&4&4676;27>76&'.7.54 \4 3 'I- <$ &  - t! 0 #'&   %: 7F > oj(>b"54676676765432'.##"2#"&7>'&'4&4676;27>76&'.7.549-%4,! )#61 "l9  ++ #&  $ &  - I!:. #  : 2 !1 2#   7F > oj(Ae"54676676765432'.##"'&676#"&6?>544&4676;27>76&'.7.549-%4,! )#61 ", $ "  O$ &  - I!:. #  : 2 ! &3    7F > oj 1'.7>4&4676;27>76&'.7.54wh 22L$ &  -    # m 7F > ojs(L"&546766746732.'&##4&4676;27>76&'.7.547 ,(!4   1$%  \$ &  -  5  "'   7F > oj #G'.7>'6&7636'.764&4676;27>76&'.7.54wh 22  l$ &  -    # K4-,3 7F > oj)5F[%2>76'./'&'.7>7>;2'6&'&'&76432;2&'&5p+ ( &\&$ ) I-5  6 + ; 9 *F 1>6/" ?  . 3$ )9A.=>2.  & + 0K"7b= 7 !zOd%327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5Z3*&   +Y1*$e( G\-$+AD    &L/   3" s'&5476.'&#'&?>4&'&432;2&'&5c# 4 OFB(+ 0  $ "  %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %P'.65>'&47667>'&5476.'&#'&?>4&'&:l 0 3 # 4 OFB(+ 0  $   $\ %2;;4 B{L 94Q0% :nXA  $-_ &G%s'g"&5467667>;2'.##'&47667>'&5476.'&#'&?>4&'& -':("  )!=,  ;# 4 OFB(+ 0  $  4#'  1 %   %2;;4 B{L 94Q0% :nXA  $-_ &G%X'.76"'&763676&'&47667>'&5476.'&#'&?>4&'&F,E 7' ;# 4 OFB(+ 0  $ ! 1  0+   %> %2;;4 B{L 94Q0% :nXA  $-_ &G% 'g>76'2#&'&>76&'&'&47667>'&5476.'&#'&?>4&'&"H2 hf1-F/$ !d# 4 OFB(+ 0  $     #V '>6 1   %2;;4 B{L 94Q0% :nXA  $-_ &G%+k'.7>'2#&'&>76&'&'&47667>'&5476.'&#'&?>4&'&h 22 1-F/$ !]# 4 OFB(+ 0  $     #V '>6 1   %2;;4 B{L 94Q0% :nXA  $-_ &G% %e>76''.76'&763676&'&47667>'&5476.'&#'&?>4&'&"H2 hQ'I- <# 4 OFB(+ 0  $      0 #'&   %: %2;;4 B{L 94Q0% :nXA  $-_ &G%)i'.7>''.76'&763676&'&47667>'&5476.'&#'&?>4&'&h 22 'I- <# 4 OFB(+ 0  $      0 #'&   %: %2;;4 B{L 94Q0% :nXA  $-_ &G&.6?>763: * Q   f467#&7467547>23676.'&#"2>&'"& ' $  Q+H  '&''&47667>'&5476.'&#'&?>4&'&.%4+ % *!81 #l9  ++ #&  # 4 OFB(+ 0  $ I<-/  7 3 "!1 2#   %2;;4 B{L 94Q0% :nXA  $-_ &G%&?"546766546232'.#"'&676#"&6?>54'&47667>'&5476.'&#'&?>4&'&.%4+ % *!81 #, $ "  # 4 OFB(+ 0  $ I<-/  7 3 "! &3    %2;;4 B{L 94Q0% :nXA  $-_ &G%Nc.?676'&47667>'&5476.'&#'&?>4&'&432;2&'&5 9 * *3# 4 OFB(+ 0  $ "  )  5?m %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %Pe'.65>'&47667>'&5476.'&#'&?>4&'&432;2&'&5:l 0 3 # 4 OFB(+ 0  $ "   $\ %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %s'g|"&5467667>;2'.##'&47667>'&5476.'&#'&?>4&'&432;2&'&5 -':("  )!=,  ;# 4 OFB(+ 0  $ "  4#'  1 %   %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %Xm'.76"'&763676&'&47667>'&5476.'&#'&?>4&'&432;2&'&5F,E 7' ;# 4 OFB(+ 0  $ " ! 1  0+   %> %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 % 'g|>76'2#&'&>76&'&'&47667>'&5476.'&#'&?>4&'&432;2&'&5"H2 hf1-F/$ !d# 4 OFB(+ 0  $ "     #V '>6 1   %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %+k'.7>'2#&'&>76&'&'&47667>'&5476.'&#'&?>4&'&432;2&'&5h 22 1-F/$ !]# 4 OFB(+ 0  $ "     #V '>6 1   %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 % %ez>76''.76'&763676&'&47667>'&5476.'&#'&?>4&'&432;2&'&5"H2 hQ'I- <# 4 OFB(+ 0  $ "      0 #'&   %: %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %)i~'.7>''.76'&763676&'&47667>'&5476.'&#'&?>4&'&432;2&'&5h 22 'I- <# 4 OFB(+ 0  $ "      0 #'&   %: %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 %&<|"546766546232'.#"2#"&7>'&''&47667>'&5476.'&#'&?>4&'&432;2&'&5.%4+ % *!81 #l9  ++ #&  # 4 OFB(+ 0  $ " I<-/  7 3 "!1 2#   %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 6X .7&'.7>&'&>?667>&'&<-%y*(/B - E W]'/'h-%r0?C $!q|%3a: ' y8 T"15^b *J.'#'&567>7>75'.'.'&676'&54/&'&7>,- QLCW2^2(1AK\, -2;   pm%7-94S-#RB T" %V  &lz1'[4# 38d!8%'"&#&'4?67&'&6763263232#.?632V4  +z, !D! (  X;T$? .) &T  k ;#X9 &    T '76&76?6 ; %  l  " %&?"546766546232'.#"'&676#"&6?>54'&47667>'&5476.'&#'&?>4&'&432;2&'&5.%4+ % *!81 #, $ "  # 4 OFB(+ 0  $ " I<-/  7 3 "! &3    %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 * +'.7>6&'&676>&'&"h 22VbOS .;a:r& -3/7%D :7L   # P78F <3=7.{xgRHe*(6'.76"'&763676&6&'&676>&'&.,E 7' ;VbOS .;a:r& -3/7%D :7L! 1  0+   %>78F <3=7.{xgRHe* (8F?>3'2#&'&>76&'&6&'&676>&'& *  Re1-F/$ !VbOS .;a:r& -3/7%D :7L?k#g$#V '>6 1  78F <3=7.{xgRHe**:H./&7>'2#&'&>76&'&6&'&676>&'&U4 3 1-F/$ !VbOS .;a:r& -3/7%D :7L j!#V '>6 1  78F <3=7.{xgRHe* &6D?>3''.76'&763676&6&'&676>&'& *  RP'I- <QVbOS .;a:r& -3/7%D :7L?k#g$ 0 #'&   %:78F <3=7.{xgRHe*(8F./&7>''.76'&763676&6&'&676>&'&U4 3 'I- <QVbOS .;a:r& -3/7%D :7L j! 0 #'&   %:78F <3=7.{xgRHe'<6/&'&667>&/&62&'&'5&'&'&632   k 9!E"   H(aU!   !*C*?Q ;Vh1 -#`[cB&"'s+V"&5467667>;2.'&##67>&/&62&'&'5&'&'&63C -':& 0'   %9!E"   H(aU!  4! "&    *C*?Q ;Vh1 -#`[cB&"'C'.76"'&763676&67>&/&62&'&'5&'&'&63,E 7' ;9!E"   H(aU! ! 1  0+   %>*C*?Q ;Vh1 -#`[cB&"'F2#&'&>76&'&67>&/&62&'&'5&'&'&631-F/$ !39!E"   H(aU! #V '>6 1  *C*?Q ;Vh1 -#`[cB&"'0[6#"&>?>2#&'&>76&'&67>&/&62&'&'5&'&'&63?  n 1 1-F/$ !9!E"   H(aU!   } !#V '>6 1  *C*?Q ;Vh1 -#`[cB&"7vNS46747632%#. * #  e8;V C?    #'.7>'6&7636'.76h 22     # K4-,3'/Z6#'&/&'&62#&'&>76&'&67>&/&62&'&'5&'&'&63 3  Yt1-F/$ !9!E"   H(aU!     p( #V '>6 1  *C*?Q ;Vh1 -#`[cB&"'.Y6#"&>?>'.76'&763676&67>&/&62&'&'5&'&'&63?  n 1 'I- <69!E"   H(aU!   } ! 0 #'&   %:*C*?Q ;Vh1 -#`[cB&"'-X6#'&/&'&6'.76'&763676&67>&/&62&'&'5&'&'&63 3  YY'I- <59!E"   H(aU!     p(  0 #'&   %:*C*?Q ;Vh1 -#`[cB&"''=h"546766?46232'.##"2#"&7>'&'67>&/&62&'&'5&'&'&63A-&3/ " j/ !l9  ++ #&  39!E"   H(aU! I!:0 #6/ !1 2#  *C*?Q ;Vh1 -#`[cB&"''@k"546766?46232'.##"'&676#"&6?>5467>&/&62&'&'5&'&'&63A-&3/ " j/ !, $ "  9!E"   H(aU! I!:0 #6/ ! &3   *C*?Q ;Vh1 -#`[cB&"'%P6/&'&66&7676#&7667>&/&62&'&'5&'&'&632   k     9!E"   H(aU!   !,+--*C*?Q ;Vh1 -#`[cB&"!ze6#'&/.'&6327>.'&'&'&6&'&'#'.67>767674&'&673 3  Y j3*&   +Y1*$e( G\-$+AD    &L/       p .'&'&'&6&'&'#'.67>767674&'&673 h2O:3  IOF &+3*&   +Y1*$e( G\-$+AD    &L/    E !+%  ;(b.'&'&'&6&'&'#'.67>767674&'&673t,E 7' ;93*&   +Y1*$e( G\-$+AD    &L/   ! 1  0+   %>76&'&327>.'&'&'&6&'&'#'.67>767674&'&673'1-F/$ !53*&   +Y1*$e( G\-$+AD    &L/   #V '>6 1  76'2#&'&>76&'&327>.'&'&'&6&'&'#'.67>767674&'&673] : * *3r1-F/$ !e3*&   +Y1*$e( G\-$+AD    &L/      5?#V '>6 1  76&'&327>.'&'&'&6&'&'#'.67>767674&'&673 b) 71-F/$ !l3*&   +Y1*$e( G\-$+AD    &L/   {  3#V '>6 1  76''.76'&763676&327>.'&'&'&6&'&'#'.67>767674&'&673] : * *3]'I- <33*&   +Y1*$e( G\-$+AD    &L/      5? 0 #'&   %:.'&'&'&6&'&'#'.67>767674&'&673 b) 7'I- <43*&   +Y1*$e( G\-$+AD    &L/   {  3 0 #'&   %:67>32'.2#"&7>'&'327>.'&'&'&6&'&'#'.67>767674&'&673 (>W+,0 >n:7,9  ++ #&  63*&   +Y1*$e( G\-$+AD    &L/   I /   %6'#" 1 2#  U67>32'.'&676#"&6?>54327>.'&'&'&6&'&'#'.67>767674&'&673 (>W+,0 >n:7,, $ "  3*&   +Y1*$e( G\-$+AD    &L/   I /   %6'#"  &3   P.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5 3  Y j3*&   +Y1*$e( G\-$+AD    &L/   3"     p ?6327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5  n 1 3*&   +Y1*$e( G\-$+AD    &L/   3" " {'.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5 h2O:3  IOF &+3*&   +Y1*$e( G\-$+AD    &L/   3"  E !+%  ;(b.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5t,E 7' ;93*&   +Y1*$e( G\-$+AD    &L/   3" ! 1  0+   %>76&'&327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5'1-F/$ !53*&   +Y1*$e( G\-$+AD    &L/   3" #V '>6 1  76'2#&'&>76&'&327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5] : * *3r1-F/$ !e3*&   +Y1*$e( G\-$+AD    &L/   3"    5?#V '>6 1  .'&'&'&6&'&'#'.67>767674&'&673432;2&'&5 b) 7'I- <43*&   +Y1*$e( G\-$+AD    &L/   3" {  3 0 #'&   %:67>32'.2#"&7>'&'327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5 (>W+,0 >n:7,9  ++ #&  63*&   +Y1*$e( G\-$+AD    &L/   3" I /   %6'#" 1 2#  U67>32'.'&676#"&6?>54327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5 (>W+,0 >n:7,, $ "  3*&   +Y1*$e( G\-$+AD    &L/   3" I /   %6'#"  &3   P'&%6'.7>,E 7' ;+ C6;6&(F!0 l=;@Y3,U! 1  0+   %>DnK4 nBBC59:EM)9X8D65I.BE,*6E2#&'&>76&'&'&'&=47>'&%6'.7>1-F/$ !+ C6;6&(F!0 l=;@Y3,U#V '>6 1  DnK4 nBBC59:EM)9X8D65I.BE,%[2#&'&>76&'&'&47667>'&5476.'&#'&?>4&'&1-F/$ !# 4 OFB(+ 0  $ #V '>6 1   %2;;4 B{L 94Q0% :nXA  $-_ &G%2#&'&>76&'&'&47667>'&5476.'&#'&?>4&'&432;2&'&51-F/$ !# 4 OFB(+ 0  $ " #V '>6 1   %2;;4 B{L 94Q0% :nXA  $-_ &G7 7 *+92#&'&>76&'&6&'&676>&'&1-F/$ !OVbOS .;a:r& -3/7%D :7L#V '>6 1  78F <3=7.{xgRHe #G6?676'6&7636'.764&4676;27>76&'.7.54522 hB  l$ &  -  #   R4-,3 7F > oj 9>73'52>7>323/52>&'&/.+"73'##'\V&". z  J0qr&  , 45<.'4326362&"&#"#"327>74&'&+;6676&'&+$ -JO ;A&>HRm<;W"O@#UFMKl8 6K9+4oM8I+"A'   /R@]_H];S62K #8 !F-7:>45<.'?!#.'.#"3'! -vW%++1K#]8   3@ +/6#!"&676!# @  = . } !H7:>45<.'?!#.'.+"3267653#4'.+;2>7673!/! -tY%A B.)xF42  23FY06=# *%Yt      ==  ("W70$!232>7673!"&54767#&#?P0.K5 ;Y Y)KP- 5: --d8r!A7:>45<.'?"!547"3'5265!3'! -s}7G + G7}s8#  -t|7G Gt|7   "   6/>'.63!53#5!#'276'.'& 9>U,%Yr eSP 76 *i@bE\ M=56.'?"3/$"/v89%/8v    # !W7:>45<.'?">?6'7"3/5326'&/.'#3'! -s}7T   * gm?<"EF$0*fq & 0+t|7      $-"BB! 7.   072>776323/5274&'&'3' (0  :-lqL  _ 1" !J&A.    Z  %nJ3?3"3'52>&6'#".''&'#3'52765<.'&#% 8#  -qy5    S]`-O-3"    - )  /1 ,) $  !0%#"&'&'3'527654.'54'7"e  Q]`-J 2 ^L-`]L/ / +"% ( $% (*p&<!#4&#&#"&#!"#""#?3!53#5!#33!272>7653!/7, 2 / VRa j? "X"1""X3333cM  !!$K88K6,>'.6732>76'. 9>U,%Yr eSP &8 0G*/A6(b4R& &c&8_8ܓAMHN-@7,5 )AyN^2!?7:>45<.'7!37*3'52>&6'!3'! -7`-"()t -t|7  Vt|7       )) "p+<7:>45<.'43>;2+3'"32>7654'.#" -$';+"O-(?F'5=r@x Gt|7i*->N8   *DI!GH!V'&676363&5&67674&3   (-. ' !b8 5;( *4?7:463!#.'&+26>73!"&74?67>5.'&7 ' 481Y2a #v:/RKpS8%  ' =J( G("'C /A3-=$.%3'526765<.'&#"#73?3#.#"(iEO2  64;#OJ# $;43Y*   2A@@@2 6A72676=4.'&&'&67667676'.'&3/D+  "2u #*5HV%%Q;6#+ !a"8?  #(.dN*1d!& + ,}&B4 '# D5X"7/;H7"2#3'52>=.'&6754'.#>7676'&'.'>A5 29@^B^Q*J>A5 s y*J1!74Sv.!6 5]=9Y,5  5 lFQ 5  ='6P,$x^3$Q%2674/&'3'527>?>4/.#57">?>'?"3/. i !!e`)C)  Ar#>/qt.g8 f`)DA"c4*-0pt   % 'a S+!-5N 7\47"67>76;2"3'52676=4.&'&'.'.'&76;2X$\>C,   %  0A>G,   # S'V) K$!#7 U]'\ % 7 6%  H(8 ,T%#"+"'&5'32;.767>3276?476;+&'&747>&'.    >= 43/ lz|0>W 4<(=>  p66;%  8 ([MR\.:M d?Na&VG1 8  4]K)D3>JX.+P`=rLA 86'.76'.2>56.'?"3/0%''&$"/v89%/8v+6666    # 6A U6&7676&762676=4.'&&'&67667676'.'&3/( "( ( "( D+  "2u #*5HV%%Q;6#+ !a"8?@)%)#)%)# #(.dN*1d!& + ,}&B4 '# D5X")GX>?676"2>76'.5'&'.7>7>;2'6&'&'&76   +b+ (&\&$ ) I-5  6 + ; 9 )F 1>6I1  {?  ): 3$ )9A.=>2.  & +0L"7b=) Q6?676".#"32676&'&#67>76'.'&7>7.767622 h(@#d ."  1( US  $k1,@! 9J  #   D% %  - )  5 & B+0/ 5B '"  %N.?676'&47667>'&5476.'&#'&?>4&'& 9 * *3# 4 OFB(+ 0  $  )  5?m %2;;4 B{L 94Q0% :nXA  $-_ &G5 16?6764&4676;27>76&'.7.54522 h $ &  -  #   f 7F > oj'"M?>76'6&7676#&7667>&/&62&'&'5&'&'&63# *bA    9!E"   H(aU! Z?!  {O,+--*C*?Q ;Vh1 -#`[cB&")5F%2>76'.5'&'.7>7>;2'6&'&'&76p+ (&\&$ ) I-5  6 + ; 9 )F 1>6?  ): 3$ )9A.=>2.  & +0L"7b="M7'.>765476'&6&'&27>'&'&#&'47>76C*  L>,)8.%#!#h0D$5R 20!#R90#-$' JS $d8`k>y=2 :9)$2t\# 2 8J3*F 1   )/?"    18?%6767>'"'.654674654&'.&'&5676!( 1 *5 +1"+0$Vl' . ,)"wR! 1r~&#)#  ;*BLA8)/A.'&676.'&&'&'.7>7>&'&'&I:"CON(4(  &A6*SL"@%I+80:2!-:+ !5C# 8m "-'  !0}l+** H5z649z,&x=+ B-)C".#"32676&'&#67>76'.'&7>7.7676^(@#d ."  1( US  $k1,@! 9J VD% %  - )  5 & B+0/ 5B '"  )uD"&54767>26'.763276'&#.'.>7>7.' $ 7l 2|:] O= l'$ r#  h ^ **4& S6=U,  E  ! #ZItl0O  , Q &  )mhG,u.%?'&47667>'&5476.'&#'&?>4&'&c# 4 OFB(+ 0  $  %2;;4 B{L 94Q0% :nXA  $-_ &G(.6'.7>7#356'&4+767>)+>R +9SPVY{Jg U}~I+&>_%.e~v~ F &I+m 6#4&4676;27>76&'.7.548$ &  - z 7F > ojD%2>&'&7&76?>47465&'&'&'&7>>7676e.#  X./7V #9/  0:) , '8k\ ("E/Ag# 9a  ;u,(73"+"&6?6?6&'&#"'&67672&'.%f ( (,B .H   '4Y%% * ,$ax PYB p $ <.)L(. (,0wx)F".''.'#'.?4.547632543272>76# [("2D   G)!7>54.676'&54/&7>BR "J4 ',)\3O #5DYa,   6>)u`b#"&676>766?2'.763276&'&#".'.6767>7.7>?'J' -  _X H .#.(7 a"< @D'R "U "C)(>' A 3  0!$E4 >8+   Ng06) ''H*6&'&676>&'&VbOS .;a:r& -3/7%D :7L78F <3=7.{xgRHe=+67676&'.=#&'&>7>4=""&'&76763!2 p   U 0   C  !"7  j)"B&  $&Qa   *o ,*)7'&'&=47>'&%6'.7>A+ C6;6&(F!0 l=;@Y3,UlDnK4 nBBC59:EM)9X8D65I.BE,(0>#"6'.7632>'&#&&'.6v: A]I D9I d&1  u 7($g3* ' 4%(? B'  CWi*)2".+'.7>73676&'& ; 7" ;I/8>/8&*&/&62&'&'5&'&'&63{9!E"   H(aU! \*C*?Q ;Vh1 -#`[cB&"*L_%2656=4&546547>""'"'.>76'.'&'&>76767>7>76&'& 4C52 .76'&'&'.'&66?>;26'.'& $O $ =D  ,2 $O $ =D  ,2D/  " 8 2kP D/ " 8 2kP)N%'&5&72>76'4'&76#&'4>5765"'&'&7>3726*5f:<8  I>G*o-Iw,  .u--ol  $ ,]J3<!zO%327>.'&'&'&6&'&'#'.67>767674&'&673Z3*&   +Y1*$e( G\-$+AD    &L/   s36&764&4676;27>76&'.7.54& "%&' `$ &  - q, + + *# 7F > oj'r ?6'.76'.67>&/&62&'&'5&'&'&63E# *# 9!E"   H(aU! [757 5*C*?Q ;Vh1 -#`[cB&"* +6?6766&'&676>&'&22 h]VbOS .;a:r& -3/7%D :7L #   I78F <3=7.{xgRHe'9?>7667>&/&62&'&'5&'&'&63# *b@9!E"   H(aU! Z?!  {*C*?Q ;Vh1 -#`[cB&"!z_6#"&>?6327>.'&'&'&6&'&'#'.67>767674&'&673  n 1 3*&   +Y1*$e( G\-$+AD    &L/   " {'76&'&327>.'&'&'&6&'&'#'.67>767674&'&673432;2&'&5 b) 71-F/$ !l3*&   +Y1*$e( G\-$+AD    &L/   3" {  3#V '>6 1  ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~u10144u10145u10146u10147uni03DAuni03DCuni03D8uni03E0uni1FBEuni1FBCuni1FCCuni1FFCuni1FC1uni1FD7uni1FE7uni03D1tonosuni1FEFuni1FC0uni037Auni1FBFuni1FFEuni1FDEuni1FDDuni1FCEuni1FCDuni1FDFuni1FCF dieresistonosuni1F70uni1FB6uni1F00uni1F01uni1F05uni1F03uni1F04uni1F02uni1F07uni1F06uni1FB4uni1FB2uni1FB7uni1F80uni1F81uni1F85uni1F83uni1F84uni1F82uni1F87uni1F86uni1F72uni1F10uni1F11uni1F15uni1F13uni1F14uni1F12uni1F31uni1F30uni1F35uni1F33uni1F34uni1F32uni1F37uni1F36uni1F76uni1FD6uni1FD2uni1FB3uni1FF3uni1FC3uni1F74uni1FC6uni1F20uni1F25uni1F23uni1F24uni1F22uni0374uni03DDuni1F27uni1F26uni1FC4uni1FC2uni1FC7uni1F90uni1F95uni1F93uni1F94uni1F92uni1F97uni03D9uni03E1uni03DBuni0375uni1F96uni1F78uni1F40uni1F45uni1F43uni1F44uni1F42uni1F7Auni1FE6uni1F50uni1F51uni1F55uni03DFuni1FEDuni1F53uni1F54uni1F52uni1F57uni1F56uni1FE2uni1F7Cuni1FF6uni1F60uni1F61uni1F65uni1F63uni1F64uni1F62uni1F67uni1F66uni1FF2uni1FF4uni1FF7uni1FA0uni1FA1uni1FA5 anoteleiauni1FA2uni1FA7uni1FA6uni1FE4uni1FE5uni1F21uni1F91uni1F41iotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni1FA3  grek ,grekkern|1l88888lN`nx~nnn88uu    uu YY  {{uu   YY  uuuu ,!"#$%')*+,-./0245defhwxyz{}1 =>?ACDEFGdefh>aHaS+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fcsbpg.xml0000644000175000017500000005746712275735442031336 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/jlm_fctrpg.xml0000644000175000017500000003211412275735442031335 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/greek/fonts/language_greek.xml0000644000175000017500000000354312275735442032152 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/NthRoot.java0000644000175000017500000000742512275735442026505 0ustar sylvestresylvestre/* NthRoot.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing an nth-root construction. */ public class NthRoot extends Atom { private static final String sqrtSymbol = "sqrt"; private static final float FACTOR = 0.55f; // base atom to be put under the root sign private final Atom base; // root atom to be put in the upper left corner above the root sign private final Atom root; public NthRoot(Atom base, Atom root) { this.base = base == null ? new EmptyAtom() : base; this.root = root == null ? new EmptyAtom() : root; } public Box createBox(TeXEnvironment env) { // first create a simple square root construction TeXFont tf = env.getTeXFont(); int style = env.getStyle(); // calculate minimum clearance clr float clr, drt = tf.getDefaultRuleThickness(style); if (style < TeXConstants.STYLE_TEXT) clr = tf.getXHeight(style, tf.getChar(sqrtSymbol, style).getFontCode()); else clr = drt; clr = drt + Math.abs(clr) / 4 ; // cramped style for the formula under the root sign Box bs = base.createBox(env.crampStyle()); HorizontalBox b = new HorizontalBox(bs); b.add(new SpaceAtom(TeXConstants.UNIT_MU, 1, 0, 0).createBox(env.crampStyle())); // create root sign float totalH = b.getHeight() + b.getDepth(); Box rootSign = DelimiterFactory.create(sqrtSymbol, env, totalH + clr + drt); // add half the excess to clr float delta = rootSign.getDepth() - (totalH + clr); clr += delta / 2; // create total box rootSign.setShift(-(b.getHeight() + clr)); OverBar ob = new OverBar(b, clr, rootSign.getHeight()); ob.setShift(-(b.getHeight() + clr + drt)); HorizontalBox squareRoot = new HorizontalBox(rootSign); squareRoot.add(ob); if (root == null) // simple square root return squareRoot; else { // nthRoot, not a simple square root // create box from root Box r = root.createBox(env.rootStyle()); // shift root up float bottomShift = FACTOR * (squareRoot.getHeight() + squareRoot.getDepth()); r.setShift(squareRoot.getDepth() - r.getDepth() - bottomShift); // negative kern Box negativeKern = new SpaceAtom(TeXConstants.UNIT_MU, -10f, 0, 0).createBox(env); // arrange both boxes together with the negative kern Box res = new HorizontalBox(); float pos = r.getWidth() + negativeKern.getWidth(); if (pos < 0) res.add(new StrutBox(-pos, 0, 0, 0)); res.add(r); res.add(negativeKern); res.add(squareRoot); return res; } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ItAtom.java0000644000175000017500000000337712275735442026307 0ustar sylvestresylvestre/* ItAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a italic atom. */ public class ItAtom extends Atom { private Atom base; public ItAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { Box box; if (base != null) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setIt(true); box = base.createBox(env); } else { box = new StrutBox(0, 0, 0, 0); } return box; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TeXEnvironment.java0000644000175000017500000001644212275735442030034 0ustar sylvestresylvestre/* TeXEnvironment.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.awt.Color; /** * Contains the used TeXFont-object, color settings and the current style in which a * formula must be drawn. It's used in the createBox-methods. Contains methods that * apply the style changing rules for subformula's. */ public class TeXEnvironment { // colors private Color background = null, color = null; // current style private int style = TeXConstants.STYLE_DISPLAY; // TeXFont used private TeXFont tf; // last used font private int lastFontId = TeXFont.NO_FONT; private float textwidth = Float.POSITIVE_INFINITY; private String textStyle; private boolean smallCap; private float scaleFactor = 1; private int interlineUnit; private float interline; public boolean isColored = false; public TeXEnvironment(int style, TeXFont tf) { this(style, tf, null, null); } public TeXEnvironment(int style, TeXFont tf, int widthUnit, float textwidth) { this(style, tf, null, null); this.textwidth = textwidth * SpaceAtom.getFactor(widthUnit, this); } private TeXEnvironment(int style, TeXFont tf, Color bg, Color c) { this.style = style; this.tf = tf; background = bg; color = c; setInterline(TeXConstants.UNIT_EX, 1f); } private TeXEnvironment(int style, float scaleFactor, TeXFont tf, Color bg, Color c, String textStyle, boolean smallCap) { this.style = style; this.scaleFactor = scaleFactor; this.tf = tf; this.textStyle = textStyle; this.smallCap = smallCap; background = bg; color = c; setInterline(TeXConstants.UNIT_EX, 1f); } public void setInterline(int unit, float len) { this.interline = len; this.interlineUnit = unit; } public float getInterline() { return interline * SpaceAtom.getFactor(interlineUnit, this); } public void setTextwidth(int widthUnit, float textwidth) { this.textwidth = textwidth * SpaceAtom.getFactor(widthUnit, this); } public float getTextwidth() { return textwidth; } public void setScaleFactor(float f) { scaleFactor = f; } public float getScaleFactor() { return scaleFactor; } protected TeXEnvironment copy() { return new TeXEnvironment(style, scaleFactor, tf, background, color, textStyle, smallCap); } protected TeXEnvironment copy(TeXFont tf) { TeXEnvironment te = new TeXEnvironment(style, scaleFactor, tf, background, color, textStyle, smallCap); te.textwidth = textwidth; te.interline = interline; te.interlineUnit = interlineUnit; return te; } /** * @return a copy of the environment, but in a cramped style. */ public TeXEnvironment crampStyle() { TeXEnvironment s = copy(); s.style = (style % 2 == 1 ? style : style + 1); return s; } /** * * @return a copy of the environment, but in denominator style. */ public TeXEnvironment denomStyle() { TeXEnvironment s = copy(); s.style = 2 * (style / 2) + 1 + 2 - 2 * (style / 6); return s; } /** * * @return the background color setting */ public Color getBackground() { return background; } /** * * @return the foreground color setting */ public Color getColor() { return color; } /** * * @return the point size of the TeXFont */ public float getSize() { return tf.getSize(); } /** * * @return the current style */ public int getStyle() { return style; } public void setStyle(int style) { this.style = style; } /** * @return the current textStyle */ public String getTextStyle() { return textStyle; } public void setTextStyle(String textStyle) { this.textStyle = textStyle; } /** * @return the current textStyle */ public boolean getSmallCap() { return smallCap; } public void setSmallCap(boolean smallCap) { this.smallCap = smallCap; } /** * * @return the TeXFont to be used */ public TeXFont getTeXFont() { return tf; } /** * * @return a copy of the environment, but in numerator style. */ public TeXEnvironment numStyle() { TeXEnvironment s = copy(); s.style = style + 2 - 2 * (style / 6); return s; } /** * Resets the color settings. * */ public void reset() { color = null; background = null; } /** * * @return a copy of the environment, but with the style changed for roots */ public TeXEnvironment rootStyle() { TeXEnvironment s = copy(); s.style = TeXConstants.STYLE_SCRIPT_SCRIPT; return s; } /** * * @param c the background color to be set */ public void setBackground(Color c) { background = c; } /** * * @param c the foreground color to be set */ public void setColor(Color c) { color = c; } /** * * @return a copy of the environment, but in subscript style. */ public TeXEnvironment subStyle() { TeXEnvironment s = copy(); s.style = 2 * (style / 4) + 4 + 1; return s; } /** * * @return a copy of the environment, but in superscript style. */ public TeXEnvironment supStyle() { TeXEnvironment s = copy(); s.style = 2 * (style / 4) + 4 + (style % 2); return s; } public float getSpace() { return tf.getSpace(style) * tf.getScaleFactor(); } public void setLastFontId(int id) { lastFontId = id; } public int getLastFontId() { // if there was no last font id (whitespace boxes only), use default "mu font" return (lastFontId == TeXFont.NO_FONT ? tf.getMuFontId() : lastFontId); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ColorAtom.java0000644000175000017500000002562712275735442027013 0ustar sylvestresylvestre/* ColorAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; /** * An atom representing the foreground and background color of an other atom. */ public class ColorAtom extends Atom implements Row { public static Map Colors = new HashMap(); // background color private final Color background; // foreground color private final Color color; // RowAtom for which the colorsettings apply private final RowAtom elements; static { initColors(); } /** * Creates a new ColorAtom that sets the given colors for the given atom. * Null for a color means: no specific color set for this atom. * * @param atom the atom for which the given colors have to be set * @param bg the background color * @param c the foreground color */ public ColorAtom(Atom atom, Color bg, Color c) { elements = new RowAtom(atom); background = bg; color = c; } /** * Creates a ColorAtom that overrides the colors of the given ColorAtom if the given * colors are not null. If they're null, the old values are used. * * @param bg the background color * @param c the foreground color * @param old the ColorAtom for which the colorsettings should be overriden with the * given colors. */ public ColorAtom(Color bg, Color c, ColorAtom old) { elements = new RowAtom(old.elements); background = (bg == null ? old.background : bg); color = (c == null ? old.color : c); } public Box createBox(TeXEnvironment env) { env.isColored = true; TeXEnvironment copy = env.copy(); if (background != null) copy.setBackground(background); if (color != null) copy.setColor(color); return elements.createBox(copy); } public int getLeftType() { return elements.getLeftType(); } public int getRightType() { return elements.getRightType(); } public void setPreviousAtom(Dummy prev) { elements.setPreviousAtom(prev); } public static Color getColor(String s) { if (s != null && s.length() != 0) { s = s.trim(); if (s.charAt(0) == '#') { return Color.decode(s); } else if (s.indexOf(',') != -1) { StringTokenizer toks = new StringTokenizer(s, ";,"); int n = toks.countTokens(); if (n == 3) { // RGB model try { String R = toks.nextToken().trim(); String G = toks.nextToken().trim(); String B = toks.nextToken().trim(); float r = Float.parseFloat(R); float g = Float.parseFloat(G); float b = Float.parseFloat(B); if (r == (int) r && g == (int) g && b == (int) b && R.indexOf('.') == -1 && G.indexOf('.') == -1 && B.indexOf('.') == -1) { int ir = (int) Math.min(255, Math.max(0, r)); int ig = (int) Math.min(255, Math.max(0, g)); int ib = (int) Math.min(255, Math.max(0, b)); return new Color(ir, ig, ib); } else { r = (float) Math.min(1, Math.max(0, r)); g = (float) Math.min(1, Math.max(0, g)); b = (float) Math.min(1, Math.max(0, b)); return new Color(r, g, b); } } catch (NumberFormatException e) { return Color.black; } } else if (n == 4) { // CMYK model try { float c = Float.parseFloat(toks.nextToken().trim()); float m = Float.parseFloat(toks.nextToken().trim()); float y = Float.parseFloat(toks.nextToken().trim()); float k = Float.parseFloat(toks.nextToken().trim()); c = (float) Math.min(1, Math.max(0, c)); m = (float) Math.min(1, Math.max(0, m)); y = (float) Math.min(1, Math.max(0, y)); k = (float) Math.min(1, Math.max(0, k)); return convColor(c, m, y, k); } catch (NumberFormatException e) { return Color.black; } } } Color c = Colors.get(s.toLowerCase()); if (c != null) { return c; } else { if (s.indexOf('.') != -1) { try { float g = (float) Math.min(1, Math.max(Float.parseFloat(s), 0)); return new Color(g, g, g); } catch (NumberFormatException e) { } } return Color.decode("#" + s); } } return Color.black; } private static void initColors() { Colors.put("black", Color.black); Colors.put("white", Color.white); Colors.put("red", Color.red); Colors.put("green", Color.green); Colors.put("blue", Color.blue); Colors.put("cyan", Color.cyan); Colors.put("magenta", Color.magenta); Colors.put("yellow", Color.yellow); Colors.put("greenyellow", convColor(0.15f, 0f, 0.69f, 0f)); Colors.put("goldenrod", convColor(0f, 0.10f, 0.84f, 0f)); Colors.put("dandelion", convColor(0f, 0.29f, 0.84f, 0f)); Colors.put("apricot", convColor(0f, 0.32f, 0.52f, 0f)); Colors.put("peach", convColor(0f, 0.50f, 0.70f, 0f)); Colors.put("melon", convColor(0f, 0.46f, 0.50f, 0f)); Colors.put("yelloworange", convColor(0f, 0.42f, 1f, 0f)); Colors.put("orange", convColor(0f, 0.61f, 0.87f, 0f)); Colors.put("burntorange", convColor(0f, 0.51f, 1f, 0f)); Colors.put("bittersweet", convColor(0f, 0.75f, 1f, 0.24f)); Colors.put("redorange", convColor(0f, 0.77f, 0.87f, 0f)); Colors.put("mahogany", convColor(0f, 0.85f, 0.87f, 0.35f)); Colors.put("maroon", convColor(0f, 0.87f, 0.68f, 0.32f)); Colors.put("brickred", convColor(0f, 0.89f, 0.94f, 0.28f)); Colors.put("orangered", convColor(0f, 1f, 0.50f, 0f)); Colors.put("rubinered", convColor(0f, 1f, 0.13f, 0f)); Colors.put("wildstrawberry", convColor(0f, 0.96f, 0.39f, 0f)); Colors.put("salmon", convColor(0f, 0.53f, 0.38f, 0f)); Colors.put("carnationpink", convColor(0f, 0.63f, 0f, 0f)); Colors.put("magenta", convColor(0f, 1f, 0f, 0f)); Colors.put("violetred", convColor(0f, 0.81f, 0f, 0f)); Colors.put("rhodamine", convColor(0f, 0.82f, 0f, 0f)); Colors.put("mulberry", convColor(0.34f, 0.90f, 0f, 0.02f)); Colors.put("redviolet", convColor(0.07f, 0.90f, 0f, 0.34f)); Colors.put("fuchsia", convColor(0.47f, 0.91f, 0f, 0.08f)); Colors.put("lavender", convColor(0f, 0.48f, 0f, 0f)); Colors.put("thistle", convColor(0.12f, 0.59f, 0f, 0f)); Colors.put("orchid", convColor(0.32f, 0.64f, 0f, 0f)); Colors.put("darkorchid", convColor(0.40f, 0.80f, 0.20f, 0f)); Colors.put("purple", convColor(0.45f, 0.86f, 0f, 0f)); Colors.put("plum", convColor(0.50f, 1f, 0f, 0f)); Colors.put("violet", convColor(0.79f, 0.88f, 0f, 0f)); Colors.put("royalpurple", convColor(0.75f, 0.90f, 0f, 0f)); Colors.put("blueviolet", convColor(0.86f, 0.91f, 0f, 0.04f)); Colors.put("periwinkle", convColor(0.57f, 0.55f, 0f, 0f)); Colors.put("cadetblue", convColor(0.62f, 0.57f, 0.23f, 0f)); Colors.put("cornflowerblue", convColor(0.65f, 0.13f, 0f, 0f)); Colors.put("midnightblue", convColor(0.98f, 0.13f, 0f, 0.43f)); Colors.put("navyblue", convColor(0.94f, 0.54f, 0f, 0f)); Colors.put("royalblue", convColor(1f, 0.50f, 0f, 0f)); Colors.put("cerulean", convColor(0.94f, 0.11f, 0f, 0f)); Colors.put("processblue", convColor(0.96f, 0f, 0f, 0f)); Colors.put("skyblue", convColor(0.62f, 0f, 0.12f, 0f)); Colors.put("turquoise", convColor(0.85f, 0f, 0.20f, 0f)); Colors.put("tealblue", convColor(0.86f, 0f, 0.34f, 0.02f)); Colors.put("aquamarine", convColor(0.82f, 0f, 0.30f, 0f)); Colors.put("bluegreen", convColor(0.85f, 0f, 0.33f, 0f)); Colors.put("emerald", convColor(1f, 0f, 0.50f, 0f)); Colors.put("junglegreen", convColor(0.99f, 0f, 0.52f, 0f)); Colors.put("seagreen", convColor(0.69f, 0f, 0.50f, 0f)); Colors.put("forestgreen", convColor(0.91f, 0f, 0.88f, 0.12f)); Colors.put("pinegreen", convColor(0.92f, 0f, 0.59f, 0.25f)); Colors.put("limegreen", convColor(0.50f, 0f, 1f, 0f)); Colors.put("yellowgreen", convColor(0.44f, 0f, 0.74f, 0f)); Colors.put("springgreen", convColor(0.26f, 0f, 0.76f, 0f)); Colors.put("olivegreen", convColor(0.64f, 0f, 0.95f, 0.40f)); Colors.put("rawsienna", convColor(0f, 0.72f, 1f, 0.45f)); Colors.put("sepia", convColor(0f, 0.83f, 1f, 0.70f)); Colors.put("brown", convColor(0f, 0.81f, 1f, 0.60f)); Colors.put("tan", convColor(0.14f, 0.42f, 0.56f, 0f)); Colors.put("gray", convColor(0f, 0f, 0f, 0.50f)); } private static Color convColor(final float c, final float m, final float y, final float k) { final float kk = 1 - k; return new Color(kk * (1 - c), kk * (1 - m), kk * (1 - y)); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FontInfo.java0000644000175000017500000002013412275735442026622 0ustar sylvestresylvestre/* FontInfo.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.util.HashMap; import java.util.Map; /** * Contains all the font information for 1 font. */ public class FontInfo { /** * Maximum number of character codes in a TeX font. */ public static final int NUMBER_OF_CHAR_CODES = 256; private static Map fonts = new HashMap(); private class CharCouple { private final char left, right; CharCouple(char l, char r) { left = l; right = r; } public boolean equals(Object o) { CharCouple lig = (CharCouple) o; return left == lig.left && right == lig.right; } public int hashCode() { return (left + right) % 128; } } // ID private final int fontId; // font private Font font; private final Object base; private final String path; private final String fontName; private final Map lig = new HashMap (); private final Map kern = new HashMap(); private float[][] metrics; private CharFont[] nextLarger; private int[][] extensions; private HashMap unicode = null; // skew character of the font (used for positioning accents) private char skewChar = (char) -1; // general parameters for this font private final float xHeight; private final float space; private final float quad; private int boldId; private int romanId; private int ssId; private int ttId; private int itId; protected final String boldVersion; protected final String romanVersion; protected final String ssVersion; protected final String ttVersion; protected final String itVersion; public FontInfo(int fontId, Object base, String path, String fontName, int unicode, float xHeight, float space, float quad, String boldVersion, String romanVersion, String ssVersion, String ttVersion, String itVersion) { this.fontId = fontId; this.base = base; this.path = path; this.fontName = fontName; this.xHeight = xHeight; this.space = space; this.quad = quad; this.boldVersion = boldVersion; this.romanVersion = romanVersion; this.ssVersion = ssVersion; this.ttVersion = ttVersion; this.itVersion = itVersion; int num = NUMBER_OF_CHAR_CODES; if (unicode != 0) { this.unicode = new HashMap(unicode); num = unicode; } metrics = new float[num][]; nextLarger = new CharFont[num]; extensions = new int[num][]; fonts.put(fontId, this); } /** * * @param left * left character * @param right * right character * @param k * kern value */ public void addKern(char left, char right, float k) { kern.put(new CharCouple(left, right), new Float(k)); } /** * @param left * left character * @param right * right character * @param ligChar * ligature to replace left and right character */ public void addLigature(char left, char right, char ligChar) { lig.put(new CharCouple(left, right), new Character(ligChar)); } public int[] getExtension(char ch) { if (unicode == null) return extensions[ch]; return extensions[unicode.get(ch)]; } public float getKern(char left, char right, float factor) { Object obj = kern.get(new CharCouple(left, right)); if (obj == null) return 0; else return ((Float) obj).floatValue() * factor; } public CharFont getLigature(char left, char right) { Object obj = lig.get(new CharCouple(left, right)); if (obj == null) return null; else return new CharFont(((Character) obj).charValue(), fontId); } public float[] getMetrics(char c) { if (unicode == null) return metrics[c]; return metrics[unicode.get(c)]; } public CharFont getNextLarger(char ch) { if (unicode == null) return nextLarger[ch]; return nextLarger[unicode.get(ch)]; } public float getQuad(float factor) { return quad * factor; } /** * @return the skew character of the font (for the correct positioning of * accents) */ public char getSkewChar() { return skewChar; } public float getSpace(float factor) { return space * factor; } public float getXHeight(float factor) { return xHeight * factor; } public boolean hasSpace() { return space > TeXFormula.PREC; } public void setExtension(char ch, int[] ext) { if (unicode == null) extensions[ch] = ext; else if (!unicode.containsKey(ch)) { char s = (char)unicode.size(); unicode.put(ch, s); extensions[s] = ext; } else extensions[unicode.get(ch)] = ext; } public void setMetrics(char c, float[] arr) { if (unicode == null) metrics[c] = arr; else if (!unicode.containsKey(c)) { char s = (char)unicode.size(); unicode.put(c, s); metrics[s] = arr; } else metrics[unicode.get(c)] = arr; } public void setNextLarger(char ch, char larger, int fontLarger) { if (unicode == null) nextLarger[ch] = new CharFont(larger, fontLarger); else if (!unicode.containsKey(ch)) { char s = (char)unicode.size(); unicode.put(ch, s); nextLarger[s] = new CharFont(larger, fontLarger); } else nextLarger[unicode.get(ch)] = new CharFont(larger, fontLarger); } public void setSkewChar(char c) { skewChar = c; } public int getId() { return fontId; } public int getBoldId() { return boldId; } public int getRomanId() { return romanId; } public int getTtId() { return ttId; } public int getItId() { return itId; } public int getSsId() { return ssId; } public void setSsId(int id) { ssId = id == -1 ? fontId : id; } public void setTtId(int id) { ttId = id == -1 ? fontId : id; } public void setItId(int id) { itId = id == -1 ? fontId : id; } public void setRomanId(int id) { romanId = id == -1 ? fontId : id; } public void setBoldId(int id) { boldId = id == -1 ? fontId : id; } public Font getFont() { if (font == null) { if (base == null) { font = DefaultTeXFontParser.createFont(path); } else { font = DefaultTeXFontParser.createFont(base.getClass().getResourceAsStream(path), fontName); } } return font; } public static Font getFont(int id) { return fonts.get(id).getFont(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/CharSymbol.java0000644000175000017500000000471312275735442027150 0ustar sylvestresylvestre/* CharSymbol.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An common superclass for atoms that represent one single character * and access the font information. */ public abstract class CharSymbol extends Atom { /** * Mrow will mark certain CharSymbol atoms as a text symbol. * Msubsup wil use this property for a certain spacing rule. */ private boolean textSymbol = false; /** * Mark as text symbol (used by Dummy) */ public void markAsTextSymbol() { textSymbol = true; } /** * Remove the mark so the atom remains unchanged (used by Dummy) */ public void removeMark() { textSymbol = false; } /** * Tests if this atom is marked as a text symbol (used by Msubsup) * * @return whether this CharSymbol is marked as a text symbol */ public boolean isMarkedAsTextSymbol() { return textSymbol; } /** * Get the CharFont-object that uniquely identifies the character that is represented * by this atom. * * @param tf the TeXFont containing all font related information * @return a CharFont */ public abstract CharFont getCharFont(TeXFont tf); } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/GlueBox.java0000644000175000017500000000343212275735442026447 0ustar sylvestresylvestre/* GlueBox.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; /** * A box representing glue. */ public class GlueBox extends Box { protected float stretch = 0, shrink = 0; public GlueBox(float space, float stretch, float shrink) { this.width = space; this.stretch = stretch; this.shrink = shrink; } public void draw(Graphics2D g2, float x, float y) { // no visible effect } public int getLastFontId() { return TeXFont.NO_FONT; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/OvalAtom.java0000644000175000017500000000306612275735442026627 0ustar sylvestresylvestre/* ShadowAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; /** * An atom representing a boxed base atom. */ public class OvalAtom extends FBoxAtom { public OvalAtom(Atom base) { super(base); } public Box createBox(TeXEnvironment env) { return new OvalBox((FramedBox) super.createBox(env)); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/BoldAtom.java0000644000175000017500000000340512275735442026603 0ustar sylvestresylvestre/* BoldAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a bold atom. */ public class BoldAtom extends Atom { private Atom base; public BoldAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { Box box; if (base != null) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setBold(true); box = base.createBox(env); } else { box = new StrutBox(0, 0, 0, 0); } return box; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/AccentedAtom.java0000644000175000017500000001567212275735442027442 0ustar sylvestresylvestre/* AccentedAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom with an accent symbol above it. */ public class AccentedAtom extends Atom { // accent symbol private final SymbolAtom accent; private boolean acc = false; private boolean changeSize = true; // base atom protected Atom base = null; protected Atom underbase = null; public AccentedAtom(Atom base, Atom accent) throws InvalidSymbolTypeException { this.base = base; if (base instanceof AccentedAtom) underbase = ((AccentedAtom)base).underbase; else underbase = base; if (!(accent instanceof SymbolAtom)) throw new InvalidSymbolTypeException("Invalid accent"); this.accent = (SymbolAtom)accent; this.acc = true; } public AccentedAtom(Atom base, Atom accent, boolean changeSize) throws InvalidSymbolTypeException { this(base, accent); this.changeSize = changeSize; } /** * Creates an AccentedAtom from a base atom and an accent symbol defined by its name * * @param base base atom * @param accentName name of the accent symbol to be put over the base atom * @throws InvalidSymbolTypeException if the symbol is not defined as an accent ('acc') * @throws SymbolNotFoundException if there's no symbol defined with the given name */ public AccentedAtom(Atom base, String accentName) throws InvalidSymbolTypeException, SymbolNotFoundException { accent = SymbolAtom.get(accentName); if (accent.type == TeXConstants.TYPE_ACCENT) { this.base = base; if (base instanceof AccentedAtom) underbase = ((AccentedAtom)base).underbase; else underbase = base; } else throw new InvalidSymbolTypeException("The symbol with the name '" + accentName + "' is not defined as an accent (" + TeXSymbolParser.TYPE_ATTR + "='acc') in '" + TeXSymbolParser.RESOURCE_NAME + "'!"); } /** * Creates an AccentedAtom from a base atom and an accent symbol defined as a TeXFormula. * This is used for parsing MathML. * * @param base base atom * @param acc TeXFormula representing an accent (SymbolAtom) * @throws InvalidTeXFormulaException if the given TeXFormula does not represent a * single SymbolAtom (type "TeXConstants.TYPE_ACCENT") * @throws InvalidSymbolTypeException if the symbol is not defined as an accent ('acc') */ public AccentedAtom(Atom base, TeXFormula acc) throws InvalidTeXFormulaException, InvalidSymbolTypeException { if (acc == null) throw new InvalidTeXFormulaException( "The accent TeXFormula can't be null!"); else { Atom root = acc.root; if (root instanceof SymbolAtom) { accent = (SymbolAtom) root; if (accent.type == TeXConstants.TYPE_ACCENT) this.base = base; else throw new InvalidSymbolTypeException( "The accent TeXFormula represents a single symbol with the name '" + accent.getName() + "', but this symbol is not defined as an accent (" + TeXSymbolParser.TYPE_ATTR + "='acc') in '" + TeXSymbolParser.RESOURCE_NAME + "'!"); } else throw new InvalidTeXFormulaException( "The accent TeXFormula does not represent a single symbol!"); } } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); // set base in cramped style Box b = (base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env.crampStyle())); float u = b.getWidth(); float s = 0; if (underbase instanceof CharSymbol) s = tf.getSkew(((CharSymbol) underbase).getCharFont(tf), style); // retrieve best Char from the accent symbol Char ch = tf.getChar(accent.getName(), style); while (tf.hasNextLarger(ch)) { Char larger = tf.getNextLarger(ch, style); if (larger.getWidth() <= u) ch = larger; else break; } // calculate delta float ec = -SpaceAtom.getFactor(TeXConstants.UNIT_MU, env); float delta = acc ? ec : Math.min(b.getHeight(), tf.getXHeight(style, ch.getFontCode())); // create vertical box VerticalBox vBox = new VerticalBox(); // accent Box y; float italic = ch.getItalic(); Box cb = new CharBox(ch); if (acc) cb = accent.createBox(changeSize ? env.subStyle() : env); if (Math.abs(italic) > TeXFormula.PREC) { y = new HorizontalBox(new StrutBox(-italic, 0, 0, 0)); y.add(cb); } else y = cb; // if diff > 0, center accent, otherwise center base float diff = (u - y.getWidth()) / 2; y.setShift(s + (diff > 0 ? diff : 0)); if (diff < 0) b = new HorizontalBox(b, y.getWidth(), TeXConstants.ALIGN_CENTER); vBox.add(y); // kern vBox.add(new StrutBox(0, changeSize ? -delta : -b.getHeight(), 0, 0)); // base vBox.add(b); // set height and depth vertical box float total = vBox.getHeight() + vBox.getDepth(), d = b.getDepth(); vBox.setDepth(d); vBox.setHeight(total - d); if (diff < 0) { HorizontalBox hb = new HorizontalBox(new StrutBox(diff, 0, 0, 0)); hb.add(vBox); hb.setWidth(u); return hb; } return vBox; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/Metrics.java0000644000175000017500000000400112275735442026501 0ustar sylvestresylvestre/* Metrics.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Contains the metrics for 1 character: width, height, depth and italic correction. */ public class Metrics { private final float w; private final float h; private final float d; private final float i; private final float s; public Metrics(float w, float h, float d, float i, float factor, float size) { this.w = w * factor; this.h = h * factor; this.d = d * factor; this.i = i * factor; this.s = size; } public float getWidth() { return w; } public float getHeight() { return h; } public float getDepth() { return d; } public float getItalic() { return i; } public float getSize() { return s; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/HlineAtom.java0000644000175000017500000000356312275735442026767 0ustar sylvestresylvestre/* HlineAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a hline in array environment */ public class HlineAtom extends Atom { private float width; private float shift; public HlineAtom() { } public void setWidth(float width) { this.width = width; } public void setShift(float shift) { this.shift = shift; } public Box createBox(TeXEnvironment env) { float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); Box b = new HorizontalRule(drt, width, shift, false); VerticalBox vb = new VerticalBox(); vb.add(b); vb.type = TeXConstants.TYPE_HLINE; return vb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/0000755000175000017500000000000012275735442026047 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/MANIFEST.MF0000644000175000017500000000142312275735442027501 0ustar sylvestresylvestre Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnr10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnti10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wntt10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnss10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssi10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbx10.ttf Content-Type: application/x-font Name: org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbxti10.ttf Content-Type: application/x-fontlibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/LICENSE0000644000175000017500000000303112275735442027051 0ustar sylvestresylvestreJLaTeXMath Library - Displays LaTeX commands JLateXMath is an fork of JMathTeX with a lot of modifications to support many more LaTeX commands, drop of the jdom dependency and easy evolution capabilities. Copyright (C) 2009-2011 DENIZET Calixte Copyright (C) Kris Coolsaet Copyright (C) Nico Van Cleemput Copyright (C) Kurt Vermeulen Copyright 2004-2007 Universiteit Gent This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. The archive contains several fonts : 1) the fonts eufb10.ttf, eufm10.ttf, msam10.ttf and msbm10.ttf are under OFL (Open Font License); 2) the font dsrom10.ttf is under a free license; 3) the font stmary10.ttf and rsfs10.ttf are in PD (Public Domain); 4) the fonts cmbsy10.ttf, cmbx10.ttf, cmbxti10.ttf, cmex10.ttf, cmmi10.ttf, cmr10.ttf, cmss10.ttf, cmssbx10.ttf, cmsy10.ttf and cmtt10.ttf are under Knuth License. You can find a copy of these licenses in the fonts directory. libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/COPYING0000644000175000017500000003542212275735442027110 0ustar sylvestresylvestre GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/0000755000175000017500000000000012275735442027200 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnss10.ttf0000644000175000017500000004643012275735442031723 0ustar sylvestresylvestre PFFTMMCLGDEF'hLOS/2VфXVcmapG$68gaspLglyfPn?headd46hhea$hmtx[Tlocamaxp8 name-!FE|posty7vHXzA _< `*`*3-3ZW-bb@q1PfEd@u 8Z ModQPlU^3$B,,^)^$^aa^U^W)c2^^`kd^7^_B$A6^^;^L^d$yaa2^+QP"RRRPRRQ$#%RRR RNRRP"J RR   1 ORV[_cu1QTX_brXI\ <f,RfRxH . F  2  & V n 8 P Vhzn@VN"lXN:P o6%K?;+/?;+/oE2  . 4E E4 .  2ED3  - 3E E3 -  3DC1  4G F4  2CC1  4G F4  2Cd+%K;+?/7;+?/d. 1QD3 -3E E3. 1Q D3  - 3E E3 /P C2  4F G4 /P C2  4F G4 Q3#QKKCP3767653'&'&'&P= #"% > /0   $ &% l;3#73#lYYZZZZZ^+n"3#73#!+'+!!37;7;!YYYYDQ_`JJJJ2A3nYYY^B=H$t!+'6?676762#"'&'.'"'"=4676746?45;676767676=&'&'&'&'&"#"#+#$`1aa 1<  . '5     1  &&$ZC;G$A "   ;$/ .!(    1 0  )5 #uBL]%##&'&'&'&767676763"&'&#&'&'&'"!!;6767>76F %!'/  YCNN $69 -,6%(! /I Z .(/2!  g   >gh+ N2 .>/Z( ,z7376767674'&'&'&/&'&'&767676767323"'&'&'&'&#&"&#&'&'&/"'565>567::DF(  /*G) I   *:$%.$ !)&B / 97N  +3 53+&"9  '  2N%%   ,#  %Z8     ^3#^YYI)53'"'&'&'./74565676732767676=-W .C    : AK)0#   !8s=S!;2+#+5;67676767676327676767676'.'&'&+j" 6&*( !.7)  0&  W)1" 4%Y%5?v/b3.#4(H)&?, !3cBe  %9 ^ 53!3;2+!#%327676767674'&'&'&+^YGZj! 6&*(#-7)YV*1! KX/%4@!K8 C $7!'+46576767676#=&'.'&'##$RMSg   ;" N;YB   !7")! ",&v^>W 3!3##5#^YGYKsJ~*C3?;+/+#3&/&'&'.'&5#O=91 - )AD& 9 , u (  8 ӣm &f! !t 'p3%+ 23ac 7!+'+32+7327676767656'&'&'&'+aHRcd B ?2): "5B0Tq-8- VvBJ,8 E!ac/AY;2+;6367654'&'&'&+;276767676'4'&'&'&'&+a-73A"<  W 7P 1T[+ A+A B+8#`u6"5C(f(=   &0J %'6 0 "  ^ !+'+#^M8Z= YB>)6!3#5!#5#35;6?67676767674656546=6=!#K@@&  " 5dC.A+*?-" 3/$9fG^+!+'+!!37;7;!^DQ_`JJJJ2A3B=H)-c;3?;+/ #=/ +?/7CM>(V(>NC lNAx-D /V"( , V + )!V0 D.x@Nm O@)t)@O oO `C F2= ,  --  , =2F C` Oo 29.'&'.'4&56567>7676""23#"'"'&'&/./4656?376767654'&'&'&'&'+5;6767676'&'.'&'#"c454NV3 $ :  6) R=K -$%( )0%' )6 %SDD$0%"4  $ 'C"%  S9) , )3 & =4! ^W"3? ;## +^V/LL"YU0LK#Z dH)" Iq dH)" ^W>3767>53"'&'&'&3? ;## +> '&, =  /x.  SV/LL"YU0LK#Z # ( !"  dH)" Iq dH)" `63?;+/#`VBXiJB -,^4 5L>1C /{&  . VEYkL .-`5Oq^H E9 / /h2!##+5;6767676767676476Y .  1&!  Iv .0 0$4)@X?*$0#F9 ( ;d6347>?767673##'&'&/&'&'&5#dr%l  *k'rN *A-% H#66 N `L&rd  Iq#ts` ZW  ^W 3!3#!#^YGYYY/IK7"L3'&'&'.'&6767676?3276767676'&'&'&'&'#"fDm0B ,,&!GY 5?%( ->YB !!! TdBdY  (U]A  SAY"T/ C:'  @ ^W!#!#^YYIv_G*;2+#;6767>'&'&'&+_-94& ;,.7 #vYWp.))'5"o" 0P\  "W#BLP%##&'&'&'&767676763"&#.'&'&'&#&;676767F %!'/  YCNN $69 -,6 "!=1"#*E $9#g   >gh+  1#06BO?P  $!+'+#++$`$H;CZC;H$BvZ;22546767>?6?6?436;+5;67676?6='.5'&/&'E4k+ +"(: $-!' 51  8e5`Y ( "AlT)a Vg4A $:ga6 *?S32##5"'&'&7476767676763";76767674'&'&'&'&'&#vT&yBN':YTzAP ';X&;+ 0 *<*T*>( 1*<M 8A9# ii 6B 8$ > ' U+  ,T * K;?;+/+?/L !e  ^% F 'v/  6.K +m$  #m( E+4 1AB&  -) )3 5@E; <109 ;G?TT2^> 3!33#5!^YGYK@s^W3;3#+"'&'&'&'&=^Y *YY\_" <0 $  LI0) +^ 3!3!3!^V=UAUttI^>'3!3!33#5!^V=UAUK@wss$-#;!;2+++327676767674'.'&'&'+$Z(97 L  "6B0F<G$Zq.8.9% v4N#v #5a3332+3#%327676767656'&'&'&'+aTB ?2): "5B0ZZZq-8- VvJ,I8 E!ac/332+7327676767656'&'&'&'+aTB ?2): "5B0Tq-8- VvJ,8 E!2<]67672"'"'&'.'&'547474765327676767676547!5!5&5&'&'.'&'&#"/=5- - 78""MMEW  /('  $2-* Y I/"(% hg >    (,-/>,"2N +^9e4767>767676"&#"'&'&'&'&'&'##33276767676'&'&'&'&'#"jU?"!**''B $W  ).1( YY  ->YB !! =xJ|$ %A[* *,qC "% 7? SAYT/ C:'    Ag %-@"'&'&'&'&'&76767676;#++?#"; B,?YMVM #& G 'z,s. - '"<&rB.(3 I@03 4:G ! 73+Ge4&/4'52725>76767636#5'.'&6767676763=&'&'&'&"#367676765S#  L 0@( + %@O"   $!-& _   &2 *$  9#  #        Su67676762'&'&'&'&5476767676727>76762763"#76767674'&'&'&'&_ '&$ 0 -9K 3  6$/' & 3  6 /    #(!$?5 x   0A;)47J!+F2+,U*    : 1   -J(%%3 Q$5F323+;6767675&'&'&+32767676'&'&'&+QS %   "  )_K!B*  0PK0 +  &35 +  .    P{ !+'+#P+K6QN<~^'!3#5!#5#535;6767676?563#B@@  Ҏ ࢢ= -1J3A! "?P%##'&'&'&54767676!7676767>%34'&'.07"^ 05L   *& Dj    4r #G3: 8\!"   ,  # [;53?;+/##=/#+?/&? EHO.+ ? P!  $b; L  H  L ;b% !P  FP/,  Q!  4, ,l!   hj   !l, ,3  !Q o&'.'./&74?67632#&'&/4"5'4767676767272767676'&'&+5;676765'&'&#"=   :N*&+ 4W +( !)*  %E/30$ ;)3 f 3 .! !       8 $ R3?;#+RK _$ PK _$ P  !&'= /0  K _$ PK _$ P $ %$  76726776767674'&'&'&1C C! !#?$G0 |#(!$#*,#/ W6")a= ^t2Q 1   -J&!&K R!###R`KKCQ>!L>767672#"'&'#36'4'.'&'&#67676767%' '"& 2 ($NK+! *" C $  "&<&X9  "  'A  $m%   &3$W%##'&'&'&'56767676333&'&'&'&'#&27276767>!$& F  O'"     %  &    .! k#  -Q "%"]* 0  %R;  !'#N?3i;3476767676?47;"&#"/276767>7674676'4'&'&'&/.'.9   2 7 $ '@+   %   a0B,;6  #A~(  Za i   6G #>>h3>76767672'&'.'&'#5#"'&'&767>763767676767656=&'&'&'&6'4'.'&76767ZK %'  L, *>  K$%F-+>(  '$  -9   &/ ;4&.'   :+ _-8?8 ?"  GD[>,*? 2"0   %r%   $P +G   %r%  0$0 A;?;+/#+?/<A A; K0/V <FG: b%  &[  "M Q! X8 5c  %Y  \%  $t+  *i# R^  3333#5!RKKB@R3;53#5+&'&'&'&'=RK KK|1 ~ C  R 33333!RKKKCR^333333#5!RKKKB@-03323+3276767676765&'&'&+R - '6"K'% ' I*  .!    RY03323+3#%327>767676'&'&'&+RKS - '6!KKK(  ') J+  0 C@  R,3323+7327>767676'&'&'&+RKS - '6!KK(  ') J+  0 @  b/4&=436767676;'&/.'4#�7676767465#=7;.5&'&'&'&- KH"'$=0!&/)  . 0`!     ._ * ]8       ) +  P'D6767>76'&'&'&5##376767676'&'&'& W6: &%&#!B&'gNN%'! $"*,$0 3F -K& 8,0  ::G3 1  +L*(I *;7"'&'&'.7676767267;#5++?#"; & &=L;]B.+&Q4   BV ; Ck 0.( ""GX3#73###'&'&'&54767676!7676767>%34'&'.PYYYY07"^ 05L   *& DZZZ/    4r #G3: 8\!"   ,  # >C3!!676767676#52767676=&'&'&#&##53PK) ( !-  '#O` D2A+ N>>`:&O/&UM4%R8 E[ 9# 3 .:]%#'&'&'&'56767676;23.'&'&'"3#76767676( F L  #)  +.*k #    Be('X(   0   8 "  ib77676'&'&'./&'&'&767676732&'&'.'&'"/&'&'"'7454657' -3  % < $% )*0  (<  'D 'f    22      9&     J3#3#JYYKKYC313#3'&'&'.'4#K?>7767676=_ZZL  6*YmL#"     o3B!32+#+5;676767676=65327676'&'&'&+H"0%, '=1 $#  A%+" ) >'1! 0(S/N A ,$H & R+335332+5##%327676'&'&'&+RKKH"0%, '=KuA%+" ) >'1! @& /33#36767676#=&'&'#"##53PK$.1 N1N>>`;  E)%**;R^ 333##5#RKK@C'?3!+'#;2+#53327676767654'.'&'&'+SScYz'97 M  %5B0Sq.7. 8& wpA5M!=A  #5!633#323+#533276767676765&'&'&+eKR - '6"SSKI'% ' I;q*  .! ;   7Sc6767>7>7676763#"'&'&'&'&'&'&5#53!&54&5&'&'&'&'&'#367676765! M>)qp%<#" b7  pJ 3)  +)4 8)ZG*F*OgS "R, s$ S 5+% 6 0? Y&\:69'19 %:I3'&'&'&'&7>767627!4&/&'&'&767676765M0  "!= H9  %8?F!3A;#   3O,/@n "* ) 9]5  $'+T;224767676?6767676;"#+"5/4&5/.''&'.'&D.71  05  .  %4W&'  " #j1 vL6 (5)|* >> ``VY {&A76767>?67676;"+"/&/&'&'.53  - !  ".57<QCF * u %2 >,Yx(  /"  9KW 9'  #   ) NA     Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnss10jlm_wnss10RegularRegularFontForge 2.0 : jlm_wnss10 : 28-12-2009FontForge 2.0 : jlm_wnss10 : 28-12-2009jlm_wnss10jlm_wnss10Version 001.001 Version 001.001 jlm_wnss10jlm_wnss10Q2b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>x`*libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/symbols_cyrillic.xml0000644000175000017500000001130712275735442033306 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbxti10.ttf0000644000175000017500000014551412275735442032247 0ustar sylvestresylvestre PFFTMMC0GDEF'hOS/2VЅ=XVcmapG$68gaspglyfn+head:dM6hhea V@$hmtx"Cloca.8maxp8 name*kØposty7vƌzAzZ_< `*`*5y4Z&ybb@1PfEd@u 8Z MdLOO @;Y9cFR?g?bH1?1@@@&O|???R1@?W??;bbA??@M?1?;?O:S&T:Xa&cXRHLLOLmBXCK&VLITLOLTRLmKLL2VLOLCCLmDh'TTdLdC;KO'm+;Lv{hM 1 ORV[_cu1QTX_brXItn(jXJ L R`(*6 !N" "#%6&')*x+,.J/"01234<456|7$89`::;b,??~@RAhACBD0EFGHJKLnMNHNOPQRSTTTUvVvWXYZ[\]^B^t;w32#"'&'.'&'&'&'&'&546?6?>76;#"'&'.'&/&567676767676  84 '  %+   4?44-g ;    #-  %   :/  !?5   1.   !+#*$* G *3  75   1B%.'&'&'&'.'4&5&62"##"'&76767676767>76'32#"&767>?>7>?64'4&'4&'&'./6    3A5&B?    *-   'M-   9    $' E?" .2   *'  '"" ;(   D0,  Lh32376767>7676;2'&'&'&5676767>76765'&#+"'&'47676767676 . 9   ->$         . $   :(  " 6 + 6 !   % h;;6767676?673'&'&'&74656567>76f!2  ) 03+  '  (   %   $ t-6'&'&767676'&'&'&'&7676b (  - #  ,#) '.#&  )@'f- 2'&'&767672'&'&'&7676"&#&+"'&54765465676;!;2#"'&'4&'&74676'&'&'&'&+&+"+"27367676767632#"'"/&5467676'4'&'&'&+"2;2767676?6767322+!+&'&5&76?6;27272?6  ) !-   -  -    V$c    1*   $!  )  "  V,=) &* 6T`   <% f#* -+!/"-   #  2}**      8- "Z" (% (O1+#"'4&'4&576?676;!32#"'&476'&'&'+#"7676763'&'&'&76767676"7676767676'4'&'&#&32#&+&"'+"#"+&'&7467676;:6272765?6 :!, X\g 0! #  G#8'F & (%-A%J3  . 3  $i)    1O 76767676'&'.'&'""""67676?676;2'&'&'&'&'&76767673627>?67676;+"'&'&656'&'&G27  "% F%#1' $I9u.$  ?Wn4P: %#ra8(  +   5*=W?9! q       )$5 !'$  <-<%WxeU $|"   F$<7Z!Y7#"'&'4?676;2276767676/&'&/.'&'&'&'&767676237>?6?6;+"'&'46565465&'&'&'&'"'&  '6  +  < 3Lh$      ;+ 2", %\18 R' t1 @' 80  &0"#?+@ -w  + "  2   ?&4;p0 9H}&#&+"'&747676;2;26362;2+"#"";22'#"'#"'+#"+.747676;2732727465?6F    8/"   !A ( *9      $>|  ~(   .RFo&#&#&+"'"'&'&7476763:32;23;26327326;+"""#'&'&7>;27676??6)00   P 5[ 6) $< *  8 B{   (Y$8  )!.. G*GW R"&+"'"&'&747676;!;+"#"">7676363+"'&'&76?6;272765?65+""##&'&'&767676#22727676767676?>;676767676'&'&'&"""  Zhn       2+?* ) 6I B~  6,"   $ *  )        !"!^ " # |  2v' =\ &   Gְ:  ,V0`TB8'   "2!) Gmii8  +2#8/?6"&#&+"'&5474767;32;26327;+"+""!?"&#&+"'&547476767;32;26327;+"+""2767673+"'&'&76?6;272727>5?67!;;22'#"&+"#'+#"+&547676;2732727>5?62;27676767676'&'&'&""#"E   <#       !      <#       4(@*  *   9F>|   !   7-    +7 ]    "# }  2z(,$   2v' =\'  9+ Pn#  9H  '3" 8/N"'#"#"'&'&5&?67676;!;2+"'&5647654'&'&+&#""#6767633232'+'#&#"#*#"#&'&7647676;263272765?6'&'&'&"2;2'"'+"&+"#+&747676;2732727465?  6"   0  TE\  %  " 46% ) $      *     & 1)(     '3!    $?~# #8  { 6     2-&  :0  0?  !"* HJ   ,S?>"&#&+"'&54747>7632;2;6326;+"#"";??"&#&+"'&546?632;;6326;+"#"":;2+""#"'.5&5&767676'4'.5&5+"'&'&767676;263?6E   <(     H -! I   (8     D+  93 7 ;& }  _b n$_  %sZ    0. !!   'O2H&723;#"&#&+&+"++"'&7465676;676?67>?7>7676;2332;#"&#"&+*'&"+&'&747676;2?/+73/      ,     P7        -[!    . ) h  %:   AZ /'P21A      D C 9xH =2?("&+"&+"'&54765676;!;#"'&'4&5&6576'&'&'&'&+&+"+#263267>76+"'&'&767636;272725?462;676767676'&'&'#""""F   c#[     & 1+   K< L,)& Da"-   6+ s  =1  -# }  ^   1|( . C[  9   Gׯ9 Q 8( 9.@@a"&#&+"'&547676;2""#2+"'&'474676;273272?46;276767676'&'&'&'&+"+"2;276767676'&'&'&'&+"F    V4>0   + !1 Bm"5   6+=d  6(   L)  X t?* ![0 # }   6A !   EPB    Gׯ9&.   3& 1#9!  8. @"&#&+"'&547676;!;2#"'&'&5&5&7467654574&54'&'&'&#&+"+"2323;2#'+"&+*'+#"+&'54747676;273272?6F    NU  "$" J %  =,    ,6}  >    kb      9H>"'#&+"'&547676;!32+"#""3;2+&'&654>56=4'&'&'&#&#!"#"'.5&7>?676;263>76767676767>!;73??"&+"#"   [fj   F    *8+$B3" / '  " nHII &   /A  }  #h^0 <   , !X |! z05 m$`   D! % #6jS&@'"&#&+"'&54765465676;!;2#"'&'4&'&74676'&'&'&'&+&+"+"27367676767632#"'"/&5467676'4'&'&'&+"2;2767676?6767322+!+&'&5&76?6;27272?6F    V$c    1*   $!  )  "  V,=) &* 6T`   <% }   #  2}**      8- "Z" (% (O1Os%232;2'#"&+"#'+"#"#"#&'&7676376;2727276?6726767>?>?67>7>?676?6#4/&/&/&'&"'&547654?6;272723#"#"#?"&#&+"'&54656767;32;26327;+"#"#"?&'"&#"'&547476767;;;27273#"#"322'#&+"#"+"#&'&567676;27267/ ;;2"'#&"#"'+"+*#"#&'&767276;63263>5?54/4&'&'@  "4     l   Y "%8    7l& '      =#    $ @>      .   '  ~5  'O  (9$  ,& 4     7,   ! +? 9   4    s  %l   C/ 23    >/ 0/    _( V#   "dW ' &c!     n" (  /B =   |2'"'&'&'&747676;276767674'&'&'&'&+&7475676;27676'&'&'&'&+"'&546?67632225367676763""#   ?U" N, !   "F9&) ". F ;N4& 3 D*        66' . ("7 e  ' (C    ? 2<   4'5  7        Q!)? "&+"&+"'&54676332;26327;+"+"#"?&+"'&5467676;:2;26362;2+"+"";;22'#"'+"'+#"+&547676;273272765?67;22'#"'#"&+#"+&547676;2732727>5?6E   8,  = [:(    '7,"     _   <(     7 '-'  (8    +7}IV !lD!      }(  _I /6 9H ?5C73676767676'&'&'&'&74656567672"&+"&+"'&54676332;26327;+"+"#"?&+"'&5467676;:2;26362;2+"+"";;22'#"'+"'+#"+&547676;273272765?67;22'#"'#"&+#"+&547676;2732727>5?6:'2  +,78 3     8,  = [:(    '7,"     _   <(     7 '-'  (8    +7    #    1#IV !lD!      }(  _I /6 9H ?"&#&+"'&547476767;32;26327;+"#"#"?&'"&#"'&54646767;;;27273#"""322'#&+"#"+"#&'&747676;27267/ ;;22'#"&+"#'+#"+&547676;2732727>5?6E     <#  #  @>       .   '  ~4  P (9$ ,' 3  7-    +7}  >0 0/     _(F %   "dW ' &c!  9H R"&+"'"&'&747676;!32+""32;22#*'"'+&+"+"#"+&747676;2732?6?65+""##&'&'&767676#22727676767676?>" [niE  &  $- ,7"   $ *  )        !"!|     #\p%     9H   ,V0`TB8'   "2!) Gmii8@"&#&+"'&5465676;2>?67676;+"+"";;'#"&+"'+"#"+&'547676;2732727465?67#"'&'&54&'&'.'.'&'32#&#&+"+"+"'&74676;6767656?6F   %  3z0/      `    9&"       #<FIF=     2  ; "    3 * <$ }   B++Z  LJ-G   })    .P joj\   H%7C *P)    P.?"&#&+"'&5474767;32;26327;+"+""!?"&#&+"'&54767676;:2;26362;2+"+"";;22#'#"&+*'+#"+"#&'&76?6;272727>5?67!;;22'#"&+"#'+#"+&547676;2732727>5?6E   <#       !     '7,!     _  =#   !   7-    +7}  2z(,$     }( 9+ Pn#  9H b5h322'"'&'&'&'&'&?676767676?2654'&'&'&'&7>76767676767>7P (# 14b)/-8$4# & 5n-9*0  >O5!  ES   @fJBqD  4T .$ $O!  #   FI/:' ",  );,G@ ?"&#&+"'&547676;!;+"#"#"";;22'#"&+"&+#"+&565>;273272765?467'+#;;22'#"&+"#'+#"+&547676;2732727>5?6E   o   `  7-     ,6$J 7-    +7}    ~) 9H p`  9H ?:w"&+"&+"'&547676;+;;22'#"&+"#'+#"+&547676;2732727>5?63276767676?676'&'&+"#""E   \;D.  ?]l 7-    +7;@\"   &,0#$ }   &:. 2  Ga  9H  6! 9032727676?63632+"'&'&746546=&'&'&'&#76767676?6;2'&'&'&'&'&76767672672k 4* 4   (  6  +*+#E$'$%9* $4E'03tB  (PD]2:   *$* U(  !*:i h7- 1* "!'5  6 *2XZrLA"k"&+"##"'&'&7>76?>767676;!;2#"'&547676'4'&'&'&+"+""232;;2##"&+&"+"'+"+"+"#&547676;27;2672765?46   +   N2  !! H   #4H " &   &<~ 7  0"?     # q`  2O %76767>76='.5./5&#&#&#&+"'&'47676763332327326;2632+"#?"'&'&'#"'&547>56763232;63263263+"#&'&'&6767672".4-$>;     <(     2'1   !    X/+05$+ (       +" b"    Fm4O  ՏI/2G+   "'"'#"&+&547676;2; 26;6;2+"#""""2#2323;2'+"&+"&+#"#"#&547676;272?"'&'&'&'&'&7676767676767637?#;767676767676'&'&'&#8 '   .@     H, ' !7DT&          H, ' !7DT&n)5$   -5$   - )|      4X  (    4X  HZ7 "1(%*  "1(%* Z7A*%232#"&#&+"&+"#"#"#&'&76?6;676?>?6?67>?6'&'././&4&#"&#"&+&5474767;32;6326;2""?"'"&'&'"&#"'&'&74747676;2;27273#"#33;'#&+"+"+"'&747676;?/     ,   -  1E0 6    U:  o$      +    A,J  (Q  &(a,;    5J5   7  !Q# x'   F0 ; ,    #_4*i0?>"&#&+"'&54747>7632;2;6326;+"#"";??"&#&+"'&546?632;;6326;+"#""3;2+&'&?6=4'&'&'&'#&+!+"'&'&5&767676;26;65>5?6E   <(     H -! I   (8     D     + 9z 5,}  _b n$_  %sZ 2)   + EҲ;"&#&+"'&547676;;26;6232+"#"#"72767672765?65"&#&+"'&546547676;:2;26362;2+"+"";;223'#"'+*'+#"+&'4767276;27272765?67#'&'&'&?6F    ';(*    !M?  "     '7,!     ^   ;)   ! 0 ->) }     /w  6-     |(  8{(  'y5"&#&+"'&54747>7632;2;6326;+"#"";??"&#&+"'&54747>7632;2;6326;+"#"";??"&#&+"'&5476747632;;6326;+"#""3;2+&'4656476=&'&'&'&'&+&+!+&'&767676;2?6E   <(     H +H    <(     H +I   (8      D     +'  ;& }  _b n#`  `b n$_   %sZ"  < *( 'O2~"&+"#"'&5476?67676;##"#263267>76+"'&'&767636;272725?62;676767676'&'&'#"""" &/    =F   K< L,)& Bc"-   6, s  =1  -# ~ *  E?    &+ . C[ 8   Hְ: Q 8( 9.?}("&#&+"'&54656?632;26327;+"+""263267>76+"'&'&767636;272725?46%"&#&+"'&5476747632;;26326;+"+#"23;22'#"'#"&+#"+&547676;2732727>5?62;676767676'&'&'#""""F   :"      K< L,)& Da"-   6+o    (8    D     )7    +7} s  =1  -# }   1x' . C[  9   Gׯ9  %s[+  7I  Q 8( 9.?}"&#&+"'&54656?632;26327;+"+""263267>76+"'&'&767636;272725?462;676767676'&'&'#""""F   :"      K< L,)& Da"-   6+ s  =1  -# }   1x' . C[  9   Gׯ9 Q 8( 9.C'&'&'&'&767676;276765676?6'&'&'&+"/&5&?67632>7>767676'&'&'&'4'567676;2767676767>9'-#)   ?;  &  % 0P-(1"      ")' E  3F+6&:\@ )  ."+jK3         `3 , "5 =y     S 0:+&43*.7%  , - H %6  ? >56767676?22"'&'&'&'&'&5&4=4767467#2;2+"&+"#'+"+"#"+&747676;272?676765?65"'+"'"'&74747474363:32;2;62;26326;+"#""#%654'&'&'&'&7>76767676767>753%2j"^9   5;I 'X1   "    ))7/3'   =#     >O5!  ES  k+E/e 3 !! %*%U'9 !0  ,,  =B   7 -   #   FI/:' ",  );,G@  O&'&'&'&=47676767676;+""";;223'#"&+*'+#"+"#&'&76?6;27272764?47+""#2;2'#&#"'+"#"+'&5474747>72636767>7272>76?"&+";>5?6 ]  #*CKPp   `  ;#  ! ! 4 P  '    g    7676767474?6x @(  ,N04! . +    #%,  )%     , % ..%T(   8<   "; C '&-+D%     0~) TSs7>7>76#"'&'&'&7676767676767>767>76;264'&'&'&#76?67647  4'&(*  \,< i1    "0'IW 8 33,&1") /" *@3"  .8qA; &0N7!B#  1 M   *!7I%! -HB"# X;;P%"+'&'&'&'&76767676767676%276767>'4'&'&327676767674'&'&'#*'"&#"+   :)4X2  '767272#'&'&'&'4&'&7>7676?6767654'&'&/&'&'&'&5&7676767U  B ,O, B8   /K(   *C0  /$   0I / 5   -  *   ")  )      % cXY46576767674654'&/&'&'&'&/&767>76'&'&'&'&'&?676767676365&'&"367676?656567676 *1 0*( 2&2!'&'&'&  -G<( %Fe0! +$;, C*.   )(         ;Z.)*C  !' $ / $ R776767675.'&'&/&'&'&767676767634?67>;676567676767676'"'&'&7676763&;27676767676"+'&'&'&'&76747+""+&54?67+"'&'&76763285   &$01 X- _ ,E 5FW/     ";    3(     (6_8    C ,  C &< '*=(      2  .)(L2 ) & 2  N  P 0 $   " %O@ $     ,  !,  &t  )`  !<# #   ) H736767676'&'&'&+&'&7676;676767676'&'&'"#&/&'&7>7676763"23#'&'&'567> '"(   &  %#  " ! '#(   F % @ +A I3)  0  ?  4         '  =$ !  4( "    L%'&'&'&'&'&76767654'&#"+"'&54656767676;276?465>5?6767>3276767>7676;2'&'&'& (C%        +@    (!/ '  0      / , 1   -E"D,  (   J  'M0$!  ' :#   3.      A  L676767674656732#&'&'&7465646567>'&'&'&'&'&76767654'&#"+"'&54656767676;276?465>5?6767>3276767>7676;2'&'&'&237  ),I/!-  +    @ (C%        +@    (!/ '  0      / , (   # $+   -E"D,  (   J  'M0$!  ' :#   3.      A  Lr%237676?676;2#'&'&'&'&746565&'&'&'&"'&74?6?5&'&'&+"'&'4?67676767367>767676'&'&'&76767.5&E K     " 1  3   (  .     C - "$ (    0 ! *    4   # +['  36 *    -    0 ! < '    B32767676767476;2"'"'&'&'&?654'&'"'&'&'&'&767676"#76767>76767676? *     "      2  " $  0  ' #2 " 6##.  "!1+ B"     (  KdIC{3276?>767>7636;3276767676;2"'&'&76?67+"'&/&'&'&/4&5'&'&'&7>32#76767>?6747425@B !z( -  4   ' @  $z      ! % "   ' $#r"  -8   :2/  B . }) 2&  &(L&$>;11!  %)& - '" F K%+"#&'.'&'&76?676'&5'&'&+"'&'&767>76763?676763276767>7676;2"'&'&=6?6؋#    1    2 ! -    & @  #^  8   *&  ! $ J   4   C /7 V?&J32'&'.'&'&7676767676726354'&'&'&'&767676767v  U' I42>--&/>$ b #.- (&'+ 6 ;R;a   c2;22'#&#"&+#+&7465676;26327>?7676'4'&'&+"'&'4?6767676;>7>7676#'&'.'54'&'&'&'&7676767676765<    "   E   ! %)N*  :4D*! *     '$      Z8   %  * / +;![71 !P    s9 #*&0 T^&3676767676767>?6#'&'&'&?67676'.'&6767676$;        * F+1:Ba5%9 -   " )/3!       #:fO7@  *   &L676767676767>76;2'&'&'&'&7>5676767476=4'&'&#"'&'&/&5>5?676'&'&'&#""'&/&'&?6764754'&'&+"'&'?676767667673W $(.$        ") 9  $!  ! "  &   7.  #    8      )%)/x   !5! (  $&&   D#!  "  )3   / ! 7 3$  (     $)   $ L5p%#"'&'&'&767>?>76767654'&#&+"'&'56767676276767>7>5?67676'"'&'&'&763767676767676 $)' )     + : ,"  '   3 :XiD+    3-   -U!%    9' R+   ( 02  H@,9,B * !" %  6  T5,46567>76767676#.'&476767&+67676/'"'&'&'&767632767676?#&'&'&767676767605/&'&'&'&3676767676764747>767>?654'&'&'&'&036767676? (H-         A* H"N5  % &        // G'  7'2$#   .)   "          '! :%3 - &   "2d  '  3HgA   .  "%  )W ));"#T3$ H.1S-  A* &       f &   ' J% $R7767676?6754'&'"'&+"'&'&7676767667>767676'&'&767676763&'&'&2;676767>7676;2'"'&'&'&''&'&'&76767676 #  # 6#  "8D(? # +  2 " $   1   4U+ "    .$ #  3 )3 * !$ ( #"".   D    ( L5%'&'.'&'&'&76?>767654'&+"'&767676767636767>7465?6767620336767>767632"'&'&'&5&767676767654'&'5'&'&'& '          $ : $  +$ *   5     !'    ! ) ' 3 $C      &&  !_; $ / /)  "              K%'"'"'"'&'&5&?6767654&+&7676?67676767475?67>7676?676;22"'&/&76?6 B     &< &$  ( 7       @  - "  -   M !  + L& (/  ' 0 + L%'"'&'&'&'&767>?67>767654'&+"'&7656767632;276767656564?6767627276767>7465>5?676767676?6?676;2'&'&'&''"'&'&'. !      !!% ?   (" '   %    3- $    8  ,1 &) ,7    &D   A ) 2$#+   E07 +  '/   - /5% %    4  F    L5%'"'&'&'&'&7676767654'&+"'&7>76767676;67676?6564?676363326367676746465?67>3367676767632""'&'&'4&5&767>7>767654'&5&45#.''&'&'&'      $" =   )! '    $  ,, % &5    (     6 -0,7  ".-PA     * *  ! 09' / *  '-! $+  # (:                  V;j"'"'&#"/&?6767623272727676;27;#'"'&'&'&'&'&767654'&'&'&7676767674E)%    ="'    1 !(%&. 12`# !"D     $% _   0 '   <<<  2ML,   ;-  #  L!Y>3676#'&'&'&5676767676'&##"'&'&5&5476767676%676767676767476;2'&'&'&'&?6767654'&'&#76767676546554#  ;*IB    &2~   9    7> '   $ +&    I?- +  ;I/ 2  5      &, +   O * "*0 5"  (LXS{62#"'&'&'&'&767676'4'&##"'&'4&5476767676735'&'&#7676767674635@ ." >|  N   ': 6#  !!   &  B 7 73V. 4   C$ T   +   -  Cr%+"/&7676;47465676'&'&'"#"'&'&7676'&'&'&5&7632"#76767676MD  \#   %#   Ki '  %Lq:*:#   !%4   E! >  @^ (#H  % ! )  1&L]z%+"#&'&'&'&74?6'&'&'&'&+"'&'?6767676;65676767676#'&'&'&'&'&7476%54'&'&'.76767>7676767yE 0     @ D 9I # `  0(  & %( /  $  4   /?676;2"'&'&=6?>7'&'&56767632#7676767>767676?#"3997&30^$ 5    ' A   #  8 G)       (  9  %& /  I-  $   B / 2   ,' )' )",: #  hA+2'&'.767672'.'&767636767>767676?276"+'&'&'&76767676+72767676'&'.'&0! (  +  -   ,     '+<A) , #*8E3&   "1H 5+& (# *  *+"/'*.     %<`C6)(   !A $ $  !('>l"&#&#"'&547676363>727263273;2+6762'&54657654>36767676767656'&'&'&#&'&'&'&??>7+&547676;243?>  '     2- 8GC  $7&###!    "!"#'   0))   '  Jc  W}   +  R8  , #?,yZ3*' *,3K3 2 $o/  ')c   Tt;+""3676767672#'&'&'&76767676767676#&'&767&'&'&ނ X,"0!  &# Q2 . D["  !  #   2        ;]  5 '  % %T~7367676767654'&'.'.'&'&'.'&76767676'&'&'&5476763&'&'##'&'&'&'&7>76"#.  *   /ID" . "1   ) >  )?,  !9       ".     2 $%   #$(L|3'&'&'&767632376767>7676;2'&'&'&5676767>76765'&#+"'&'47676767676=  $   #Q . 9   ->$     !!    . $   :(  " 6 + 6 !   % 5l2'&'&767632767676?674'&'&#+"&'&746767672'&'&67623h #  $  5 $! 9J 2  O-7"   ""%"(1CA#  =  H % %P2 %3  3% C(67676'&'&'&76?6476'"&'&'"'&5476767676#3676767>76767676;2254'&'&#767>7674655 P& +H K &   4            *  > #!  ," &  1. 5   6AF%*  %   FdC- * $N +' "KD%+"#&'.'&'&76?676'&5'&'&+"'&'&76767>76;65?6767>>7676#'&'.'&'&76?654'&'&#767676767465ٌ#    1    2  $ '  P& +B!1   #" +%   #^  8   ,  ! $  O    ?&2< +  &$   'q"&#&+"'&5465676363>727263273;+67676237676?676;2#"&#&'&'&7>7676'&'&'&##'&'&5&??>7+&547676;243?>   '   4 (&  9        "   '       ' Kc  W}   + H   &&?3H$  $  * &k:,    4, &+d   +=%'"'&'&'&767632022332767676'&/#""##&'&'&'&'5676767674'4'&+"'&76767676376767<74?67>327676767676;2'&'&/}  5O % +''             '  0* 1#03 1        "$   5    '   %,"$"   &0  q3 ,37  3* % !  "&#&+"'&54765465676;:2;26;6;+""""";2+"'&56=&'&'&+6?6+&'&5&747676;2727276??>7"&+"'.'4'&?>7676;?2;27676?6'&'&'&+"""#"      %6*!   :    ;T-HBT) ), B\L  @# $   r Q  . #      h  , EC   /H^ 7   Vd! . ` h6$ 9.LD676;2#"'&'&'&'&76?676'&'"&#"&#&#"'"'&'&'&6?654'&'&+"'&'?676767676767654'&'&#767676767465RM&B,6      4%  #   :       )#< z#" +%   13 ( Z0  ) ,,  * ( $,    ^,  {x+"#"'&/"'&5?>;2?43745>76767676;2#"'&5&?65+"'&'&'&'&'474767;27257676'&'&'&#&7676767467.   < 5Sja  5 O / $,Rb1*3   //   .5 a  d9 ;# 0_  T   % I/D &" z 1!#+ /8&. u A11+)/@ h'>[32'&'&'&'&767676767276767674'&'&'&'&76767>767n  '  #T% ( R =,   '+ 4V!n5  :ao:  $ % ! *  %6 $%6?6?676763#"'&'"'&76767"&'&#&#"&/&'.'.'&'&'4&54'"'#&+"'&5464674763332;27;26;6;2+"&35Y !  "    #:{XI         W   ";P)> .'+Zs   @ BUM    8-Mv&+#"&'.5&/&'&/"&'&#+"'&76767673226?67676763'&'&'&?6767$0  %     &    *S+!   )'I   ,=   <B;#7?|$  / & W "?)  9   / RG    Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnbxti10jlm_wnbxti10RegularRegularFontForge 2.0 : jlm_wnbxti10 : 28-12-2009FontForge 2.0 : jlm_wnbxti10 : 28-12-2009jlm_wnbxti10jlm_wnbxti10Version 001.001 Version 001.001 jlm_wnbxti10jlm_wnbxti10Q2b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>u`*libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnr10.xml0000644000175000017500000006250412275735442031542 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbx10.xml0000644000175000017500000006207712275735442031717 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/language_cyrillic.xml0000644000175000017500000000355412275735442033406 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbxti10.xml0000644000175000017500000007474412275735442032260 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssbx10.xml0000644000175000017500000006121312275735442032254 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnbx10.ttf0000644000175000017500000007612012275735442031706 0ustar sylvestresylvestre PFFTMMC|4GDEF'h|OS/2V̅BXVcmapG$68gasp| glyfZvOoheaddV6hhea$hmtx loca..maxp8 nameHtposty7vwzA6_< `*`*858ZW5bb@1PfEd@u 8Z M}_?/?e?a&)?>? R&n)&e(2&2&&&W09&&&D(&`>&&?> )e>e"&&3&3&)e&2&??&//??#!!!!)!?!$% _~%_!!!!?!?!^!`_ %?/___! !<?~ 1 ORV[_cu1QTX_brXI^B `8 8 V , n4RjXRNFT^  !r"""##$"$%%&'(()f*&*+N+,t-"-./F001@123:34f4566p67}:t7"'.'&'&/&'&'&'&7676?6?>767632#"'"'&/&'&'&'&'.'&767>76767>763632!.7 ?,?1;00  4 !    &(  86   !"/E  6%- !+)) )9< ,2  $! .9  ..#_7o%/&/&'&7632#"'&76767676'&/&/&5&76;#"'&76?67> !14 ?650 48/   /%&     .  "?/    !2C  7-%! $/*   9(( 5)  , 61  5&/)?33/#5362327276=4'&' \  $$c"' $N))90e4&'&'&67676'&'&'.76767276n  5 =!87# 5 ,3 ( 5  / 2     a26'&'&547672636'&'.7676726 .        - ("   8 &g6w6'&'&7676767>36'&'.7676726!#&'&'&'&'+327676767653#4'&'&'&'&+;276767>73!53#            <n0   %V&`!*00*!^%u4 /  llf2 , )!   68S" **" T %Nf:0O)!#&'&'&'&'*'+6767676:#&'&'&'&7>7>76754'&'&'&'&'&#&3'#'+53+#?G 0 3 5 )Dh '2   2I*# 9 $ # ;-#6"~C,-,3"  0p/3  " 4:*  # ' =l)  00O $E8>26?67676762'&'&'&#7676767567632'&'&'.76767676376?67676;+"'.5&'&'&'&'"FN# &  `:#&.% 95U$+)6 )~\*5(AHs)4--50 % :!& Ar! r   *  `:5 3   [!;:PeGL   x#    >$ 83,G ?@76767>7632#"'4&54'4'&'&'&'&'&#&'"'&'&'&'&#"+&'=47457632276767676'&'&'&'&/&'&'&'&76767676     / S%0-;* &  #0-4#    2 . + "80-2 JvP   w4 %#+ " ( PU     k+   %  & 2C":  ;73737#3/+#53# $ *k;# rr$2* $rr000O;3?37#'&'&'&'&6767676367676=#7gc Q 17K3*  - ! 0T+(  < 8 -n[m!#26?6363+!53##'&'&'&'&7676767627676767676767>75647=#;276767676'&'&#"l"5& R3"/G9m #! )    q+n"  ;% ( 0-74* 0O - <=9>E# +;  ,8H &; 6* +?,/8&Je;?37#!#5;?37#26376363+!53!3/+#53#;276767676'&'&#"&" *^f mCm# *_f l"5& R3"2D9mm#/* "lln"  ;% ( 000-74*"000O+?,/8)ac!#&'&'&'&'+67676767633/+5354'&'&"3'#'+53#"#?Gw 0 A;(1 ?Q*c&Q . =%Q $x0#m&  0p05  '13004 . $00O   6&>^:3;737#!#53;737#3+"#4'.'&'&+53#&#0* #lBl# *0#llA  0 Amm0J004EIIE 4J(;fp72?6727676?>?>767676;23;'#'+53/+"333/+73/(1P)   1:R G &z0$_ 7  &%g+ 3 ;0 J f;5  xN00<  404}G..&)A!#&'&'&'&+6763#!53#;276767676'&'&'##&m0  #@uYX $<, $767676'&'&'&+;276767674'&'&'&'+&VA?2/1 %A  $  "0H%Bll,)6 '  %#' 4A) 0O D%   #<E#  &!#&'&'&'&+3/+53#&>/   +e"?(>/#ll8]$00O>4B!#3#&'&'&'&'&#!"#?;2?6767676565#!#mw0  'HJ.#0; * JlS08@  "Z 8 *5() J('&@!#&'&'&'&'+327676767653#4'&'&'&'&+;276767>73!53#&n0   %V&`!*00*!^%u4 /  ll8S" **" T %Nf:0O0&;?""#5;?37#?654/&#;?"#2;/+52727256'.'&/&'&5/"3/+#53=4/./4#"333'#'+53:7>76?6767>7&/./&'&'"'&#@*7*D=!l" *_f l!=C)8)*   (   '8  %*t1#% p2 '" l"/* "l "  3o $# +t&$  9%  (   *083?003800 !m  4J 00 B  )00)  B 00  J0 m! 92'#&'&'&'&54767;23:27676767676'&'&'&+"'4&=476;2767676'&'&'&+&'=476323676767623  Q !=CYM/3   $/Q 8#   -][ 7< "+%@)     !-;P5  Y  g#:+ ',G  0&  ># )1)  ! '       >"&^G;?#??#5;?#3'#'+533'#'+53#&# *| #l 6, k# *| #ll# *0#l 6, k# *0#mm0 U D0000TD00O&^3{&'&'&'&7676'&'&7676736;?#??#5;?#3'#'+533'#'+53# "  <$6T=  5  -2*# *| #l 6, k# *| #ll# *0#l 6, k# *0#mm - .&1'     f0 U D0000TD00O&U;?#?4/&#;;?"2;'#'+52727276'.'&/./"3'#'+53#&# *| #l!=C 9)*  (   '8 %"t1#$ p3  " l# *0#mm03800 !m  4J 00 B  )00O^S!#3'#'+#53#'&'&'&'&7676767627676767>76765#mm#/* #m  $! )    !  q000OL&=R  +; A , Zy\s(p;236?767676;#3/+#53"'&/.'.'#23/+527267676=#(.-~'  '~- .ll!-{( !l0&  0*i2 6%a)5l  bV Vb 000P !kS   j]n \m00o&^=;?#!#5;?#3'#'+53!3'#'+53#&# *| #lBl# *| #ll# *0#ll# *0#mm0000000O> ,R;3'#&'&'.7>5676767673627676767476'&'&'.  J& 79Mu&+*gD76 6Hn" +T\3 5*j.  [/<&5P2C>1N-+M5G,M565! D@4`7   -H  &^#!#3'#'+53!3'#'+53#&8ll# *0#ll# *0#mm000O00O&#5!32+3/+#53#3276767=&'&'&+&Z6X7(6 >M3m#/* #llzP$  %Uy!KT#00O'16 >l3232?6?67632+"'&/&'.'&7676765654767;2'&'&76767676362 <6     P15vB , 1P:4@32 --;HkW LMs     %  .A  M5^ !p? / )';  ;+mY aC)1!#&'&'&'&'+3/+##53+#?> / "I6+CE]"+6H# 0 *o% & 00O ( %o*K|3373?#4676?6?6'4'"&'3?""#&'&'&'&7676263676747654'&/./&/4'+ $a8$T '. K &&b( *  1A")% /$  1' #  ;* G '4 B09D CC 00 v 9D/)  . " ,"h8L>Max;73737#2"#3/+535"'&'&'&'&'.6767676763635#";76767675&5&'&'&'.#"&#'=nG' @3.1"&3/F '8R?='"101#'3 .H  R+ "5 'R* !"604 &$  O00O &$ 4Y ,*% I#  ,, F%"C;?#3>7>?67>5&#.#373?#"#"";'#'+53/323/+5272?676?454'.5./&'&'&+1 %q,3%S 5) J &  cB "#     Z )0 G %|1$S)o \&+g'9  `6{! G0I8  a 00v# 8B008 x 00 G ' . &>43;737#!#53;737#3#&'&'&'&'&'#&+!53#&#0* #lBl# *0#lw0   "?Imm0J008<" 4J&^Z;?#3:73627676?27=#5;?#3'#'+53'&'&'&'&=#&# *| #l 6+ l# *| #ll# *0#l;W%1-" m0/%  40000  !& 3;?37#!#5;?37#!#5;?37#3!53#&" *^f m2m# *_f l1l" +^f llll0K00K0044K&>5B3;737#!#53;737#!#53;737#3#'&'&'&'&#&+!53#&" */#m2m# *0#l1l"/+ "lw0##0*ll0J00J00<\#  4J)-E!#6763#!53+#?;276767676'&'&'##>6WY %<-+,";XTwl8#C  0 %%,!"4) 0TU&+0O $& %o* %E4#) &6&@Z33?37#6763#!53#%;?#3/+#53#32767676'&'&'&##& $rg lYX  4. 9YSwll# *mf$mm#0* #llF. 8 ,"<* 0,d**0O0000O$U'&&>33?37#6763#!53#;276767676'&'&'##& $rg lYX $<, $7654'5&'&'&'&+"'&=4632272537676763'&'&'&'&'&4'46;76767676c B3 2" MJ+11;a1#/)<    "6H P($3b4"0+ W H+.qT '4     "X3= "=  t.  N&/EUhWJ+K   9" 81M&P{47676767633'"'&'&'&'&'&5#3'#'+#53#533?37#7676767656'&'&'& PV}  '$C0-  >]&+$ZD3 l#0* #ll %qn lQ 7J!1 0 5|- 1k h@B "EZ =4) ;  .6I#00O00  7&2 @x F.^4 &?6#2;y X.: %Ms ?Gmm#.* #m?l"  "%2x" '  1f(]+$8 4WF0 80*#- -P #@Vr326#"&#!53623676=4'&#&#"&#327676'&'&'&+"";676767656'&'&'&+#09D,  %, <4!  6 ,   & .,  %;6&  "   =!E!#&'&'&'&+""33:3/+53623676=4'&#&#"&#!/ :   )(q&!  X= ;5 %%;6^zHq!"#33#&'&'&'&'+"#?272767676765654654'&'#&#3;27276=&'&+"  0 9M  0  3  t    _ $5;;T$3$3$T; E   4"%B1%! A: >M7767676?632'"'&'&'&'.767676+'34'&'. %7)!!  =3:;. &AV:'-  v I  =$     1  -n35" #)M!0$ >3?"=4'&#&+?"#""6?676?454#53?"3/+527676/&'&'.#"#";2;/#5326;276=&/.'.'./&#"3/+527676?67>7>7&'./&'&#-$$ u$ !g%   r $$& N  d%   "/#-     !g&    -"/#   &d  N%$  S| $$ ~Q  $$  8 q*%% 3  ;%%%%=   3%%*q  8  %'&'&'&'476;232636767676'&'&'"&'+"'"4#=67;67676&'&'&'##"'"'&=4763237>767632YE 4&@;%$   ;  # (-   #D     ;1&# 3A  %  *  /  O   /!]?"#""367676?676'&#&#"?"#"":3/#5326;276=#3:3/#53623676=4'&#&#"&#!"j'  k& 'j"  !&j#  !C ' !#j&!  $ 7 &4$$6;%% 6 -]$5 %%;6!]0&'&'&67632'&'&'&'&7>76?"#""367676?676'&#&#"?"#"":3/#5326;276=#3:3/#53623676=4'&#&#"&# ! (?A%  )   $/"j'  k& 'j"  !&j#  !C ' !#j&!  ( 0   ,3  ,  f$ 7 &4$$6;%% 6 -]$5 %%;6!k?"#""6?676765654#53?"3/+527676'&/&'&/4#";2;/#53623676=4'&#&#"&#!"g&  8r $$%N  d&  #/"-    "g&!  $ ~(Q  $$  8  q*%% 3    ;%%%;6]y!#*;/+5;26376=4'4'.+""'&'&'&'&676763627676767656546=4'&'&"+! !"j' O  "       #$6;%% .W!a9/7 5 '  (,+9);2>76?>;"#"":3/+53623676='&'&'&'&/&'&'3/+527676=4'&'#"&#)! J G ~   ! b-! C  8  E(! 2$ 2; $6;%%D B9   6}B @ %% 4:!]y?"#""3=4&#&+?"#"":3/#5326327276=#332;/#53623676=4'&#&#"&#!"j'   'j"  !&j#   #j&!  $jj$$6;%% "" %%;6=32'&'&'&'&767676726767654'&'&'& o;*%0L!#A0* D1J  o #E$N3  L7NA7)# *&A %g;+ > 80*#- -P !]i!"#"":3/#5326327276=4'&+&+"#":3/#53623676=4'&#&#"&#!<  !&j#  [   !#j&!  $6;%% /M:6%%;6$>Y4`3?67676'&'&'&'3/#53=4'&'&#54&5'&'&'&76767676564$ ]!15B7.!" B" %"% F#j&E  /2$  D" 1))=sL  00{hO#   ({.  '> %L&'"7676767632'&767676232#"'&'.76g *   />)  4'5JE&Fm<  5 '<# ' .RKr*$,1 9 ,Q!#4'&'&'&'&#"2:3/+#5362363676=4'&#"#?(0 (  .+p% .  ( 0%X  5:%%:5  X%8D?""">767676?65&'?"'&'&'&6767632367676767>76545/&/&'.'&'&#&#&#'5*`# 0   E 'B 94      ) "`   ? $ "g,8 3 $$ T"! &   : - " J(  %>XTy?367676722'&'&'3/#535'&'&'.76767676363=4'&'&#7676=4/&'&'&54'&'&'&7676765<C ^  !G2 ! -*I)# E"g%E#)H*-! 2H"  !8 ,*21 1 *, 7!  ! <310013< ! $U =$*   2+   (X  X(    +2   *&; I33?"#>76?6?676'73?"33/#527267254/&/&'3/+5276767676?67654'.'&/&'&'&'&# #/" 3 .  E !  CW_"9OE  *& M$= 3$$ L!f! %%C X%% .*[ !^zp?#"+323;27326=4'&'#?"#33#&'&'&'&'+!5273676=4'&'#&#!&h#   -[  'b "  0 9.  $ 0M;6$$5;;T$3$;5!]}?"+;676726742757=4'&#&+?"#"":3/#5326327276='&'&'&'&=4'&#&+&#!"j' 6'   'j"  !&j#  .2* %  $#-! U$$6;%% !    *# !?"#"";276=4'&#&+?"#"";276=4'&#&#"?"#"":3!53623676=4'&#&#"&#!"j'   V,   "j'   ,V  'i"  !!  $6;N0 $$ 0N;6$$6;%%;6!^?"#323;253276=4'&'#"&+5?#"+323;263276=4'&'#?"#33#'&'&'&'&+!5273676=4'&'#&#!&h#  V, &c#  ,V  'b "  0  H  $6;M0 $$ 0M;6$$5;;T$$ $;5?T!"32+53623676=4'&#"#?;27676&'&'&#(C`. >. )A ?!  !% 0! 0 +&%$j  (#%6:  X%ʉ#I!<y?"#""32+53623676=4'&#&#"&#%?"+;2;/#5326;276=4'&#&#"&#;27676&'&'&#!"j' `. >. )A ?!  0j"  "j0    0 +&&$j  (#%;6$$ 5;%%;5#I!<Q?"#""32+53623676=4'&#&#"&#;27676&'&'&#!"j' `. >. )A ?!   0 +&&$j  (#%;6#I|%'&'&'&'&476767676?2=4&5&'&'&'###"'&=46;3676367676'&'&'&767;2367676X C,   #  . !  ',/"A'6Al2+F %."      4  9    0B^81A8  ! ,!?]~;65676767676'&'&5#2;/5327276=4'&'&+5;?#"#"767654'&'&'&'&M .IQOR-## "<#/L) g #j&!   !"j'   %K$  #O0!  0=-@D3 " Q,B!# %%;6$$   37/3 /N ;h7&'&'&'&'&'&54767676;"#"":3/#5326327276=+33/+5276?6?%=4'&'+"   $<  !!g&  > #_' " 17     $6;%% L%% #s   $5t6'.767672676'&'&7676767>767676?632'"'&'&'&'.767676+'34'&'.    '        %7)!!  =3:;. &AV:'-  v I  "( 6 2   & , =$     1  -n35" #)M!0$ > >*?3!!67>7676762#'&5&5476;676767>4=4&5&'&'&'&#"3323/+526;676=#5354'&'&#, ^ L-7=.$>U  0#,    'i"QQ #e0" )+ *1wW8": '/R4150   '0XM$$ aq0 776767>56763223'&'&'&76767672232?>?632#"'&'&'&'&'&67676#"'&'&$ 7   'B \> :>i$      " 21  ( '$ j.  *   & 0 @e8.;   A     6   %;3;63676?32#"'.54'&'&233#'&'&'"&""+&'=47276;2767676'&'&/&'&'&76767263:       G ,!?& <1     &C0B* *#9 M  *9#    a    $!  !:/C6'&'.767676?3:3/#53623676=4'&'&# %    b \  $c"! ##  9 O %%;28S6'.'&7676762?3'&'&'&67>23237676767=4'&'&# " #    !   cY*&2@0 7  * - ) Y60  /! , %=V 9!#"#"32+5;26376=4'4'.+""'&'&'&'&676763627676767656546=4'&'&"+;676&'&'&#  C#@- (H% O  "       # 3.$ j  (#% .W!a9/7 5 '  (,+9#H!9|?"#""3=4&#&+?"#""32+5326327276=#332;/#53623676=4'&#&#"&#;27676&'&'&#!"j'   'j"  C, ?.  ,E%   #j&!   * .$jj$$j  (#% "" %%;6#G hz3?!!>56767676233/#5326;276=4'&'&'.#"#";2;/#53623>=#5354'&'&#, ^  *0 6#"j'   ,   "i'! QQe0     2%% 11 "3 "QQ%% aq0!^]x?#"+323;27326=4'&'#?"#33+"#4'&'&'&+5273676=4'&'#&#!&h#   -[  'b "  + 0 ,  $ 0M;6$$5;$ 7A;= $;5<qD\3;?3#!#&'&'&'&+6763#!53#"#?35#;276767676'&'&'##" )c:"l^ 0 +$7_YX $<, $. )A ?! Q 0 +%%28'   8-2 20  (#%D0ى#I],?S4767676767>3#5#'&'&'4&'##5)4'&'&'&'&#76767676= / 3|:*!S/SLEI/  R0" #2 9&  *>;&  ($B- ":u3 -x=94!85>3 ;(&2;$4$7, @=/; 2A;'&76767676723&54'&'&'&'&#&7676765 L. >2OwJH !)B [   #    8."%oB5 FCw%"4#.  4  /  &K$ *`_%46?676767676'.767>7"&#&#"'&/./4'+533?37#R9  "5* $     u=4   44f)C %Xe ] "h' < ""4/ 8t tv\00LVX%?6?676762'&767##"'&/&/.'&'&#"?"""P=#B ;  L"  &@ *b# z &+ %  3 1 G   .R; $$ "6(,W 9'  #   ) NA     Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnbx10jlm_wnbx10RegularRegularFontForge 2.0 : jlm_wnbx10 : 28-12-2009FontForge 2.0 : jlm_wnbx10 : 28-12-2009jlm_wnbx10jlm_wnbx10Version 001.001 Version 001.001 jlm_wnbx10jlm_wnbx10Q2b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>i`*libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssbx10.ttf0000644000175000017500000007404412275735442032257 0ustar sylvestresylvestre PFFTMMCxGDEF'hwOS/2V҄XVcmapG$68gaspwglyfjheadSd86hheaYw$hmtx9locaR2maxp8 name0ppposty7vsdzAt_< `+`+32Zbb@1PfEd@u 8Z MHm<&V&^[v'<c1K[-[[H'[)[[E[R'[<7[[['[[=[[=' =$'[[[['[[7w[/ & =;|& PCPCCWB1C&1C1<$D$uCPCDCjCC C ;,"5UNC1PCX &X&3 1 ORV[_cu1QTX_brXI.V.0dt  " t fb`b.r4v2^2z !d!"p"#R#$:$%%&'h'(6()$)* *d++,*,-.b//l/0x1 1223*34N45^HoI7+"'&/&5&?>?676?676;+"'"'&/&/&5&76?6767676;  *  ) % ,9&   2  )   <    )% ,:  K )  !<  ,  % .:'   2    ?  "  % .:   L  $?mI%&'.'&'&'&/&'&'&'&7;2+&7676767676?>7&'.'&'&/./.'&'&5&7;2#+&74767>7>?65   *  ) $ -9   J% )  !<    )% ,:  K )  !<   ,   % .:   L&   $?  "  % .:   L  $?<$;+&'&'=47676]     0H  1G V 763273676?64547>#'#&'&'&'&763w  !  ,  >"'D&    &  ^#>;+&'&'&=476767;+&'&'=476 " &  % #  )  '  ( ([Sn:;+&'&'=4767;+&'&=476;263273632632+!+"'&'&==476767;!32#"'#"'+"#'+;+ $ %  $ % I%0 ,  -5  <4 # #69" <n ( ( ) !( #f^n     'M"+"#"+'&'=6?;!;+"&+&+>767676;22'#&'&'.'&746?676276767676=4'&'&'&#"&#+&'.'&'&=$    `%r   '   3I 6 &&;k )  %    % 8"  ' R   0  "MR3 N/2  6  7]'    + |E "v<732767676?676#'#"&'&'&'&'&/5&76767676726;63'.'.'&'&'&;2+-3G#(  ")' fA ; 5N*.'+$ )+a97:B,  Q*    7 9K'${N1   *  0.[  3 1&v;#'&'&'&'&+"'"'&'&/&'&76?>567636767676'&'&'&/.'&'&'&767676727"' &       ; 7B"G*" &-N.& <4)"  V^9  + ! ,"B 2$6  2   +;-7A*0   B   1 " *   +B"-V/ [";+&'.==67| $  '  !Zg"   Zgh! -B;'&'&'&'&74767>5476767676==476: ! $<1   1:  !E+/" 2  ! V+I Im~+"'&=435656;272767676767467=476767;!;;+"'&/&'=;6767676'&'&'+M )? &  )   = = m&Q+  /Q)Iv ^1 ,^R! :=[@:'=%  5)+FI . #=   -0!2""?*   m -6 [Xg+"'&'==476767;2!=47676;;+"'&'&'=;676'&'&'&'+ ' %  ) o(P* :1M1Kv ] .2-^:8 !e2~  33 - 0'&f7  0I" ' "++"#"'&'=6767636;!;#"&+"'+"&#47676767632+"'&'&=4'4'&'&'#+"'&'&= 2    b-n    (# #)6  B!! # # "4  *Q    7 IB  20" .  |< 'z[>R%+&'&'&==47676;!=4767;2++"'&'&=B '  &        kjc  pp   ck x  )iw7+&/&567>?6?6?>76767;2+"'&'&'.'.'.'&5&4'+'3/   )  4 #E    83/ =  uY' Z3&B  cO*N3 $ V:= F2[Q`;+"'&'=547676;2+"&+&"+"&+"&#32767676'&'&+)?0C"  ?6e1X WF  2 }V%  %Q} , i< Zi   #( [9J[+&'&'&=67676;2"%32767676'&'&'&'#32767675&'&'&'+ ##+3d!H  jes< $8_J#* 4~Y)$Gol'7,$@.  E'#" 9 (& [=+&'&'&==476767;#"'#"'+&+.  w1Q>    f~^     '>)Ze7+&'&=476767;>767676767>=6=6767;!;;+"'&'&=%!#       <3 :    7D  |#  .*"0':@O  -  ne  %$  :^j86^;8[Sj7;263273632632+!+"'&'&==476767;!32#"'#"'+"#'+;+I%0 ,  -5  <4 # #69" 574'&'&'./.'&'&76;=47676;>?6?6767;2+&'&/&/.5+"'&'&'=4/&'&/.5i  .  2 .,F  8!/ /!+ 7  F-.   3) -  i1 5  AG*   $C ,*B  ,=  0, ( B*,  C6   *A 2 c   b 7r23#"'&'&'.'&5476767676;2767676'&'&'&+"'&'=476;2636767675&'&'&'&"'&"'&/.'&74>7676732; $+Z8G[1!"  * 2 ""A $  4+ 2. &!#45+& "b6,  : k "C18        &A3  +    = " )#G /" [o+"'&/&'==47676767;476767676?6767676;2+"'&'=  ]-$      ^,  )  9  / 8N  pQg dX . 8N  tc  `[=6;27367>7276=676#'#&'&'&'&7676+"'&/&'==47676767;476767676?6767676;2+"'&'=  ( * ,@ 'L$ B  ]-$      ^,  )      '   / 8N  pQg dX . 8N  tc  `[}+&'.'4&5&==47676;6?6767;2""3+&'&/&/.L 3   /!,7  v 3*   * $c" A 0 i *+]  i -*  p  E9    2,U+"'&=46;276767676746=474767;2+&'&'=M$$&     AI  ) R! (M=KDA'( / !$U , 9  Qi o[u+&'&'&==47676;247>76?6767676;+"'&'&=+&/&/&'&    6  C<  G B   -3  d(9m   _!) %>A #FJH #{a   ` '2s} *  Gi [N+"'&'==476767;2!=47676;+&'&'&= ' %  % ' :8 !e2~  33  ~d"  8=4[;'#&'&'&'&'&'47676767676376767676=&'&'&'. 5, " Au/%f> ,2=i " !^+6   !h.+   8S!* &`:* F:  O!Q7L1<\3  )5T : &7$# *5["[>+"'&'&==476767;2+&'&= &   2'& Rr   ckk   ZhN n[7I+"'&'&'=67>7676;23#';6767675&'&'&+ )  {I#!7'  4,W),yQ01  Ko 0  -:   ),_;/P'9 =c;'&'.'&'&'&72767676#"'&'&'&'&=6476767676763?8 !'&h;  ?9c0&   **;Z = 7Eo   .  71-/! p4/  )   = S4*T3A'O+"+"+"+"'&/&'=67676;!;+"&+"&+'++&'&5&=$  r%` ! * Q    Fd  !u d?6?67676;2+"'"'#&=476;276767674354/'.'&'&747676;2F&   HD,* 2  1- )  5Z$8Y  $(-$4  9R/K X1 =XUo=6767;2#+&'&'="'&'&'&'&'&'&4'4767676767676"236376767676756'&'&'&'&/&# " K6B '4L # K6 ) &6K )   *  +   * j   :x %9 7    6 1Q%7" J &'@#  #@ +' $y+"'.767>76?676764/.'&676;465>?676;2+"'&'&/&'.fx! : + )|!  9  EG 6u' -DO >  !W1  ; 5+  ] d"5 :Xf !  /}' [>N%!+"'&'==47676;!=47676767;2;+"'&'&=gd  ' ':     klc  ou" dJ  %$   :[L#"'&'&'&=4767;;=476767;2+"'&'&= JW0#)   ' & & 7)8 1Z& &}) :  "e} 4[ZO%=47>767;2+!+&'.'&==476767;2!=476767;2  (ڧ  4 jr  NiY pWd bGs   bF[>_%!+"/&'==47676;!=476767;2!=476767;2;+"'&'&=M'*   4 E  :     lhf  qt   aFt" bG %$   :'oFU+"#"+"#"'.'&'=67676;32+"'&'.'&'=32767676'&'&+*  40 E"e5  56;7676767465+"'0'"5&=476;99`+($(' -+N49   Af3 &"& (! F5-B;  Z/0 *   1 L}+'K? 7  "   *Q   3 [:Y46567676762'"'&'&'&'&'4'#+&'&'&==47676;2767676756'5&'&'&'.IKw& 0D. - ;Ei 3,C-8 %) >$!^,6  !h.+ yCB ' Hz%U//;c 4  }3e! 69"Y6  (8Q &5&# '4\"/cPc"&#.'&'&'&6767676;+&'&'&=+"+"'.74?6+;  R( ##,.O`Z% *  s  (  :BV40   "Hv4/!.1a    NeY  7 & I&T9' h5&'&'&"&'&54&5&'&54767>767676;+&'&'=4''&'&'&767676767632627>765H "     ( - " '01 #A". $     /0#   *A   ";  (   #' " "^~4767676762'&'&'&=67676767676727>72636736"#7676767654'&'&'&#&o 0>8&  $   '3@k60   & .  &>'/7 @   4 x   /K4)"  60X\.a:+   #M $$ ) 1+./ 7=4DP%+&'&'=6767;2"'2767676'&'&'+32676'&'&+ + 'V/   JpI#   >  #>T2*<;& :   "   0    ';2+&'&'&'&=47676767;"#'+"&      T<  Y9  "^\\l3+"'&'&=4767;2767676767647656=47>767;2326;;+"'&'&=%3#        '   ؠ  h  k  66  9   C w   +RI9 F+'FS7767676#"'.'&'&'546567676767676+'34'&'&'& #0:"   GFs@  "  *O6 % /  !>%A    3  - 4H0  /Q 6'! (  &'./&'&'&676;=67676;6?676;+"'&'&/&'&'&'+&'&'&=4&5.'&'&'+&'.5&?6?676 R   %  K   >- %0 G b 6 G     G  5 a! L  EZ    ]9)A   \" C   F "\  * %2#'&'&'.'.'&?676767676'4'&'&'+"'&=47;2636?676'&'&'&#"#'&'4&'&7676767632"q # /7 !"   %-  9"   0 && #IG#  $ 2& 3              5 C b+/&'&=474767;465>7676?67676;+&'&'=#=  "   #=    M *>`(  G@   31 *>`(   O;  /C 763273676?64547>#'#&'&'&'&763+/&'&=474767;465>7676?67676;+&'&'=  !  ,  ="'D& #=  "   #=       &   *>`(  G@   31 *>`(   O;  /Co7+&/&=47676;26?676;+"'&'.'./&'.'&      >- $0   G   b 5  G E  E=   ^ 9)  A    \"I+"'&=476;276767676764=47>767;2+&'&'= " ,    "5  A4I/F%!*'6$F   /@   ;mB~+&/=476767;>?676767;2+"'&'&'&=##"'&'&'&/.'&5&    *   3  .*  ,     >     = Bl  >O 6z  ocN@   m  $    % CS7+&'&'&=47676;3=676767;2+&'&'&'=            #    ?P  on   P>    #,O32'"'&'&'&'&'5465676767677676767654'&'&'&" Y1   '.[&I0   ",H R @    , /  D+4  *(> ( 1( $$ ) 1+./  IC7+"'&'&=6767;2+&'&5&=  l   k?  =>  )-  E<> Fq6767673'"'&/+&/&'&==4?67676;54'4&5&'&'&'&76767647 %/ L*+  /N            1  ./W 2'2% + # Y &  $    )~1   7$^;'&'&'&'&'#3676762'&'&'&'&'567676363 +  &   %5* ">N1! ?+@  &    9/   "   4!+v9& =#+*"'&'&547676;2+"&+"&++"'&'&=  B<       #   < K3s%676?6767>7676;2'&'&"'0'"5&5&'&7363636767676765654&4/.'&747>76;2   84  $=#4     j!  #0:?@     G!9 &  DK 6:.$$>_=47676;67676'&/+&'&'='&'&'&'5<767676767676?=4#&'&'&54'4&5&'&"6767465^   (-6"  2 .J& &J. 0  "6-) 6 4/**/5 61  *  " 1(#i9 &  & " & 8j# !/"" 8 1*I  G*1 87+"'.767>?6767654#'&/&'&'&'&7676;23767>767676767;2+"'&'&'&/.'& 2  & [ b ' (    Q d &   5  K  p  u  2$6    c$ w   L C^VI)+&'&'=47676;3=4767676;;+"'&'&=G       '     == =jL  6 w  +C T%#"'&'&'&=67>?;2;=67>767;+&'&'&'=)A'          &, 1   1"&    >P  CT%=476767;2+!+"'&'&==6767676;3=47676767;    pg      II   -4 / %  FK  6C^Ja)+&'&'=47676;3=47676767;3=47676767;;+"'&'&=$z          '     767#"30!  &:NZ     W $  ! ?"  -: V#   #   %b"  '<;+&'&=4767;+&'&'&=476726767676#"'.'&'&'546567676767676+'34'&'&'&j %  %  #  '  #0:"   GFs@  "  *O6 % /  !>%   ) "( )  ' A    3  - 4H0  /Q 6'! ( >547676;!;+!465>767676323#"'&5&=463676767676746=6=4'&'&'#+"'&'&=#"'&'&767673<      '54+ =t* *!       #   ?C  C '*>8Y[  ,%,8#.-     "4 eA v7;2636767>7676'"'&'&'&'&'&76767676;'&'&'&'#;2+   %  "'&A,  $ ;k(  (# & o#  @"        (5*%F+0  !#   q;2'.'&'&'&#&#"'&'&767674766767676'&'&'&'&'&'&'56767>767627  "   !   (=  8!_T  '20 '".%  " 3  .#+ .(    '9!  5"G;+&'&'=676;+&'&'=47676U %  &          0H  1G 3`;+&'&=67>76;'&'&/&547>76?636237676==476n % &     # 1+     1 "   v>-1    X C /Ud+"&=67;276767676746=46=6767;32+&'&'=32767676'&'&+ !/  &( O1+   4".DS x8. 258N:K)% $ 'N"   t  )90   B  "C(_n7+&'&'&=47676;3=676767;2;2+&'&'=32767676'&'&+        J%'   +fBS x8. 25#    ?P  oo    n      "{547676;;2+4674767676+"'&'&=4'&'&'&#"+"'&'&=#"'&'&7676;<    *97 "    -  #   >C C  '"IC   ; ; GA3  g= C^ O3+&'&'=47676;3=6767;2++"'&'&'&=s     s   >=  >jj> =>  a     m|547676;;2+"&+&+32+"'&'&'&'&=#+"+"'&'=67676;32767676'&'&+  # B  %*+*)E#e5  332767676'&'&+\ `     VV</ "!74KW  F0  3C˘+   $  k *=  A    "8M`v465676767>32+#'&'&'&'4&5#"'&'&=676;!4'&'&'&3676767676765  %q>&$?)7F  E&2nL%E   $0  "+    81-* ,;e     B9(  =8U   /()'6#(2 &% 1*?L;'"'&'&'&'5656767676767673<'&'&'.76765 T/ 40W#" O3+   %5 W7   *>& 6#5$ h;7 -8c %-#  % %9=%']_%46576?67>767676;2++"'&'&/&'.'&767;2v R &7 "  ;E#  @ #767676;22#+"'&'&'.'&/&/&76767676;2  (!   ) .   2    )  $  "~?,@  ,%    '6B   n/JW "?)  9   / RG    Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnssbx10jlm_wnssbx10RegularRegularFontForge 2.0 : jlm_wnssbx10 : 29-12-2009FontForge 2.0 : jlm_wnssbx10 : 29-12-2009jlm_wnssbx10jlm_wnssbx10Version 001.001 Version 001.001 jlm_wnssbx10jlm_wnssbx10Q2b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>{y`+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnss10.xml0000644000175000017500000006130612275735442031725 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnr10.ttf0000644000175000017500000010635012275735442031535 0ustar sylvestresylvestre PFFTMMBGDEF'hOS/2VфXVcmapG$68gaspglyf @Jhead6d6hhea;$hmtxX loca(maxp8 name XpostxӍv(zA_< `*`*3dd3Zbb@1PfEd@u 8Zd M,n,O!ec!]$6,7i(;;!$ ! $$q! !)c2 ! ! ! % ! 7 !"5$A6 ! !e!e!y$$$7e! )(,A,,,,,,,! ! ,,&&c!!2,,32 3L 1 ORV[_cu1QTX_brXI\:h`F  V D~JdV0JR4~ T!!"#*#$$$%&'6((()z*&*++,0,--./001T223>34l5&567D889,9:r;0;*>?B?n=p230"'.'.'&'&/&'.676767>7676766'.'&'&/&'476?>?6c 2@!!9/  9 6  O?r2#.76?676?25'.'.'&'&'&?62#&76767676?65&5/&'&'.5&    .  +.2  77 (0! f&6 54 ")!!    &!#-   B7 (5+)&. .7 3- !+/ !+?3/#'+527676=4'4'&'&#%* $ C' L  2 eg5&'&'&767632#'&'&'&7676337276K  &#C        ( "c)*6.76767676'&'.7>         ) "   & !d-6"'&'.767676"'&'&767676!#&'&'&'&#&+""3276767653#4'&'&'&+;263276767676?3!527676==4'&'&#&#         x4 4%'9  E, '  (&E Y% D(  - c   & ) 9B  0 ##5 )4$$WV1 ]FV $&!#&'.'&#""7>76767632'&'&'&'&=4767676#"&#276767=4'&'&/&3/+5;263676==4'&#&+#?@[  ?1 36 D$  !GD=   &   # !$&$?$ $d0!<  0?"   e.1 7  "' '8 #V       "'SD+ / -") c7  UQ^  $O96>76767672632'&'.'&'&"67676=4747;"'"'&'&'.7>767676>?6?676+"'5&5&54'&'&'&'&'#  NV   *  H2 !%1& #U-5;r#    4 L) ^In77#"'&=476;76767674'&'&'.'&/&'&'&'&'&7676767673>576767632#"'&5&'&'&'&'&'&'&'.u 2S2   '=%1  !!'.(    +%0+  8H " " D/ 1  #0 1$0)(,A'%    $0 ( 4 #1- 4x/ M?373737""33'#'#'#52727676==4'&'&#&##(v  v(# ]U  UH] (H;73?"'&'&'&'&7>'76767676==&'&'&#-], !/9  5   '  = n/ -%3)   '   #5b  !#"6?627632+!527676==4'&'+"'&'&'&767676"'2767676767676746564=4'.#6'4'.'&'#""";27>76765= 6 )0*E ,7'7-  a  (.   ./1$:%0 "0  *%G"! N@p U\-)!!4#.$"1       +&5P_E    +  '?14 9% !373737""!=4'&'&#373737""6?2632632+!52727676=!33/###527676==4'&'&#&#5&'.'&'#"#";67>76747!"'r    G   "'r   6 2(D ,78     "'r- {1$: %/"0  ))  )&G! 00  ]FV + '>13 9$$!#&'.'&#">767676333/#527676=4'&'&#&3/+527676=54'&'&'&#"#+?@#  ?'"-3 E&!#" ".S'"-  -f.16 %!.E~"   "+ /IP  L9 61!>373737";2767656==4'&'&#373737""3+"#4'&'&'&'&+527676==4'&'&#&#!"'r -/ "'r  .8      9.  Ns  aGV  V^ !  & -//- &! ^EV  lx727>?67>767>7676323/+527676'&'.'&/&'4+3/+3/ 8  #9"     z '0V'");x0     (C $.; dc& 6   % $,O    .'   '   2S 1:$Im!#&'&'&'&#&+""63?32+!527676==4'&'&#&#3;2767>'&'&'&'&#"+"$ )'$3  =: %A1/$)#<-   3. 0"!% * 9B ' 02<  ]FV 7%P' $D`}!32""23+!527676==4'&'&#&#;27>76=&'&'&'&+""3;2767676'&'&'&'&+$> )!b#8  0M !,8$:- n  (B !41   .2 <%7* "P &<+  ]FV 4'271$@ !GD!#&'&/&'"&+""3/#'+527676==4'&'&#&#!   #O -  :,d"- 9D #  _U   ]FV >N!""3#&'&/&'&#!"#?2767676767676?56546=&'&'&#&#6=54'&'&'&+";276768 2  &DB%    H w  #  E( V^  :J"   'N:  {3   a(i  6IH4+34!a!#&'&'&'&#&+""3276767653#4'&'&'&+;263276767676?3!527676==4'&'&#&#!4 4%'9  E, '  (&E Y% D(  - 9B  0 ##5 )4$$WV1 ]FV );?"54'&'&#373737""?67>74'.5&'&';?"3/+5272727>76'4&5'&'&'&/./"33/###52727676=4/./.'33/+527676?676767&/&' !)$  ?iM!   "'r    !Mi>    $(!?7 ,k   1M(,( !/'#   <-$8   "'r   $-=    "(.!(,N1 k, 7?  ;dI =  = Id;  **e  (Hr;#    YC5  4 "t t"   5CY  "(rH( e**2:23'&'&'&'=76563203376767676'&'&'&+&'547;276767654'&'&'&#"'&=6766767676u RQUtU46  *J&$ #'9  / <+ #5"<,  ,'/^E,%e *D  F,. (*J - .  +79,,"- + 18s + L8L & !373737"676?6?>7>74&5'&'&#373737""33/###527>=#33/###52727676==4'&'&#&#!"'r - 7Da  -"'r   "'r- 7Da)  -"'r  a Ti*"   ]V bTi?"  ]EV !c2&'&'&7676'&'&'&7676763327672373737"676?6?>7>74&5'&'&#373737""33/###527>=#33/###52727676==4'&'&#&#  ( :6<(      #" Q"'r - 7Da  -"'r   "'r- 7Da)  -"'r  (  $  S a Ti*"   ]V bTi?"  ]EV !373737""76?>7>7>75&'&'&';?""3/+5272767>76'&'.'&'&/&'&'33/###52727676==4'&'&#&#!"'r    14    $)!=8$N*    q+,( !/("  -?  6   "'r  =.2   )$J'  @"  B^0  4 "t ]EV !""2;'#'+#527676==4'&'+"'&'&'&767676"'76767676?465656=6'&'&#&#&#< *"'s , a   ( .      ^V M@p  $.YeUJ1#!1       9g$H!.,.   %o;247676?>?>7676;"33'#/#527676=#&'&'./'.'.5323/#52632767676==4'&'&#%# +L%  #P*#- |&!-\   -,-  (d&   - n Ha! \>l  ]V  s "FG6*    sHrnq     #R,] !373737""!=4'&'&#373737""33/###52727676=!33/###52727676==4'&'&#&#!"'r    G   "'r   "'r     "'r  ))  ]V  00  ]EV 7/X;'&'&'&'&'&'56567>767>33676767674'&'.'&z &&#X/ )%&*-20-(#4pN("  "N0!B Y4#7  4_ &(5HD@2 BV)(T  'QA/A  !Y=H81D3R 3  !j!""33/###527676=54'4'&'"'+"33/###52727676==4'&'&#&#!  "'r- / "'r  ]V  P@r  aW  ]EV "p@`!32+33/###527676==4'&'&#&#;676767675&4'&'&'&'&#"""8 ;4# M0: $x   "'r- h <$7!2 I+*  ]FV  ( & 75j676?67632#"'4&54&5&'&'&'&'&767676767=67;#'&'&'&76767676L %  )L$"7* .*)c0 0 )7Q (.iI45C*Ia%!<k5'9a#  *,%1(2}J, 2C   !8+: L7K2-<  $\!#4&'4'&'&'&'&'#";3/#'+#527327676==4'&'&+#?7d  B)  (!0K(/% !(  )B  +k#  0  ^U    UQ^  0  #k+t373?"?674'&'73?"#&'&'&'&'5476';676767>74?4/'&'&'&#,T'#$ /6 = 2 )A !2  _#* & 4    .)  >- !  M[#;O  $ LJ,1     h K 6 a{3;73?"3'#/+#52767>=&'&'&'&'&76767676?=&'&'&#2;263>7676767=&'&'&'&'&' ")$C+: 8]= 3@9I,: ")$C,: ,I9?1<^8 :>)! *FTG) ! )>   ! &@pI) ) Ip B$ !   S   ,R -(  (,( R,   ;?"76?>74676';?""3/+527654/4&5#3/+527676?6?6?654#/&/&'&'&#%.U(# F: -J (I* '3n #.V(#=  :  .J 'C) $2  _ #  i  !W ! : " N'   .#['  W  6 I%" !>w373737";2767656==4'&'&#373737""3#&'&'&'&'#&+!527676==4'&'&#&#!"'r -/ "'r  2  < 8+.  Ns  aGV  V^  :J"! ^EV !373737"327676?276=4'&'&#373737""33/###52727676=+'&'&'&'&=&'&'&'&#!"'r -, ;1*!    "'r   "'r   $5*'"   +:Y 3   /  ]V  .  2o! !C373737";27676==4'&'&#373737";276767==4'&'&#373737""3!527676==4'&'&#&#!"'r - ){&  "'s , ){&  "'r ..  Nr  aHW  Nr  aHW  U^ "" ^DV !>i373737";27276==4'&'&#373737"2;272767==4'&'&#3373?""3#&'&'&'&+!527676==4'&'&#&#!"'r -){$  "'s ,){$   r'" 2   #YA.  Ns  aHW Ns  aIV  U^  :T& ! ]EU $BNp!"63636?;2+!52727676==&'&'&+#?3;2767>'&'&'&'&+"7  ,: " 80- 6I"6 *D  ^ 4. .$ '"A  12= 0  VIa  0  #k+7$ \+$B}3?""63?32+!527676==4'&'&#&#%373737"3'#'#'#52767676==&'.'&#3;2767>'&'&'&'&#"+"$"&}/   =: %A1/$)#<- V"'r .. r'". .d  3. 0"!% *  )2<  ]FV  W] ]FV 7%P' $Bf3?""63?32+!527676==4'&'&#&#3;2767>'&'&'&'&#"+"$"&}/   =: %A1/$)#<-   3. 0"!% *  )2<  ]FV 7%P' 7'&'&'&'&#'5476?363767672754&5&'&'&'.#+&=6367>7676##&'.'&'476;767676?461 YC )$ " ('*  $2N@"B   w))+)FDR:01I0 %#k?     &(C1D *K 9 %  5A(6OOM00 K05&   D'!-o47676767676"'"'&'&'&'&'&5#2;'#'+#527676==4'&'&#3373?""3676767676'&'.'&"n"(2.Hj %&))2 $:0J+"'s 6 . s'"#O0 A Y4"5 cM xL%2!;:3)   .Hj  ,  ]FV  - 'PB/A  $X1+H81D2S"1! )v'&'&/&'&7676767676;!""33/###52727676=+"3/+5276?67>?>7=4'&#&+"3R \ )2 -~&8 %+'  %(0" G U+6./9-   ##*  Z2G#     #$  ;! '@ &  )T@Zq;""23+527676=4'&'&#3276767676&'&'&+""32767676&'&'&+'' 0 !   $) )!"7%  /%.  (      40   )   #8 ?!#4'&'&'&'&'#&+""3/+527676=4'&'&#~  #  )-L!!"L $ #.  40 ^)Ey!"3#'&'&'.+"#?276?67676767654'&'&#&#=&'&#&+"";6767z"$,G$     "   $z#  02 ^%  "^  @d&' 9>   3 0#  @S73276767>547>#"'&'&'.767676+'34'&'&'&'&'&#o 4 $B&$ ! ER- 8   9#g/   2  : /v5')   4" :. 0?=&'&'37;?">?>767676&'5?""3/+527272676/.'&/&'#3/#'+527676=&'./&'&'#33/+527676?.#/&'&#& :   T  D  T  : *$H  (N#  =&   5      E  # 5   &=   N(  F'*   B A : 3d+  E   N  O E  (d3 8%'&'&'&'&54?236203767676'&'&'&#"'&5&76;2767676'&'&'&#&'=47672767676722" $%2&!R.%$ 7"  5 2,2  ("  8(  &   ;#     -0  ""     G      r73?""6?46=&'&'73?"3/#5276767=3/#527676=4'&'&#&F  "c)  &E"!&F!"d(  &F!" 1*}2  14 #+|3 41 h<&'&'&767632'"&#.'&'&7676372767>73?""6?46=&'&'73?"3/#5276767=3/#527676=4'&'&#g    "  2 #    %  &F  "c)  &E"!&F!"d(  &F!" %" #)U 1*}2  14 #+|3 41 37;?">?67676&'5?""3/+52727676'&'4./&'3/#527676=4'&'&#E  S  : *$H (O  <'   6    E%!"A : 3d   E  N  41 o!"3/#527676=&'.+'"'&'&7>#3276767676?47=6'&'"&+v(  &&F!9!    "#      04 1%f0&   ) &2F;  |};2?67>7>;"3/#'+527676=#+&/&/&/&'3/+527676=4'&'&#k L9  h"! D! W 9  (9,+"  . " ?<.   04  C HI F0,@"  #E f73?"354'&'&'73?"3/#527>76=#3/#527676=4'&'&#&F  &E"!&F   &F!" kk  14    41  F22'&'&'&'&'5676767>76767676=6'54'&'&/& _,A6H)$" 5.@   %+'  %(0" Z/6Y?3  -0W<4 ;! '@ &  )TU!"3/#5276767=4'&'&'+"3/#527676=4'&'&#"!&F *T !&F!" 14 G &2  41 > Cr?76767676'&'&/3/#527676=54'4'&'&'&#654'54'&'&'&3767676?"H >@%" 7b &F#'9%) # A   'h30*O   WN  6(( ) &w)  *  +>!P&'#"376767467476;'&'&'&'56767676.76h@!' )  -#P[<!%. B )  !3_$H)     * )+3>\> - (O!#4'&'&'&'&+33'#'#'#52727676=.'+"#?$  $    p&"   %   Q   %*  *%   "Q3p;?"76?654/&';?"&'&5&7>#7676767>7676'&/&'&'&#" @& <D  ,9   E  " A#     !(-   *  4   "FI $  $   ' Oam3 !>]?67676732'&'&'&'3/#'+527>7='&'&'&'567676;=.'&#727676767>7=.'&'&'&'&54&5&'&'&376767L \9*!2F ! E! F2!*9\   '-5     +0  0+     5-'   K9G;4* !  ! *4;G9K  (B  @,0 ++ -9 9- ++ 0,@  3?">?67654'&'373?"3/+52764'&'./&'&'&'33/#'+5276?5&/&/&'&'&'&#" ?&  ,    7 $ $H." ?% . * 7 .((H    9 (   %' /^  <5  )$2  ]^)d73?"";276767=4'&'73?"3#'&'&'&'+!527676=4'&'&#&F  *T "&E"%;!!"  G'1  02 ^% 41 t73?"";2727676?27=4'&'73?"3/#527>76=+&'&=4'&'&'&#&F     &E"!&F    S  V  14  39  73?"";276767=4'&'73?"";276767=4'&'73?"3!527676=4'&'&#&F  &M "&E 'M "&F"!!"  G&1 G&1  14  41 ^#73?"";276767=4'&'73?"";276767=4'&'73?"3#4&54'&'&'&'&+!527676=4'&'&#&F  &M "&E 'M "&F"$  Dq!"  G&1 G&1  02 ^    41 A@Y!"32+527>=&'&'+"#?;276767656'.'&#$  W 1) >&2 +!  %   1!, 3"' l    8$2&  "Q% ! !-6f73?"32+527676=4'&'&#%73?"3/#527676=4'&'&#;276767676'.'&#&F X 1) >&3 +!"&F"!F&!!1!+ 4"% k    8$ 40  04  40  ! !-6O73?"32+527676=4'&'&#;276767676'.'&#&F X 1) >&3 +!"1!+ 4"% k    8$ 40  ! !-~%'&'&'&'&+#"'&=47632?676'&'&'&76327>76765'&'&'&#&767673?6F *  0 579%*S[G   ) 5*      K) &>    5D/;D    5e    ]7;>576767676'&'&'&5465#3/#527676=4'&'3?"767676747='&'&'&'&N /@))+!)  -15/9#"i &F!"!E&  %+( #)/$ !2 ,z;$ 20;   40   8$ &A  .&$   )Ti7"'&'&'&'&'&'&76767;"3/#'+527>76=+3223/+527>7>72?676?>754'4'&+"  24]$"! E  4, '= ,- -1    / 04  9 1  8w  !    -n6'&'&'&767676'&'&'&7>3276767>547>#"'&'&'.767676+'34'&'&'&'&'&#x            4 $B&$ ! ER- 8   9#    +   Vg/   2  : /v5')   4" :. >r?!!34767676762#'&5476;676767654'&'&'&#"3/+527676=#5354'&'&# M -'1 2 .;J   5(J     !E&!UU t$ .()'i]0E 6bZ:  & QJ   ao  ?6767>762#"/&'""32767676767632'&'&'&7>76763?676'#&'&'&'&'&"p ,,   & (0     $_(OL8# $  =    I" # 4_&*7>7676#"'&5&'&'."'&Y   >% .-  "K  4& ";C :C,! ^%  !  '     )   @      <*  !C2'&'&'&7676?3/#'+527676=4'4'&'&#|     E* C!   L  5  3O6"'&'.7676?'&'&'&7676#2767676=4'4'&'"'#      P$L + &     &jC *$!#   !'(@^ w!";+527676=&'.+'"'&'&7>#3276767676?47=6'&'"&+3;276767656'&'&'&#v% K33% 2%1 (!9!    "#      M 0 ) . # k   *1%f0&   ) &2F;     0o73?"354'&'&'73?"32+527>76=#3/#527676=4'&'&#;276767656'&'&'&#&F  &E K* 2& 2$2 (   &F!" 0 + , # kk  k   ,   41      . k?3#367676763/#527676='&'&#&3/#527676=#5354'&'&# !I  &7- &E! 0!&F!UUu*  /   @5! '? 1MN  `o! ^j73?"";276767=4'&'73?"3+"#4'&'&'&+527676=4'&'&#&F  *T "&E"!'&!"  G'1  14  >99>  41 2\3;737"!#&'&'&'&'&+63?32+!527676=##?354'.#3;2767>'&'&'&'&#"+"/}&"-,@  +4m=: %A1/$)#<-H2  ,-  3. 0"  % *  &e+D2<  i( )f& 7%!W*Pj=&/&/&766?6763#32+527676=#5;276767674'.'&#g  < : W 3' >(1 + U 1!+ 3"&/- B?  8)/  6& B͌ !  !-=Qg476767676767623#5#"'&'&'&'&'&'##53!4'&'&'"&"#3263676767475  8[7V  qW&.4 ## W0 )!.  .%   )$/  .#" } $q V: 3 "M;"(9373jE: ;5Mi%uA8  :9R %$;K22'&'.'&'&5676767672634'4'&'&'&#"3276765 *B $< 3L > i0    )   !  =*2;L>C X7 !S2 ( @  %B g5 2+Ni%67676?676767676#&'.6?"&'&##&/&/'.'&'&'373?" L0# +       (f. 3$ %-T'#( 'E eS ~ +#    %ky  W_   f"(.':_%467>76?>7676&'&47"#"'&'.5.'./&'&'&'&';?"L %  $    33 % & " @&   F,$    ! N <\a( ! 9?20 W 6&     & L>    Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnr10jlm_wnr10RegularRegularFontForge 2.0 : jlm_wnr10 : 26-12-2009FontForge 2.0 : jlm_wnr10 : 26-12-2009jlm_wnr10jlm_wnr10Version 001.001 Version 001.001 jlm_wnr10jlm_wnr102b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>^`*libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_cyrillic.map.xml0000644000175000017500000001332412275735442033155 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wntt10.xml0000644000175000017500000001701712275735442031727 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnti10.xml0000644000175000017500000007502512275735442031717 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssi10.ttf0000644000175000017500000006056012275735442032074 0ustar sylvestresylvestre PFFTMMC;aTGDEF'ha4OS/2VфXVcmapG$68gaspa,glyf!?-Thead0d66hhea6h$hmtx]locamPmaxp8 nameϯ9Yposty7v\zAE_< `+`+33ZW{bb@q1PfEd@u 8Z MdQU^3,6^-^^aa^U^W)cB^^`kd^w^_A|^;^L^dyaa9^@FQPK%RRRPRER(MjK%RR RNjRR$PKPF"Q RPR d \Fl 1 ORV[_cu1QTX_brXIJ 4Rrr&LzP  T J " V>\XXh@80.Bp44^  !l!"b"#$$$%4%&J&','((()`)* 9?;+/?;+/: -+2  T /  %+9 .*2  T /  %ܙ. $m)  *m#  .. $m)  *m#  .dZ A;+?/7;+?//  #V 9 .*2  V/  #V 9 -*2  W +k" .  #n*  )q"  +k" .  #n*  )q" Q3+?L.7, OQfU.37673'&'&'&'&=*:/> 1P#D#  "?0  ; 3+73+Y BZ B *Z+^n d?;3?;?;!+"&+!+37;7;+WBi B  4VK1`_C J> JJJ2AX *! *11_{! $K* #  2$T?;!+>7676763'#"'&'?37>767>7676'&'&'#"+??+ #z "'   )0:8;    15#  ': 7!#*EB > C;Gu !  0s1  ****   $    :(& +    ;) Sd0`#* g%#'&'&'&'&'&7676767676;.'&'&'&#&#!!3676767676\2$!,E.'"F=M/) 7"   % 88O4 Y  0*&g    81A"7;ZKA$ $3_! *  '2  6_T77>76'&'&'&/&'&'&'&767676;'&'&'&'&#&'&'&'?V >F*F  $ P &>m;'# % !E$ % *: #- 0!g;!(E9   '3%80  &O;4T   7# @&NI2B   ^K3?; #^ 4C/1_l) &`څ& -47327676?67>76?467436;'&/&'J!!J(  ) A9  Hg'_ 1  *62/#F _j2 + Yz!;2+??++67647247;2767676767676?4632767676'&'&'&'&+""so+% ?18?5 7 -  !6 0  5)#  X*A0   2 &2  &pT 6`$1_5*RU\W5: @2bD+85%W  -2- * ^Lj3?;!?;;2+?+#%32767676'&'&'&'&+"^ 4CG Ap+& ?19?6> ( W*A1   !1 &2   1_l) &pT  19&pT   6_ $KP  258 -0/4/^* k?;!+'+67636#+>?656'&'&#"+?? "x $ *  &2) !   :  41% D = u! !  .%%!, # u ( jm ! 1(9V$ 1_#* ^>8? ;!??;+#?^ 4C 1' F@C/  (t! K  0`l( )U: j/z! &_z* $6E*~)73??;#/+ #/5;WB  %]9$ +e) eI/ JJZ!e& 6=! 3O PEa8V3?;!+'+32+'32767676'&'&'&#&+"a 4XS2cdF  2 5, . =H#7_h?A; @ Y*?  1_{! $ ,p*;5 "8& 4>;4/^*aJa}3>?67>7465436;23""#+3276767654'&'&'&+32767674'&'&'&+"a4 _R @*  " "  FFO#6]2@3+  :$4d Kk:F4H,+@ *>  !_{R3  )$    JD , $,+#".= +4/^*^ 3?;!+'+#^ 4N,N8Y= @1_{! $k|$ >I_!3+?!+ +?#32525656?436;?676767676?#t2& K   / k   /  ,&?.  '* H)U:*P51 $P5 /7+$P5  0Du!O ;> N^H3?;!+"&+!+37;7;+^ 4VK1`_C J> JJJ2AX1_{! $K* #  2$){;? ;?;+/ +?/+?/C:+  ?C9]A6cB= %<%E!U M!  ?  74>C <_^F *g" K8 :vB) )Uz|8/N -T73 P=Q'G7 @ $x* 1n/H :F CkkN6- B&'&'./&?2567>76767676322"23"'&'&/.'?37676'&'&'&'&'&+6?4654?;27276767676'&'#,/(#  O%  .,6   X ,CW K*!"! &@1@ %8(S2 \-  >!%+* 4 (  +'$ B 28*"5! ! ,   ^>3?;??; +??+^ 4@8# AOY/@ > EQ1_l) )U/  _Cq! &`څ& 1_#{*  dt! ^)h'&'&5474747;767676547;?;??; +??+  ^R, - 'A8  4@8# AOY/@ > EQ2)#8  "& y1_l) )U/  _Cq! &`څ& 1_#{*  dt! `E3?;?;+/ #` 4@!OZ A3> A$D O P"  1_l) )Uz|BK ,4 $.8O#F> C #x* ?! +??#+67647247;2767676767676s.C 8 3) 5, % &`څ& 1_5 iaSM73#! J$8:m4d~36?>?46747474;2676767?5636;+??#"+/&/&'&'&/&7# #d & A    ?S K: = :-  ,2{G!JM<<   00:i.k& 1_#{* eKlBFB" `e{ ^;3?;!?; +?+#^ 4CF  B/C> ( 1_l) &pT  19&`څ& KP  25w*[3'&'&'&'&'&767676?654'&'&'&'&2;676767676765 .(W`-#!! 6x>L$& / .7   ;B  !&)!E  BZ  +jE  ^x? P,   Ut#n5  *Xv  ^83?;! +??+#+^ 4av/C 7 < 01_{! &`څ& 1_5`'NU_9S3>?67>7465436;23+#;676767>'&'&'&'&+_4 kJ  6! J% 6v  _l6-)  0 v  !_{R3  J4  /5\ J% 5/V%#'&'&'&'&'&7676767676;.'&'&/"73276767676\2$!,E.'"F=M/) 7"   &*! L@kF +   g    81A"7;ZKA$?f ~E   +?;!+'+ +??++ #z$H;C,C > C;Hu $$ee{ 1_#*  ]34?676?6?6;+6?436;67676?654/&/./.'4.4_.  %6\9; wf*-# !4 '%  <  >i-2  B,VZ !@C!     H L]|]D\~?;2"++?"'&'&'&'&'&76767676?"26376767676767676'&'&'&'&'&#> 3G0%) @)6B+ ?G/  5&5CS(K)x<% $5z!=,     '9 #j%*,L''^;  : F 1 !(U>)< E?  H.> $   -'  TEU;?;+/+? /M/ *|* E 1# ' I L8 )8D 5? ;!??;3+?^ 4C 1' F@C 1' K   / 0`l( )U: j/z! )U:*P51 $P5Q+"'&'&7676?>74?4;;265467676?46574; +??' ?( B  - "o8 B/C0- &  )1~ #  >_6 &`څ& KvJ^p?3?;!??;!??;+^ 4@2& =A@ 1' @A@H ,1_l) )U:  j/z )U:  j/z &z! ^>pI? ;!??;!??;3+?^ 4@2& =A@ 1' @A@ 1' K   / 0`l( )U: j/z! )U: j/z! )U:*P51 $P5X5V?;!32+??++32767676'&'&'&#&+"B3 6* E=H$6 > E<Gi>B9 ? X*? u! &pT  H@ "1_#* & 5= ;* a*?]3?;32+3 #?32767676'&'&'&#&+"a 4>2 5, . =H#7/Y 5Z 2 vh?A; @ Y*?  1_l) &pT ;5 " *zs`  *dp*& 4>;4/^*a*H3?;32+'32767676'&'&'&#&+"a 4>2 5, . =H#7_h?A; @ Y*?  1_l) &pT ;5 "8& 4>;4/^*9g465<7546=7263767673'&'&'.'?3;6767676?!?;!474656'&'&'&'&!'"0'6+ +rP`'2   !( '#H2 B $011 X  axnM   -  2\#  /%& ^-S;2474?6767676'&'&'&'&'4&546767+#??354'&'&'&'&2;67676767676747#  B^42_M!  9+6/*ZN#   YJZ -/7   ;B ##)!0 x8%i8 '-7 )3`P/    &2? ;8i0 &t]p% E! P,    Ut! o4   *=O#" ?a"'&'&'&'&'&767676; +?+ +?#";26546767>76U  J"  CMg#5/ALSS!F .q/E4 " !S@i47>5465454263>7676726;#+?'&'&'&7676767676726;2565>567676'&'&"#7676767>?6&&(  7 3;'  %  +*4   20  &$ #  # _    !, $ 5   %=  3        FBKm>?676'&'&'&7676767676767>76726763#54'&'&'&'&76?465 R!3#?!+#?#5;?;26367676767>?4;?## B@ C@      P)   * `* s% *?$O *?$ ,(;2S ' ;a$^H+K=K%#'&'&'.767676!767676'54'&'&'&39% %  H*3%`"     ( .3 ,<5' j    ^1eN- "8   (7l;?3?;+/ +?/+?/ARI 'y1 ?"f' @ <,5 +7) : (^$ A $k  $d #d$ e)  U!  5-  *<1& %K!I&  /<,  ,f(  !T %|.'./576?6763#&'&/&54?72767676'&'&'&'&'&+4767>5436;67676'&'&'.#" +R M%   " .T)N  '62") !- ..&  ((8 f  (    -57 - )       R&23?;+?+?K * *3P.8) )4P, 4D ;H OQfN 9HfURAO37673'&'&'&'&3?;+?+?= <;.> 1PG 9K * *3P.8) )4P,  -"?0   4D ;H OQfN 9HfUR <3?;+/ +?I 'y1 >"f' @ <,5,#d$ e)  U!  5-  *<1& %KfU/!+?#+7;6767676?6/7)  #+ $!  OQKE+=;$>!<A %3][ PM3?;+? +4&'&'&'&'&5&5467#+?j0 #q( Q.9# !D8(  1 *9,K 9@ OQfT ;sYA$%!  ?JfUR.33?3+?++?KK.8  & 7,SS OQ0Q5# !y$ fUE &G3'&'&'&'&7>76762754'&'&/&76?465S  vE! 0fD o 3E ;   66J  ) 0.@Y  GbHt   " 7`?)   +g  R !+?#+?a.8*  7, OQKE+:~HIfU(>0`6767676'&'&'&'+??35&'&'&'&'&7676767465#&$ 0<5;>*   9 = K  2( *F +  K  G-0  *v, /o#+       N$  $*8 MU%'&'&'&'&5476767676763.#.'&'&'#"2767>767>$'0!," ) $*$!-' 2 .:- ;2k  &/IH !  ^7J$  j !#'+ +??w ?  9:CAKk3W37>7676?6747;'&'?7676767>7654&54&5&'&/&mO  %6( 6KsM.  0CZ.D0    $7?YA  y|J$ ,# %6BK>T|?;>76767672'&'&'+?#"'&'&'&'&76767634'&'&'&767676?647>5?67>54'&'&'&#&767>76765  7  !+  +8'>4   7  (. 1 >26  !  $4'!5/    ) .) (;  5906  +RWC'  *v, >i1 *S(/[B5  ] #:MP*   .k H 7"  o   L. A;? ;+/+?/d<1 *  ; BX  #@=4 46% : (z. E N  )   >R 4a# #Z 56&  %s+  )h$R^&-3;?33#?!?K# +  K# B@ , `*GB; `* s% *?$fU%:3;?3+?+&'&'&'&54767>?6K  K.7 {   S  o  OQ1c&    4 R :3;?3;?3+!?K# %  K# $  K.sA, `*GB; `*GB; OQfUR^ A3;?3;?33#?!?K# %  K# $  K# B@ , `*GB; `*GB; `* s% *?$fUjM&C332+??32767676'&'."+"wY)   ,:( O ) )%( S   Kk ($R"5R332+?%3+?32767676'&'."+"KX+   ,:',K/8&@O ( *%'  S    fU EW@p%  ; R"?332+?32767676'&'."+"KX+   ,:',O ( *%'  S    fU  ; $Y46=4763767676;'&'&'./5656?36767676?#?;4'&'&'&#w$  ) "L)0%*-&*3'  -$0 `     0K V5  2  3& )  PAb;7476767676'&'&'&7+#?;54'&'&/&76?465O C_/,  N74/ !KN.9   3E ;   66JW  "0%&X<  9R (o  OR,E*  " 7`?)   +g  7K7"'.'&'&'&'&5&67676;+?++? #3  /J).8  ; $o A #k1 x)  >  :" OQ,J5 !h  ]* :/+  KWe?5?;73#?#'&'&'.767676!767676'54'&'&'& A|Y Z39% %  H*3%`"     ( .3 ,<5' ;+Z - (    ^1eN- "8   (7P>Cj?;!+676#?276767676?654'&'&'&#&+?#? 7(9@N!0  $8#,_^HI)   5&  9 6>W0&  N@ $ ' 3$cI0$OE/@I% *# Eq,0Pk  &F`%#'&'&'&'&76767676;2.#&'&'&'#&;+76767" ! :+ 'E%+''  - 2 . $ ;8 k    Tw M-   ! "   "a7767676'&'&'&'&/&'&7676762&'&#.'&'&'#'&'&'.'7=  *4 3 !. / 2J    $/  $ +   Cp#f   &7H     #  (1 5  -Q4 ?;3+?BrL.7,O)Y OQfU3I 93#?3"'&'&'?7676?67676Y Z K   % &"    0- / / -:Tu"   *;He!323+?#+7;676767676767>7432767676'&'&'&+"N .   (@'*   "- $     D )  #% S  * KE+,D-*<A '!!3D% ($R?\33?3323+?++?32767676'&'&'&+"KKN .   (@'  ) 7,(D )  #% SSS  * 0Q5# !y$ fU ($P v?;3+676767632632#+6?>7>76'&'&'&+?#? 7 .    9   $,# ; 6>W0&   T  "?  *;4/^*dA[33+32+?#?;?32767676'&'."+"K O X)      ,:(S<'P( *%(   T<  5    Ko" 'f ;\@Ff4?6767676763+'&'&'&'&'&54767#?;2725465756'&'&'&'&'&36767676?67 /9:>Cq R /,# /  " #("E)+-i '%  + $C66#. )$; (;# #0$18"Y .+ K -0,*F )8L3'&'&'&'&'&767>767>3!4'&'&'&76?U :  #j<  V5 '   ;'  6C>  F!. 5H ,A&'$4R F# = R/  "#D!J>33676?76767676;"#+/]  H ,0 >`n9 C &. !eMxL&40   ~)* # f] FRl87?>767;#+"+/32]    [6(D' Q  FW"  Z B+S>!3JW  <(  .   , PD    Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnssi10jlm_wnssi10RegularRegularFontForge 2.0 : jlm_wnssi10 : 29-12-2009FontForge 2.0 : jlm_wnssi10 : 29-12-2009jlm_wnssi10jlm_wnssi10Version 001.001 Version 001.001 jlm_wnssi10jlm_wnssi10Q2b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>z!`+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/mappings_cyrillic.xml0000644000175000017500000001321412275735442033433 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnti10.ttf0000644000175000017500000014373012275735442031713 0ustar sylvestresylvestre PFFTMMBǼGDEF'hǜOS/2VӄXVcmapG$68gaspǔglyfoGheadd6hheax$hmtx%!'locamaxp8 name<posty7vzAi~_< `+`+2dd1Zybb@1PfEd@u 8Zd M22n3R<K2J7 ]G<<:??s;<Ben<<<FA<<>22<@=@<e??x?<BZY`dZ^HA2R2RR682RZ2R [2RRY@7RR2R7RZRR9R7i2[K3R36R25&Rvk&gS 1 ORV[_cu1QTX_brXIfJ$: h @ vbZ8"zR|4  !"#% &')**,$-./0t1234h5 567 8f9:;<?0@AABCEFG2HIJKtLMFMNOPzQnRRS^STUVWY:ZN[2[\]D.8x7"'&'&'.'&'&'&/&'&?676?676%6'&'&'&'&'&5&7>7676?6!     *B M* 8B&  '      & 2C  09  '! 1 >$ 87  !'  !5/  &: n2n%&'&'&'&/&76#'&767676?676'2"#'&7676767676?6764'./&'&'&'&    M[* 4F$#1G   .:& *    8I$ 4< $$( %> "& RL]636767>767632"#'&'&'&7676?676'&#"'&5465767676767>  #  8%     5  6 )+* 2  : 1 %' 0  1g572767>7636'&'&'&746564767>".%0  &3 ' (       " )'&3'&'&'&767626'&'&5&767C           <d$6'&767676"'&'.'&767>3;2767676767676767632+!+"'&76476;2767676??4676/&'&#"&+&54746;!;2+&'47647656=&'&'&'&+";676767>?6;+&5465>564'&'&#&#        "  & Si,   QY  I     U"L  6#A 8%0   '     c  0&  - 'LH  j%`    V   % 4+       %  ( R%767676?6'&'&'&32;2#&+&+#"+"'&?6767;6367676?7674754'&+"+&'&7>7>?67676;!;+&'46565656'&'&'&'&#&#"676763223'&'&767>" ++   ,3e+    $#  #I )    E !   4  $ #102 D   :5<#'  "  ' 8   +"9'i.!Z8p1  ]#m  &"   0 R   2    7.!& .%?&M2. $: $->767676726363'&'&'&"7676767676?47632'&'&'&'&'&767676?67676#"'5&74656'&'&'&D? #$1'%0,   %89    ?^??*6xQdfM    > C\[> h      *    ! ) #"R   ZzvQ $ o%)  Z')*_'" Jy7#"'5?67632767676'&'&'&'.'&'&'&'&76767676>?67632#"'4'4746576'&'&'&'&'&'&/    %%( ; " , "  * -G$)       %$# /  4G.2,:# 0 #0 D*  6J     ?74674'&'"&'&+"'&54762  G  2&   H    _l   `k  ]nm736767676?6'4'&'"'"&#&+&'5465676;;2;23272736;#"'&'&'&767676762~ ( &9     '<    R #X M3   "C &11Ij  1G$S%% ' %G73767676767676?>54&'&#'&"'+&5465676;!;+""27>367636+"'&5465676;27676?7656'&#&+'&'&767632"3;2767676'&'&'&'&'#g   L/Z      $ 0 - 6A$_   R_#(#(" %  ( R &  M1  !09  /&K!&1'  ,D8,  <2+32+&"#&+"+"'&7676;2632767676??674'&#&'&#"'&5474763232;2;273273273+"#";2725?6'4'&#"&'&+"'&5474763232;2;273273253+"2637676;6+&'&767;2632767676?673;6767676'&'&'&'&'&#"#l8 *   :'  Y       0    ; #        0      $  4 4F=|  ! T &  M0  1T 1  cr$  ,~) /'  6s'LS  4 9, 2& *F8+ >767676;"'#&"'+"+*'&767;2727676?676'&'&'&+3;#"&#"&"&+"+"#"#&'&767;2767676?7656'&#&#&#""#"'"54?>?676;2+"'476476'&'&'&#&#"",4.&           J    !!  J    "  9ݖ"   %-  ( b &:0    Hp<   %N/RI    b)j $"  ) [  2     0. <>o332323327;26;6;2+"3;2727676??6'&'&"'&#"'&7673223272632632+"3332;23+"#"'&7476767=4'4'&+"'05'&767;2632767676?74676'&/&+"'&5476  7  :/ ," O G$  87    ,)     '/  G J g<^ 7 $  %#%'   `j :%+"#22#"&#"'&#"#"'&767326367676767465>77676323;#'"'#"&#""+"/&764763636767656/./&'3// ,  /       =    C!    (F"N   j  +  'C   8(:, F{<?2767676;6+"'&767;2767676767?6'&/&+"'&54767;2+&5&7656'&'&'&'&+"5&'.'&'&'&#"""3;676767>D 2 %"  * >`  *k  i  J\     1!>   %  $  %  V$%Bu   AF O  j  W +  2*  7/)M ?^23+&'&5465636;2632767676?674'&'&'&+&547676;2#"';6767676'&'&'&'&+""5'&'&'+3;>767647 D J2+,-V   .4    l)   (?i 1%' @ ! +@>&  V6Y e9+42Q6C    *," ( %'11'  4,%70I5 ;;2+&'46576=&'&'&+""2332;'#'#&#"+"+#&747476;6232767676?7656'&/&+"'&5476 IZ  '*:Q     ,(P   G  X     d[  "`k >p;!;+"332#+&'54676=&'&'&+*#"'&7>?6767476;2767676767667656'&#"'&+"/&#&764764'&#&#&+";272767>?7>kV [   H$  0H("&    *    uI  Q{ )/%+ ?"H \m  R     5  q @  ( ;2X1'8, r^(<3;2767676767676767632+!+"'&76476;2767676??4676/&'&#"&+&54746;!;2+&'47647656=&'&'&'&+";676767>?6;+&5465>564'&'&#&#> & Si,   QY  I     U"L  6#A 8%0   '     T0&  - 'LH  j%`    V   % 4+       %  ( B&/&'&'&'&'"&'&4656476723;63263263#"465?676'&'"'&#"'&7672;2;;273273253+""6?67>?6?>76'4/&#"&/&7676232;276;23+3232'"'&+#"#"#&'&76732767675&/&'332;22'#'*'+"#"+"#&'47476;2632767676?54/.'.532;2'#"&+&+"+"#"#&'&76736767>7>?6?G  !   9 !v$ (    .    #  >E     & #&  T/ F$ (89  <     0      ) 3l     $  % *t>  d     4 4F  N/ 39      E' . b   0/ 2 &`  b$ : 9|     (0G n'&'&'&'&=6767632336767676'&'&'&+&7476;6767676'&'&'&#"/&?667676"! =(Wd9(& .+!6 *  + ( Q %8,%   ")! (<* e   CA5 2  8"  #4HG, 6\B%(!  +z    * ,I <n2323;23#"&#"&#""#"#"'4767;27327676767?4/"&'&+"'&5474763232;63263263+"#"7676767647654/&'&+&+&'47676332;27326;253+"#"2;22#"&#&"+"'+"#"#"#&'5676;276767>?6;g  J%     V  1, 3 $\     .        V       0     >+ Ev$    (Vo#    Ex' Pj   #o#  JS<nd5M337276767676'&'&'&746564767>#2323;23#"&#"&#""#"#"'4767;27327676767?4/"&'&+"'&5474763232;63263263+"#"7676767647654/&'&+&+&'47676332;27326;253+"#"2;22#"&#&"+"'+"#"#"#&'5676;276767>?6 (0   %#)+ '   ;g  J%     V  1, 3 $\     .        V       0     >     Ev$    (Vo#    Ex' Pj   #o#  JS<\2;02#"&#"'+"#"+"#&'46567;276767>7?676'&'&#&#"'&5474763232;27326;273+"#">?6767467>7676'&'&#"&'"5'&7676232;276;23+3232'"'&+#"#"#.76732767656'4/& <   .   V    0     $ ?7>75&#&#&+#'&'&'&767676"g  !3.$@=U V    *X  H m$ ))(+ " #   9  %5N{8    q%   _ n  &LhiE.>   A;'#"&+&+#"+"#&'476763263676767?676'&'&#&#"'&547476;24?6?67;2+"#"2;22#"&#&"+"'+"#"#"#&'&767;27676767?#"'&'&5&5.'.'/4]D      "    V   f    S2  g    V       /  ]BOyE  z ^Z      Wp$   1eY R "p"    s|? $ns   1 6t$<n+32+&"#&+"+"'&7676;2632767676??674'&#&'&#"'&5474763232;2;273273273+"#";27243?>764'&#"'&#"'05/454767;23;>;2+"#""2;22#"&#&"+"'+"#"+"#&'47476;2767676?6l8 *   :'  Y       0    9 '   9'  Y       0   ! T 1  cr$  ,~) )   !r$   9,&Q3'&'&'&'&76767676?64'&'&'&'&767676767676765'B 6v6@*+'F  {AI '6  BKd) 8 $!:"  P7AY*   T u= X,  /[3%f2  )Mz'% <o;!;2+"#"32#"'+&+"#"#&547676;27676?7674'&#&+""3;;22#"'+&#"#"#"#&547676;263276767>??654/&#&+"'&5476 #kOs S! "2   M" *K  8   K  _Y    O5  k^  j*Z >u3;02#"&#&"+"'+"#"+"#&'4656763273276767767654'&#&#&+"'&547676;2+';27676767654'&'&'&'&+"":       1   } P7 @) S  )!lQ$ C*  ,$ ;*. "#UC  ' :(  90,67>7676;#"'&565654'5&'&'&'&7676767674674676320'&'&'&'&'&'56767676767673! ,  <>: G%  ,ZK =Pb  : DZ$(0# m '  1    V% O##p? P'.  K8K   /#-#'aU' H%   ';!;2"'&74?474'4'&'&'&#&#"3;2;02"'#&"#"'#&#*#"/&5465676;26326767676?7>74654'&#&#&+"#"'&76?>76U m     "  S     0b B& $ .!    ,Q1   +    `Y   Q  &  d767>7676767>7464'4'./&'.'.5'&'&#"'5'47>332;2;6;26326;2#676?6?67>56'4'&'"&+&'54656762;326326326;#"###&'&'&5476767676368  !L   B  74 I  $    :a+ ! #       ( C    n2    a- 3Z(       e J7"  0   %G %#"/&'&'&'&7676767>726;2765?&'4'&#&#"&+"/&#&76763232;62;26;73+#";#"#"2;2;'#"&+"'++"+"#&'&7476;2632727676?6+23232365?463727676767676'&'&'&'&#&+ ' D( "LB^     V       E'  "MB]      7$      s 0#2  25 1"3  2  5w$ 'D,%f0,    $# )B$,e2+     -b.1  QF[ /`00   QF2:923'#&#"&+"+"/&7647436362767676?467>?>?6&5.'&/.'.'&'&'&'&#"'&54767632;;7;27;723##?67>7467676'&'&'"'"5'&7676332;627;2##2323'"&+&++#"&7673627676765'&/4&'&W.     .   j1  9     - & *D      -   (%  S*>   -  08d5     y8        g0N    ^0 ) 7      ((<>n332323327;6326;2+"3;2727>??654'&#'&+"'&54746563:2;;72;2726;+"3322"'&?6'&'&'&'&+!+"'&767;2632767676?74676'&/&+"'&5476  5   ?(  , L   * Q    + 1l  G  Q"j3]  c\  R  2   `j n"#"+"'&'&'&'&?654'.#&#&#"&+&547676332;26326;723+";2767672765?6'4&#&'&#"'5&4#546767623:;26326;3+"#""3;22'#"'#"'+"#"+"#&'47476;2632767676?46h 9Y"    /      C< %  " 0   X    0      " E m    ,b ( 4* r$   .+=233;27;632632+"33;>76??6'4&#&'&#&#"'5&=4767632;;26;6;6+";272767>??6'4'&#"'&#"'&76732;32;26;:732+"323;+!+"'0'"5&7676;6327676?7676'&/&+"'&5476 6  <,'}-P!   +  G$ L  0  `     (-    c  M  f@\  ]xk.\  r"   c  <>-332323327;26;62+"3;2727676??6'4/&#&#"'&5&76763;;273722+"3;2727676??6'4&#'&+&54656763;;32732726;3+"232+&'&7>76'&'&'&'&#&+!+&'46567;2632767676??65&4'&#'&+"'&5476  6  ;. 'zP! o  G &M       A  %M M  L g?]   ]z  h7]     Xx$ x  .   f4\  O~2767676;6+"'"'&767;263276767677674675&#&#"+&'&?6?6?6;2##"5&'./&'&##""3;6767674 / ,! @:P *g    e D    (q   &  &  %  V%%Cu RT> v  . 2Z  _I   7/ *L ?|'27>7676;6+"'&54767;276767>5?4654'&#"&'&+'+"'"5&74762;;62732732+"#"2;2;2626;263#"#"2;2+&"'+"#"+"#&746567632632767676?767654'&'&'&+"/&766'4'&'&'&'&#"""3;6767676D + %!  %=`%j   X    &(   1      H   0    H    ) " &  %  V'%Cu  10M _t&   /~* 5   _k   `k   6  7/+M ?v2767676;6+"'&767;276767>5?4654/"&'&+"5474762;;6326;623+"#"5&'.'&'&'&#"""3;676767>D 2 #"  '9P 'j   X     O       %  $  %  V$%Bu   $4/8 _t&   /~*   7/)M x'.'&'&'&5&767676726725656767656'&'&'&'&'&'&'##"'0'"5&?676326767676'&'&'4767632767676n W> #'#>= )5     \M   ! ./B?$ Z*x`B& IR'#5$?       %   R#*  /!    ';CNn 4%> $ 9& /#5H)<U47>7676767673'&'&'&'.'547>7465#32;2'#&+&+"#"+&5465676;263676??676&#&'&#"'&5474763232;;6;26326;+"%64'&'&'&'&767676767676765:_59(+2- 89PF  !     0"   V          6  BK`) 8 $!:" c %mD&  # !~4 P5  ,.   "Xp$   327676767>7676?676765?676=&/&+"; A @?'$qa    X     0     ! S 0w     @    !   j  % QO5    1M2   t&     /, 5     r "/*   ." Za%'&'&'&'&5476767676?623>5676767676767>7465632'&'&'&6/&'&#&3276767676765?>M  1  0 ='   -        7 "   <  J $$O;    &6   &  0   2 *[6!  7>3673254'&'&'&'&767676?6 VP   # -QC  ### % P7 X;L.  -8'   .2/ X > 6J<4 * ""/D7! -~B   # ,eC- &+c/%`0P|%2'&'&'&767676767676'27263676767676'&'&'#"32767676'&'&'&'&'&+ 0  "/&0$ >  7>@  )  " 4*G     1#  " -   76"'&'&'&6767>767>76'&/&"#&/&746?67676726 <  T )  &.+   6:0  #Q,   0(   1=  -") :&#     $ ;.#       /ZQ~46576'&'&'&#'&7>7>76'&'&'&'&'&=6767676767654'&'&'&'&7676767676764576?    1. >#  7<   $' *    # ^ *oF5   *`^~$%+%'4   ">(! $ &    "PC $ "  ^CU727676?676'&'&'&76767676+'2767676'&'& :5   42 (9#J45#  +)< G2( #78 * $ %   ,\$$ !K,  +)    .%>H#776767676'&'&'&'&/&54767676763?>;2?>7>76767676#/&56763&'&'&'&76767676767>76#&'&'&'&76767+""+"'"'4?67#'&747632k *'% )8    AS* n P (63)        !$   &,.5  2 N    l #>$M- ! 6 % 1hB("  W  +  B+  U  8       +aD'   &  :Y  &!  0d! L.,( Av7767676'&'&'&'+"'05'47;276767676'&'&'&"'&'&76767672'&'&747676a3F2   . )0  3! "*4 & ,@ BqD+   Q"-!     *#  )$ 1  E   $ RL%'&'&'&76767674>474656'&+"#"'&76?6763232767676546?67>7676767>74676323'&'&'.?     #.     6%  (   ,       # 8 ) +E&2, +  <  W7  3 = 13 , !,  +$  RLg8233;7>7467676'&'&'&76746567>'&'&'&76767674>474656'&+"#"'&76?6763232767676546?67>7676767>74676323'&'&'.H ',  # 7* (  >?     #.     6%  (   ,       #     " 3 ) +E&2, +  <  W7  3 = 13 , !,  +$  R*7'"'.'&5&?674'&'&"'4'?676767667>7676'"'&7>3&'&3276767674632#&'&'&'&747>56'&'"&'"&  0      '&$13#$   /       C  U:  96   0!! !  $ 8          + ,)    3627767676767676767676767676767632'&'&'&54?6'&'&#"/&'&767>V )  &*  *    "  $  $     ! ,  5  $L@( "*      5*  ,!   *01 -  5832>?6?>;27676767>7>562&'&'&76?#"'&/.''"'&'&767632'76767676?>705?'4(* 2`* 5    0 $  +E<  !  +' !      $ B& J=::      *  #0@fY,  A 3 FG.'# -2  $*E RL%+""#&'&54?>76'&'&#"'&767676767633?6767676767676765632'&'&'&76?>#     0             .    $   %  . ,  +( $  E"  $ 6  ' #  #'*Z C3'&'.'&7676767265&/&#&6767676?R5 J5= .I,0 W$  /   4  2\#(Y9+  @ZdG*6 3e0! 9 0f0RL676767676767263636767676767467632#"'&'&767676767676=&'.#&'&74?6'&'&#"'4'4765676767632 =       #/  ,     -&    .        j $ &5E( )  ? = 0%  -7 2v6  D.,  + -   > 72;2'#"&+&+""+&546567;767676?7676'4'.#"'&76767676676762'&'&'&6'4'&'"&#"2336767676?<     %  C      &' = T-0#   $"(  3 a     W 4(     .  " Q69qA#  4   Q< 0%)O"%[O&'&'&3676767>7676#&/&'&'54767676#"'&7676'/1  )  ?2   &( +  'ZGD$ ! y  -U$ 9-4 /    -  j8-%  RK7>76767672636767676767632&'&'&54747>7676746754'.'&+'&54?676'&'&"'&54?654'&#"'&7>56767>367676 !         .     8.    %  /$   :     #  5?67>'&7676763223#767676?")9       # 7, )  , N2 M'    "4'%" #"!'')@''  f0 2E10  !z?, 3Q .)    3AY3467>5>7676767676/&76767&'"767632'&/4&5'"'&'&'&76763276767>7676765'&'&'&'&'&767676654'&'&'&#&7676767>7676?67>7>7675&'&'"&#2376767676765<          "# 8 L20"         88    V/.   "  +          !)    % S(  !  2?),! O59m@*   B&    %2 5 /8zG& ? % %'f=     : )    :; & %/T&@G72327676?654'&'&'&+&'&767676767676762'.'&676767&'&'&27676767467647632"'.'&'#'"'&'&7>o  "  $    #85 %+)  #    !  "    4H  %  0  #  '# ) *$   )    % '  (  #F     R3@%'&'.'&'&'&767>767654'&'&#"'&5474656767672767>7>5?>76232767676747676&'&?67676=465'&'&'& .        1)   &  %   3    0  (   3   ,A! 7  6  7" "  =*(  & *.;  ,$         -    R2%#&'&'&'&74767>5676'&'&"'&547676767676767676?6767676767>76767632'"'&'&76?6(    &  /                  1      =' <    ' .6RK%'&'&'&54767>76'4'&#"'&54767676767632767676767654654?6767676767676?67676767676?632'&'&'&''&'&'& !)9      3      &   % #*$   8         % 9<,A " "(*J& $  #   :.%%. "=  ,[$"  6{4  !$   *+$ )  R2?%'&'&'&'&74767>76?676'&'&#"#"'&5465>76767676276767676765676?67632767676?676765?676327676?47676'&7676767654654&5475'&'&5'&'&'&  ! #      .     "  %    #   2    0     / /9 *A )F  36 $   @)#0  <  .B   6z5 -       " 6Zsuw'&'&'&#&+"'&547676763274252576;>3676'&'.'&76767676?6?##64'&'&'.76767676746# 3"%=C    &%G" +l`8   #$(' 6 "## | &)    5 U0  !, !  ^]  $:   ; RN>7676'&'&'56767676'&'&#"#"'&54576476767676%6767676767632'&'&'&?67654'&'&'&'&'&7676765 B+  C%*;      2$R 8   " ( )   %+    /  O9 3! 3??(    , "  { $  8  9"*8     '=. RQ|676#"'&'&'&767674656'&'&"+&'&?676767654'&'&'&7676767465"' = S/O&       (  "= 17   ,)7 8 4+T   " $,   D  "    % ;  9c%465676=&'&'&'.'&5&?6767673"/&'&'&567>#327676767>747+&547;}' @,  +/* ;S966/ #  8      > 1  Go=f    %L"  Ru%+"#&'&54?676'&'&#"'&76767676763;2?>76767676'&/&7676%6'&'&'&#&76767676?_Q !    /       P .=" =@,.N> 4 @#   -  4  %   . %,  3' %  @ -ZZA,  6] S 7 0h0! 9 0f (72%"'&'4&'&767>7676;27676767>7467632"##&'&'&'&74?67##"'&'&'&7676'767676767676?+34I(2 55 .        < "      5 p 7676'&'&'&76767676"#+'276767>'&'&           86 ;J!9!>37    #9  C-(  .0    V % (   *)_$$%&E)"       + 72>%46567654'&#'&#"'&76726726367263636;2+>76767676""#"'"'4?672767676767>76'&'&'"#&/&54??467+&'47676;      1 %   +& '!/"   #   3*#  Hw  C    6  0Q)   '8 bQF@0  #->S&[2*%2  $oC A `   [s7;2+"276767676767622'&'&'&/54767676763"'&'&'&763&'&'"  h     9I / 7 0   )"'  #    . "A,-G6 #  !9 Kj7367676'&'&'&'&/&'&'&'&'&7676?6'&'&6767&'&'&"#"'&7476762m "/      + !  .    6/9H%  D  & 9           '!A *%   RL i6'&76636767>767632"#'&'&'&7676?676'&#"'&5465767676767>  $ 0  #  8%     5   " 6 )+* 2  : 1 %' 0  12fd6'&'&547633767>76?676'4'&#"#"'&76767673'&'&7>@   -$ 8  -7  4B)0( "     6  (@<) ' >  #!)> (=     6k77676767>76767676>767673'&'&'&'56?6'&'&#&##&'&767676%54&'&'&'"&'&7676?V    * 0   )9'     .  %   %+ , - UI,  $  $ "%;"  3v%5&3 @*:    < '>%R%+""#&'&54?>76'&'&#"'&767676763?67>6767676'&'&'&76?654'&'&/&76767465#     0       9    * Q@     %+  %  . ,    . %$  @-  Q @E  ," %-"!   O &@# 2767654'&'&'&"'&7476326363>7272636;2+676?676327676767632'&'&'&'&76767676'&'&&'&5465??>5+"'&'47676;          I$   "/   /%  Hw B  6  *G%  ( (A=N 1  4   %76767676767632&'&'.''#"&#&'&'4'567323676'&'4&:< !    '       ' +    ,      < %D A  (%,!3#'.@3W%      +4)3" .  //5 ,*   - %    #(7  * 1#"#"'&576767>7676;2525?>76'&#&#&+"'&5465676;2;27;6;2+";2+&'5>54754'&'&'&+"276767363:2+&'&767;26327676775&'.'&'&'&#"""3;676767>%:     W    %&      9"?*    12 ,# K 9HC  X& %  %  %  V$%B_  !   <    3+    * -s&   XT3  cv  7/)M R637673'&'&'&76?>76746=&'&/&'&74?6'&'&#"'4'476567676763267676767654'&'&'&37676767465'  A5    /'   .         %/0 ,  !   &Q   #. D%  (9 21  D.,  + +   'I;  < 0  v&f~++"'&?676;656767676767676;2#"'05'&?67#'&'&'&'&'&5656%465676'&'&'&'&'&76767>7674  4 %03"4$G H#1-6PB       /2   $$ C- 4 F-2/:  ?>?>767676#"'&'&67676767&'&'&#"'&5/4&'&/&/&'&'&#"'05'47>3;232327;:726;2#"#Hv:1;     &# F           a xa& :    (  Au  H[>$  4 UD"! Sr&#"'&'4'.'&'&'&'.'&#"/&?6767632>?67676'"'&'&5476t  9j0    )   [, 5    ]M   . D,   "  ,B 8 rC& 0H(  W 9'  #   ) NA     Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wnti10jlm_wnti10RegularRegularFontForge 2.0 : jlm_wnti10 : 28-12-2009FontForge 2.0 : jlm_wnti10 : 28-12-2009jlm_wnti10jlm_wnti10Version 001.001 Version 001.001 jlm_wnti10jlm_wnti10Q2b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196 a>b`+libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wntt10.ttf0000644000175000017500000010075012275735442031721 0ustar sylvestresylvestre @FFTMMCuOS/2V^cHVcmap%pgaspglyf ͓uxheadf6hhea$hmtxHlocakP,maxp( name2#K"zlposty}}H|A_< `@`@FFZc@1PfEd@ u 8ZF M *NNnm(3OF - 88'  -(59, 73 9 H+:7HGN. /"  1 ORV[_cu 1QTX_brYJv6Dh V v x L  ~JHBbB<<V Bd4 !"`#$Z$%&.&''("():*2++,,-D-.d./f0012X234045T6 67678V9:9:2:*>|7#"'&'&/&'&'&76?67632"'"'./&'&?6767632w!t    V@   (z  q"!t   V@  (z  q"g   L9 #m eg    L9  #m  eN>~%&'./&'&76767632#"'&'&5&?>?67>76?&/&'&7>567632#"'&'&'&767>?67>767"t   V@   (z    q! #s  V@  (z   q g   M9  $m  e g   M9 $m  e N>+"&'&767>767;;2+&'&'&547676;Y  V    @5    br  C    nI"'&'&67676#"'&'&'&54765&5&5&56763272763S $:)!)  '4$   &  "   md+2'&'.767672'&/&7676         d"  %  4*2'&'.767672'"'&'&7>+&'&54767;2+&'&=#354767;+&'&=#!=47676;+"'&'&=676;        !   >S        CV  !4"  %   : 3   H   =    G    c+&'&'&=4767;#"'&'&=#6#'&'&'56763767676767=4'&'&'&"2+"'&'=6767;\  ,1  ]8P "   *  '$     + ; '&.C  .  :  ) -  &!73      "I$  '!   (oz767676=6767;2#&'&'&'&'&5476767676767667676;+&'&/&'&'&'&;2+p#) 1  I.4 -$.#0  8C&!   ( 714   1#! /     K%.=T"2,!!.    d 1.1R  3o7#"'&'&=4767>76;76767676'&'&'&'&/&'&'&'&'&76767676465676;+&'.'&'&'&'&'&'&x  5  8  A, %  (L1(      !9#", /  ) 0*%!*"#   i   #  =    <   j  &  % 1   LD&  Oc?+"'&'&=676;+;2+"'&'547676;X    >3  YY  3>    X&       FcT+"'&'&47676;2+'&'&'&'&7676767676=RH  !`/   ! !(#H # >"&  ?$  5      (U cfy#"'.76;2#;2+"'&'&=6763##"'&'&'4767>3?57=7532767676'&'&'&'&+k   ')9    c  P   & 6  6&#   *-?-!4  `1.F!42    I8T0v #)"  ci|"'&'=676;2#35"'&'=676;2#;2+"'&'=67635#2+"'&'=6763!32767676'&'&'&'&+6 A w  A  8  !  c  w  A  6   6&         )/=,"3       #) cx+&'&'=4767;#"'&'&=#676762+"'&'=>354'&'&+32+"'&'=676;_  /4  v L5  D    #     H  &, E  /    ' &-   . ' XcU#"'&'&5476;2+3#"'&'&5476;2+32+&'=+"'&'&5476;QS  S   ( (  &&  &     ^ ps7;+"'&'&7676;65767>?676767;2;2+"'&'&547676;/+73'&'&'.5   I      *    '   K  ] $   $>      8[   0 X,Z    //& 4L%H +=cBU#"'&67267;2+&'&=#;2+"'&476;6767>56'&'&'+[   9L o" %" !!;Fd.  f& # 9 2#]+! &  $,$c?Sf#"'&'&547676;22+"'&476;;67676'&'&'&'&'+;67676=.'&+[   9{A(7 ,   ? 6<FT)  gd"# %n&   -A'C & "( $ !9 -cD#"'&'54767;2+&'&=#;2+"'&'&=676;4  3#<:     ~ $  &'  s   3Hy N+ &<]2ZT\E( cl+&'&54767;2+&'&=#354767;+&'&=#!=47676;+"'&'&=676;`!   >S        CV  !& : 3   H   =    G     c7+"'&'&54767632?>?>74?4'&'&/&'&/.+&'&54767;2#5"'&'=676;2#?"'&5476;#"32+&'&54767/2+"'&'=6763=/_  '  7   , 7   5   7 + 7  (   #  6 # >  <( 4&      f:     :f       84((   !\= %  [    [  % =\!8o'&'&'4767327>767654'&'&+"'&'&767;676767676'&'&#"'&'&'&'&=67676322727257676#w &4  M.* 0B2 50 ' !&    8q%.  ?! &1.H   )   " $     (" " }  )1> c#"'&'&5476;2+47>?>767267256=#"'&'&5476;2+32+"'&547676;##32+"'&547676;QK  >O K  K  $<K &] +f}/     ,:/\0    FH"&#&'&676763#"'&'&/47464&5&56763327672#"'&'&5476;2+47>?>767267256=#"'&'&5476;2+32+"'&547676;##32+"'&547676;R  %;)(   %'K  >O K  K  $<K #    & "    ] +f}/     ,:/\0    c#"'&'&5476;2+?"'.76;2+";2+"'.763/32+"'&547676;XK 4Z   Q  QU   8   F /K & @q%!   e"   '   " '|- ; Z   cd#"'&476;+32+"'.76;##'&'&6767636367676767475467=74==;   S  !&    &'     'Y@ 4 0   !B  - U"c#"'&'&547676;467>7>?6767;2+32+"'&'&47676;#"'&/.'.'&532+"'&'&47676;F , &   -   A   (    ;   A   &  Bs  4_B            832+&'&'&'&'&'&#;676767676=676;##&'&'&'.5&767676    '>0 4)>    V4 "_5*GO> \  "A .; hQB    /?o8= ;8A-+0 cD+"'&'=47676;2+&'&=#32+"'.=676;` [@  2  %o   2&- F 8  3    c7././4#4+"'&'54767;2+3676?>7>747#"'&'&54676;2+"'"'&'&'&76767676?P     T   9 2  W G   '       9 1    #(       4\5= 8  0!cQ_n#"'&'=676;2+32+"'&'&=676;5'&'&'&'&7676?367676'4'&'&'&'%  ^  %i4 60H%  _   % Q- 7 )0 E" !1F -' + & %0($e4 =  = *($e4 ># 6!  $E c732+"'.767676;6?4?4&5.'&/&'.'.+"'&'54?6;2#?"'&476;2+";2+&'&'=6763/   G   E <    [  4 & [  " H   P   *$ >#   +/ q #a!M #  *C&  "-  T+  2LYcR#"'&'&5476;2+3#"'&'&5476;2+;2&'&=!+"'&'&5476;QS  S !  V   &&  &  s   3H c\#"'&'&5476;2+;5#"'&'&5476;2+32+"'.76;5#"'&'&'&'&=QS   { S  S y: &' m 0 '   ' #/"? c_"'&547676;2#3"'&=676;2#3"'&547676;2#3+"'&'&5476735  8  v  7    8      IR   &             Ycg"'&547676;2#3"'&=676;2#3"'&547676;2#2'&'&=!+"'&'&5476735  8 v  8    8   Y    &         k  2Ic@S+"'&'=4?6;2#;2+"'&'&47676;3276767676'&'&'+[   ~O  (t+  FJ     I&7 . %$:J4     % c;s#"'&'&5476;2+;2+"'&'&5476;+&'&'=676;2+32+"'&'=6767;!;67676'&'&'&+=   G    H !& p(  L   G   G   D    D&    1+3.!2          "% -c<L#"'&'547676;2+;2+"'&'=676;67676&'&'&+3  +a1 5["  - 5  3FH#   K&   !767;2+32+"'.76;5+2+"'&'&547676;2567>?6?>+; <+"-Y7S K7"   7  1 ?,  **: -J  ' +_;! U5   *   5 g54'&'&'&#""""'&'&7676767363332+"'&'&'4#"##&'&'&76767676?63"7676765c&  % '7*-     < #.$$) :1#(  ##!) ( $    !$3 &l*        19  ;     !9d>_7676#&'&'&'=6767676?26"767674'&'&'&'&#"##%#; ,#A"&..H# YC   . $ (9  3676'4'&'&+;6767676&'&'+g0  !2 &":   5$"=   /9D " 2ZX')  cr  ,   #6        " ,:#"'&676;#"'&'=#;2+"'&'&=676;3 =9  F #k1   4r)/  )    tVa#"'&'=676;2+;&'&=!'&'&=4767676;263>767676763#+  ?=  -6  x    ω r   $  M  M`   H  %<%:45(22%7>O76?46767632'&'&'56767676+'!4'4&5&'&'&H(!8 ( gK& '(%"6   s  ('5 ") "  D19C5   0U <4 6 72+"'&'&76;65>7>?67>764'4&/&'.'&'&#&+"'&54767;25#"'&476;2+?&'&676;+"";2+&'&6763/#32+"'&476;=/q   0  4    >  )E  *  >  4/       E  >   b     8  %  8     #b!   <'  9 &9  '<3%#'"'&'&'&76763236767656'&'&+&'&'&76;676765654'.#&'"+&'&=4?63223767676736323w  += !  /%3+ # &; 2# $3*       3*&   @ "+          * $- #"'&547676;2+476767676?6?6=#"'&547676;2+32+"'&'&547676;5#"32+"'&'&547676;f.  )R%  - ^ / )R$  ./  )R$  . '1   .  *R$  -r    g              -5     F&'&'&67676#"'&'&'&'474645'&5676327267#"'&547676;2+476767676?6?6=#"'&547676;2+32+"'&'&547676;5#"32+"'&'&547676;R   %;)(*   %' .  )R%  - ^ / )R$  ./  )R$  . '1   .  *R$  -4 $   ( "        g              -5     #"'&547676;2+?+"'&547676;2+"";2+"'&'&547676;/32+"'&'&547676;f.  )R%  - 6=   O   6  =     V    8" .  *R$  -r   16    0 L    F 8    [#"'&'&547676;2+32+"'&'&47676;##'&'56762276767676760   >A ,.  *R$  - & $ #   q   '   4%Nd: <!   !!6  #"'&'&54767;6?6?6767;+32+"'&'=676;#"'&'&'&'.'.'&5#32+"'&'=676;Q! ,  --  , !!  R  !" . ) !   R  !r  g!  !g       /O  ^     r#"'&547676;2+35#"'&547676;2+32+"'&'&547676;5#32+"'&'&547676;f.  )R%  -/ )R$  ./  )R$  ..  *R$  -r   gg               9!B3'&'&'&'.7>767627767674'&'&'&'&#"R".! B+ z . $ (9  ,a=~*  ,q3-H 3!  (,@ )  ?) Q#"'.7676;2+32+"'&'&547676;#32+"'&'&547676;f- HM -/  )R$  ..  *R$  -r$ '      4     ";c6763'&'&'32+"'.76;#"'.76;6'4'.'&'"727676767.B*+7( *8!,"g-+   5 0$=%    0+ 7B 2   &("   (C6  !$  -  (#Ha;'&'&54754#4#"&#"&+"76767676767;#&'&'&'&'&767676?61 " *( A!"    #/ &!$  "/     c2+    0?*'! L+&'&'=4767;!;#"'&'&=#;2+"'&'&547676;`   ; C   O   .;    Nr  4  /    4}276767676?67674'.5/&'4'&+"'&547676;2+3?#"'&'&47676;2+/&'&'4&'&765}    Q  K  7+  R  "H  2) * 3 @9     /; C-    K>A%   )  " d]#"'&'&547676;67672"'&'32+"'&'&547676;5#"'&'&'&767>727>76767=.5'&'&54'&'&'&'&'&67676767<.  N  B*/); 2  &n  2  ;'"C$     )y   " &     AF\G5B       >9GE<%   8+  - 'H ,! ,  +<   !732+"/&676;7>?6767654/./&'&'&#&+"'4&5&'&7636;+?#"'&4767;+""3;2"+&'&547676;/   `  B B   O   *  `   > F    O   ; ,>  V S   7* "  P X P ?u\#"'&547676;2+3#"'&547676;2+;&'=!+"'&'&547676;f.  )R%  -/ )R$  .7  W   -r   4       M  M  i#"'&547676;2+;5#"'&547676;2+32+"'&'&547676;5+"'&'&'&5f.  )R%  - s/ )R$  ./  )R$  .d# 4r   :           j 3   k#"'&676;2+3+"'&'&547676;2+3#"'&'&547676;2+;+"'.76;> A  t   =  t  A     KT r %  4    4  %  % ur#"'&676;2+3+"'&'&547676;2+3#"'&'&547676;2+;&'&=!+"'.76;> A  t   =  t  A   \ r %  4    4  %  b   &=% AT+&'&'=47676;+;+"'.7676;;6767676=.'&'+Z   %d  E+((i/ $9=  =r .  g 8*  4   !:l}#"'&476;2+;+"'&'&547676;#"'&476;2+32+"'&476;!;6767676'&'&'+HM  8'$   a' CM    M/   1r %  g T#    4 %   &   '! +9F#"'&547676;2+32+"'.7676;676'&'&'+- $R*  .T, -$ 2# "x8 -9L#2."Nr  g  "4   %# :l&'&'&'&#+"'&'=47676227>367673'&'&76763276765+&'&'&=676;v +       "# .?1:B   E4   ( !    ,  "5@<3+ 8  6"  T|67>762#'&'&'&'&'4'#32+"'&476;#"'&'&547676;2+7276767676'.'&'&'&#& B- $,)!2 1 X Xw       0H  "DYO=2(6 &4  &f5 !(.G"0   )r7&'&'&'&5&6767676767;2+32+"'&'&547676;5+32+"'&'&7>5676;2?676?67#"#3;<   "6-k?   ..  "i   -<6   M    36 $ (1 /'         A     >   7d,k|6'&'.767676'.7676766?46767632'&'&'56767676+'!4'4&5&'&'&           H(!8 ( gK& '(%"6   s  ('5c ) %   ] ") "  D19C5   0U <4 6"d#"'&'54767;;2+67>76767>763#'&'&'&547673276767676=4'&'&'&#&32+"'&'&=676;#"'&'&47676;g. K $   E! B8B     % #  $0  $l  /C   @&  #a %2=,bE    #$2Kh9*    + -}       Hh776767>76767;'&'&'.76767676327>767632+&'&'&'&'&;2+ 2F  G14?. #"56     ,4( |)  %6   : +)c-.%  =    G7#"'&'&=676;367676764'&'&'&'.'&'&'&'&767676;62767632+"'&'54&5&'&'&#3#&'&     ,*  $*/ )C      ()("+;"  *@ 3#    W       ""   D     " *2 NdT2'.767676+"&'&767>767;;2+&'&'&547676;      Y  V    @5    bd )    C    .pdZ2'.7>76+&'&767;#"'"'&'.'&'&7>763;676767=:      b    @- ; &   " * d *     bC 0L    7 *Y as#"'&7676;2+32+"'&'=676;#+#"'&'&767>46546567676;6767676'&'&'&+r  .,  1 $ Q%  T  ' $   "q     f )l$   4b1O9  #  O0 )&  {#"'&'=676;2+35#"'&'&547676;2+32+"'&'&547676;5#32+"'&'=676;2767676'&'&'+C  G  G  1!    R#  G  $  "r  gg   g R#        +$  c#"'&'&547>76;2;+6767232+"'&'=676;54'&'&'&+32+"'.76;#"'&'&547676;`+ G    .8;  -e!  ) 9#-"g ->   <&   "  \ ) 5$(& . &(  tb#"'&547676;2+3#"'&547676;2+32+'&'=+"'&'&547676;f.  )R%  -/ )R$  ..  ' (  -r   4        M  L  gv#"'&'&5476;2+;2#"'&'&=#;2+"'&'&5476;#+&'&'=47676;;67>'&'&'+  O &   \",+  2  4    IFU!$ Ty & *  +   94x$     (  [&%P_=47676363232+;+"'&'&=676;#"'&'5476763;676'4'&'&'+m  [  O[) 3'Q !:  /1  iR&4 "S     g  E    4   ' oi=47567676?67363223+&'&5##'&'&'&'&'&'5&5#+&'&=4767676;=4'5'.'&'.76767676756=p < "0 < $ v 8  7 T $$   %&2  ) $$"  %%3  9  )V( $   " /!4F3'&'&'&'5676767263!&'&'&'&'&'&37>765[0 9 '!# <)Z  }   ?(  *= Y%*`L  ?Y1.V  ;  B &  C+pZ74767676?6?676'&7+&'&/&/&'&5+&'&547676;2+ $  0) 'A    3    H  -F :_6  A5   &3#m   % ?p$_7476?67676'&5+"'&'&'&'&/.'.'&+"'.'4&'&5&7676;2+ ) ,2 !   =   5 U #F ,1'%  $    D &   &&tOW 9'  #   ) NA     Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ Generated from MetaFont bitmap by mftrace 1.2.5, http://www.xs4all.nl/~hanwen/mftrace/ jlm_wntt10jlm_wntt10RegularRegularFontForge 2.0 : jlm_wntt10 : 28-12-2009FontForge 2.0 : jlm_wntt10 : 28-12-2009jlm_wntt10jlm_wntt10Version 001.001 Version 001.001 jlm_wntt10jlm_wntt102c      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]uni0306uni0308 afii10023 afii10051 afii10053 afii10054 afii10055 afii10057 afii10058 afii10059 afii10060 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097 afii10071 afii10099 afii10101 afii10102 afii10103 afii10105 afii10106 afii10107 afii10108 afii10193 afii10146 afii10194 afii10147 afii10195 afii10148 afii10196>v`libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/fonts/jlm_wnssi10.xml0000644000175000017500000006423612275735442032103 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cyrillic/CyrillicRegistration.java0000644000175000017500000000340112275735442033055 0ustar sylvestresylvestre/* LaTeXAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath.cyrillic; import java.lang.Character.UnicodeBlock; import org.scilab.forge.jlatexmath.AlphabetRegistration; public class CyrillicRegistration implements AlphabetRegistration { public CyrillicRegistration() { } public Character.UnicodeBlock[] getUnicodeBlock() { return new Character.UnicodeBlock[]{Character.UnicodeBlock.CYRILLIC}; } public Object getPackage() { return this; } public String getTeXFontFileName() { return "fonts/language_cyrillic.xml"; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/MiddleAtom.java0000644000175000017500000000315012275735442027116 0ustar sylvestresylvestre/* MiddleAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a middle atom which must be rounded by a left and right delimiter. */ public class MiddleAtom extends Atom { public Atom base; public Box box = new StrutBox(0, 0, 0, 0); public MiddleAtom(Atom at) { base = at; } public Box createBox(TeXEnvironment env) { return box; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/RomanAtom.java0000644000175000017500000000341412275735442026777 0ustar sylvestresylvestre/* RomanAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a roman atom. */ public class RomanAtom extends Atom { protected Atom base; public RomanAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { Box box; if (base != null) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setRoman(true); box = base.createBox(env); } else { box = new StrutBox(0, 0, 0, 0); } return box; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/SpaceAtom.java0000644000175000017500000002167212275735442026764 0ustar sylvestresylvestre/* SpaceAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.util.HashMap; import java.util.Map; /** * An atom representing whitespace. The dimension values can be set using different * unit types. */ public class SpaceAtom extends Atom { private static Map units = new HashMap(); static { units.put("em", TeXConstants.UNIT_EM); units.put("ex", TeXConstants.UNIT_EX); units.put("px", TeXConstants.UNIT_PIXEL); units.put("pix", TeXConstants.UNIT_PIXEL); units.put("pixel", TeXConstants.UNIT_PIXEL); units.put("pt", TeXConstants.UNIT_PT); units.put("bp", TeXConstants.UNIT_POINT); units.put("pica", TeXConstants.UNIT_PICA); units.put("pc", TeXConstants.UNIT_PICA); units.put("mu", TeXConstants.UNIT_MU); units.put("cm", TeXConstants.UNIT_CM); units.put("mm", TeXConstants.UNIT_MM); units.put("in", TeXConstants.UNIT_IN); units.put("sp", TeXConstants.UNIT_SP); units.put("dd", TeXConstants.UNIT_DD); units.put("cc", TeXConstants.UNIT_CC); } private static interface UnitConversion { // NOPMD public float getPixelConversion(TeXEnvironment env); } private static UnitConversion[] unitConversions = new UnitConversion[] { new UnitConversion() {//EM public float getPixelConversion(TeXEnvironment env) { return env.getTeXFont().getEM(env.getStyle()); } }, new UnitConversion() {//EX public float getPixelConversion(TeXEnvironment env) { return env.getTeXFont().getXHeight(env.getStyle(), env.getLastFontId()); } }, new UnitConversion() {//PIXEL public float getPixelConversion(TeXEnvironment env) { return 1 / env.getSize(); } }, new UnitConversion() {//BP (or PostScript point) public float getPixelConversion(TeXEnvironment env) { return TeXFormula.PIXELS_PER_POINT / env.getSize(); } }, new UnitConversion() {//PICA public float getPixelConversion(TeXEnvironment env) { return (12 * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//MU public float getPixelConversion(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); return tf.getQuad(env.getStyle(), tf.getMuFontId()) / 18; } }, new UnitConversion() {//CM public float getPixelConversion(TeXEnvironment env) { return (28.346456693f * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//MM public float getPixelConversion(TeXEnvironment env) { return (2.8346456693f * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//IN public float getPixelConversion(TeXEnvironment env) { return (72 * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//SP public float getPixelConversion(TeXEnvironment env) { return (65536 * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//PT (or Standard Anglo-American point) public float getPixelConversion(TeXEnvironment env) { return (.9962640099f * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//DD public float getPixelConversion(TeXEnvironment env) { return (1.0660349422f * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } }, new UnitConversion() {//CC public float getPixelConversion(TeXEnvironment env) { return (12.7924193070f * TeXFormula.PIXELS_PER_POINT) / env.getSize(); } } }; // whether a hard space should be represented private boolean blankSpace; // thinmuskip, medmuskip, thickmuskip private int blankType; // dimensions private float width; private float height; private float depth; // units for the dimensions private int wUnit; private int hUnit; private int dUnit; public SpaceAtom() { blankSpace = true; } public SpaceAtom(int type) { blankSpace = true; blankType = type; } public SpaceAtom(int unit, float width, float height, float depth) throws InvalidUnitException { // check if unit is valid checkUnit(unit); // unit valid this.wUnit = unit; this.hUnit = unit; this.dUnit = unit; this.width = width; this.height = height; this.depth = depth; } /** * Check if the given unit is valid * * @param unit the unit's integer representation (a constant) * @throws InvalidUnitException if the given integer value does not represent * a valid unit */ public static void checkUnit(int unit) throws InvalidUnitException { if (unit < 0 || unit >= unitConversions.length) throw new InvalidUnitException(); } public SpaceAtom(int widthUnit, float width, int heightUnit, float height, int depthUnit, float depth) throws InvalidUnitException { // check if units are valid checkUnit(widthUnit); checkUnit(heightUnit); checkUnit(depthUnit); // all units valid wUnit = widthUnit; hUnit = heightUnit; dUnit = depthUnit; this.width = width; this.height = height; this.depth = depth; } public static int getUnit(String unit) { Integer u = (Integer) units.get(unit); return u == null ? TeXConstants.UNIT_PIXEL : u.intValue(); } public static float[] getLength(String lgth) { if (lgth == null) { return new float[]{TeXConstants.UNIT_PIXEL, 0f}; } int i = 0; for (; i < lgth.length() && !Character.isLetter(lgth.charAt(i)); i++); float f = 0; try { f = Float.parseFloat(lgth.substring(0, i)); } catch (NumberFormatException e) { return new float[]{Float.NaN}; } int unit; if (i != lgth.length()) { unit = getUnit(lgth.substring(i).toLowerCase()); } else { unit = TeXConstants.UNIT_PIXEL; } return new float[]{(float) unit, f}; } public Box createBox(TeXEnvironment env) { if (blankSpace) { if (blankType == 0) return new StrutBox(env.getSpace(), 0, 0, 0); else { int bl = blankType < 0 ? -blankType : blankType; Box b; if (bl == TeXConstants.THINMUSKIP) { b = Glue.get(TeXConstants.TYPE_INNER, TeXConstants.TYPE_BIG_OPERATOR, env); } else if (bl == TeXConstants.MEDMUSKIP) b = Glue.get(TeXConstants.TYPE_BINARY_OPERATOR, TeXConstants.TYPE_BIG_OPERATOR, env); else b = Glue.get(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_BIG_OPERATOR, env); if (blankType < 0) b.negWidth(); return b; } } else { return new StrutBox(width * getFactor(wUnit, env), height * getFactor(hUnit, env), depth * getFactor(dUnit, env), 0); } } public static float getFactor(int unit, TeXEnvironment env) { return unitConversions[unit].getPixelConversion(env); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/CharAtom.java0000644000175000017500000000612612275735442026603 0ustar sylvestresylvestre/* CharAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing exactly one alphanumeric character and the text style in which * it should be drawn. */ public class CharAtom extends CharSymbol { // alphanumeric character private final char c; // text style (null means the default text style) private String textStyle; /** * Creates a CharAtom that will represent the given character in the given text style. * Null for the text style means the default text style. * * @param c the alphanumeric character * @param textStyle the text style in which the character should be drawn */ public CharAtom(char c, String textStyle) { this.c = c; this.textStyle = textStyle; } public Box createBox(TeXEnvironment env) { if (textStyle == null) { String ts = env.getTextStyle(); if (ts != null) { textStyle = ts; } } boolean smallCap = env.getSmallCap(); Char ch = getChar(env.getTeXFont(), env.getStyle(), smallCap); Box box = new CharBox(ch); if (smallCap && Character.isLowerCase(c)) { // We have a small capital box = new ScaleBox(box, 0.8f, 0.8f); } return box; } public char getCharacter() { return c; } /* * Get the Char-object representing this character ("c") in the right text style */ private Char getChar(TeXFont tf, int style, boolean smallCap) { char chr = c; if (smallCap) { if (Character.isLowerCase(c)) { chr = Character.toUpperCase(c); } } if (textStyle == null) { return tf.getDefaultChar(chr, style); } else { return tf.getChar(chr, textStyle, style); } } public CharFont getCharFont(TeXFont tf) { return getChar(tf, TeXConstants.STYLE_DISPLAY, false).getCharFont(); } public String toString() { return "CharAtom: \'" + c + "\'"; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/InvalidSymbolTypeException.java0000644000175000017500000000315212275735442032376 0ustar sylvestresylvestre/* InvalidSymbolTypeException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown symbol type constant or a symbol of the wrong type was used. * * @author Kurt Vermeulen */ public class InvalidSymbolTypeException extends JMathTeXException { protected InvalidSymbolTypeException(String msg) { super(msg); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/XArrowAtom.java0000644000175000017500000000550612275735442027151 0ustar sylvestresylvestre/* XArrowAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing an extensible left or right arrow to handle xleftarrow and xrightarrow commands in LaTeX. */ public class XArrowAtom extends Atom { private Atom over, under; private boolean left; public XArrowAtom(Atom over, Atom under, boolean left) { this.over = over; this.under = under; this.left = left; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Box O = over != null ? over.createBox(env.supStyle()) : new StrutBox(0, 0, 0, 0); Box U = under != null ? under.createBox(env.subStyle()) : new StrutBox(0, 0, 0, 0); Box oside = new SpaceAtom(TeXConstants.UNIT_EM, 1.5f, 0, 0).createBox(env.supStyle()); Box uside = new SpaceAtom(TeXConstants.UNIT_EM, 1.5f, 0, 0).createBox(env.subStyle()); Box sep = new SpaceAtom(TeXConstants.UNIT_MU, 0, 2f, 0).createBox(env); float width = Math.max(O.getWidth() + 2 * oside.getWidth(), U.getWidth() + 2 * uside.getWidth()); Box arrow = XLeftRightArrowFactory.create(left, env, width); Box ohb = new HorizontalBox(O, width, TeXConstants.ALIGN_CENTER); Box uhb = new HorizontalBox(U, width, TeXConstants.ALIGN_CENTER); VerticalBox vb = new VerticalBox(); vb.add(ohb); vb.add(sep); vb.add(arrow); vb.add(sep); vb.add(uhb); float h = vb.getHeight() + vb.getDepth(); float d = sep.getHeight() + sep.getDepth() + uhb.getHeight() + uhb.getDepth(); vb.setDepth(d); vb.setHeight(h - d); HorizontalBox hb = new HorizontalBox(vb, vb.getWidth() + 2*sep.getHeight(), TeXConstants.ALIGN_CENTER); return hb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TeXSymbolParser.java0000644000175000017500000001077712275735442030157 0ustar sylvestresylvestre/* TeXSymbolParser.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.util.HashMap; import java.util.Map; import java.io.InputStream; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /** * Parses TeX symbol definitions from an XML-file. */ public class TeXSymbolParser { public static final String RESOURCE_NAME = "TeXSymbols.xml", DELIMITER_ATTR = "del", TYPE_ATTR = "type"; private static Map typeMappings = new HashMap(); private Element root; public TeXSymbolParser() throws ResourceParseException { this(TeXSymbolParser.class.getResourceAsStream(RESOURCE_NAME), RESOURCE_NAME); } public TeXSymbolParser(InputStream file, String name) throws ResourceParseException { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); root = factory.newDocumentBuilder().parse(file).getDocumentElement(); // set possible valid symbol type mappings setTypeMappings(); } catch (Exception e) { // JDOMException or IOException throw new XMLResourceParseException(name, e); } } public Map readSymbols() throws ResourceParseException { Map res = new HashMap(); // iterate all "symbol"-elements NodeList list = root.getElementsByTagName("Symbol"); for (int i = 0; i < list.getLength(); i++) { Element symbol = (Element)list.item(i); // retrieve and check required attributes String name = getAttrValueAndCheckIfNotNull("name", symbol), type = getAttrValueAndCheckIfNotNull( TYPE_ATTR, symbol); // retrieve optional attribute String del = symbol.getAttribute(DELIMITER_ATTR); boolean isDelimiter = (del != null && del.equals("true")); // check if type is known Object typeVal = typeMappings.get(type); if (typeVal == null) // unknown type throw new XMLResourceParseException(RESOURCE_NAME, "Symbol", "type", "has an unknown value '" + type + "'!"); // add symbol to the hash table res.put(name, new SymbolAtom(name, ((Integer) typeVal).intValue(), isDelimiter)); } return res; } private void setTypeMappings() { typeMappings.put("ord", TeXConstants.TYPE_ORDINARY); typeMappings.put("op", TeXConstants.TYPE_BIG_OPERATOR); typeMappings.put("bin", TeXConstants.TYPE_BINARY_OPERATOR); typeMappings.put("rel", TeXConstants.TYPE_RELATION); typeMappings.put("open", TeXConstants.TYPE_OPENING); typeMappings.put("close", TeXConstants.TYPE_CLOSING); typeMappings.put("punct", TeXConstants.TYPE_PUNCTUATION); typeMappings.put("acc", TeXConstants.TYPE_ACCENT); } private static String getAttrValueAndCheckIfNotNull(String attrName, Element element) throws ResourceParseException { String attrValue = element.getAttribute(attrName); if (attrValue.equals("")) throw new XMLResourceParseException(RESOURCE_NAME, element.getTagName(), attrName, null); return attrValue; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/MulticolumnAtom.java0000644000175000017500000000606112275735442030234 0ustar sylvestresylvestre/* MulticolumnAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom used in array mode to write on several columns. */ public class MulticolumnAtom extends Atom { protected int n; protected int align; protected float w = 0; protected Atom cols; protected int beforeVlines; protected int afterVlines; protected int row, col; public MulticolumnAtom(int n, String align, Atom cols) { this.n = n >= 1 ? n : 1; this.cols = cols; this.align = parseAlign(align); } public void setWidth(float w) { this.w = w; } public int getSkipped() { return n; } public boolean hasRightVline() { return afterVlines != 0; } public void setRowColumn(int i, int j) { this.row = i; this.col = j; } public int getRow() { return row; } public int getCol() { return col; } private int parseAlign(String str) { int pos = 0; int len = str.length(); int align = TeXConstants.ALIGN_CENTER; boolean first = true; while (pos < len) { char c = str.charAt(pos); switch (c) { case 'l' : align = TeXConstants.ALIGN_LEFT; first = false; break; case 'r': align = TeXConstants.ALIGN_RIGHT; first = false; break; case 'c': align = TeXConstants.ALIGN_CENTER; first = false; break; case '|': if (first) { beforeVlines = 1; } else { afterVlines = 1; } while (++pos < len) { c = str.charAt(pos); if (c != '|') { pos--; break; } else { if (first) { beforeVlines++; } else { afterVlines++; } } } } pos++; } return align; } public Box createBox(TeXEnvironment env) { Box b; if (w == 0) { b = cols.createBox(env); } else { b = new HorizontalBox(cols.createBox(env), w, align); } b.type = TeXConstants.TYPE_MULTICOLUMN; return b; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/OverlinedAtom.java0000644000175000017500000000414212275735442027651 0ustar sylvestresylvestre/* OverlinedAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom with a horizontal line above it */ public class OverlinedAtom extends Atom { // base atom to be overlined private final Atom base; public OverlinedAtom(Atom f) { base = f; type = TeXConstants.TYPE_ORDINARY; } public Box createBox(TeXEnvironment env) { float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); // cramp the style of the formula to be overlined and create vertical box Box b = (base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env .crampStyle())); OverBar ob = new OverBar(b, 3 * drt, drt); // baseline vertical box = baseline box b ob.setDepth(b.getDepth()); ob.setHeight(b.getHeight() + 5 * drt); return ob; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/MathAtom.java0000644000175000017500000000350712275735442026617 0ustar sylvestresylvestre/* MathAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a math atom. */ public class MathAtom extends Atom { private int style = TeXConstants.STYLE_DISPLAY; protected Atom base; public MathAtom(Atom base, int style) { this.base = base; this.style = style; } public Box createBox(TeXEnvironment env) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setRoman(false); int sstyle = env.getStyle(); env.setStyle(style); Box box = base.createBox(env); env.setStyle(sstyle); return box; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TextStyleAtom.java0000644000175000017500000000337712275735442027700 0ustar sylvestresylvestre/* TextStyleAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a modification of style in a formula (e.g. textstyle or displaystyle). */ public class TextStyleAtom extends Atom { private String style; private Atom at; public TextStyleAtom(Atom at, String style) { this.style = style; this.at = at; } public Box createBox(TeXEnvironment env) { String prevStyle = env.getTextStyle(); env.setTextStyle(style); Box box = at.createBox(env); env.setTextStyle(prevStyle); return box; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/VlineAtom.java0000644000175000017500000000444212275735442027002 0ustar sylvestresylvestre/* VlineAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a hline in array environment */ public class VlineAtom extends Atom { private float height; private float shift; private int n; public VlineAtom(int n) { this.n = n; } public void setHeight(float height) { this.height = height; } public void setShift(float shift) { this.shift = shift; } public float getWidth(TeXEnvironment env) { if (n != 0) { float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); return drt * (3 * n - 2); } else return 0; } public Box createBox(TeXEnvironment env) { if (n != 0) { float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); Box b = new HorizontalRule(height, drt, shift); Box sep = new StrutBox(2 * drt, 0, 0, 0); HorizontalBox hb = new HorizontalBox(); for (int i = 0; i < n - 1; i++) { hb.add(b); hb.add(sep); } if (n > 0) { hb.add(b); } return hb; } return new StrutBox(0, 0, 0, 0); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/InvalidMatrixException.java0000644000175000017500000000307312275735442031535 0ustar sylvestresylvestre/* InvalidMatrixException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals a problem of dimensions in the matrix. * * @author Calixte Denizet */ public class InvalidMatrixException extends JMathTeXException { protected InvalidMatrixException(String msg) { super(msg); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/CumulativeScriptsAtom.java0000644000175000017500000000412612275735442031412 0ustar sylvestresylvestre/* ReflectAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a reflected Atom. */ public class CumulativeScriptsAtom extends Atom { private Atom base; private RowAtom sup; private RowAtom sub; public CumulativeScriptsAtom(Atom base, Atom sub, Atom sup) { super(); if (base instanceof CumulativeScriptsAtom) { CumulativeScriptsAtom at = (CumulativeScriptsAtom) base; this.base = at.base; at.sup.add(sup); at.sub.add(sub); this.sup = at.sup; this.sub = at.sub; } else { if (base == null) { this.base = new PhantomAtom(new CharAtom('M', "mathnormal"), false, true, true); } else { this.base = base; } this.sup = new RowAtom(sup); this.sub = new RowAtom(sub); } } public Box createBox(TeXEnvironment env) { return new ScriptsAtom(base, sub, sup).createBox(env); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/XMLResourceParseException.java0000644000175000017500000000514212275735442032124 0ustar sylvestresylvestre/* XMLResourceParseException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; public class XMLResourceParseException extends ResourceParseException { /* * Attribute problem */ public XMLResourceParseException(String resourceName, String elementName, String attributeName, String msg) { super(resourceName + ": invalid <" + elementName + ">-element found: attribute '" + attributeName + "' " + (msg == null ? "is required!" : msg)); } /* * Attribute problem */ public XMLResourceParseException(String resourceName, String elementName, String attributeName, String msg, Throwable e) { super(resourceName + ": invalid <" + elementName + ">-element found: attribute '" + attributeName + "' " + (msg == null ? "is required!" : msg), e); } /* * required element missing */ public XMLResourceParseException(String resourceName, String elementName) { super(resourceName + ": the required <" + elementName + ">-element is not found!"); } /* * JDOMException or IOException */ public XMLResourceParseException(String resourceName, Throwable e) { super(resourceName, e); } /* * for other cases */ public XMLResourceParseException(String msg) { super(msg); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cache/0000755000175000017500000000000012275735442025300 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/cache/JLaTeXMathCache.java0000644000175000017500000002771212275735442031001 0ustar sylvestresylvestre/* JLaTeXMathCache.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/p/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath.cache; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Insets; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.lang.ref.ReferenceQueue; import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.Iterator; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; import org.scilab.forge.jlatexmath.ParseException; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; /** * Class to cache generated image from formulas * @author Calixte DENIZET */ public final class JLaTeXMathCache { private static final AffineTransform identity = new AffineTransform(); private static ConcurrentMap> cache = new ConcurrentHashMap>(128); private static int max = Integer.MAX_VALUE; private static ReferenceQueue queue = new ReferenceQueue(); private JLaTeXMathCache() { } /** * Set max size. Take care the cache will be reinitialized * @param max the max size */ public static void setMaxCachedObjects(int max) { JLaTeXMathCache.max = Math.max(max, 1); cache.clear(); cache = new ConcurrentHashMap>(JLaTeXMathCache.max); } /** * @param f a formula * @param style a style like TeXConstants.STYLE_DISPLAY * @param size the size of font * @param inset the inset to add on the top, bottom, left and right * @return an array of length 3 containing width, height and depth */ public static int[] getCachedTeXFormulaDimensions(String f, int style, int type, int size, int inset, Color fgcolor) throws ParseException { return getCachedTeXFormulaDimensions(new CachedTeXFormula(f, style, type, size, inset, fgcolor)); } public static int[] getCachedTeXFormulaDimensions(String f, int style, int size, int inset) throws ParseException { return getCachedTeXFormulaDimensions(f, style, 0, size, inset, null); } /** * @param o an Object to identify the image in the cache * @return an array of length 3 containing width, height and depth */ public static int[] getCachedTeXFormulaDimensions(Object o) throws ParseException { if (o == null || !(o instanceof CachedTeXFormula)) { return new int[]{0, 0, 0}; } CachedTeXFormula cached = (CachedTeXFormula) o; SoftReference img = cache.get(cached); if (img == null || img.get() == null) { img = makeImage(cached); } return new int[]{cached.width, cached.height, cached.depth}; } /** * Get a cached formula * @param f a formula * @param style a style like TeXConstants.STYLE_DISPLAY * @param size the size of font * @param inset the inset to add on the top, bottom, left and right * @return the key in the map */ public static Object getCachedTeXFormula(String f, int style, int type, int size, int inset, Color fgcolor) throws ParseException { CachedTeXFormula cached = new CachedTeXFormula(f, style, type, size, inset, fgcolor); SoftReference img = cache.get(cached); if (img == null || img.get() == null) { img = makeImage(cached); } return cached; } public static Object getCachedTeXFormula(String f, int style, int size, int inset) throws ParseException { return getCachedTeXFormula(f, style, 0, size, inset, null); } /** * Clear the cache */ public static void clearCache() { cache.clear(); } /** * Remove a formula from the cache * @param f a formula * @param style a style like TeXConstants.STYLE_DISPLAY * @param size the size of font * @param inset the inset to add on the top, bottom, left and right */ public static void removeCachedTeXFormula(String f, int style, int type, int size, int inset, Color fgcolor) throws ParseException { cache.remove(new CachedTeXFormula(f, style, type, size, inset, fgcolor)); } public static void removeCachedTeXFormula(String f, int style, int size, int inset) throws ParseException { removeCachedTeXFormula(f, style, 0, size, inset, null); } /** * Remove a formula from the cache. Take care, remove the Object o, invalidate it ! * @param o an Object to identify the image in the cache */ public static void removeCachedTeXFormula(Object o) throws ParseException { if (o != null && o instanceof CachedTeXFormula) { cache.remove((CachedTeXFormula) o); } } /** * Paint a cached formula * @param f a formula * @param style a style like TeXConstants.STYLE_DISPLAY * @param size the size of font * @param inset the inset to add on the top, bottom, left and right * @return the key in the map */ public static Object paintCachedTeXFormula(String f, int style, int type, int size, int inset, Color fgcolor, Graphics2D g) throws ParseException { return paintCachedTeXFormula(new CachedTeXFormula(f, style, type, size, inset, fgcolor), g); } public static Object paintCachedTeXFormula(String f, int style, int size, int inset, Graphics2D g) throws ParseException { return paintCachedTeXFormula(f, style, 0, size, inset, null, g); } /** * Paint a cached formula * @param o an Object to identify the image in the cache * @param g the graphics where to paint the image * @return the key in the map */ public static Object paintCachedTeXFormula(Object o, Graphics2D g) throws ParseException { if (o == null || !(o instanceof CachedTeXFormula)) { return null; } CachedTeXFormula cached = (CachedTeXFormula) o; SoftReference img = cache.get(cached); if (img == null || img.get() == null) { img = makeImage(cached); } g.drawImage(img.get().image, identity, null); return cached; } /** * Get a cached formula * @param f a formula * @param style a style like TeXConstants.STYLE_DISPLAY * @param size the size of font * @param inset the inset to add on the top, bottom, left and right * @return the cached image */ public static Image getCachedTeXFormulaImage(String f, int style, int type, int size, int inset, Color fgcolor) throws ParseException { return getCachedTeXFormulaImage(new CachedTeXFormula(f, style, type, size, inset, fgcolor)); } public static Image getCachedTeXFormulaImage(String f, int style, int size, int inset) throws ParseException { return getCachedTeXFormulaImage(f, style, 0, size, inset, null); } /** * Get a cached formula * @param o an Object to identify the image in the cache * @return the cached image */ public static Image getCachedTeXFormulaImage(Object o) throws ParseException { if (o == null || !(o instanceof CachedTeXFormula)) { return null; } CachedTeXFormula cached = (CachedTeXFormula) o; SoftReference img = cache.get(cached); if (img == null || img.get() == null) { img = makeImage(cached); } return img.get().image; } private static SoftReference makeImage(CachedTeXFormula cached) throws ParseException { TeXFormula formula = new TeXFormula(cached.f); TeXIcon icon = formula.createTeXIcon(cached.style, cached.size, cached.type, cached.fgcolor); icon.setInsets(new Insets(cached.inset, cached.inset, cached.inset, cached.inset)); BufferedImage image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = image.createGraphics(); icon.paintIcon(null, g2, 0, 0); g2.dispose(); cached.setDimensions(icon.getIconWidth(), icon.getIconHeight(), icon.getIconDepth()); SoftReference img = new SoftReference(new CachedImage(image, cached), queue); if (cache.size() >= max) { Reference soft; while ((soft = queue.poll()) != null) { CachedImage ci = (CachedImage) soft.get(); if (ci != null) { cache.remove(ci.cachedTf); } } Iterator iter = cache.keySet().iterator(); if (iter.hasNext()) { CachedTeXFormula c = iter.next(); SoftReference cachedImage = cache.get(c); if (cachedImage != null) { cachedImage.clear(); } cache.remove(c); } } cache.put(cached, img); return img; } private static class CachedImage { Image image; CachedTeXFormula cachedTf; CachedImage(Image image, CachedTeXFormula cachedTf) { this.image = image; this.cachedTf = cachedTf; } } private static class CachedTeXFormula { String f; int style; int type; int size; int inset; int width = -1; int height; int depth; Color fgcolor; CachedTeXFormula(String f, int style, int type, int size, int inset, Color fgcolor) { this.f = f; this.style = style; this.type = type; this.size = size; this.inset = inset; this.fgcolor = fgcolor; } void setDimensions(int width, int height, int depth) { this.width = width; this.height = height; this.depth = depth; } /** * {@inheritDoc} */ public boolean equals(Object o) { if (o != null && o instanceof CachedTeXFormula) { CachedTeXFormula c = (CachedTeXFormula) o; boolean b = (c.f.equals(f) && c.style == style && c.type == type && c.size == size && c.inset == inset && c.fgcolor.equals(fgcolor)); if (b) { if (c.width == -1) { c.width = width; c.height = height; c.depth = depth; } else if (width == -1) { width = c.width; height = c.height; depth = c.depth; } } return b; } return false; } /** * {@inheritDoc} */ public int hashCode() { return f.hashCode(); } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ScriptsAtom.java0000644000175000017500000001702512275735442027355 0ustar sylvestresylvestre/* ScriptsAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; /** * An atom representing scripts to be attached to another atom. */ public class ScriptsAtom extends Atom { // TeX constant: what's the use??? private final static SpaceAtom SCRIPT_SPACE = new SpaceAtom(TeXConstants.UNIT_POINT, 0.5f, 0, 0); // base atom private final Atom base; // subscript and superscript to be attached to the base (if not null) private final Atom subscript; private final Atom superscript; private int align = TeXConstants.ALIGN_LEFT; public ScriptsAtom(Atom base, Atom sub, Atom sup) { this.base = base; subscript = sub; superscript = sup; } public ScriptsAtom(Atom base, Atom sub, Atom sup, boolean left) { this(base, sub, sup); if (!left) align = TeXConstants.ALIGN_RIGHT; } public Box createBox(TeXEnvironment env) { Box b = (base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env)); Box deltaSymbol = new StrutBox(0, 0, 0, 0); if (subscript == null && superscript == null) return b; else { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); if (base.type_limits == TeXConstants.SCRIPT_LIMITS || (base.type_limits == TeXConstants.SCRIPT_NORMAL && style == TeXConstants.STYLE_DISPLAY)) return new UnderOverAtom(new UnderOverAtom(base, subscript, TeXConstants.UNIT_POINT, 0.3f, true, false), superscript, TeXConstants.UNIT_POINT, 3.0f, true, true).createBox(env); HorizontalBox hor = new HorizontalBox(b); int lastFontId = b.getLastFontId(); // if no last font found (whitespace box), use default "mu font" if (lastFontId == TeXFont.NO_FONT) lastFontId = tf.getMuFontId(); TeXEnvironment subStyle = env.subStyle(), supStyle = env.supStyle(); // set delta and preliminary shift-up and shift-down values float delta = 0, shiftUp, shiftDown; // TODO: use polymorphism? if (base instanceof AccentedAtom) { // special case : // accent. This positions superscripts better next to the accent! Box box = ((AccentedAtom) base).base.createBox(env.crampStyle()); shiftUp = box.getHeight() - tf.getSupDrop(supStyle.getStyle()); shiftDown = box.getDepth() + tf.getSubDrop(subStyle.getStyle()); } else if (base instanceof SymbolAtom && base.type == TeXConstants.TYPE_BIG_OPERATOR) { // single big operator symbol Char c = tf.getChar(((SymbolAtom) base).getName(), style); if (style < TeXConstants.STYLE_TEXT && tf.hasNextLarger(c)) // display // style c = tf.getNextLarger(c, style); Box x = new CharBox(c); x.setShift(-(x.getHeight() + x.getDepth()) / 2 - env.getTeXFont().getAxisHeight(env.getStyle())); hor = new HorizontalBox(x); // include delta in width or not? delta = c.getItalic(); deltaSymbol = new SpaceAtom(TeXConstants.MEDMUSKIP).createBox(env); if (delta > TeXFormula.PREC && subscript == null) hor.add(new StrutBox(delta, 0, 0, 0)); shiftUp = hor.getHeight() - tf.getSupDrop(supStyle.getStyle()); shiftDown = hor.getDepth() + tf.getSubDrop(subStyle.getStyle()); } else if (base instanceof CharSymbol) { shiftUp = shiftDown = 0; CharFont cf = ((CharSymbol) base).getCharFont(tf); if (!((CharSymbol) base).isMarkedAsTextSymbol() || !tf.hasSpace(cf.fontId)) { delta = tf.getChar(cf, style).getItalic(); } if (delta > TeXFormula.PREC && subscript == null) { hor.add(new StrutBox(delta, 0, 0, 0)); delta = 0; } } else { shiftUp = b.getHeight() - tf.getSupDrop(supStyle.getStyle()); shiftDown = b.getDepth() + tf.getSubDrop(subStyle.getStyle()); } if (superscript == null) { // only subscript Box x = subscript.createBox(subStyle); // calculate and set shift amount x.setShift(Math.max(Math.max(shiftDown, tf.getSub1(style)), x.getHeight() - 4 * Math.abs(tf.getXHeight(style, lastFontId)) / 5)); hor.add(x); hor.add(deltaSymbol); return hor; } else { Box x = superscript.createBox(supStyle); float msiz = x.getWidth(); if (subscript != null && align == TeXConstants.ALIGN_RIGHT) { msiz = Math.max(msiz, subscript.createBox(subStyle).getWidth()); } HorizontalBox sup = new HorizontalBox(x, msiz, align); // add scriptspace (constant value!) sup.add(SCRIPT_SPACE.createBox(env)); // adjust shift-up float p; if (style == TeXConstants.STYLE_DISPLAY) p = tf.getSup1(style); else if (env.crampStyle().getStyle() == style) p = tf.getSup3(style); else p = tf.getSup2(style); shiftUp = Math.max(Math.max(shiftUp, p), x.getDepth() + Math.abs(tf.getXHeight(style, lastFontId)) / 4); if (subscript == null) { // only superscript sup.setShift(-shiftUp); hor.add(sup); } else { // both superscript and subscript Box y = subscript.createBox(subStyle); HorizontalBox sub = new HorizontalBox(y, msiz, align); // add scriptspace (constant value!) sub.add(SCRIPT_SPACE.createBox(env)); // adjust shift-down shiftDown = Math.max(shiftDown, tf.getSub2(style)); // position both sub- and superscript float drt = tf.getDefaultRuleThickness(style); float interSpace = shiftUp - x.getDepth() + shiftDown - y.getHeight(); // space between sub- en // superscript if (interSpace < 4 * drt) { // too small shiftUp += 4 * drt - interSpace; // set bottom superscript at least 4/5 of X-height // above // baseline float psi = 4 * Math.abs(tf.getXHeight(style, lastFontId)) / 5 - (shiftUp - x.getDepth()); if (psi > 0) { shiftUp += psi; shiftDown -= psi; } } // create total box VerticalBox vBox = new VerticalBox(); sup.setShift(delta); vBox.add(sup); // recalculate interspace interSpace = shiftUp - x.getDepth() + shiftDown - y.getHeight(); vBox.add(new StrutBox(0, interSpace, 0, 0)); vBox.add(sub); vBox.setHeight(shiftUp + x.getHeight()); vBox.setDepth(shiftDown + y.getDepth()); hor.add(vBox); } hor.add(deltaSymbol); return hor; } } } public int getLeftType() { return base.getLeftType(); } public int getRightType() { return base.getRightType(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/UnderOverAtom.java0000644000175000017500000001370612275735442027641 0ustar sylvestresylvestre/* UnderOverAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom with an atom above it (if not null) seperated * by a kern and in a smaller size depending on "overScriptSize" and/or an atom under * it (if not null) seperated by a kern and in a smaller size depending on "underScriptSize" */ public class UnderOverAtom extends Atom { // base, underscript and overscript private final Atom base; private final Atom under; private final Atom over; // kern between base and under- and overscript private final float underSpace; private final float overSpace; // units for the kerns private final int underUnit; // NOPMD // TODO: seems never to be used? private final int overUnit; // whether the under- and overscript should be drawn in a smaller size private final boolean underScriptSize; private final boolean overScriptSize; public UnderOverAtom(Atom base, Atom underOver, int underOverUnit, float underOverSpace, boolean underOverScriptSize, boolean over) { // check if unit is valid SpaceAtom.checkUnit(underOverUnit); // units valid this.base = base; this.type = type; // TODO: split into two different classes? if (over) { this.under = null; this.underSpace = 0.0f; this.underUnit = 0; this.underScriptSize = false; this.over = underOver; this.overUnit = underOverUnit; this.overSpace = underOverSpace; this.overScriptSize = underOverScriptSize; } else { this.under = underOver; this.underUnit = underOverUnit; this.underSpace = underOverSpace; this.underScriptSize = underOverScriptSize; this.overSpace = 0.0f; this.over = null; this.overUnit = 0; this.overScriptSize = false; } } public UnderOverAtom(Atom base, Atom under, int underUnit, float underSpace, boolean underScriptSize, Atom over, int overUnit, float overSpace, boolean overScriptSize) throws InvalidUnitException { // check if units are valid SpaceAtom.checkUnit(underUnit); SpaceAtom.checkUnit(overUnit); // units valid this.base = base; this.under = under; this.underUnit = underUnit; this.underSpace = underSpace; this.underScriptSize = underScriptSize; this.over = over; this.overUnit = overUnit; this.overSpace = overSpace; this.overScriptSize = overScriptSize; } public Box createBox(TeXEnvironment env) { // create boxes in right style and calculate maximum width Box b = (base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env)); Box o = null, u = null; float max = b.getWidth(); if (over != null) { o = over.createBox(overScriptSize ? env.subStyle() : env); max = Math.max(max, o.getWidth()); } if (under != null) { u = under.createBox(underScriptSize ? env.subStyle() : env); max = Math.max(max, u.getWidth()); } // create vertical box VerticalBox vBox = new VerticalBox(); // last font used by the base (for Mspace atoms following) env.setLastFontId(b.getLastFontId()); // overscript + space if (over != null) { vBox.add(changeWidth(o, max)); // unit will be valid (checked in constructor) vBox.add(new SpaceAtom(overUnit, 0, overSpace, 0).createBox(env)); } // base Box c = changeWidth(b, max); vBox.add(c); // calculate future height of the vertical box (to make sure that the base // stays on the baseline!) float h = vBox.getHeight() + vBox.getDepth() - c.getDepth(); // underscript + space if (under != null) { // unit will be valid (checked in constructor) vBox.add(new SpaceAtom(overUnit, 0, underSpace, 0).createBox(env)); vBox.add(changeWidth(u, max)); } // set height and depth vBox.setDepth(vBox.getHeight() + vBox.getDepth() - h); vBox.setHeight(h); return vBox; } private static Box changeWidth(Box b, float maxWidth) { if (b != null && Math.abs(maxWidth - b.getWidth()) > TeXFormula.PREC) return new HorizontalBox(b, maxWidth, TeXConstants.ALIGN_CENTER); else return b; } public int getLeftType() { return base.getLeftType(); } public int getRightType() { return base.getRightType(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TextCircledAtom.java0000644000175000017500000000352212275735442030135 0ustar sylvestresylvestre/* TextCircledAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom with representing an t with a caron. */ public class TextCircledAtom extends Atom { private Atom at; public TextCircledAtom(Atom at) { this.at = at; } public Box createBox(TeXEnvironment env) { Box circle = SymbolAtom.get("bigcirc").createBox(env); circle.setShift(-0.07f * SpaceAtom.getFactor(TeXConstants.UNIT_EX, env)); Box box = at.createBox(env); HorizontalBox hb = new HorizontalBox(box, circle.getWidth(), TeXConstants.ALIGN_CENTER); hb.add(new StrutBox(-hb.getWidth(), 0, 0, 0)); hb.add(circle); return hb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/OvalBox.java0000644000175000017500000000421312275735442026452 0ustar sylvestresylvestre/* OvalBox.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.BasicStroke; import java.awt.geom.RoundRectangle2D; /** * A box representing a rotated box. */ public class OvalBox extends FramedBox { private float shadowRule; public OvalBox(FramedBox fbox) { super(fbox.box, fbox.thickness, fbox.space); } public void draw(Graphics2D g2, float x, float y) { box.draw(g2, x + space + thickness, y); Stroke st = g2.getStroke(); g2.setStroke(new BasicStroke(thickness, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); float th = thickness / 2; float r = 0.5f * Math.min(width - thickness, height + depth - thickness); g2.draw(new RoundRectangle2D.Float(x + th, y - height + th, width - thickness, height + depth - thickness, r, r)); //drawDebug(g2, x, y); g2.setStroke(st); } public int getLastFontId() { return box.getLastFontId(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/LaTeXAtom.java0000644000175000017500000000565312275735442026707 0ustar sylvestresylvestre/* LaTeXAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing whitespace. The dimension values can be set using different * unit types. */ public class LaTeXAtom extends Atom { public LaTeXAtom() { } public Box createBox(TeXEnvironment env) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setRoman(true); float sc = env.getTeXFont().getScaleFactor(); TeXFormula.FontInfos fontInfos = TeXFormula.externalFontMap.get(Character.UnicodeBlock.BASIC_LATIN); if (fontInfos != null) { TeXFormula.externalFontMap.put(Character.UnicodeBlock.BASIC_LATIN, null); } RowAtom rat = (RowAtom)((RomanAtom)new TeXFormula("\\mathrm{XETL}").root).base; if (fontInfos != null) { TeXFormula.externalFontMap.put(Character.UnicodeBlock.BASIC_LATIN, fontInfos); } HorizontalBox hb = new HorizontalBox(rat.getLastAtom().createBox(env)); hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.35f * sc, 0, 0).createBox(env)); float f = new SpaceAtom(TeXConstants.UNIT_EX, 0.45f * sc, 0, 0).createBox(env).getWidth(); float f1 = new SpaceAtom(TeXConstants.UNIT_EX, 0.5f * sc, 0, 0).createBox(env).getWidth(); CharBox A = new CharBox(env.getTeXFont().getChar('A', "mathnormal", env.supStyle().getStyle())); A.setShift(-f); hb.add(A); hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.15f * sc, 0, 0).createBox(env)); hb.add(rat.getLastAtom().createBox(env)); hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.15f * sc, 0, 0).createBox(env)); Box E = rat.getLastAtom().createBox(env); E.setShift(f1); hb.add(E); hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.15f * sc, 0, 0).createBox(env)); hb.add(rat.getLastAtom().createBox(env)); return hb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ShadowBox.java0000644000175000017500000000647012275735442027005 0ustar sylvestresylvestre/* FramedBox.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.BasicStroke; import java.awt.geom.Rectangle2D; /** * A box representing a rotated box. */ public class ShadowBox extends FramedBox { private float shadowRule; public ShadowBox(FramedBox fbox, float shadowRule) { super(fbox.box, fbox.thickness, fbox.space); this.shadowRule = shadowRule; depth += shadowRule; width += shadowRule; } public void draw(Graphics2D g2, float x, float y) { float th = thickness / 2; box.draw(g2, x + space + thickness, y); Stroke st = g2.getStroke(); g2.setStroke(new BasicStroke(thickness, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); g2.draw(new Rectangle2D.Float(x + th, y - height + th, width - shadowRule - thickness, height + depth - shadowRule - thickness)); float penth = (float) Math.abs(1 / g2.getTransform().getScaleX()); g2.setStroke(new BasicStroke(penth, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); g2.fill(new Rectangle2D.Float(x + shadowRule - penth, y + depth - shadowRule - penth, width - shadowRule, shadowRule)); g2.fill(new Rectangle2D.Float(x + width - shadowRule - penth, y - height + th + shadowRule, shadowRule, depth + height - 2 * shadowRule - th)); //drawDebug(g2, x, y); g2.setStroke(st); } public int getLastFontId() { return box.getLastFontId(); } } /* public void draw(Graphics2D g2, float x, float y) { float th = thickness / 2; float sh = shadowRule / 2; box.draw(g2, x + space + thickness, y); Stroke st = g2.getStroke(); g2.setStroke(new BasicStroke(shadowRule, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); g2.draw(new Line2D.Float(x + shadowRule, y + depth - sh, x + width, y + depth - sh)); g2.draw(new Line2D.Float(x + width - sh, y - height + shadowRule, x + width - sh, y + depth - shadowRule)); g2.setStroke(new BasicStroke(thickness, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); g2.draw(new Rectangle2D.Float(x + th, y - height + th, width - shadowRule - thickness, height + depth - shadowRule - thickness)); //drawDebug(g2, x, y); g2.setStroke(st); } */libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/SmashedAtom.java0000644000175000017500000000342212275735442027306 0ustar sylvestresylvestre/* SmashedAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a smashed atom (i.e. with no height and no depth). */ public class SmashedAtom extends Atom { private Atom at; private boolean h = true, d = true; public SmashedAtom(Atom at, String opt) { this.at = at; if ("t".equals(opt)) d = false; else if ("b".equals(opt)) h = false; } public Box createBox(TeXEnvironment env) { Box b = at.createBox(env); if (h) b.setHeight(0); if (d) b.setDepth(0); return b; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/AlphabetRegistrationException.java0000644000175000017500000000301312275735442033067 0ustar sylvestresylvestre/* AlphabetRegistrationException.java * ========================================================================= * This file is originally of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that an error occured while registering an alphabet */ public class AlphabetRegistrationException extends Exception { protected AlphabetRegistrationException(String str) { super(str); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/VdotsAtom.java0000644000175000017500000000342512275735442027024 0ustar sylvestresylvestre/* VdotsAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing vdots. */ public class VdotsAtom extends Atom { public VdotsAtom() { } public Box createBox(TeXEnvironment env) { Box dot = SymbolAtom.get("ldotp").createBox(env); VerticalBox vb = new VerticalBox(dot, 0, TeXConstants.ALIGN_BOTTOM); Box b = new SpaceAtom(TeXConstants.UNIT_MU, 0, 4, 0).createBox(env); vb.add(b); vb.add(dot); vb.add(b); vb.add(dot); float d = vb.getDepth(); float h = vb.getHeight(); vb.setDepth(0); vb.setHeight(d + h); return vb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ReflectAtom.java0000644000175000017500000000311612275735442027306 0ustar sylvestresylvestre/* ReflectAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a reflected Atom. */ public class ReflectAtom extends Atom { private Atom base; public ReflectAtom(Atom base) { this.type = base.type; this.base = base; } public Box createBox(TeXEnvironment env) { return new ReflectBox(base.createBox(env)); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TeXFont.java0000644000175000017500000001747312275735442026443 0ustar sylvestresylvestre/* TeXFont.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An interface representing a "TeXFont", which is responsible for all the necessary * fonts and font information. * * @author Kurt Vermeulen */ public interface TeXFont { public static final int NO_FONT = -1; /** * Derives a new {@link TeXFont} object with the given point size * * @param pointSize the new size (in points) of the derived {@link TeXFont} * @return a copy of this {@link TeXFont} with the new size */ public TeXFont deriveFont(float pointSize); public TeXFont scaleFont(float factor); public float getScaleFactor(); public float getAxisHeight(int style); public float getBigOpSpacing1(int style); public float getBigOpSpacing2(int style); public float getBigOpSpacing3(int style); public float getBigOpSpacing4(int style); public float getBigOpSpacing5(int style); /** * Get a Char-object specifying the given character in the given text style with * metric information depending on the given "style". * * @param c alphanumeric character * @param textStyle the text style in which the character should be drawn * @param style the style in which the atom should be drawn * @return the Char-object specifying the given character in the given text style * @throws TextStyleMappingNotFoundException if there's no text style defined with * the given name */ public Char getChar(char c, String textStyle, int style) throws TextStyleMappingNotFoundException; /** * Get a Char-object for this specific character containing the metric information * * @param cf CharFont-object determining a specific character of a specific font * @param style the style in which the atom should be drawn * @return the Char-object for this character containing metric information */ public Char getChar(CharFont cf, int style); /** * Get a Char-object for the given symbol with metric information depending on * "style". * * @param name the symbol name * @param style the style in which the atom should be drawn * @return a Char-object for this symbol with metric information * @throws SymbolMappingNotFoundException if there's no symbol defined with the given * name */ public Char getChar(String name, int style) throws SymbolMappingNotFoundException; /** * Get a Char-object specifying the given character in the default text style with * metric information depending on the given "style". * * @param c alphanumeric character * @param style the style in which the atom should be drawn * @return the Char-object specifying the given character in the default text style */ public Char getDefaultChar(char c, int style); public float getDefaultRuleThickness(int style); public float getDenom1(int style); public float getDenom2(int style); /** * Get an Extension-object for the given Char containing the 4 possible parts to * build an arbitrary large variant. This will only be called if isExtensionChar(Char) * returns true. * * @param c a Char-object for a specific character * @param style the style in which the atom should be drawn * @return an Extension object containing the 4 possible parts */ public Extension getExtension(Char c, int style); /** * Get the kern value to be inserted between the given characters in the given style. * * @param left left character * @param right right character * @param style the style in which the atom should be drawn * @return the kern value between both characters (default 0) */ public float getKern(CharFont left, CharFont right, int style); /** * Get the ligature that replaces both characters (if any). * * @param left left character * @param right right character * @return a ligature replacing both characters (or null: no ligature) */ public CharFont getLigature(CharFont left, CharFont right); public int getMuFontId(); /** * Get the next larger version of the given character. This is only called if * hasNextLarger(Char) returns true. * * @param c character * @param style the style in which the atom should be drawn * @return the next larger version of this character */ public Char getNextLarger(Char c, int style); public float getNum1(int style); public float getNum2(int style); public float getNum3(int style); public float getQuad(int style, int fontCode); /** * * @return the point size of this TeXFont */ public float getSize(); /** * Get the kern amount of the character defined by the given CharFont followed by the * "skewchar" of it's font. This is used in the algorithm for placing an accent above * a single character. * * @param cf the character and it's font above which an accent has to be placed * @param style the render style * @return the kern amount of the character defined by cf followed by the * "skewchar" of it's font. */ public float getSkew(CharFont cf, int style); public float getSpace(int style); public float getSub1(int style); public float getSub2(int style); public float getSubDrop(int style); public float getSup1(int style); public float getSup2(int style); public float getSup3(int style); public float getSupDrop(int style); public float getXHeight(int style, int fontCode); public float getEM(int style); /** * * @param c a character * @return true if the given character has a larger version, false otherwise */ public boolean hasNextLarger(Char c); public boolean hasSpace(int font); public void setBold(boolean bold); public boolean getBold(); public void setRoman(boolean rm); public boolean getRoman(); public void setTt(boolean tt); public boolean getTt(); public void setIt(boolean it); public boolean getIt(); public void setSs(boolean ss); public boolean getSs(); /** * * @param c a character * @return true if the given character contains extension information to buid * an arbitrary large version of this character. */ public boolean isExtensionChar(Char c); public TeXFont copy(); } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/NewCommandMacro.java0000644000175000017500000000675512275735442030127 0ustar sylvestresylvestre/* NewCommandMacro.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.util.HashMap; import java.util.regex.Matcher; public class NewCommandMacro { protected static HashMap macrocode = new HashMap(); protected static HashMap macroreplacement = new HashMap(); public NewCommandMacro() { } public static void addNewCommand(String name, String code, int nbargs) throws ParseException { //if (macrocode.get(name) != null) //throw new ParseException("Command " + name + " already exists ! Use renewcommand instead ..."); macrocode.put(name, code); MacroInfo.Commands.put(name, new MacroInfo("org.scilab.forge.jlatexmath.NewCommandMacro", "executeMacro", nbargs)); } public static void addNewCommand(String name, String code, int nbargs, String def) throws ParseException { if (macrocode.get(name) != null) throw new ParseException("Command " + name + " already exists ! Use renewcommand instead ..."); macrocode.put(name, code); macroreplacement.put(name, def); MacroInfo.Commands.put(name, new MacroInfo("org.scilab.forge.jlatexmath.NewCommandMacro", "executeMacro", nbargs, 1)); } public static boolean isMacro(String name) { return macrocode.containsKey(name); } public static void addReNewCommand(String name, String code, int nbargs) { if (macrocode.get(name) == null) throw new ParseException("Command " + name + " is not defined ! Use newcommand instead ..."); macrocode.put(name, code); MacroInfo.Commands.put(name, new MacroInfo("org.scilab.forge.jlatexmath.NewCommandMacro", "executeMacro", nbargs)); } public String executeMacro(TeXParser tp, String[] args) { String code = macrocode.get(args[0]); String rep; int nbargs = args.length - 11; int dec = 0; if (args[nbargs + 1] != null) { dec = 1; rep = Matcher.quoteReplacement(args[nbargs + 1]); code = code.replaceAll("#1", rep); } else if (macroreplacement.get(args[0]) != null) { dec = 1; rep = Matcher.quoteReplacement(macroreplacement.get(args[0])); code = code.replaceAll("#1", rep); } for (int i = 1; i <= nbargs; i++) { rep = Matcher.quoteReplacement(args[i]); code = code.replaceAll("#" + (i + dec), rep); } return code; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/BreakMarkAtom.java0000644000175000017500000000275512275735442027571 0ustar sylvestresylvestre/* BreakMarkAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An empty atom just to add a mark. */ public class BreakMarkAtom extends Atom { public BreakMarkAtom() { } public Box createBox(TeXEnvironment env) { return new StrutBox(0, 0, 0, 0); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FixedCharAtom.java0000644000175000017500000000342612275735442027563 0ustar sylvestresylvestre/* FixedCharAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a fixed character (not depending on a text style). */ public class FixedCharAtom extends CharSymbol { private final CharFont cf; public FixedCharAtom(CharFont c) { cf = c; } public CharFont getCharFont(TeXFont tf) { return cf; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); Char c = tf.getChar(cf, env.getStyle()); return new CharBox(c); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FontAlreadyLoadedException.java0000644000175000017500000000276712275735442032314 0ustar sylvestresylvestre/* FontAlreadyLoadedException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; public class FontAlreadyLoadedException extends XMLResourceParseException { public FontAlreadyLoadedException(String msg) { super(msg); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/OgonekAtom.java0000644000175000017500000000427612275735442027154 0ustar sylvestresylvestre/* OgonekAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom with an ogonek. */ public class OgonekAtom extends Atom { private static final SymbolAtom ogonek = SymbolAtom.get("ogonek"); private Atom base; public OgonekAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { Box b = base.createBox(env); VerticalBox vb = new VerticalBox(); vb.add(b); Char ch = env.getTeXFont().getChar("ogonek", env.getStyle()); float italic = ch.getItalic(); Box ogonek = new CharBox(ch); Box y; if (Math.abs(italic) > TeXFormula.PREC) { y = new HorizontalBox(new StrutBox(-italic, 0, 0, 0)); y.add(ogonek); } else y = ogonek; Box og = new HorizontalBox(y, b.getWidth(), TeXConstants.ALIGN_RIGHT); vb.add(new StrutBox(0, -ogonek.getHeight(), 0, 0)); vb.add(og); float f = vb.getHeight() + vb.getDepth(); vb.setHeight(b.getHeight()); vb.setDepth(f - b.getHeight()); return vb; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/DefaultTeXFont.java0000644000175000017500000004716312275735442027747 0ustar sylvestresylvestre/* DefaultTeXFont.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.util.Map; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.lang.Character.UnicodeBlock; import java.io.FileInputStream; import java.io.InputStream; import java.io.FileNotFoundException; /** * The default implementation of the TeXFont-interface. All font information is read * from an xml-file. */ public class DefaultTeXFont implements TeXFont { private static String[] defaultTextStyleMappings; /** * No extension part for that kind (TOP,MID,REP or BOT) */ protected static final int NONE = -1; protected final static int NUMBERS = 0; protected final static int CAPITALS = 1; protected final static int SMALL = 2; protected final static int UNICODE = 3; /** * Number of font ids in a single font description file. */ private static final int NUMBER_OF_FONT_IDS = 256; private static Map textStyleMappings; private static Map symbolMappings; private static FontInfo[] fontInfo = new FontInfo[0]; private static Map parameters; private static Map generalSettings; private static boolean magnificationEnable = true; protected static final int TOP = 0, MID = 1, REP = 2, BOT = 3; protected static final int WIDTH = 0, HEIGHT = 1, DEPTH = 2, IT = 3; public static List loadedAlphabets = new ArrayList(); public static Map registeredAlphabets = new HashMap(); protected float factor = 1f; public boolean isBold = false; public boolean isRoman = false; public boolean isSs = false; public boolean isTt = false; public boolean isIt = false; static { DefaultTeXFontParser parser = new DefaultTeXFontParser(); //load LATIN block loadedAlphabets.add(Character.UnicodeBlock.of('a')); // fonts + font descriptions fontInfo = parser.parseFontDescriptions(fontInfo); // general font parameters parameters = parser.parseParameters(); // text style mappings textStyleMappings = parser.parseTextStyleMappings(); // default text style : style mappings defaultTextStyleMappings = parser.parseDefaultTextStyleMappings(); // symbol mappings symbolMappings = parser.parseSymbolMappings(); // general settings generalSettings = parser.parseGeneralSettings(); generalSettings.put("textfactor", 1); // check if mufontid exists int muFontId = generalSettings.get(DefaultTeXFontParser.MUFONTID_ATTR).intValue(); if (muFontId < 0 || muFontId >= fontInfo.length || fontInfo[muFontId] == null) throw new XMLResourceParseException( DefaultTeXFontParser.RESOURCE_NAME, DefaultTeXFontParser.GEN_SET_EL, DefaultTeXFontParser.MUFONTID_ATTR, "contains an unknown font id!"); } private final float size; // standard size public DefaultTeXFont(float pointSize) { size = pointSize; } public DefaultTeXFont(float pointSize, boolean b, boolean rm, boolean ss, boolean tt, boolean it) { this(pointSize, 1, b, rm, ss, tt, it); } public DefaultTeXFont(float pointSize, float f, boolean b, boolean rm, boolean ss, boolean tt, boolean it) { size = pointSize; factor = f; isBold = b; isRoman = rm; isSs = ss; isTt = tt; isIt = it; } public static void addTeXFontDescription(String file) throws ResourceParseException { FileInputStream in; try { in = new FileInputStream(file); } catch (FileNotFoundException e) { throw new ResourceParseException(file, e); } addTeXFontDescription(in, file); } public static void addTeXFontDescription(InputStream in, String name) throws ResourceParseException { DefaultTeXFontParser dtfp = new DefaultTeXFontParser(in, name); fontInfo = dtfp.parseFontDescriptions(fontInfo); textStyleMappings.putAll(dtfp.parseTextStyleMappings()); symbolMappings.putAll(dtfp.parseSymbolMappings()); } public static void addTeXFontDescription(Object base, InputStream in, String name) throws ResourceParseException { DefaultTeXFontParser dtfp = new DefaultTeXFontParser(base, in, name); fontInfo = dtfp.parseFontDescriptions(fontInfo); dtfp.parseExtraPath(); textStyleMappings.putAll(dtfp.parseTextStyleMappings()); symbolMappings.putAll(dtfp.parseSymbolMappings()); } public static void addAlphabet(Character.UnicodeBlock alphabet, InputStream inlanguage, String language, InputStream insymbols, String symbols, InputStream inmappings, String mappings) throws ResourceParseException { if (!loadedAlphabets.contains(alphabet)) { addTeXFontDescription(inlanguage, language); SymbolAtom.addSymbolAtom(insymbols, symbols); TeXFormula.addSymbolMappings(inmappings, mappings); loadedAlphabets.add(alphabet); } } public static void addAlphabet(Object base, Character.UnicodeBlock[] alphabet, String language) throws ResourceParseException { boolean b = false; for (int i = 0; !b && i < alphabet.length; i++) { b = loadedAlphabets.contains(alphabet[i]) || b; } if (!b) { TeXParser.isLoading = true; addTeXFontDescription(base, base.getClass().getResourceAsStream(language), language); for (int i = 0; i < alphabet.length; i++) { loadedAlphabets.add(alphabet[i]); } TeXParser.isLoading = false; } } public static void addAlphabet(Character.UnicodeBlock alphabet, String name) { String lg = "fonts/" + name + "/language_" + name+ ".xml"; String sym = "fonts/" + name + "/symbols_" + name+ ".xml"; String map = "fonts/" + name + "/mappings_" + name+ ".xml"; try { DefaultTeXFont.addAlphabet(alphabet, TeXFormula.class.getResourceAsStream(lg), lg, TeXFormula.class.getResourceAsStream(sym), sym, TeXFormula.class.getResourceAsStream(map), map); } catch (FontAlreadyLoadedException e) { } } public static void addAlphabet(AlphabetRegistration reg) { try { if (reg != null) { DefaultTeXFont.addAlphabet(reg.getPackage(), reg.getUnicodeBlock(), reg.getTeXFontFileName()); } } catch (FontAlreadyLoadedException e) { } catch (AlphabetRegistrationException e) { System.err.println(e.toString()); } } public static void registerAlphabet(AlphabetRegistration reg) { Character.UnicodeBlock[] blocks = reg.getUnicodeBlock(); for (int i = 0; i < blocks.length; i++) { registeredAlphabets.put(blocks[i], reg); } } public TeXFont copy() { return new DefaultTeXFont(size, factor, isBold, isRoman, isSs, isTt, isIt); } public TeXFont deriveFont(float size) { return new DefaultTeXFont(size, factor, isBold, isRoman, isSs, isTt, isIt); } public TeXFont scaleFont(float factor) { return new DefaultTeXFont(size, factor, isBold, isRoman, isSs, isTt, isIt); } public float getScaleFactor() { return factor; } public float getAxisHeight(int style) { return getParameter("axisheight") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getBigOpSpacing1(int style) { return getParameter("bigopspacing1") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getBigOpSpacing2(int style) { return getParameter("bigopspacing2") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getBigOpSpacing3(int style) { return getParameter("bigopspacing3") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getBigOpSpacing4(int style) { return getParameter("bigopspacing4") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getBigOpSpacing5(int style) { return getParameter("bigopspacing5") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } private Char getChar(char c, CharFont[] cf, int style) { int kind, offset; if (c >= '0' && c <= '9') { kind = NUMBERS; offset = c - '0'; } else if (c >= 'a' && c <= 'z') { kind = SMALL; offset = c - 'a'; } else if (c >= 'A' && c <= 'Z') { kind = CAPITALS; offset = c - 'A'; } else { kind = UNICODE; offset = c; } // if the mapping for the character's range, then use the default style if (cf[kind] == null) return getDefaultChar(c, style); else return getChar(new CharFont((char) (cf[kind].c + offset), cf[kind].fontId), style); } public Char getChar(char c, String textStyle, int style) throws TextStyleMappingNotFoundException { Object mapping = textStyleMappings.get(textStyle); if (mapping == null) // text style mapping not found throw new TextStyleMappingNotFoundException(textStyle); else return getChar(c, (CharFont[]) mapping, style); } public Char getChar(CharFont cf, int style) { float fsize = getSizeFactor(style); int id = isBold ? cf.boldFontId : cf.fontId; FontInfo info = fontInfo[id]; if (isBold && cf.fontId == cf.boldFontId) { id = info.getBoldId(); info = fontInfo[id]; cf = new CharFont(cf.c, id, style); } if (isRoman) { id = info.getRomanId(); info = fontInfo[id]; cf = new CharFont(cf.c, id, style); } if (isSs) { id = info.getSsId(); info = fontInfo[id]; cf = new CharFont(cf.c, id, style); } if (isTt) { id = info.getTtId(); info = fontInfo[id]; cf = new CharFont(cf.c, id, style); } if (isIt) { id = info.getItId(); info = fontInfo[id]; cf = new CharFont(cf.c, id, style); } Font font = info.getFont(); return new Char(cf.c, font, id, getMetrics(cf, factor * fsize)); } public Char getChar(String symbolName, int style) throws SymbolMappingNotFoundException { Object obj = symbolMappings.get(symbolName); if (obj == null) {// no symbol mapping found! throw new SymbolMappingNotFoundException(symbolName); } else { return getChar((CharFont) obj, style); } } public Char getDefaultChar(char c, int style) { // these default text style mappings will allways exist, // because it's checked during parsing if (c >= '0' && c <= '9') { return getChar(c, defaultTextStyleMappings[NUMBERS], style); } else if (c >= 'a' && c <= 'z') { return getChar(c, defaultTextStyleMappings[SMALL], style); } else { return getChar(c, defaultTextStyleMappings[CAPITALS], style); } } public float getDefaultRuleThickness(int style) { return getParameter("defaultrulethickness") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getDenom1(int style) { return getParameter("denom1") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getDenom2(int style) { return getParameter("denom2") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public Extension getExtension(Char c, int style) { Font f = c.getFont(); int fc = c.getFontCode(); float s = getSizeFactor(style); // construct Char for every part FontInfo info = fontInfo[fc]; int[] ext = info.getExtension(c.getChar()); Char[] parts = new Char[ext.length]; for (int i = 0; i < ext.length; i++) { if (ext[i] == NONE) { parts[i] = null; } else { parts[i] = new Char((char) ext[i], f, fc, getMetrics(new CharFont((char) ext[i], fc), s)); } } return new Extension(parts[TOP], parts[MID], parts[REP], parts[BOT]); } public float getKern(CharFont left, CharFont right, int style) { if (left.fontId == right.fontId){ FontInfo info = fontInfo[left.fontId]; return info.getKern(left.c, right.c, getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT); } else { return 0; } } public CharFont getLigature(CharFont left, CharFont right) { if (left.fontId == right.fontId) { FontInfo info = fontInfo[left.fontId]; return info.getLigature(left.c, right.c); } else { return null; } } private Metrics getMetrics(CharFont cf, float size) { FontInfo info = fontInfo[cf.fontId]; float[] m = info.getMetrics(cf.c); return new Metrics(m[WIDTH], m[HEIGHT], m[DEPTH], m[IT], size * TeXFormula.PIXELS_PER_POINT, size); } public int getMuFontId() { return generalSettings.get(DefaultTeXFontParser.MUFONTID_ATTR).intValue(); } public Char getNextLarger(Char c, int style) { FontInfo info = fontInfo[c.getFontCode()]; CharFont ch = info.getNextLarger(c.getChar()); FontInfo newInfo = fontInfo[ch.fontId]; return new Char(ch.c, newInfo.getFont(), ch.fontId, getMetrics(ch, getSizeFactor(style))); } public float getNum1(int style) { return getParameter("num1") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getNum2(int style) { return getParameter("num2") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getNum3(int style) { return getParameter("num3") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getQuad(int style, int fontCode) { FontInfo info = fontInfo[fontCode]; return info.getQuad(getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT); } public float getSize() { return size; } public float getSkew(CharFont cf, int style) { FontInfo info = fontInfo[cf.fontId]; char skew = info.getSkewChar(); if (skew == -1) return 0; else return getKern(cf, new CharFont(skew, cf.fontId), style); } public float getSpace(int style) { int spaceFontId = generalSettings.get(DefaultTeXFontParser.SPACEFONTID_ATTR).intValue(); FontInfo info = fontInfo[spaceFontId]; return info.getSpace(getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT); } public float getSub1(int style) { return getParameter("sub1") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getSub2(int style) { return getParameter("sub2") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getSubDrop(int style) { return getParameter("subdrop") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getSup1(int style) { return getParameter("sup1") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getSup2(int style) { return getParameter("sup2") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getSup3(int style) { return getParameter("sup3") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getSupDrop(int style) { return getParameter("supdrop") * getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public float getXHeight(int style, int fontCode) { FontInfo info = fontInfo[fontCode]; return info.getXHeight(getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT); } public float getEM(int style) { return getSizeFactor(style) * TeXFormula.PIXELS_PER_POINT; } public boolean hasNextLarger(Char c) { FontInfo info = fontInfo[c.getFontCode()]; return (info.getNextLarger(c.getChar()) != null); } public void setBold(boolean bold) { isBold = bold; } public boolean getBold() { return isBold; } public void setRoman(boolean rm) { isRoman = rm; } public boolean getRoman() { return isRoman; } public void setTt(boolean tt) { isTt = tt; } public boolean getTt() { return isTt; } public void setIt(boolean it) { isIt = it; } public boolean getIt() { return isIt; } public void setSs(boolean ss) { isSs = ss; } public boolean getSs() { return isSs; } public boolean hasSpace(int font) { FontInfo info = fontInfo[font]; return info.hasSpace(); } public boolean isExtensionChar(Char c) { FontInfo info = fontInfo[c.getFontCode()]; return info.getExtension(c.getChar()) != null; } public static void setMathSizes(float ds, float ts, float ss, float sss) { if (magnificationEnable) { generalSettings.put("scriptfactor", Math.abs(ss / ds)); generalSettings.put("scriptscriptfactor", Math.abs(sss / ds)); generalSettings.put("textfactor", Math.abs(ts / ds)); TeXIcon.defaultSize = Math.abs(ds); } } public static void setMagnification(float mag) { if (magnificationEnable) { TeXIcon.magFactor = mag / 1000f; } } public static void enableMagnification(boolean b) { magnificationEnable = b; } private static float getParameter(String parameterName) { Object param = parameters.get(parameterName); if (param == null) return 0; else return ((Float) param).floatValue(); } public static float getSizeFactor(int style) { if (style < TeXConstants.STYLE_TEXT) return 1; else if (style < TeXConstants.STYLE_SCRIPT) return generalSettings.get("textfactor").floatValue(); else if (style < TeXConstants.STYLE_SCRIPT_SCRIPT) return generalSettings.get("scriptfactor").floatValue(); else return generalSettings.get("scriptscriptfactor").floatValue(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/AlphabetRegistration.java0000644000175000017500000000350212275735442031213 0ustar sylvestresylvestre/* AlphabetRegistration.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.lang.Character.UnicodeBlock; public interface AlphabetRegistration { public static final Character.UnicodeBlock[] JLM_GREEK = new Character.UnicodeBlock[]{Character.UnicodeBlock.GREEK, Character.UnicodeBlock.GREEK_EXTENDED}; public static final Character.UnicodeBlock[] JLM_CYRILLIC = new Character.UnicodeBlock[]{Character.UnicodeBlock.CYRILLIC}; public Character.UnicodeBlock[] getUnicodeBlock(); public Object getPackage() throws AlphabetRegistrationException; public String getTeXFontFileName(); }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TeXIcon.java0000644000175000017500000002004712275735442026414 0ustar sylvestresylvestre/* TeXIcon.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import javax.swing.Icon; /** * An {@link javax.swing.Icon} implementation that will paint the TeXFormula * that created it. *

* This class cannot be instantiated directly. It can be constructed from a * TeXFormula using the {@link TeXFormula#createTeXIcon(int,float)} method. * * @author Kurt Vermeulen */ public class TeXIcon implements Icon { private static final Color defaultColor = new Color(0, 0, 0); public static float defaultSize = -1; public static float magFactor = 0; private Box box; private final float size; private Insets insets = new Insets(0, 0, 0, 0); private Color fg = null; public boolean isColored = false; /** * Creates a new icon that will paint the given formula box in the given point size. * * @param b the formula box to be painted * @param size the point size */ protected TeXIcon(Box b, float size) { this(b, size, false); } protected TeXIcon(Box b, float size, boolean trueValues) { box = b; if (defaultSize != -1) { size = defaultSize; } if (magFactor != 0) { this.size = size * Math.abs(magFactor); } else { this.size = size; } /* I add this little value because it seems that tftopl calculates badly the height and the depth of certains characters. */ if (!trueValues) { insets.top += (int)(0.18f * size); insets.bottom += (int)(0.18f * size); insets.left += (int)(0.18f * size); insets.right += (int)(0.18f * size); } } public void setForeground(Color fg) { this.fg = fg; } /** * Get the insets of the TeXIcon. * * @return the insets */ public Insets getInsets() { return insets; } /** * Set the insets of the TeXIcon. * * @param insets the insets * @param trueValues true to force the true values */ public void setInsets(Insets insets, boolean trueValues) { this.insets = insets; if (!trueValues) { this.insets.top += (int)(0.18f * size); this.insets.bottom += (int)(0.18f * size); this.insets.left += (int)(0.18f * size); this.insets.right += (int)(0.18f * size); } } /** * Set the insets of the TeXIcon. * * @param insets the insets */ public void setInsets(Insets insets) { setInsets(insets, false); } /** * Change the width of the TeXIcon. The new width must be greater than the current * width, otherwise the icon will remain unchanged. The formula will be aligned to the * left ({@linkplain TeXConstants#ALIGN_LEFT}), to the right * ({@linkplain TeXConstants#ALIGN_RIGHT}) or will be centered * in the middle ({@linkplain TeXConstants#ALIGN_CENTER}). * * @param width the new width of the TeXIcon * @param alignment a horizontal alignment constant: LEFT, RIGHT or CENTER */ public void setIconWidth(int width, int alignment) { float diff = width - getIconWidth(); if (diff > 0) box = new HorizontalBox(box, box.getWidth() + diff, alignment); } /** * Change the height of the TeXIcon. The new height must be greater than the current * height, otherwise the icon will remain unchanged. The formula will be aligned on top * (TeXConstants.TOP), at the bottom (TeXConstants.BOTTOM) or will be centered * in the middle (TeXConstants.CENTER). * * @param height the new height of the TeXIcon * @param alignment a vertical alignment constant: TOP, BOTTOM or CENTER */ public void setIconHeight(int height, int alignment) { float diff = height - getIconHeight(); if (diff > 0) box = new VerticalBox(box, diff, alignment); } /** * Get the total height of the TeXIcon. This also includes the insets. */ public int getIconHeight() { return ((int) ((box.getHeight()) * size + 0.99 + insets.top)) + ((int) ((box.getDepth()) * size + 0.99 + insets.bottom)); } /** * Get the total height of the TeXIcon. This also includes the insets. */ public int getIconDepth() { return (int) (box.getDepth() * size + 0.99 + insets.bottom); } /** * Get the total width of the TeXIcon. This also includes the insets. */ public int getIconWidth() { return (int) (box.getWidth() * size + 0.99 + insets.left + insets.right); } public float getTrueIconHeight() { return (box.getHeight() + box.getDepth()) * size; } /** * Get the total height of the TeXIcon. This also includes the insets. */ public float getTrueIconDepth() { return box.getDepth() * size; } /** * Get the total width of the TeXIcon. This also includes the insets. */ public float getTrueIconWidth() { return box.getWidth() * size; } public float getBaseLine() { return (float)( (box.getHeight() * size + 0.99 + insets.top) / ((box.getHeight() + box.getDepth()) * size + 0.99 + insets.top + insets.bottom)); } public Box getBox() { return box; } /** * Paint the {@link TeXFormula} that created this icon. */ public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2 = (Graphics2D) g; // copy graphics settings RenderingHints oldHints = g2.getRenderingHints(); AffineTransform oldAt = g2.getTransform(); Color oldColor = g2.getColor(); // new settings g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.scale(size, size); // the point size if (fg != null) { g2.setColor(fg); } else if (c != null) { g2.setColor(c.getForeground()); // foreground will be used as default painting color } else { g2.setColor(defaultColor); } // draw formula box box.draw(g2, (x + insets.left) / size, (y + insets.top) / size+ box.getHeight()); // restore graphics settings g2.setRenderingHints(oldHints); g2.setTransform(oldAt); g2.setColor(oldColor); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/OverUnderDelimiter.java0000644000175000017500000000654412275735442030661 0ustar sylvestresylvestre/* OverUnderDelimiter.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009-2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * A box representing another atom with a delimiter and a script above or under it, * with script and delimiter seperated by a kern. */ public class OverUnderDelimiter extends Atom { // base and script atom private final Atom base; private Atom script; // delimiter symbol private final SymbolAtom symbol; // kern between delimiter and script private final SpaceAtom kern; // whether the delimiter should be positioned above or under the base private final boolean over; public OverUnderDelimiter(Atom base, Atom script, SymbolAtom s, int kernUnit, float kern, boolean over) throws InvalidUnitException { type = TeXConstants.TYPE_INNER; this.base = base; this.script = script; symbol = s; this.kern = new SpaceAtom(kernUnit, 0, kern, 0); this.over = over; } public void addScript(Atom script) { this.script = script; } public boolean isOver() { return over; } public Box createBox(TeXEnvironment env) { Box b = (base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env)); Box del = DelimiterFactory.create(symbol.getName(), env, b.getWidth()); Box scriptBox = null; if (script != null) { scriptBox = script.createBox((over ? env.supStyle() : env.subStyle())); } // create centered horizontal box if smaller than maximum width float max = getMaxWidth(b, del, scriptBox); if (max - b.getWidth() > TeXFormula.PREC) { b = new HorizontalBox(b, max, TeXConstants.ALIGN_CENTER); } del = new VerticalBox(del, max, TeXConstants.ALIGN_CENTER); if (scriptBox != null && max - scriptBox.getWidth() > TeXFormula.PREC) { scriptBox = new HorizontalBox(scriptBox, max, TeXConstants.ALIGN_CENTER); } return new OverUnderBox(b, del, scriptBox, kern.createBox(env).getHeight(), over); } private static float getMaxWidth(Box b, Box del, Box script) { float max = Math.max(b.getWidth(), del.getHeight() + del.getDepth()); if (script != null) { max = Math.max(max, script.getWidth()); } return max; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TeXFormula.java0000644000175000017500000011216412275735442027133 0ustar sylvestresylvestre/* TeXFormula.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.List; import java.util.LinkedList; import java.util.Set; import java.util.Stack; import java.io.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.image.BufferedImage; import java.awt.GraphicsEnvironment; import java.awt.Image; import java.awt.Toolkit; import javax.imageio.ImageIO; import javax.imageio.stream.FileImageOutputStream; import java.lang.Character.UnicodeBlock; /** * Represents a logical mathematical formula that will be displayed (by creating a * {@link TeXIcon} from it and painting it) using algorithms that are based on the * TeX algorithms. *

* These formula's can be built using the built-in primitive TeX parser * (methods with String arguments) or using other TeXFormula objects. Most methods * have (an) equivalent(s) where one or more TeXFormula arguments are replaced with * String arguments. These are just shorter notations, because all they do is parse * the string(s) to TeXFormula's and call an equivalent method with (a) TeXFormula argument(s). * Most methods also come in 2 variants. One kind will use this TeXFormula to build * another mathematical construction and then change this object to represent the newly * build construction. The other kind will only use other * TeXFormula's (or parse strings), build a mathematical construction with them and * insert this newly build construction at the end of this TeXFormula. * Because all the provided methods return a pointer to this (modified) TeXFormula * (except for the createTeXIcon method that returns a TeXIcon pointer), * method chaining is also possible. *

* Important: All the provided methods modify this TeXFormula object, but all the * TeXFormula arguments of these methods will remain unchanged and independent of * this TeXFormula object! */ public class TeXFormula { public static final String VERSION = "1.0.3"; public static final int SERIF = 0; public static final int SANSSERIF = 1; public static final int BOLD = 2; public static final int ITALIC = 4; public static final int ROMAN = 8; public static final int TYPEWRITER = 16; // table for putting delimiters over and under formula's, // indexed by constants from "TeXConstants" private static final String[][] delimiterNames = { { "lbrace", "rbrace" }, { "lsqbrack", "rsqbrack" }, { "lbrack", "rbrack" }, { "downarrow", "downarrow" }, { "uparrow", "uparrow" }, { "updownarrow", "updownarrow" }, { "Downarrow", "Downarrow" }, { "Uparrow", "Uparrow" }, { "Updownarrow", "Updownarrow" }, { "vert", "vert" }, { "Vert", "Vert" } }; // point-to-pixel conversion public static float PIXELS_PER_POINT = 1f; // used as second index in "delimiterNames" table (over or under) private static final int OVER_DEL = 0; private static final int UNDER_DEL = 1; // for comparing floats with 0 protected static final float PREC = 0.0000001f; // predefined TeXFormula's public static Map predefinedTeXFormulas = new HashMap(150); public static Map predefinedTeXFormulasAsString = new HashMap(150); // character-to-symbol and character-to-delimiter mappings public static String[] symbolMappings = new String[65536]; public static String[] symbolTextMappings = new String[65536]; public static String[] symbolFormulaMappings = new String[65536]; public static Map externalFontMap = new HashMap(); public List middle = new LinkedList(); protected Map jlmXMLMap; private TeXParser parser; static { // character-to-symbol and character-to-delimiter mappings TeXFormulaSettingsParser parser = new TeXFormulaSettingsParser(); parser.parseSymbolMappings(symbolMappings, symbolTextMappings); new PredefinedCommands(); new PredefinedTeXFormulas(); new PredefMacros(); parser.parseSymbolToFormulaMappings(symbolFormulaMappings, symbolTextMappings); try { DefaultTeXFont.registerAlphabet((AlphabetRegistration) Class.forName("org.scilab.forge.jlatexmath.cyrillic.CyrillicRegistration").newInstance()); DefaultTeXFont.registerAlphabet((AlphabetRegistration) Class.forName("org.scilab.forge.jlatexmath.greek.GreekRegistration").newInstance()); } catch (Exception e) { } //setDefaultDPI(); } public static void addSymbolMappings(String file) throws ResourceParseException { FileInputStream in; try { in = new FileInputStream(file); } catch (FileNotFoundException e) { throw new ResourceParseException(file, e); } addSymbolMappings(in, file); } public static void addSymbolMappings(InputStream in, String name) throws ResourceParseException { TeXFormulaSettingsParser tfsp = new TeXFormulaSettingsParser(in, name); tfsp.parseSymbolMappings(symbolMappings, symbolTextMappings); tfsp.parseSymbolToFormulaMappings(symbolFormulaMappings, symbolTextMappings); } public static boolean isRegisteredBlock(Character.UnicodeBlock block) { return externalFontMap.get(block) != null; } public static FontInfos getExternalFont(Character.UnicodeBlock block) { FontInfos infos = externalFontMap.get(block); if (infos == null) { infos = new FontInfos("SansSerif", "Serif"); externalFontMap.put(block, infos); } return infos; } public static void registerExternalFont(Character.UnicodeBlock block, String sansserif, String serif) { if (sansserif == null && serif == null) { externalFontMap.remove(block); return; } externalFontMap.put(block, new FontInfos(sansserif, serif)); if (block.equals(Character.UnicodeBlock.BASIC_LATIN)) { predefinedTeXFormulas.clear(); } } public static void registerExternalFont(Character.UnicodeBlock block, String fontName) { registerExternalFont(block, fontName, fontName); } /** * Set the DPI of target * @param dpi the target DPI */ public static void setDPITarget(float dpi) { PIXELS_PER_POINT = dpi / 72f; } /** * Set the default target DPI to the screen dpi (only if we're in non-headless mode) */ public static void setDefaultDPI() { if (!GraphicsEnvironment.isHeadless()) { setDPITarget((float) Toolkit.getDefaultToolkit().getScreenResolution()); } } // the root atom of the "atom tree" that represents the formula public Atom root = null; // the current text style public String textStyle = null; public boolean isColored = false; /** * Creates an empty TeXFormula. * */ public TeXFormula() { parser = new TeXParser("", this, false); } /** * Creates a new TeXFormula by parsing the given string (using a primitive TeX parser). * * @param s the string to be parsed * @throws ParseException if the string could not be parsed correctly */ public TeXFormula(String s, Map map) throws ParseException { this.jlmXMLMap = map; this.textStyle = textStyle; parser = new TeXParser(s, this); parser.parse(); } /** * Creates a new TeXFormula by parsing the given string (using a primitive TeX parser). * * @param s the string to be parsed * @throws ParseException if the string could not be parsed correctly */ public TeXFormula(String s) throws ParseException { this(s, (String) null); } public TeXFormula(String s, boolean firstpass) throws ParseException { this.textStyle = null; parser = new TeXParser(s, this, firstpass); parser.parse(); } /* * Creates a TeXFormula by parsing the given string in the given text style. * Used when a text style command was found in the parse string. */ public TeXFormula(String s, String textStyle) throws ParseException { this.textStyle = textStyle; parser = new TeXParser(s, this); parser.parse(); } public TeXFormula(String s, String textStyle, boolean firstpass, boolean space) throws ParseException { this.textStyle = textStyle; parser = new TeXParser(s, this, firstpass, space); parser.parse(); } /** * Creates a new TeXFormula that is a copy of the given TeXFormula. *

* Both TeXFormula's are independent of one another! * * @param f the formula to be copied */ public TeXFormula(TeXFormula f) { if (f != null) { addImpl(f); } } /** * Creates an empty TeXFormula. * */ protected TeXFormula(TeXParser tp) { this.jlmXMLMap = tp.formula.jlmXMLMap; parser = new TeXParser(tp.getIsPartial(), "", this, false); } /** * Creates a new TeXFormula by parsing the given string (using a primitive TeX parser). * * @param s the string to be parsed * @throws ParseException if the string could not be parsed correctly */ protected TeXFormula(TeXParser tp, String s) throws ParseException { this(tp, s, null); } protected TeXFormula(TeXParser tp, String s, boolean firstpass) throws ParseException { this.textStyle = null; this.jlmXMLMap = tp.formula.jlmXMLMap; boolean isPartial = tp.getIsPartial(); parser = new TeXParser(isPartial, s, this, firstpass); if (isPartial) { try { parser.parse(); } catch (Exception e) { } } else { parser.parse(); } } /* * Creates a TeXFormula by parsing the given string in the given text style. * Used when a text style command was found in the parse string. */ protected TeXFormula(TeXParser tp, String s, String textStyle) throws ParseException { this.textStyle = textStyle; this.jlmXMLMap = tp.formula.jlmXMLMap; boolean isPartial = tp.getIsPartial(); parser = new TeXParser(isPartial, s, this); if (isPartial) { try { parser.parse(); } catch (Exception e) { if (root == null) { root = new EmptyAtom(); } } } else { parser.parse(); } } protected TeXFormula(TeXParser tp, String s, String textStyle, boolean firstpass, boolean space) throws ParseException { this.textStyle = textStyle; this.jlmXMLMap = tp.formula.jlmXMLMap; boolean isPartial = tp.getIsPartial(); parser = new TeXParser(isPartial, s, this, firstpass, space); if (isPartial) { try { parser.parse(); } catch (Exception e) { if (root == null) { root = new EmptyAtom(); } } } else { parser.parse(); } } public static TeXFormula getAsText(String text, int alignment) throws ParseException { TeXFormula formula = new TeXFormula(); if (text == null || "".equals(text)) { formula.add(new EmptyAtom()); return formula; } String[] arr = text.split("\n|\\\\\\\\|\\\\cr"); ArrayOfAtoms atoms = new ArrayOfAtoms(); for (String s : arr) { TeXFormula f = new TeXFormula(s, "mathnormal", true, false); atoms.add(new RomanAtom(f.root)); atoms.addRow(); } atoms.checkDimensions(); formula.add(new MatrixAtom(false, atoms, MatrixAtom.ARRAY, alignment)); return formula; } /** * @param a formula * @return a partial TeXFormula containing the valid part of formula */ public static TeXFormula getPartialTeXFormula(String formula) { TeXFormula f = new TeXFormula(); if (formula == null) { f.add(new EmptyAtom()); return f; } TeXParser parser = new TeXParser(true, formula, f); try { parser.parse(); } catch (Exception e) { if (f.root == null) { f.root = new EmptyAtom(); } } return f; } /** * @param b true if the fonts should be registered (Java 1.6 only) to be used * with FOP. */ public static void registerFonts(boolean b) { DefaultTeXFontParser.registerFonts(b); } /** * Change the text of the TeXFormula and regenerate the root * * @param ltx the latex formula */ public void setLaTeX(String ltx) throws ParseException { parser.reset(ltx); if (ltx != null && ltx.length() != 0) parser.parse(); } /** * Inserts an atom at the end of the current formula */ public TeXFormula add(Atom el) { if (el != null) { if (el instanceof MiddleAtom) middle.add((MiddleAtom) el); if (root == null) { root = el; } else { if (!(root instanceof RowAtom)) { root = new RowAtom(root); } ((RowAtom) root).add(el); if (el instanceof TypedAtom) { TypedAtom ta = (TypedAtom) el; int rtype = ta.getRightType(); if (rtype == TeXConstants.TYPE_BINARY_OPERATOR || rtype == TeXConstants.TYPE_RELATION) { ((RowAtom) root).add(new BreakMarkAtom()); } } } } return this; } /** * Parses the given string and inserts the resulting formula * at the end of the current TeXFormula. * * @param s the string to be parsed and inserted * @throws ParseException if the string could not be parsed correctly * @return the modified TeXFormula */ public TeXFormula add(String s) throws ParseException { if (s != null && s.length() != 0) { // reset parsing variables textStyle = null; // parse and add the string add(new TeXFormula(s)); } return this; } public TeXFormula append(String s) throws ParseException { return append(false, s); } public TeXFormula append(boolean isPartial, String s) throws ParseException { if (s != null && s.length() != 0) { TeXParser tp = new TeXParser(isPartial, s, this); tp.parse(); } return this; } /** * Inserts the given TeXFormula at the end of the current TeXFormula. * * @param f the TeXFormula to be inserted * @return the modified TeXFormula */ public TeXFormula add(TeXFormula f) { addImpl (f); return this; } private void addImpl(TeXFormula f) { if (f.root != null) { // special copy-treatment for Mrow as a root!! if (f.root instanceof RowAtom) add(new RowAtom(f.root)); else add(f.root); } } public void setLookAtLastAtom(boolean b) { if (root instanceof RowAtom) ((RowAtom)root).lookAtLastAtom = b; } public boolean getLookAtLastAtom() { if (root instanceof RowAtom) return ((RowAtom)root).lookAtLastAtom; return false; } /** * Centers the current TeXformula vertically on the axis (defined by the parameter * "axisheight" in the resource "DefaultTeXFont.xml". * * @return the modified TeXFormula */ public TeXFormula centerOnAxis() { root = new VCenteredAtom(root); return this; } public static void addPredefinedTeXFormula(InputStream xmlFile) throws ResourceParseException { new PredefinedTeXFormulaParser(xmlFile, "TeXFormula").parse(predefinedTeXFormulas); } public static void addPredefinedCommands(InputStream xmlFile) throws ResourceParseException { new PredefinedTeXFormulaParser(xmlFile, "Command").parse(MacroInfo.Commands); } /** * Inserts a strut box (whitespace) with the given width, height and depth (in * the given unit) at the end of the current TeXFormula. * * @param unit a unit constant (from {@link TeXConstants}) * @param width the width of the strut box * @param height the height of the strut box * @param depth the depth of the strut box * @return the modified TeXFormula * @throws InvalidUnitException if the given integer value does not represent * a valid unit */ public TeXFormula addStrut(int unit, float width, float height, float depth) throws InvalidUnitException { return add(new SpaceAtom(unit, width, height, depth)); } /** * Inserts a strut box (whitespace) with the given width, height and depth (in * the given unit) at the end of the current TeXFormula. * * @param type thinmuskip, medmuskip or thickmuskip (from {@link TeXConstants}) * @return the modified TeXFormula * @throws InvalidUnitException if the given integer value does not represent * a valid unit */ public TeXFormula addStrut(int type) throws InvalidUnitException { return add(new SpaceAtom(type)); } /** * Inserts a strut box (whitespace) with the given width (in widthUnits), height * (in heightUnits) and depth (in depthUnits) at the end of the current TeXFormula. * * @param widthUnit a unit constant used for the width (from {@link TeXConstants}) * @param width the width of the strut box * @param heightUnit a unit constant used for the height (from TeXConstants) * @param height the height of the strut box * @param depthUnit a unit constant used for the depth (from TeXConstants) * @param depth the depth of the strut box * @return the modified TeXFormula * @throws InvalidUnitException if the given integer value does not represent * a valid unit */ public TeXFormula addStrut(int widthUnit, float width, int heightUnit, float height, int depthUnit, float depth) throws InvalidUnitException { return add(new SpaceAtom(widthUnit, width, heightUnit, height, depthUnit, depth)); } /* * Convert this TeXFormula into a box, starting form the given style */ private Box createBox(TeXEnvironment style) { if (root == null) return new StrutBox(0, 0, 0, 0); else return root.createBox(style); } private DefaultTeXFont createFont(float size, int type) { DefaultTeXFont dtf = new DefaultTeXFont(size); if (type == 0) { dtf.setSs(false); } if ((type & ROMAN) != 0) { dtf.setRoman(true); } if ((type & TYPEWRITER) != 0) { dtf.setTt(true); } if ((type & SANSSERIF) != 0) { dtf.setSs(true); } if ((type & ITALIC) != 0) { dtf.setIt(true); } if ((type & BOLD) != 0) { dtf.setBold(true); } return dtf; } /** * Apply the Builder pattern instead of using the createTeXIcon(...) factories * @author Felix Natter * */ public class TeXIconBuilder { private Integer style; private Float size; private Integer type; private Color fgcolor; private boolean trueValues = false; private Integer widthUnit; private Float textWidth; private Integer align; private boolean isMaxWidth = false; private Integer interLineUnit; private Float interLineSpacing; /** * Specify the style for rendering the given TeXFormula * @param style the style * @return the builder, used for chaining */ public TeXIconBuilder setStyle(final int style) { this.style = style; return this; } /** * Specify the font size for rendering the given TeXFormula * @param size the size * @return the builder, used for chaining */ public TeXIconBuilder setSize(final float size) { this.size = size; return this; } /** * Specify the font type for rendering the given TeXFormula * @param type the font type * @return the builder, used for chaining */ public TeXIconBuilder setType(final int type) { this.type = type; return this; } /** * Specify the background color for rendering the given TeXFormula * @param fgcolor the foreground color * @return the builder, used for chaining */ public TeXIconBuilder setFGColor(final Color fgcolor) { this.fgcolor = fgcolor; return this; } /** * Specify the "true values" parameter for rendering the given TeXFormula * @param trueValues the "true values" value * @return the builder, used for chaining */ public TeXIconBuilder setTrueValues(final boolean trueValues) { this.trueValues = trueValues; return this; } /** * Specify the width of the formula (may be exact or maximum width, see {@link #setIsMaxWidth(boolean)}) * @param widthUnit the width unit * @param textWidth the width * @param align the alignment * @return the builder, used for chaining */ public TeXIconBuilder setWidth(final int widthUnit, final float textWidth, final int align) { this.widthUnit = widthUnit; this.textWidth = textWidth; this.align = align; trueValues = true; // TODO: is this necessary? return this; } /** * Specifies whether the width is the exact or the maximum width * @param isMaxWidth whether the width is a maximum width * @return the builder, used for chaining */ public TeXIconBuilder setIsMaxWidth(final boolean isMaxWidth) { if (widthUnit == null) { throw new IllegalStateException("Cannot set 'isMaxWidth' without having specified a width!"); } if (isMaxWidth) { // NOTE: Currently isMaxWidth==true does not work with ALIGN_CENTER or ALIGN_RIGHT (see HorizontalBox ctor) // The case (1) we don't support by setting align := ALIGN_LEFT here is this: // \text{hello world\\hello} with align=ALIGN_CENTER (but forced to ALIGN_LEFT) and isMaxWidth==true results in: // [hello world] // [hello ] // and NOT: // [hello world] // [ hello ] // However, this case (2) is currently not supported anyway (ALIGN_CENTER with isMaxWidth==false): // [ hello world ] // [ hello ] // and NOT: // [ hello world ] // [ hello ] // => until (2) is solved, we stick with the hack to set align := ALIGN_LEFT! this.align = TeXConstants.ALIGN_LEFT; } this.isMaxWidth = isMaxWidth; return this; } /** * Specify the inter line spacing unit and value. NOTE: this is required for automatic linebreaks to work! * @param interLineUnit the unit * @param interLineSpacing the value * @return the builder, used for chaining */ public TeXIconBuilder setInterLineSpacing(final int interLineUnit, final float interLineSpacing) { if (widthUnit == null) { throw new IllegalStateException("Cannot set inter line spacing without having specified a width!"); } this.interLineUnit = interLineUnit; this.interLineSpacing = interLineSpacing; return this; } /** * Create a TeXIcon from the information gathered by the (chained) setXXX() methods. * (see Builder pattern) * @return the TeXIcon */ public TeXIcon build() { if (style == null) { throw new IllegalStateException("A style is required. Use setStyle()"); } if (size == null) { throw new IllegalStateException("A size is required. Use setStyle()"); } DefaultTeXFont font = (type == null) ? new DefaultTeXFont(size) : createFont(size, type); TeXEnvironment te; if (widthUnit != null) { te = new TeXEnvironment(style, font, widthUnit, textWidth); } else { te = new TeXEnvironment(style, font); } if (interLineUnit != null) { te.setInterline(interLineUnit, interLineSpacing); } Box box = createBox(te); TeXIcon ti; if (widthUnit != null) { HorizontalBox hb; if (interLineUnit != null) { float il = interLineSpacing * SpaceAtom.getFactor(interLineUnit, te); Box b = BreakFormula.split(box, te.getTextwidth(), il); hb = new HorizontalBox(b, isMaxWidth ? b.getWidth() : te.getTextwidth(), align); } else { hb = new HorizontalBox(box, isMaxWidth ? box.getWidth() : te.getTextwidth(), align); } ti = new TeXIcon(hb, size, trueValues); } else { ti = new TeXIcon(box, size, trueValues); } if (fgcolor != null) { ti.setForeground(fgcolor); } ti.isColored = te.isColored; return ti; } } /** * Creates a TeXIcon from this TeXFormula using the default TeXFont in the given * point size and starting from the given TeX style. If the given integer value * does not represent a valid TeX style, the default style * TeXConstants.STYLE_DISPLAY will be used. * * @param style a TeX style constant (from {@link TeXConstants}) to start from * @param size the default TeXFont's point size * @return the created TeXIcon */ public TeXIcon createTeXIcon(int style, float size) { return new TeXIconBuilder().setStyle(style).setSize(size).build(); } public TeXIcon createTeXIcon(int style, float size, int type) { return new TeXIconBuilder().setStyle(style).setSize(size).setType(type).build(); } public TeXIcon createTeXIcon(int style, float size, int type, Color fgcolor) { return new TeXIconBuilder().setStyle(style).setSize(size).setType(type).setFGColor(fgcolor).build(); } public TeXIcon createTeXIcon(int style, float size, boolean trueValues) { return new TeXIconBuilder().setStyle(style).setSize(size).setTrueValues(trueValues).build(); } public TeXIcon createTeXIcon(int style, float size, int widthUnit, float textwidth, int align) { return createTeXIcon(style, size, 0, widthUnit, textwidth, align); } public TeXIcon createTeXIcon(int style, float size, int type, int widthUnit, float textwidth, int align) { return new TeXIconBuilder().setStyle(style).setSize(size).setType(type).setWidth(widthUnit, textwidth, align).build(); } public TeXIcon createTeXIcon(int style, float size, int widthUnit, float textwidth, int align, int interlineUnit, float interline) { return createTeXIcon(style, size, 0, widthUnit, textwidth, align, interlineUnit, interline); } public TeXIcon createTeXIcon(int style, float size, int type, int widthUnit, float textwidth, int align, int interlineUnit, float interline) { return new TeXIconBuilder().setStyle(style).setSize(size).setType(type).setWidth(widthUnit, textwidth, align).setInterLineSpacing(interlineUnit, interline).build(); } public void createImage(String format, int style, float size, String out, Color bg, Color fg, boolean transparency) { TeXIcon icon = createTeXIcon(style, size); icon.setInsets(new Insets(1, 1, 1, 1)); int w = icon.getIconWidth(), h = icon.getIconHeight(); BufferedImage image = new BufferedImage(w, h, transparency ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); if (bg != null && !transparency) { g2.setColor(bg); g2.fillRect(0, 0, w, h); } icon.setForeground(fg); icon.paintIcon(null, g2, 0, 0); try { FileImageOutputStream imout = new FileImageOutputStream(new File(out)); ImageIO.write(image, format, imout); imout.flush(); imout.close(); } catch (IOException ex) { System.err.println("I/O error : Cannot generate " + out); } g2.dispose(); } public void createPNG(int style, float size, String out, Color bg, Color fg) { createImage("png", style, size, out, bg, fg, bg == null); } public void createGIF(int style, float size, String out, Color bg, Color fg) { createImage("gif", style, size, out, bg, fg, bg == null); } public void createJPEG(int style, float size, String out, Color bg, Color fg) { //There is a bug when a BufferedImage has a component alpha so we disabel it createImage("jpeg", style, size, out, bg, fg, false); } /** * @param formula the formula * @param style the style * @param size the size * @param transparency, if true the background is transparent * @return the generated image */ public static Image createBufferedImage(String formula, int style, float size, Color fg, Color bg) throws ParseException { TeXFormula f = new TeXFormula(formula); TeXIcon icon = f.createTeXIcon(style, size); icon.setInsets(new Insets(2, 2, 2, 2)); int w = icon.getIconWidth(), h = icon.getIconHeight(); BufferedImage image = new BufferedImage(w, h, bg == null ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); if (bg != null) { g2.setColor(bg); g2.fillRect(0, 0, w, h); } icon.setForeground(fg == null ? Color.BLACK : fg); icon.paintIcon(null, g2, 0, 0); g2.dispose(); return image; } /** * @param formula the formula * @param style the style * @param size the size * @param transparency, if true the background is transparent * @return the generated image */ public Image createBufferedImage(int style, float size, Color fg, Color bg) throws ParseException { TeXIcon icon = createTeXIcon(style, size); icon.setInsets(new Insets(2, 2, 2, 2)); int w = icon.getIconWidth(), h = icon.getIconHeight(); BufferedImage image = new BufferedImage(w, h, bg == null ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); if (bg != null) { g2.setColor(bg); g2.fillRect(0, 0, w, h); } icon.setForeground(fg == null ? Color.BLACK : fg); icon.paintIcon(null, g2, 0, 0); g2.dispose(); return image; } public void setDEBUG(boolean b) { Box.DEBUG = b; } /** * Changes the background color of the current TeXFormula into the given color. * By default, a TeXFormula has no background color, it's transparent. * The backgrounds of subformula's will be painted on top of the background of * the whole formula! Any changes that will be made to this TeXFormula after this * background color was set, will have the default background color (unless it will * also be changed into another color afterwards)! * * @param c the desired background color for the current TeXFormula * @return the modified TeXFormula */ public TeXFormula setBackground(Color c) { if (c != null) { if (root instanceof ColorAtom) root = new ColorAtom(c, null, (ColorAtom) root); else root = new ColorAtom(root, c, null); } return this; } /** * Changes the (foreground) color of the current TeXFormula into the given color. * By default, the foreground color of a TeXFormula is the foreground color of the * component on which the TeXIcon (created from this TeXFormula) will be painted. The * color of subformula's overrides the color of the whole formula. * Any changes that will be made to this TeXFormula after this color was set, will be * painted in the default color (unless the color will also be changed afterwards into * another color)! * * @param c the desired foreground color for the current TeXFormula * @return the modified TeXFormula */ public TeXFormula setColor(Color c) { if (c != null) { if (root instanceof ColorAtom) root = new ColorAtom(null, c, (ColorAtom) root); else root = new ColorAtom(root, null, c); } return this; } /** * Sets a fixed left and right type of the current TeXFormula. This has an influence * on the glue that will be inserted before and after this TeXFormula. * * @param leftType atom type constant (from {@link TeXConstants}) * @param rightType atom type constant (from TeXConstants) * @return the modified TeXFormula * @throws InvalidAtomTypeException if the given integer value does not represent * a valid atom type */ public TeXFormula setFixedTypes(int leftType, int rightType) throws InvalidAtomTypeException { root = new TypedAtom(leftType, rightType, root); return this; } /** * Get a predefined TeXFormula. * * @param name the name of the predefined TeXFormula * @return a copy of the predefined TeXFormula * @throws FormulaNotFoundException if no predefined TeXFormula is found with the * given name */ public static TeXFormula get(String name) throws FormulaNotFoundException { TeXFormula formula = predefinedTeXFormulas.get(name); if (formula == null) { String f = predefinedTeXFormulasAsString.get(name); if (f == null) { throw new FormulaNotFoundException(name); } TeXFormula tf = new TeXFormula(f); predefinedTeXFormulas.put(name, tf); return tf; } else { return new TeXFormula(formula); } } static class FontInfos { String sansserif; String serif; FontInfos(String sansserif, String serif) { this.sansserif = sansserif; this.serif = serif; } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/SsAtom.java0000644000175000017500000000323312275735442026307 0ustar sylvestresylvestre/* SsAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a sans serif atom. */ public class SsAtom extends Atom { private Atom base; public SsAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setSs(true); Box box = base.createBox(env); env.getTeXFont().setSs(false); return box; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/InvalidAtomTypeException.java0000644000175000017500000000310412275735442032026 0ustar sylvestresylvestre/* InvalidAtomTypeException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown atom type constant was used. * * @author Kurt Vermeulen */ public class InvalidAtomTypeException extends JMathTeXException { protected InvalidAtomTypeException(String msg) { super(msg); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/SymbolMappingNotFoundException.java0000644000175000017500000000340412275735442033216 0ustar sylvestresylvestre/* SymbolMappingNotFoundException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals a missing symbol mapping. * * @author Kurt Vermeulen */ public class SymbolMappingNotFoundException extends JMathTeXException { protected SymbolMappingNotFoundException(String symbolName) { super("No mapping found for the symbol '" + symbolName + "'! " + "Insert a <" + DefaultTeXFontParser.SYMBOL_MAPPING_EL + ">-element in '" + DefaultTeXFontParser.RESOURCE_NAME + "'."); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ResizeAtom.java0000644000175000017500000000547012275735442027170 0ustar sylvestresylvestre/* ResizeAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a scaled Atom. */ public class ResizeAtom extends Atom { private Atom base; private int wunit, hunit; private float w, h; private boolean keepaspectratio; public ResizeAtom(Atom base, String ws, String hs, boolean keepaspectratio) { this.type = base.type; this.base = base; this.keepaspectratio = keepaspectratio; float[] w = SpaceAtom.getLength(ws == null ? "" : ws); float[] h = SpaceAtom.getLength(hs == null ? "" : hs); if (w.length != 2) { this.wunit = -1; } else { this.wunit = (int) w[0]; this.w = w[1]; } if (h.length != 2) { this.hunit = -1; } else { this.hunit = (int) h[0]; this.h = h[1]; } } public int getLeftType() { return base.getLeftType(); } public int getRightType() { return base.getRightType(); } public Box createBox(TeXEnvironment env) { Box bbox = base.createBox(env); if (wunit == -1 && hunit == -1) { return bbox; } else { double xscl = 1; double yscl = 1; if (wunit != -1 && hunit != -1) { xscl = w * SpaceAtom.getFactor(wunit, env) / bbox.width; yscl = h * SpaceAtom.getFactor(hunit, env) / bbox.height; if (keepaspectratio) { xscl = Math.min(xscl, yscl); yscl = xscl; } } else if (wunit != -1 && hunit == -1) { xscl = w * SpaceAtom.getFactor(wunit, env) / bbox.width; yscl = xscl; } else { yscl = h * SpaceAtom.getFactor(hunit, env) / bbox.height; xscl = yscl; } return new ScaleBox(bbox, xscl, yscl); } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/VCenteredAtom.java0000644000175000017500000000403212275735442027577 0ustar sylvestresylvestre/* VCenteredAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom vertically centered with respect to the axis * (determined by a general TeXFont parameter) */ public class VCenteredAtom extends Atom { // atom to be centered vertically with respect to the axis private final Atom atom; public VCenteredAtom(Atom atom) { this.atom = atom; } public Box createBox(TeXEnvironment env) { Box b = atom.createBox(env); float total = b.getHeight() + b.getDepth(), axis = env.getTeXFont() .getAxisHeight(env.getStyle()); // center on axis b.setShift(-(total / 2) - axis); // put in horizontal box, so shifting will be vertically! return new HorizontalBox(b); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FencedAtom.java0000644000175000017500000001202012275735442027100 0ustar sylvestresylvestre/* FencedAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.util.List; /** * An atom representing a base atom surrounded with delimiters that change their size * according to the height of the base. */ public class FencedAtom extends Atom { // parameters used in the TeX algorithm private static final int DELIMITER_FACTOR = 901; private static final float DELIMITER_SHORTFALL = 5f; // base atom private final Atom base; // delimiters private SymbolAtom left = null; private SymbolAtom right = null; private final List middle; /** * Creates a new FencedAtom from the given base and delimiters * * @param base the base to be surrounded with delimiters * @param l the left delimiter * @param r the right delimiter */ public FencedAtom(Atom base, SymbolAtom l, SymbolAtom r) { this(base, l, null, r); } public FencedAtom(Atom base, SymbolAtom l, List m, SymbolAtom r) { if (base == null) this.base = new RowAtom(); // empty base else this.base = base; if (l == null || !l.getName().equals("normaldot")) { left = l; } if (r == null || !r.getName().equals("normaldot")) { right = r; } middle = m; } public int getLeftType() { return TeXConstants.TYPE_INNER; } public int getRightType() { return TeXConstants.TYPE_INNER; } /** * Centers the given box with resprect to the given axis, by setting an appropriate * shift value. * * @param box * box to be vertically centered with respect to the axis */ private static void center(Box box, float axis) { float h = box.getHeight(), total = h + box.getDepth(); box.setShift(-(total / 2 - h) - axis); } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); Box content = base.createBox(env); float shortfall = DELIMITER_SHORTFALL * SpaceAtom.getFactor(TeXConstants.UNIT_POINT, env); float axis = tf.getAxisHeight(env.getStyle()); float delta = Math.max(content.getHeight() - axis, content.getDepth() + axis); float minHeight = Math.max((delta / 500) * DELIMITER_FACTOR, 2 * delta - shortfall); // construct box HorizontalBox hBox = new HorizontalBox(); if (middle != null) { for (int i = 0; i < middle.size(); i++) { MiddleAtom at = middle.get(i); if (at.base instanceof SymbolAtom) { Box b = DelimiterFactory.create(((SymbolAtom) at.base).getName(), env, minHeight); center(b, axis); at.box = b; } } if (middle.size() != 0) { content = base.createBox(env); } } // left delimiter if (left != null) { Box b = DelimiterFactory.create(left.getName(), env, minHeight); center(b, axis); hBox.add(b); } // glue between left delimiter and content (if not whitespace) if (!(base instanceof SpaceAtom)) { hBox.add(Glue.get(TeXConstants.TYPE_OPENING, base.getLeftType(), env)); } // add content hBox.add(content); // glue between right delimiter and content (if not whitespace) if (!(base instanceof SpaceAtom)) { hBox.add(Glue.get(base.getRightType(), TeXConstants.TYPE_CLOSING, env)); } // right delimiter if (right != null) { Box b = DelimiterFactory.create(right.getName(), env, minHeight); center(b, axis); hBox.add(b); } return hBox; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/UnderOverArrowAtom.java0000644000175000017500000000556312275735442030656 0ustar sylvestresylvestre/* UnderOverArrowAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing an other atom with an extensible arrow or doublearrow over or under it. */ public class UnderOverArrowAtom extends Atom { private Atom base; private String arrow; private boolean over, left = false, dble = false; public UnderOverArrowAtom(Atom base, boolean left, boolean over) { this.base = base; this.arrow = left ? "leftarrow" : "rightarrow"; this.left = left; this.over = over; } public UnderOverArrowAtom(Atom base, boolean over) { this.base = base; this.over = over; this.dble = true; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Box b = base != null ? base.createBox(env) : new StrutBox(0, 0, 0, 0); float sep = new SpaceAtom(TeXConstants.UNIT_POINT, 1f, 0, 0).createBox(env).getWidth(); Box arrow; if (dble) { arrow = XLeftRightArrowFactory.create(env, b.getWidth()); sep = 4 * sep; } else { arrow = XLeftRightArrowFactory.create(left, env, b.getWidth()); sep = -sep; } VerticalBox vb = new VerticalBox(); if (over) { vb.add(arrow); vb.add(new HorizontalBox(b, arrow.getWidth(), TeXConstants.ALIGN_CENTER)); float h = vb.getDepth() + vb.getHeight(); vb.setDepth(b.getDepth()); vb.setHeight(h - b.getDepth()); } else { vb.add(new HorizontalBox(b, arrow.getWidth(), TeXConstants.ALIGN_CENTER)); vb.add(new StrutBox(0, sep, 0, 0)); vb.add(arrow); float h = vb.getDepth() + vb.getHeight(); vb.setDepth(h - b.getHeight()); vb.setHeight(b.getHeight()); } return vb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/DelimiterFactory.java0000644000175000017500000001111112275735442030341 0ustar sylvestresylvestre/* DelimiterFactory.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; // NOPMD /** * Responsible for creating a box containing a delimiter symbol that exists * in different sizes. */ public class DelimiterFactory { public static Box create(SymbolAtom symbol, TeXEnvironment env, int size) { if (size > 4) return symbol.createBox(env); TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Char c = tf.getChar(symbol.getName(), style); int i; for (i = 1; i <= size && tf.hasNextLarger(c); i++) c = tf.getNextLarger(c, style); if (i <= size && !tf.hasNextLarger(c)) { CharBox A = new CharBox(tf.getChar('A', "mathnormal", style)); Box b = create(symbol.getName(), env, size*(A.getHeight() + A.getDepth())); return b; } return new CharBox(c); } /** * * @param symbol the name of the delimiter symbol * @param env the TeXEnvironment in which to create the delimiter box * @param minHeight the minimum required total height of the box (height + depth). * @return the box representing the delimiter variant that fits best according to * the required minimum size. */ public static Box create(String symbol, TeXEnvironment env, float minHeight) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Char c = tf.getChar(symbol, style); // start with smallest character Metrics m = c.getMetrics(); float total = m.getHeight() + m.getDepth(); // try larger versions of the same character until minHeight has been // reached while (total < minHeight && tf.hasNextLarger(c)) { c = tf.getNextLarger(c, style); m = c.getMetrics(); total = m.getHeight() + m.getDepth(); } if (total >= minHeight) { // tall enough character found return new CharBox(c); } else if (tf.isExtensionChar(c)) { // construct tall enough vertical box VerticalBox vBox = new VerticalBox(); Extension ext = tf.getExtension(c, style); // extension info if (ext.hasTop()) { // insert top part c = ext.getTop(); vBox.add(new CharBox(c)); } boolean middle = ext.hasMiddle(); if (middle) { // insert middle part c = ext.getMiddle(); vBox.add(new CharBox(c)); } if (ext.hasBottom()) { // insert bottom part c = ext.getBottom(); vBox.add(new CharBox(c)); } // insert repeatable part until tall enough c = ext.getRepeat(); CharBox rep = new CharBox(c); while (vBox.getHeight() + vBox.getDepth() <= minHeight) { if (ext.hasTop() && ext.hasBottom()) { vBox.add(1, rep); if (middle) vBox.add(vBox.getSize() - 1, rep); } else if (ext.hasBottom()) vBox.add(0, rep); else vBox.add(rep); } return vBox; } else // no extensions, so return tallest possible character return new CharBox(c); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/GraphicsAtom.java0000644000175000017500000001024712275735442027465 0ustar sylvestresylvestre/* GraphicsAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.image.ImageObserver; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.MediaTracker; import java.awt.Label; import java.awt.Graphics2D; import java.awt.Toolkit; import java.io.File; import java.net.URL; import java.net.MalformedURLException; import java.util.Map; /** * An atom representing an atom containing a graphic. */ public class GraphicsAtom extends Atom { private Image image = null; private BufferedImage bimage; private Label c; private int w, h; private Atom base; private boolean first = true; private int interp = -1; public GraphicsAtom(String path, String option) { File f = new File(path); if (!f.exists()) { try { URL url = new URL(path); image = Toolkit.getDefaultToolkit().getImage(url); } catch (MalformedURLException e) { image = null; } } else { image = Toolkit.getDefaultToolkit().getImage(path); } if (image != null) { c = new Label(); MediaTracker tracker = new MediaTracker(c); tracker.addImage(image, 0); try { tracker.waitForID(0); } catch (InterruptedException e) { image = null; } } draw(); buildAtom(option); } protected void buildAtom(String option) { base = this; Map options = ParseOption.parseMap(option); if (options.containsKey("width") || options.containsKey("height")) { base = new ResizeAtom(base, options.get("width"), options.get("height"), options.containsKey("keepaspectratio")); } if (options.containsKey("scale")) { double scl = Double.parseDouble(options.get("scale")); base = new ScaleAtom(base, scl, scl); } if (options.containsKey("angle") || options.containsKey("origin")) { base = new RotateAtom(base, options.get("angle"), options.get("origin")); } if (options.containsKey("interpolation")) { String meth = options.get("interpolation"); if (meth.equalsIgnoreCase("bilinear")) { interp = GraphicsBox.BILINEAR; } else if (meth.equalsIgnoreCase("bicubic")) { interp = GraphicsBox.BICUBIC; } else if (meth.equalsIgnoreCase("nearest_neighbor")) { interp = GraphicsBox.NEAREST_NEIGHBOR; } } } public void draw() { if (image != null) { w = image.getWidth(c); h = image.getHeight(c); bimage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = bimage.createGraphics(); g2d.drawImage(image, 0, 0, null); g2d.dispose(); } } public Box createBox(TeXEnvironment env) { if (image != null) { if (first) { first = false; return base.createBox(env); } else { env.isColored = true; float width = w * SpaceAtom.getFactor(TeXConstants.UNIT_PIXEL, env); float height = h * SpaceAtom.getFactor(TeXConstants.UNIT_PIXEL, env); return new GraphicsBox(bimage, width, height, env.getSize(), interp); } } return new TeXFormula("\\text{ No such image file ! }").root.createBox(env); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FcscoreBox.java0000644000175000017500000000614512275735442027143 0ustar sylvestresylvestre/* FcscoreBox.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2013 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.BasicStroke; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; /** * A box representing glue. */ public class FcscoreBox extends Box { private int N; private boolean strike; private float space; private float thickness; public FcscoreBox(int N, float h, float thickness, float space, boolean strike) { this.N = N; this.width = N * (thickness + space) + 2 * space; this.height = h; this.depth = 0; this.strike = strike; this.space = space; this.thickness = thickness; } public void draw(Graphics2D g2, float x, float y) { AffineTransform transf = g2.getTransform(); Stroke oldStroke = g2.getStroke(); final double sx = transf.getScaleX(); final double sy = transf.getScaleY(); double s = 1; if (sx == sy) { // There are rounding problems due to scale factor: lines could have different // spacing... // So the increment (space+thickness) is done in using integer. s = sx; AffineTransform t = (AffineTransform) transf.clone(); t.scale(1 / sx, 1 / sy); g2.setTransform(t); } g2.setStroke(new BasicStroke((float) (s * thickness), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); float th = thickness / 2.f; final Line2D.Float line = new Line2D.Float(); float xx = x + space; xx = (float) (xx * s + (space / 2.f) * s); final int inc = (int) Math.round((space + thickness) * s); for (int i = 0; i < N; i++) { line.setLine(xx + th * s, (y - height) * s, xx + th * s, y * s); g2.draw(line); xx += inc; } if (strike) { line.setLine((x + space) * s, (y - height / 2.f) * s, xx - s * space / 2, (y - height / 2.f) * s); g2.draw(line); } g2.setTransform(transf); g2.setStroke(oldStroke); } public int getLastFontId() { return TeXFont.NO_FONT; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ScaleBox.java0000644000175000017500000000465512275735442026612 0ustar sylvestresylvestre/* ScaleBox.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; /** * A box representing a scaled box. */ public class ScaleBox extends Box { private Box box; private double xscl, yscl; private float factor = 1; public ScaleBox(Box b, double xscl, double yscl) { this.box = b; this.xscl = (Double.isNaN(xscl) || Double.isInfinite(xscl)) ? 0 : xscl; this.yscl = (Double.isNaN(yscl) || Double.isInfinite(yscl)) ? 0 : yscl; width = b.width * (float) Math.abs(this.xscl); height = this.yscl > 0 ? b.height * (float) this.yscl : -b.depth * (float) this.yscl; depth = this.yscl > 0 ? b.depth * (float) this.yscl : -b.height * (float) this.yscl; shift = b.shift * (float) this.yscl; } public ScaleBox(Box b, float factor) { this(b, (double) factor, (double) factor); this.factor = factor; } public void draw(Graphics2D g2, float x, float y) { drawDebug(g2, x, y); if (xscl != 0 && yscl != 0) { float dec = xscl < 0 ? width : 0; g2.translate(x + dec, y); g2.scale(xscl, yscl); box.draw(g2, 0, 0); g2.scale(1 / xscl, 1 / yscl); g2.translate(-x - dec, -y); } } public int getLastFontId() { return box.getLastFontId(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/VRowAtom.java0000644000175000017500000000644212275735442026624 0ustar sylvestresylvestre/* VRowAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.util.BitSet; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; /** * An atom representing a vertical row of other atoms. */ public class VRowAtom extends Atom { // atoms to be displayed horizontally next to eachother protected LinkedList elements = new LinkedList(); private SpaceAtom raise = new SpaceAtom(TeXConstants.UNIT_EX, 0, 0, 0); protected boolean addInterline = false; public VRowAtom() { // empty } public VRowAtom(Atom el) { if (el != null) { if (el instanceof VRowAtom) // no need to make an mrow the only element of an mrow elements.addAll(((VRowAtom) el).elements); else elements.add(el); } } public void setAddInterline(boolean addInterline) { this.addInterline = addInterline; } public boolean getAddInterline() { return this.addInterline; } public void setRaise(int unit, float r) { raise = new SpaceAtom(unit, r, 0, 0); } public Atom getLastAtom() { return elements.removeLast(); } public final void add(Atom el) { if (el != null) elements.add(0, el); } public final void append(Atom el) { if (el != null) elements.add(el); } public Box createBox(TeXEnvironment env) { VerticalBox vb = new VerticalBox(); Box interline = new StrutBox(0, env.getInterline(), 0, 0); // convert atoms to boxes and add to the horizontal box for (ListIterator it = elements.listIterator(); it.hasNext();) { vb.add(((Atom)it.next()).createBox(env)); if (addInterline && it.hasNext()) { vb.add(interline); } } vb.setShift(-raise.createBox(env).getWidth()); float t = vb.getSize() == 0 ? 0 : vb.children.getLast().getDepth(); vb.setHeight(vb.getDepth() + vb.getHeight() - t); vb.setDepth(t); return vb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ReflectBox.java0000644000175000017500000000344712275735442027145 0ustar sylvestresylvestre/* ReflectBox.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; /** * A box representing a rotated box. */ public class ReflectBox extends Box { private Box box; public ReflectBox(Box b) { this.box = b; width = b.width; height = b.height; depth = b.depth; shift = b.shift; } public void draw(Graphics2D g2, float x, float y) { drawDebug(g2, x, y); g2.translate(x, y); g2.scale(-1, 1); box.draw(g2, -width, 0); g2.scale(-1, 1); g2.translate(-x, -y); } public int getLastFontId() { return box.getLastFontId(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FractionAtom.java0000644000175000017500000002317412275735442027475 0ustar sylvestresylvestre/* FractionAtom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a fraction. */ public class FractionAtom extends Atom { // whether the default thickness should not be used for the fraction line private boolean noDefault = false; // unit used for the thickness of the fraction line private int unit; // alignment settings for the numerator and denominator private int numAlign = TeXConstants.ALIGN_CENTER, denomAlign = TeXConstants.ALIGN_CENTER; // the atoms representing the numerator and denominator private Atom numerator, denominator; // thickness of the fraction line private float thickness; // thickness of the fraction line relative to the default thickness private float defFactor; // whether the "defFactor" value should be used private boolean defFactorSet = false; /** * Uses the default thickness for the fraction line * * @param num the numerator * @param den the denominator */ public FractionAtom(Atom num, Atom den) { this(num, den, true); } /** * Uses the default thickness for the fraction line * * @param num the numerator * @param den the denominator * @param rule whether the fraction line should be drawn */ public FractionAtom(Atom num, Atom den, boolean rule) { this(num, den, !rule, TeXConstants.UNIT_PIXEL, 0f); } /** * Depending on noDef, the given thickness and unit will be used (<-> the default * thickness). * * @param num the numerator * @param den the denominator * @param noDef whether the default thickness should not be used for the fraction line * @param unit a unit constant for the line thickness * @param t the thickness of the fraction line (in the given unit) * @throws InvalidUnitException if the given integer is not a valid unit constant */ public FractionAtom(Atom num, Atom den, boolean noDef, int unit, float t) throws InvalidUnitException { // check unit SpaceAtom.checkUnit(unit); // unit ok numerator = num; denominator = den; noDefault = noDef; thickness = t; this.unit = unit; type = TeXConstants.TYPE_INNER; } /** * Uses the default thickness for the fraction line. * * @param num the numerator * @param den the denominator * @param rule whether the fraction line should be drawn * @param numAlign alignment of the numerator * @param denomAlign alignment of the denominator */ public FractionAtom(Atom num, Atom den, boolean rule, int numAlign, int denomAlign) { this(num, den, rule); this.numAlign = checkAlignment(numAlign); this.denomAlign = checkAlignment(denomAlign); } /** * The thickness of the fraction line will be "defFactor" times the default thickness. * * @param num the numerator * @param den the denominator * @param defFactor the thickness of the fraction line relative to the default thickness * @param numAlign alignment of the numerator * @param denomAlign alignment of the denominator */ public FractionAtom(Atom num, Atom den, float defFactor, int numAlign, int denomAlign) { this(num, den, true, numAlign, denomAlign); this.defFactor = defFactor; defFactorSet = true; } /** * The thickness of the fraction line is determined by the given value "t" in the * given unit. * * @param num the numerator * @param den the denominator * @param unit a unit constant for the line thickness * @param t the thickness of the fraction line (in the given unit) * @param numAlign alignment of the numerator * @param denomAlign alignment of the denominator */ public FractionAtom(Atom num, Atom den, int unit, float t, int numAlign, int denomAlign) { this(num, den, unit, t); this.numAlign = checkAlignment(numAlign); this.denomAlign = checkAlignment(denomAlign); } /** * The thickness of the fraction line is determined by the given value "t" in the * given unit. * * @param num the numerator * @param den the denominator * @param unit a unit constant for the line thickness * @param t the thickness of the fraction line (in the given unit) */ public FractionAtom(Atom num, Atom den, int unit, float t) { this(num, den, true, unit, t); } // Checks if the alignment constant is valid. // If not, a default value will be used. private int checkAlignment(int align) { if (align == TeXConstants.ALIGN_LEFT || align == TeXConstants.ALIGN_RIGHT) return align; else return TeXConstants.ALIGN_CENTER; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); // set thickness to default if default value should be used float drt = tf.getDefaultRuleThickness(style); if (noDefault) // convert the thickness to pixels thickness *= SpaceAtom.getFactor(unit, env); else thickness = (defFactorSet ? defFactor * drt : drt); // create equal width boxes (in appropriate styles) Box num = (numerator == null ? new StrutBox(0, 0, 0, 0) : numerator .createBox(env.numStyle())); Box denom = (denominator == null ? new StrutBox(0, 0, 0, 0) : denominator .createBox(env.denomStyle())); if (num.getWidth() < denom.getWidth()) num = new HorizontalBox(num, denom.getWidth(), numAlign); else denom = new HorizontalBox(denom, num.getWidth(), denomAlign); // calculate default shift amounts float shiftUp, shiftDown; if (style < TeXConstants.STYLE_TEXT) { shiftUp = tf.getNum1(style); shiftDown = tf.getDenom1(style); } else { shiftDown = tf.getDenom2(style); if (thickness > 0) shiftUp = tf.getNum2(style); else shiftUp = tf.getNum3(style); } // upper part of vertical box = numerator VerticalBox vBox = new VerticalBox(); vBox.add(num); // calculate clearance clr, adjust shift amounts and create vertical box float clr, delta, axis = tf.getAxisHeight(style); if (thickness > 0) { // WITH fraction rule // clearance clr if (style < TeXConstants.STYLE_TEXT) clr = 3 * thickness; else clr = thickness; // adjust shift amounts delta = thickness / 2; float kern1 = shiftUp - num.getDepth() - (axis + delta), kern2 = axis - delta - (denom.getHeight() - shiftDown); float delta1 = clr - kern1, delta2 = clr - kern2; if (delta1 > 0) { shiftUp += delta1; kern1 += delta1; } if (delta2 > 0) { shiftDown += delta2; kern2 += delta2; } // fill vertical box vBox.add(new StrutBox(0, kern1, 0, 0)); vBox.add(new HorizontalRule(thickness, num.getWidth(), 0)); vBox.add(new StrutBox(0, kern2, 0, 0)); } else { // WITHOUT fraction rule // clearance clr if (style < TeXConstants.STYLE_TEXT) clr = 7 * drt; else clr = 3 * drt; // adjust shift amounts float kern = shiftUp - num.getDepth() - (denom.getHeight() - shiftDown); delta = (clr - kern) / 2; if (delta > 0) { shiftUp += delta; shiftDown += delta; kern += 2 * delta; } // fill vertical box vBox.add(new StrutBox(0, kern, 0, 0)); } // finish vertical box vBox.add(denom); vBox.setHeight(shiftUp + num.getHeight()); vBox.setDepth(shiftDown + denom.getDepth()); // \nulldelimiterspace is set by default to 1.2pt = 0.12em) float f = new SpaceAtom(TeXConstants.UNIT_EM, 0.12f, 0, 0).createBox(env).getWidth(); return new HorizontalBox(vBox, vBox.getWidth() + 2 * f, TeXConstants.ALIGN_CENTER); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/RotateBox.java0000644000175000017500000001422112275735442027007 0ustar sylvestresylvestre/* RotateBox.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009-2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.geom.Point2D; /** * A box representing a rotated box. */ public class RotateBox extends Box { public static final int BL = 0; public static final int BC = 1; public static final int BR = 2; public static final int TL = 3; public static final int TC = 4; public static final int TR = 5; public static final int BBL = 6; public static final int BBR = 7; public static final int BBC = 8; public static final int CL = 9; public static final int CC = 10; public static final int CR = 11; protected double angle = 0; private Box box; private float xmax, xmin, ymax, ymin; private int option; private float shiftX; private float shiftY; public RotateBox(Box b, double angle, float x, float y) { this.box = b; this.angle = angle * Math.PI / 180; height = b.height; depth = b.depth; width = b.width; double s = Math.sin(this.angle); double c = Math.cos(this.angle); shiftX = (float) (x * (1 - c) + y * s); shiftY = (float) (y * (1 - c) - x * s); xmax = (float) Math.max(-height * s, Math.max(depth * s, Math.max(width * c + depth * s, width * c - height * s))) + shiftX; xmin = (float) Math.min(-height * s, Math.min(depth * s, Math.min(width * c + depth * s, width * c - height * s))) + shiftX; ymax = (float) Math.max(height * c, Math.max(-depth * c, Math.max(width * s - depth * c, width * s + height * c))); ymin = (float) Math.min(height * c, Math.min(-depth * c, Math.min(width * s - depth * c, width * s + height * c))); width = xmax - xmin; height = ymax + shiftY; depth = -ymin - shiftY; } public RotateBox(Box b, double angle, Point2D.Float origin) { this(b, angle, origin.x, origin.y); } public RotateBox(Box b, double angle, int option) { this(b, angle, calculateShift(b, option)); } public static int getOrigin(String option) { if (option == null || option.length() == 0) { return BBL; } if (option.length() == 1) { option += "c"; } if (option.equals("bl") || option.equals("lb")) { return BL; } else if (option.equals("bc") || option.equals("cb")) { return BC; } else if (option.equals("br") || option.equals("rb")) { return BR; } else if (option.equals("cl") || option.equals("lc")) { return CL; } else if (option.equals("cc")) { return CC; } else if (option.equals("cr") || option.equals("cr")) { return CR; } else if (option.equals("tl") || option.equals("lt")) { return TL; } else if (option.equals("tc") || option.equals("ct")) { return TC; } else if (option.equals("tr") || option.equals("rt")) { return TR; } else if (option.equals("Bl") || option.equals("lB")) { return BBL; } else if (option.equals("Bc") || option.equals("cB")) { return BBC; } else if (option.equals("Br") || option.equals("rB")) { return BBR; } else return BBL; } private static Point2D.Float calculateShift(Box b, int option) { Point2D.Float p = new Point2D.Float(0, -b.depth); switch (option) { case BL : p.x = 0; p.y = -b.depth; break; case BR : p.x = b.width; p.y = -b.depth; break; case BC : p.x = b.width / 2; p.y = - b.depth; break; case TL : p.x = 0; p.y = b.height; break; case TR : p.x = b.width; p.y = b.height; break; case TC : p.x = b.width / 2; p.y = b.height; break; case BBL : p.x = 0; p.y = 0; break; case BBR : p.x = b.width; p.y = 0; break; case BBC : p.x = b.width / 2; p.y = 0; break; case CL : p.x = 0; p.y = (b.height - b.depth) / 2; break; case CR : p.x = b.width; p.y = (b.height - b.depth) / 2; break; case CC : p.x = b.width / 2; p.y = (b.height - b.depth) / 2; break; default : } return p; } public void draw(Graphics2D g2, float x, float y) { drawDebug(g2, x, y); box.drawDebug(g2, x, y, true); y -= shiftY; x += shiftX - xmin; g2.rotate(-angle, x, y); box.draw(g2, x, y); box.drawDebug(g2, x, y, true); g2.rotate(angle, x, y); } public int getLastFontId() { return box.getLastFontId(); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/XLeftRightArrowFactory.java0000644000175000017500000000746312275735442031475 0ustar sylvestresylvestre/* XLeftRightArrowFactory.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://jlatexmath.sourceforge.net * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; /** * Responsible for creating a box containing a delimiter symbol that exists * in different sizes. */ public class XLeftRightArrowFactory { private static final Atom MINUS = SymbolAtom.get("minus"); private static final Atom LEFT = SymbolAtom.get("leftarrow"); private static final Atom RIGHT = SymbolAtom.get("rightarrow"); public static Box create(boolean left, TeXEnvironment env, float width) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Box arr = left ? LEFT.createBox(env) : RIGHT.createBox(env); float h = arr.getHeight(); float d = arr.getDepth(); float swidth = arr.getWidth(); if (width <= swidth) { arr.setDepth(d / 2); return arr; } Box minus = new SmashedAtom(MINUS, "").createBox(env); Box kern = new SpaceAtom(TeXConstants.UNIT_MU, -4f, 0, 0).createBox(env); float mwidth = minus.getWidth() + kern.getWidth(); swidth += kern.getWidth(); HorizontalBox hb = new HorizontalBox(); float w; for (w = 0; w < width - swidth - mwidth; w += mwidth) { hb.add(minus); hb.add(kern); } float sf = (width - swidth - w) / minus.getWidth(); hb.add(new SpaceAtom(TeXConstants.UNIT_MU, -2f * sf, 0, 0).createBox(env)); hb.add(new ScaleAtom(MINUS, sf, 1).createBox(env)); if (left) { hb.add(0, new SpaceAtom(TeXConstants.UNIT_MU, -3.5f, 0, 0).createBox(env)); hb.add(0, arr); } else { hb.add(new SpaceAtom(TeXConstants.UNIT_MU, -2f * sf - 2f, 0, 0).createBox(env)); hb.add(arr); } hb.setDepth(d / 2); hb.setHeight(h); return hb; } public static Box create(TeXEnvironment env, float width) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Box left = LEFT.createBox(env); Box right = RIGHT.createBox(env); float swidth = left.getWidth() + right.getWidth(); if (width < swidth) { HorizontalBox hb = new HorizontalBox(left); hb.add(new StrutBox(-Math.min(swidth - width, left.getWidth()), 0, 0, 0)); hb.add(right); return hb; } Box minus = new SmashedAtom(MINUS, "").createBox(env); Box kern = new SpaceAtom(TeXConstants.UNIT_MU, -3.4f, 0, 0).createBox(env); float mwidth = minus.getWidth() + kern.getWidth(); swidth += 2 * kern.getWidth(); HorizontalBox hb = new HorizontalBox(); float w; for (w = 0; w < width - swidth - mwidth; w += mwidth) { hb.add(minus); hb.add(kern); } hb.add(new ScaleBox(minus, (width - swidth - w) / minus.getWidth(), 1)); hb.add(0, kern); hb.add(0, left); hb.add(kern); hb.add(right); return hb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/Char.java0000644000175000017500000000434312275735442025761 0ustar sylvestresylvestre/* Char.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; /** * Represents a character together with its font, font ID and metric information. */ public class Char { private final char c; private final Font font; private final Metrics m; private final int fontCode; public Char(char c, Font f, int fc, Metrics m) { font = f; fontCode = fc; this.c = c; this.m = m; } public CharFont getCharFont() { return new CharFont(c, fontCode); } public char getChar() { return c; } public Font getFont() { return font; } public int getFontCode() { return fontCode; } public float getWidth() { return m.getWidth(); } public float getItalic() { return m.getItalic(); } public float getHeight() { return m.getHeight(); } public float getDepth() { return m.getDepth(); } public Metrics getMetrics() { return m; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/DefaultTeXFontParser.java0000644000175000017500000006450312275735442031121 0ustar sylvestresylvestre/* DefaultTeXFontParser.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.lang.reflect.Method; import java.awt.Font; import java.io.IOException; import java.io.InputStream; import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.awt.GraphicsEnvironment; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Attr; import org.w3c.dom.Node; /** * Parses the font information from an XML-file. */ public class DefaultTeXFontParser { /** * if the register font cannot be found, we display an error message * but we do it only once */ private static boolean registerFontExceptionDisplayed = false; private static boolean shouldRegisterFonts = true; private static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); private static interface CharChildParser { // NOPMD public void parse(Element el, char ch, FontInfo info) throws XMLResourceParseException; } private static class ExtensionParser implements CharChildParser { ExtensionParser() { // avoid generation of access class } public void parse(Element el, char ch, FontInfo info) throws ResourceParseException { int[] extensionChars = new int[4]; // get required integer attributes extensionChars[DefaultTeXFont.REP] = DefaultTeXFontParser .getIntAndCheck("rep", el); // get optional integer attributes extensionChars[DefaultTeXFont.TOP] = DefaultTeXFontParser .getOptionalInt("top", el, DefaultTeXFont.NONE); extensionChars[DefaultTeXFont.MID] = DefaultTeXFontParser .getOptionalInt("mid", el, DefaultTeXFont.NONE); extensionChars[DefaultTeXFont.BOT] = DefaultTeXFontParser .getOptionalInt("bot", el, DefaultTeXFont.NONE); // parsing OK, add extension info info.setExtension(ch, extensionChars); } } private static class KernParser implements CharChildParser { KernParser() { // avoid generation of access class } public void parse(Element el, char ch, FontInfo info) throws ResourceParseException { // get required integer attribute int code = DefaultTeXFontParser.getIntAndCheck("code", el); // get required float attribute float kernAmount = DefaultTeXFontParser.getFloatAndCheck("val", el); // parsing OK, add kern info info.addKern(ch, (char) code, kernAmount); } } private static class LigParser implements CharChildParser { LigParser() { // avoid generation of access class } public void parse(Element el, char ch, FontInfo info) throws ResourceParseException { // get required integer attributes int code = DefaultTeXFontParser.getIntAndCheck("code", el); int ligCode = DefaultTeXFontParser.getIntAndCheck("ligCode", el); // parsing OK, add ligature info info.addLigature(ch, (char) code, (char) ligCode); } } private static class NextLargerParser implements CharChildParser { NextLargerParser() { // avoid generation of access class } public void parse(Element el, char ch, FontInfo info) throws ResourceParseException { // get required integer attributes String fontId = DefaultTeXFontParser.getAttrValueAndCheckIfNotNull("fontId", el); int code = DefaultTeXFontParser.getIntAndCheck("code", el); // parsing OK, add "next larger" info info.setNextLarger(ch, (char) code, Font_ID.indexOf(fontId)); } } public static final String RESOURCE_NAME = "DefaultTeXFont.xml"; public static final String STYLE_MAPPING_EL = "TextStyleMapping"; public static final String SYMBOL_MAPPING_EL = "SymbolMapping"; public static final String GEN_SET_EL = "GeneralSettings"; public static final String MUFONTID_ATTR = "mufontid"; public static final String SPACEFONTID_ATTR = "spacefontid"; protected static ArrayList Font_ID = new ArrayList(); private static Map rangeTypeMappings = new HashMap(); private static Map charChildParsers = new HashMap(); private Map parsedTextStyles; private Element root; private Object base = null; static { // string-to-constant mappings setRangeTypeMappings(); // parsers for the child elements of a "Char"-element setCharChildParsers(); } public DefaultTeXFontParser() throws ResourceParseException { this(DefaultTeXFontParser.class.getResourceAsStream(RESOURCE_NAME), RESOURCE_NAME); } public DefaultTeXFontParser(InputStream file, String name) throws ResourceParseException { factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); try { root = factory.newDocumentBuilder().parse(file).getDocumentElement(); } catch (Exception e) { // JDOMException or IOException throw new XMLResourceParseException(name, e); } } public DefaultTeXFontParser(Object base , InputStream file, String name) throws ResourceParseException { this.base = base; factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); try { root = factory.newDocumentBuilder().parse(file).getDocumentElement(); } catch (Exception e) { // JDOMException or IOException throw new XMLResourceParseException(name, e); } } private static void setCharChildParsers() { charChildParsers.put("Kern", new KernParser()); charChildParsers.put("Lig", new LigParser()); charChildParsers.put("NextLarger", new NextLargerParser()); charChildParsers.put("Extension", new ExtensionParser()); } public FontInfo[] parseFontDescriptions(FontInfo[] fi, InputStream file, String name) throws ResourceParseException { if (file == null) { return fi; } ArrayList res = new ArrayList(Arrays.asList(fi)); Element font; try { font = factory.newDocumentBuilder().parse(file).getDocumentElement(); } catch (Exception e) { throw new XMLResourceParseException("Cannot find the file " + name + "!" + e.toString()); } String fontName = getAttrValueAndCheckIfNotNull("name", font); // get required integer attribute String fontId = getAttrValueAndCheckIfNotNull("id", font); if (Font_ID.indexOf(fontId) < 0) Font_ID.add(fontId); else throw new FontAlreadyLoadedException("Font " + fontId + " is already loaded !"); // get required real attributes float space = getFloatAndCheck("space", font); float xHeight = getFloatAndCheck("xHeight", font); float quad = getFloatAndCheck("quad", font); // get optional integer attribute int skewChar = getOptionalInt("skewChar", font, -1); // get optional boolean for unicode int unicode = getOptionalInt("unicode", font, 0); // get different versions of a font String bold = null; try { bold = getAttrValueAndCheckIfNotNull("boldVersion", font); } catch (ResourceParseException e) {} String roman = null; try { roman = getAttrValueAndCheckIfNotNull("romanVersion", font); } catch (ResourceParseException e) {} String ss = null; try { ss = getAttrValueAndCheckIfNotNull("ssVersion", font); } catch (ResourceParseException e) {} String tt = null; try { tt = getAttrValueAndCheckIfNotNull("ttVersion", font); } catch (ResourceParseException e) {} String it = null; try { it = getAttrValueAndCheckIfNotNull("itVersion", font); } catch (ResourceParseException e) {} String path = name.substring(0, name.lastIndexOf("/") + 1) + fontName; // create FontInfo-object FontInfo info = new FontInfo(Font_ID.indexOf(fontId), base, path, fontName, unicode, xHeight, space, quad, bold, roman, ss, tt, it); if (skewChar != -1) // attribute set info.setSkewChar((char) skewChar); // process all "Char"-elements NodeList listF = font.getElementsByTagName("Char"); for (int j = 0; j < listF.getLength(); j++) processCharElement((Element) listF.item(j), info); // parsing OK, add to table res.add(info); for (int i = 0; i < res.size(); i++) { FontInfo fin = res.get(i); fin.setBoldId(Font_ID.indexOf(fin.boldVersion)); fin.setRomanId(Font_ID.indexOf(fin.romanVersion)); fin.setSsId(Font_ID.indexOf(fin.ssVersion)); fin.setTtId(Font_ID.indexOf(fin.ttVersion)); fin.setItId(Font_ID.indexOf(fin.itVersion)); } parsedTextStyles = parseStyleMappings(); return res.toArray(fi); } public FontInfo[] parseFontDescriptions(FontInfo[] fi) throws ResourceParseException { Element fontDescriptions = (Element)root.getElementsByTagName("FontDescriptions").item(0); if (fontDescriptions != null) { // element present NodeList list = fontDescriptions.getElementsByTagName("Metrics"); for (int i = 0; i < list.getLength(); i++) { // get required string attribute String include = getAttrValueAndCheckIfNotNull("include", (Element)list.item(i)); if (base == null) { fi = parseFontDescriptions(fi, DefaultTeXFontParser.class.getResourceAsStream(include), include); } else { fi = parseFontDescriptions(fi, base.getClass().getResourceAsStream(include), include); } } } return fi; } protected void parseExtraPath() throws ResourceParseException { Element syms = (Element)root.getElementsByTagName("TeXSymbols").item(0); if (syms != null) { // element present // get required string attribute String include = getAttrValueAndCheckIfNotNull("include", syms); SymbolAtom.addSymbolAtom(base.getClass().getResourceAsStream(include), include); } Element settings = (Element)root.getElementsByTagName("FormulaSettings").item(0); if (settings != null) { // element present // get required string attribute String include = getAttrValueAndCheckIfNotNull("include", settings); TeXFormula.addSymbolMappings(base.getClass().getResourceAsStream(include), include); } } private static void processCharElement(Element charElement, FontInfo info) throws ResourceParseException { // retrieve required integer attribute char ch = (char) getIntAndCheck("code", charElement); // retrieve optional float attributes float[] metrics = new float[4]; metrics[DefaultTeXFont.WIDTH] = getOptionalFloat("width", charElement, 0); metrics[DefaultTeXFont.HEIGHT] = getOptionalFloat("height", charElement, 0); metrics[DefaultTeXFont.DEPTH] = getOptionalFloat("depth", charElement, 0); metrics[DefaultTeXFont.IT] = getOptionalFloat("italic", charElement, 0); // set metrics info.setMetrics(ch, metrics); // process children NodeList list = charElement.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if (node.getNodeType() != Node.TEXT_NODE) { Element el = (Element)node; Object parser = charChildParsers.get(el.getTagName()); if (parser == null) // unknown element throw new XMLResourceParseException(RESOURCE_NAME + ": a -element has an unknown child element '" + el.getTagName() + "'!"); else // process the child element ((CharChildParser) parser).parse(el, ch, info); } } } public static void registerFonts(boolean b) { shouldRegisterFonts = b; } public static Font createFont(String name) throws ResourceParseException { return createFont(DefaultTeXFontParser.class.getResourceAsStream(name), name); } public static Font createFont(InputStream fontIn, String name) throws ResourceParseException { try { Font f = Font.createFont(Font.TRUETYPE_FONT, fontIn).deriveFont(TeXFormula.PIXELS_PER_POINT); GraphicsEnvironment graphicEnv = GraphicsEnvironment.getLocalGraphicsEnvironment(); /** * The following fails under java 1.5 * graphicEnv.registerFont(f); * dynamic load then */ if (shouldRegisterFonts) { try { Method registerFontMethod = graphicEnv.getClass().getMethod("registerFont", new Class[] { Font.class }); if ((Boolean) registerFontMethod.invoke(graphicEnv, new Object[] { f }) == Boolean.FALSE) { System.err.println("Cannot register the font " + f.getFontName()); } } catch (Exception ex) { if (!registerFontExceptionDisplayed) { System.err.println("Warning: Jlatexmath: Could not access to registerFont. Please update to java 6"); registerFontExceptionDisplayed = true; } } } return f; } catch (Exception e) { throw new XMLResourceParseException(RESOURCE_NAME + ": error reading font '" + name + "'. Error message: " + e.getMessage()); } finally { try { if (fontIn != null) fontIn.close(); } catch (IOException ioex) { throw new RuntimeException("Close threw exception", ioex); } } } public Map parseSymbolMappings() throws ResourceParseException { Map res = new HashMap(); Element symbolMappings = (Element)root.getElementsByTagName("SymbolMappings").item(0); if (symbolMappings == null) // "SymbolMappings" is required! throw new XMLResourceParseException(RESOURCE_NAME, "SymbolMappings"); else { // element present // iterate all mappings NodeList list = symbolMappings.getElementsByTagName("Mapping"); for (int i = 0; i < list.getLength(); i++) { String include = getAttrValueAndCheckIfNotNull("include", (Element)list.item(i)); Element map; try { if (base == null) { map = factory.newDocumentBuilder().parse(DefaultTeXFontParser.class.getResourceAsStream(include)).getDocumentElement(); } else { map = factory.newDocumentBuilder().parse(base.getClass().getResourceAsStream(include)).getDocumentElement(); } } catch (Exception e) { throw new XMLResourceParseException("Cannot find the file " + include + "!"); } NodeList listM = map.getElementsByTagName(SYMBOL_MAPPING_EL); for (int j = 0; j < listM.getLength(); j++) { Element mapping = (Element)listM.item(j); // get string attribute String symbolName = getAttrValueAndCheckIfNotNull("name", mapping); // get integer attributes int ch = getIntAndCheck("ch", mapping); String fontId = getAttrValueAndCheckIfNotNull("fontId", mapping); // put mapping in table String boldFontId = null; try { boldFontId = getAttrValueAndCheckIfNotNull("boldId", mapping); } catch (ResourceParseException e) {} if (boldFontId == null) { res.put(symbolName, new CharFont((char) ch, Font_ID.indexOf(fontId))); } else { res.put(symbolName, new CharFont((char) ch, Font_ID.indexOf(fontId), Font_ID.indexOf(boldFontId))); } } } return res; } } public String[] parseDefaultTextStyleMappings() throws ResourceParseException { String[] res = new String[4]; Element defaultTextStyleMappings = (Element)root .getElementsByTagName("DefaultTextStyleMapping").item(0); if (defaultTextStyleMappings == null) return res; else { // element present // iterate all mappings NodeList list = defaultTextStyleMappings.getElementsByTagName("MapStyle"); for (int i = 0; i < list.getLength(); i++) { Element mapping = (Element)list.item(i); // get range name and check if it's valid String code = getAttrValueAndCheckIfNotNull("code", mapping); Object codeMapping = rangeTypeMappings.get(code); if (codeMapping == null) // unknown range name throw new XMLResourceParseException(RESOURCE_NAME, "MapStyle", "code", "contains an unknown \"range name\" '" + code + "'!"); // get mapped style and check if it exists String textStyleName = getAttrValueAndCheckIfNotNull("textStyle", mapping); Object styleMapping = parsedTextStyles.get(textStyleName); if (styleMapping == null) // unknown text style throw new XMLResourceParseException(RESOURCE_NAME, "MapStyle", "textStyle", "contains an unknown text style '" + textStyleName + "'!"); // now check if the range is defined within the mapped text style CharFont[] charFonts = parsedTextStyles.get(textStyleName); int index = ((Integer) codeMapping).intValue(); if (charFonts[index] == null) // range not defined throw new XMLResourceParseException(RESOURCE_NAME + ": the default text style mapping '" + textStyleName + "' for the range '" + code + "' contains no mapping for that range!"); else // everything OK, put mapping in table res[index] = textStyleName; } } return res; } public Map parseParameters() throws ResourceParseException { Map res = new HashMap(); Element parameters = (Element)root.getElementsByTagName("Parameters").item(0); if (parameters == null) // "Parameters" is required! throw new XMLResourceParseException(RESOURCE_NAME, "Parameters"); else { // element present // iterate all attributes NamedNodeMap list = parameters.getAttributes(); for (int i = 0; i < list.getLength(); i++) { String name = ((Attr)list.item(i)).getName(); // set float value (if valid) res.put(name, new Float(getFloatAndCheck(name, parameters))); } return res; } } public Map parseGeneralSettings() throws ResourceParseException { Map res = new HashMap(); // TODO: must this be 'Number' ? Element generalSettings = (Element)root.getElementsByTagName("GeneralSettings").item(0); if (generalSettings == null) // "GeneralSettings" is required! throw new XMLResourceParseException(RESOURCE_NAME, "GeneralSettings"); else { // element present // set required int values (if valid) res.put(MUFONTID_ATTR, Font_ID.indexOf(getAttrValueAndCheckIfNotNull(MUFONTID_ATTR, generalSettings))); // autoboxing res.put(SPACEFONTID_ATTR, Font_ID.indexOf(getAttrValueAndCheckIfNotNull(SPACEFONTID_ATTR, generalSettings))); // autoboxing // set required float values (if valid) res.put("scriptfactor", getFloatAndCheck("scriptfactor", generalSettings)); // autoboxing res.put("scriptscriptfactor", getFloatAndCheck( "scriptscriptfactor", generalSettings)); // autoboxing } return res; } public Map parseTextStyleMappings() { return parsedTextStyles; } private Map parseStyleMappings() throws ResourceParseException { Map res = new HashMap(); Element textStyleMappings = (Element)root.getElementsByTagName("TextStyleMappings").item(0); if (textStyleMappings == null) return res; else { // element present // iterate all mappings NodeList list = textStyleMappings.getElementsByTagName(STYLE_MAPPING_EL); for (int i = 0; i < list.getLength(); i++) { Element mapping = (Element)list.item(i); // get required string attribute String textStyleName = getAttrValueAndCheckIfNotNull("name", mapping); String boldFontId = null; try { boldFontId = getAttrValueAndCheckIfNotNull("bold", mapping); } catch (ResourceParseException e) {} NodeList mapRangeList = mapping.getElementsByTagName("MapRange"); // iterate all mapping ranges CharFont[] charFonts = new CharFont[4]; for (int j = 0; j < mapRangeList.getLength(); j++) { Element mapRange = (Element)mapRangeList.item(j); // get required integer attributes String fontId = getAttrValueAndCheckIfNotNull("fontId", mapRange); int ch = getIntAndCheck("start", mapRange); // get required string attribute and check if it's a known range String code = getAttrValueAndCheckIfNotNull("code", mapRange); Object codeMapping = rangeTypeMappings.get(code); if (codeMapping == null) throw new XMLResourceParseException(RESOURCE_NAME, "MapRange", "code", "contains an unknown \"range name\" '" + code + "'!"); else if (boldFontId == null) charFonts[((Integer) codeMapping).intValue()] = new CharFont((char) ch, Font_ID.indexOf(fontId)); else charFonts[((Integer) codeMapping).intValue()] = new CharFont((char) ch, Font_ID.indexOf(fontId), Font_ID.indexOf(boldFontId)); } res.put(textStyleName, charFonts); } } return res; } private static void setRangeTypeMappings() { rangeTypeMappings.put("numbers", DefaultTeXFont.NUMBERS); // autoboxing rangeTypeMappings.put("capitals", DefaultTeXFont.CAPITALS); // autoboxing rangeTypeMappings.put("small", DefaultTeXFont.SMALL); // autoboxing rangeTypeMappings.put("unicode", DefaultTeXFont.UNICODE); // autoboxing } private static String getAttrValueAndCheckIfNotNull(String attrName, Element element) throws ResourceParseException { String attrValue = element.getAttribute(attrName); if (attrValue.equals("")) throw new XMLResourceParseException(RESOURCE_NAME, element.getTagName(), attrName, null); return attrValue; } public static float getFloatAndCheck(String attrName, Element element) throws ResourceParseException { String attrValue = getAttrValueAndCheckIfNotNull(attrName, element); // try parsing string to float value float res = 0; try { res = (float) Double.parseDouble(attrValue); } catch (NumberFormatException e) { throw new XMLResourceParseException(RESOURCE_NAME, element.getTagName(), attrName, "has an invalid real value!"); } // parsing OK return res; } public static int getIntAndCheck(String attrName, Element element) throws ResourceParseException { String attrValue = getAttrValueAndCheckIfNotNull(attrName, element); // try parsing string to integer value int res = 0; try { res = Integer.parseInt(attrValue); } catch (NumberFormatException e) { throw new XMLResourceParseException(RESOURCE_NAME, element.getTagName(), attrName, "has an invalid integer value!"); } // parsing OK return res; } public static int getOptionalInt(String attrName, Element element, int defaultValue) throws ResourceParseException { String attrValue = element.getAttribute(attrName); if (attrValue.equals("")) // attribute not present return defaultValue; else { // try parsing string to integer value int res = 0; try { res = Integer.parseInt(attrValue); } catch (NumberFormatException e) { throw new XMLResourceParseException(RESOURCE_NAME, element .getTagName(), attrName, "has an invalid integer value!"); } // parsing OK return res; } } public static float getOptionalFloat(String attrName, Element element, float defaultValue) throws ResourceParseException { String attrValue = element.getAttribute(attrName); if (attrValue.equals("")) // attribute not present return defaultValue; else { // try parsing string to float value float res = 0; try { res = (float) Double.parseDouble(attrValue); } catch (NumberFormatException e) { throw new XMLResourceParseException(RESOURCE_NAME, element .getTagName(), attrName, "has an invalid float value!"); } // parsing OK return res; } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/InvalidDelimiterException.java0000644000175000017500000000423412275735442032207 0ustar sylvestresylvestre/* InvalidDelimiterException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that a symbol, that was not defined as a delimiter, was used * as a delimiter. * * @author Kurt Vermeulen */ public class InvalidDelimiterException extends JMathTeXException { protected InvalidDelimiterException(String symbolName) { super("The symbol with the name '" + symbolName + "' is not defined as a delimiter (" + TeXSymbolParser.DELIMITER_ATTR + "='true') in '" + TeXSymbolParser.RESOURCE_NAME + "'!"); } protected InvalidDelimiterException(char ch, String symbolName) { super("The character '" + ch + "' is mapped to a symbol with the name '" + symbolName + "', but that symbol is not defined as a delimiter (" + TeXSymbolParser.DELIMITER_ATTR + "='true') in '" + TeXSymbolParser.RESOURCE_NAME + "'!"); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/Atom.java0000644000175000017500000000765612275735442026016 0ustar sylvestresylvestre/* Atom.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; /** * An abstract superclass for all logical mathematical constructions that can be * a part of a TeXFormula. All subclasses must implement the abstract * {@link #createBox(TeXEnvironment)} method that transforms this logical unit into * a concrete box (that can be painted). They also must define their type, used for * determining what glue to use between adjacent atoms in a "row construction". That can * be one single type by asigning one of the type constants to the {@link #type} field. * But they can also be defined as having two types: a "left type" and a "right type". * This can be done by implementing the methods {@link #getLeftType()} and * {@link #getRightType()}. * The left type will then be used for determining the glue between this atom and the * previous one (in a row, if any) and the right type for the glue between this atom and * the following one (in a row, if any). * * @author Kurt Vermeulen */ public abstract class Atom implements Cloneable { /** * The type of the atom (default value: ordinary atom) */ public int type = TeXConstants.TYPE_ORDINARY; public int type_limits = TeXConstants.SCRIPT_NOLIMITS; public int alignment = -1; /** * Convert this atom into a {@link Box}, using properties set by "parent" * atoms, like the TeX style, the last used font, color settings, ... * * @param env the current environment settings * @return the resulting box. */ public abstract Box createBox(TeXEnvironment env); /** * Get the type of the leftermost child atom. Most atoms have no child atoms, * so the "left type" and the "right type" are the same: the atom's type. This * also is the default implementation. * But Some atoms are composed of child atoms put one after another in a * horizontal row. These atoms must override this method. * * @return the type of the leftermost child atom */ public int getLeftType() { return type; } /** * Get the type of the rightermost child atom. Most atoms have no child atoms, * so the "left type" and the "right type" are the same: the atom's type. This * also is the default implementation. * But Some atoms are composed of child atoms put one after another in a * horizontal row. These atoms must override this method. * * @return the type of the rightermost child atom */ public int getRightType() { return type; } public Atom clone() { try { return (Atom)super.clone(); } catch (Exception e) { return null; } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FBoxAtom.java0000644000175000017500000000426112275735442026562 0ustar sylvestresylvestre/* FBoxAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; /** * An atom representing a boxed base atom. */ public class FBoxAtom extends Atom { public float INTERSPACE = 0.65f; // base atom protected final Atom base; protected Color bg = null, line = null; public FBoxAtom(Atom base) { if (base == null) this.base = new RowAtom(); // empty base else { this.base = base; this.type = base.type; } } public FBoxAtom(Atom base, Color bg, Color line) { this(base); this.bg = bg; this.line = line; } public Box createBox(TeXEnvironment env) { Box bbase = base.createBox(env); float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); float space = INTERSPACE * SpaceAtom.getFactor(TeXConstants.UNIT_EM, env); if (bg == null) { return new FramedBox(bbase, drt, space); } else { env.isColored = true; return new FramedBox(bbase, drt, space, line, bg); } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/PredefinedTeXFormulas.java0000644000175000017500000003076112275735442031306 0ustar sylvestresylvestre/* PredefinedTeXFormulas.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; final class PredefinedTeXFormulas { PredefinedTeXFormulas() { } static { TeXFormula.predefinedTeXFormulasAsString.put("qquad", "\\quad\\quad"); TeXFormula.predefinedTeXFormulasAsString.put(" ", "\\nbsp"); TeXFormula.predefinedTeXFormulasAsString.put("ne", "\\not\\equals"); TeXFormula.predefinedTeXFormulasAsString.put("neq", "\\not\\equals"); TeXFormula.predefinedTeXFormulasAsString.put("ldots", "\\mathinner{\\ldotp\\ldotp\\ldotp}"); TeXFormula.predefinedTeXFormulasAsString.put("dotsc", "\\ldots"); TeXFormula.predefinedTeXFormulasAsString.put("dots", "\\ldots"); TeXFormula.predefinedTeXFormulasAsString.put("cdots", "\\mathinner{\\cdotp\\cdotp\\cdotp}"); TeXFormula.predefinedTeXFormulasAsString.put("dotsb", "\\cdots"); TeXFormula.predefinedTeXFormulasAsString.put("dotso", "\\ldots"); TeXFormula.predefinedTeXFormulasAsString.put("dotsi", "\\!\\cdots"); TeXFormula.predefinedTeXFormulasAsString.put("bowtie", "\\mathrel\\triangleright\\joinrel\\mathrel\\triangleleft"); TeXFormula.predefinedTeXFormulasAsString.put("models", "\\mathrel|\\joinrel\\equals"); TeXFormula.predefinedTeXFormulasAsString.put("Doteq", "\\doteqdot"); TeXFormula.predefinedTeXFormulasAsString.put("{", "\\lbrace"); TeXFormula.predefinedTeXFormulasAsString.put("}", "\\rbrace"); TeXFormula.predefinedTeXFormulasAsString.put("|", "\\Vert"); TeXFormula.predefinedTeXFormulasAsString.put("&", "\\textampersand"); TeXFormula.predefinedTeXFormulasAsString.put("%", "\\textpercent"); TeXFormula.predefinedTeXFormulasAsString.put("_", "\\underscore"); TeXFormula.predefinedTeXFormulasAsString.put("$", "\\textdollar"); TeXFormula.predefinedTeXFormulasAsString.put("@", "\\jlatexmatharobase"); TeXFormula.predefinedTeXFormulasAsString.put("#", "\\jlatexmathsharp"); TeXFormula.predefinedTeXFormulasAsString.put("relbar", "\\mathrel{\\smash-}"); TeXFormula.predefinedTeXFormulasAsString.put("hookrightarrow", "\\lhook\\joinrel\\joinrel\\joinrel\\rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("hookleftarrow", "\\leftarrow\\joinrel\\joinrel\\joinrel\\rhook"); TeXFormula.predefinedTeXFormulasAsString.put("Longrightarrow", "\\Relbar\\joinrel\\Rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("longrightarrow", "\\relbar\\joinrel\\rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("Longleftarrow", "\\Leftarrow\\joinrel\\Relbar"); TeXFormula.predefinedTeXFormulasAsString.put("longleftarrow", "\\leftarrow\\joinrel\\relbar"); TeXFormula.predefinedTeXFormulasAsString.put("Longleftrightarrow", "\\Leftarrow\\joinrel\\Rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("longleftrightarrow", "\\leftarrow\\joinrel\\rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("iff", "\\;\\Longleftrightarrow\\;"); TeXFormula.predefinedTeXFormulasAsString.put("implies", "\\;\\Longrightarrow\\;"); TeXFormula.predefinedTeXFormulasAsString.put("impliedby", "\\;\\Longleftarrow\\;"); TeXFormula.predefinedTeXFormulasAsString.put("mapsto", "\\mapstochar\\rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("longmapsto", "\\mapstochar\\longrightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("log", "\\mathop{\\mathrm{log}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("lg", "\\mathop{\\mathrm{lg}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("ln", "\\mathop{\\mathrm{ln}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("ln", "\\mathop{\\mathrm{ln}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("lim", "\\mathop{\\mathrm{lim}}"); TeXFormula.predefinedTeXFormulasAsString.put("limsup", "\\mathop{\\mathrm{lim\\,sup}}"); TeXFormula.predefinedTeXFormulasAsString.put("liminf", "\\mathop{\\mathrm{lim\\,inf}}"); TeXFormula.predefinedTeXFormulasAsString.put("injlim", "\\mathop{\\mathrm{inj\\,lim}}"); TeXFormula.predefinedTeXFormulasAsString.put("projlim", "\\mathop{\\mathrm{proj\\,lim}}"); TeXFormula.predefinedTeXFormulasAsString.put("varinjlim", "\\mathop{\\underrightarrow{\\mathrm{lim}}}"); TeXFormula.predefinedTeXFormulasAsString.put("varprojlim", "\\mathop{\\underleftarrow{\\mathrm{lim}}}"); TeXFormula.predefinedTeXFormulasAsString.put("varliminf", "\\mathop{\\underline{\\mathrm{lim}}}"); TeXFormula.predefinedTeXFormulasAsString.put("varlimsup", "\\mathop{\\overline{\\mathrm{lim}}}"); TeXFormula.predefinedTeXFormulasAsString.put("sin", "\\mathop{\\mathrm{sin}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("arcsin", "\\mathop{\\mathrm{arcsin}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("sinh", "\\mathop{\\mathrm{sinh}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("cos", "\\mathop{\\mathrm{cos}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("arccos", "\\mathop{\\mathrm{arccos}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("cot", "\\mathop{\\mathrm{cot}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("arccot", "\\mathop{\\mathrm{arccot}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("cosh", "\\mathop{\\mathrm{cosh}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("tan", "\\mathop{\\mathrm{tan}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("arctan", "\\mathop{\\mathrm{arctan}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("tanh", "\\mathop{\\mathrm{tanh}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("coth", "\\mathop{\\mathrm{coth}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("sec", "\\mathop{\\mathrm{sec}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("arcsec", "\\mathop{\\mathrm{arcsec}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("arccsc", "\\mathop{\\mathrm{arccsc}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("sech", "\\mathop{\\mathrm{sech}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("csc", "\\mathop{\\mathrm{csc}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("csch", "\\mathop{\\mathrm{csch}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("max", "\\mathop{\\mathrm{max}}"); TeXFormula.predefinedTeXFormulasAsString.put("min", "\\mathop{\\mathrm{min}}"); TeXFormula.predefinedTeXFormulasAsString.put("sup", "\\mathop{\\mathrm{sup}}"); TeXFormula.predefinedTeXFormulasAsString.put("inf", "\\mathop{\\mathrm{inf}}"); TeXFormula.predefinedTeXFormulasAsString.put("arg", "\\mathop{\\mathrm{arg}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("ker", "\\mathop{\\mathrm{ker}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("dim", "\\mathop{\\mathrm{dim}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("hom", "\\mathop{\\mathrm{hom}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("det", "\\mathop{\\mathrm{det}}"); TeXFormula.predefinedTeXFormulasAsString.put("exp", "\\mathop{\\mathrm{exp}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("Pr", "\\mathop{\\mathrm{Pr}}"); TeXFormula.predefinedTeXFormulasAsString.put("gcd", "\\mathop{\\mathrm{gcd}}"); TeXFormula.predefinedTeXFormulasAsString.put("deg", "\\mathop{\\mathrm{deg}}\\nolimits"); TeXFormula.predefinedTeXFormulasAsString.put("bmod", "\\:\\mathbin{\\mathrm{mod}}\\:"); TeXFormula.predefinedTeXFormulasAsString.put("JLaTeXMath", "\\mathbb{J}\\LaTeX Math"); TeXFormula.predefinedTeXFormulasAsString.put("Mapsto", "\\Mapstochar\\Rightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("mapsfrom", "\\leftarrow\\mapsfromchar"); TeXFormula.predefinedTeXFormulasAsString.put("Mapsfrom", "\\Leftarrow\\Mapsfromchar"); TeXFormula.predefinedTeXFormulasAsString.put("Longmapsto", "\\Mapstochar\\Longrightarrow"); TeXFormula.predefinedTeXFormulasAsString.put("longmapsfrom", "\\longleftarrow\\mapsfromchar"); TeXFormula.predefinedTeXFormulasAsString.put("Longmapsfrom", "\\Longleftarrow\\Mapsfromchar"); TeXFormula.predefinedTeXFormulasAsString.put("arrowvert", "\\vert"); TeXFormula.predefinedTeXFormulasAsString.put("Arrowvert", "\\Vert"); TeXFormula.predefinedTeXFormulasAsString.put("aa", "\\mathring{a}"); TeXFormula.predefinedTeXFormulasAsString.put("AA", "\\mathring{A}"); TeXFormula.predefinedTeXFormulasAsString.put("ddag", "\\ddagger"); TeXFormula.predefinedTeXFormulasAsString.put("dag", "\\dagger"); TeXFormula.predefinedTeXFormulasAsString.put("Doteq", "\\doteqdot"); TeXFormula.predefinedTeXFormulasAsString.put("doublecup", "\\Cup"); TeXFormula.predefinedTeXFormulasAsString.put("doublecap", "\\Cap"); TeXFormula.predefinedTeXFormulasAsString.put("llless", "\\lll"); TeXFormula.predefinedTeXFormulasAsString.put("gggtr", "\\ggg"); TeXFormula.predefinedTeXFormulasAsString.put("Alpha", "\\mathord{\\mathrm{A}}"); TeXFormula.predefinedTeXFormulasAsString.put("Beta", "\\mathord{\\mathrm{B}}"); TeXFormula.predefinedTeXFormulasAsString.put("Epsilon", "\\mathord{\\mathrm{E}}"); TeXFormula.predefinedTeXFormulasAsString.put("Zeta", "\\mathord{\\mathrm{Z}}"); TeXFormula.predefinedTeXFormulasAsString.put("Eta", "\\mathord{\\mathrm{H}}"); TeXFormula.predefinedTeXFormulasAsString.put("Iota", "\\mathord{\\mathrm{I}}"); TeXFormula.predefinedTeXFormulasAsString.put("Kappa", "\\mathord{\\mathrm{K}}"); TeXFormula.predefinedTeXFormulasAsString.put("Mu", "\\mathord{\\mathrm{M}}"); TeXFormula.predefinedTeXFormulasAsString.put("Nu", "\\mathord{\\mathrm{N}}"); TeXFormula.predefinedTeXFormulasAsString.put("Omicron", "\\mathord{\\mathrm{O}}"); TeXFormula.predefinedTeXFormulasAsString.put("Rho", "\\mathord{\\mathrm{P}}"); TeXFormula.predefinedTeXFormulasAsString.put("Tau", "\\mathord{\\mathrm{T}}"); TeXFormula.predefinedTeXFormulasAsString.put("Chi", "\\mathord{\\mathrm{X}}"); TeXFormula.predefinedTeXFormulasAsString.put("hdots", "\\ldots"); TeXFormula.predefinedTeXFormulasAsString.put("restriction", "\\upharpoonright"); TeXFormula.predefinedTeXFormulasAsString.put("celsius", "\\mathord{{}^\\circ\\mathrm{C}}"); TeXFormula.predefinedTeXFormulasAsString.put("micro", "\\textmu"); TeXFormula.predefinedTeXFormulasAsString.put("marker", "\\kern{0.25ex}\\rule{0.5ex}{1.2ex}\\kern{0.25ex}"); TeXFormula.predefinedTeXFormulasAsString.put("hybull", "\\rule[0.6ex]{1ex}{0.2ex}"); TeXFormula.predefinedTeXFormulasAsString.put("block", "\\rule{1ex}{1.2ex}"); TeXFormula.predefinedTeXFormulasAsString.put("uhblk", "\\rule[0.6ex]{1ex}{0.6ex}"); TeXFormula.predefinedTeXFormulasAsString.put("lhblk", "\\rule{1ex}{0.6ex}"); TeXFormula.predefinedTeXFormulasAsString.put("notin", "\\not\\in"); TeXFormula.predefinedTeXFormulasAsString.put("rVert", "\\Vert"); TeXFormula.predefinedTeXFormulasAsString.put("lVert", "\\Vert"); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/GlueSettingsParser.java0000644000175000017500000002117712275735442030702 0ustar sylvestresylvestre/* GlueSettingsParser.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /** * Parses the glue settings (different types and rules) from an XML-file. */ public class GlueSettingsParser { private static final String RESOURCE_NAME = "GlueSettings.xml"; private final Map typeMappings = new HashMap(); private final Map glueTypeMappings = new HashMap(); private Glue[] glueTypes; private final Map styleMappings = new HashMap(); private Element root; public GlueSettingsParser() throws ResourceParseException { try { setTypeMappings(); setStyleMappings(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); root = factory.newDocumentBuilder().parse(GlueSettingsParser.class.getResourceAsStream(RESOURCE_NAME)).getDocumentElement(); parseGlueTypes(); } catch (Exception e) { // JDOMException or IOException throw new XMLResourceParseException(RESOURCE_NAME, e); } } private void setStyleMappings() { styleMappings.put("display", TeXConstants.STYLE_DISPLAY / 2); styleMappings.put("text", TeXConstants.STYLE_TEXT / 2); styleMappings.put("script", TeXConstants.STYLE_SCRIPT / 2); styleMappings.put("script_script", TeXConstants.STYLE_SCRIPT_SCRIPT / 2); // autoboxing } private void parseGlueTypes() throws ResourceParseException { List glueTypesList = new ArrayList (); Element types = (Element)root.getElementsByTagName("GlueTypes").item(0); int defaultIndex = -1; int index = 0; if (types != null) { // element present NodeList list = types.getElementsByTagName("GlueType"); for (int i = 0; i < list.getLength(); i++) { Element type = (Element)list.item(i); // retrieve required attribute value, throw exception if not set String name = getAttrValueAndCheckIfNotNull("name", type); Glue glue = createGlue(type, name); if (name.equalsIgnoreCase("default")) // default must have value defaultIndex = index; glueTypesList.add(glue); index ++; } } if (defaultIndex < 0) { // create a default glue object if missing defaultIndex = index; glueTypesList.add(new Glue(0,0,0,"default")); } glueTypes = glueTypesList.toArray(new Glue[glueTypesList.size()]); // make sure default glue is at the front if (defaultIndex > 0) { Glue tmp = glueTypes[defaultIndex]; glueTypes[defaultIndex] = glueTypes[0]; glueTypes[0] = tmp; } // make reverse map for (int i = 0; i < glueTypes.length; i++) { glueTypeMappings.put(glueTypes[i].getName(), i); } } private Glue createGlue(Element type, String name) throws ResourceParseException { final String[] names = { "space", "stretch", "shrink" }; float[] values = new float[names.length]; for (int i = 0; i < names.length; i++) { double val = 0; // default value if attribute not present String attrVal = null; try { attrVal = type.getAttribute(names[i]); if (!attrVal.equals("")) // attribute present val = Double.parseDouble(attrVal); } catch (NumberFormatException e) { throw new XMLResourceParseException(RESOURCE_NAME, "GlueType", names[i], "has an invalid real value '" + attrVal + "'!"); } values[i] = (float) val; } return new Glue(values[0], values[1], values[2], name); } private void setTypeMappings() { typeMappings.put("ord", TeXConstants.TYPE_ORDINARY); typeMappings.put("op", TeXConstants.TYPE_BIG_OPERATOR); typeMappings.put("bin", TeXConstants.TYPE_BINARY_OPERATOR); typeMappings.put("rel", TeXConstants.TYPE_RELATION); typeMappings.put("open", TeXConstants.TYPE_OPENING); typeMappings.put("close", TeXConstants.TYPE_CLOSING); typeMappings.put("punct", TeXConstants.TYPE_PUNCTUATION); typeMappings.put("inner", TeXConstants.TYPE_INNER); // autoboxing } public Glue[] getGlueTypes() { return glueTypes; } public int[][][] createGlueTable() throws ResourceParseException { int size = typeMappings.size(); int[][][] table = new int[size][size][styleMappings.size()]; Element glueTable = (Element)root.getElementsByTagName("GlueTable").item(0); if (glueTable != null) { // element present // iterate all the "Glue"-elements NodeList list = glueTable.getElementsByTagName("Glue"); for (int i = 0; i < list.getLength(); i++) { Element glue = (Element)list.item(i); // retrieve required attribute values and throw exception if they're not set String left = getAttrValueAndCheckIfNotNull("lefttype", glue); String right = getAttrValueAndCheckIfNotNull("righttype", glue); String type = getAttrValueAndCheckIfNotNull("gluetype", glue); // iterate all the "Style"-elements NodeList listG = glue.getElementsByTagName("Style"); for (int j = 0; j < listG.getLength(); j++) { Element style = (Element)listG.item(j); String styleName = getAttrValueAndCheckIfNotNull("name", style); // retrieve mappings Object l = typeMappings.get(left); Object r = typeMappings.get(right); Object st = styleMappings.get(styleName); Object val = glueTypeMappings.get(type); // throw exception if unknown value set checkMapping(l, "Glue", "lefttype", left); checkMapping(r, "Glue", "righttype", right); checkMapping(val, "Glue", "gluetype", type); checkMapping(st, "Style", "name", styleName); // put value in table table[((Integer) l).intValue()][((Integer) r).intValue()][((Integer) st).intValue()] = ((Integer) val).intValue(); } } } return table; } private static void checkMapping(Object val, String elementName, String attrName, String attrValue) throws ResourceParseException { if (val == null) throw new XMLResourceParseException(RESOURCE_NAME, elementName, attrName, "has an unknown value '" + attrValue + "'!"); } private static String getAttrValueAndCheckIfNotNull(String attrName, Element element) throws ResourceParseException { String attrValue = element.getAttribute(attrName); if (attrValue.equals("")) throw new XMLResourceParseException(RESOURCE_NAME, element.getTagName(), attrName, null); return attrValue; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/OverBar.java0000644000175000017500000000330312275735442026437 0ustar sylvestresylvestre/* OverBar.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * A box representing another box with a horizontal rule above it, with appropriate * kerning. */ public class OverBar extends VerticalBox { public OverBar(Box b, float kern, float thickness) { // construct vertical box add(new StrutBox(0, thickness, 0, 0)); add(new HorizontalRule(thickness, b.getWidth(), 0)); add(new StrutBox(0, kern, 0, 0)); add(b); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/RuleAtom.java0000644000175000017500000000357212275735442026637 0ustar sylvestresylvestre/* RuleAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a rule. */ public class RuleAtom extends Atom { private int wunit, hunit, runit; private float w, h, r; private SpaceAtom width, height, raise; public RuleAtom(int wunit, float width, int hunit, float height, int runit, float raise) { this.wunit = wunit; this.hunit = hunit; this.runit = runit; this.w = width; this.h = height; this.r = raise; } public Box createBox(TeXEnvironment env) { return new HorizontalRule(h * SpaceAtom.getFactor(hunit, env), w * SpaceAtom.getFactor(wunit, env), r * SpaceAtom.getFactor(runit, env)); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/EmptyAtom.java0000644000175000017500000000271112275735442027020 0ustar sylvestresylvestre/* EmptyAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An empty atom. */ public class EmptyAtom extends Atom { public EmptyAtom() { } public Box createBox(TeXEnvironment env) { return new StrutBox(0, 0, 0, 0); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/DdotsAtom.java0000644000175000017500000000406412275735442027002 0ustar sylvestresylvestre/* DdotsAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing ddots. */ public class DdotsAtom extends Atom { public DdotsAtom() { } public Box createBox(TeXEnvironment env) { Box ldots = TeXFormula.get("ldots").root.createBox(env); float w = ldots.getWidth(); Box dot = SymbolAtom.get("ldotp").createBox(env); HorizontalBox hb1 = new HorizontalBox(dot, w, TeXConstants.ALIGN_LEFT); HorizontalBox hb2 = new HorizontalBox(dot, w, TeXConstants.ALIGN_CENTER); HorizontalBox hb3 = new HorizontalBox(dot, w, TeXConstants.ALIGN_RIGHT); Box pt4 = new SpaceAtom(TeXConstants.UNIT_MU, 0, 4, 0).createBox(env); VerticalBox vb = new VerticalBox(); vb.add(hb1); vb.add(pt4); vb.add(hb2); vb.add(pt4); vb.add(hb3); float h = vb.getHeight() + vb.getDepth(); vb.setHeight(h); vb.setDepth(0); return vb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/EmptyFormulaException.java0000644000175000017500000000275712275735442031416 0ustar sylvestresylvestre/* EmptyFormulaException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; public class EmptyFormulaException extends Exception { public EmptyFormulaException() { super("Illegal operation with an empty Formula!"); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/tcaronAtom.java0000644000175000017500000000340212275735442027206 0ustar sylvestresylvestre/* tcaronAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom with representing an t with a caron. */ public class tcaronAtom extends Atom { public tcaronAtom() { } public Box createBox(TeXEnvironment env) { CharBox A = new CharBox(env.getTeXFont().getChar("textapos", env.getStyle())); CharBox t = new CharBox(env.getTeXFont().getChar('t', "mathnormal", env.getStyle())); HorizontalBox hb = new HorizontalBox(t); hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.3f, 0, 0).createBox(env)); hb.add(A); return hb; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ResourceParseException.java0000644000175000017500000000325412275735442031545 0ustar sylvestresylvestre/* ResourceParseException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that an error occurred while loading the necessary resources into memory. */ public class ResourceParseException extends JMathTeXException { protected ResourceParseException(String msg) { super(msg); } protected ResourceParseException(String msg, Throwable cause) { super(msg, cause); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/FormulaNotFoundException.java0000644000175000017500000000332312275735442032042 0ustar sylvestresylvestre/* FormulaNotFoundException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that unknown predefined TeXFormula name was used. * * @author Kurt Vermeulen */ public class FormulaNotFoundException extends JMathTeXException { protected FormulaNotFoundException(String name) { super("There's no predefined TeXFormula with the name '" + name + "' defined in '" + PredefinedTeXFormulaParser.RESOURCE_NAME + "'!"); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ArrayOfAtoms.java0000644000175000017500000000556312275735442027460 0ustar sylvestresylvestre/* ArrayOfAtoms.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009-2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.util.BitSet; import java.util.Map; import java.util.LinkedList; public class ArrayOfAtoms extends TeXFormula { public LinkedList> array; public int col, row; public ArrayOfAtoms() { super(); array = new LinkedList>(); array.add(new LinkedList()); row = 0; } public void addCol() { array.get(row).add(root); root = null; } public void addCol(int n) { array.get(row).add(root); for (int i = 1; i < n - 1; i++) { array.get(row).add(null); } root = null; } public void addRow() { addCol(); array.add(new LinkedList()); row++; } public int getRows() { return row; } public int getCols() { return col; } public VRowAtom getAsVRow() { VRowAtom vr = new VRowAtom(); vr.setAddInterline(true); for (LinkedList r : array) { for (Atom a : r) { vr.append(a); } } return vr; } public void checkDimensions() { if (array.getLast().size() != 0) addRow(); else if (root != null) addRow(); row = array.size() - 1; col = array.get(0).size(); for (int i = 1; i < row; i++) { if (array.get(i).size() > col) { col = array.get(i).size(); } } /* Thanks to Juan Enrique Escobar Robles for this patch which let the user have empty columns */ for (int i = 0; i < row; i++) { int j = array.get(i).size(); if (j != col && array.get(i).get(0) != null && array.get(i).get(0).type != TeXConstants.TYPE_INTERTEXT) { LinkedList r = array.get(i); for(; j < col; j++) { r.add(null); } } } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/PredefMacros.java0000644000175000017500000025224412275735442027463 0ustar sylvestresylvestre/* predefMacros.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.awt.Font; import java.util.Map; import java.util.StringTokenizer; import org.scilab.forge.jlatexmath.dynamic.DynamicAtom; /** * This class contains the most of basic commands of LaTeX, they're activated in * byt the class PredefinedCommands.java. **/ public class PredefMacros { static { NewEnvironmentMacro.addNewEnvironment("array", "\\array@@env{#1}{", "}", 1); NewEnvironmentMacro.addNewEnvironment("tabular", "\\array@@env{#1}{", "}", 1); NewEnvironmentMacro.addNewEnvironment("matrix", "\\matrix@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("smallmatrix", "\\smallmatrix@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("pmatrix", "\\left(\\begin{matrix}", "\\end{matrix}\\right)", 0); NewEnvironmentMacro.addNewEnvironment("bmatrix", "\\left[\\begin{matrix}", "\\end{matrix}\\right]", 0); NewEnvironmentMacro.addNewEnvironment("Bmatrix", "\\left\\{\\begin{matrix}", "\\end{matrix}\\right\\}", 0); NewEnvironmentMacro.addNewEnvironment("vmatrix", "\\left|\\begin{matrix}", "\\end{matrix}\\right|", 0); NewEnvironmentMacro.addNewEnvironment("Vmatrix", "\\left\\|\\begin{matrix}", "\\end{matrix}\\right\\|", 0); NewEnvironmentMacro.addNewEnvironment("eqnarray", "\\begin{array}{rcl}", "\\end{array}", 0); NewEnvironmentMacro.addNewEnvironment("align", "\\align@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("flalign", "\\flalign@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("alignat", "\\alignat@@env{#1}{", "}", 1); NewEnvironmentMacro.addNewEnvironment("aligned", "\\aligned@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("alignedat", "\\alignedat@@env{#1}{", "}", 1); NewEnvironmentMacro.addNewEnvironment("multline", "\\multline@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("cases", "\\left\\{\\begin{array}{l@{\\!}l}", "\\end{array}\\right.", 0); NewEnvironmentMacro.addNewEnvironment("split", "\\begin{array}{rl}", "\\end{array}", 0); NewEnvironmentMacro.addNewEnvironment("gather", "\\gather@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("gathered", "\\gathered@@env{", "}", 0); NewEnvironmentMacro.addNewEnvironment("math", "\\(", "\\)", 0); NewEnvironmentMacro.addNewEnvironment("displaymath", "\\[", "\\]", 0); NewCommandMacro.addNewCommand("operatorname", "\\mathop{\\mathrm{#1}}\\nolimits ", 1); NewCommandMacro.addNewCommand("DeclareMathOperator", "\\newcommand{#1}{\\mathop{\\mathrm{#2}}\\nolimits}", 2); NewCommandMacro.addNewCommand("substack", "{\\scriptstyle\\begin{array}{c}#1\\end{array}}", 1); NewCommandMacro.addNewCommand("dfrac", "\\genfrac{}{}{}{}{#1}{#2}", 2); NewCommandMacro.addNewCommand("tfrac", "\\genfrac{}{}{}{1}{#1}{#2}", 2); NewCommandMacro.addNewCommand("dbinom", "\\genfrac{(}{)}{0pt}{}{#1}{#2}", 2); NewCommandMacro.addNewCommand("tbinom", "\\genfrac{(}{)}{0pt}{1}{#1}{#2}", 2); NewCommandMacro.addNewCommand("pmod", "\\qquad\\mathbin{(\\mathrm{mod}\\ #1)}", 1); NewCommandMacro.addNewCommand("mod", "\\qquad\\mathbin{\\mathrm{mod}\\ #1}", 1); NewCommandMacro.addNewCommand("pod", "\\qquad\\mathbin{(#1)}", 1); NewCommandMacro.addNewCommand("dddot", "\\mathop{#1}\\limits^{...}", 1); NewCommandMacro.addNewCommand("ddddot", "\\mathop{#1}\\limits^{....}", 1); NewCommandMacro.addNewCommand("spdddot", "^{\\mathrm{...}}", 0); NewCommandMacro.addNewCommand("spbreve", "^{\\makeatletter\\sp@breve\\makeatother}", 0); NewCommandMacro.addNewCommand("sphat", "^{\\makeatletter\\sp@hat\\makeatother}", 0); NewCommandMacro.addNewCommand("spddot", "^{\\displaystyle..}", 0); NewCommandMacro.addNewCommand("spcheck", "^{\\vee}", 0); NewCommandMacro.addNewCommand("sptilde", "^{\\sim}", 0); NewCommandMacro.addNewCommand("spdot", "^{\\displaystyle.}", 0); NewCommandMacro.addNewCommand("d", "\\underaccent{\\dot}{#1}", 1); NewCommandMacro.addNewCommand("b", "\\underaccent{\\bar}{#1}", 1); NewCommandMacro.addNewCommand("Bra", "\\left\\langle{#1}\\right\\vert", 1); NewCommandMacro.addNewCommand("Ket", "\\left\\vert{#1}\\right\\rangle", 1); NewCommandMacro.addNewCommand("textsuperscript", "{}^{\\text{#1}}", 1); NewCommandMacro.addNewCommand("textsubscript", "{}_{\\text{#1}}", 1); NewCommandMacro.addNewCommand("textit", "\\mathit{\\text{#1}}", 1); NewCommandMacro.addNewCommand("textbf", "\\mathbf{\\text{#1}}", 1); NewCommandMacro.addNewCommand("textsf", "\\mathsf{\\text{#1}}", 1); NewCommandMacro.addNewCommand("texttt", "\\mathtt{\\text{#1}}", 1); NewCommandMacro.addNewCommand("textrm", "\\text{#1}", 1); NewCommandMacro.addNewCommand("degree", "^\\circ", 0); NewCommandMacro.addNewCommand("with", "\\mathbin{\\&}", 0); NewCommandMacro.addNewCommand("parr", "\\mathbin{\\rotatebox[origin=c]{180}{\\&}}", 0); NewCommandMacro.addNewCommand("copyright", "\\textcircled{\\raisebox{0.2ex}{c}}", 0); NewCommandMacro.addNewCommand("L", "\\mathrm{\\polishlcross L}", 0); NewCommandMacro.addNewCommand("l", "\\mathrm{\\polishlcross l}", 0); NewCommandMacro.addNewCommand("Join", "\\mathop{\\rlap{\\ltimes}\\rtimes}", 0); } public static final Atom fcscore_macro(final TeXParser tp, final String[] args) throws ParseException { int n = Integer.parseInt(args[1]); if (n > 5) { final int q = n / 5; final int r = n % 5; RowAtom rat = new RowAtom(); for (int i = 0; i < q; i++) { rat.add(new FcscoreAtom(5)); } rat.add(new FcscoreAtom(r)); return rat; } else { return new FcscoreAtom(n); } } public static final Atom st_macro(final TeXParser tp, final String[] args) throws ParseException { return new StrikeThroughAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom Braket_macro(final TeXParser tp, final String[] args) throws ParseException { String str = args[1].replaceAll("\\|", "\\\\middle\\\\vert "); return new TeXFormula(tp, "\\left\\langle " + str + "\\right\\rangle").root; } public static final Atom Set_macro(final TeXParser tp, final String[] args) throws ParseException { String str = args[1].replaceFirst("\\|", "\\\\middle\\\\vert "); return new TeXFormula(tp, "\\left\\{" + str + "\\right\\}").root; } public static final Atom spATbreve_macro(final TeXParser tp, final String[] args) throws ParseException { VRowAtom vra = new VRowAtom(new TeXFormula("\\displaystyle\\!\\breve{}").root); vra.setRaise(TeXConstants.UNIT_EX, 0.6f); return new SmashedAtom(vra, null); } public static final Atom spAThat_macro(final TeXParser tp, final String[] args) throws ParseException { VRowAtom vra = new VRowAtom(new TeXFormula("\\displaystyle\\widehat{}").root); vra.setRaise(TeXConstants.UNIT_EX, 0.6f); return new SmashedAtom(vra, null); } public static final Atom hvspace_macro(final TeXParser tp, final String[] args) throws ParseException { int i; for (i = 0; i < args[1].length() && !Character.isLetter(args[1].charAt(i)); i++); float f = 0; try { f = Float.parseFloat(args[1].substring(0, i)); } catch (NumberFormatException e) { throw new ParseException(e.toString()); } int unit; if (i != args[1].length()) { unit = SpaceAtom.getUnit(args[1].substring(i).toLowerCase()); } else { unit = TeXConstants.UNIT_POINT; } if (unit == -1) { throw new ParseException("Unknown unit \"" + args[1].substring(i) + "\" !"); } return args[0].charAt(0) == 'h' ? new SpaceAtom(unit, f, 0, 0) : new SpaceAtom(unit, 0, f, 0); } public static final Atom clrlap_macro(final TeXParser tp, final String[] args) throws ParseException { return new LapedAtom(new TeXFormula(tp, args[1]).root, args[0].charAt(0)); } public static final Atom mathclrlap_macro(final TeXParser tp, final String[] args) throws ParseException { return new LapedAtom(new TeXFormula(tp, args[1]).root, args[0].charAt(4)); } public static final Atom includegraphics_macro(final TeXParser tp, final String[] args) throws ParseException { return new GraphicsAtom(args[1], args[2]); } public static final Atom rule_macro(final TeXParser tp, final String[] args) throws ParseException { float[] winfo = SpaceAtom.getLength(args[1]); if (winfo.length == 1) { throw new ParseException("Error in getting width in \\rule command !"); } float[] hinfo = SpaceAtom.getLength(args[2]); if (hinfo.length == 1) { throw new ParseException("Error in getting height in \\rule command !"); } float[] rinfo = SpaceAtom.getLength(args[3]); if (rinfo.length == 1) { throw new ParseException("Error in getting raise in \\rule command !"); } return new RuleAtom((int) winfo[0], winfo[1], (int) hinfo[0], hinfo[1], (int) rinfo[0], -rinfo[1]); } /* Thanks to Juan Enrique Escobar Robles for this macro */ public static final Atom cfrac_macro(final TeXParser tp, final String[] args) throws ParseException { int alig = TeXConstants.ALIGN_CENTER; if ("r".equals(args[3])) { alig = TeXConstants.ALIGN_RIGHT; } else if ("l".equals(args[3])) { alig = TeXConstants.ALIGN_LEFT; } TeXFormula num = new TeXFormula(tp, args[1], false); TeXFormula denom = new TeXFormula(tp, args[2], false); if (num.root == null || denom.root == null) { throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); } Atom f = new FractionAtom(num.root, denom.root, true, alig, TeXConstants.ALIGN_CENTER); RowAtom rat = new RowAtom(); rat.add(new StyleAtom(TeXConstants.STYLE_DISPLAY, f)); return rat; } public static final Atom frac_macro(final TeXParser tp, final String[] args) throws ParseException { TeXFormula num = new TeXFormula(tp, args[1], false); TeXFormula denom = new TeXFormula(tp, args[2], false); if (num.root == null || denom.root == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); return new FractionAtom(num.root, denom.root, true); } public static final Atom sfrac_macro(final TeXParser tp, final String[] args) throws ParseException { TeXFormula num = new TeXFormula(tp, args[1], false); TeXFormula denom = new TeXFormula(tp, args[2], false); if (num.root == null || denom.root == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); double scaleX = 0.75; double scaleY = 0.75; float raise1 = 0.45f; float shiftL = -0.13f; float shiftR = -0.065f; Atom slash = SymbolAtom.get("slash"); if (!tp.isMathMode()) { scaleX = 0.6; scaleY = 0.5; raise1 = 0.75f; shiftL = -0.24f; shiftR = -0.24f; slash = new VRowAtom(new ScaleAtom(SymbolAtom.get("textfractionsolidus"), 1.25, 0.65)); ((VRowAtom) slash).setRaise(TeXConstants.UNIT_EX, 0.4f); } VRowAtom snum = new VRowAtom(new ScaleAtom(num.root, scaleX, scaleY)); snum.setRaise(TeXConstants.UNIT_EX, raise1); RowAtom at = new RowAtom(snum); at.add(new SpaceAtom(TeXConstants.UNIT_EM, shiftL, 0f, 0f)); at.add(slash); at.add(new SpaceAtom(TeXConstants.UNIT_EM, shiftR, 0f, 0f)); at.add(new ScaleAtom(denom.root, scaleX, scaleY)); return at; } public static final Atom genfrac_macro(final TeXParser tp, final String[] args) throws ParseException { TeXFormula left = new TeXFormula(tp, args[1], false); SymbolAtom L = null, R = null; if (left != null && left.root instanceof SymbolAtom) { L = (SymbolAtom) left.root; } TeXFormula right = new TeXFormula(tp, args[2], false); if (right != null && right.root instanceof SymbolAtom) { R = (SymbolAtom) right.root; } boolean rule = true; float[] ths = SpaceAtom.getLength(args[3]); if (args[3] == null || args[3].length() == 0 || ths.length == 1) { ths = new float[]{0.0f, 0.0f}; rule = false; } int style = 0; if (args[4].length() != 0) { style = Integer.parseInt(args[4]); } TeXFormula num = new TeXFormula(tp, args[5], false); TeXFormula denom = new TeXFormula(tp, args[6], false); if (num.root == null || denom.root == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); Atom at = new FractionAtom(num.root, denom.root, rule, (int) ths[0], ths[1]); RowAtom rat = new RowAtom(); rat.add(new StyleAtom(style * 2, new FencedAtom(at, L, R))); return rat; } public static final Atom over_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (num == null || denom == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); return new FractionAtom(num, denom, true); } public static final Atom overwithdelims_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (num == null || denom == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); Atom left = new TeXFormula(tp, args[1], false).root; if (left instanceof BigDelimiterAtom) left = ((BigDelimiterAtom)left).delim; Atom right = new TeXFormula(tp, args[2], false).root; if (right instanceof BigDelimiterAtom) right = ((BigDelimiterAtom)right).delim; if (left instanceof SymbolAtom && right instanceof SymbolAtom) { return new FencedAtom(new FractionAtom(num, denom, true), (SymbolAtom) left, (SymbolAtom) right); } RowAtom ra = new RowAtom(); ra.add(left); ra.add(new FractionAtom(num, denom, true)); ra.add(right); return ra; } public static final Atom atop_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (num == null || denom == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); return new FractionAtom(num, denom, false); } public static final Atom atopwithdelims_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (num == null || denom == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); Atom left = new TeXFormula(tp, args[1], false).root; if (left instanceof BigDelimiterAtom) left = ((BigDelimiterAtom)left).delim; Atom right = new TeXFormula(tp, args[2], false).root; if (right instanceof BigDelimiterAtom) right = ((BigDelimiterAtom)right).delim; if (left instanceof SymbolAtom && right instanceof SymbolAtom) { return new FencedAtom(new FractionAtom(num, denom, false), (SymbolAtom) left, (SymbolAtom) right); } RowAtom ra = new RowAtom(); ra.add(left); ra.add(new FractionAtom(num, denom, false)); ra.add(right); return ra; } public static final Atom choose_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (num == null || denom == null) throw new ParseException("Both numerator and denominator of choose can't be empty!"); return new FencedAtom(new FractionAtom(num, denom, false), new SymbolAtom("lbrack", TeXConstants.TYPE_OPENING, true), new SymbolAtom("rbrack", TeXConstants.TYPE_CLOSING, true)); } public static final Atom binom_macro(final TeXParser tp, final String[] args) throws ParseException { TeXFormula num = new TeXFormula(tp, args[1], false); TeXFormula denom = new TeXFormula(tp, args[2], false); if (num.root == null || denom.root == null) throw new ParseException("Both binomial coefficients must be not empty !!"); return new FencedAtom(new FractionAtom(num.root, denom.root, false), new SymbolAtom("lbrack", TeXConstants.TYPE_OPENING, true), new SymbolAtom("rbrack", TeXConstants.TYPE_CLOSING, true)); } public static final Atom above_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); float[] dim = tp.getLength(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (dim == null || dim.length != 2) { throw new ParseException("Invalid length in above macro"); } if (num == null || denom == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); return new FractionAtom(num, denom, (int) dim[0], dim[1]); } public static final Atom abovewithdelims_macro(final TeXParser tp, final String[] args) throws ParseException { Atom num = tp.getFormulaAtom(); float[] dim = tp.getLength(); Atom denom = new TeXFormula(tp, tp.getOverArgument(), false).root; if (dim == null || dim.length != 2) { throw new ParseException("Invalid length in above macro"); } if (num == null || denom == null) throw new ParseException("Both numerator and denominator of a fraction can't be empty!"); Atom left = new TeXFormula(tp, args[1], false).root; if (left instanceof BigDelimiterAtom) left = ((BigDelimiterAtom)left).delim; Atom right = new TeXFormula(tp, args[2], false).root; if (right instanceof BigDelimiterAtom) right = ((BigDelimiterAtom)right).delim; if (left instanceof SymbolAtom && right instanceof SymbolAtom) { return new FencedAtom(new FractionAtom(num, denom, (int) dim[0], dim[1]), (SymbolAtom) left, (SymbolAtom) right); } RowAtom ra = new RowAtom(); ra.add(left); ra.add(new FractionAtom(num, denom, true)); ra.add(right); return ra; } public static final Atom textstyle_macros(final TeXParser tp, final String[] args) throws ParseException { String style = args[0]; if ("frak".equals(args[0])) style = "mathfrak"; else if ("Bbb".equals(args[0])) style = "mathbb"; else if ("bold".equals(args[0])) return new BoldAtom(new TeXFormula(tp, args[1], false).root); else if ("cal".equals(args[0])) style = "mathcal"; TeXFormula.FontInfos fontInfos = TeXFormula.externalFontMap.get(Character.UnicodeBlock.BASIC_LATIN); if (fontInfos != null) { TeXFormula.externalFontMap.put(Character.UnicodeBlock.BASIC_LATIN, null); } Atom at = new TeXFormula(tp, args[1], false).root; if (fontInfos != null) { TeXFormula.externalFontMap.put(Character.UnicodeBlock.BASIC_LATIN, fontInfos); } return new TextStyleAtom(at, style); } public static final Atom mbox_macro(final TeXParser tp, final String[] args) throws ParseException { Atom group = new RomanAtom(new TeXFormula(tp, args[1], "mathnormal", false, false).root); return new StyleAtom(TeXConstants.STYLE_TEXT, group); } public static final Atom text_macro(final TeXParser tp, final String[] args) throws ParseException { return new RomanAtom(new TeXFormula(tp, args[1], "mathnormal", false, false).root); } public static final Atom underscore_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderscoreAtom(); } public static final Atom accent_macros(final TeXParser tp, final String[] args) throws ParseException { return new AccentedAtom(new TeXFormula(tp, args[1], false).root, args[0]); } public static final Atom grkaccent_macro(final TeXParser tp, final String[] args) throws ParseException { return new AccentedAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[1], false).root, false); } public static final Atom accent_macro(final TeXParser tp, final String[] args) throws ParseException { return new AccentedAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[1], false).root); } public static final Atom accentbis_macros(final TeXParser tp, final String[] args) throws ParseException { String acc = ""; switch (args[0].charAt(0)) { case '~' : acc = "tilde"; break; case '\'' : acc = "acute"; break; case '^' : acc = "hat"; break; case '\"' : acc = "ddot"; break; case '`' : acc = "grave"; break; case '=' : acc = "bar"; break; case '.' : acc = "dot"; break; case 'u' : acc = "breve"; break; case 'v' : acc = "check"; break; case 'H' : acc = "doubleacute"; break; case 't' : acc = "tie"; break; case 'r' : acc = "mathring"; break; case 'U' : acc = "cyrbreve"; } return new AccentedAtom(new TeXFormula(tp, args[1], false).root, acc); } public static final Atom cedilla_macro(final TeXParser tp, final String[] args) throws ParseException { return new CedillaAtom(new TeXFormula(tp, args[1]).root); } public static final Atom IJ_macro(final TeXParser tp, final String[] args) throws ParseException { return new IJAtom(args[0].charAt(0) == 'I'); } public static final Atom TStroke_macro(final TeXParser tp, final String[] args) throws ParseException { return new TStrokeAtom(args[0].charAt(0) == 'T'); } public static final Atom LCaron_macro(final TeXParser tp, final String[] args) throws ParseException { return new LCaronAtom(args[0].charAt(0) == 'L'); } public static final Atom tcaron_macro(final TeXParser tp, final String[] args) throws ParseException { return new tcaronAtom(); } public static final Atom ogonek_macro(final TeXParser tp, final String[] args) throws ParseException { return new OgonekAtom(new TeXFormula(tp, args[1]).root); } public static final Atom nbsp_macro(final TeXParser tp, final String[] args) throws ParseException { return new SpaceAtom(); } public static final Atom sqrt_macro(final TeXParser tp, final String[] args) throws ParseException { if (args[2] == null) return new NthRoot(new TeXFormula(tp, args[1], false).root, null); return new NthRoot(new TeXFormula(tp, args[1], false).root, new TeXFormula(tp, args[2], false).root); } public static final Atom overrightarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverArrowAtom(new TeXFormula(tp, args[1], false).root, false, true); } public static final Atom overleftarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverArrowAtom(new TeXFormula(tp, args[1], false).root, true, true); } public static final Atom overleftrightarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverArrowAtom(new TeXFormula(tp, args[1], false).root, true); } public static final Atom underrightarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverArrowAtom(new TeXFormula(tp, args[1], false).root, false, false); } public static final Atom underleftarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverArrowAtom(new TeXFormula(tp, args[1], false).root, true, false); } public static final Atom underleftrightarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverArrowAtom(new TeXFormula(tp, args[1], false).root, false); } public static final Atom xleftarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new XArrowAtom(new TeXFormula(tp, args[1], false).root, new TeXFormula(tp, args[2]).root, true); } public static final Atom xrightarrow_macro(final TeXParser tp, final String[] args) throws ParseException { return new XArrowAtom(new TeXFormula(tp, args[1], false).root, new TeXFormula(tp, args[2]).root, false); } public static final Atom sideset_macro(final TeXParser tp, final String[] args) throws ParseException { TeXFormula tf = new TeXFormula(); tf.add(new PhantomAtom(new TeXFormula(tp, args[3]).root, false, true, true)); tf.append(tp.getIsPartial(), args[1]); tf.add(new SpaceAtom(TeXConstants.UNIT_MU, -0.3f, 0f, 0f)); tf.append(tp.getIsPartial(), args[3] + "\\nolimits" + args[2]); return new TypedAtom(TeXConstants.TYPE_ORDINARY, TeXConstants.TYPE_ORDINARY, tf.root); } public static final Atom prescript_macro(final TeXParser tp, final String[] args) throws ParseException { Atom base = new TeXFormula(tp, args[3]).root; tp.addAtom(new ScriptsAtom(new PhantomAtom(base, false, true, true), new TeXFormula(tp, args[2]).root, new TeXFormula(tp, args[1]).root, false)); tp.addAtom(new SpaceAtom(TeXConstants.UNIT_MU, -0.3f, 0f, 0f)); return new TypedAtom(TeXConstants.TYPE_ORDINARY, TeXConstants.TYPE_ORDINARY, base); } public static final Atom underbrace_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverUnderDelimiter(new TeXFormula(tp, args[1], false).root, null, SymbolAtom.get("rbrace"), TeXConstants.UNIT_EX, 0, false); } public static final Atom overbrace_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverUnderDelimiter(new TeXFormula(tp, args[1], false).root, null, SymbolAtom.get("lbrace"), TeXConstants.UNIT_EX, 0, true); } public static final Atom underbrack_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverUnderDelimiter(new TeXFormula(tp, args[1], false).root, null, SymbolAtom.get("rsqbrack"), TeXConstants.UNIT_EX, 0, false); } public static final Atom overbrack_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverUnderDelimiter(new TeXFormula(tp, args[1], false).root, null, SymbolAtom.get("lsqbrack"), TeXConstants.UNIT_EX, 0, true); } public static final Atom underparen_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverUnderDelimiter(new TeXFormula(tp, args[1], false).root, null, SymbolAtom.get("rbrack"), TeXConstants.UNIT_EX, 0, false); } public static final Atom overparen_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverUnderDelimiter(new TeXFormula(tp, args[1], false).root, null, SymbolAtom.get("lbrack"), TeXConstants.UNIT_EX, 0, true); } public static final Atom overline_macro(final TeXParser tp, final String[] args) throws ParseException { return new OverlinedAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom underline_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderlinedAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom mathop_macro(final TeXParser tp, final String[] args) throws ParseException { TypedAtom at = new TypedAtom(TeXConstants.TYPE_BIG_OPERATOR, TeXConstants.TYPE_BIG_OPERATOR, new TeXFormula(tp, args[1], false).root); at.type_limits = TeXConstants.SCRIPT_NORMAL; return at; } public static final Atom mathpunct_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_PUNCTUATION, TeXConstants.TYPE_PUNCTUATION, new TeXFormula(tp, args[1], false).root); } public static final Atom mathord_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_ORDINARY, TeXConstants.TYPE_ORDINARY, new TeXFormula(tp, args[1], false).root); } public static final Atom mathrel_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, new TeXFormula(tp, args[1], false).root); } public static final Atom mathinner_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_INNER, TeXConstants.TYPE_INNER, new TeXFormula(tp, args[1], false).root); } public static final Atom mathbin_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_BINARY_OPERATOR, TeXConstants.TYPE_BINARY_OPERATOR, new TeXFormula(tp, args[1], false).root); } public static final Atom mathopen_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_OPENING, TeXConstants.TYPE_OPENING, new TeXFormula(tp, args[1], false).root); } public static final Atom mathclose_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_CLOSING, TeXConstants.TYPE_CLOSING, new TeXFormula(tp, args[1], false).root); } public static final Atom joinrel_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, new SpaceAtom(TeXConstants.UNIT_MU, -2.6f, 0, 0)); } public static final Atom smash_macro(final TeXParser tp, final String[] args) throws ParseException { return new SmashedAtom(new TeXFormula(tp, args[1], false).root, args[2]); } public static final Atom vdots_macro(final TeXParser tp, final String[] args) throws ParseException { return new VdotsAtom(); } public static final Atom ddots_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_INNER, TeXConstants.TYPE_INNER, new DdotsAtom()); } public static final Atom iddots_macro(final TeXParser tp, final String[] args) throws ParseException { return new TypedAtom(TeXConstants.TYPE_INNER, TeXConstants.TYPE_INNER, new IddotsAtom()); } public static final Atom nolimits_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = tp.getLastAtom(); at.type_limits = TeXConstants.SCRIPT_NOLIMITS; return at.clone(); } public static final Atom limits_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = tp.getLastAtom(); at.type_limits = TeXConstants.SCRIPT_LIMITS; return at.clone(); } public static final Atom normal_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = tp.getLastAtom(); at.type_limits = TeXConstants.SCRIPT_NORMAL; return at.clone(); } public static final Atom left_macro(final TeXParser tp, final String[] args) throws ParseException { String grp = tp.getGroup("\\left", "\\right"); Atom left = new TeXFormula(tp, args[1], false).root; if (left instanceof BigDelimiterAtom) left = ((BigDelimiterAtom)left).delim; Atom right = tp.getArgument(); if (right instanceof BigDelimiterAtom) right = ((BigDelimiterAtom)right).delim; if (left instanceof SymbolAtom && right instanceof SymbolAtom) { TeXFormula tf = new TeXFormula(tp, grp, false); return new FencedAtom(tf.root, (SymbolAtom)left, tf.middle, (SymbolAtom)right); } RowAtom ra = new RowAtom(); ra.add(left); ra.add(new TeXFormula(tp, grp, false).root); ra.add(right); return ra; } public static final Atom leftparenthesis_macro(final TeXParser tp, final String[] args) throws ParseException { String grp = tp.getGroup("\\(", "\\)"); return new MathAtom(new TeXFormula(tp, grp, false).root, TeXConstants.STYLE_TEXT); } public static final Atom leftbracket_macro(final TeXParser tp, final String[] args) throws ParseException { String grp = tp.getGroup("\\[", "\\]"); return new MathAtom(new TeXFormula(tp, grp, false).root, TeXConstants.STYLE_DISPLAY); } public static final Atom middle_macro(final TeXParser tp, final String[] args) throws ParseException { return new MiddleAtom(new TeXFormula(tp, args[1]).root); } public static final Atom cr_macro(final TeXParser tp, final String[] args) throws ParseException { if (tp.isArrayMode()) { tp.addRow(); } else { ArrayOfAtoms array = new ArrayOfAtoms(); array.add(tp.formula.root); array.addRow(); TeXParser parser = new TeXParser(tp.getIsPartial(), tp.getStringFromCurrentPos(), array, false, tp.isIgnoreWhiteSpace()); parser.parse(); array.checkDimensions(); tp.finish(); tp.formula.root = array.getAsVRow();//new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.ARRAY, TeXConstants.ALIGN_LEFT, false); } return null; } public static final Atom backslashcr_macro(final TeXParser tp, final String[] args) throws ParseException { return cr_macro(tp, args); } public static final Atom intertext_macro(final TeXParser tp, final String[] args) throws ParseException { if (!tp.isArrayMode()) { throw new ParseException("Bad environment for \\intertext command !"); } String str = args[1].replaceAll("\\^\\{\\\\prime\\}", "\'"); str = str.replaceAll("\\^\\{\\\\prime\\\\prime\\}", "\'\'"); Atom at = new RomanAtom(new TeXFormula(tp, str, "mathnormal", false, false).root); at.type = TeXConstants.TYPE_INTERTEXT; tp.addAtom(at); tp.addRow(); return null; } public static final Atom smallmatrixATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.SMALLMATRIX); } public static final Atom matrixATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.MATRIX); } public static final Atom multicolumn_macro(final TeXParser tp, final String[] args) throws ParseException { int n = Integer.parseInt(args[1]); tp.addAtom(new MulticolumnAtom(n, args[2], new TeXFormula(tp, args[3]).root)); ((ArrayOfAtoms)tp.formula).addCol(n); return null; } public static final Atom hdotsfor_macro(final TeXParser tp, final String[] args) throws ParseException { int n = Integer.parseInt(args[1]); float f = 1; if (args[2] != null) { f = Float.parseFloat(args[2]); } tp.addAtom(new HdotsforAtom(n, f)); ((ArrayOfAtoms)tp.formula).addCol(n); return null; } public static final Atom arrayATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[2], array, false); parser.parse(); array.checkDimensions(); return new MatrixAtom(tp.getIsPartial(), array, args[1], true); } public static final Atom alignATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.ALIGN); } public static final Atom flalignATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.FLALIGN); } public static final Atom alignatATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[2], array, false); parser.parse(); array.checkDimensions(); int n = Integer.parseInt(args[1]); if (array.col != 2 * n) { throw new ParseException("Bad number of equations in alignat environment !"); } return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.ALIGNAT); } public static final Atom alignedATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.ALIGNED); } public static final Atom alignedatATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[2], array, false); parser.parse(); array.checkDimensions(); int n = Integer.parseInt(args[1]); if (array.col != 2 * n) { throw new ParseException("Bad number of equations in alignedat environment !"); } return new MatrixAtom(tp.getIsPartial(), array, MatrixAtom.ALIGNEDAT); } public static final Atom multlineATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); if (array.col > 1) { throw new ParseException("Character '&' is only available in array mode !"); } if (array.col == 0) { return null; } return new MultlineAtom(tp.getIsPartial(), array, MultlineAtom.MULTLINE); } public static final Atom gatherATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); if (array.col > 1) { throw new ParseException("Character '&' is only available in array mode !"); } if (array.col == 0) { return null; } return new MultlineAtom(tp.getIsPartial(), array, MultlineAtom.GATHER); } public static final Atom gatheredATATenv_macro(final TeXParser tp, final String[] args) throws ParseException { ArrayOfAtoms array = new ArrayOfAtoms(); TeXParser parser = new TeXParser(tp.getIsPartial(), args[1], array, false); parser.parse(); array.checkDimensions(); if (array.col > 1) { throw new ParseException("Character '&' is only available in array mode !"); } if (array.col == 0) { return null; } return new MultlineAtom(tp.getIsPartial(), array, MultlineAtom.GATHERED); } public static final Atom shoveright_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1]).root; at.alignment = TeXConstants.ALIGN_RIGHT; return at; } public static final Atom shoveleft_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1]).root; at.alignment = TeXConstants.ALIGN_LEFT; return at; } public static final Atom newcommand_macro(final TeXParser tp, final String[] args) throws ParseException { String newcom = args[1]; Integer nbArgs; if (!tp.isValidName(newcom)) { throw new ParseException("Invalid name for the command :" + newcom); } if (args[3] == null) nbArgs = new Integer(0); else nbArgs = Integer.parseInt(args[3]); if (nbArgs == null) { throw new ParseException("The optional argument should be an integer !"); } if (args[4] == null) NewCommandMacro.addNewCommand(newcom.substring(1), args[2], nbArgs.intValue()); else NewCommandMacro.addNewCommand(newcom.substring(1), args[2], nbArgs.intValue(), args[4]); return null; } public static final Atom renewcommand_macro(final TeXParser tp, final String[] args) throws ParseException { String newcom = args[1]; Integer nbArgs; if (!tp.isValidName(newcom)) { throw new ParseException("Invalid name for the command :" + newcom); } if (args[3] == null) nbArgs = new Integer(0); else nbArgs = Integer.parseInt(args[3]); if (nbArgs == null) throw new ParseException("The optional argument should be an integer !"); NewCommandMacro.addReNewCommand(newcom.substring(1), args[2], nbArgs.intValue()); return null; } public static final Atom makeatletter_macro(final TeXParser tp, final String[] args) throws ParseException { tp.makeAtLetter(); return null; } public static final Atom makeatother_macro(final TeXParser tp, final String[] args) throws ParseException { tp.makeAtOther(); return null; } public static final Atom newenvironment_macro(final TeXParser tp, final String[] args) throws ParseException { Integer opt = args[4] == null ? 0 : Integer.parseInt(args[4]); if (opt == null) throw new ParseException("The optional argument should be an integer !"); NewEnvironmentMacro.addNewEnvironment(args[1], args[2], args[3], opt.intValue()); return null; } public static final Atom renewenvironment_macro(final TeXParser tp, final String[] args) throws ParseException { Integer opt = args[4] == null ? 0 : Integer.parseInt(args[4]); if (opt == null) throw new ParseException("The optional argument should be an integer !"); NewEnvironmentMacro.addReNewEnvironment(args[1], args[2], args[3], opt.intValue()); return null; } public static final Atom fbox_macro(final TeXParser tp, final String[] args) throws ParseException { return new FBoxAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom stackrel_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[3], false).root, TeXConstants.UNIT_MU, 0.5f, true, new TeXFormula(tp, args[1], false).root, TeXConstants.UNIT_MU, 2.5f, true); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom stackbin_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[3], false).root, TeXConstants.UNIT_MU, 0.5f, true, new TeXFormula(tp, args[1], false).root, TeXConstants.UNIT_MU, 2.5f, true); return new TypedAtom(TeXConstants.TYPE_BINARY_OPERATOR, TeXConstants.TYPE_BINARY_OPERATOR, at); } public static final Atom overset_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[1], false).root, TeXConstants.UNIT_MU, 2.5f, true, true); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom underset_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[1], false).root, TeXConstants.UNIT_MU, 0.5f, true, false); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom accentset_macro(final TeXParser tp, final String[] args) throws ParseException { return new AccentedAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[1], false).root); } public static final Atom underaccent_macro(final TeXParser tp, final String[] args) throws ParseException { return new UnderOverAtom(new TeXFormula(tp, args[2], false).root, new TeXFormula(tp, args[1], false).root, TeXConstants.UNIT_MU, 0.3f, true, false); } public static final Atom undertilde_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; return new UnderOverAtom(at, new AccentedAtom(new PhantomAtom(at, true, false, false), "widetilde"), TeXConstants.UNIT_MU, 0.3f, true, false); } public static final Atom boldsymbol_macro(final TeXParser tp, final String[] args) throws ParseException { return new BoldAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom mathrm_macro(final TeXParser tp, final String[] args) throws ParseException { return new RomanAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom rm_macro(final TeXParser tp, final String[] args) throws ParseException { return new RomanAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root); } public static final Atom mathbf_macro(final TeXParser tp, final String[] args) throws ParseException { return new BoldAtom(new RomanAtom(new TeXFormula(tp, args[1], false).root)); } public static final Atom bf_macro(final TeXParser tp, final String[] args) throws ParseException { return new BoldAtom(new RomanAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root)); } public static final Atom mathtt_macro(final TeXParser tp, final String[] args) throws ParseException { return new TtAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom tt_macro(final TeXParser tp, final String[] args) throws ParseException { return new TtAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root); } public static final Atom mathit_macro(final TeXParser tp, final String[] args) throws ParseException { return new ItAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom it_macro(final TeXParser tp, final String[] args) throws ParseException { return new ItAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root); } public static final Atom mathsf_macro(final TeXParser tp, final String[] args) throws ParseException { return new SsAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom sf_macro(final TeXParser tp, final String[] args) throws ParseException { return new SsAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root); } public static final Atom LaTeX_macro(final TeXParser tp, final String[] args) throws ParseException { return new LaTeXAtom(); } public static final Atom GeoGebra_macro(final TeXParser tp, final String[] args) throws ParseException { TeXFormula tf = new TeXFormula("\\mathbb{G}\\mathsf{e}"); tf.add(new GeoGebraLogoAtom()); tf.add("\\mathsf{Gebra}"); return new ColorAtom(tf.root, null, new Color(102, 102, 102)); } public static final Atom hphantom_macro(final TeXParser tp, final String[] args) throws ParseException { return new PhantomAtom(new TeXFormula(tp, args[1], false).root, true, false, false); } public static final Atom vphantom_macro(final TeXParser tp, final String[] args) throws ParseException { return new PhantomAtom(new TeXFormula(tp, args[1], false).root, false, true, true); } public static final Atom phantom_macro(final TeXParser tp, final String[] args) throws ParseException { return new PhantomAtom(new TeXFormula(tp, args[1], false).root, true, true, true); } public static final Atom big_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } return new BigDelimiterAtom((SymbolAtom) at, 1); } public static final Atom Big_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } return new BigDelimiterAtom((SymbolAtom) at, 2); } public static final Atom bigg_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } return new BigDelimiterAtom((SymbolAtom) at, 3); } public static final Atom Bigg_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } return new BigDelimiterAtom((SymbolAtom) at, 4); } public static final Atom bigl_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 1); att.type = TeXConstants.TYPE_OPENING; return att; } public static final Atom Bigl_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 2); att.type = TeXConstants.TYPE_OPENING; return att; } public static final Atom biggl_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 3); att.type = TeXConstants.TYPE_OPENING; return att; } public static final Atom Biggl_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 4); att.type = TeXConstants.TYPE_OPENING; return att; } public static final Atom bigr_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 1); att.type = TeXConstants.TYPE_CLOSING; return att; } public static final Atom Bigr_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 2); att.type = TeXConstants.TYPE_CLOSING; return att; } public static final Atom biggr_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 3); att.type = TeXConstants.TYPE_CLOSING; return att; } public static final Atom Biggr_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new TeXFormula(tp, args[1], false).root; if (!(at instanceof SymbolAtom)) { return at; } Atom att = new BigDelimiterAtom((SymbolAtom) at, 4); att.type = TeXConstants.TYPE_CLOSING; return att; } public static final Atom displaystyle_macro(final TeXParser tp, final String[] args) throws ParseException { Atom group = new TeXFormula(tp, tp.getOverArgument(), false).root; return new StyleAtom(TeXConstants.STYLE_DISPLAY, group); } public static final Atom scriptstyle_macro(final TeXParser tp, final String[] args) throws ParseException { Atom group = new TeXFormula(tp, tp.getOverArgument(), false).root; return new StyleAtom(TeXConstants.STYLE_SCRIPT, group); } public static final Atom textstyle_macro(final TeXParser tp, final String[] args) throws ParseException { Atom group = new TeXFormula(tp, tp.getOverArgument(), false).root; return new StyleAtom(TeXConstants.STYLE_TEXT, group); } public static final Atom scriptscriptstyle_macro(final TeXParser tp, final String[] args) throws ParseException { Atom group = new TeXFormula(tp, tp.getOverArgument(), false).root; return new StyleAtom(TeXConstants.STYLE_SCRIPT_SCRIPT, group); } public static final Atom rotatebox_macro(final TeXParser tp, final String[] args) throws ParseException { return new RotateAtom(new TeXFormula(tp, args[2]).root, args[1] == null ? 0 : Double.parseDouble(args[1]), args[3]); } public static final Atom reflectbox_macro(final TeXParser tp, final String[] args) throws ParseException { return new ReflectAtom(new TeXFormula(tp, args[1]).root); } public static final Atom scalebox_macro(final TeXParser tp, final String[] args) throws ParseException { return new ScaleAtom(new TeXFormula(tp, args[2]).root, Double.parseDouble(args[1]), args[3] == null ? Double.parseDouble(args[1]) : Double.parseDouble(args[3])); } public static final Atom resizebox_macro(final TeXParser tp, final String[] args) throws ParseException { return new ResizeAtom(new TeXFormula(tp, args[3]).root, args[1], args[2], args[1].equals("!") || args[2].equals("!")); } public static final Atom raisebox_macro(final TeXParser tp, final String[] args) throws ParseException { float[] raise = SpaceAtom.getLength(args[1]); if (raise.length == 1) { throw new ParseException("Error in getting raise in \\raisebox command !"); } float[] height = SpaceAtom.getLength(args[3]); float[] depth = SpaceAtom.getLength(args[4]); if (height.length == 1 || height[1] == 0) { height = new float[]{-1, 0}; } if (depth.length == 1 || depth[1] == 0) { depth = new float[]{-1, 0}; } return new RaiseAtom(new TeXFormula(tp, args[2]).root, (int) raise[0], raise[1], (int) height[0], height[1], (int) depth[0], depth[1]); } public static final Atom shadowbox_macro(final TeXParser tp, final String[] args) throws ParseException { return new ShadowAtom(new TeXFormula(tp, args[1]).root); } public static final Atom ovalbox_macro(final TeXParser tp, final String[] args) throws ParseException { return new OvalAtom(new TeXFormula(tp, args[1]).root); } public static final Atom doublebox_macro(final TeXParser tp, final String[] args) throws ParseException { return new DoubleFramedAtom(new TeXFormula(tp, args[1]).root); } public static final Atom definecolor_macro(final TeXParser tp, final String[] args) throws ParseException { Color color = null; if ("gray".equals(args[2])) { float f = Float.parseFloat(args[3]); color = new Color(f, f, f); } else if ("rgb".equals(args[2])) { StringTokenizer stok = new StringTokenizer(args[3], ";,"); if (stok.countTokens() != 3) throw new ParseException("The color definition must have three components !"); float r = Float.parseFloat(stok.nextToken().trim()); float g = Float.parseFloat(stok.nextToken().trim()); float b = Float.parseFloat(stok.nextToken().trim()); color = new Color(r, g, b); } else if ("cmyk".equals(args[2])) { StringTokenizer stok = new StringTokenizer(args[3], ",;"); if (stok.countTokens() != 4) throw new ParseException("The color definition must have four components !"); float[] cmyk = new float[4]; for (int i = 0; i < 4; i++) cmyk[i] = Float.parseFloat(stok.nextToken().trim()); float k = 1 - cmyk[3]; color = new Color(k * (1 - cmyk[0]), k * (1 - cmyk[1]), k * (1 - cmyk[2])); } else throw new ParseException("The color model is incorrect !"); ColorAtom.Colors.put(args[1], color); return null; } public static final Atom fgcolor_macro(final TeXParser tp, final String[] args) throws ParseException { try { return new ColorAtom(new TeXFormula(tp, args[2]).root, null, ColorAtom.getColor(args[1])); } catch (NumberFormatException e) { throw new ParseException(e.toString()); } } public static final Atom bgcolor_macro(final TeXParser tp, final String[] args) throws ParseException { try { return new ColorAtom(new TeXFormula(tp, args[2]).root, ColorAtom.getColor(args[1]), null); } catch (NumberFormatException e) { throw new ParseException(e.toString()); } } public static final Atom textcolor_macro(final TeXParser tp, final String[] args) throws ParseException { return new ColorAtom(new TeXFormula(tp, args[2]).root, null, ColorAtom.getColor(args[1])); } public static final Atom colorbox_macro(final TeXParser tp, final String[] args) throws ParseException { Color c = ColorAtom.getColor(args[1]); return new FBoxAtom(new TeXFormula(tp, args[2]).root, c, c); } public static final Atom fcolorbox_macro(final TeXParser tp, final String[] args) throws ParseException { return new FBoxAtom(new TeXFormula(tp, args[3]).root, ColorAtom.getColor(args[2]), ColorAtom.getColor(args[1])); } public static final Atom cong_macro(final TeXParser tp, final String[] args) throws ParseException { VRowAtom vra = new VRowAtom(SymbolAtom.get("equals")); vra.add(new SpaceAtom(TeXConstants.UNIT_MU, 0f, 1.5f, 0f)); vra.add(SymbolAtom.get("sim")); vra.setRaise(TeXConstants.UNIT_MU, -1f); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, vra); } public static final Atom doteq_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(SymbolAtom.get("equals"), SymbolAtom.get("ldotp"), TeXConstants.UNIT_MU, 3.7f, false, true); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom jlmDynamic_macro(final TeXParser tp, final String[] args) throws ParseException { if (DynamicAtom.hasAnExternalConverterFactory()) { return new DynamicAtom(args[1], args[2]); } else { throw new ParseException("No ExternalConverterFactory set !"); } } public static final Atom jlmExternalFont_macro(final TeXParser tp, final String[] args) throws ParseException { JavaFontRenderingBox.setFont(args[1]); return null; } public static final Atom jlmText_macro(final TeXParser tp, final String[] args) throws ParseException { return new JavaFontRenderingAtom(args[1], Font.PLAIN); } public static final Atom jlmTextit_macro(final TeXParser tp, final String[] args) throws ParseException { return new JavaFontRenderingAtom(args[1], Font.ITALIC); } public static final Atom jlmTextbf_macro(final TeXParser tp, final String[] args) throws ParseException { return new JavaFontRenderingAtom(args[1], Font.BOLD); } public static final Atom jlmTextitbf_macro(final TeXParser tp, final String[] args) throws ParseException { return new JavaFontRenderingAtom(args[1], Font.BOLD | Font.ITALIC); } public static final Atom DeclareMathSizes_macro(final TeXParser tp, final String[] args) throws ParseException { DefaultTeXFont.setMathSizes(Float.parseFloat(args[1]), Float.parseFloat(args[2]), Float.parseFloat(args[3]), Float.parseFloat(args[4])); return null; } public static final Atom magnification_macro(final TeXParser tp, final String[] args) throws ParseException { DefaultTeXFont.setMagnification(Float.parseFloat(args[1])); return null; } public static final Atom hline_macro(final TeXParser tp, final String[] args) throws ParseException { if (!tp.isArrayMode()) throw new ParseException("The macro \\hline is only available in array mode !"); return new HlineAtom(); } public static final Atom size_macros(final TeXParser tp, final String[] args) throws ParseException { float f = 1f; if ("tiny".equals(args[0])) { f = 0.5f; } else if ("scriptsize".equals(args[0])) { f = 0.7f; } else if ("footnotesize".equals(args[0])) { f = 0.8f; } else if ("small".equals(args[0])) { f = 0.9f; } else if ("normalsize".equals(args[0])) { f = 1f; } else if ("large".equals(args[0])) { f = 1.2f; } else if ("Large".equals(args[0])) { f = 1.4f; } else if ("LARGE".equals(args[0])) { f = 1.8f; } else if ("huge".equals(args[0])) { f = 2f; } else if ("Huge".equals(args[0])) { f = 2.5f; } return new MonoScaleAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root, f); } public static final Atom jlatexmathcumsup_macro(final TeXParser tp, final String[] args) throws ParseException { return new CumulativeScriptsAtom(tp.getLastAtom(), null, new TeXFormula(tp, args[1]).root); } public static final Atom jlatexmathcumsub_macro(final TeXParser tp, final String[] args) throws ParseException { return new CumulativeScriptsAtom(tp.getLastAtom(), new TeXFormula(tp, args[1]).root, null); } public static final Atom dotminus_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(SymbolAtom.get("minus"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, -3.3f, false, true); return new TypedAtom(TeXConstants.TYPE_BINARY_OPERATOR, TeXConstants.TYPE_BINARY_OPERATOR, at); } public static final Atom ratio_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom geoprop_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom ddot = new RowAtom(SymbolAtom.get("normaldot")); ddot.add(new SpaceAtom(TeXConstants.UNIT_MU, 4f, 0f, 0f)); ddot.add(SymbolAtom.get("normaldot")); Atom at = new UnderOverAtom(SymbolAtom.get("minus"), ddot, TeXConstants.UNIT_MU, -3.4f, false, ddot, TeXConstants.UNIT_MU, -3.4f, false); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom minuscolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("minus")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); at.add(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom minuscoloncolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("minus")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); at.add(colon); at.add(colon); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom simcolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("sim")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); at.add(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom simcoloncolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("sim")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); at.add(colon); at.add(colon); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom approxcolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("approx")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); at.add(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom approxcoloncolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("approx")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); at.add(colon); at.add(colon); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom equalscolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("equals")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); at.add(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom equalscoloncolon_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(SymbolAtom.get("equals")); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.095f, 0f, 0f)); Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); at.add(colon); at.add(colon); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom colonminus_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("minus")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom coloncolonminus_macro(final TeXParser tp, final String[] args) throws ParseException { Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); RowAtom at = new RowAtom(colon); at.add(colon); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("minus")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom colonequals_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("equals")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom coloncolonequals_macro(final TeXParser tp, final String[] args) throws ParseException { Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); RowAtom at = new RowAtom(colon); at.add(colon); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("equals")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom coloncolon_macro(final TeXParser tp, final String[] args) throws ParseException { Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); RowAtom at = new RowAtom(colon); at.add(colon); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom colonsim_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("sim")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom coloncolonsim_macro(final TeXParser tp, final String[] args) throws ParseException { Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); RowAtom at = new RowAtom(colon); at.add(colon); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("sim")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom colonapprox_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom at = new RowAtom(new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true)); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("approx")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom coloncolonapprox_macro(final TeXParser tp, final String[] args) throws ParseException { Atom colon = new UnderOverAtom(SymbolAtom.get("normaldot"), SymbolAtom.get("normaldot"), TeXConstants.UNIT_MU, 5.2f, false, true); RowAtom at = new RowAtom(colon); at.add(colon); at.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.32f, 0f, 0f)); at.add(SymbolAtom.get("approx")); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom smallfrowneq_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(SymbolAtom.get("equals"), SymbolAtom.get("smallfrown"), TeXConstants.UNIT_MU, -2f, true, true); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } public static final Atom hstrok_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom ra = new RowAtom(new SpaceAtom(TeXConstants.UNIT_EX, -0.1f, 0f, 0f)); ra.add(SymbolAtom.get("bar")); VRowAtom vra = new VRowAtom(new LapedAtom(ra, 'r')); vra.setRaise(TeXConstants.UNIT_EX, -0.1f); RowAtom at = new RowAtom(vra); at.add(new RomanAtom(new CharAtom('h', tp.formula.textStyle))); return at; } public static final Atom Hstrok_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom ra = new RowAtom(new SpaceAtom(TeXConstants.UNIT_EX, 0.28f, 0f, 0f)); ra.add(SymbolAtom.get("textendash")); VRowAtom vra = new VRowAtom(new LapedAtom(ra, 'r')); vra.setRaise(TeXConstants.UNIT_EX, 0.55f); RowAtom at = new RowAtom(vra); at.add(new RomanAtom(new CharAtom('H', tp.formula.textStyle))); return at; } public static final Atom dstrok_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom ra = new RowAtom(new SpaceAtom(TeXConstants.UNIT_EX, 0.25f, 0f, 0f)); ra.add(SymbolAtom.get("bar")); VRowAtom vra = new VRowAtom(new LapedAtom(ra, 'r')); vra.setRaise(TeXConstants.UNIT_EX, -0.1f); RowAtom at = new RowAtom(vra); at.add(new RomanAtom(new CharAtom('d', tp.formula.textStyle))); return at; } public static final Atom Dstrok_macro(final TeXParser tp, final String[] args) throws ParseException { RowAtom ra = new RowAtom(new SpaceAtom(TeXConstants.UNIT_EX, -0.1f, 0f, 0f)); ra.add(SymbolAtom.get("bar")); VRowAtom vra = new VRowAtom(new LapedAtom(ra, 'r')); vra.setRaise(TeXConstants.UNIT_EX, -0.55f); RowAtom at = new RowAtom(vra); at.add(new RomanAtom(new CharAtom('D', tp.formula.textStyle))); return at; } public static final Atom kern_macro(final TeXParser tp, final String[] args) throws ParseException { float[] info = SpaceAtom.getLength(args[1]); if (info.length == 1) { throw new ParseException("Error in getting kern in \\kern command !"); } return new SpaceAtom((int) info[0], info[1], 0f, 0f); } public static final Atom char_macro(final TeXParser tp, final String[] args) throws ParseException { String number = args[1]; int radix = 10; if (number.startsWith("0x") || number.startsWith("0X")) { number = number.substring(2); radix = 16; } else if (number.startsWith("x") || number.startsWith("X")) { number = number.substring(1); radix = 16; } else if (number.startsWith("0")) { number = number.substring(1); radix = 8; } int n = Integer.parseInt(number, radix); return tp.convertCharacter((char) n, true); } public static final Atom T_macro(final TeXParser tp, final String[] args) throws ParseException { return new RotateAtom(new TeXFormula(tp, args[1]).root, 180, "origin=cc"); } public static final Atom romannumeral_macro(final TeXParser tp, final String[] args) throws ParseException { int[] numbers = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; String[] letters = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; String roman = ""; int num = Integer.parseInt(args[1].trim()); for (int i = 0; i < numbers.length; i++) { while (num >= numbers[i]) { roman += letters[i]; num -= numbers[i]; } } if (args[0].charAt(0) == 'r') { roman = roman.toLowerCase(); } return new TeXFormula(roman, false).root; } public static final Atom textcircled_macro(final TeXParser tp, final String[] args) throws ParseException { return new TextCircledAtom(new RomanAtom(new TeXFormula(tp, args[1]).root)); } public static final Atom textsc_macro(final TeXParser tp, final String[] args) throws ParseException { return new SmallCapAtom(new TeXFormula(tp, args[1], false).root); } public static final Atom sc_macro(final TeXParser tp, final String[] args) throws ParseException { return new SmallCapAtom(new TeXFormula(tp, tp.getOverArgument(), null, false, tp.isIgnoreWhiteSpace()).root); } public static final Atom quad_macro(final TeXParser tp, final String[] args) throws ParseException { return new SpaceAtom(TeXConstants.UNIT_EM, 1f, 0f, 0f); } public static final Atom muskip_macros(final TeXParser tp, final String[] args) throws ParseException { int type = 0; if (args[0].equals(",")) { type = TeXConstants.THINMUSKIP; } else if (args[0].equals(":")) { type = TeXConstants.MEDMUSKIP; } else if (args[0].equals(";")) { type = TeXConstants.THICKMUSKIP; } else if (args[0].equals("thinspace")) { type = TeXConstants.THINMUSKIP; } else if (args[0].equals("medspace")) { type = TeXConstants.MEDMUSKIP; } else if (args[0].equals("thickspace")) { type = TeXConstants.THICKMUSKIP; } else if (args[0].equals("!")) { type = TeXConstants.NEGTHINMUSKIP; } else if (args[0].equals("negthinspace")) { type = TeXConstants.NEGTHINMUSKIP; } else if (args[0].equals("negmedspace")) { type = TeXConstants.NEGMEDMUSKIP; } else if (args[0].equals("negthickspace")) { type = TeXConstants.NEGTHICKMUSKIP; } return new SpaceAtom(type); } public static final Atom surd_macro(final TeXParser tp, final String[] args) throws ParseException { return new VCenteredAtom(SymbolAtom.get("surdsign")); } public static final Atom int_macro(final TeXParser tp, final String[] args) throws ParseException { Atom integral = SymbolAtom.get("int").clone(); integral.type_limits = TeXConstants.SCRIPT_NOLIMITS; return integral; } public static final Atom oint_macro(final TeXParser tp, final String[] args) throws ParseException { Atom integral = SymbolAtom.get("oint").clone(); integral.type_limits = TeXConstants.SCRIPT_NOLIMITS; return integral; } public static final Atom iint_macro(final TeXParser tp, final String[] args) throws ParseException { Atom integral = SymbolAtom.get("int").clone(); integral.type_limits = TeXConstants.SCRIPT_NOLIMITS; RowAtom ra = new RowAtom(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -6f, 0f, 0f)); ra.add(integral); ra.lookAtLastAtom = true; return new TypedAtom(TeXConstants.TYPE_BIG_OPERATOR, TeXConstants.TYPE_BIG_OPERATOR, ra); } public static final Atom iiint_macro(final TeXParser tp, final String[] args) throws ParseException { Atom integral = SymbolAtom.get("int").clone(); integral.type_limits = TeXConstants.SCRIPT_NOLIMITS; RowAtom ra = new RowAtom(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -6f, 0f, 0f)); ra.add(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -6f, 0f, 0f)); ra.add(integral); ra.lookAtLastAtom = true; return new TypedAtom(TeXConstants.TYPE_BIG_OPERATOR, TeXConstants.TYPE_BIG_OPERATOR, ra); } public static final Atom iiiint_macro(final TeXParser tp, final String[] args) throws ParseException { Atom integral = SymbolAtom.get("int").clone(); integral.type_limits = TeXConstants.SCRIPT_NOLIMITS; RowAtom ra = new RowAtom(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -6f, 0f, 0f)); ra.add(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -6f, 0f, 0f)); ra.add(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -6f, 0f, 0f)); ra.add(integral); ra.lookAtLastAtom = true; return new TypedAtom(TeXConstants.TYPE_BIG_OPERATOR, TeXConstants.TYPE_BIG_OPERATOR, ra); } public static final Atom idotsint_macro(final TeXParser tp, final String[] args) throws ParseException { Atom integral = SymbolAtom.get("int").clone(); integral.type_limits = TeXConstants.SCRIPT_NOLIMITS; RowAtom ra = new RowAtom(integral); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -1f, 0f, 0f)); Atom cdotp = SymbolAtom.get("cdotp"); RowAtom cdots = new RowAtom(cdotp); cdots.add(cdotp); cdots.add(cdotp); ra.add(new TypedAtom(TeXConstants.TYPE_INNER, TeXConstants.TYPE_INNER, cdots)); ra.add(new SpaceAtom(TeXConstants.UNIT_MU, -1f, 0f, 0f)); ra.add(integral); ra.lookAtLastAtom = true; return new TypedAtom(TeXConstants.TYPE_BIG_OPERATOR, TeXConstants.TYPE_BIG_OPERATOR, ra); } public static final Atom lmoustache_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new BigDelimiterAtom((SymbolAtom) SymbolAtom.get("lmoustache").clone(), 1); at.type = TeXConstants.TYPE_OPENING; return at; } public static final Atom rmoustache_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new BigDelimiterAtom((SymbolAtom) SymbolAtom.get("rmoustache").clone(), 1); at.type = TeXConstants.TYPE_CLOSING; return at; } public static final Atom insertBreakMark_macro(final TeXParser tp, final String[] args) throws ParseException { return new BreakMarkAtom(); } public static final Atom jlmXML_macro(final TeXParser tp, final String[] args) throws ParseException { Map map = tp.formula.jlmXMLMap; String str = args[1]; StringBuffer buffer = new StringBuffer(); int start = 0; int pos; while ((pos = str.indexOf("$")) != -1) { if (pos < str.length() - 1) { start = pos; while (++start < str.length() && Character.isLetter(str.charAt(start))); String key = str.substring(pos + 1, start); String value = map.get(key); if (value != null) { buffer.append(str.substring(0, pos)); buffer.append(value); } else { buffer.append(str.substring(0, start)); } str = str.substring(start); } else { buffer.append(str); str = ""; } } buffer.append(str); str = buffer.toString(); return new TeXFormula(tp, str).root; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/BreakFormula.java0000644000175000017500000001167512275735442027464 0ustar sylvestresylvestre/* BreakFormula.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.util.List; import java.util.Stack; public final class BreakFormula { public static Box split(Box box, float width, float interline) { if (box instanceof HorizontalBox) { return split((HorizontalBox) box, width, interline); } else if (box instanceof VerticalBox) { return split((VerticalBox) box, width, interline); } else { return box; } } public static Box split(HorizontalBox hbox, float width, float interline) { VerticalBox vbox = new VerticalBox(); HorizontalBox first; HorizontalBox second = null; Stack positions = new Stack(); float w = -1; while (hbox.width > width && (w = canBreak(positions, hbox, width)) != hbox.width) { Position pos = positions.pop(); HorizontalBox[] hboxes = pos.hbox.split(pos.index - 1); first = hboxes[0]; second = hboxes[1]; while (!positions.isEmpty()) { pos = positions.pop(); hboxes = pos.hbox.splitRemove(pos.index); hboxes[0].add(first); hboxes[1].add(0, second); first = hboxes[0]; second = hboxes[1]; } vbox.add(first, interline); hbox = second; } if (second != null) { vbox.add(second, interline); return vbox; } return hbox; } private static Box split(VerticalBox vbox, float width, float interline) { VerticalBox newBox = new VerticalBox(); for (Box box:vbox.children) { newBox.add(split(box, width, interline)); } return newBox; } private static float canBreak(Stack stack, HorizontalBox hbox, float width) { List children = hbox.children; float[] cumWidth = new float[children.size() + 1]; cumWidth[0] = 0; for (int i = 0; i < children.size(); i++) { Box box = children.get(i); cumWidth[i + 1] = cumWidth[i] + box.width; if (cumWidth[i + 1] > width) { int pos = getBreakPosition(hbox, i); if (box instanceof HorizontalBox) { Stack newStack = new Stack(); float w = canBreak(newStack, (HorizontalBox) box, width - cumWidth[i]); if (w != box.width && (cumWidth[i] + w <= width || pos == -1)) { stack.push(new Position(i - 1, hbox)); stack.addAll(newStack); return cumWidth[i] + w; } } if (pos != -1) { stack.push(new Position(pos, hbox)); return cumWidth[pos]; } } } return hbox.width; } private static int getBreakPosition(HorizontalBox hb, int i) { if (hb.breakPositions == null) { return -1; } if (hb.breakPositions.size() == 1 && hb.breakPositions.get(0) <= i) { return hb.breakPositions.get(0); } int pos = 0; for (; pos < hb.breakPositions.size(); pos++) { if (hb.breakPositions.get(pos) > i) { if (pos == 0) { return -1; } return hb.breakPositions.get(pos - 1); } } return hb.breakPositions.get(pos - 1); } private static class Position { int index; HorizontalBox hbox; Position(int index, HorizontalBox hbox) { this.index = index; this.hbox = hbox; } } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TextStyleMappingNotFoundException.java0000644000175000017500000000342612275735442033722 0ustar sylvestresylvestre/* TextStyleMappingNotFoundException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals a missing text style mapping. * * @author Kurt Vermeulen */ public class TextStyleMappingNotFoundException extends JMathTeXException { protected TextStyleMappingNotFoundException(String styleName) { super("No mapping found for the text style '" + styleName + "'! " + "Insert a <" + DefaultTeXFontParser.STYLE_MAPPING_EL + ">-element in '" + DefaultTeXFontParser.RESOURCE_NAME + "'."); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/TeXFormulaSettings.xml0000644000175000017500000012240312275735442030530 0ustar sylvestresylvestre libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/RaiseAtom.java0000644000175000017500000000442112275735442026765 0ustar sylvestresylvestre/* RaiseAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a scaled Atom. */ public class RaiseAtom extends Atom { private Atom base; private int runit, hunit, dunit; private float r, h, d; public RaiseAtom(Atom base, int runit, float r, int hunit, float h, int dunit, float d) { this.base = base; this.runit = runit; this.r = r; this.hunit = hunit; this.h = h; this.dunit = dunit; this.d = d; } public int getLeftType() { return base.getLeftType(); } public int getRightType() { return base.getRightType(); } public Box createBox(TeXEnvironment env) { Box bbox = base.createBox(env); if (runit == -1) { bbox.setShift(0); } else { bbox.setShift(-r * SpaceAtom.getFactor(runit, env)); } if (hunit == -1) { return bbox; } HorizontalBox hbox = new HorizontalBox(bbox); hbox.setHeight(h * SpaceAtom.getFactor(hunit, env)); if (dunit == -1) { hbox.setDepth(0); } else { hbox.setDepth(d * SpaceAtom.getFactor(dunit, env)); } return hbox; } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/CharBox.java0000644000175000017500000000507412275735442026434 0ustar sylvestresylvestre/* CharBox.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.awt.Stroke; import java.awt.BasicStroke; /** * A box representing a single character. */ public class CharBox extends Box { private final CharFont cf; private final float size; private final char[] arr = new char[1]; /** * Create a new CharBox that will represent the character defined by the given * Char-object. * * @param c a Char-object containing the character's font information. */ public CharBox(Char c) { cf = c.getCharFont(); size = c.getMetrics().getSize(); width = c.getWidth(); height = c.getHeight(); depth = c.getDepth(); } public void draw(Graphics2D g2, float x, float y) { drawDebug(g2, x, y); AffineTransform at = g2.getTransform(); g2.translate(x, y); Font font = FontInfo.getFont(cf.fontId); if (size != 1) { g2.scale(size, size); } if (g2.getFont() != font) { g2.setFont(font); } arr[0] = cf.c; g2.drawChars(arr, 0, 1, 0, 0); g2.setTransform(at); } public int getLastFontId() { return cf.fontId; } public String toString() { return super.toString() + "=" + cf.c; } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/ParseException.java0000644000175000017500000000316712275735442030040 0ustar sylvestresylvestre/* ParseException.java * ========================================================================= * This file is originally part of the JMathTeX Library - http://jmathtex.sourceforge.net * * Copyright (C) 2004-2007 Universiteit Gent * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; /** * Signals that an error occured while parsing a string to a formula. */ public class ParseException extends JMathTeXException { public ParseException(String str, Throwable cause) { super(str, cause); } public ParseException(String str) { super(str); } } libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/dynamic/0000755000175000017500000000000012275735442025661 5ustar sylvestresylvestrelibjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/dynamic/ExternalConverterFactory.java0000644000175000017500000000262512275735442033533 0ustar sylvestresylvestre/* ExternalConverterFactory.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath.dynamic; public interface ExternalConverterFactory { public ExternalConverter getExternalConverter(); }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/dynamic/DynamicAtom.java0000644000175000017500000000610312275735442030731 0ustar sylvestresylvestre/* DynamicAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath.dynamic; import org.scilab.forge.jlatexmath.Atom; import org.scilab.forge.jlatexmath.Box; import org.scilab.forge.jlatexmath.EmptyAtom; import org.scilab.forge.jlatexmath.StrutBox; import org.scilab.forge.jlatexmath.TeXEnvironment; import org.scilab.forge.jlatexmath.TeXFormula; /** * This kind of atom is used to have a dynamic content * which comes from an other soft such as ggb. * The goal is to avoid the reparsing (and the reatomization) * of the expression. */ public class DynamicAtom extends Atom { private static ExternalConverterFactory ecFactory; private ExternalConverter converter; private TeXFormula formula = new TeXFormula(); private String externalCode; private boolean insert; private boolean refreshed; public DynamicAtom(String externalCode, String option) { this.externalCode = externalCode; if (ecFactory != null) { this.converter = ecFactory.getExternalConverter(); } if (option != null && option.equals("i")) { insert = true; } } public static boolean hasAnExternalConverterFactory() { return ecFactory != null; } public static void setExternalConverterFactory(ExternalConverterFactory factory) { ecFactory = factory; } public boolean getInsertMode() { return insert; } public Atom getAtom() { if (!refreshed) { formula.setLaTeX(converter.getLaTeXString(externalCode)); refreshed = true; } if (formula.root == null) { return new EmptyAtom(); } return formula.root; } public Box createBox(TeXEnvironment env) { if (converter != null) { if (refreshed) { refreshed = false; } else { formula.setLaTeX(converter.getLaTeXString(externalCode)); } if (formula.root != null) { return formula.root.createBox(env); } } return new StrutBox(0, 0, 0, 0); } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/dynamic/ExternalConverter.java0000644000175000017500000000261212275735442032177 0ustar sylvestresylvestre/* ExternalConverter.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2010 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath.dynamic; public interface ExternalConverter { public String getLaTeXString(String externalCode); }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/MacroInfo.java0000644000175000017500000001047512275735442026764 0ustar sylvestresylvestre/* MacroInfo.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2009 DENIZET Calixte * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ package org.scilab.forge.jlatexmath; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; public class MacroInfo { public static HashMap Commands = new HashMap(300); public static HashMap Packages = new HashMap(); public Object pack; public Method macro; public int nbArgs; public boolean hasOptions = false; public int posOpts; public MacroInfo(Object pack, Method macro, int nbArgs) { this.pack = pack; this.macro = macro; this.nbArgs = nbArgs; } public MacroInfo(Object pack, Method macro, int nbArgs, int posOpts) { this(pack, macro, nbArgs); this.hasOptions = true; this.posOpts = posOpts; } public MacroInfo(int nbArgs, int posOpts) { this(null, (Method) null, nbArgs); this.hasOptions = true; this.posOpts = posOpts; } public MacroInfo(int nbArgs) { this(null, (Method) null, nbArgs); } public MacroInfo(String className, String methodName, float nbArgs) { int nba = (int) nbArgs; Class[] args = new Class[]{TeXParser.class, String[].class}; try { Object pack = Packages.get(className); if (pack == null) { Class cl = Class.forName(className); pack = cl.getConstructor(new Class[0]).newInstance(new Object[0]); Packages.put(className, pack); } this.pack = pack; this.macro = pack.getClass().getDeclaredMethod(methodName, args); this.nbArgs = nba; } catch (Exception e) { System.err.println("Cannot load package " + className + ":"); System.err.println(e.toString()); } } public MacroInfo(String className, String methodName, float nbArgs, float posOpts) { int nba = (int) nbArgs; Class[] args = new Class[]{TeXParser.class, String[].class}; try { Object pack = Packages.get(className); if (pack == null) { Class cl = Class.forName(className); pack = cl.getConstructor(new Class[0]).newInstance(new Object[0]); Packages.put(className, pack); } this.pack = pack; this.macro = pack.getClass().getDeclaredMethod(methodName, args); this.nbArgs = nba; this.hasOptions = true; this.posOpts = (int) posOpts; } catch (Exception e) { System.err.println("Cannot load package " + className + ":"); System.err.println(e.toString()); } } public Object invoke(final TeXParser tp, final String[] args) throws ParseException { Object[] argsMethod = {(Object) tp, (Object) args}; try { return macro.invoke(pack, argsMethod); } catch (IllegalAccessException e) { throw new ParseException("Problem with command " + args[0] + " at position " + tp.getLine() + ":" + tp.getCol() + "\n", e); } catch (IllegalArgumentException e) { throw new ParseException("Problem with command " + args[0] + " at position " + tp.getLine() + ":" + tp.getCol() + "\n", e); } catch (InvocationTargetException e) { Throwable th = e.getCause(); throw new ParseException("Problem with command " + args[0] + " at position " + tp.getLine() + ":" + tp.getCol() + "\n" + th.getMessage()); } } }libjlatexmath-java-1.0.3/src/org/scilab/forge/jlatexmath/GlueSettings.xml0000644000175000017500000001443712275735442027405 0ustar sylvestresylvestre