pax_global_header00006660000000000000000000000064132654667150014531gustar00rootroot0000000000000052 comment=cb86da9c5747ba1788fcb913988b98d82cb0bc0d jlatexmath-1.0.7/000077500000000000000000000000001326546671500136775ustar00rootroot00000000000000jlatexmath-1.0.7/.gitignore000066400000000000000000000000631326546671500156660ustar00rootroot00000000000000target .classpath .settings .project /bin /dist *~ jlatexmath-1.0.7/.travis.yml000066400000000000000000000006241326546671500160120ustar00rootroot00000000000000sudo: required language: java jdk: - oraclejdk8 - oraclejdk9 - openjdk7 before_install: - sudo apt-get -qq update - sudo apt-get build-dep libjlatexmath-java before_script: - "export DISPLAY=:99.0" - "sh -e /etc/init.d/xvfb start" - sleep 3 # give xvfb some time to start after_success: - mvn cobertura:cobertura coveralls:report addons: hosts: - jlmhost hostname: jlmhost jlatexmath-1.0.7/CHANGELOG000066400000000000000000000277761326546671500151340ustar00rootroot00000000000000jlatexmath (1.0.7) * Fix °C * Fix deformed characters in SVG output by changing font scaling jlatexmath (1.0.6) * Add TeX style macros \bangle, \brace and \brack. * Add the macro \questeq. * Add the macro \longdiv. * Add \qquad as a Java macro rather than a String definition * Fix an issue with predefined string commands with a RowAtom (\qquad used two times) jlatexmath (1.0.5) * Remove ligatures info for cyrillic * Add italic correction only in math mode. * Add a command \mathnormal. * Float.MIN_VALUE is not -Float.MAX_VALUE ! * Italic correction was not taken into account when making box for a CharSymbol. * Support ~ as non breakable space. jlatexmath (1.0.4) * Fix color displayed with the command bgcolor. * Add the linking exception to the license jlatexmath (1.0.3) * Pound sign was invalid in roman font. * Fix paths in MANIFEST.MF * By default, slightly increase left and right insets. * Allow use of # in code. * Add macro \fcscore. * CharBox not correctly drawn in multithread context * Add macros \texteuro and \euro ( and map char € on \euro) * Add macro \st (i.e. strike-through) * Fix arrow shift in \overrightarrow macro * Fix several bugs due to modification in VRowAtom. jlatexmath (1.0.2) * Fix for ticket 1113: by default interline is 1ex (can be set with TeXIconBuilder::setInterLineSpacing (see Example7)) * Fix bug with maxwidth. * Use default Java font when char is in an unknown unicode block. * Fix bug in \LaTeX (due to modification of EM value) * Fix bug in parser when no chars after command \cr * Add missing glyph in jlm_cmex10.ttf (char 183) * jlatexmath-minimal.zip renamed to jlatexmath-minimal-${version}.zip jlatexmath (1.0.1) * Negative spaces were not taken into accound at the end of a horizontal box. * Add command \Join. * Fix bad space around \begin{array}...\end{array} * There were no spaces around fraction (\nulldelimiterspace). * Eat one white (if it exists) after a \cr. * Color name must not be case sensitive * Add an example to connect C++ and JLaTeXMath in using Giws * Fix bad cmex10.ttf rendering with OpenJDK * Add \L, \l, \yen, \mathsterling (in unicode too) * Handle nbsp, \P and \S * Fix ligatures definitions in XML (\textbf{\text{-7}} was printed as \Omega) * Handle auto-break after a binop or relation op. * Spaces were not ignored in tabular options. * Bad positions of the exponent & indice with Bigr{|}_1^3 * Fix bug with line-breaking (infinite loop on "\\ {abcdef}a" or exceptions). * Option added for max. width vs exact width. Thanks to Felix Natter for the patch. * Update the example to use the TeXIconBuilder. Thanks to Felix Natter for the patch. jlatexmath (1.0.0) * Fix bug 767: U with umlaut was shown as O with umlaut * Handle breakline in math mode * Remove String::isEmpty for Java 5 compatibility * Fix bug 907: bad rendering of text{text{x_1Test}} jlatexmath (0.9.8) * Bugs 907 fixed: bad rendering of \text{\text{x_1Test}}. * Handle breakline. * Add a static method TexFormula::getAsText to manage breakline and text as default. jlatexmath (0.9.7) * Fix bugs with \bold{\b and \DeclareMathOperator{\ in partial mode. * Add a static method TeXFormula.getAsText to break the line according to \n and to convert into a RomanAtom. * newcommand{ threw an exception in partial mode. * Fix bug with T carron and L carron. * Add the unicode for Euler's constant. * Fix bug when getting length. * Add the TeX macros: \above and \abovewithdelims. * Blanks after a command were skipped in text mode. * Extend the way to code colors in \textcolor, \colorbox, \fcolorbox, fgcolor and bgcolor. Now \textcolor{color} where color could be 255,0,0 (int RGB) or 1.0,0,0 (float RGB) or 1.0,0,0,0.5 (float CMYK) or 0.6 (Gray) or #FF0000 (html RGB) or FF0000 (hexa RGB) are accepted. * \v accent was badly scaled in certain font files. * Resizebox could lead to a box with NaN as dimensions ! * Add " for '' * Bug with \fg * Add a command \jlmXML which can replaces $foo by the value of foo attribute. * Add the possibility to add a break in a line in using \-. * Bad type for FencedAtom. * Bad translation of &8821; (right guillemet) into LaTeX. * Issue with default color in TeXIcon. * Fix build problems. * Change FSF address in LICENSE files. * Add a check !=null in cache. * Bugs fix: Columns was not centered in matrix env and \cot was displayed as \cos. * Add an option in jlmDynamic ([i]) to give the possibility to insert a group as if it was not a group. jlatexmath (0.9.6) * A TeXFormula.root must not be null in partial mode. * Provide a manifest for the fop plugin defining the dependency on the jlatexmath jar package jlatexmath (0.9.5) * Remove the Java reflection use and reorganization in the fonts dir. * Delegate the font rendering to java. * add \jlmText,\jlmTextit,\jlmTextbf,\jlmTextitbf and \jlmExternalFont * \huge\huge bug definitly fixed * \huge\huge foo apply two times the huge factor * In \overbrace{a}, the brace were misplaced. * Add \(...\) & \[...\], $$...$$, \begin{math}...\end{math} and \begin{displaymath}...\end{displaymath} * No display with \left in partial mode * The fop plugin is now available with fop 0.95 and 1.0 * \left(...\right) was inactive in \mathsf -- Calixte Denizet jlatexmath (0.9.4) * Update build.xml to add a base directory in zip archives. * Add \og and \fg. * In text mode, the normal dot must be a punctuation symbol. * Add \cal. * Add \it, \bf, \sc, ... * Add commands \textsc and \textcircled. * Fix a bug in the FOP plugin when latex is mixed with other image source. * $...$ was ignored * Add \raisebox and \romannumeral. * Handle options in \includegraphics. * Add a static method TeXFormula.setDefaultDPI(). * Add a static method TeXFormula.setDPITarget(float dpi). * Add shadowbox, doublebox and ovalbox. * Fix bugs on rotatebox (bad default center), with the parser (...\end{foo}a... gave an error)) and improve the debug mode. * Add Unicode chars again and forgotten commands * Avoid the loading of Greek fonts in math mode in GeoGebra. * Add characters in Unicode. * Fix a bug on \bigtriangleup and \bigtriangledown (use stmary ones) * Add support for few Unicode characters. * Fix a bug of cyclic referency between atoms coming from Unicode mapping. * Convert foreign numbers into roman ones * Add a preview of an error in partial mode * Add the left quote and reduce slightly the space under for underarrows * The percent for comments was not handled * HTML entity ℯ forgotten * Fix bug in aligned & alignedat env. (thanks to Graeme Kidd) * Add a thread-safe cache to cache the images generated from a formula * Can use dollar in \text or \mbox to switch into math mode * Add a static method TeXFormula.getPartialTeXFormula(String) which ignores errors and returns a partial TeXFormula (with no errors). Useful to display LaTeX on typing. * JLM is now ready for support FOP 1.0 :) * Fix a bug in jlmDynamic where the contents where preprocessed -- Calixte Denizet jlatexmath (0.9.3) * 0.9.3 version * Fix bug of size with colored box * Add a map between Unicode (math) and LaTeX symbols (e.g. ∞ => \infty) * problem with @{blah} in array env. jlatexmath (0.9.2) * add new commands \tiny, \footnotesize,... and \overwithdelims,... * Handle vertical and horizontal lines in array environment * Fix bug in the render of (over|under)braces * Fix bug with A{\scriptstyle BCD}E * Fix bug with \left(A\leftarrow B\right) * Fix bug with option *{20}c in array env. * An argument beginning with \left must be closed by \right (thanks to Juan Enrique) * Fix bug with \over (http://bugzilla.scilab.org/show_bug.cgi?id=7226) * Improve the render of a cfrac (thanks to Juan Enrique) * Improve the way to get the arguments of a macro (thanks to Juan Enrique) -- Calixte Denizet * Add cfrac macro * Possibility to have empty columns in array -- Calixte Denizet jlatexmath (0.9.1) * Few modifications in fop-plugin and improve \includegraphics -- Calixte Denizet * Moved fop.properties at the root directory (this is only needed to build and run fop plugin) * examples/Export/build.xml uses fop.properties -- Sylvestre Ledru Tue, 16 Feb 2010 10:51:04 +0100 jlatexmath (0.9) * Avoid two generations of labels with fop. -- Calixte Denizet Fri, 12 Feb 2010 18:23:56 +0100 jlatexmath (0.8.9) * Add new environments of amsmath : gather, flalign, alignat... * Add commands genfrac, rule, underscore, hdotsfor, multicolumn, ... * Add commands \textsuperscript et \textsubscript -- Calixte Denizet Thu, 11 Feb 2010 15:32:27 +0100 jlatexmath (0.8.7) * Add the command \prescript -- Calixte Denizet Mon, 11 Jan 2010 19:07:18 +0100 * Add the commands \mathclap, \mathrlap, \mathllap, \clap, \rlap and \llap -- Calixte Denizet Mon, 11 Jan 2010 16:29:51 +0100 * A basic (without options) \includegraphics command added -- Calixte Denizet Sun, 10 Jan 2010 22:17:04 +0100 jlatexmath (0.8.6) * \over, \hspace and \vspace are supported -- Calixte Denizet Sun, 10 Jan 2010 14:59:45 +0100 jlatexmath (0.8.5) * add a stroke T * Fix few bugs of rendering : cedilla, mathbf -- Calixte Denizet Sun, 03 Jan 2010 18:35:12 +0100 * Complete unicode table for latin alphabets * Fix few bugs of rendering -- Calixte Denizet Sat, 02 Jan 2010 20:03:36 +0100 jlatexmath (0.8.4) * Greek support added -- Calixte Denizet Thu, 31 Dec 2009 16:10:23 +0100 jlatexmath (0.8.3) * Cyrillic is now supported with unicode encoding (so we can search a cyrillic string in a pdf) * Fix several little bugs * Usage of commands such as \mathrm, \mathit, ... has been improved -- Calixte Denizet Wed, 30 Dec 2009 17:33:47 +0100 * Adds \fgcolor and \bgcolor -- Calixte Denizet Sat, 26 Dec 2009 21:05:38 +0100 * Fixes a bug with kerns pairs. -- Calixte Denizet Fri, 25 Dec 2009 00:03:44 +0100 * Provides a target to build the doc "ant doc" -- Sylvestre Ledru Wed, 16 Dec 2009 14:33:26 +0100 jlatexmath (0.8.2) * Fixes a bad sqrt symbol and adds a little space after an atom under a sqrt -- Calixte Denizet Thu, 17 Dec 2009 21:27:38 +0100 jlatexmath (0.8.1) * Fixes a regression in the version 0.8 -- Sylvestre Ledru Wed, 16 Dec 2009 14:33:26 +0100 jlatexmath (0.8) * Jlatexmath can now compile under Java 1.5 (registerFont is disabled in this case). -- Sylvestre Ledru Tue, 15 Dec 2009 17:46:18 +0100 jlatexmath (0.7) * Bad name in MANIFEST for stmary -- Calixte Denizet Thu, 12 Dec 2009 15:50:38 +0100 jlatexmath-1.0.7/COPYING000066400000000000000000000354221326546671500147400ustar00rootroot00000000000000 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 jlatexmath-1.0.7/LICENSE000066400000000000000000000053711326546671500147120ustar00rootroot00000000000000JLaTeXMath 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. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version. 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. jlatexmath-1.0.7/README.md000066400000000000000000000074151326546671500151650ustar00rootroot00000000000000
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.scilab.forge/jlatexmath/badge.svg?style=flat)](https://maven-badges.herokuapp.com/maven-central/org.scilab.forge/jlatexmath)
[![Coverage Status](https://coveralls.io/repos/github/opencollab/jlatexmath/badge.svg?branch=master)](https://coveralls.io/github/opencollab/jlatexmath?branch=master) JLaTeXMath is a Java library. Its main purpose is to display mathematical formulas written in LaTeX. JLaTeXMath is the best Java library to display LaTeX code. This library is used by numerous important projects like Scilab, Geogebra, Freeplane, Mathpiper, CaRMetal, Ultrastudio, etc. The default encoding is UTF-8. Most LaTeX commands are available including: * macros from amsmath and symbols from amssymb and stmaryrd * `\includegraphics` (without options) * TeX macro `\over` * accents from amsxtra package * macros `\definecolor`, `\textcolor`, `\colorbox` and `\fcolorbox` from the package color * macros `\rotatebox`, `\reflectbox` and `\scalebox` from the package graphicx * most latin unicode characters are available and cyrillic or greek characters are in the artifacts jlatexmath-font-cyrillic and jlatexmath-font-greek * commands `\newcommand` and `\newenvironment` * environments `array`, `matrix`, `pmatrix`,..., `eqnarray`, `cases` * vertical and horizontal lines are handled in array environment * commands to change the size of the font are available : `\tiny`, `\small`,...,`\LARGE`, `\huge`, `\Huge` * fonts which are embedded in the jlatexmath jar file for use by fop 1.0 to generate PDF, PS or EPS (SVG export with shaped fonts works fine too). Since jlatexmath version 0.9.5, the fop plugin is fully compatible with fop 1.0 and xmlgraphics 1.4 * and probably other things I forgot... A few examples are available in the source distribution, they show how to use JLaTeXMath and how to write new commands using Java. A first example :      a second one :      and a third one :      JLaTeXMath is used by Scilab to display formulas written in LaTeX in graphic windows: JLaTeXMath is a fork of the excellent project JMathTeX. To build the jlatexmath artifacts just type mvn clean install Some examples are provided to show how to use easily the library. Have fun and if you meet any problem, don't hesitate to create a new issue on github. ## License Regarding JLaTeXMath’s Classpath Exception and JavaScript: If you use the Google Web Toolkit (GWT) to compile JLaTeXMath to an “executable” (in JavaScript) you can then include/link this “executable” JavaScript library on a website or inside another program. In this case the rest of the website/program need not be licensed under the GPL. ## Benchmarks To run jmh benchmarks (measuring parse and render performance): ```bash # benchmarks are in core module cd jlatexmath mvn clean install -P benchmark ``` ## Code coverage To run code coverage ```bash mvn -DrepoToken=TOKEN clean cobertura:cobertura coveralls:report ``` jlatexmath-1.0.7/README_MINIMAL000066400000000000000000000007341326546671500157310ustar00rootroot00000000000000The minimal JLaTeXMath distribution doesn't contain the fonts, they're in separate jars. This kind of distribution is useful for web applications and I wrote it for GeoGebra team, if you want register a new alphabet just use for example : WebStartAlphabetRegistration.register(AlphabetRegistration.JLM_GREEK); the package jlm_greek.jar will be load if and only if greek language is present the text. Calixte.jlatexmath-1.0.7/docs/000077500000000000000000000000001326546671500146275ustar00rootroot00000000000000jlatexmath-1.0.7/docs/images/000077500000000000000000000000001326546671500160745ustar00rootroot00000000000000jlatexmath-1.0.7/docs/images/Formula1.png000066400000000000000000000053771326546671500203040ustar00rootroot00000000000000PNG  IHDR 2 IDATx]d^W>"QURQUU&*&BDtU"R 23>3Q򩘩όU1QgyNߓs='ɛs~UJ ®@ev {rSzBy$k1_1] dc  t (_g d5/[<ȫ@A:yNJ ]y T`\wMNǾ{tsQ! 'a }ȟcBnsqݸXa? d**B@G3>& I@[B@ Q>RAD3'B o&$ X:sk8Ƴĭ =|n{oP4$6EYu`Z%R$]kZwTsZ鏧 {JKdrx//n&2! %Ú3ÂLkK5k:Gwj3B@5?R)40 <|v vRYh'H~*9*B@-f04net'$꼠&uP.U*Mk=j5NQ#yv8 6W}Uͨ ku'EUu&څ(x΂M`_+t<[Q$u1&0a?@pluk=j7^]njvEm,;UPZ1H@T5vl$AYļǧڷ9gɎ_$tOex]Ua̐l\+5t[v9$ѥ53ֳ[0Ui!lv2&9ȷg=D'r-#&q \&H@[qUjp'd?+ʯK71IsV IHn[:<#c==*|-ʥ]e|}" T~,RY{CeH{57>MxiYf}ȷڧO~x`k*]%:!n]u@k  (id 0\hTu.,:Ej[Hv$C$BX T+[p)ĊNE@Z +$#-CJBr@$WI$u{I:w, (ڷ9*ֱ!{tUg"[9h'!z[/oɢ:I]BY@֔X5~Tl߭urGaDVyiZ!vpn3U"E{\YWӼw:Wſ. J^*0b=|;Yt87i_pL,LG2<.^ϫX:ӆEKmnsӠ(GA?g ʁ6]dxR Nǁ.EPN`t$9.f\?Ee߄AW%՝XCH, 'm<u+DeNcnDtAT?GHPiA+lǣ7:eZ;3d޸i~IH$~ܣ2cB@Lpl]7隙1[?8J\x!Pz)~n&K=sd)/=n#/UxJ+3&dItw+vAUqbd #aM*P  ʊ]t?ƭaLUZ,F1,]r]Ew8[ c`5)ٻ:n|x*~?G=d'eneB@T[je0ӼS _1Jªc3.tY)h+ac}y.I(\bNdfVI,.k ikbꠐ~ F8nӺk<{QMt }zTk72Y/bvM5#jk%&kߙʽMEa-[{ Ol\]U{MI1j2SE|,m-C)]* eZ;!k8'J (QF+}IENDB`jlatexmath-1.0.7/docs/images/Formula2.png000066400000000000000000000424051326546671500202760ustar00rootroot00000000000000PNG  IHDRo{DIDATxd_ff/3L$$IL$cfId$KMf$I"I&Hү_InInr%-Iz}ޯys]\{{>8ju::͑[g,;]5rg"w]M &M m3g$rnFn\䦌-C6̓; "2rE9i1ksP:3r* {(pMe}<П+Dj ?DVUPΰ-r'Me(p"@NJ_E@Qf / I5K!'j"EE3T{"wj1hhFbQjo~ӷ"6r4Q<5,~_[BC-/"ܛLEьØnJOkR~g*<8Ppĩr2Og¶ZFڷ3QE1.!uǿ1#];i7[=x7&qd?nʀbVVSeKĠ IMQ x]gRzC/KSO˷-\KT9>3=dN 0[=ф(wP͢NQqt}r$^K'# r.w Si(0o4_lVfe_R2{5eetx6*>iy[6*|N ;-ߛ;f;6u)ˊtxJ]19*,F>O[uRr\WBĿEQT.qG:C]99=d>oGgs"ˊcܷaN/}w(2l6I_f#fA#_["ܬh0EQCӞTGC)iGX.EQm0`kOIWśY4L{oʺd 74զOYŬi7h>e6.ӯE($ lK8.J\-l_)gEJ>@`>Q$|VRw[ѵ(.d\,cƷW UE["B5&:K﷾y+&(9~l7b) m}$qC@y{Ybִuǿ {Ȓ4śke`S9μ\wRS/(*Eڄ7pm TY^ܘI |`=kC72R*-XMҬ荥c*2ƱIaewE᝞~旙ZG#|;#&MIh 7|OSF>m'SG -Wg#g_x*UgT*JQ}OK[cy)B@69-!.ȧQU]JӔaH=\m%6 w>(l ɕ@mk1~VlA_#0~<;Q62w1mSl 盹n8,K$8F9լ> 훡:2:ÂŁ&ȋ4LKVW-j1ZSlgcqOh-~Hbr}3]Tj=z-p׻suʶ^LTieY.|wqr㝲H)!_-.3%iH39A,#JsH"Ypt\F}|so#w[" F8'we$/} of)ܐ8,{Ǩd_gcW?Fzm g2LIoS=o<+IiL~ K>Ĕ{\3?M_"\*JfeUfo3XS+.[ޭv!2h<I@'5ٶQ8[ƐayKZBG-SuoGru烆건r)o9U) q>>#լ=Lox8.sx/n2S+ߥ)E4k G~;UךP{Onݰϑ\< OSlţp-mMwkHsS(0)q"xvPҬ9;*^6$Nڳ1PvƄ7%!Qa4T͟B8f-qiPzeR7Kr}s ]/w=lF>d+qmՏa|4>yԽSrH&{-X>jI~Ĥr-C60.Rr0,3PkT+__W jn]B;>E1i&n &o/WE1 Zl8EQM~LFTksVQLw ET\NGG*-c_lqSb). mȑPIyfdvfX4>$::-ܴRT\eF`̋KE,h@2vn_4MrПMI"(,<7d0Ey@^)AEg06apS*iB=V}4:@T#7[[?2N wx* iiwaW*b0,PushkiyavDڲ+ĺB)Ɯď|!il>:,9h"I8,bOɽ>||1G C둞k͆Ev0\*BVYQQQ<(RKAbH-"YN5']{er<8HEqm6Es0ZS2R31zK\ߦ͋4b ;ٽaTǗ ~48>%QZ,}P+?b^K7B稌45h/$3xjp<( G݂4+JQwpR?]>t.|}I[SZRQp;-"N.!22|ʛzmQ;dIY&cY b9|^gb(tuy݉EQ=2 m;6XFI oEMbqH#R#[a7iknz l3,s"d9Dy30A߉f=*Դp_@ʢn$+kFO2ewZ:JNX/P}s\]Q᭕g" n*~ +:Lwc OY+6KڐMsOzjQvBGO8xk!rx$C篶8d#N.!dVY}7mrVLw殣ܦ|6.:2.RQT Ɯv,B%Osy1j C #ť(ͧ4E1m^*Zy._5K0-<>GZxC)B,tjTOZk&u8c8:66z1gO1) JP~A¨t S f%Q^^RVUҦψnf5 yԕQ :)>q#oXewUO(~So!gҿwR}Gsv~Z6#`׷|$;?%mt/EVLe?iiCF:?՗)?͊?GÂۜc>jn)G2+iU~ČB1%H*I)ץ3. VdO,n7if]QG|M4vV.7w? %C/d_ gE4)vcs"ǥ\:\D@qQk* 䍴pPhH'yx~ÎWb4 ,0.)~QJE *iDI30;vdQL~;cQ0JUAϺQ8LAZ>qt,C>wWُ^&XTtZ'V6XcO8s vպ1*7݄tcv8P%;o9$^*-o*"ItZMJh~rQ qש9eM2}Sm俠' ӬܡVJ0$/L(-1e `Khlg-ǘ8\F#cEBV#!uGxa[A+qa&m9٧VI%}ҟ&YSEAOЫPyλz3qW^O$ɥKmlz#A`w['p0zGXEȲE68Nc$ gk9dI (lrH9ewӨFS%Ư-4{aݺJQGUr"PIr\oIr8%q@֔TvcIa%KT=3/XZ}-˼cUc/,ܕMz *AKNGKl9 﫬@ďT`h<ӖȽܙ/AVrf+-<}K,Q +%G ExqctH|:#7{TM:m$~4Q;_ a\&#w3r kr8,tEQ@hDY.~6./͙ERVyZAKH#|?Dyˋo|GvHu7y}ŰwG$#Yպf/R"}(&2kclOw?%ͼss q"g>DERl.,K?Sd^\ʖud;08fyMѼDy-a "Rc»_(¬r݌k"4I}P!QrImտ(&f3:eŜ5tg3t gč7^xP OqzMwM[fu36{+ANz.-L^3cJ=@Ok{CIml۶nOhygǝY#'3=< y{6=*)_J+%>g}DzGYy%ɨ~W+M'4C闌] #(n X譄CbiXf5L{bEqu}bX^yyj6lK(qC>SvIkm?1:/7)@N')2f^m&dӼeb`a毵;#p}I;=4,uAW qm6vA:6i?9߮$7IG${gnrGOUR|eqm6 N-u"k#*<Ғ熆'P~Eiz?T)I/rrukN1)? A|%ϬD장aؤ15D'O>N!gΘ.zSQ59M_S),nfG-eއQZx4W4էCX+z3_VJYjȮ$y{vԧH] 4̔%)eic bnqWQ}j,բ)M>:{WRo<2đ6c)˯6ToɬP83nHF9N/ť[@if - %vNG8JzicVF6T<9D3R>7&쪌@t!%i烔my'-܌rST6Oj-p*))̲fmg5zTXc_Im ,z,"ryC{--3ur}y5*]?b/qmlT>tX>as;3urYsuC};}eb}q| "W'-Og:[myԛ,ygY摖8Bÿ@WTzZg+͐} Ǵt0eE qS-=2HiT)ۚRᇤ7i|&g"Ig2.FS 6!ALQɸggPTLiJaAUuz}?0кY6wf'OKtR/i@^uRҁqml%N멀wIgbkk~is+<[`+ EtާKq-YDz^4A#\vW%Wi'9 A647E p k#(E QFYk(~-[{P,,9wjED%e6%ySO3Ӆl-5nYRc? @,q,nxb| 7ֲ3{P,<}A6Z*^x-l7-%Vd;d^Y\8-2PA?B K ̼k2uIk7[eg~;|&!_{׃ >c+?^\X8lIJI(w ʲ>r /ɿT d~Hu_FIwj|;yɪJ`Eg|"qL҇ t۵|j7Ǭ.G亚<<0[fq}Dt<%ԖZ>vlUX 6ZQ`<[!h<*VI{XʪR(+vL`SP4(+$3Tu+cu ~&윗,RmʥE.IˤG"B:3(†6Y}m(^hMe=LQJm2o~p4ge>-=;-(c< PڧS6KeK,tIu7n5HZ7Ղ+ͪ1'+/ _dUVي nX,(zmo7-ou'5ך*(XfMSUweYʠƺ%ǕV%-ɾ,XV(fe6U>r9ܔ2fTiGi+CnX)L [M(P]G ⿩qVż*TP3/e-IsH+w~ɛ401 p+ ;9|p[:ODp1%~wEʪ{2lAWkMt1OjrUVUhcyAvS:DIKSHtQy;$~/inp-4VV@ބH>_Q\زtRh|UMJy;g6:n)?.' Rf] Qv|/j~o&X?`CǥugβJq^aVc*rߔ!UWCO,+[d ?%v ٺ#ݩ"q)!Z8~?!GŪ3R/*y4ZHE`U[% tHm*>'T?Pӆ:JpmYr6+49 ,>-C\+>,i&&)Zƴȡ9QUYpm*W(m:Xeu{_AQ^ҝ,JQܤ i(~G2JWYẓѪu.$׺&}bBߵ>Vo~?,'=4) o}3/Ƚ !.EEq1AޟN:QK MR,gsU&{7H$gU# ?u.Qm);w}|&ʙZt&tkio},D9h'kxK ,oZ[2& + +ɶu] Һ; wKlYS4VYQL+`YbꯎZڰ_G7ҝ,ZQ&Qt\U?.kx5݀>)7KWDem9FT:cXVYhF`YZ+[Rjg>%3@uKQm3,B^GN-6XRzPF6P3WP}rrWaʛi7/Y!&Lz(& |\iVn'F-\D(٢|KO2USϿJg 㼌 &tƠ̥pK(4vNfU.wnpY-DRydis+m-9qtV. -/eDYP9M. /3Tls@\qiAg U$S넯lSV kqiNe)[G.a縤d6C/']ΤuF4vtUkd6PEC軎%'A[%iEuWwyzxxWޠऑmf.f%܎eŽuXOLHbɚ60Ł|/hj"|x ltZ7kWԘÐV|X2HT{V{ww%(5U[gitZ٢zv̾i\O\ u "MH"ǛQ]mSwq~+~EY_Ԝc>O~h D!;SRw|:KCvqv8+v?݀[ğеi71xڳ[rVJ~?L=0~j'RͲGt`|[ϞD^4>5uƻ;3SO\t )&Q9,y+{~ k(<S9[ӴiA|,WÏcO g#'> Pmdk+U}T[J{jB^w[S4D7T;C, +lƶ5 Fe4"e+LT-\EgD|+A]Ь5Cl w7ڳon9 ㍑>VJSm7Ox@nD.V njoR/[.PmMc9լtV;O'Ja\C _)?B^p|k"+TsssFZ֐y];WJ8!aRfoV8lIKRZ@Ea叭-%anf oFy'2o4BvB`11r#׃!rW#7G,(m*&ْ5r˵g(A6(6MeM7Cq(6I"7lEMh8DP%Q_G_iڦ"XR,g7(ܲKޱ.TPREtV("EP&S"$tJ@QDN (h] (MEIS46 N b[4"Ңus:rBQLFn./ɿ+HܾpwD]|q|YK;C|:%|-q3nDnJ򲪴H\opo;%K,V%xZS侊bV(_T GnD::p[y~V6X߲Rȓ1yOmN]u/r{ʻjC658c䶈"(! `U*nMUJg?l(dTIiԥ_5m/iՓU%2oFR*ݒ7O:bV;-u@QEl"tHuZwTfWHx'#?X1Yeiݥv5rǼ_Ph|;%V&ʢ:[pYIߑ򷪌|~~Ekc<@)P :x/VKnK,|e<v˘r8URYғSb;) +PB~Ek E(EQTv4qmӞo[ЪVJ3^yeT4 =,e)u-xݡwfQMWq^R J9՘OIu(7{+oxѧfc;Vgq] ȿWn3n}bY Fk):~զ(LrъbuB.ychW<#}(e)3s]9Gk뾋'Ŕ(lINNIO%ɻu1x2 Yx9 7)_J,>iwܶI]M(BQ\C5 U(Mo.L~ۓȶ sw$[Z70 JYZØהEOn`O wPlfBㆸ\&q8mQy+i|`EQKYSpqioJ#P%>PoӴ(R+EG4ֈrc̛u]<-=ox4q_;`m`Xav_#$G 8/P{$Ϥv)̂XOeQ쐶ɣĕ;E@%{fr2Uӊ/ŚVMWIksfVl댦Eay(Qٶ@ʇ1~kl I=II~TnI(ԧ)Ӛ(_/)Mi͗QZ9.&<ſ[.!7Ҵ(G|lJ3+\94\ѱq>]mbk!vȡ=@Q&M^3YB|σ&CW/piM%"K9'9R;i;RI;d׵2d%-l˩=@Q&cկ3l6N&(EwJ|<[TZE1GuΗ*\,tXi >Q֙|[JܚY_SPT2iQM/nCxƛn?V/ΈXo ;RrCQP)EׅvuxΛn|ʭF|eܚY!h(B(k/VU LLZ3kmR1| vc1>1V#>ӐkG<?y}♄o>&@QMuZ_E1ΜoP@QD6 @|Eߩ窬OAgz6jmEӖ2|0f>i0=[Km`6j3 $(|Cy3r<0._;av&@Q`!|ÙAXK^0rߨv_ ygeu*g6$(`Q,wy6Fƍ6 "9/\!cv&@Q^Ǫf΢MN M8iൖh(SÛD4'fQD1Nh rIENDB`jlatexmath-1.0.7/docs/images/Formula3.png000066400000000000000000000064211326546671500202750ustar00rootroot00000000000000PNG  IHDRWM\ IDATx]d暙1s$#5&$c2$W2LIL&d2w${g2I5W$^IL~9{y}ο|Z=;}RJɒ C;БFs8^N<|L(#'8'Spu|T.'j<*s7T|Q}ۂE|o@IwlN\&noV' |ɤ;_nPu֓+ kRUCIu7xh1xڑ 'J!6,} z4P Ѷ * l<$G|ǴMmL{UΉs @d4 xRCL>^:G7*CW@J)RJR ld!2\^%|֌8{ =9l-́qLރY_*t? *>i:UVI׌ 0*s]Wjɛcm|D{x9[x!]h?+5QqFj ůkXp_r}$Xr|v) V4+1* nV-^X)fzf)}U#f-|} QAd| $v7!"?uN{?Qx VUC}z0FNO,ɑ@2lD3)G-VdZz7s5I|)$i6ҾyG\` Z:q:Lef򅐪ʦ0A`3ؔ[,IC*=wS'V+MZ :hv叱ur ʤOiw,V˗44*`S ZqJF  ZK6! (^+Iqߎ:FtgH/BJx[dw_sຏ< |fZD%YLrE^$C`U *\ 3lvbՖ&e 7m*)7ldKW]&?=$Q7M} YE?v<񧡺60. 4^'Ck% y% g`L m԰30,L>|9 r֩5HĪDNhnQ|d|D1G 'MK60YMICcj]=<o9(J-"`b/1q.4l_vm&xl4e31oSk (Wcۧhs1Ay2z,i,f R& Aue/-`8NL^I ͖g<6 >Gm+ŹUdZtp~NX1 X{)ϵ'C[gOMY9,MUiYp ҏ +͢]~r498ziw@? _Yj MD=/LL|at_B.X>xIRA98۠*'^0nJX]>H)PzD {4x`w9!\p17fZ2^9U&,ם*МdqtQMwoȽ8ʳAlOaWY3N|N*e 85uU\YQN#oZq}Gy9<_%F Mc+y:F SWU23kv@iL4w,aRzB-eov4 ?TbXdvY21|8'v|nD=Wìfñݭњ2CJ2j= []E$[qj 7C~"䞆jf e*{p*]tKmjM5Ԝ|"_w8島zz^p߶QֲQAy#z wwн7our/JgbuZ7: `J.kUV&?`I%*}̒r_Gj4egX{^%niywP ]v4m0{A76 :E+o'ם/%+F{ ?bRS8[- Jso> ~+!XX|p@:G'ϯJ@GyUJ)$ӌy F vrI+ǘ1-_rml7;lH_.2iRWI_rݗ4eۢ>RN @D- E#)([B7} ˳K2뺠q ”@_5GoTQ*4E̺2Xx()_WmorS`q](wufO⵩52u=+JoqoKyU?C8E-WPwQФ"Pt0[풨jFEây9Έy9rZg;ʁAהi( 7u&=\TUvBjY+52N@-o_W6Ǧ~9ϟW;h&ʿ2=0Xd )E `R1̓d84`c里wD l`:-ZNS#NF $J?1kT63SU \Ҋ.0U,$ s2˜{ bncLs:,Oa r|-.{aC(myTށ퀷7,;b=Jq-l< "$xc/!`v.N{/6e^t/2m!켟)bl- q,d#wS3';wb"Ǜ:Жҁ#k7} E(2d*xd:h/`=`6eHw2`'22(#Jh2e[6eNQr'n/J|6eNi};/2(#W>-_IENDB`jlatexmath-1.0.7/docs/images/ScilabScreenshot.png000066400000000000000000000646021326546671500220450ustar00rootroot00000000000000PNG  IHDRnP7sBIT|dtEXtSoftwaregnome-screenshot> IDATxwxTUIO ]@*t E*+XPVbua]( "X^HBzfd'e<n9)7s3-ecw? MΗU\DDDD$Шh35$?2'{_n6}#ΔS<\1ݮRkXXzg/6Û m'KUHyp&LMĞ_KTkPߕ@qf {h[ϫҥg*;w*|qƙȉۉЛZghS8ZYܽٴ533ҒlZ`c*-Rh?)LmZ7rUDps4h[HdH={S؂#\n99DR۞qy Z8< ,Kt`mY Z\xao+)";G{}g<#cR-›~#Khc£a5 ĝt䓧p[&f YnfB։(ÌAb\,S1H=ǰًL>4Ȼc|̬Fy3smhrL;'H%%<4+Da1(͙ IFw1: (?nXݦXMliiNYex)7 *NۋKTgy-hyr=7O!nN<$$ФIo)Rb!9`4'A&3cHOXdZ#N$i2LDXsY΄w\`GF,iə8%(, 2N 51{XCjcFdRrl#(iID8eHs+.{xAPf]yg")Tm(ͥ,At=XeK0f$/(ܸ?6;f$괹ţ/f|҅_Gdx.yVza׿~ =6uywx! :Mʩtp'9)'DXCԌ.Z/tIL,kp2ײpp&x/;&`kH;GJl]aX fИr?&3#e^ӂ?͗_,bg3;׉$L9LdHtlkds<Cobk}"܉feSrH~j.7p[T6lVxCb= ?zJfFWY}} ؔ+ܬGR*wr?Mb|k.es?+Eϊ=liurGUӖ\7Ͽ]]:=4n4wABb RLIGH\05nz~7 ꐫ-O$݀wǮ&W~˕|sr۬QǙM3=YkѠ9۾e[tGpuv]PADa,qvf/OxcǭS3nsVvQnT뮌7)gm̸IDZxF%'`m6~t0];tM=qlIN dL,t&&J%3OB\g*ܨV~(dˍjuAm̸IYuy=Ƹ^vfrq6O]>?N&pnӦ b&Lt̟\i5:O}?Ű5"zl{? 7ِքpz7m@=n~=nεu7ܖiu}\G6G48'ypfbhHIBg?@2gœqW6;_mbrg\RDՕo] -VyP vƇxTNBQW+os "ŔM_ű7È+|?3ye[-vaZKNHduZφ/6p0sCC 5M<MOİ13ݸ<633/ +oNLĴq&%"&T'INJ qgz5 h~5a{Ї{l.Wa\Oޖ]Wro:Y33nRN[ *SNr8X|TƥD^\GlYmCjOE)"}V Wjf*yGVvrԥ)ʊy <64 tGbOȅ6`m2M {0I{-MOiuN',Xy%OpiL }aNOR| dLj$~&6vIGYg~N n"Sph)tk8| _aD_eرl#.t)!Z4!v`𗼹y3ٴG4mӜ;ygo j-.ܝtcy_/T~$Oo~^wMݫɲ>XB[pV68w%X/n7n^C.lFAH噥Y甐3Kr -B[D69?{UhJtݶ4%6V>[9!-L!)_ԙώV&<=QsOg}C1wiNLÊV0߿6O#sh\'%smZ#]7.LhF&Mèsk?,vb AdD֐pjNG&6ܓq3cuB ?YtXa6]@-peK;VN,,hg.yz }3WF:܈Z[g߫4#xmBT&#jmJHff~l7ia#wFj^2\`hAhX+2ƒ:5qh>ݏ}Ap%z(.;N[IZ11Ғq2kkzi3f*Ge] [=yp:^[V[HMJ̺8aEPD$;mfG V;zT -@Fdl u&MX ?R?ufJՁ-6aaX"S V7 v; z&i780,VTGwv=t0*՟"GHp=/kϕfѩS'VZ%bҨug7rea j+WFrVnRݫTDD:}t:Zv.B\>hgj+3%Qy/ٺۈۿ-bkp9nCrrz àgϞ,3 BD5hjUxzn_,b_pvs+Q"""UYrr2t:l9 `||< BPP›aܑu#q"""[JJ }ѳvWorw8{lS)_\)SOǜ9sēlSH)8\M !$$1cC?ƶ w"QDDD$잶#G~zn6.^}nB vKWL!Rp:?~kD wSOMf na+WNJEDDJСC 2֭[ҢEsfϞM@@ce_`&!!!Ţ\)J{lݮUxJ;ĻWMQ"R >s-#3.̙Cbb"Ǐ?`dffVv3ypU0CQ ?"W19ܶtm۶W^!,,N:?V͔jTevٲ/WV*8#1H.։6ݮGpɦm{ 9} ^-UFv>6^[+~TSMs?k<{1}<dqoA6NPP3gr饗}6ԯ_Mj#%+K<_q{\Ƌ?ijgG{mo1(j_0ZO}G!OqVh |Q4+[yǛXQw9su1MnsaY ֥y8s:o~zUrk)S†Ӯ׭LPm/=CҮ\>rKIwp˥ӦU|suUoڕމ1OlXhw K''2=+&6nL3/˻uKG2eR4X9{zu]7{ y^^ZP.h@%.3oCf^5L[?`ؔr-x*my_7KIliW䖧z >)ldnړvSncʷ<NL`q.ԝLzo"RYVBBM8ݹ R7nnĖJuT2޾[ԏוbH\|&_ɯ[V0Ld><7|/zOM̵͠h K5m/`;ֿP2{v^7NG-?aC%jsq=qǼ?çS^+NSgClLKٹn,3e/\5yeajb<+ͻ lmK]<{N]ͬG61z,)xLˠؾL3~) ίfxlooO/?nzSg0$ʢڙes:M>IC @DD6WsnWxi@Zֲc kz<ŽJ/@s^˙>{ gGرD潉8+g~c^t.qyQH9˱ 1ƸMœg$Ԋ51LW67Yz5Ws⾞űXaZʛ>}yuMgng?,1YIkpc.97X`]ۍ>̽cEi[uZ+&H0;?bsTc}WI"""\Ǹ}qO3ҽKs-Tu,˵?,xΒ⾞){<]=Y۲g3[x<Ȁ'6;==z^&{-$Et۪3W筨v^)i[JH2+X0`۸.gK)oYs-w\AD$L=Wm4e32Ƙnw~WNfԎjaգ8(gn[TV7˚\%>t-$78?Q% {`jޟ ,$ai?T筨v^)i[򜋈H<ԃE0UJĝvUrz 7s%ĥrgtp+xOX4} sʼn47u:ފnJ0ܿ.̄}\֧k_GRp.0L|.8>c@wAb&O,pۢny!c .5"g[y?\Cs~nܩyQ=7-\gq[ӛ aL*v%g8ʏ+G.`uHsN;Ho%mr nwd~L܋'yԢw6|)Koe֨+}M6WpX{zG0 ͻ\qJl~^v>޷m*gڣvIb7翓ө}{w_4/l[5 }Σ)tZ^`9E?h*^)]z.ѳX;Os7 +Ƕe3YWf~<ڏaƉVs >`W̏^}|䄢8d%s?`y?iLma}-漷c_pvss~U5.g,{CoAǸ֣o-鸪x\E*(%""RJܪ?? DDD|.%""""%&"""'*]n!_p}DDDD|4hx֙T&"""Ry  """"~BMDDDO( 7?&"""'DDDDDo2_;nݺ6E]DttSؾ};c>"/KDDD*Ok&6>N;)vtq8a?4LceҨVd}zϔ' N'>XEBZ"Cpsw̝lq˻~_?_"""Ry|F>ض=Ww9v8x ف2z/-;ラɏN Mxc'N'``XjUQKb3݇OТaZa@4Zf?ݽr[x3X+X,&3 akcsr{W##|pswأxlrS!=gF90gא'FW 6Mu{.뵄DuZfJ, Ьih\׿041qt5L7 hN֏b= 8/chRR3=,X3+6c8UMDD+u۲Ls0HLly貣 nL۴?>uKN3Qge:ҥ q P;!1=q:tH΄cǎ>?F^ IDAT#t[lv_ǒX~/3 /|ƭhմ=:5DpY'ܓm[_}x^K*׶HuT2w8 4hw<'FffkmN5VP&ZHH"P+jef Hu!ô?ݞ^h ~NyY#8u?a֬н)>#{-w愇Ǿ8~+C/d6)ap{i.f|gWɹ ke/LOg6Z;sBCOؙqqqDP;(Q'jC넜0 3ILLy;Z9|^A~Gs껝8lMȉdv:)6Qks>YmCV7OVIL dn (ЁiW{&Sf^zZG7O2\ae:ؾ}aqիV7B]G޸`4 Jyrf>|-ˎ#V8Y6bMc&DP hۼoNNyU3KbO&d gEY497v$s'`hANV*>}"'e0LptyY,p$[9s{o0]NÁ6rbbm6YG#{`2_c)X,900ADDD_Ǹ=wyzcP'$_ILIcS8T;ޣ'{4ǎs,1!?nzjڟ @+8hz8Y& pNk̜=qlMUG󄛯yi0_wҥY֬^7@I`YA t@&uy$g7k򉈈Tw|5J׆we(Z֍"15}Np{n^0  ]o})%ͣ0~۾E n+9M8`b^K զtjY_v-ClVvmmXVlm6V [cX7]J})^H~=׆}r¯QV3EdH/mJh4K2ٰy3kt%oϡVVDԮa:$3-u]atmCs7;]c~j!24g9k9ڪQ-Z6g?b]DDD|LB֚>9aƲ|8u]Myߣ;݀{ f:?6qI,Y9r+gyqcYܱsvߑ^r8y$m۴wЋIPlSod꽗2}:v86݆fM ق)sW0GSݷTDD&fNfdG^wN8 D~?/~IJwb_^ι)O< `}r7O֘ 6X2ݡX?f矯dꘁ<W@fuxvZDGw(ro^ syδew%m?Wmq_u1m䄦"B[V=/߃jYr;;|5;{舋2{qodƽ&"""zVe]bq*6ujڳYyUKà%4T~q\ңǭ0ݮWE1Ut>u"h׬6Ϗӣ"""܂fu,(l ZB(' ~shi8y/ʚ em+"""rσфxnycbى]ai?g/lB M}<=]5Csoٺ؞sYdKVTYuRd"""">n#"Y].}JOg+3uzݦՙPֲK8~6HLM"<(iHۉR4ϗT];,pg/Z[{7%m"""RTTE)37?&"""'DDDDk^U" nn_$"""R% n۶lvH4MDDDO( 7?&"""'DDDDD\޾Em۲/3Q=΂g(a۶-r=Uuy ye<:&]^GI+Tiޞ/(l?{'ﲂPضEMa<։H7[ɭҲ.Iy>U S,Ny-yBRIz<|=l% % ng&"""R򆮒8}JsWV[&"""UQiB?UZr@ #WQu6fΗDDD?x/Ϟ6ocފç- & }lG6Ywy+-"""Ru(xPf}-漷c_rč)HUƛHU@CoǸb""""MaMDDD|T """"77?&"""'q[/зo_k F戈HAvؑoN 7?&"""'DDDDPp n""""~BMDDDO( 7?&"""'DDDDTO?%74MLӬ-[F&M?YpaCğ)'N`l۶B{8NڴiÎ;DJAMje(9>yN\..r)rJz… y+Nv4h端b̘1X, ))}jZ3MLoիٻw/n46W.nڵkIKK+~'O$&&ri}0bO?eΜ9l0ضm]veDGG3tPn&l6}һW{Kb "##s'$$зo_Zn]!իSNe„ >/ѣڵob}+t֍ӧOsE3%%s9?RQfΜW\_Ͼ}0`GfĉWEFFi꫼ ~ ݻwg̙L8Zjqy1trk0 ׯOzz:\q:u~py&OwH67VXԩSټy3EDD0c yifNyA4hje/&&iӦq%cӦMDEEp86ҥKY~=9{1Zn].=@,[,'04k֌z &0jԨ|Wɻ˨Q֭[ɛoIfffm;wL^p:$''^Oi/V5vvjڵ1MCFFnHU&ر#:t˽_~|9ƤDRRl6L$--РABCCsZ/551M4\:Ut!L䬳jbF:0pX,"M$55m۶qe=eWZv-z*ء;wsSNr?UY?111j 0hԨ۷:g~m|噦իڵ+mڴa 0X޽{ '** Պf{)tm۶ѩS'\.۷o/药/ٟϴR_T;_;f:]rJz-;øqp\,_>,tsf8X>}0`^u>c^xn-[ҥKy6lˎ;?~<'۶m{4M6mٷoӧOO?- iL8`~m.]uw}~굜5k0}tz->}:.d&N믿7Lݺu+$hт}1z{DDDТE zٯ(qqq̘1ç^{RͰݸq#wuÇC;jϝwYx1cǎVP/_~W III8N6lPbJ=nRs=_0:u*W\q7p]vYf\qtؑ.tƎˈ#੧bĈ|9GfԩaowѳgO_JOfY: N:ѿ{wN@@111<Ś\pUWǡC '""OߟݻszZ SנXShYgRRRxygrtEW4MIN#vZz]hh^ݻwgϞ=6-qqq 6uѼysˍ7Ȓ%KrƓΣiӦDDDh/o6}۶m#88s9{Nį)ISV-V+֭Y&433H.2 fjՊݻK/Q^=\.Gv޽;YcjׯOHHHN=#G駟f֭tڷo^%B>#l6 4Y֨Q# O?o/e:w\ߵ^˵^[h96mUVDEEYgXåKz]߳gOԩSd9um݅!_oftMzҊ:ނ+۷dɒq\/tرXc!˜1c;FʷOZZ6m*v֭AAA|GQ^Ktԉ5kp5+@ծ]2rH>3.]ʓO>ѣ}HySpjpн{w~|ڵklj'2d 6d|֭Zj1c ڵk=ƫ/ gϞk17ٽ{7\ eƎ[Sk׮O>9QR:=ZT9֛ɼy8쳹{ݖٖZVv{(fbxtr"O>}=2&&&sԡCr?jeܸq檫b~q&ĉkٹs'sN@ hР 6aÆ4j(~y(=J>}Xt)ݻw0 P֢E bM4YVҠըQ#sg& ]\n[ҩSB}[oF۶m ܾ{qWKCŞ4M/^LDDÇ0 6l@-.xگ(aЮ];\qx۷`ʈ# -#553f& dͤu: 4(W^zzz7__ڷoiܸ1k׮eΝ%o'R*Ǝ}Gbbb,SGɵ=eLHKKСC\.V\)g…3-كʳ(*Ç'%%%vލ0\W/N0ܽ{7Mŵj*ƍ͖-[֭.իWZ7̻ѣG+.111lܸh֮]˚5kXpa+V_~Eq8ԪU˧rɜ5jO)JOOoE2e >|UVqP6̙3{?_NWSN%==_|aÆ N8%)4;o1 15jTeSħؼy34lؐ /cccINNyX,N>|rNʆ ؿ?aaa^ʕi^P̝;L*e˖ѭ[vL6oM-\޽{̪yW{j߬yT';vjd=r-7իW 䄶7 /h[YAƍKjj*#F'W^f+v:2Ki[,33GҨQ#xعs'AAASO=sle}VU}T&72ؼy3-b޽5]3%%]vңG7ow=˫Wk׮]4nܸDKv`9>cС_ĉYz5W_}5_}W]u߽7Dj72hӦ /2*y(/^L\\7<-_3wrGhӦMiٲe7oViӦ>oOYedd0o<=ԩSs.wޜ- tr vء{w 72ȾSBU׬Y35kV(Fur4{̘13ZwqݺucĉDFFlٲ|=jK.s$$$TbkEOo)T@@!!! > t:?hӦM'Э[7駟t ?7jj̘1\z4mڔo\@v4HMOH5Un]zg}FNApppe4QDJH=n""ĉIJJlQjBMDk޼ye7AD|HJEDDDPp n""""~BMDDDO( 7?&"""'DDDDPp n""""~BMDDDO( 7?&"""'DDDDUv*a9?YDDDD*R n!3eFE/"""RjTp+WA t""""1n&"""R &"""U m"""Rը1nв6M3WP^"""RԨVP\&"""UN 7?&"""'DDDDPp n""""~BMDDDOԨ DDDDʛ[xeA!NDDDʛN 7?&"""'DDDD&'H$d!DDA r"D/֊B7e k)S!ND:MNP2) 7*2P)HU&"UZe)74MDOkܛT%q+0r";ݙwBNHUQz 7iHC{zNEjTpg n"Rl*?znE8DX,ʟc)Pp"'( 7)z*s)Pp+%0r=D#T="M/彫›7W|z D$/7?&"k!"DDDDGdSp n"C=;U^7&"zt^#Qp n"?JfSp n"5zp^3V g~yHRp+4s~VS"5N/v"5Ppc< n""""~BMROMRfQp n"5zh"5PpA3S}DDDDPp!t*k,R&eˋHER[SsDDDDH5GH&"""'D1\zE'oΣ(t?nIj[*/,,6 ń@6֐0$@&C03wNrr377B !o/`mymyeIhZZ{ު>VRWU?{7C l Ap!|ܚ*hM.϶]^t `6_]֝kk|Sq0 0]_)\7CQ9Aof"``(WlCyn AYD¶W3'DZYo ڨBHcAp0 7 ti!Zض3 Ap AE6 7CЅ¶ 7娀Ep0 p1*=n,jzqV'hp)kl Ap\J܂mp!n .C܆mp!nPـ[m@p0 7%节۱Gp0,j~}A%`[b+q@Qqb L6  7C܀ bb`#T,`:a Ap0 l@"3*ijҖ󉶜gt:fYVIۆYXc2y+tUq;RWm7Nw*@,PqkenQD x8}7C&5UКMݠmFý+* u |u[ g5VD]Gy zn QD~ŶD 7 J8#`[eh."Y9!Zβ@xF 0* @k@ Ap"7C Ap" s#@ Ap"J=+@ Ap 33@ Ap0,j?;X7T? D7}> 7 7>t 7 t 7C܀n+.1k7C܀n5s7C п瀎c9o6*n@'8b}`b#`]4;/ Ap pI37C܀p'M  nݝɲVpq8.$m{%́Ċo[w5ZGa@g6m5Wg* fThY9#C4?PT0T n-D8G'gkX7@@9%5kay>Mpk{ZS(#[?dm 5𱵻ikG|ܤ :9 j =vѸ,I,- _9CZ܎W׸naK+tV&gkNXEɶo+3|*Tk/a7mO^y#2^o,8_?~=t}sE,^d^ں/6nel^%ɒo]q}c"lGtì*e@bD<|ն |VjnAtEEGtD&&|M8rswO p1'TFjvWDk渑 Ƶ?w[ZXp~%%5uThn83mM2Ӓ]SWVm?]?G ]5rN$pFȋ¶m?\ִ@M~AWi8n8~uhnlZDO*iˁc2v,jXlݫi{섖nn!^pil[GWM#i`4nDVp:ĵn"#[GI ,m{Te"kTe{FZ?^\.qt IKmue*k7xIն5j u㢃zyv JM2: q q(Y-Tu NOU 2#VeoփeqQ=PY*:ROkɺJKJGY;bَԜUJb⃱=7IhƧoby~oU-vvS{4.l}:kcĐ)Zި.cR2cۚזu.0D߼'%jzVJϭ(_xi 1bԊtܩ]{*;U)K.4V9{?G֞ 7hZ0%#zTs+0v~uAsxk|#[Z!q7"Cj|YD],θ۴G8jb12!dˇl=8!^) =}@# u *t!RG;wn)VW`Cϼ`]>CGzql_HN7 fA\yF -~iny *W ~[MjxXW.LvkiaqkZ+t«>qo [ .N͛kk⨡ َvW~֐5܍7;):]$Y갋q:νMeeҧ{t?~A6Ned&5weq- _fng, aSRQnT8KV߾y]o7M= *\ qQ@\᥯5Vԉ3=8< ^˶+{Ƞn}ێU6D}N:7czW7o8ҩ:'%j܈ $Ƈm;[c:T~Z3Қ6:#]OSi,QuQq|TNU0>Eڦ}%B}Z]Zm_YЭ˦QiJKJ(5՛dUTUmCEi^XEs&ѓ~/_2Y{=T3rF{]ctqƂxP|TNH**k ;T[RUmvt%wg?6,I[j#:[W vl-V\>۪*SE2!TeioI iND7x[mMΣo9X*GN 壡KtѺy4> ts2[!dO&9tՌ:]]\Wt}`*k7^\=+lh;U]Y2fh*[yA+o-Z_4!"r0kn;U ~UfM?8OG^2%'*1>/Lղ囚+姫US۠љ续<[@,).Rڈ?֨k8%5IG;47miAp\ қl=X*9҄QC P LKVݹG G;ϋW#l/紤D%'uӾ:PR:pJbtV]|Ey4uP Aی4#7wB_t‹7QEe.=*=*.9sGcw3k _n;EI zs.iq6;׍O;wn/!dHZʹyd2m9pL DSfu!ŝM5TF&w][.?F<` Nk|SVFJ|]w''sRvG[9S>ɲ$ ܨDIv.W .Nϭ,K?m _kyEƏЫT0-WCDU@i9qJ3u)ITQC־I d;RU!Qȶ#Q"gG DgrLWZRbDޯ#c2 ٺ|Jvѝu :ٶs9/!KǕ7"SmH?_J? P*=Z-YC?\M5D#=|ft_8R U7?j>o`m9xL3sG ٹ˗NV*Y}]EZ8=OeAIjc'TxT`BK #3%I5#A%eIGvjRuWMw M537˯eu<-֩ZԵz[kP&in:q:UMVFj6; dҩ곪<[|ߎmJ5#gBwPވ jtŴ\,KЁ)M|T򑎝RmCq\0m۲mGr>;Fy@K7ѿ~yR$yzLS,K*4:3]S ױSgҚmGVliJJ?\{ k%hv S5eKM +eI7J[6w7o;TjhZrU9,Gp'xLdIzy._;qP-%'4 >_F߾z.q\N 'U$}yvm6v_Z└w[ta):[t~u3Cz^=pe /^>F VrB|~q5JhA79G_Z\:E mݧSs48e,Ա_mּIzT_]mѲ{rl=*LEy +4nxL/ٮ\t~/ozF{vm$-Cs=1ny8V$K".x~vU=U]C~;zk=^I?yahZ~r8 ~gui'N+u@ҒgY ٶTQtWNT_[ߠ!dkyDęjmW"˲ta^>vR(#5IRX][)!>F)!سU>-}YV7DhX )`5*9zXO?,7ϋf^y&D-dYAi]0Bugڌf iL~iKo$5oRvg%i:|~T]uy>ߕx-nB >n0 Vlۯ)w}TrM;L.{{d7ety^.=6 Wqfbq0]0m!;;iUXzC=Y4yzR^%%ߝ?u )2n@?kUXSs[鹯VlۯGNkn IJ-{Y k$I3sF=F2Lq~^Z]m[z"}V>] Jվғ3dv=aihm4!kH V{5:Y}Gk`"Џn.֖[kT`z4; eVk'q\)uc-iv]f;ܰK?|m9ޭIGpqLI:Y]4mK[]7^2 +wj깙?5u]N{rm>p=-β| uq4n0 F195IKJMN? ܺsHӳk@|NC?,%G:wCtv=F1 &!^mMX0C=Ge;{4gj3,|Z|DShHz ghca+n4wm.ߺO Sb@8sN}x  `T)#i6(tL%'v<挜ݟoOח&7'$dzwu6v^dsBhBv7yP]Gu܊K//UۚY0S__TU[ug ?2>P|RYlm{D7͙%k98jhqqm.8G&n0]8Nǫɣ1:?wL[I AutҒ>?7YZXp~m=X82Qqbo*PfjRU8+w>yZ8#/-D j[bme 7VLVT܀( l*?ѮP45 m"WJ-FyX7`@NW2:^:P<&܆k Appf m7!5m܊ wZ1uTkYT nmwp;`w^o 7Ě[wt3rCdq`b։p;fwW l*0L+0o_uɚC<#K+ WM Z/8] pF ~Ahu7/o6oo&!nm ;w7vƎ7EzNHk Z#!*Ep`6E6 @pC{o+=CxC_k6z^!@7 ">nBD)ysmæm:p֭[,͙3@%Tm&XDnB!-[Lok@ >IDAT582=zu 7h|WD7t`Ž2xР{WwVm\z|A=cqC;M~@v]w饗^֭[ k.z뭺馛T\\_|QPHַm[zgNsss裏jժUzguk޼y-˲G^ :6pX:uA=㪪?\1k n TaaJKKum\֭ 8lێAks\uoEEE:qnVm۶M BZtƍO?~_U\c60O{V~~4vXYzHW_} +VӧU^^omΘ1CÇ׎;tj4hvʕ+5o<͟?ߓb3T; d}ڿ*%%%k׬Y_]*--ã6?!U6͚5͞=[?"y ecKy>K6nkgxukߓn@p놎. (g='݀ MՌU {ڲMn~:z\~~˟_K~p\= ^hԼnѝ:v:t5 uKO?>X cϪRvvbZz X7"sǑmZ|ϟ/۶c$Yt/^w:s/^GƺYg ,\PsOSPfffA '}'OZ| $qwvApI+WԂ $I[n%OڰafϞ{&18'͙3G6mݻuǺ97+h+bO ˋu3 7C Ap0 7C Ap0 7C Ap0 7C Ap0 7C Ap0 7C Ap0D0Bv=Ģh'W,h'x,@Xw{_؟ n%< Ap0 7C Ap0 7C Ap0 7C Ap0D0n.=ch.]qł~o5nh=v ߼Éu#еawEIENDB`jlatexmath-1.0.7/jlatexmath-example-export/000077500000000000000000000000001326546671500210105ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/pom.xml000066400000000000000000000041071326546671500223270ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath-example-export jar ${project.artifactId} Examples of exporting latex formulas as PNG, PDF, SVG, EPS ${project.parent.groupId} jlatexmath ${project.parent.version} org.apache.xmlgraphics fop ${fop.version} org.apache.xmlgraphics batik-codec 1.7 org.apache.xmlgraphics xmlgraphics-commons 2.1 junit junit ${junit.version} test org.sonatype.plugins nexus-staging-maven-plugin ${nexus.staging.plugin.version} true true jlatexmath-1.0.7/jlatexmath-example-export/src/000077500000000000000000000000001326546671500215775ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/README000066400000000000000000000007031326546671500224570ustar00rootroot00000000000000In 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 jlatexmath-1.0.7/jlatexmath-example-export/src/test/000077500000000000000000000000001326546671500225565ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/000077500000000000000000000000001326546671500234775ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/000077500000000000000000000000001326546671500242665ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/000077500000000000000000000000001326546671500255235ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/000077500000000000000000000000001326546671500266255ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/000077500000000000000000000000001326546671500307665ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/000077500000000000000000000000001326546671500326045ustar00rootroot00000000000000export/000077500000000000000000000000001326546671500340465ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examplesConvert.java000066400000000000000000000072061326546671500363360ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/exportpackage org.scilab.forge.jlatexmath.examples.export; import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import javax.swing.JLabel; import org.apache.batik.dom.GenericDOMImplementation; import org.apache.batik.svggen.SVGGeneratorContext; import org.apache.batik.svggen.SVGGraphics2D; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.fop.render.ps.EPSTranscoder; import org.apache.fop.render.ps.PSTranscoder; import org.apache.fop.svg.AbstractFOPTranscoder; import org.apache.fop.svg.PDFTranscoder; import org.scilab.forge.jlatexmath.DefaultTeXFont; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.cyrillic.CyrillicRegistration; import org.scilab.forge.jlatexmath.greek.GreekRegistration; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; public class 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("target/" + 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 { String filename = "target/" + inSVG; System.out.println("transcoding " + filename); TranscoderInput input = new TranscoderInput(new FileInputStream(filename)); OutputStream os = new FileOutputStream("target/" + 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()); throw new RuntimeException(e); } } } Example1.java000066400000000000000000000106371326546671500363740ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/export/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.examples.export; import java.io.IOException; /** * 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) { throw new RuntimeException(ex); } } } Example2.java000066400000000000000000000111771326546671500363750ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/export/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.examples.export; import java.io.IOException; /** * 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) { throw new RuntimeException(ex); } } } Example3.java000066400000000000000000000131761326546671500363770ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/export/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.examples.export; import java.io.IOException; /** * 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}"; 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) { throw new RuntimeException(ex); } } } Example4.java000066400000000000000000000057751326546671500364060ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/export/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.examples.export; import java.io.IOException; /** * 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{src/test/resources/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) { throw new RuntimeException(ex); } } } Example5.java000066400000000000000000000067551326546671500364060ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/export/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.examples.export; import java.io.IOException; /** * 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) { throw new RuntimeException(ex); } } } ExamplesTest.java000066400000000000000000000152201326546671500373270ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/export/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.examples.export; import static org.junit.Assert.assertTrue; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.image.PNGTranscoder; import org.junit.FixMethodOrder; import org.junit.Ignore; import org.junit.Test; import org.junit.runners.MethodSorters; import org.scilab.forge.jlatexmath.internal.util.Images; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class ExamplesTest { @Test public void testExample1() throws FileNotFoundException, TranscoderException, IOException { Example1.main(new String[0]); saveSvgAsPngAndCheck("Example1"); } @Test public void testExample1Shaped() throws FileNotFoundException, TranscoderException, IOException { Example1.main(new String[0]); saveSvgAsPngAndCheck("Example1_shaped"); } @Test @Ignore public void testExample2() throws FileNotFoundException, TranscoderException, IOException { // TODO get this working (copy relevant fonts to some Example2.main(new String[0]); saveSvgAsPngAndCheck("Example2"); } @Test public void testExample2Shaped() throws FileNotFoundException, TranscoderException, IOException { Example2.main(new String[0]); saveSvgAsPngAndCheck("Example2_shaped"); } @Test @Ignore public void testExample3() throws FileNotFoundException, TranscoderException, IOException { // TODO get this working Example3.main(new String[0]); saveSvgAsPngAndCheck("Example3"); } @Test public void testExample3Shaped() throws FileNotFoundException, TranscoderException, IOException { Example3.main(new String[0]); saveSvgAsPngAndCheck("Example3_shaped"); } @Test public void testExample4() throws TranscoderException, IOException { Example4.main(new String[0]); saveSvgAsPngAndCheck("Example4"); } @Test public void testExample4Shaped() throws TranscoderException, IOException { Example4.main(new String[0]); saveSvgAsPngAndCheck("Example4_shaped"); } private static void saveSvgAsPngAndCheck(String name) throws FileNotFoundException, TranscoderException, IOException { saveSvgAsPng(name); check(name + ".png"); } private static void saveSvgAsPng(String name) throws FileNotFoundException, TranscoderException, IOException { TranscoderInput ti = new TranscoderInput(new FileInputStream("target/" + name + ".svg")); FileOutputStream os = new FileOutputStream("target/" + name + ".png"); TranscoderOutput to = new TranscoderOutput(os); PNGTranscoder pt = new PNGTranscoder(); pt.transcode(ti, to); os.flush(); os.close(); } @Test public void testExample5() { Example5.main(new String[0]); } @Test public void testURI() { String s = "jar:file:/C:/Users/david/.m2/repository/org/scilab/forge/jlatexmath/1.0.5-SNAPSHOT/jlatexmath-1.0.5-SNAPSHOT.jar!/org/scilab/forge/jlatexmath/fonts/latin/optional/jlm_cmss10.ttf"; File f = new File(s); System.out.println(f.exists()); } private static void check(String filename) { try { System.out.println("checking image " + filename); BufferedImage a = ImageIO.read(new File("src/test/resources/expected/" + filename)); BufferedImage b = ImageIO.read(new File("target/" + filename)); double distance = Images.distance(a, b); System.out.println("distance=" + distance); // TODO establish a reasonable threshold after running the tests on // different platforms (windows, osx, linux, others?) final double THRESHOLD = Images.DISTANCE_THRESHOLD; assertTrue("actual and expected images for " + filename + " are different sizes!", distance >= 0); assertTrue("distance is above threshold, images are probably significantly different, distance=" + distance, distance <= THRESHOLD); } catch (IOException e) { throw new RuntimeException(e); } } } README000066400000000000000000000007031326546671500347260ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/java/org/scilab/forge/jlatexmath/examples/exportIn 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 jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/000077500000000000000000000000001326546671500245705ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/expected/000077500000000000000000000000001326546671500263715ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/expected/Example1.png000066400000000000000000001177131326546671500305650ustar00rootroot00000000000000PNG  IHDRf1 cHRMz&u0`:pQ<gAMA|QsRGBbKGD pHYs+ IDATx S7|*DQ $aH&Rij4L)\1cyk頃4IF*ICsQJEQ(y~m~׵sX{k=^1D"H,MH$ỈD"HbN$$D"H$1'Ds"H$D"9H$ỈD"ĜH$yGЯ~UwR.Gfr3?,+eX H$fܯ F.D?k{{9M➖e{q z ?j'frpiG 65,+ᦘ ~w8@H$#7_> ΝN1]\- o9,rϴa@\0;CeWbF]ؚG?ݳxfZ>7+l--t5arCs]J?NG초}Ξ+53_{7HLH9"פKy]mr5@wiIz})h~>^oyʐޗ>;xk4cEBHlEf9^g!W/">[,+#t_^^IÇ#IBH1ۛp|ֶ|>2t4 Ve4[-]')] [[}1bϿl.fe+wm]Cvh a.t#kZX|@;D"1\D"HbN$$D"H$1'Ds"H$D"ĜH,S~_zޕki6,>C8 yx#Yw;(>crA'V_hjXmmV~ߗ-آ阹R{i>/|kfnsdXy.ny>+R8C_NrB_ozӛ~J+TnF4V5Xq巿x76h?E}?>ɝvy׻5t/zы&>i_6>(lMg?[} !鐍:r?eM7-S*0{k-{K/~D#7{]T7 m( v':ӯj7~8g?Y9K}6pg?~Mc!~@?O{ʋ_U~"yi3<%/;,x+YgU^e]}#Z!g>8>a[(>3G?}կ/%he=,뭷{zewC)x;&3W^ye#GuTSO}S?Ar7 { '0A9;4݋.\}Po.7~zk_]yWmmm{PROㄡC{}_o ^u/||_mF` CYߩ3r8v8Ȑ.B~tnI⯅8뷂v$u~nu ڧkSLJt̰ K1ddqì>eMB@a]gg@\*"X~81m-,ھaO^4Thi| ;װLa*~&i*wxh>2O kQ{q2Pcf!CvȮ~@܋wc @.EO^|%]V:Bv8[n!#U#9r .  A홂\Ȧ2g8n YG[଎x4pw RO?7ih[haӨ}ˁEFFP̮UѸuoUX9dy"A_Jɻk*5{mnePfemj*۝mK^|B7S03U& sɹ(_6<ϗv7d8*1'Db4ȃD"9H$ỈD"ĜH$$D"HbN$Ds"H$1'pe] 5SỈD">o|h8"9H,5p.('| $1'Dzul!P*Z`IbN$Y9upR霍$ad-G^NC9;([s sOq"V977M^qrVvj'DyN<ӕǽ"68qPdMԻ+C8*q뮻kxS"CԱ ҭvx֭EwqxqdȜCI ONm5z:qѡ![o8}θ@5G {bA`ɽv=u*I{8+z5Q7 >Kw.2}hBlM#pT T+ӑnasW_}{$[ #l\o5=e[{8չ.lC\;Sy\4yxdF`;Kw}ݷ9ՙHTkbiy;Cmkwԧ>Քe*%TΤu(g|Z[ Ju _b@,᭶ڪ COzs&#r6,Fg%+/^DF-M;C2 YfF9~ _8~ϠPCA"Wv$HeB_jb ۚC['q򕯜P6.3A@f?7CNhՑ=4Vo:DJҩ$5 gݮ|m__=CEFАAGum@ԡ1.rκ5^lѢnԆE>y*6u QOL?`"#F䂵GVSF4fL!V!A>a#-{iOcRT?.Y|ŬQe7H'DP[2yP6Dp;<>K: K %[xꫯ+g}]Ξ4@t: tQ.B;Rl7FTL}*!;zQxXWdmFּ'šD|IFy6PrB^CAz~ ]@xȃ[bmsd6 sR[ %-] t{GAu\PlŮx Gcq!mEoըqXp B$Pt! :Eao?WX5'Bm lT$6!v|Ht3JfʿfJ^].9zKɺ0FX믿~g"iFY l#mĀ53ȭTsS"nDD8=gf5Q/i#LB~Ĩ ,DհԖiYCbuzY0h&:/mgҝvx@DtϔN;ҡ¯//2$):-?ƽd9x&[V ~#<囬M?O~׿;8R.n?9ӛ4SbxO zʭ-"qB]>aA[IuޯAzm+B3]_uSa`re8tA9rcBVBE6mt{b8'M_v{P;-5>D"1lBB\cNYcX,0%12$6 76;x i=#1' ~c~Q]Ò`ݓH,srld$D"ELv\!D"9H$ỈD"ĜH$$D"HbN$Ds"t5qLYỈDbAçjY̳ys50$1'yi)GӮpR38A:39H,(8 );Kb8|9 -nes"H8ףErEo H$}!d/;⬳Κ -Q\e1[މ(i^IQK4QE"4\eGydB N-C]D V%ψIQY\,E<F%zKyCjeYƋ@KSE=e6:{Bn|pa#ĤJ^>F_gh"&+Gd[G\CBs9gB!r f$7PK5ލ\\r%BxQ3(FhЕ~[l.Y5?~lq|(AZVr9|tpE,^ziC66Ax54_<3A5g<&)Xo oM0Fi ]" AT? ƨCZW[m{m7e ZR7m݈뮻6Y@CD`P&mkis'|k_۴U$繅( #}Cɚk;c9WXaFG>yM@_[mU#kts1X{_כtb&6$w +Y ?NDLwIӻ . {~^W7mȈ>Y:_}n#Rt # 6Xn$a,\Ї>l?4L;X QE☱XMޑ,)<~xc#"_OP1aE,#|4A'PV_7_N!lMI4j$wjO?42(@t #xI~֧Сk2_ KQ R:g=/h"g+QMHEÖz0B]7*7&e `:]T_DaQeX^M7"7hkR uf_~H(畏@:+cIrB0 52&aGGĞ)R\ (*[GyK#(ǦwJEB,ڊ|Y0VXG!H9bԘGCnہM7Y ^!' e+.2-smQsnPzBǸbj9F&wXaն`Pr;a0FH95N` Ј-tiamw g9&#AI,AtTb,Ÿ<PPFOuep{N Z$A8~llvDv,שFC;[ԡwdnms tECخQ.N;,^җv(a+ׂ"ۏd4*0 `=yk::#lTiD4 fXgOwq" {ɯ~5hw9zX 5ұ DT -/n]^Cnu^ Hݸ+; a0PzԳy&1E. Y$h@ea3Bb׃mpr3qyoɢK#]v٥)fFKBǸGzb&֢|v!Y:}sԃC,@=:wNv9JbQ5,iS'H.>Kk[Zw Lbڤ-!aAx-L'u}#m{~/fmw[lLkߞApG4ştC,B]ZR2\@HO4E?악+AOF& mAQC٦gMx3Mꥎ"=L%R;v#L1}44z-vMw珐ldz؍egmgELga#ת-W&{޾g>󙓶 >BR~K^"W>G\'lna#B_}3 hsmOص/K+i3 rz7>W_}u9zwe5[7ˮ>wbW-i QUjg!;NdM;Sx+ir3oWv*Ֆr(]N%wߦ u'71@tzB:a٥/ gm#T?Hm|꧌> r1X:ї-m:*,FbhOmcӇ6J7~ӟ6]c۶ y vx]׾->˼m(KG&ú G]#<<}k"jz_9K#Ku΁{vaO<:tq!,w}*Jq{$17:ԧ]L]NA_ۡ_(ؓiKbV36El"Db l4 ,c;͢攘-nY ۵t#\ qu$7X~KL}VJ7YϑQFcN$3dF%>߾nYNaX䷶<}!O=կiDb$lſD"HbN$Ds"H$1'D"9H$D"ĜH$HāKk~ỈDb;[{M~ỈD";١ YKz$D"1c ũn"zϖuۮGỈD"1D9H~K:ČCraaϦd&1a,; bE:=Yq7+L {&D>uK([n=ʧ>U5уQ;yoeWKi9JG]zh{FjϨ85qom7 s沣"=Цb&uH ]ar*]X'~VjN(.hI'Y0L)9 #p,._1EZ򊀪|y?AUs8]ס{UﺬHgՁ KtЏFQ1ds~դJbk/|YFMJ޳ucBT_!#ut*6PR@7EKkhS:80C֣HhPkڍOFI-bWzT7eb=묳ǰn uv192LdF% =r> U>sa5Ѫ%eR!+/<= rՐ(#&){;!5?ȓ!iĬB RA$Fokr!4ifH.p)ԁD'<S S SQϏ@v`7a|GqĄ|6k$8 iE.VP^tЄԉu`*:psxQVh D7NXle̳tDaȉ vۭ[\v0~LWpW d3궯;10ɋպޯI9x;x1ވ<1+ # [Phtg$Bp*TG%0:=& $]OQ?k=yk|wNX0 Q6(F0eG̺sa pה)!GyնڇԑՃk; ^8# :ȕGV(cK!rd68~֘:-ܲI7ζRȵ:ym !ePv]x7|pRfd C;483<Uyd^WJ#zDޭлrȇZw<FFrMz 1@S%eu2X=0z6!@r𽇥[_2 F[Fy3 y $&y!zիCetYe"KdK6 VkA@ۆwB59]j<8Y:̂qE[ra,w/H4z] u \-hy,;]'<p(GW*[Af C=_]nsҋ(C{:u饗6m*v.7A~Gx+jr.ЫzB<G00(p? Ǭ5Yn8.KD t _y<-Pj.ʼ!fDj9V5l=ʫI7GbS." ɍrv3X]X|JK3\% ޶GM * ^)Z#vz|8uVmiP-bBt_Y&BN_7Xz~3L\kk,\-11J8.13d!I"/z-Yq}<?g4ʏh{[l4Jtf*\sM$P!4}b}St *o喆hM,]wu,naמ{9]=nӱK`e-_˩Xoy|¿:u&ꫯn:_ ꫯ޷&~${6!չab0rWl=76ev]|ō,4-lY,|;ooػmwSb:zMGWꪫjʾܧI ڊx4g֐<я~EpSԆW]uՆK跼?`dL/Ҥ˱ K3<[,"l{Feè]]kI֐^{n%onzc5dy~tY#E9  ᇮ}\2*A$Zᇕ f/| GjeK!Ua<|C!箵cĽAzGz.49f~Zz,Sٟ=|O]fi~n v2L%6#*0eH,(bQ-p`F~/T9w-S +.92~č`*讴j2)B1T,k*bq" aE>DD3%?-Xn|*X2e_ҏԟǜH$/,X!洖{Ӷ0fH, /ti5D"9H$ỈD"ĜH$$D"HbN$Ds"H$1'p2,3+1$4F'1'D8&+#(8$D"sY4JsI/&1'ł!_Qr9tI#L|F1a*/v-CLSA~"3I$t!BMc*)K^,?ODH1@Cވ*KBkE-a[# 7V i?.Ͷ8[(:~| qG?хH efm3h:"K@]'tB1E% , pH}@Ap0NPhlMn*GY:܎99k7:N:xM#aDd~9!E LgIH/(HPjK0gx,<P蕏pCSa\Tvt WL!)$\XF]*72(VL:EzO0D;oӑۿm9EJiKKa"0ldёyw8n`/o_.q }&=8a1AZkK α6(263F:&~SqshvjJcKs5oA#ĺN FK`-ZlpTW rYucԗGY?g;0m,XloO9ж!%jK c@GnA\Ȫb)-$:eavYL 7`; (7r^ ${"-O>y3ʨmWaЛSYgZ fM#s쪨;:Ŗ`nK'0'zֳt$E0 *[윌lc\-zHQؕ2Kba>۰gۍ7 _U N~ؑ[7FKü-Dvè@z"'r"{GCxփbNPn{ d~o|sZ0`[gqF3M骫:yFԨ)1kiBwuF! @C阺f IDATQVSJ ' +ɯyk!?ak7.ҖT6h[l9#&6F^PO9"mnպHB~ȘaQ2˜ kȍVLzDָ݀ˎ|m2^{A [iu vm#rͳ =c(o60h.p=ȕ=t1v Lle\A6lU7LJs?i#;ebc. H@O}б^/* d37 H{2C.^a_X'tH{Ζ~n)4L`>i,韔'f GDet03ʇ/\ 򆶛gP[̆!FRvD̠5K,1zBvDbT,ͅ/@|g00ga"KSo >gOb|hiz2]1 ~u:8Fd")ZDqvJ}ʕT$v KN9Ɨ=gڊ{&wYZΙN HFɬ¶yE$8 8Hс' &9Q2ӝA/)5n }xFEQWCAՓ^lvoF[E+prr-zL72bvN/,µԍ,{nӸM:D=D%9uLյ:MAS etKtD4uzJOh)G}@kE:-FbR7"8&89״cB".e NdQ$ 9`dc[,ցR&CF"(= bf VKwC>_c +!l}эNP8)Ϋ{ OM[:wSs0VڪMiiJn)X92b3ϏQ#80D:x6F,.4Nj:uX)Ҫ5`lMCG>,S 2pyC9C>GFa[m%DF~]4 `Vt~P2pT ~  ,GK_V 9AD7n1 D\ ,uXڻF^W*]5Iw܏Y,"0.:UwۋXz^ZʼBڣ;a0JB])7`GgfI]3QW-VDߐr_?TX`ܰ#t`="&ɋ^%2WFKp0V5A7>39FWBَ'a &Ѯ617\7HmA!.gH]2ytڑG9. :eхM9ur#fV`:ka3 Bh[tܑkn2_ ikSH K/~{%>fGEoEYPm.wCkaԕAۻbm-M&[A <txYFTQCYشbnd2wG iKc] mXCBL1jT['<叫%5c-@XN%pW~qiPpC/V">Z( _FY`bom2= ]+xe20pB A]!B6<ɒ׸7`z;=,̵rY(F l$f7HOd튢\ޣ|c7׋<'鏙t (2 q1wAŏٵ(|H7咿Jw2a )pVǚ+xn!&; &QY" &ׅU׮QZuJMHxO{i| +][رBhY-*_zo;f]cWk  k+vjtkA5 Hz@dWr^#DR-ɋlAh0hoQ%nj#Kc/2M lgjCDA/,&B&H9C]vD &]mA%1kzt 񱂣t8tJaҕvj0uMa1*+[,L1>Z+ts>m/ənAQ PYk4Hu0f~#t[9Ա˿cZp<+NNjҷU:K &SMs_A~eEBՕ0ôs"1YA|ìUt ¯ukv~au2>TNȣ/ƗyQ"H3,A{f'#wytwF歶*{cYdU)瓟l Sk^VFb^2O6Lݑxh+ٓM \Jtyg\ #[K$h>D"HbN$Ds"H$1'D"9H$D"ĜH$ỈD"1NbstLD N~tT'L$ӆS퐣/RF 'u{RqZ̉Dbph<8,~?ol]ŜH$:9~h,6+Ư:կ~DE-ŀDf4p{g>=!,|{ۼG.W뭷 |o!z}Eo7߼,e9k_Z#hW\S#gາJT+], 1鬾ӶL!(5D^vTzک "86uOyW]uk1_/E%17p,y&ϭuK~xqdUKBFy}ޥ?:yӦr<>O6z>| G2F-&lҙ>n~w*uPD@Q ҺHai:bo,E k4dq磃tz䫓[[1" r,m1w5i]BA BDA"p:ֲ4pG@*h((2cQOb0 E&h~1{hߎ2,j c йoy\jwJtŶ.燵D|&RVfu1( R %rXma z!:`{T G VYt> j"A_-(A{DŽ#ôG!I_'pS"(FO?}d ¼~M ({]_אLg{7i^X6M:?ia#G˗`Qz0F{0C~ PFsϢQ>d\r),\S-ܲ!}{͌6R2=Cdoړă(qtNJO,ܐ_ b嗖>^FPYkK"280>W^y7/MFNG,] ZA!ߺ<ۣZS7j=h rv-$aA". t&ڰfYA"7Bݥ^ڸuv7;K m#Z5n/QD"N3r_rb ( A-~!Zȫ~u^ cҫa\ Fz'q̺dz=  bUVC^wCGŵڨڥMf]6/\mey;n~eQ&Zt A4~X!CPF#xTUEvW:>ȧ̚@We#XO"2Dۛ1hzm7x뭷/eU%/>{ a&\A,Θ ark΅2p]o.D8:t vDʦA6< 3(mc3DƦt4ۖ"~Sħ5J ]WgV8d &"Ͷu Mz2=ZEY1We5 Lۂwlܷ]] Õީ4~I bki㦨= 2AN-׃AqC_KaC:f :mlf ҐzW?K+f0QG wDX|hz _R&Fto8=ϯ۞>4dL1\%Zg!e~8 &X#3%,ұ:vMIXl)t=+nɈM쑦$AKtc6[BeC /6h<!1@mΉcGublOT HVpk cIN9r,-. 0Bּm yK7%҈zK+/MU<e͜a䪍6lfk "φ% F%(IC0*J}`_њYB5HU1_+Dahgn{ ^cPz _&q]zN,|sze?_y %( d\?QXBO :~Ѯ%1@X}crg?XB~su(ىey}fgChaƛzM.vZ1xenچgG?Ѹkmf:i;@F[]bD;yK L7%V?!a;tX n;/2l e(vl?Jb.=]BXUΏt|YpYE^|Z\G>'>J~z+V.&= \laPn6ڻ?0/|̉DbzbNcf갸fɂb(')OmeRD"ĜH$$D"HbN$Ds"H$1'D"9H)0{39H$Zp`6l3젦7޸929H$*83O|ͧqnts"H<gbn6e;zֹ-RỈDb{iL`nIpn,YB7AtkZ$ qhvquDft Hui?50 ӎKőBӈ^w'~0"؇|RG!{앷Ztr馛.}Qs)-آ~3WG5DVᴴAq\] nӶʣ-y%#%} ! H1{<1Ηb泟xLGCآc]\ӖX~H3ZuEFuQPKiı2A0MlXwhu fGWzf\3{ł axn% Ջ`B!<}+Ff%Gtܑ^p e RM{Old7,?MO3rd`d[]ATxQ M D/aR6iG/GeFNӐbik[m͊etMDFb :5"ꈟV[nFbϘNa")0m7Fpt05"GD ºt:E /:N HyX 5 "yߓ_][9D$%#X c3@"nD@P9hG?Ò w!rc:?7T͎ɬ+h,0He;ƚYgsBkrdڧsNs-BZε {ހm-@7<3֥Vn ic9GGCÝ0o HLF b;#b%<½AzdzpذOômbB0175o H+" 7 Пx toms-,~+}#t+KȾ`b,+&MЇv<]Fm4 pD0խ'|a4:bw.bGa!q׸CbdwAftkoF;,` FNXfo~\8QJg`}YXQ}{3|!|mB4#ao GXa VJ1]^ʷ-;2g-ޚ;;BF` IDATlom'd*vXAK.iwvjB. gcȋ +k\1u`tZ:۪׼5M+uz11nCmǭS,,`\] :) 3BI6=35X#Vr,Rf|3bIBŰ{:ꂭR6HGإ1֢2ordO3k1/ƚd 6ؠx_:]E`7F(.'pIߖ9ݣvt0bV`Dkrk5۪ :G<;[}npZlKLyBvԟYFK8p4*k$=a(]#!piӘȯMOHî[-&$:ܞH;Vtէ Nz뭛Ur넀իڣ (6x[:ҭ=w1<d q![+\+´{5V4{#cdEg;#p8!t.XB?8:.m5}ӟnU:9m#kzgp18=d`FRLbrXo-j&e\!(/m*2Yȕ:3$XH[e"ͦDb TΠ6 8`MaBbH,H 3XsIoOi6v]` >d~Rۜ-%\"}̉D"10_I99H$D"ĜH$ỈD"HbN$$D"H$1'%NsnLeކlĜH$} j/Fգ);yi19H ,e܋9pr_ڎ HbN$#(*)&mq!ڊ|XڐĜH$F !"L‰z~ KM3R#PѮk"pEf1툾9Ʋ"6B&ua_ځU(TLS!hM0L搜*݆:Lf(YOUr Qp^A _B##bU,BkKyƄÈmEnSM %;-`\qyB8,,Lճ<uxrFHH|{фP# x{챍L!_: ]RN.HG;):1_tmo{۸㝺^1wvQ0z{{6jcD-1#1$Ԯ?nv(rLGˏ5AxuѠ,B)0@h@Xaɛ#Rʬ6H',dSs9ek!$p- t.zO 3}s НZg 7E'tc)o %n; Iygu"5Xԏ =[kbZG9Y ]&5̒k[A4,ګ3O4<2`AՍA5tg7DX!Bw"0?ʬ -AXb!4Q֍6h;138cw (YOB['#%zJ>&tu}lנNFeG.!#s#h>Z ;4\SFC .hm^}ݠZ!Q錜Mf=i >bcz 5n%MJFHW㮴Jbbָa% T=ְZ0j KDgOB w=8h]/H#c%ڮ:Sn;#HvMAvw avJϳeTHY1}zvχM=AQ)yrouN;*mOM "Y3^ڱo1,:Mƴ?K@&ʼvۍ[[V~u7, F;WmH;\,m3%Z-DaЩX{gi I֤pcVu8'pUI. (\~Ck_Ho ]bH+1Hzة],oVbҡgV\{ t:7RYCzDƫ:X"bJ]ABI*zLC\o|lL9At0E7|s:kﴩ:=3#\{47%}" ޴/ؕa|M]Y5"a"Oۻ\w|-l䜮7X QĆ]rigUd?G ~ K>~/.8Q ԑ\H[ni}{_p 'oG5V;]aʾ;R:peem묳N\jp_gzCu]W]wݦ}bu/˶n۴Zk5~] 6!|'A^ H;=Ȉ"SF5\Ӑ *rm肩;]qasH~- \pA(2 x n7w=%/i.@ ]QBeM6i[omfq'?H?ff =ܳImTX1̶Ğfa 0}3u1KmY3}l>+#j& lAc?X~N .l007U&ɹ$pS֋ sriil@!։dBGlӛsB̄*x*lOl[sK/@|S]^(;j>bN1 #\M,hɚnO(ˮs;vYu実]UVX㑍ŽʫշzJs7sO˟}-ru}\Ykg-b Ƭ{}wVVXQ;C3?|}MוeWY2˯Pnʏo;+Ow,;[~{=36 ,14Gbk+dϹG$~xyXC]tmbQ7ha_Zx \RN=KoRRk,KcxRz[<֚9W6@Yg޵o_Vʺk!}=7yCxilN<W)Ivfc>ođh}~.ʉ=]^Cvعnĕ4ݿdPiA`]VNDK 9Rn\)Z NNgk[ܼj"e@  &- ׌nYFiFNtv3u- 2qvc-߱g<D?/?-GA]{/k7.i Kϵ\NW{KwyvdL!{AFCwQz[YzmCLHVő+$ yQnnr_'u$#^U䈙l RۈJw*Κ8!->; )DZw=OrA)Ic'*G5]!;4m-\<6nMjm!4, ;$C{$ Mb>sLPG3'v^fyKEa1B@IFC5*)q<2^vϑ94*V4wuLVaX8jԪ2%Ve^r!Adte%"%1"Y Dcq ЧߊI<ckNh]} b B-u\Ĝ,. / O?)~o*wi-˝ȱ ],ÂZ$x "u%(M-{&L"!)5Q `fZq!k4-\ޑ7[c:w Śٓ>1]HhG,k#DLZ[Ƒ1y }%z6/Ҽ@6n*{U (z5e Uid;FhPɟYtRrUS `Tq"3;)5o+>~MVF6]퉻vƾ_>/RZHlƦMVX BJDDr/ &tp;"8O|?i; ~";tY.-nbg0l8ln @H!dR|mъŒSϞQMR k\r*7D!ҥQ/yH&̓+HQ 6kdc0r^A"2*Y?{pM;/f`01W(xd)vAZ #JEI`0b6 `01 `0 Pȱ!0*?iH_^/^,{>}|AYn4oj~Km,b6ĉS)-ϐN:$iݺ\{rEINNt-G-{۠ma̘1r߉r?H^^| Thܸoޓo!kז /0y&Md+ȁ6XlHq,@CdS~}C83N#F#<)cq`!{{ɓO>)?\}rJv\C ?X>l7;׿g;Cy=YGR̘1Cvf9?1>vX5+?zHIYDK,~/UVrm`^AF 4(9uR)4U߉Z8xzٳ<ꫯ1:twH }Q_6?R}(hπJ-ӧO o@̰ٔlMCŁ13xRރ{dy]Bm5 T>vBҡC7ox%4dr};=S_.\(W^ye( [hQ"[^["_7իx]qgM6~ϟ/_|8,?=I͚5[oɓ'{'⨣y '>s-!O7m׮\ve|r}r衇ի2￿'SN9ŗGD<|p!3Lq'Q ر|rUWdbS.>|Gwcʔ)r9ӅtGW7p5:SO}ܹ'zB$r{!hƊ/7`0Gƍ~Ϸc2RFY@;O>VU입ѣG|)lL`o,r"܄ G^ru]~y[K]tIO8s1>|>6|ߠ <#/;|]tM2sL)C?5,µO?V%KE5MY+ JDoDȑ#uZju:LFLuY𫯾o/ .G WX7 +3DlӴ%D*K(YM{X4ZN Clڡ@g6lXㅰr^KmcLu 1,IhH? l)w5,SB(HvCTsXŊIDATFmnq-;azq>;wnFZ)o8>ÿ 7X'/yvEwv]k!f#\4,!D["vi-##J楃sϕ.(?:dY ˶<0q?,l2R ;>S 2cc) T-  v &AWhE*|{=PF@,"TmgGuϨĐ/C(+BZh!AƳg?BP@ \Z芦Ŋɶ f:ujbz-#1Q!'/#d-(&LP"".ш hRLJ~X9_xOD΀>щ~,tvuy[f|C\Q,RDl4QgD9H`"$Lڪr}jԨQIm*.͸pU-NC;E/%G3J[,*&xM"۷onQЏ2} > $2/@2ݙFۺwqO?]KE36 H;Pw_?grLLR]StQ*85f2+SIԮҌ A{Y!5)-GҌ~ΡfՆ%Njt۟ afH"b%z-ˣTG[{t.x$GC>4[(ys\&2=7 "N36|"!Ѓ "l'  PgE˩-͸TTRֈBn},!DHAeR1&Rb:yAɖHxВU࣫.ۺ4`[[(x/]6.<aU'cViProH``bQ5n]w~IգDޢE oOBk-Qn"^tRYt)HoC=#A^ _p|Qq ߊJ公9$EG^~eƠz¤Clhg1Bo}Mnnn<nݺLA\p=nLϊ3[y>۴iC~饗$pu.C0,Xe# >Rpt,^&92yP'_h 9ovAj(3_|0/vtObZ6J2䅭 -);, 6;m =49wmV[lY~CL4)71_f\t+RI3,|ol&+KwM=Db>O`v\sM<1FR* D$ɵN1 i^_>#z#g~te!{S`nuiMph;u+}h)c_ĜlJ * B֡|E%C DT%PRW% #Un~l{ʒ@=*xks".St\8H!d~ ht*1g]K5 lO  E%L̨*L:dT1gMg ö d=4"ZR.f${v4/1BBwBKJ6mצG^Ⱦ`6f_Ӥ{1[ r>^u$p2JtpPYUأ`m/e~w_JkXPއ+@֡N^ڟy/d]?g<.]gE}4nテnXG?XWZs[؅ЯE宍sk{ Uhг+HoO/g@/GLW_Mu6~G\^,O0r8aZRDg9ͿO}KeO\Y,2e?<ڮrN\+\IPZ@GsA~r9EZVm"Վ&dqe*7MD|>u6w7rNnK=pBy7YuUw6n#oq:#'m{7c?.Cә 2ԑ%Θ6<. \o_tf?>گ+ưFwyn_r>|'+Ocγ!RtS r׸8ސ<eS$y֗H!ͱr/: Qޓ|扂LONO!Swsrp?X'rL5_.K"{f\"ȒhTAHD>"EBv;48xGP8LH9َP"SR#%s]sNr92PIԫxgsٶ.ީ`זClY>  ".Kq % P^wj9B.ΧD MaYrhHIţ^('x]HQS xXUGܐ`/# u4h.Dԟ]q=} ,DDՆ[!U 7dnˑ.%@8r  ML/>.nn \! 2HRJhH\qOt8Xh?E)j7JOͭ̍vFC)AnDYQ 0>^$hl)d4$̏s1/Ѻ`zO33R4ã<" ?rEuyD$A"W7fa'xPE#YKPK"Pd "_d_ШSI6'U0?rBD!8!RExQ0د:C#_=~".R b^VcC-#h-|`H֧dMr?2Ei 9x'fAEz^pN@lTxxX_+\[DR@""p!!FH m_.@:̭|,hdO1xgȏnGaF8`H=%4D N4+p+dZq&@.i<"0yh']@_ٱoČ\&-R^GbS шCPlǢQG9 ;f^0ȀMqs !rpp<>Y&ן (!(IGf0dnߝ9 K~/x~3}LC>J M!фTe籿;d+#K!uw2xqu#Jһ8"FxGVTܴBft!.sQ qCw~q0|$GV*SG=:NYM\KָOѵ6`ݽCswv@<ƕ!ҿF=298>XȒTBvdfо7̏>ꅸI#6O^"µv}pQnruG@{h}cl!oq 6lSu{>ݍC84&*4!"'<69pP˫ͽv< Y$r9E^p#Cm,5vOާBwepcAIk>C="Zfߜ(qM2es~,2gNvlҕ@mpy쑵y!NO\KC͘C0H6dwM=6kA I) ?Ǖ|dF^('("O@!)I۩ "Zߢ>.4zz͍NK;[<|BMP>cJBE; gWA:Džp$h겐m̯;h}߹2 H"r^ч1PkȮ`a Lj]Hw$աxuR?҅@L&<|K\{ϵdhhs=ԣrl0 '`0b6 `01 `0 Pȱ!0ׯ1c/ҴiS9c_r˙gie01W]u'W^yE:ud_}\tEoFi׮[N^}U1b'^{ٰ͈xۨ~#ȣ>*=ӧR`RF@6ӧOs`/(}n. <4Hn&(CB7NLRlҤI xY\=z,\Pv}w$Γkp"ttewީ~FquUjDos1SnW\oPm,''eEJə8q,[oF,~{7ZA͛2k֬ehݺ@ nVr4%[7/BШ~6E+QǰU{7J߱cT`,6:ulDvD}uX\'#U`ǃ}%l$23/e{뭷d]vӹsv-R.uGi,~2 ʑG)3g+:B9k֬,]Tx E2|p{・G /N:I֭:SgCH+Vuq2~xرwf&O?׍Ϋ_w ʽL' 뮻}nAA{2a9ꨣ˅^IY3)6m<Ӿ-B}h7q 7 ,Bo-[nΚ5k0ʤ/ǷhK/$O>qUO`O;4O ]v/ \z~,B0~w}~q2]t)>zb49uC\qP(ɉ/ 7A@X >!CWP(Q m˹17ig:MYP2i7m /::"f2FJ 3n2sxkQd17ByD݁l벀 c`1D0/ c2̉+J_vM 멧*gig̳P?cO*Z?pF,@,XѺu/^/Q}16ٌ @tMQPI$[TZ 1F?믫c|D8d jxe;!^:ƙi--NoP_-f>E jTu l' =^lJ:,'U+Uc&tgKΪ UcICIFd\0R(&RC҃;СC$ҞTZ%4d:/j\x$xtBπm!)~W_.J;V?MSl+ &F1lLPz@,D:@ ٱVҕY4TvPD`[!Qs,#DQtiڸMJ4a!^8,zq4Rc2 T6HRg|P~&2iQ2{ 4khl]7o^Ch|Ά MtN%f_5pi_sfHm7|mcddRŸ #Яd 3=6RF"hl-z\tD̆DAQ=˼r [o5c# 5brHD\nqt[;ړO>/ h`JQ#grW*ۡOhc&YeJ'DhϪFRYH FEF$F6ǫ,`D;0rBs=A'-d84-nkg(&d)pH*HO)4ɒJd;7ڈOU4ˬF6K,IH(rĉ3DahlC D֟\LY?i*Dp'vGTN$H4z:BA%j5Ȉ^HѭUn0:QqpAʜ#Gޙ62T)­_/p SQ&Aj8p&#%| =J輅>W^^3M&. TNtb|;OwQ.: >tk1VYA;GA,K*(ar ЈUUC)p`)Lr&QA0h+Q?Q"' 1s=,q پSC2Q+G͸PA geT*`h z~a+m}K}ZtFI9CF:~1F|J%Q^X$k}H";lPmC Y*?cTs:|GUZ?dOmni }W9 ǎz8U%fV;PPbD7Ta0 jJlQО8g{vn0/S }mEC!Xƞ2^"Ja*@Wl dOLc6 #f`01 `0 `0 F`l0 #f`0b6 CU~0vE,IENDB`jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/expected/Example1_shaped.png000066400000000000000000001172251326546671500321070ustar00rootroot00000000000000PNG  IHDRf1 cHRMz&u0`:pQ<gAMA|QsRGBbKGD pHYs+ IDATx c/QQQE!JqҔi酦i89ESz!I(B!!ICyX۵<^gs}[Zu_kI$ĜD"ĜH$$D"HbN$Ds"H$1'D"9H$D"ĜH$ỈD"Cxب /G?󐱧<M^wk'>1 SwL9YvyMZMS{ߟٳ[\4c$£Qcu}ғ梋敯lcۛukn_cW7F5ͯzHmog?i|\pn.z-|`ͦwW( O1C>:7iN;i޻i?_~yỈĜ~4'4#㭞4C=qd9yٯʏiq e i<>M-8<&!X"孷pcSΟ]2Aļ՟l5!')'s#M|ӟ1ѓ^1mb`Cxыzj00Hoji16N{WžF;{ӟ4n^~w\}laӼsYEDsaq3Xl 4q٘ؕfI%\{4y~׎)c$)475r5ͺ7zL,5n{X8XitެO~ a9?DItRqD{;پMw>tݛ4oQ~Mƅ!~˚=\?^<\}?䐦yK{#[TOsL<9Xzs"10|Һ]|1^o2Fp7knm/{>c^v;af{i?MiO_3Nݫ쭷[zC 5VnX481zxH%!{zm[9jcȑ׊`Z#g=w}ٻ;vݏy<ێ6=oUogׅ;nc>=o{̈H4r~1[@DF*Mx(kA^ډFó~gw=Z=7H e~8,2"0_7 ^#wcz^ fq_ˇP~ws\x^ghOMӞJ0arv+~[+z˿ .W9B,bB^_ziԩDb!.4]|L)y/+~]s;{@qH<#  zӟŠ59Ysͦ9Z#Z4?Hxk Eu4୆/ WRzBk=iwwY!+>id˘w1rpnL-Eo3U\#i~@۷.λVfV:$Ĉ^=ٮQ*m=e^K57Ͷ^4ggLbs"`D];$,Ɨ<!:6lxd/V^klK\"1xvC{foCK/]Aqyϗw-tZا>]'7#o#|3mkkv9p~~|Ahg^BBgu)&n^u E mCuzHp@̸Qۮ^v`\uU.}׮+C$ʏ2Đl}{QvkrΊ6Y_ #њ>g^{[q]S+ylo;Bb7?HD>o}{a0(_0.'j+ 쥐:ts}l{)SlKCelg7{eIOzԃ!^r]x$D/cz!&H h'${x?$ƃ T &ub',X.kzድzڥ~ʆšS~,J.HadĜH$9H$Ds"H$1'D"9H$D"ĜH$$Dbo~oo~ӟ6Gvя~N >O7w3>Ol^ה߁/9J6pxG#lx__o|͙bG^6O7TMo fAho{-?EnOi?#_{Ú?E]T~w~x4ݼ/ngq*ѡ.o 9Rys.wKX{@p>,n":vҗtxw}ny,q|^WcXyFo~s!F|/lN8ԧ>U浯}3mfL{dА>~v eG>?S39Rߔk)=)O)}t 7xVȠ~~K.i߿Xwn"Əн-}FNت/1Ǐ?_`xń[\`q?ؽoo> j;ҟ2f!Zȇ>l6eɕ⋛+G=Y4?Xrs='\~{5X\N;u? 'g ^oKvn6`Sk_Zя~j3"~'ƃ~?z}ַUDYEg }xr!<[uoJ[7]zV6m>cƘ}^ϤC]:/6ֵgIK{8#tNkO:rN? ƍSgWpb잶0SbrȾspP|1~}| ?\@8A1MÀ郧T?{P8DZ;wi)t5[뮻NibrwLi <1tcGd ~!a$@z'̂-DXfP CN]%Y2BG}tp]O==o O|e7]2 eprzfmL.acg4s*`|.o ۆ~ *:8ACGE8]0"l\GxYxy,%H #$oߌG.M~;1͐IY2Ӣ\`A=sXRM sXX`#H (=a^7[܀&#pTj4AAr^_dnf87oCGtuF Cfv1Ƈa-׎Њ .6ČT^WF )Xi?x(kx' 'tRYLcqE%`1U 8M&D\=8 |=@FFrF 9њVGᦗe-29&tS5! .u,yX̷qeM s-׳T1VVpye 5 5w}NzŚ_עc?dՙRaN9qc6*}XNw2paA kb6*;4F+ȼlo(3)S}2OŮܻ㷤WU/)U6jtHv N*;2cE8fa>jq0f2ٲ%*8{G h=dd!agz)st`vbP Oyy.s:^>J#ћ$lmq¥^Z,Bo~va- H|Eqjy`f f~f>m,<{y, b, z3M[3EDS8hfszh*3*7b0ΘzVXsr0 d%^k2 D|M[￟AT+<3aB<:Y{cg /Ql-iWEGL΢x YLނ*8f/1(T =fw+[7kh)$#eAd!SɶM+~MsԘ1baJzşՌWUnb\q e3ڛ!iUOy[:4odx }}n{W:i>Aok{Ung|Į|c3KzW{m?󑝕!į~X{y O?L )+xw67xci8T=gӳEhuguY{ct6b?6Oֱ\u) >?2!rٓ^lug;sY=1yۅkuK-Ԅz(7߼\w_tB(s b ~˚V[mLǘG[~_ |۴C?:=9(tmPEsfHL=&Gd*O2 ЇهEzp6G1V1H{)o^z,˙Ɛ~o͊+Xƒv ?CQbdYY.>S߂@1eD~^bq<8ZaU.̛EnhM5uiA#]PC}zTz*LߨEK?9j~ʫ䋜vK0jdeyVz{k?Ti_ƳZ4d(lU.Oެ`&׎FF̉D" D"HbN$Ds"H$1'D"9H$D"ĜH$ỈD"193Ч G; s>ts"pЗS輪<תG89H,p3$dtiM)Ks"Wpf#ÇdU"Q=GNotQG쭓w笚XPDt<q&V[: h`*9dG%:RC=WF"kD?hX8Ym8n0w0޸ѝБa^LL ͤ}*~E#;cߵ=b'9LŸL!qb9:%5_8KZ즎{wlR? u'ut(oY"gw[G^s5k8Zd"tZئn(1^{r*bp:OsR# |~9+UHv6k_~fm)t#Џ|#~:A/\k}w67|h`';9?!t2|38c`׽ڨ=5d%>J^@$h}]w}n9KV}8yHY€t.WUt}N;Q&KM׷KHZk.8{ow@Hgݸ3eYnwP1:so?IUB /9&!7Mo_Ө*#=P77I@#dY$ު \.ڰՁ݄D}y"JD;~Zq,cQzl&}SOˆD[#xV}6esoۋLx{v\CBJ+&9C<'G(B&Kz~M7tsjrd0!z+3J vm 6Gj*P_:w9FK6bc汶a ~ d1rrB۱ a^`EDeչDm#ّvlhQ`dWJmA>l[xemEq~-Ry+rb-*ߠ.TYC9 G,[al [v5{]W+1/u<˶=e$)G7Si/`1"T|1ǔ|ikb]z͞{wKhM+Ơov㻥ᡇZtCaJ?J>~wq1P&O ["an(uD홵_ k6:Tsg:~&كPBS 4]ݯ쩴ZL,>@0]E-fpoH1 H_~ ;㮺u }No}fiYv5ь1H9Vbz=19l%BK,}OeuQ`d1D"1=TXb-JH_(uQ!h"cף,ف1ỈD"1 D"9H$ỈD"ĜH$$D"HbN$Ds"X$XToz1f9K*rs"5/cH6[[o]4/b[vUgB,_ώ: o;rNq"s[rT K*);X[0Un?(Ŏr]6,Gzg}sQ2BZ9W6RbLL6$d  uRNXHPAο+JFwY\ B~A1gy6%Uv n'+}^Wb>H\~Kts2oyI']rK'_:;._޻gwƳwf}Bo ^3~dX% 5"V߱ˀK(zks?4/yK Hxw[vۭ RDrS/#0 [LJRɲ%/d:"b$ru+i$Cz z駗qoݷR*{ȡt .(N6/S>oE|9G"Q)"ȅ04|w7$B$sjq'c!Kk/N;;.u] KlM}=huЇJ{/.#N_V=maJdq^pgFxƘ HgO,Rd$g9MEd} gfYs9@;r!BF:uwl`x'W]uy;9LoƮ9\G5%t ol-"#ȘQ̓%d'<;cˣ㮻j[fbux| 9'}^kv:m{G|cU/~&UVYe\;h[˶!8g̈́G9> 7M_k\v8묳p6+:KT3F>#YouV[0Xc^Ws=,t@`NO*_WVGW(lCD9S $fAAׯE,<؏鬆pX:.-lʭ0>˫ Qr|x5\Sů(tWE$fp ,Z|Sז4؇mGZUs"x)O^F33/P%1'yaD"ĜH$$D"HbN$Ds"H$1'D"9H,l8]%1'ăp6Zk5ksꫯĜH$ DW"ә?)ĜH$f Q8(h*Yy'z+9H{81RƐ:ōts/߿@x%$G)og0.'wC򕯜fL>򑏔{\{]M7Gۿ-:7))SYpgQf7,A~~3R# ytX2 A&7r{2HXS8z% k!2lbSwqxsw!e7V8蠃J*k7]13X{2aT4aPduzxL,٠WdّA:D|G9 fd{(V=$Sb=WBr8D0;c!Nz?$Lzs 1rLZnMu糽޻#ٜN6'w^3u'c /˲u;׾B#_g"  Vjxx~ NgZ#LYGR3dB9ʌ;o¡cpL=Wv) x.0hړU>33ao;?Z:A~vSH^BEj2r20,dʙC^d1WF;4CS3dF(4ꪫ'H|88%)ơ&222v! \Yʩ13G?9#ĀkPۢ,bDȥሃ!zS:_ςԕcv^;߉ e`jadꐁ:P#E10[7oB{!gyfs)T}-ERk\F_Ē:Lȫ5QjoGd6kE'!r6cm ]5CU7w8(tX=];tB 3FRJZ ?:K,9Vu <]'c@gx oAo[Ѩx`A-ELvx1 rK|-ZdmLjoA]y>u"u{@ u ay鐸-Yn}8GM6dI LJ><}dxړA 3^ |F"ٵh/ ]:,!fՎ~*'1#5V&UN#0s#PXgu&2Mu" `ܧ#kf r o/| a#<ю㺯m5ІzюߵgJ!n1,#޿WۺSկ6WN%Bq&VS:F[ <Ӂlz8 <:[M2i=GqD9I%Y/qSCo^[g ^Dؠs[?ߡKS?=#l]w5>аj̴wyg<14bWb6:DԱP{nٗ~; ٵ1  kO\wu&<. kqµ^[]zWkŀZc]vY!dɄ8x6^wue{񿙂g[k=0~o'77tS铨>=(-|b¡wtLЅ0GGyУ38oFVA_8Emo{[|yzի&:M^]tC8ZfԷcA'8EI:,F*(A9{m>iVfX/cu*BYҼ#Yeb_X8c3u /z*AN^COcX;m}m/tvWb@جw9u\et+lH.s0̌_ZkmSA [KfbTWV00S<miOTDٞY(ߋkHogdDy*53 zxab0bپN L_)/2b^~b-G y51!ej\_n@7HCDb ƊZ5'9I$ ,h%)OĮE<9H$D"ĜH$ỈD"HbN$$D"H$1'Ds"HL{9p6ޠ[o]<%1'DyÞ0psGXSdQG^o%9Z;%Nٯf}-D|r`! -˲8ߙ{!J*;(\ \ up4i})餰2.:~:auɥ6LI1Y9sP#D\}l`'6->яb~pHySޠv} y"eu$A :\y^ז2 a=t a W ; #{Qx׉9HF>;EZbPwIQ'\~{V̠%',yoCpD Zfahx"KzH]9ֹv\={:e8l2ꄎTnT8蠃! >»뮻P8Ya 28:F`^(pLaP/'9!8N6c#ۮQ0"ev/܂/8]/>:p,}ΖԞGH^]}&߿C`5 ԞgSst:΃')M2`pg1E quc2Hl%ą-p()9u?&Iӏ~ܠ]aĨCd#$u2 gzM|蚅_3L0f5n %}gjcGBψXkdCc0,b!Hasl'fo{<.=,T)] Xf3#{ n8wWakUJ)%2[M$,hEXL$s3,$ eARH0B"f e X&ÞEop8&ϱkCewqgZ7|XphnV;E3 mv{P<)߸,o 1̀XbFW,RM8]g먰38hH .#꫏_gHeN Vh}u] 4@p `F-^ ; mz3 [)GFݧr IDAT 1KG#>+~$;k-~:n#:Ѝx-N!XQ3¨H|ea43ԥ2 =0Q[>=]XuU RuD(@8/m6"e:46܇Ttbh&OqwT6B?8ԈÙs^mU15S,I7!E'6@R2Թ0ɆTi+Rѧ5'i ә{Wa/(= HDV!t沃g %ȂBԓ+ˈTQova mK_x[rqynߏMϝ,&sK,- e]^[nV[nw:al6 [{iV^yr":_9묳뮻n{キ 2 k]+뤃lJAve׌@[ݎ^k}~6x tyiei6` /,￿~r7^{myIqc+BH."t/yKX2A֥X"NF3+bw߽9S7߼ Ԑ^z< 7P󨣎*2z*8A:*:,)||tW$p g_K5\Sy7[n81'S p==aTd'AӟJ>_wygsR"SN9eѺQκ[ʑNj+úWg;܄ Q|+KcyxLEЗ,!~e f2zQcic \e!H\f C9d|@THaHhT6`R{@Oi+[s$YƎ;Xa!=%cG͚DxrgF9Ɍ۳;D.TCȞ< Y"G;YfZw{.n$Et(]=s 7,=tmz6 ^=]~ꑦ[uۘ; R@1%z!Ђ6@ A?Py5ՋSAp !hu>3&lH,Ȁdl ՋbFXSϹAƈ2R$tnTUrmL7xŽtIpȵw ]VFԋ ~FOtnSi_<*x^cWJ?WMRiwC 0o'ݎ!Gzx^e +k?Hx^oX>RL)4љ)!`;d[3?Ot^=D)/z?1Ne-CZ0=[v=c0F{s;yP`ª"!:MM3ַ{0ʘ cP0B(bBp]t+ a}"g-~Pg4=կ[T>7Mq|NWo ȰzȒjP=xB $ a˴H[ ^jjj l!3z_k-XG>@hO;BƔޟl̮^/+!1eEʄ&vX<B>@*3w:mb#tCA>>Yf,[K鷰>Ϡuzhy͒~m:L js.@`7h)!ڱpͣeuF=QQӞ 1{|xS)k{["aջHyìdGۢjs :ao?;16}w*M ;%59ŻܐbW=B$=OBt_;Aڪ\𘉴(ԛ#[Ӂ]8޾~12AAVaysy6IBN r2l<V%]ouav~ܡ^ôa*跀')ϙs"H$F=,slS VEYF|.¢WFM9ҏ ) G$+sqӬc 'mD7F-!7>b{l/H$AƘD"9H$ỈD"ĜH$$D"HbN$Ds"H$1'`8qM2AG|v&1'DPT {FSs:xԩbH>q _$&xXV".F& $ -;>ry&1'y~"lCbųg#?SO}SwrȻSX6N=j䞏%ckѬ%q"k=~ _h^z[V,٭ڬתs_;cϿ򕯌gJ[**xڲj)r L}3L.Y숌.]eA]C䌍{A^J-kW,m񹲴鳟lX$ё Չ䓈x=W⋛_h[\ו~;K'1Kw:L~Sf|̓!1駟^MTnlMka%h_2'pBfH(~>K/yK^2ɭEʠ|^B@o}^?E]TKGn&Ewe ġ_{Ǘ _rSvO ䷿%֖[nN͵^[x |c/w]6v+eZ` k 6(eo. ٹni9KШWې8T}cdzNul͊;TP ,Yvg? كߖqǎfH )wIlozӛѵ s=3䓋  ߯~O*zmo@_/:(We7I|}eڐp3r"| 3r!S7'q9gJYb u>SnbT@((>wu :s0FD0Du&$f8xe&C9eLғ|fLM Yt~MJd_8}{߄!"aE#GM$#&G ѱ /p\/27q݊lv)gtf~m} }7 t\[[`(?AA+\F @!:Z?Ƴ 'g@*]{!׺F= 2o;Ejv)NhS8װ % ȓc<:au8CI@a0$?@!&ܓ ?y?>N 5[ a5,rF17GmިliVWC[n'JNv1e D v}OISB=t/rbFr\;f^#vFѨ,]ٵ6 Tɔp 7\+D=D Lѐf 2k4 ] m=+ꍔka"d1Sl g*-B(nc~V h ,}Ws= 9qF8ԝL|UV8 2"Cn$Sm DhQB2pDćӭ2lc&nܞ/E eho0rv֡0X]qFc΄2®: Dt)D rhw(M:3&dUp=3@Ɣ>~yQAd~;(BhڤQd=c1"ڧ#Y"s- q}[oKc\{b\ڊF6BMgoM+v{؇&!.k@"AB7#9 &4Bϧd3Ooap l[S2[8^:4#y衇]bűTgd Ciy5y-1HeE/~q VC,mh Pa`C3FHGxFN 3cб(X cx=.uH0&cK8v4 5dEȂ] |ۮxA< '"32fgds2 kc*\ 1DxAD3DZ뽿=_{V/{n@ff1cfBd[oppQ1#X$"b` rq'Oic!ug 2#b7=R7V~yce_\ 11!5]#D7S?c$-R*e Bz5ꇔP<^ OsmϪEi}E6čk1bHcODŽg1=R!s{1~{SlD=AjdN8Sጩ9ȸWoW>3&)/7ҙ[F;A,=fvH GC 8W5Ke f'xAocgJM Ies\:dXO]6gy: TﮭrD7zx+gh-g W_='^]X N,qi;cx͋\)R;ʦbOKځ׋b&, Qa?ݳWĈc\"}3_ȸ墇~{\ro*! ȹmqxo ;c.bNĘU_4IL3!s"ǜ<=U3T"H$1'D"9H$D"ĜH$ỈD"HbN$yǜH$Ɠ:#46j89yNyNs"ϝ<[ 2 ỈDb(H|8@ $D"1<Ιvp|Hc̎tldU,M٥۟;A.,ydLam#RL8u*I%GddHuꨮeSoϩ*Uvf$Y:A[Ye$/8'[cyd$!'+%Gv!Yu$Kȗէ?N6'K:+B} ^N~mI'7-=z9"rAaw H%=n_zL?RR*Dj$y@>D,0(e;3X#iV&dQvtZnH1Mg#Ȯ-5-AA|P(sG'VcQeWzN)2ap&/H#_B>/yyϘJLC1 FdY~>G^p7XX9o;u -yo\w@GNDy,"NByz馛4nx;T@518<_9513ltM3R(79I$ u嶠r3#$!Myҷ#[9<7cCyn `YW(W;d0LLys7os2R#Xd F16R W:D;\䞼g9HX:FYtФuV ar|9f^F9xꈨ^k{8Q>ɚt"~ޞQC3E/>3ud $uHWآAbU0U򹁯( q&T@5Ҧ h{ ՠM]HZO o*pFx1dL P]CxּD^-&t~غbFXSC 6H\Գ@UnRgRCN5Fy}îI[g⨩dŎk}clgn}=21!010&f%$BZɈ}oC&_& ,r&;$#+RxÐH.}Cta&PP8\}[@  *ɇYw;4t7[/ю_u]kS]|sv *!B ~CAݴ裏.e|Cu)U&|NR*T'AB2mgKk!220^n,2d7f|ua3QLÓmPzLwɨ9b tv-Vh#g@H-^A̦X9l?meG ,,6[mդŏAqV\22@HljUV)z0T;>7S0'1\{A5X:Ng&mO-( LyB!,C0+k-O}lI/}_Zho! dC{bS8I> .\~m0g[o"{ _~v.힠gx§o .{#S;w {wqZAX="'=Am>Bڪ=BglF9xDk? ,1, kL,Wx%%q ReQ ffĈl.-ts W"_lk^;Aff>W%)[]L t)17c-袲K* #} 8e'F}tDs[ňXH=[ m10y`Un6W1D"HbN$Ds"H$1'D"9H$D"ĜH$ỈD"1u8X)ȟixzI{5=9HWw~,- gg IbN$/~3Ԏur$D"x(/N;Ly Ȓ$D"1@d^eqW9ybF1wSLq"-+X4 ΥIk㾺Lq4;52G5\Qv?8e}ߵy3=auhS r6?_P@^92EN"(~g^?=y#/9ǑC0dv2=,yj݋.[:~:LopN|u1ǔR)On@kÌ$ PmS)e/+wk%Psɨ>ScAGDrkKCG,gSq:]veeзn"4P} /GBx[vfjs'9WtNnJe&)Zo|cѹAGuQ]Cbz1OH,M=O=mt:K]3=t^s<6dLb'(S1,dq'Nz|[[Hk. bdՉHXヘuvm23bd=3c=@"zϕdxA#!{]C@ë,wg7rlP^H'sN!d!`gDjOXA()AgjÖ_ tSɮlp]tBZ>fwlApzLDꓝ ;75Bd:t!bA鲶!P0 "]b}p_۵K^W\Q&k[%RY#8]yCe_$Ĭȵ2茚X|:HgXmc$8 R6?c )G!)gC!. RR$A IJCWߩ,u&oOaK>wJ8A 7yƌ#٦k|C@P;f#Ȟ臉s^ Eh3|W_mtDyw,K1o82$dqn(wsXֶ袋X"5nߥ^ZtMj{2yw^y$LYvexAoOk 6*V5U''$QA^Yv34V[M0QYĒzC&e@wqG!N:xm1#[5qC9\L6uҔ_V#^@m~XeUhk7ǚP7tKqjàH]p5gC::=cS:-2Yط+T~ DXX8#Tx+ƽB1vCzTpX}\{\{ ֙'ڟl,Lb۲Frl8N !Uֳ]Fu #Ex(r<9]c|[tlЮzYCk7]bbv;]b)ojrC mU}jսZg< 4pmŸ|n@x?,q})R* BLc dڵ F+o݄rp{cf\$yt<̮ @0Ta M"xӅV<#<6} &% #Ǭ[‹;֔=Ib:.VC}ҝy{Bρzz3\  at:X5ljey-{# NR'b`̠nZb'02#ko1?G9 ꪫohwClǖ.p 2Sn!įu-dU;/g&^<&J8Җ[C&l2EY(È#^ u衇.V,@Dl)<ĢY1vyH;D/!T52JXԩNQb+Ovuײ {rH,>)"#*k^ !9]h\ YtM +Pt|!:*LPq>#E3YeClm"U\ak >Н`eڱ_81n}1sD| su% F=D;lO[iVl9iclS#_~ Ӟ7x :XGg]r%'Xs=YuUKX:i%YXwu'5' 6`߾4Fx LįLĸĽ:1evb"18eśUL d^N,PX6 "ʼ%D"XE<(?H$D"ĜH$ỈD"HbN$$D"H$1'Ds"H$D"9H$ỈD"HbN$$D"H$1'Ds"H$DbIMM+涻,yy}=M6Ͷ6*+NwiNI4f~4O~BӬDb \{ysǥg5K/^y3~GES?\/Y󅯟tos.ÖRK}tt~.iyvc$\%OMsM5klW34_?ineܙڳM_&FM$Wyn7K-ӣCsON#b宅{l!fxϘG?!rl53y u}}BcN$_\l.F)XfG}#XmUVgau«f_)DژH<{{]r\[ nHw.? f?<*%9X]WcMU74w}af<{i.iximӬ>T7kˮm Joj-4mԻ;{k]'=T:ra}p]_c34ivެ ?kooV}x;c{㭽k_G/.Yu^= 3 bwͲ+W=ucwߪܧ4'=uzZMsecsoӬZoG.}^6Z @E4l2@K'զO]:4V'<65=X??k~cuasB_ufzGY-g}y_T7;y4veWZripe/BBfŧnSy"[>y[6K=l eٳe{eUBr((b(τu1Q:OLOy3 f1`$ o߮ۻOv _½c׮sf$2uirp/_5ӾMKޥPkwcW}{ QHKnϕ)BdS,%bWMy=҄@kH|5ܾec}lM-ڧڮ5Sߍ Ih'TKϜ 52]C낱S_b_eZntl3:izD$mZ:_~,l焘BGzWWRt:̧aޠYdWiɡ}|QuRN-&P|9Q/Vw>/nlvsgp*W.D:5+)t/yjβWڃpD56κ|Bqsb͊Q0F"zC}hkmiH*/,+ˊo{Kw)RCVwuܯнZVx%뎳L(XX-TV'],76 ^-D^%K̩pR-צQZtp(L5N$cabiT/I2_ܰN>%vl^Lj4nQ k:Rmo,a16Q`*ZToXj-^leQ2Ί֠oaW]?%)m;1k Ku3>ݪ$\ f,~E|O^.I?&ʗXŏ GLk ;?1;K7$$A;=e98yB.\b-&ݧdރxw?y{%QfMXdt$$ݷ{|&ǘx4uIݜDFlj-a~a'ĺKM[n:yko\۲o+fk3IqǝIÅ  _6̈́znw=)$bn'-zՒoC^+HS_7>l6C%#u?~ ְ1 UH_VM4Z[X]HLn#hnݸgbN |&0?2_~XxB %=)m!NVבڶcm2& cMG3&t5,o|̋t7~Xt6 (.7oK⇈HU[RG;֬ )t?G_L5[6?V.Ye9oR&HCwWX&OdԨfoHxQ-GtЭƅdK#'35m[V.uD<ƑkUmjY;}B: |Fʉe es<=w6ؑ솹d͌Iw }9Zge/eڭڻ>7!m O?-}q#e)ޒxwٴx-_'˼?훳}; XX7u6&8s{.:mAh!PHcʼn_#g~mX.>,olp뗜T^Mzf^9YDz+ǎD2ǘLg@kqYͳ~Yԡ> h0" 8rM-B@Hss6b+}Fv - " r9R`p`Rwy GC'3.x"`0 &x1?] {`01p`ul0*1̜4 #f`01 `0 `0 eaaժU~q\NY;%,Yb`(6ի']tKF!wqֵkdAg}&otY>l]+ٻƏ/tXBNJc!nȪYU];~۴iӼwy Gc܇L>s={{9 ?t͟2t tOe9/beҤIR<3>W ?3H ˣ>*ÇA5k-g_|s1UJ:zo?!fN)CJƍ}_>餓O ac "]w moB5jԐ?+ Oo+[:uJ?s}_~eo91\]qzu]~@uYҷo_9(;x`o!hn .XO@oC20Po@n;01'|eU6|!Q&t,<D4h jժ^ncN-[15 o!Yw?m!wN 6x/T|Qynj^r5\Shw 3&v%^:,Qk݈k{.oRRu@d>BFYw CA量'|/}նmۤaH>S=S`=nN]8g/ `r~ggHԩc(#oH}yNqz/9!ȐʀʥCTGt,#'JGvΤs7}t} 22F_u _?(eC3E90`|A=4 GLR+`tv`gIJݩ!)^ٴQT-C-T`#(⋾=vӧOW^y%lD̫{ 0d{Cy=zNIDAT 6̻S002 @q2ZNt7^zduHI;$f:Յױ[^`! :sag^[ǬQJ}5|JztS`!3gK* 8hQeX3(/Cb„ I:n|Q`k&W_}UhƊFaQ5k(kʔ'C?{^󟑩|@FK.-"P4OQCJ}6!zȿ$kµ82d@>A{R^,䜘"ky>BI`G2#8ht 㩧Z *|SIVAѨZܫ2ݻ/~.ͅ2e/2T` @@8/l!9rFFk 8"!1Əb䲯!Jsr+m1g8iq=j)&Y^S2ߌ;#PBq ř 8Nit9vo_͛}]o^ UA6LҟdrsBHJaMuR< UBy^ڷG6wʕ^,a,SK谠 AbBG2?~Ǿ .}oѢp O&QS!FpH.COQ6D6o^77 %W!W1|zlD ZuYO,Iq>*f$pYFqV 7X IYLn:!@gҩCB[ѠB Ġd4{KGS4ZYѶ5O@qCقM䜶[n?b%'q ? ?֢EoMx`<'?sSyqY> KW^\Z?;bρM`#`l0 #f`0b6 `01 `0 `l0 F`0b6 `01 `0 sHVT# (&M3u Y$yUҺ/dY樶ԴPryEwg(Y"PqB.J-)/g({J1@[7eB*b:2'?|2 I|%oH>l2MU9xN~10)$m|&w8-j# ' k/d<&[R^61ry򩌐2Fn+qi9Zf1qU!5ܮ{8䳾>\:xZ[Urv+kmc^[9 e t沿|\*MVsU>7=N_^ǙWͲoX%u_\LXƯ8*Dv3.,2*ArZcR?MzyU3P-l`0`9ϑjHc"wPyYπ`qc;F,Y{?}C[ ~"n^ BrWi# dF8Jɻi~'Gy?z8p4[._0- Idm\憧@F&27x^KM5N ttp9wt.!.vO&]oS\Z>H#}0h'*O$i* ȇ:GwwpA>C;Z`==6 bs{m+][W9[完p\]?Wfz6 5 ){F@q)δ%o{5<އiΌ:RtJ7DI kYh{g1pYA Xns56SK%bc-Tp=LB3:⃌; XXsd7ԑq #tx/$;@&A|ny!5mv,OuKm'eqt>/lt¶{:/J'{ Qg4901aɇ MhkKO=7욀0&/wE qᗆ yaaB~.&S OqCɕ{s&U}1bbqU˕&`S4y)YVQ|.wΜa8(͙W3mG +41CJ8sT5w 7d\qsC\=E˽_0`4!nڕ0A\ulz"x[7%HNٱ3+ (X3?q{-X ػ \bNZ#=Z#HTb#ӣf?~F.uptJI|r%/tJi>r!=r ]-st@܍K9 w-uƥ3{[`!N <ƍn8m<%K]/x_r*0l6!\Sh r2?WoUœݲ'1˱{t>pV1~i,Qn:>Q'[>U K],_:A;5%) ֝N + D_S8<+0ƻ`2ȓ;|m=gmI2VN*`igsYwDۀ^z[G\ZpZ(S?֑8Gl4}9 |Oȉ ޸^YG?6d@@Fd8[ܐg }Rz7jڢ <1[}7++T͖G{H%jgD,P_XoA<mm`s}?.1>W8WǵbX 'n8@^XZNlZ6;xo@?? 2=a~xn;$8(i^ }Xp< \ HHrVtu HX8}ԁ{$N "~@\i^ ɛ3"K!"NʄG C` |2 #f`01 `0 `0 ej6ߗѣG˪UQFr%HΉ ww7ld09{㪫kFIƐ'N:Jϟ/oQN\tE+ܻwoiӦM!Vϖ,Y"˗/}0a4W{cǎ6)0c 9s_~EHYA5&P#GPEֳg}z׮]wX,Fq=Ⱥu[nI[o2Ģ^z^jժCI93&L&lҿ&ONvvw~' {%ժ%i&У1eXLۿ[ԩS6 NzX C)XT;0m>QV8xwO0N1~yqln Q?sW_}UfϞx!qddZ1'^q7RoW~U9N230O$5t.r]א5AK/y_i&< .uvmo1[P7Oh@G-K.eUI-kرr~0_-Z&Mx<گyn߾}ez!9 %flܸ 讻'״lp ~#߱^W!fTg]GGube駟kM s)xSrA rN:~NdcW^y˕~rԀXl׻ӧMC^ /,e2y[oN:| _~=<ҸqcqG~嬳#q|gr{]gy?*ʕ\ve~gҥA#i`,̰a QH|PLN S˽Zxuh?+¿4hP?,ēO>R.g`O0p/Bro^> a+¾ %7c;M5SC\9*3i6E';0"1ZF{!J]w}y{PוK656O68Wd k꺆LkY^T^CI, J6{7ybB/ՕSO=5GbKlX?pOq\q'Jc>䓋=i!>LĚ`˔śD1l2z`XFXM eL\61XȺf?`-!&znqkgZVRMtg&Jc%8. q:@,j6;*ǽ W_%w8@RaZ6^m`ɤK(H[8 ׯB +cc,sE-p?qh8R.aE %#kuwV%dcƌ) TR2>;NRoVZfǝhk֬ЀG\|H\aЂcǷTʜ ٫ dw<`A_gSO,ˑSr:I -;)F˽a)%fJ~?k@=+m]3CKHN&FOȹ8zΒWN;M]gI3ҹ2R)5Fb<^(/nɓ:AC^,DCЬ L B`eRW:䨯9M&LeJ3 e3E!11?6D VK.g(e?cVYlC~)g uC[neJGdpDdĪ®_4sH(0(E\\@XQ`"Dx"?s ҥb2p}fΜsuzM7T<\ң:> ;lddN&E+%1L)L@7GFD X<}QxA~ 6mF'Y-0Ul'U+6|B-8H4$xObYE}euÇ%Y=:Izu\%hRBg{#J9w=#oе A49?J`.1nsGId+h  CL*\ϰEcmCUySqz~bƁ})- 0sXI&Fq\@j1 1VfB,D`T88/?,_1;+Ѫ#z qm#o>;菉tϞ=9yJ.w!#G+"q/=Osov6mj7on5_L|iܸٱceb9\P^~MWM6=z4Ю7ceA)SǗt.7p7n4i9sUN~bʕ+ C¹[n9EuNT!2K7l;| 0VIܹsӧпz}̙c.;s=fEXhQ,֢(~"zieR!̙3pcR;qĬ}U߾}Kvy=z?f˖-ᵣG6Cە'=B8RgÆ M6Y9pa(]"2ӱcGӹsg>g#ۧObŊ}޼yV̚5Z{}Qsg}\r}I1=f̘U$g)LD|r3|ps5ר@r@{]`yW8 W S˖-euڻwn6#<<ԩSmxe˖1jjBXR=p@;BZ 2$```4mڴ̣X5kfQLr~ }KySזy}>%K m%R)Sک0[͠XxI=m_%&"I!|ʋew2vٕ|jbwdN^u\}YX(Mr<cFruCްҀkI9mY~/\⨛B Ҕz tBvŠǛ#d|U49R\ey-햓Rk2$AV0ʞ`U?#Nuw^xR56F^yV"DIq5ݘA('%5kXь s=D6R7iܣ  ||y/vl}j66@^ !VK> "ܹӎG m[je\ tBd%R5JIM P:j,~=A#; 0*>& JÓ'Ou"9)vR^g϶g<@PՇ`,\sV|֯|0X=7aAApB3 \ɓ'W_}_*B-%su&( " 5*2E8E|Wb|_.EoK6Nvť}^`$x1ȤT';BL%&3L#5|Q6Aopf(C u0P3Y P6W6͛71+ 3;v,3Bjߊ {|>tl@nhH[H:0e8Xͳ5AM HrȅX8|1` _N^Y_\s݈\鮜rR(Zɹ Tߋ[[oeMn0j^*ǹU?\&_a`ǍALTQ_ߠM2Ql"Z*\+GL>sYa!PX0 iqYwn\klF@6Qn%q7u6RLƊhZV`Qx^3|n,Nr#mX C\⃘WARsK>d4(u 4Pʓ Q xa,₪CR.@?VNǜ/JaheP\Xz+IPta%+SMYroFimklW)s3) sT{r"uQr׹B@ek"ňkr*BYVBj:m:gjA+Ȑ%|g`DPK|:P,%0E@H6,qNY j Ch-5&1xg)…:=`}d- wBˉ=2oPG݄a 6銣wŹDu&_J}iL:+w3u"sD}]>5ʠR$V$\JÝXĮ> :PHj27)۷jO1YN,/Xu iL:dʝ *llsppƊIR/&i .~ʮ6Ү9L&a퉕IsKaBU !DE5tj:o!3Bఒ)>Xsa]F0a}Ait?:X{LQ|0˄A+xMr&h(kT.D`n`!eo,y Td(u:'L(qaf/Vp w,S oE}w%B9xv[T-hW\kІ|n2ORK4Yv` (}u6[.7. CG9V3hʓ6OΩ-w2eBDZQQ2KDMM _$,kq&uc %LO=) N0kpOb)j~&lpV,jH['p˱V߭2> 8D5 ~7WbFabJ1.n( R70 BMaQET뮚(Æ$EPy5W.>Jqm馛C)??/~5S\9Sg,3#=~-ܒ|9"iOQ1O?B!D9UE B!B!Bj!B!$B!B!BZ!B!Q-B!DB!))gC ;u E]*BѸqcӻwz"Q4l[pBs'xBwZ|*!"ȧZ!Bj!B!$B!{=g;yᇺ1ز~7UB!2sLӳgOӨQ#s3gsm%~p=Yf@-[ѣGqC=dl׾5B!$aڴifӦMg1mڴ1۷7L5IbG5W\qMf+Dudf6o4MyU8B!F8/X 8М~qK5; \ESO=e{93dȐ:s-Zʕ+͔)S}Vyޛ8qY~}猅z+z\Tuf`VG/m۶U"BHT7,Yb}WG7{w9:dArsε뮻.nݺe^{ggyg&87Ǐ#ˀD}\u#~YS"BHT7*vڵqJ 7PXv=$\E gD[뼾}vsgױ"9N#΁!EӦMٳqq=uuusYBF^#\?YX#_O9BgǎVl{H=r~O߾}ہ;n&LP㢮#mj&anI8p}6<̅D![v} ZD"N NOX97pzݫW/몰aÆ3yd5B|ƌj˔A}Xv'`rW\lh_~qτB~>vX+~+%!/^&ӭ\`-ڵJ1g, ʔ_GڠH\>ƌc ܻwdٲe:V  !B: p„3 'xkK̆&L4D]&)W.;X:gB!n_˲uMpS尶|E LwyB?Mc/Q">$^uUV !.¼Uvɝs9\o "cN.M5k/3zϼ.eu+b,ȧ|.6Tu7Nut֭&% lnБu>s=z0W.dqi&t*뜱N6ͼ+\,XPSUr%B:VX6>묳r% i|X.b;sL3x:9aNI ͛Sƒ>m۶Ȗ/G`Ε3}=FN4) rA4b|^!B`1GyZq9v Y޽{۷[S~_T>XD|GQ ˖-8c1F(O>Sw|yk|Kr׮]37nܸHʂv{n%B!Du`=BP#ٵk}ԩ`Eb`E7GkS^]/>ˈatRV壏>}fg\~NG +[t\!Dul̙3ǺJH"g}vaSw!. ,\0s =aӪU;5*Qi8`?hW =Rp5E!Du,L0o%u Z XDp`Clڴ#c-d̞=f*K/T+eB='_3ړ\J ƨ^Ǝka% \TZjil+B!$#whhk=KDj ?jvϟo?Jj%]v@LػwVe5>|uƃ>h|G6lp;Ip+!0>D!DurI: sXHŎ &=jE`7g-A:7/Lƌca&īa>9aʕ֝ K0A$84XcJ ) ^ȸ Mߐ!C".GW*BToj*ӢEX1:v @ IG Z5a=f- IDATZ8`$ d< u$ϽkL? BA^2a".F? U5&o 6Bj噎1wt,%:xYI'(\qZ:Nqmp/f.XqSѷzk ߝ\Ŕ)SwasYjhɒ%W^s|jL;JIV-nޟȸ{E|" Ϥ#'@0oԩS#X BZseΝ;cԬA'Vl>#GWf ށeYM(s,ٿ-`0!>}]qA~' 8sL{.i+[!\TxX| *,\*ĬV"`BP ۨ]@) $ak@L~'^weB;h%1۹sz]#+70:5D3#i$n&X d\a0- $j'`qu.{XCv2e+L`ƥ=\^s^oݺu}qi;q!wߟs~VB,D&vk;o% Nc@? ɓ'n!DT;vgf\,ra|7GVirY޸S K:%+Q|wLKY.ZȖ+e| <ԉd P7N:) qo%ՀޱclZ,E,с:tDyȀ`KX0, f (tl'VB@ٳmźz# #/e&`&DdwK@H>Bp=>m C?Lڰ5Ѹd`K{7,xxhOR Y}5Ͽ/Iye;l5q)I+$BZQ 8ttXkCk6X|XĂ:_WC,4\Cd }!IKQMT4DͰ-z ǹʗI˂sr@ ]4}Ac9AԅXڱFye2}aA_M.oeAߍ+ ]ِ2pq-'-7ʐt^!Bpk:l9,N(-WIBC`JZ9sTd }wҲarD2zoNRAv}W)8iĨ4$& @ɖn~pl۶mmY#) LZN6 guV$' A~#: epU+XBsT.7x#ےg.V?A.(`˖-)$w[f. M` l}:@V􋦟D0;$g>tP.]l@{˖-1BHTRPY|Eqz" 0@lT ;|}YkvOF_72Q.FW4 ]s?QM6^}|,Rd1vq!DA wi'Vb!h9IW('8 f|IkCB:J9& d`kHB:?,X Āȸ&MB!Q-H $M&5nX;i1bE]Uh31R)\IT.6 m|I' ,)lLӿK,n6H qÆNq-PBM@BvET+ E!DuA\jbưvMTW˄!U]JYRz&r !$=z4gk ɶ2 2`yjB!Q-B@L81UF&i4b~*1!B4 B!BZ|=ٳgOkmN#xwBj#!D!2}1`7ݻf6?M9WNVzzHfQ !Dua/v۸qM%%+VH9͟?ߌ7μkggE [>mԨQ=Фd lqd!7ȑ#—fV i<ӪdB!Q!'wIرc/$Q=b&MQ3gδU7VW2`f6ٵZn3B@EnPa$ݻnԩvXb,Xq՘7o‘afڴi*ݲeD 6Y&'dTt9B[=x`!: ~[-D'iB /j#FXьDX&gAL/8رػvBYf{̘1ú =ޕ+W 83";NVBBZQ!vD8J,aT·AN]X݉'%89{l; s@Bj!DaÆ f̘1X[})n M6͙lA,X XܤC`#|Bpضm;w`\PnBd]g CMj89Xo Xy/>iAvXLH\`/8+ŋ/h:V#BZpoi5\SDžavI |nՙ.]j^RnѢM;쭷j_w Ntez <4i*BHT ! 0_JC#))y^&;u2KeB$#j!Dj$j}\!DEj_"~_~yƊh"=r1vmaĉꫯXS,Y:RaNZr! o&_owns2h۷U :t萩#XJ!B#Ba.8D[3 Y\ JW.FkqWfͲ9 ӮvB!h|`}o}7 B!q!nz`Wʁ7 V'!B. ڧA1bXMHF$?* |ٛ/mǕ Zq$n[aǎB!D5 ~qq̏1c͉ X$I典"HmJvEQʪlN`G\ʁ&k~/[64|y#|3gkB!H' a̲1Ba?v@C1sL9Uj6/ @޾}}N.[4:YB/Xċ Xǎ3qɓ'D! ?ZիWy>BZ4\}:vր;B@j!B!$B!B!"ԼO5IW1I!B!Du!7\;w*H|=S!BYOjCluUj!BBm-D9eB!RB!B!BZ!Bj!B!$B!B!BTXS+0M6UiA._ܴkߦ^B!"6K={LƍMΝܹsom bve'(B!"yb޲eΪ;X}%ċAcxbӾ}{B!DBRFLn X% k1G!B\"TܣGccǎ?̞=[V`2r 7aÆ^xAB! %rK5¯QF;0M4: FaE{xMJ%ᇭ ?NRB!DՈ?Gͭo6lPw=ڴjt)uXǺp.4ك>hcU[B!>p꼆\X ebtRӳgϢ2w_z_g*BD5u{n֮]kw^w۷" !Bz:*HO-.tc&Ǜ5kjB!Du}sε:ip`+b>| >b-B!$c|{Ò8.6,X,Y'BQ#$.O; Wh 9$lY b~{53f̈< %͚53k֬v~\Azm-[8B!$RH%54 KU<֋/௼h"9$n}YB\Uqlǎm?MswW[1w*Ћt|?+nwn.\h7UٵkLoذab޽`ɓB!ъ/}K ~!6Qqo.O#K8kB!.TX@ 6j鎤5*ĉ~eB!H?vĆB!BZR!BHT !B!j@TaB!9prB!%!&%B!"}$‰?-iӦ}Vɓ'x`QzG>ٸ_ wM0eϞ=ԩSELnּ8\z(B!Q-k RlRΊX{H2$ѴiS3{l+xbܹ64.nyD !BHz@ŝ"ion 6s[!BHTGN޽yڵyq$`H=zy}׮]G:߹y& ÇWB!cƌ1k֬ɛ^?4͚5 }ϹcD;`~iSw?gΜ_hlB!B$xy"Lx92q>Bz=,Xa`^r?~jB!Du`4i5kVNkȑ#?uzĈ6ȼyb97!͹-[Uxy~~ !BMkK/d8 sg^{67rK1XO\q z8`:ӨQ?Zw׭[J*Ri>% '²ϟgӸqko2eYvYj9s_l۲e1cywG;=3uG(?~mn…-ڵ|_ϴי3gm۶߶[>A\4LA=}tsw WǍgo#Goٶg^1b9rwkN??կ~ev*$aذa^36l¹yA4{6]v޽{F8?s 7`.B\{"~جX¬^̞=4XoҰԈ>dzG1r_m/8pp{1+>kk֬+D=cΝk;:1,]N'MdyӦML iom۶5?ǘI= _]t뮻2/^ ]Jon.sUWRcʕJqFկ~vf:un1wys3{VnݺeO>i~+P $Vj״'.lE5jjg?n1yd[onͶΝ;gޣͺIaΜ9>&* Js'N'x"$~.-@L/_ h`ob޽V fjcfY 4^q+4||NE4LnjɠA٤;wk&[~ƘRfn۸dK,)>#/{sp-dM{H2ѯ IDAT?7Ç7-uY^Q)k=HF1!Q]{ u΁%8hڴ}/(.r+ PGXc3B<ç]vV(bi&+i_L`qr>ޤuĉ֥1lٲ,p!:M=pvcݭ&`tB6(h/ULbAJqSU|iٖ{=Уmƪ&2:+kE55Z\>|b:\g j," +𹠓Q1Rb``;:Saԩ6 qزeK> z!3vؚ,יddÎ҃I 3+楦)yL$nR͛3l 2I2 kpkq'f1Xwﶫmk&?c=j 6D5KL J4`iB"M4$V@}Xeׯچ~ $1v, vٹ!RnW4\:Jl²T"eȍVXU0ªw-2"EMjg *Y,C+ m*/Y[htQnΪz* Vi0WV[4 컨%ѣG[AHۡC[ \1PH#˟D,v%2 g5-Fϛ7/ԁ`={-(|+֥tӧ;-DMjFff4DG:`OY24 z0-Ѻe_1b Jiui .V46"JvBf"Ъ/VP-4>P1be['N+WUk#;(iW͎;BHn$Fp+3(GURy10a50Lٺ4o Pq/e[^Oku_KV\'D ?mA5N4&qM}R\FmW$9_>c JmQ~&jk׮'u?;z"AH*6H 9QMN⎍bK~c(ELo9= : `0"%4Ca şXvx``D`KnVk[Ksb3Ϛ5+V ,l6+IWS['כM2 "0 ŃIA?!7Y'g[Z@ x#3H>(aimAu{CGϠFSM}}B)M8&X)Oy 'aukAQ.z(o0B mR0YnA< m+;k\]Kj*;`,+ r+mۮTrgiJ:.>'D.]UdA%8. ,UEe! ՝#Vv,2Ώ4#ºu]+?p#Q%#LYy`bPNK?_G1!p>`M׾5MkѸҟ5ܷo|\Xr ug?-,t`|Pn?$?-K`pS"P AAc%Fu,n\pW}"ئ\ouLPsg;bSW+vF}ޙTµEHT! ki!̴qiS`sm&Fو`]\}<¤oNU)Jk#P4E7rs_+uNAw-!$KBD5n,101pBT:kfϞmbPb~W~ⵁ[UIC&.^XFm)+R] ڭ<9# 4\@~Q.sҸ-F={ڿ !1܀4R'Bw):)Q3xc"ߥ?;@ T*~ =e$+'Eh NGݨl9-p!ڈ.߼닢&@5۷'(N@Q>Qi2B`e;$= wYG' QKTt5pV{ 'D`yf7Au~ <2R2f w3mr>]d`رk9o 环$HȆVu dTQh9z{@JEqOyR|)Xe( Tj/#S!'&rю|AL@Ю,m۵Iēާz!/p޾;WŵV=x*9Ճ^)/2ZTks lņicƌ}(FJʦHԩZA4dYY15N˧T۶mk'[E5S9!DT"f/ځ^L{n7?$ Ώ`$Q 2 p nvd"D!5rlRvv*\C{ɲ0OVi&P߾}mݠ"‚& aT &LR98@?'HI݁k\3+L/9.6__ASHtsWڌ4P$?斚xTSP3"}+Kd AcYFN6-,p`q}+3'|Ffc*\CƵj)"XXbF`EP.Ž:Y Q8;(~vo;Ԥ3$L5ׇIX TJdeV.cǎٿv1Kyܹ3 . Jn|!d=Bs;GΛrӖ!n}1U!zkp|XjK{^uɟl"\CqWDZ]p)?~|Eh_,L8w,ѳ!}n$cCO| iŤ+v#SN+P> QOͽK;Niˢ$R.d\x0-]`ic`u1X93=Ƈe`9e7)A0I^ (SO-=Θ{T~.{9@Fv | ż;ຄ7S;IWBQLv&8!㘤<kWZTL.ϕ*|:࣏>J;?g5p:I"4Zrj̹@rqn XҒ`mvQ܂E0B_|B/|nYXw>̓ :\\0cZhL]V([0}_;rX1o)[jp3W}~تπT"uT, 4 .0y?qT)l٭ZB3bp&>|ބBHv<Xnӗ$Xq)puhǎ }3rMnpo\}= \_8v)EXsA[.+H1y8'ƍ朴qϕU"Td)/"kw]<\'|$P_aDjQs0pr !yO/>_ܷnft# 8<=XMvN!2=А!CR]֤8lj"fX߉n3tIN(~[ò`|arŚ¥l}# l|{psr /iNt |\{?wo&Ulr^tN|{߳ ^xPnt]v0!g5AR1 k 4maɜyU7xb䈧zӦMVh8~APJ<QS'gv*=!JK4u0*c%\Qh&\ 8b|`{Γqy.gzҤI.eLGV kdbѽw;s$U/jT#%S;ґkɮa0b{ˇ!I0 F^}Ռm( 9jCMzBVmdCOw, Q;`,ˤh%u}ǤD<2 GqQLi٬I$0+4s Qg`XaH7F`Kˆp$ YXM~10b@b@lv ɢRw eTTf6bD97p⚇qI wu>ּ;֪ ViLiu E2?PkWj[wC D@8/ׁ bS! OjW y~":͎(OVX 7Z`^Ǻ]zXRLz뭌?"Y>PQ\!_S54VT(p\}>D1ڭ `D5 R_d0ceНI>ܕX8`&`EM; 0_${]N . 1+ l0[u7lΒ_5R8KeV &\dTv>:xRiL [ZR-D>u +Hݧ'On+wjIkplcfE?DQ"ټy !|8wR/2FO uB$H}i8p0@#l&-_X\;  hnG2zDJڣzE[d0vNm!Dq_HT:,` [ꦁV3kE!ņ ,Jӛ o!(JtBTӦEAM7d-,|+_ =o~v/:$?D6قX!ӟ?O??38C((s9Ǻä3DC|J~R3vSE'BOU,B:F Q+(5BQ:B!B!BZ!Bj!B!$B!B!BHT !B!Q-B!DD R>CO]۷oo:/lyӸqcsۿ\rIɿgBQYH!|YfyL=̝wiV\ics³f*7{93bӳgO+ԅB!Q-DMh>viӦfԩVcԩۦMoZ+s)=/6\s \!:`1ڋ rqVŹ޲eK9š-\?nVͽkۧ"BĈ|ڵkM&M̸q… xĉQF]vVVbc맞ztپ~ Wݭ[7!jlG1w9uDj pҥQFYgu.]E."w v)jzj{μB!DՈ~Vp+2>ln:sW-Zc9~ZK-2w6{nq9Ag/ʅBQz!5B;2qt5?2~L4 j2t:/W{x!"Zx{С:M6 >̘1mbFP>VuV+BQyaF> n eeiK4uډغkbXÞ>}mT0|7ve_5D+GB!D}N˧T\BPСC3㢋.2;w4͛78~&R.L0 2!B!UwpV#G dbA W4/u6 ޓB!$)Sݻ[k; d)-j!BDj&c ,$2 IDAT=zּgy ZކB!B$Z/_n}J6vAhSi`Rc2@!jj(52TDZ29tѣG~. /`w/tys1ydk56I%\\y֬Yc7tȩ v/Bb 2fMFHcEp}ذa1)h?r䈝0g7Zb &VD,2h4~-*2_I} ֯R\!DUNj~ߚEgK(.l>qDsf33gδhMKwqƍϚ|;LЁΜ|\ Y:A]#rpm_| \]wQ஁k^{}}'汰#^ȶ x>6c5KvVמ[n>_h~{ Qwҥ"x?>WRˋj' okr tq93ͅ^XV__k~do+޳JD!SO|'9}6G"TRMhğ:A7UGyΜ`v;r:س:lٲcAHR<@DtR;(9KnaD0 \UzW;Q UI _(!V6s17?:Xྲw^ӲekNeB27ЙD6AP΃>h-p 2+ J TmDYyL{O] ޠ QWGXyゾĝaҌ$̹``c2|>|qy Z)z٪U++ u J'@_^FN'B{@E"]s)rY&m^ze~I\X?u ~AQo3-/ vC RŌː0bS"-wԍRָFD[R-%YRi?{#h ׇ^}Yt|Kq*쬼|wR,z(9swAx'VEg@":gΓrue\aJUʯ\kkOڎ'ROW.;WgĢLL2Y L\B\G-*A2pd[J@ 6lJCMp-i9uv)aհa uXV@c}J?sg'M_Ү!v H )}Hm[g3.`ӟbA9D}kB̵=u_P+4~IV?&S|Ϫ +l_N+Dh b̬ dgdek:f͚53'N.1$CG ~c!0Y p\'OsgfO'8~tݻgΕΔJ"b1^vر-cK/"H ;vX#LcJzQqsj۶m&hF '96I]3ϴlzX!sA _~yImyMa+]-Zʖ&[L26D579e0p-Xq[D }*F{jzz׫~~+V\+~R.~/' sQrf}դjF_A w?(]mٗF>i$;X`ȵ` $e |_> %:O>v |e[o97aAYb"kI>yqι t9ߨr9  ?t֜Ýwi6mz|!.XpChT# `+\u =QED}HP2aw.łu]5y61b0W7l3;NE i>~2iO^Pv5{uɘ|vIQDY?A"l)SX||X,ft2@рNkbyaKt+|'c8sA c5(/{31VXk#}X*Hf6Gqg[`Iwq :zq_VN{YZ6`B̤@JZ9rYsOHB֦{\ ]'_\F#JOSZ7M8Y%q|%@-wD XAϴ&=8|9 X 9l7;ߵي([C ZέN8//vMelV\=1w8\Pryp|.7AVȰPɠd,vZ{5F闂}W.7\w 26f[)@; kdb j~?W{T1SB IQBKhitkFLBS;0@RU(7|c6+֐b2U䲞p8?(͝zi-Ν;#۱Pԟl஀V~'rnbοZz>#CnҤIh]Vovv'kq>C_+Fl۶BHTV'+=YFܤX]Vlbm[8rrk:89_7sel8g˗ԥ% +;X'y\``l3x  P|9P/-;+9 ʸҩ!?#Td`g-2ю#4O>?YEsò-Оәod-VmڲBhiQXH4,hP2b11D&1IXX2b1a$),-eKvС^?}?>3ss:u盾L[yþzDŽu=ޯqlrʁc4>L!Nc>ն {[rΌh\ #E&/t6$pP\t*t`߮6Zs[4|e3_8?B·1 q/}6Y,Mw;nCz( [USYV:ADz]x&ڴqetR0q/2'oTq}݄>ў&O@TZn!F_8LʢgWTMԉ,\R KN{N3XVM*N"-?5f˗tRRG\F +$@r7.6[Ņ0.gzVݥA:2<]KMX>)g5mXQ ׄx`h Qh匫SR%]+}}#6@Дq?@ܞxTĠXz=kAPsoNݦ oB~ݿMo$`b>ΐN$ʛ%`Ns&wG4L hd;k8iYI[Ƀ9bD`;uͲ]t<`9B!Z ı/W(>}QׯD!BtR۶B!BHT BB!BlBڲ8B!{QMش]HE^n&DYH 4iABрf$Jg|HfN\ ѯcٲew7&`|)"BEQ}w:[\j0R .5lWg iUiH7j(" !Mj,Zm5;`JtakmO*4W&äW!TvgõTzK/=>c\4L_vtMل p`[kFӦMsh-^x8;+&WΝ[j u!BtIT3x/_|mkuC8sύVZmE@{E<4aq㢯z~'pBፑXasΉ֬Y5f̘-Y +=Lb,+nzBEQ7|3:Cc|ҥKԢW@@ceA m+0S]?&<[cʪpΡMB y|YƂŚߖ*$I+ĉ]g!zQ۳d"͖ViE 64Q !-E0xo!u .`{'+V85ZN!`G$q-|G%=Ks=B!!Q-DC{9 rJdB"~9Fd8S߾՜ _yyz 1N&&B!>C Dq[lEo|&D0>蠃 H0Z÷rr 7tfm~bps ޹HT !gB!(*!B!$B!B!BZ!Bj!B!DB!B!BHT !B!Q-/lr!BHT ! D~=zT B!DP_;QG=󣣏>Z"BHT !^}衇vm7BQr8szB!D(}p Ѧn*!BZQ~8z#<2?B!$Eyܿ{W_}9-[{\shO?tsEqa%* !V*YZ*vm]ve3fAYx㍣Y !CNj~WX1o[oN7N˰Bp?W8 oկy睮{wQKESOfͪY#CU#Dz5齶r覛nFEEַ_}p~#՜뮻Տ lK/9I@ʍ>*3&7nPnѿۿE_עM6$u#yg$/'d> 3gLpk6oֻN:):pbRygSN9e<ЍUJ4iaIj ,'YU̙zɓ'Gk׮Jrpc2(oU>0С]r%Ccffȑ3<뮋.RWp|Z-vhk9>B ~7} ,#qPb&X!L_X#q4"wyAwoK,̱sШJ"养 1=P/|ώ(^W,c Vs@`g`|ǵ r]Y,ɾNO>9袋[.:RgG'xb&ҥKur-$؄otmͨ9էMh+w9+In]T[EFti3tttBva.\\pA矁K4 vt{GA],눻]7va3){':c gqFnXd裏:i8ps>Ds9׍qW]u@(Y| vb"p}5bkT{W^y%wpXO='y&`+&m5w\˗vw %hKL ט1c2 7l!y??~p>孷r}W_˗2f5ˎBv0W6hZ8q7|7D_x]&͗ g *m7X a@g2! ΪV[m)zW\qŠ-uG'X܋eQ$C68`2#= ʗcdY8.m÷2Aa„ Cʩ(REn8F &mL2_arNyX5bşU s IDATGyU~nӵ(ZZt4 7BvAG_dzņW^pDݠN.3X1Zj dO>5~&Vs0t!}':/‚2:묳\1q)ի1@wq32fJY u$D'opì&3ONiӖ=1L8>qx]T`|8`;~W@th㖔|hBB m/)o^E*g8hb]? suçA J}׈n¤+ |dncJꃍ_ѣG#9oѶPʟɳ:óA7)z 1KFcHV&2 [ 4eMfP3w!z,e/A(!Jzq j::XkC,,,7ҨQ ĉn`VX?`?lB_,5! _FԱ#c0&?)طa֭>h3g&qdarurNhd&A0kLx8bӞ#3&B<|}^Apxg% ^i+WNX/ p_E9Xϒe5W S;M;οur=L\?C:"˻BvkSKJk@* /O=Db$%87X~ B&-i@bhkV&I&_~rI^3yH;O99v9.h֋^~e'@l 6&4y ؍(#q獠8ė K縸8udl…(6{| hᲿ=0~sO<[y'J\ ɮYVw+HрUR_hoy"qoeE_f0W\9?fN:INʁ-횺+ڢZ"߇ s~E@ePEv yӠUmn7:2=Kp)>í0rVNn\RR;ugh}v2,gʤWڡH[6xq]#42OQ?JO.c\`f,?i6]U,$oH/32\e`v,')k tRCk/pbi|.Rs}'2]7ݯ֑oo']3m$kS:pvyN&\kRqXd'xv cNU!ygfN,f{Y!$}ĈӞy߈0> YШr{V&kw-~#HV(i{\GYRhVF@H8fDYM{8"x L24@Үb kF86!%.]M!ur=BXX\h<0BߑH&\L-"O[1W TRiL>yP|}C ԇ} }cch3u:i\d뢚cSeR7i)T:u-u"켆u]hԶK4%OCO&Mri; mʱ$ X04+ X& :*&rUA iy}.;9>c-xخޖ-/m+zyreW51hb 3gN4mڴd.E;C A? Y4 'X/_va]7>.`X?nV̯:+Od'_pPibҟ7oޠyc/eYPM\]'s&m5.n(kfl;˸hV"#eJJf@$P=^f!X:!:P\CZlWeC%l1g&`uӉ2uyZ/I|ʃ &˙ZrT 돘ӷ"vA_ݶoB"⶛s &o]~86'a>>hd@\j,D~qʝ][ehwYmY[:8ND/B㘥(jږm&t6Kc3uRn&`ЯCʛ-.WS%搷g1En9dV뤭p .){IPpXjITS,X7tjMDT3xX ~_[FMy`C4{\0 QVL> :Z?Gk@0eP-"Nvw"H`!.\:)YlQ%J^Py ~0w),399}卸ϱ:iqpn0ŹU͵-'ʕTnGXg~݌fj6i9\Hjo6ȶL568>6":NǺ20p5RLN܄X8jMybg5/K`Ƞ<:l5sl?,ȑ#YrfV5$lv%u"YPf;H[q]ˑ -~&3b %>I傆Ф?lmsčA5DeYsP70{"g6)B[@QepEG ک UF-w#t.VkuukQK544韃agH4"XƢći@&ҰZ0ˋ,Pa2Ұqet& q.wM1a &_s>8[NAõ.m ՒSIè`)>h 6pgk#E $\;dӖwAd:;yta7;E=! )L$LYFs}lq֤b %S Lma,탶眗4?G@K:CA[+o9 ,57 e/9bs׭hwf ["v38b,&[D38Lb9l+>s#LUx围*:p#/KnI |mCD|y^scr<4tʆɬ&:_8kT\Y!pja淴%:oq([frauyIu${aSŜ2,(&go0b~0.YL>q2iAĤplmWpc1d҃fShrݲОmʺMxFY%njPO:uCE[Qag #Du\iQ'CT9;DX]}քQ/qRV vvp倨[]UA\ā`N9ewA5ee૰(וe,5߱8KZZZ>E#Lf_R'M.n\u{xmc+pU 1 mЅe~m?mk>M1A+c˜ܦjI(pX,5~XXXӎu"C "V1p\" ,"k~Os*Wd$#kmlYca05GXӰw8Y5Xױ*{Ep)" \#A5cCɄCX$0cBO!0MSs^cM4W }U&:"1E$- [/\O~]r=?_׍X!`7Oϒ܈o്g?2 %%rcrv E,6 /'!GՑ;$)( jSO=5yf5~ !HT[J٤F@[ww}ݴ,1S潴a4EY/7#Ar&Ճ-Yr>hZ7!-oy|2hLlٟ q?!ׅ2SNpX:(;Af-< rឹv\Zײ埵Yγh,Pٰ630PaYo7(Nc/5ͬ7:KoF cd%O~(CDRy |5|D-Z"MTSV_ҊDXV ˧MqNB& Y2wE^E##ZŅB f5d¯g?Y "tE!ZZXi։Uꬌӟ\_W}5@6l3 )*t0G?vn92s}qAb+OS' +Ȇn8~%U+_'(>Vկ~ur=l}o߹%P__.7I@%z-ʂ{ܨkE?.o%uA./})]|7)/uN]G?r!'e믿~ra-pB!(z~F'"VY"$JX#l]VYǏrR;k;-q$Yٰ+kR v fP@<2p܏ޖua[&"!WVs,~bo[( IBjǐ؀nlyi"Ғ%(8.Ƿq|濇h $Ni~Y9pMvKYg\TV(xLO6UDgQ!=&b!C D>C.ЍOvhda:!MTVbnHhB!DuX`w8q_h\E/_ޚ]>涹..unVjB!DOjэݿ. )>A^&SU <u2GP'b!?X9MD4b6f_vw&m^wnӖBT y^)v-G~g$Ph3v[ $,aJ!&҃v҂vF(~pg^I 3.\#6} i,BT џy晃iӦɝ[Bv Euaiz)Wݧ+5º3!g0\=[o/,D˄2h{[vR{ ٶȇrJ[!jR] XP#e \!n'j Ivs;!) !؟}`S0Ή_lKl9pѰ՘rX>so̕ is|FmfoI3 - y.z5Dap*<ܺ[!Dul o I 讻rNL~uEE+WL4`fܤ8QF9Aj5A6-|LR1}ĉ7; |DoVь3q#Ot-t9:,' J3ϟﲓ\wuN+ʀ{ELs~νf j`ҤIqM<ٝ_H7ј,ҒB_~rX,ϳgώN:$'"f%?+.YCPwd+V XM"KK)+>r=` 51~81{ӧOw7Ν9.5z{>L^~e;KA;wAib:(wn~wu&GE59 s„ UW]fuHiˆ!B!Hb D-b2e!2q(k,~0Õ˶mE緈Zo7< B.Zls@Kftdg˹؆|z*urYnN9430E < O!@ڂ^ w"C脵k:l^2j &˸OZ;E#v#n4Msc9{X>}7p,〇oB}p}rQ_5ZfXiQh(6,Ѐ7`՜B>ק%).di4W(qh&h5¿ nX9wY|Μ9Nh~yQ3FLb+pkF?3k,5^4v `vEE莃,q?f+7Xx_{XKOAZ4 >^q,,>q,м86nLM,r~pB݃͞\=H7K>̐pZ|;dfc<04H ! q*.1]p=gyjyAzcq➸0A "#l2)Xiww͖Df"`\j;MXG!D9w;e{rJ?j? D/CJS* ya8_[zk&g~[w|9.OI"ϗ<v],`s8n\;Eko7Ϻo`D(,5F>`22rK> |XQm{EuX@!Bt.sVkcH})B3:BLzĈ裏v֬YȵAB"?AXB!DEH IDATȧZ!Bj!B!$B!B!BZ!B!Q-B!DB!B!B'GxO<1?8u]PA !0bmϟBZTūܹs|Dm I!2!Q-j`7vV !B.S-B!DB!B!BHT@{ァBV!!Q-W^XB!=믿M4I!DhB[,J'裏F=\cErH曻veS !BR?鐍YO㞗&|cƌib(}BZDԫV~a7tx`5ڢ=<э7r-'"(Ǟ{]z5&W_m馥auK':;8 76!$E w@\ve"hu].#ohƌbܹs8'ʋ09Ӣ%Kz+{n!w2nܸhԩ\L}!wiǡO}ݰFāXD{@T{Ji e`4k,'H(:SOu+;:-s2s7X![oupBŘ 梋.rb4˥f!*DQ,Ԉ*ez* @T.u5re˖9|<34WF r "!$şƭM0rФê ]p~*oOx8D&~~U#kPX)+VƎrwG}Bzqw;t5ej4{_[oWR c*&KrCk%]U xv8- }Vh TW _|BHT;gCgM ׏˂ *+tHkA,i~{G"MsgUʼ |ˁX++r)݇\'׵= l^BWC!D0BEmםd dʧ FVXfz!;Mʀu\V`V,k5/w%e0aL6OQ=d c){@X#Sq,._㐡^fBŪo'N>~ՈN6P !$I6T!=. ,MVlKzAQ=s&!rP XIY.E^AR6͊e>nB٤KT* !$ \#Xokm%,XNb e!-L onnDX}e2J2yeiժyY= !$d:`3HzUiؐ{QD׊G$w&k|^ c=J.X,'\!q/-̙Ӫg =y`QMQLб m˝L٨&Md?6ヘ7msP%Df.+bR[""-s={֭s65t \@Hte|XX牴7!Y0'SJD:njUrb< ]E_'Žl/SLqBfłz'"u*e 0x3 gX١. "lE 'ѽ#9M_|=esmmcx^N+Pc/&E2G3I+VɁ_^$(Gmj|d녀+,WW[ꏥNX͛8YOx ~&Da]beI&iE ׬Ym`0шyX%,d_ʋ8.u1U#Nuqϴm :ݝh9e#GL|p W/-6aŊg@tmXzUr'肨6+L0 *d2ᇹONj2+ LUݺ,X: :et o$'^eaU V3T$Y `Td<1~x6e IvΓqB)l g9>1v_`T!zXT[s/-A)`| [YlTѫ tje WI'rB'MdkB+U&jkyӞ\2\ [\$&Lp׈k1:u>+v>q_}HBjRa]+uЫ!lV;Pw v怠fXxر)iE& k׮M<>"ybm, ,mعMZ02}Aڵү Xy(k"1Xt^EV&U0q wȴqMZz͉Ai뮻zZTwJX_ _={ϋe2f : |Ϸ2qn,ǹ wn&v"p~DU$h !}hJ,AsW̏;\d1RXLΩv.`c\ВMJoi3L꙰CߐnC=M\vx.Nxo^R\fڇmΙ'u_hϻᄏN=u=$dwuKKZzRmbf~j,1t6-HguJkeɆ#i /0th E܀ApVR 5,Xqַu.ˊ?jԨ,d"m<܃Y> YF\!B)״m>Hamg.Id.#nʯ@Z4mϊV̴ ujcs<5k3 J@;6V{86Y&l#DX<3 LX=5vnӞo1e7*fƳarM=oZB\Tʠd!~H@+j) !b :@0xo/A_kaI8xk QyD wp:s5(Ntqࣿv%^O{1?e@%%,a3 VI.gVZD*g6~9Lg?~wt^/FNs,E҄gqts9'&y̚Xhz@$'Va5׏#BE͌gIt6T@Tּl&lȹf͚qɨ \p`0C`>#j}KR``P;SkY"vks iW$QZx~hWy$|sqIkG;l".h mY.Ϙ )eBhHƚ=2̳wªGG TLvGmӄ.Сi%-ZPStE@X :`_ 'uvfE V0@0I2)ߋ,mY4jK "/4QVe`2@% (+ṈJ7%#ܓ|DK֬j+u;_ǝtO~hr Ȭ^c@ +uRyZ=00憁Qkʝ6hWyQK"'$+"DZ*#Y:/$`nA, ~b`3Oڤ[=/IZd?-1o/M:.,i.#&6 :OH-Z4LX3(2Vc8Q$mҷ챪:/ouJ/?wl AyI5϶/zyq(MsSŝ.^1ؤHiLbx<{#DiBb5A8-YYf0ˢL'ФOmvs[tDϻQ %{ZƸ&Y{B#-zғ5ΊL {bA'`eV}UȽ\RGeQ K;lSq~|YDUCe{oF];F׆i3*N[b$Dy=ߤ|mP\z<+qMuX暉 @\Vp}gufBXT#Yc E1p>D#@mì\w&,# $Yljƿ [=3ڒ0+R+Җ0|W Qjhhtqn~K{NfM񌄻eYd亹|"<-(Tk]E,mkOSK쯞y" lgżXl,7(y2NX?3c?CC7JI 6RvҕzCDmu0"@Pɒ#f ɂA1M8r$4oҀ˵a+"LUL$íi\_Uu&IF3aՌ<*ľ_e3YDeCً࢓$y(\rI!+_I"ߟ !${"4ldNc1bsq>u#ڟrD%ޱ x$aFyq00&edm!oڮz\mE6XrJ]teU ++\Z6a}h6fBWT-;3.U}dIPp!˚DI$}uY4p !$+"O hUma#;QLP!k XkoL`7y63@#v4Dgvd9!% &&ArPDģ}dK^80[j9R]bՇv_֭"eBePig=4+#/)6vB>bB+M7;;YRƧ1seaD!r&Aa]-pE$>okc1-guԉX&+!MPMX. ǝeR"=>'O0K~6 K^1>e0̳|>G]YY]aȑ8+&}RfXmB4U'0{ƿ>H 2{ywBHTW.߼i؉(KTc%umtStc`Q6pz¿_8iO'׃U ?i v}w5!ذIJ-렊͚B|> 7}U?`d6Gukc={Y䲮r<[a P!D&Z j|, Na`ĥKbyĺfY'̵#fG44Qe)/&yE5+KJ1-VD"߉|n[v!Du#UQjyH=r8APc\~Nm!+(uHٲީC7=L”Lºz VP U!Do1A5X,X-ϻ""R6MǥScf8e~h Xc/2F" 9_=Z IJay߫rѠ2R.Baeu`6 HSY@DA 88 pFr|[~jCo}7j [ݩ`RIXQ. 6M^dTь?&eT='ڀ2;+D 7R"faAUazgNa`÷ l|y΂$'.~ آV8 4KhS>B6D@\ܖǢXqW '6oK^;_V@VC99X)">H'Du@FGȀH^Wl[&jmwBկ~YXy6BzF/MXFQ=XgΜ gV‹`cvd%9F#G@tV`*s}яa `H06:ՃMÂkUާMɪZ 'mg/=6UN#-eXG_җ߈o}=o޼?a#)6d׾{,Ͽkn*ᬏq[?Cv)}sr](w]'Yi)Xi&?'p@{O &=;cW^yVmD\:%<<~}}WtիW+wϦ+K56}~ IDATD52:Nh=KC-V2ܢX%,GU W-^}䞦 gѾiSVpآNg2p\=+:2o 'ڄWW+#ʨ"DXPY0i!:N|G#;%h|'" _5|^Nq`Ǽ)D} ]!Bzx d`]ZT@!B?Z.lCn<~3gl̦dBDƑAJo'.ygu BjQX;I'B!$\@6lB!E>=;uiN~{wF7pà HmoaQB!#.v.槟~:z'gX ;BǬ\R\?yU0jB!Y"u̘1ŋ  }E{gtGGydzjmVXvivm7ĽD!BHTwI&EӧOwV3fD={ݺuG1b6gumݶkB!DK:}GG_{zs7W߾OFz*P!"T7̵^)h}wy'e]WZn;w*P!"Yd{W@P  $| 8)KB!DF!BHT7c=3Eb7[o뷖u}7:[ /p H6#B_yM7MQ[lŐwq\L#7nd;voVE36h!m$oB!DuV,6xcO<1p^c]g'V^.i{ٲe +2wHt*u^veKૹAY} !BABZ*6pM7EsOt)D7pCphɒ%.o5۔vaK.q87o^4yJ9z꩹ڴfs'F'pB&י4owi{uiB1QE$]}>h* o K=C!gqFe;J"Xk|ܐF{??묳\~nV~W3f̈M.N?~/82eLU܉?&3>h{B!zY`?o v3tArq"7 Ux뭷:TXq\Kv54RNp-I]!Ɓ +H7` Lǘv/B!Dn}wXUr /dAJ i݅k$k T7I'9޴d5$IBs]wuIɸ^{.s!BZbb`)v?>֭*b+Ε(LfN˸B_;`? ri==&YVtuc2B!z<X|'<݆}7T1KzA|&֭Kt jp) Jģ[\*yp Yz;]ot'.۳c- +-y\O,!DjB\6̏+4 ]J9zhK^'M s(of<ֹAM2B!$ BVӧ؂ȉI`\LI :E$B;)"A}LC @D1+̙$d({>|QMY9//,\#<0]xq'-QGp#(%²|$]' 3f͚uZ@l]ł \;í40ꪫE\!.-W_fQĊV4X !7YάY*Ar?cLZG@"HI kٳ m[{fy游mP&^{+{6hŴ ^u0"Nj/8'hd])ZB!Du#&M2A0о+t.Hcm~q<wt}s~&o2WWBTrL&)l/a' 74E} IgIY ?jԨLr{I'CHRIO$SB!Dup ̽-Wxb(NoVw0-[\'j NÊeMD0fV8׾\MlYY;T=Н ﷇ<9Z n9aIj3I<Z*s!oE5;6`0ƚwu9,\Y! zl iE?b!n;cwn,(mԩymq/+Wb1l#YmF!CG X}CCa䴍T|i mP=yXU HVB!Du#Xv"sW[l1cwL>>7aڱ\'n z6hHIk3B!n |=G5ac$ P#؇&=B!->{a sɃ|xuw|rܷRێB!Brp H1v|7lA]vnH rnc͞1c*[!B>QX=-MCK.N<Į^{# !F*sUe !BHT[BzCҙMI\mݶgΜ8HmK,q?mڴrRso뮻B!P@3qf(i/4~֖+^5k8:A5ks[;PD!b0Tw(y^}G^xal"s(#^q6XQqCZ!BR{oٳ۹u\|űō\&,s)B!D#i Hgyfj*oM0#zٲe.B!{agA믿yj6SB!z_n> ^$B; ۈڌBQ> B!QB!B!BHT !B!Q-B!DB!BZ!Bn<-ދ~m6B!dn^xqt0B!$ENckTB!բ,>h۪ B!$E>駟vn j*B!D@.;DSLqcǎ&O޿>:ÜȘ1c:e]ThB!-F.pF&LFK/cĉNPXB!DXbED'pB:ڵk>{9gB!F Cʼq9kٳiӦ &ў{;׏vM&Brdn7|Ӊ}w=?{=`+ni+B!h'T7ȝw=dɒ[o6|ꫯB!DYzu4bĈDQG'| J!ǐGɃ4zn C!b!KuCou^x/ _*M!1O=Z!Duoa;sk4~ph 6P !0 SBcݺu6hѢhҤIѷmUB!DS#m+:lJ#B!$[&5?Ȃ uQ*w{w}!sٲeg,pymcmO^z饞TBHT '#b^|y4y&>h`g<k>ON;s=׹7lswg̘1O`LzйN;-:r՝s9jZ[8Sz?E ' )SD_GOVrǢ_<#}٧yǺ}Yf!T7uڻk+ &tdf+ p_~謳Ί]%I5h Bsp" y饗Fw ^{m[ }|EFN?^q >{tMEn޼yD0a9S;H?mh! /B-[1g_ѽ^r%NN4$YsqUARNz萶pWFcǎu&@!owd;bbL>c]#<5+I}n7p,uWJٰ=l% NR*CҦ/=ILI'4d "@K\pAy̙n@5e00ƽ-iLTΏōPXѨ#d-/Ne{Gzkq' e(-2iv-$A;;7KNIs&0)o91e)5f̘!“cԩN jeB?o.~4o]uMmZ>UW]% Yk,$&,1t,qe $J l|Xt1eك,C4i$_2?# wX.~:G@S2cu]E]v,#H[Xz%Y}|pcISuU/yg.D Ku0"XpB$B{YYۣC9$w7|Ro@`aY-`ӭ`"*>s=iX[A7{~nW#nBE)I;m{[Xre*k9! _k &;I Xƙ#Cј&]u 6-pdk u!Ku͘(ic~j늳1PaawԷ!ll`Ǚ?~@BV "e]DKB'~d ͗k`ڱF]ݝ= ,} ׅū `k/wa9Z_p?VvmŬe1D/ڟ|8.>͜'t~Yx]: j-mծ=+1f\v dR;2m/nk觵6\|(S{!'15ꏺ`Ճĭ4p/L~vH߄ OSw)8sX+\QXk1FTrp"u9x(SI&ЮynqV*flӗ6۴ib?c9Dɠ⃿XƂP@"Ε$B-_[0+1CZx Աe~N ?1%YfX~,IMM;W[(Di ׸v@V[ yb.5g9r2%iJ'6o;e2i"-mscMD3E7x݆rcŌų$˯[^A;Ֆ8H}1q-h6.P [\g\]!k86/J[^[ʑl1#ڸ=[E_ )RMyuѣ;:Be0 zq:EH,ӈ8_FDCu-gYq(7Đ}GI<1`mp+ۇer-fP<ۼ=03,uL(e󭎡%0MXYpNq53 `ae} "-x6ZD[eu]~;mS[@2,LZp ^_kXpatQG q:.xي\j_h<@H3I4O i\k'mkUzn?>,mF9e2*봐5 IDAT0ב( D4,KTR'-WAI"X_|A$}"(eQj N\ccC)~iGe B":X]$Y;Kªg劘K1?IDtMd[{-gFb\U]3uMw5)iSmw?;wn甋]PV[p}h-KOND ߥ ܅ ~ZS ʒ% 4@X;][tYbطn !b>'Jh1󭲔f,eDw>6aw7Q "PlPH($BZ!* RDPPF+,$fg33̜=g+w1@ 0'¦IT`xd8|^nIR]zlK^5Ncmt޶g \5~mS׾}cǎׯ_Ͼ Dϟߵq!pH{y˗/;}s(X[['7oޔc1O~&wΝM:;ݳgOyPzb)2BNuѴt  9o7Mx!S h/84)7ụ1;:V~ 7Nnx gYkxg(@ i-RmĜ`KL!&چY6U RʎIڢztV8GZsj[)eݏr]cK|eVg9"3H ^D,CIy"fK9Cۤ]ko ! #xD4r<ٶֺu= 5.[Ni .< lIڭo1܈Ihg%K ;V e[EiIǏ?^1-CyAD &OX](e|)k .>$ m@ }r܊zݻK~}IENDB`jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/expected/Example3_shaped.png000066400000000000000000002135231326546671500321070ustar00rootroot00000000000000PNG  IHDRTPz cHRMz&u0`:pQ<gAMA|QsRGBbKGD pHYs+ IDATxUyUPeV1h"F4jԠ^1` 0HQTʠE :+\bQ+TuԟP1b M;&%\z{9~f{]zvD!B,B!B!BBR!BHH !B I!B!$$B!B!B!B!BBR!B.Q!୷Jy ?alٲ䤓NJ ޺uk'NG~ܫ|AjZN8Cq|^{%#G7\Çz5k$^\ eA4B!!)( oL uQW_\veNX}K/%^zi'/7/=f̘dNlxzȽ@:{oӦMK,XP1Ow>}$۷oOfϞ暧rJ|ҤI͛'guVI_작'} HX({7Yti2j(UP!uAPZv1X/_aF .Y< ID֛oE(mٲ}wԩƙgDf5^#=\߬7eʔGMgQ>Cp ƍ m۶%Gvz9裝pua%|B]!D>BtV:֦MAwY[Q%\3} RV8b裏2rJ'Fs1uZLgM=XU,!'Cu,S#l9;,n 6ܛkq]}ݧ '(-m !Z#A‡bnj%w,p̙30\h[x`iXy\|B8}NԚ%&L "l'c_ 64d~zB I!Demb^^x NAؕ D}nv'2IM7ݔZ3\`4 Zt3gΜNh}'4R3B!!)q -~X*mr^ Ǐ?i|Ɉ#$KϤ)Y`4'VB&(O<_D0ɶH%@ІD֭[(n!Qwm9Q0gĢw^j`"|,fYЫYDC I^oKhϴ%w,<{&Kԡ5$ "mxF;v*4l#V,$Hp,rfDSg]s޼yNqvSOuKzN:ꨝfs'^zi;}K/SLInݚ<#=ZI r83s߬LȦMءC:7_B2i22|gBk:ey ?: ׂ oFru%wyJ|AeT QwXE:蠃:x2G r:thׯ&Nlٲ%r,˲K,o_ZCӧ_֡S Iԩ#8YlW\qDd ɸq:0 V|d͚5N@NL0-<ƃVC <ٰM>=9uX68p ~ g|G]H,rMd\|!Xͽ!\Ncԩl.˖-K6lؐ|.uCyjw\Ϟo ,̔ /~n 0l#-Rz7EbF%yfkn&1 `$mZ2x`WOLRִJf^:sg~OugZi2AYU3K$OWx \mmvW~5x&Ot>̭MT&ܶ:@[7A+A?ܛt;ʚ;Zޥ5iC'g݄ T!$$KR';3@~}uP"B>~nnԨQnиsWA駟:W:\|<A/&$\g&֋O>95k+< ʼn'%l /YmRLLQfHqN4`5'ݤI:QLDpE9>u6mZ礅4QiVO.1bDż+/3W3oy&&L6mvA='\wݺu!O?/i'0$E9Hi#)D… :mM#G: `kAe\rI$g=Mr~3:IMF,-_y]됟w>eHJKg\2=W*C7֞a՝sǛصLU!5y5̘e+l!l0DtX`0f7o^g [tL:}K'`QЁ20['wY3_!ܹskװ:<.E|Fp3dP>#n:s]1/iyCνN7|I#9`y1ZYZyhA`|'\YQ'7tJ+B8DcǢK9=~C z|vGWkϘ7_̙-."XyW_}սw9tNBNXϹ <׳+3,rĎ#(^|G4Җ/C/&J07d_e]{ nUsu='z\7Ak,{y{,iפ,yN ėha!y~waʕ|袋\}v@`i7zԯ8L0P'm D^OaID3ѐωz½4ӖB؄T2ը=5!b&fD ^ZA#r)"D,1Voݺ3n'XjUld>meuiAvԃpIZu3m(oeeIlF3ZH>ĝYް"-sMG)GDY/΄/ǎ̙3 ]3H",0X2VХJ֙`gx)3k2aKе\ ,Y_:J+bፕFbKnN{"PJ`3ѽSqxfMXz᷈<<K;"c&yf}mPr(gu8N3v؝*K9cP샋@8+zͰ`LHŪO5ׅPf\"Vτl,#-Jy x, !hj@kݒc#ˎztXX^š\akFԭ2,y`.C3ˋ|ai"1լg-zLh!KV &y0B6d OJ+Ce2> 5'8̼NcKE>~ʬE vaPgK`~=Gl7m}]cQi!㷅 Z B)'i+XX(4~|^f2D=T vJ,8Xnz=eجH2>s" r=D"k7J;6 )G#ɓZNGPiֵ#hs$<03DkZc6 eq}7_ 1+-3fYkCvm^E0T@ wT?Ƕ(z=@EX"O4ӹF_+AB*fAy *|8mϒfq1ٮ'8Àgu{c#{>!FEEX"&˶Zb ?M>R&_d\ʘUm;) }(V^aD=՟Z-zM Rns:|Apu 8:}{ecFG?(gxdկ~ "{:{Q~K_J%p.2[𜤅l%0"ʜGD"<sʉ"ZؤNt0\f౲$<}Dr.+E+Sֈ]c @6HQN:"ɗw߽b>K4n>LbD~Q<'YB~9Eݤx՞#}"<߷-@tX]/8{}w9wig,zMDϴtfA_w __}7IN;4W\g- c%%L_&m-yN$YY^b:P6'mo#m.@8xֆvTWl'Nk؞f#b 7E`a@t0 1FVzMx^t08ƛ@cY3U$_v4[ײ"cIc, ]/-X~qjKitz`u(,]S6\BF&CmD %ָN,g- vLH-EI^<?WZ݌73ȜIEZy0fe>]3-+˪=B!n#)B!$$B!B!B!B!BHH !B I!Bt( q'v6 !6$sV5ל:il+ޜQwy򈍲!>6MوҙB!$$kI) x5;Y8vJgVc ;΋6 p: Gp.zw}q4駟<:S8˞#uBHH6zr 4%AKT#2+ uiG1AHV:>]@h3wEwߴi$"BB1p>)KaEZ)p{3gNrGt k&YBU&M*X^dBHH69 Vda֖,w'N:;Wֵ NXNg@ 8pygyfa+B\ҥ0N >tк|Y5EpAIr{?HcZ4 !$${Zw~js9'ygy&˒/}h 1 _>;-~^ 26HـcÇM3fpge=w뮻Υ0:j( zM~_ sL!/q#Z`31{|},Ogvye'Ovx^dX?g .]<3+ߩScsyRwHĉK۸\tE]wij\ZtMɢEROzA}ā=cƌ/$Xz1ZѬY1eD~WKbBxbqAu cpqǹO,ըqES… hU 7/'ڵg ɦMrBB!&j$!@o7"&V^`xbF._Zo-[[wY38ݗ(i(o!eׁ:Tk~y} bŋk!&#? AQ܋! ꡀ}ڷl=[ <6i#qޔoPg^|N&pG|Z&\?;'Me/b$-<+zɻ9)4a#ie`gu! D<|&&Mr&=CM!Cs=_S%"7|f$?OlIUu+MD@?X,*r`3`E }Z|1W{Pe[y ,?B 퀿X+y&{N&>ao{|k0ψ0OԷ{,B""`2 p`6+'VfP ,{}Aі꽶 IDAT | x(}NQ-V,V"Ag|-D,,?'5q,)Z}%+<B;w# CHM!:?仱з9D[~,#J6[b+ۉ i{ȄBB`iY/ Ε-;dE?+X*mXAw'sH~člDMbb* ҍ6 }/4Q5k8\q!XŪ̵zi1oF`ϯZjҞZ:Y˂oⶊ/%QXDz.e!&l5KL1D2 K,|eW;K}ǢC̺8v3/lpzͲ'JZҖ_ 3ɴ|=zt8BIXP^A!2,]VZNfNc=S2cώ5Λ˗;KZX`')C]% b?EXUƪVǑ Rl7?te唥ml l8] !d(R^qFZґ曮3G(pU LM[e̗XeP`صHo>Z^4 M^zY 'DҚ_f膀AVi=>>"\ a XęX2aaGPf?|$)#xm9+K $/ 4*"c$/xXdsm{N>T-K<‰I-Vq~H<;yǤYZ<#r-,7¼>mި =mnV$rC> Z"/=^_גo}[{GUV%j 셈pu]R5܇edz= K:׋AˢZ1%wpy]t+7υ0=cD1~VA[+zmrmo;>/ۚ]D+1cP6֥6Hviɳ>랓#M܏3hnW l oޯ~.'ӟuG|# 3ψ NQ>7pp(;|SgFZ<).(#r,?ݳPH{w~_uuݒ3+Vtp})u OBQ>'8V8M1@HH:!¢p7Mwα.1+'UtAVs+T㏓'Gu>c :dK,DyǝwDI'LiC1b *DO+Sz H,^uU3Cq5}t@,\C"D>= ' 4(Yh2Ma1|p7i[BR@HuQ]69|?ޟ~i2rȤOh&&MrT` fر߇zHKШFll޼9ٴiB@6x=7:с߿ I&ITk$Xh[HHG}49ӓQFX5XV``- \7xY)X4.w]zNPh:_ ~DŽ-MpQIU\[l'C-mByoO&O̞="n:9nG%s }TW\,桰o&"veK.$6l^yYzEgL05#F(Ä .943 -!Ey1(Dd &;b "/f\a)7QjfQaiatR'{&XwY !z>Ze5?ʜ*$m8bH!X3,Y&qFI}6c>mhݒl(z@ސ/,a ی-_G3R+ބ]"".ɯ~GI=IHqYg7nܸW__D%6oXnH7&fB;n3t3q %bN~ߴqM [>,7Q5X&Xpg//'FKM X!Xxnl`D0ArB< avV@\.\$\s5F+_{ I"!kGF<߬`/v$sK&ra'ưL>fTYBBR ^xo_ vmN4w}2abH5M,^qm%$mu!x8o޼dĉ][-'d8kE ’ !q|ȢzWX= 7{zIPy?pUl!$$EOk$ 2D!TOsL D^Ƕ&lv_v`!$$E/#B"TOHKlFDl 6bBHHv D?e )BҖԓYc@gVr=L\wOPv'}- ?v|#yzky>|k͟4 2wp]m[3IdF 6BZchW!cwGOΝ[HL .&= GZ]L2SX{?A6R:w 8YFD.X/!rSO=e;/,ϙ376Des2ńmJ_}Ų'&REg"HHN*{SISHw^HYՄOvg6bV[Sgep+T%аd;0fjNI&%W\qE9QꈢVV$cǎu[ I[!t6L>ޮ^3&9S=B`9uHrd]t~zh˴ABJmG=m_j¸Fe_Ԭ,VMܻ1:N@D.Z;VD ID[m`SXb\勓=˅B٠+ʹdZQ1fHw }n,Zh4c< b~GE~ݺu-QOckM( yXxぞ:urvU\iAʕ+ 30̜9F1c 7qY6]jUrꩧ4@=/šdQ|`Nx.ʒ21u*=1 y!Yp|SYLՁ<=S~ yz Xk<IF]WA;ЂVwrmx>CA|?N;[|rYKXF\~宍>¢pvE*@TZ3Pϋ |]}3ڡXCe"cK)cN|J9: $3 f4nQyL1k|Km gtieZ vy*`ho2 KWyyVtZLV e9Fi3z&^ejݞShl#Yu9coEKl^>lkK6o^zAoZ;J#Do0gOK[򧽒.sc`@nH[ow ~vdi +5 cIOCBd H~)hV>bɒ #:p:pϠ@Cs:z;ߛ]ށ#fG}6338e"0yv:J*1DgOβer?k2w%-EVr Jf^mQm!C0o ,mݪ'-oчC18#(4Y:k\ևY?}gE+`qγWk" >o+p@]mL>)-mTV^Ww F,w,ӦMsV/f~tV~+ v8{o xy]>!Xe0b6gr8o+ZGc|P>W^y'K@_GL_7kň2A[xּ}:i28k֬' iո|W:c ^flcLI y7({q1/fCPi՞|6.ODIz 4d4s9KljYѩ[²u# 3̚+PN 3ҩб]K%Mt׺߄O>N%lfiebAU\ͣOTGxٚ%,%W[~[H7,ɟ>jFX_Q —eo叴Ex[_`1PH2' uVsoY)? r=ZYlհ"M>i{#dy<Jͬڰ;K%aogӨz;XHs\9\iT6*GMGIGkmk>9,fߕJ7uԪiȳg]$N"$mɀ4e!{; yL+ L4 x2L gXTz&ˣ2eU㵣ȣfZ-@m *VysVcԑGY:c*k_ QWKj`q}0͕҈ Ȳ&.oi;ɋ%zo;O:Ol(Hբ I; WPK G9ө73h4\'jؐd>.2kILGYAgc1U^CZwMy+Goi\ofa&O '(@yX=)-`G_WtRٌaE tU }/4?aT߂9<6y~NGD>gޙն"m?6vpkE/{>4*K%Sx#h%IP~]4ea‹N%,!¬ hͷ,2l)x❾`?Agtz vf&. =%cXeR$-!Ң_D „?B3ccv~~y yJ _{ aՏg ,gVq^x&1<~?\jGv@@[veQ@!%vr Kb:p:DfigN xi]OI[~iJ:B_< ؾl?@aÆ.K Ri_^t4IfNa=\Y瞝6žsi%R$ yiv8wQlMİ||7~dQGhY܌~`J[8OD3 HBN%]?OėWX%ck-5BwqATU&,kt&VY-7 *u._I~oeCԵE-Nle[@D!i<( !?x^NɄvA.uvԾ$*O?iЊY{ FRiǬ~д~3`%f$r;mv}YH~;, .k$õΰU˳}wDCg]! n&u 93:X/:M,1 XU->k0bβ{ނ8JОlC2m+}l!)K,>L,ذ@:JO~U=hg}ji_ ߚhlZM0ۿ[Nü6xu<<#:XE:1IX^u޸}8m=,}vZ%"cbEl-S,gH_u׬'_sxV{1\l>$az%3<'~_|]ӿS.󎋝xebIˡefY33Ė`QVYq4" |NZ':t:0VO)AIv_|u- y~ 2Z,hcN"POkLbX!q,uv0$'.e}*AGm(6q*1IT($-IǧjnWiGdglU # H3bw(O:HPO5S^!e)ص'%1@MPmPBnw`y' t@_d?:VLg2X:ZB'c  u;G=m~-K+ R޼Nt,e]&v6Ȥ!R,|5,kLӾ{?f_7O:9Gݹnc!a|T~UҙR~]d= *jYXXggZ =uy) ((3/X Wfԏz"Wi%\BfADy~("lX]`LC @/$e }z\hԡZ2W IDAT.8\?Ǐ,[:QA'%9[|^],tMS# q^7w6ey9?<1 l%+II߫L٩IEzo[,YAD\La#"ez뫹ؽ' qYr@0 u/^kQnŲF}i."daYpvqe0K!tGH!d/-cˆ?xOluu9>ɔm]Xmj{b!"ne ER!!)Z|,m:&2z6VL|m ܞ&cwrT3{`H3>PC 9+'ێag@n @޳,^fc*E (!6r1mK$b- Ib?xN*ˏ!%4]sV|%4;ϕ\|Lhu8k&BBאu6z8thZD%o8<?^sE4b$g :w Ar:z)MˎoE( Yy%` 7{!Z-!6`e1c 4: h?ÝoND ,ZS`I~%˖-<3WoYݤ-^E$]ymhW__M0ϞgmxBHH>\,-ɞvP5=s%#F8 #X͙!mub7 VM,]gf>R6yX: l}nap}R! :-71lؤ3]v2Q4K@|9׹af8x%sMh4S5C^> { e%AJhDBv-E;]d`Y_.xim+5X=񹘬H(Tr\9 |S2 s$SLpӦMsb|_Bha|[sPÆ v8m8@pP5|f͚7BTVވEP CF,F9sfͿX)ݿ^BRKl_  hiED?AvJD/^B}|oqaQ= q  Y{3Qi)S7RcƌqL= GoVsꩧJL !DE$.6-$$zjשwq'!h DqΕmXm EmD@߫9t̤B456ԨVsqg,B!DA-B!$$B!B!B!B!BHH !B IIBjp"]mʹ瞫LBQ3>`l2elG8J!8"$$B!B!B!]QtjB!!)jBB]!V[PڅB8}뮻o=4hPr'FR!-,ex.({'&MR!BTgQGɀ}*SBFK۽?="۷owp]uU+V|-"m]gva p6L+?!ٶm2L"d/'S;餓꾖"mEߟ\ =C?vAB!d/{D:/_^.Ȧ^i+]'TOVZ,egyf2|pmhng}fBK/{I>B+ٱ21|现td̘1nuBHH 3oV.?^k׮uլ!,BH.eBTQzhCc޼yɚ5kPyK/u:}Cm,XPXH;)$#G/i}u 'NL﯊ D~y!hq3^p6:nr"e3%[nŽ9d5\S,mڴws1wyJ5V^e} 1cƌd„ СCBHHV;aYFv%ʝcJD]$NjSy*+Y;>FXmO=3?&BEGwEw#Xar aY!).^{c;wnG>|i!$$EN8-?4N3gNS"{"v5+?\otʕɰaÜ/\'HNv!zZnQP}ݮ#@haueΕNQf%\|}dɒ%5_#?>6&YC 20s뭷2d <ز,A38 /;:a{Q/(sILo+H'x¥W/r2xdܸqFXѣ~ն󜍾u;\Φ j]?lQH3/Ju]ʟ<}>US/rukoA;L[] I:D||hEP-J/^ B4\v=$zj,,8 q>#\M`K"裏vbW^7s4yWzw{oF#c&l~ 78!@w<@r\&|"g7|AsG}4 Wko$~^պV3'm~uO>dj\G?J CH#m~ g^k]w]pdڴiH 7esv+Cp`gݐ£v!dCl1'/ 'xbnݺ_thO{{󈯲N~txc)1!YfIg&/b[stMfe$ zFY GXfĊV6aLF>cUG 0(Mv>lW>,FqYΞʧ5'O1?ykM%ၸb2W0=Hz|g-R?hXy`OЉ%$CfQmҊ[BZ?lXonʖ ʌnD`7!!(,X5,K$m5 1z- /M-aY\}Iv m-$$(r^4U4ҡӷ~hf+Jό/:۴L"xQ.tX<b룏>} 6щ!rH:CD6K~Ϡg`yS<\e IS@ !Dxb{'7FlSf07p=TwwUgX+Yߩt^+Lʘ8A~=;VjyYBBa23łJ?xYb/)xf>?=Dcc;WD^-KNiJ,f ,@M#*@k(4KYUnވk<  X{M' E3D53&#ᱥ#L\g ';n^׈2OwMl5~v!$$+X爁%z-t8fQYMX2dKP:FA @glΕoԆȢK68g,4E014hJrql?Ԫ&$uržI0R3A1)"^ˬyӢUƖسPѿD}"mשVog`9 gk֥A:?׋lQ ,0!"G;HX/ <=d`IfP'N>d79hl6Pe~ƾRł,X#bMD`r+Ue?>}3W"-  3<>CP5{c~,lT$Y+H})b3kV L"̙3[ІiqO5Z],Y2B@:-:zMղ4NMMرckfyN/u>MHjg<V]^B%E,,WEd;2}`ɠ/>ueK XQiif98y6y@8p}L>'O\!5-dy ~AZO2ua2h5Zi0'hl-6QB_ˋ@}**6꩟otGl1DKZluk {L6@KԢEA2 [,%ektåB,zꚟ#O)µ,!|Ya4idĂ4|| Ya1fĈ0QVi鏺LD9- X9٪ըw˕(7{@92_, ys]ΗOaS|ay@ݭ&&Iqx#0!zMgv!D,%AfF1gg1 ",:N*:FlcZ;%K=pHr,a:JYqm&9LΐeUA'Z7eiy W[F4Ėn F@-Іsϖ+h+  t͂ei|2'f5kV8;֦Yym}'&V [tJHLiVaV"m4^#EezB"X(j;DNjL^,I"8ۖlj&j#3SYI<ҖHɷ4.򞁟oZbL0Ҭ6~n0 g$1qxf;p-W/UbÆ MBA6ߌ3YK&ʊfQ?iWD}gSfpנ~_(&M<=kN΄}*"PĆ E&EڊmUt.DEK 2'Xz)D;~3 4m&\[k8c&L:9%ZnaвTxpWqy3dCYGKQ)u<#6g0qmR(x+'-~}Aw٩Nϕ^1x'ƍnuq0K.|FUV<,QԲ$^F#NqY&;q{$oc&oŔ3 &TEqҤI.X8 -wm:ӟ&K{v!$$E “W%g-:jK0eE23/#0Ƭz:)!~f;=b˳eAt[gu{bCyYBfmju#WzFb'a:XdO+1&Y]}V:hE<I]R -$$LoN`IHE&KIFb)9]g@(uY$uJ N,c7G؂jP,3ħ"fʘ%2 "-J0 3Aء[;veWěm쥛w7o]+-wd FjBgm ne27֭fT: fy}2Ő-4!S)7D0Zyu !e)"TZKB!$$EӬS6g(ebY =r/%ǭ*$".Ҷhl+>ENQ}Y.fk%T:#[! s9"sq0&dB!$$E6lB|衇}R /B!$$EiV4vXhB-[RVA'S!D>tֶl7#emʂ,uNx jrnxm[uvvj2Z>e:b[i_I ~}s*rS}/3;^v;x]z5wk:^vQ7_&E |r_og9N× ߡ;Q:AʀzlxoR4*$x:uO~\`m'y`="qv̄l/Ƈuvvx0{ߣM#=V.c)R_/xՃ'E?X{ IDAT8w  3|5(-:^s:^|:HOyxz5BB_7N GDf c ]BHH /N:As;un& M[Ҭ\wdU7x!94g1kuexlaâ|g "(z!ya:to+y9CkEI09<ܚ'E "^x=kUԷj5:_~pn 'yh0>ċ}c[6s7:}:^34M[BԌ|$0o!x{ uND>Um9Dx]X5ѱozWA;ڋXN"޴ h@DnbnZR>}UbY󕉐C/2OB7Ia~ XI/yUGpUn^9^,; DƽSHK`B _w*:cҸ[dU\#z!}™I՛3ޱB D/AKۍ`YՇAQ /@( :,/WN'e~0 D؜0 ȋ_{`-+ <3~lꆥI@7DߙXz!d/f~ ο7[ |';wX ~YP0l08 (t;ﳃ4V~>MüugK $&®HA>-ˋTs}>\s5(?XQNs5eIeK~[{e2ɗBG Eg%;&̓J-atI o';|$ D/<^PoGpaK"Qfu%,[ȵCDz >o䁤ryz4җ#}8#A_V}}~no{e[ |53}>ǁ{ [c]Y()Ilɞ/Dz`=>xQEB~, W0?:e/ $ǦX$;sc/ + ^Ng{u~x$)WuSz Uҳ?&•tmx FdcWF=9wԶf@JW[P{+xgu>YE\~Ӝf=Rr2 v5Ϗ ZP {=.iLP§^[A?tKڱѤ`n/Vdǒ}w[ ʲl#-ZX4YtF]Úux@FX {QNy^_7^çwA]ؕ A;wUd39&klMA=2J2޸?svߧ.!r 9Yg|㕖DYbb_[xkl?~/"k9oxk zo=ȱ1|X_ݿAhw’s)s*do"_:zK\gwwNK0/2Ȼof]^Tv-8"@Z=v,C__|b^>^~?~T^O|<ǧ5'%#/U.bϭpZiL:ѽF jYw}>~!(Ђw)Ok6g_fM8çtѧ7IR_z?u>goa735B9m6zuϟվ|y<?[y:g/H?6IpW~BGFY[ey[d/!.ulc "TN "e7/}|d0ۋɎ́ /.񢫯O x=tݤsw^&y͖ ?y1Ͽ{aV}_CЋkEI*y0!!,wXNN&;lb mDm)\_@}7Km~r#pgYFy)]._l4O}^V]zoQ;ZŞ"u m{MǦkҶ*}hBHH !z(YB2dAps{h!6&Bgۜ|Gʲ%w |lmqT!wW|%GfeonGI< !11BBGR!BHH !B I!B!!)B!$$B!B!B!BBvdΜ9ʈ6sM>eB IQ7oNf̘L}zr'~{\s5ҥKB!$$EEFΛ7Er!=9n䨣 Gy@oWFȑ#EQY ׯ_?W'B IQ+W:SOFbA5jTҷo.mRE ʂrn͚5… J|xuŏX`σ$yȗ\rIB?`.adN>k&^xa2f̘SN qɕW^|'(֭[;.ug%_+z!]w]rG+#d;|ro}# f[#F86{d;~GveCmҵ~z'^|Ŧ ]:O /kŊnGPA}饗*IY7?L>#WT4BD;ʤ^ʞ{LQXb qfb_#8‰D K|L!hs='\k6yגz'V^۰a\ *>k6}}-[L6-5ꊲcNiy.ĪG M XdUXtEHQRBBRBY G IYbS%KSJvգf;w{s}<ع˗/ER!F19b_ SE"?D;Ega㸊(^/^,$j"IwE1,XM" N[nMO9Pn!+Wt" B0Zk&G8.®$TD>cĈ{D={pEG-0^ *9?,B!q2\~B\u;&mdsH<蠃uٳgaׄ$#ƸÂK.ƺut!"ոZIT$nT*mٽ;w=^D&IAK" ra0X IO7B I'Y$$F *{`oE\GItM6w9RkaZ\UX !dhP0Q E6\s5k\V7(Kƍs]wsr,/CM6EE2Dd#&&k׮\: b1rHn)ᆄd@p0ё/=RliȀx(8Y`lN#mBB4Flٲ%0a"{A")4C5/'& M0'"2Lb8m_ ƠZW$[Q+& =es5B׆ѣGjZx)>|xUB2C1yB|dR| O^~ Y ~;Blxי|qLQBfȐ!M5#ܗzK$ VBa'BK_3駟clf Q?6T`,\‡bXݸscƌq]-YYH6BV]oY$E#qeuT@4(+WoZƷy"y60y ` Æ sa%$KY$("(#$t5pA{?k͛ړB5&:\˗KH2|U6,mdnܬB2[y wjV&6k\${)˛,l^2c U;ᚲV 5* (:{饗osQ񜢬i)Ϟ=;8;s-$!;gΜo߾ue2tL,\eYXիW;v,"IСE`ň!>edz" I,QR1lr"i ^{0Eoƪ[hQc;3}?i!u;a*~`ڵy"U:,DkºÆ~VСCW2T\+V'pK4hP',߳:K. wI!ɂ;K͛ ;vaLՂYad2ADEGsIiIqC&swbui&{TCSa[jUM c;bbΝ.V6d|k&6ve<@[ <_e]O>Nԥ5Prd,B5lh fnnv_'cgqKeZd%ɮ?^X\";lzeq'(7ܰpX0zM7 {rX5\lٲŹ},X ,s$D jdk ZX"2ڵ1h.j,=Y>ܥ6=Q$c6c7}G\JG( fPasX!Iz,t|/'j"#VB<Ҍ/}nRZM,eYw$$ĉM1xN;$v9R@sī=lUq1)?ϕk;?PT OgƵq&D@m DS֟YXXC+MK 9R# p- 6dfLэo;xE.Njx , K÷F3ׁeB+"[ڜ6m Hnݺ%q}Uq0&y/GR<,VgޖEHMaƤτ gQ* YzzLj&guc:#D2XD2qC,tWc0l[YT®Sy<̝c9vkuwIg}= @ŮR@qfm WE܏|6w0S{A9Q6H ]XD2b([烢Uvagݻ~V^VO?E J-[3j`j۷owb(aDQUR&(IKsaӃHfaC8?qiG0ׄ aa⿇mX }Eo&;tMQ)iב,5!u|'~g#JT_Q.}i-ެT0EA0u򈣈RJ E͍l.X0Y 21< 2 ,VFseRtX{rB8UM98BE;͢GsZrQ,_ VI) YVuH=%QcbϿp3OVC*8Hƛ㍱C8͒v851pLE-HGi,|<ƕ]$W?_QTŽ-JY,5RK2`.c8ZX>6,&?;.@wtQ%F6,qB 4l!‹1(,Xz)'fUO/"#5(lٲfTˮzԌ_̙ 6܏˴xͨ'$Md,K{bNf!/x;n H#fm~H;_{kd Pdڮ4͙3eEbi5X{T:k584ED\Y"qiXq{ Na<\B 2,X FN4)qZ_4e7~ lSj-ڗf c c wEg4 S5#\ W\}T,mPJ dӂpIZ/<]q*%- ׾ޚ6)aa"Pg4lذNJ>SZ!Q&J5 9Z}Zb%(F6],a\zU j-X,(&J|>3)ktAH^*9|qB? JXfc)M3nΘ5kaI\\I?,z Q w*hKF67N;jCFV~7-B/z=s{8lM#ϼyĿgϞBcw5ˢe-JxM=וIMC?9oƌ,QeJKa@NX[~|~7sqqWP^7[Z!duN&^&ޕ6gI$X%H^pǕVRV7H j,dDͿXЊ$czBaÆE@ zevm.GJҮ3 bR L3!]m\1U+nqB2n|UzZJ&eOn-:YBRduW`1۷ jUŔxA&" ?HfY87fwnP6 ].4fjO"JGLRŰR>QX YC -?I?P{ = SZL eIZVllcM}iYJ+NHfV1#ήsY,rm7&dvLL^Axp30鰫3;5%x8zש _'& 9!V*a ,,ZXaԒ Ϭ wcD, rM3&B^e_gsbF%aBW[7Y|wXبYS¯cQb4٩TOZQ愤I)SV9`nFY(lZx_aOQu5,9$$n&&LvB΍l o,XpS0FU\QFfg^:v`۳Ie%DvqG>?W,ky "-RWjBawƿtTH>IIȾ3qDI|~Ip|VEC#G I<>Λv|>6Hrs Iei,!jEx ) BB w!8q + BB,PLE터>"I ҊIqKv?1 ;KğailNJrE$b ,ׯ,݆Ľ]k-AOҸ$ ;I0>j0ZqJNyVw37vLÁЪC $1͸"=vX=FR?5e&͒+_!ɂa V߲:B7ܸX8˄o~)r,>r%,\\3G~F(પTnr.X|7LNYFXyrx>kh,dj5eb䚵YJH6X"yZ\WVN>d'LL+AíZfeD$&㏫mwm**Y\ۼAU->1 X'}-H4yXmQ30of_+WXW%¾#/H)Lpk&yvQE`d^|yN%,>PXx6s64_^ =>cnt&䒸ֲb!ΙPR[?pp 6sW &cDe " eY`Ӆok'>1n}"fD$[ ѰZ{L,l}$Vh̺%kvibƛ5F`xE8ܸ0ƿdzTJ;?ZZͬYBN?/TA@B`8H5vJT;w,XK=:D7&oB. e_YAD$[<$`bbrZ)٬($[DB!%kb> F^nEHYsp;ƶ1a%0x}ZkPJh+mY/N1`2oElr蕜60Q>}\ X, 7#"{vq5A, 5$eUln\w!9SԤ lMg}s,Bذ ,Q.dAx2'e|{`-b9m+R AI+˖-%%b-$AOK k*kY[nAӺH$7w$LEZ<&s\La8/nn+*79Abe2迿-bO8araaq?kX4 t5 !Xqa-䕉f^b}Rz`iJC7̷IY^"`y嘳lCg=AfkaRlJ۶msI#f\pɚ+,bmqcQ@Da-&g_`KZ1Aɤ5ciõaxlò+\TRF^ܿ$=eeYlH6#/Y:Ay&+iF@7B06Ĥ°6#2EIHֈoOP ":bv(ɼaWUoI5q\6ZIdX=ɭ7 &ɨLuvؤ ~Κ){5^4'BW9M7^,gӎ5k_X!%! \6YUFr]r,!"1Li>7etg_(a ڤ,:qY'Akuϡc=EkI|G/尠}tI%jUѫ~ #lbfuo̼Fb$riaI$ ,~ʬ-z`4 0nR"O?|;q__t7k[ܸN?1'>IP7ZrXHEZ'x^u)@i!Ck"I3ߝ)ɞg?Y4{}ǽHg+^2L}n1G;.q6u^n>u-?Og{{|cské߃9xt>k\=_3G]6 m7TI Y0>cB̀!W8q c.ٳ8L ՔcyQyhFR :7|6M^|p]0ip\~fGDkqpͲk[T Ī89sZ\ƼSOue3anƐe*<:xrPXqk˺vb|&Wlݻ$$sAH"9 k%`QD~ 9e7͠Ōk‡?~zC@1b B "cŭ^;OnVs?01rssuaA]@mQ 6J,>l'X$0މY3qE@ _\YJPEը l-ɴ;腬:%+ k%_QX.\)o. T41%E׍Wf-$ /t!, 5k֤=`"B4pZ.]2ΉF<"0|eMyJq1 QB2g3sD9Ij L,9ӆBQ X_,?Vj}n8B`R=͛n7kaÆ*8qb95nRS:DRl3J4?t/Mc-Xni,}c1TK(qEr(s.manXu"#ȢLKH,$W_`b]bX B4BXy湅x7T*&8ۢaܱ!FpZ<[N,EBjnKݲ:9`+B$iUJETERWI! ^s9.RsU ԬDAqqKOb+^' |"ӀIVj`3-ʢ\ps1R/ Fk^d~[ 4!ʎᢣcEc ve|sY$sgjX\@$rCVW%Y Xd nq)Iea' qd⠖3(TuBB2p#1Q{[T#ȭ-pC%-%ʈR in~` eD=tPwݛ !HsoHhF(E;}~Eehh I-D#8Tk\@׵I]}eЯ_?W.G'v,\235k뵍5܆t*LB$Oz\(^L+ ɜ-[4ydz;4C [ N +-d3R"D#$qW&(3$qSB4rki' ɜ@kmŚ9 !MJ40h-wKTed.[,Um2ѓ@! H%$eC19( (Wh2'tgF6"IJ!(ӶS`#eON{ؾS\B3fB!J,9BB:q4{n'Q`}+"!f t֘?O m^g_`׽{wU˛%JnڴKY!=XK:!,9$`b7|ss>.o02e1p\ܢjԿ0e~뭷ܿ$J6 $.)B I VI0Vկ=YFai lTv/ʦ!I,+ƆB!!)b9r,% &2/dV͢JX> g[ɚ.]z}l޽;쐄eͭ7 p%|?dȐD9s\+B ^. _tb}{#u'p*?ߝ~N֮]>?k֬q?SX'`#׿+qWqg?s$$2|IHr-lP-BHH6) }.9_m۶9X:uj/})>D9szh!|'_XCZI͛6wTd+_hJK韻]$ Ao~3x{B:λ24:gǎ*^Xn2$]!NAG6t+BVC:2i$gMsM(( ԍzY2QѐTFD݁(#)BBR@/Kmܐ%J!BBRLn}-Y\xq) !MpUy睺m &%/BHH69X%Y[K~\!BBR Y$@BHH !B!!)B!$$B!B!B!B!BHHK/of湡z޳2BBRTe? Q#ǏBࡇ(Xnt,_dIi#<<3y'n.=mڴb9u֬YТO /T+Vp+ѧO ?n=3r,zfp.sLϺyW_WO1ccǎuZ<y?Tp}+W;-Rv,Ȝ\ ֯_I7o9wqG~e:,{o3q fΜ:MW(gґ#GVX 61Ů1qyUEL"e@kFk nvg}8 b=оHꪫxy>{M˅^q :.9 Gv Q cD }+'' 6\rIǦ1a=#t@Q7. ]XIMp.X5?xv>Lɺuq"&]W[tXY=X@}B$,K/Mpr}J9Xkt]wk6—3ͪTǒzj'B6nX $,,E|!|={܆K5˸ںu;Fa9Ba;C֭^^8׌M!6Ĥ2NSyG< cQBc&4ܼв}eq/yw,9_HHXGX /^)ɉss>ܹ?&bp%3#3-cLݓS+ "I>NL؈)L&MrcЇ>$1 犻3p\-%=O?f4̾뎯օC DܒE ID:Dd,'#cfڵ~.#5V "㨣rŠsD\!<6iq ;ÕW^D4!dPg}&/n N;4yqm978ݱ}6m!=|^ x*Yw=^z0W9BHHvG͟?$WajW+۷o]cJ&]&8JcPOW[Eַ p ΝnR [m5#<Ӹ,IYcį*PBL؈FꫝsQ0G 1^X|@"upd]T`%M;6ǘbKڅ@p!$~>$ DKD΍(=9Sk$3cj+CmΟy6i{M;\ضm۸Ǿm #da92!â#MiY0}7Kz}\@,XOq"~ف3t}X 7i&I'{v{[4F-#|眛 $e9Kc=+`a7l7"IH"=U·ŗ-c5 P| l#l9:^͈S D;Wǚ,nuƉ/`jejsZMR667!{jv}b>;I+kf,^~+JHH*0I3`5c1'f&c*.`%&,7ݻwwdrOY(5 Jyc͸}11* 4b)ZIJZHBg6Xl#ޟB2J&`M2 ɂbĢN4dZ ce6njU 7^EXbZppղcFzە 6_*VxSV>7# -'ַ2cQDHŶ֗B /B{Z'(^|xjI\yJM푘%%I6Vc rW`oFK"LIMM$|&(GH`8`Tl L@3`XdVkAz8VܨV$N /$Q0yfE~%Ih/Y4ZBprlX ܌yDUPp}YXzp</ XHz0f*%&e옠$둤5%ǂP WQZ'Z>SF.R|Dvgoa8|ia~{f v#죬n|vceՊsmjlG6ΕOJf1]'Hl&)V@0!GY;, &&(kX“o1`5Ьqv'YS'b˸K#" I_(0X,^d>|$yޝ7kEaY-X0pTG|&qu$0b]m34l<8n$l@Cڵ_}P2wF+e&HBi={ NDwiy _{Q.B8ɓ%$Eix饗b*$$BBR4O~]t!DA,Fud=#tqIQB!B!B!BBR!B"Ji#~gzy.AW^,]4իK,oW^y% aʔ)A݃|3? F#BB]YdIpuk׮u"Cpzhѣ?|pQG_|dp azJtAaa"qsku צ/vXc ,_E &B!d;v>X <m2u i8~K+#jEk#cǎŸ1b^cI'8לG|_ij28nBњ"{noܸYS6z%*X)Oz5~tp}jP$#^zk0nyCV(ӦMB IѬ`LJ+q໼˂Y^ܭw|u5{"hp_yUweXYd(]<֭[ ,-\mǏw񩧞 9rJ7uR75f{ngAEqΝ;S%XŋVt8#ɸYfMm۶`رU߃AuDY7IBHH&+N6;YX|mL IzeBQ;rm M3˾s|oE G%9yvR\h7Xl8cRJbbM\k*ER%Ȍ aFx۷c^$Wر@,br-k˵FxT‹i݌?B$>+.Cs/޵k.h8yZExJe8Xa]@!h2dBF8^DCUE3lZB1B! .6$N2TB I!b/H#RR!!)Bb |<&Zӆ;, !$$BNIY. s%B I!"GHo'_!!)BDBwskC]&7]TAw(-(&>n8] }/Ř4iR_(B4!HB+SߋB"(-Oy䑮O"BBRx/!(/rm !BL") xWYf3ZsB\ %e |g\<0sL׍(]ӷoǷgڗ^z=(volff۶mի;'b{.뮻:Os=וBHHp . <w ){33zhl kw6rE[+j}`ڵks[Ç? c9&"*)ʽrJw<܋妬nVVf5;+oW]uU"Cu˖- ;<݀B H n&!/kuX`QF޴K*l-Z~ĉ=.23VCof%cFر5eJ9`+)D9Eyw#8sp]wu3> c!{_~ٹ^XOXowǭjytP"K[[ouD\;fwMj=6xr{Ai">]*>.&bV\s bX+0Juw:ҥKKu 4C^o/. XGH7;(U\ŏqοYŋwPޛc\ BBR,qWCL3p}+iذaM,X(XO6ሠ4wlvgt衇ydȩSvK.ٵ@_ ~VўU !$$E=,e wƍb%ĢeOZ5s9gdVI\X"- ]?&Uf35HI1&$yN^ب%#r~[! %]= ;cyܼy[p`P2ǃyX&v6V=j/uqNb wC2nLw#Qx VCb+^X "Nʆe([`%r\KcBHH=.\҈jՈbaQA1E\Ns!_9ٵk`ɒ%wX&[EHw_*\\{O:9!:(H^*"4k,s s ?'QrMռ 0Rn^\ I΅9K !!Y:Mi&W.LF,bD`!!!,1-+\($Vӏ״^œ ɧzʝBƌpq̴iӂ~A$V 8 ')USs#|^>h)c 5W҄0b&āBMBBpH4@ZmK0ŝ[ٞix0vi,+n5qk7M1iI1)dD_s57$弱B"}2e6wUh{Ig=:ĥ wm`uyˆ2 d@mq)ˎq J!ğ,YJxa#Bea"a-5ph>N}/_tGguV' pθvbɵZ@%%1~(^;a((k;L2$aWso&{cγ ="Ѭ0~O<Ė9b)gwcf}˿Q+5tO9*yψQFu=}6ak dga!{ѢE1H^#D!d lbMi%Ie9aDQ?f8FL9skG %AhrgT]k NIAg5(](F2%L4A ?]aeE@?oٲb8evJu!"2q״p)2j>Z1cQĖ\E`$ZmIh$\̱&mkGQzxS1eϻv~RXNkXp1]ZE2%n)-1}tCE&e,j ^g7l c-LN<88]!Ds`Itd>e†BXc?[w'L8cXNJщӌZf냁{@QhСڊ%1gs+ͻ"[#(`Ģh52g}:GYբUHH 7acĵYC<ƭLzy/ U&A%)uV-dV+(" sjPQ ` ≸M<)k 7 N,FU/NrM IDAT)Ά2hkp#s6B7 NR+iҤI!ELVNdkKVxv+yŹpMy'p\H9'$Ym$6X7},:,N{\\g\檨!$$E[אfEX]+qUW9kT;[[ }qa)ڄN ͏zIlFfAgFD$qa2\hcWe@\ۢk(jj Xv.vy*4"xz%Pr Yj\Зfilg3˛`T JKv76WĞkzBBR!J $aq’uEݻ]/ηZ(3 ,Va"-'n\>dQ%יDV<61$b¸w?tFhTT#XHH !DB/ 6лwߟXzuH:+O FIJm#G/ئMʣa beHNDbusT+>r{?vkE+bu;ސH"Wf?㗞}a}EլUp b5eĒ˿ڽn(h8x\ KVֻOp`?cp >|k/R AYznql܅ emNf,djXl1iqqm=B'H(L8I)D.B,B!BBR!B\BQԝ$ R򦕲zWIb%ʚދxYfln5MBBRQ,ydڡ]Jn:WZe< "$$tU8qb0sNpAիMGj Ed+\s%y]w9 JUQ S&,BeP^w Onݺu\"Z|, [&$'VAKBBRLFq+81kS6~#6[<[n VZ./ܹs 68X# F&sC SkhE*RJ d޼y:&m;AlަM}˗/wˆVw֑a]W7Ox58/E\!L}Y7*R#ֽz y?DH"yZ3BP1SOuD=!"CqX$bшpG4:~HB@"rDi+ ɍ7:$s/XKA"뮻SXqK /8!~ nĊ"|b"f^ ;̉qIQY$",~V3<B\ו$JtM[Ҭt񈅓N6c={t He<$;sBHH !D teA0p#BȷfA:ujKY $e, !$$A,ׇ IZ6B IQw¥(#$N%VHL4Vk(h=T 6v7dA>}hr-ʦ`4cwwީ1"BB!@樱# -: 5cĒIllS+D!ƒdd6wӸ,Rʘ7Çw?՛y^O}SNZ a̙nYƈBB1-΢E8m#"i@T@xC>$f~^M7ԻךϠIϫCsM(CCI^B!!`ED0LPYb~^-EIZ6F;cǎM$BB]!62\dmS$4RvĉJqB]aB$cm~t`ԨQnv&A߱q9餓\7]&L9-uPd $;7&nSD5B[sΜ9-Nn:ō2Fx@\Y,7RA|".ϟ^G?o,\Inr!9r[K r-ukIX/-L4D6(cc{qD: A!q贂X*- ªm;GBѺȵ 7l܏D4"K%S3VI 7ntrm1c9HDƚmIYX'qs3f|hc@\ڸOƑBHPD̚~c߾};OXDkƢhc|p.l'm"j}m qYz.BHHVZ&$acnI,M\ׯw?S\6mTk#cM 3<p%%B4?rm,XBI  ,O= vXk]6lF%BBRb*}pq*Mc'\Z*\BBDm!B!!)B!$$B!DQd @ɕ#8b?Ý#h$T0`@| !A8e ?ۇ6B!$$EPѯ(DY77%BB!B!BBR!BHH !B I!B!$$B!B!(ՑBp'"}'غu.Bbzj]!R/|AAȵ-B!$$B!B!B!B!Bem__N?|˟}<3. >h !Ȅ,my饗GW_\yѣ;:k ; BBR0?|dɒ{ugC3V'cƌi}7| bD?̝;7xg9ߟ!Bx\̙3Ho8q/B?:w5C z+^yR/x>O . ?|'k;Αb^{mpw:I(B]ъ ?^zip{G~FhY&4hP?~|гgOgCXM0q)S/8=o6'z׮]s1͛; OD‰Ewٲeg\|ʼnBGIђ`D@`qD 7O>̘1:&Ys[n =І/V4oVꫯtaeXn7aX.dD$e bsu߿ĒyƾmJvӪY퓰uV7ot=W^|w7<)SO=r?C1>xdo *p^~}esXX %N,/S:Ar5k M7̞=۹+N!Z6lΈ=2o˽f ~㎋G˿K77U?: w~s ܸqBBRz"[Ew"w~FTb$qI'EIBoN~R.AurJ Bx'& 5裏j`a1wG?v䶰}{_|ljLj .Y%IpCD'x !!)D=L #%kV;&4F.رӢ9+VH]|'+;"7HZCDX5bg͚|_ Ǿ?_vK!EK 7bĈheV[\oں֜r)\B l̾/m۶9 $ng\L%[kۿU=p.҅(Hzq7!CdzoO]-E,Fd!Yx,P֭h V\lٲU4oė}v X']tE裏|I6?sZ mb w}= ?Oh@JH Q,27n YEX`ݹsQeȤcV Hv{\Е>jVsYY&i'Zy??9kgK ={+w}HRBR,[';w 8Y-dF38hH h5qw)!)≱V.ۯ?Kk&6mZ{\uU]71Q、¼8yw͉b$Mhoe- 5ưآ67ւ,^yVz8aZ ,4*RVcݺuR'|x≽ʄqaE|d GUsT]4?dS!1I}G #;ٴYMjs{U~HXoFAHH6bk(nm&-$Fź}mDCi2@,"-Ⴝ]5uV*99] |ч+ 1&w6KjuSqpѺ`Ec̴;ɶ>=^)-ƚB@(6̙+5 ]6Bnt j(^0meJ R#"Q?We=}CjkXA א-ꇛ CZ#$՚CTA<(/qr[k=k; ~3dl8ECY" h8sL;۞O!$$skԩS;VI,;$$kI 6|>$aZ 񀾘kßar19,ø)"LxF d燥ɇ88,MQ][6]v- ] #\ m!}Wd}=ϴcS4[5f8I!BLB X+qk!Œ F;APSC0%Gul^_bY؄ ׿uWE.%}{Nx+Ape""IPZA7έq1CW<Y7w7wqzkӉ/26d["; b &Tł7"/7v\l$nܹG+S aTH"l9fk&P]߿cēA,8qyg]Ep(M|^1+Y}.ֻZ7qq?0G I<\H=I 2 8m )Z@.;kRֱ)$$[(Q. gώ̾MM8g$ dYZY4on\|5(Q؋}I"9db-r.+G8\SM%sD5 |EIzXC_f!{!/_Vp9u#/&NÚȥ %b8da}dwM!!`>aX%m"&YE/N(ehnp!Y -ޓчU@;plgh^]t;;V0Xy"D6lXŸXJMX!jJ*j[''p݆"EEܚd?Ӯ?DϔDUl59a%[ ID}pm'ވ}_vm'K%sECM!!`$ޣRgVWҒr* IvjIEq`Y=dȐN"Y)bl' 1Ia)Z)jN!-rTDl bQgi}!Nan3$1bCb4/VŤp1p|pQn-*yM!!Y=UJ!$ kW)c@7V=.& n~2PE*Ww9ވٸ ûW1B\X|n=5Q}_i9s"]b3֬Y\?⥨k5~wœuYc]čǠDZa;1sa%ߤBBeagݳgDH qܸqkVFd>.F{TV+%u N" A>jJ(FR0~%J[A!؆^c % LnũJvC'iBe~?7qs(+vl ɖ4ۘ1cR7XJoL|QXQի![jUqX0y.x+Dp[YeEdkO}:~%'H> gd6 ׋z 9 3?gjꫯέ{h4F LIa\FoS(N+ :cL`X >29BHHop;Vsk`LbqP:kc I!Req5WK(OS &cYX53/8eɊM Vze{^7H nz1ȵ]0dW#a#%M]љgDPֲN""\xLPʸn,`IJ!5d`;y>cΙoqM c +zd=ge<_!M`sgI1,YqyMDbH ٤̙n:;oϞ={h:C n\_&Il*#3ሰx +$NJ/`Xoe=_!mF(QZRХJ}CI}L!v0kIq|=z;1$Em"Wi(+Ia9{D&kGD$JbjRh< V`ec{/F")a`D/!eyiFA,#%H,Y;d] )ňeq^ziH0"8\mlH6IR&7 ScXtG|/hi>[O0lVI1׈^X)#'\┿hPB1`-M=Ht<&OqsuX/B0lذ]II㭷-wYYp@}s. g$S&M<#8KTZ.P,Bٜ~'w_yk!JF7!o~Ӊ(#5$8Hw.JN~G*n<QXf1B~fBtvټys- 4wbf~?k,e˖Ng,YIl !!)h)H kuٰa.P{V<W2"DcQ $u.:,<'I"VpMju I!jn5ձFT8A!Ƣ'~Y] %Ư~N8BBR\ؔ!&W6.nE5~N]i$ H&4F呤\$<2|g-%n:mA! ui-uYϵ*hI6ׅQ!!) Lk!Dȵ-B!$$B!B!B!B!BHH !B I!B!!)B!$$B!B!B!BBR!B4t >A߾}u!H{#B9?яt%u B!B!B!B!BBR!B I!B!!)B!Fu$k_^~{|3EI+w}E7|;X+/-4ֻr1U* E J @Ur4bŀA*R @AV Bx)4hFZ_~gfy~Ɂ=Zߖ[r;0B!D dFvdvYgfϞvܩIݩ}YN85B!!Y  c*)qEyN۵owqj!BB~y 7ݲ{u/"N:$h"5BQc(F2a95k㏽{EZXe~edfkƎ K,%BHH/BF ~b*GI rdY?n…>K8BLiS,B3ɘs{{՘B b wEQVH>|{'jεۼys/&>_')7nt{amS!mFԉot}uoB "iӦF6&V0k 8 :ԗE*"qU?ϑ$(^x[G+"+^T!O?[67lؠBDrTDb>?PnиQ-[t<l]fȒxD{ 4(ﵜvinٲe .p8qkӦn0! dȑ~q_uы믿>w[ouǏwW_}_vM.!"E2fUzwfΟ?'6H "n>LcE$!! K’@Y-Ddb|.䒚mIBBJIׯ(w !!`0aO@{55A9 `Q,L$ʛoLB" 5W缸 Y@:u~g"i/xE,7mգG Ě5kz.T5/w !!!xB4[46-|'L*&~7f~&ӧXp͛Wq̙#b9(dmuںМcV@@-t#pu%J,7ǭZBE xhlQM;%I^V^8& nG€h2?.z,nmV$Q,|~ f­t " A >?-Bɚ`4iB@!Bj> [l5_ӈ[}j^tiUP8.5b{, i30 1cZ!H b$ '7`pYOBgϞ /֭YDxk9 ޑIB#pLYbFx7.H W.k{`fbv!M ߿~`Uzeq{ˑ.]$~gnjSw}w@YOH,ȠeƋz@2.Չ8,0wy[9A-IBSlQ1 r~7,3җ\gV+" AY )YOŦynDgXVƽui6ŶΕi4{e„ fƅnhFtw Q"Yf^}U?'A"!X jR'{w dU f.*#l-,V\#V`|nR+L[36ڵkuLibJ(CcT p9A_r|!yc1'xd"o(fΜg>;SҦ{/ XS̰ 9n֬4EakCxG ,` (.$9 t\ jAH<mJ@|!e2)gLLzӈHD2U 6|h!޸ ɳ$Ս{9_"DCç~Z,J!b*[,雰%3B1 lq|dY Z) cv=XQ饗^C 8=gqFeZ"YF`l2Kk氿!x2WAv10@": Vmu8 s YQH`b(ĚSn+HB:vV e 5<84#bc߸_9> Vk-@OJ2oՠEG2D${[l,ݻw!oYJ+eA</^|{6oޜxi\q bxx6R4J 9W+ &xLUT)#` :²wO;jVk՘lqa9m&qBT v~~6qHJX$]aPTlF1ehb(3BRɓ'{+q8L g0 u~OpVU|7,{g}w1 /C+ ýld߲ 3ax ` O+sjYS0n[(s5Qʱc-WbL|I&?&881LŶ2 #,ee%- Ib\ŚHQ`زƿaEfQp)Ď"J/ @v"]BBv~k5OK^kMs,y&¶mmz|Y"jMZ魆=BBRT?O%[cumڴ8p :}g}#I߿}{-ZHe[x=s7X؍1L~DDI&’9rL[8v;vH;ȽVCܯL۷$e-;c ^2vmJ,B{{~QxZ0GBY3D}d|w);N9u~N"ܯvZ&$Eb$4]*BYi_$۶iC E9d,{͠e0r IUVtrTJ1=Y'y&"q-u}Y2_m0&g7(%U $)جxxr1u/)|xl&0"Ӓ}9HC bN -Dٳg]H⊍EʾQҿFP,TY=~j9Fʗ['z\RΆL'xw+r0 9sfٶMe{.-C 9`LQg2zh/ .$$E %KYjēDږ\YʚT;̷n؇ "ͅKٜznQ=Xuְe]Q`y$B66HP^4SqB3'h".ɆuXM< :X$bnADۀă:\!܃w,Բf[[qp qY61M HOI )FTedr ⣲B7HBxݸBz]ke , ⚾G +RHeg= K!$$E !K%oqPf}dG2N )e9La b{sX" D,GM>tBX9q!I ? bR4ɤedkyԨQ"iR1m4_v"(2ʊqwAUwީ[ [fdLyƒ3Vn-@ X rnEPYvm"k$A\[\zi1B [e-Mh |޺H\'4Hqk-vٲe> C4k`E` F$& OL&qh,d1ɑ T&=\paWHҥKLr/S'x߾}+n<+BHH23i$,ä ]\[)')L>ݺu󮬸rP WoSH6^jrǀ-BMb1K{ꩧ5k֨cw5+|bGx"իW}#FF)F}duz/AԩSESN߶EZ0\b']adi. 5w=U !D}J5 Ƹj.^M8-1#JdUt|3<Ϲ{챱Vx;lT[MTM6BƖ\D(cǎ,7oެBHHfap, ЖɘbZ:.1ɀoBrǍ㥨iի%".rATd1q̙㯋Jb& !HLSbI$HDF%Ia{2w[ǔLI&\ ;X q" }X)iDLdح}B ~>$s=>Ɗ5Ԣa̘1nƌ!d! |q 'U{%noqZdA$`yځxQ''UWz#bg+4 JY"L'mJIDATiC3>^#,,m% Jg9oIdQk>o޼ğ OdLfͪ˝p ui<vwXX%D%N=b/8α=|B=tS?cǎs΍{LV1}v6O~5 Oʕ+dעE9x/zӟT7ڴi~u q",n߾}_$3>}>1zW%(-JIkf[1o+]Hajqt=+ZM5ٳNjBiC !*cNq'AtE2vZcџ''&7B(h Z%_?ηB!D d*0a@p5pȊ"/FBbm )/DU`Bh|Aq VjL IQ5oH{5BTj#[-VADQ]'đےRÑE>jwom?0qvg}mcsV'Ci>= bO,zZjUkMs>$^z饇~gHꪫd@BHH !DbHB?l_38s1O-[&z/.N}{;SRWdEJt4bb+M5ך|/;:XؤYofB-7N!* UJ~i%F#)UPW -hBǏW#B(~UM 5@lT b*ka5Q^dB!B!BBR!BHH !B I!B!$$B!B!B!B!BBR!B I!B!!)B!$$B!B!B!BBR!BHH !B I!*޽{B!Yd[h+FB!$$ VH~ N?tׯ_??Q!Bă5G^R!)i&.\6l뭷N8zGWB!ˍ?[g̘W_} ((7n).B9Av?7ta߿J":y嗻3gфB")j Q vzO>duNB!Dzl#jJ7\{aB!$$E=Vj,݃P>}zcH;w=wÆ S !EBmQvm[l۷k[-|׽Lb裏˻ys=B!{'ݜ9s"fwyyGqӦMsgu[x-Bhz55}x_D'xs9 .P !")jlyؿzPs=>\Rm۶믿'׮]͛ww !Bu$E`nQF%z?Dp(Dl%5'I h%VC !dq#7o!2W um۶]r%9B!S.袜cYčzy/B Iġ0ѣ{XG\*#BHH AR|ȑnҥF!"7G |vB!" ^}M !Bȗ^z544={QB I!r;wꫯ|ͣ>.1)BHH c=ׇ~?ԇ;ݐ!C-B-jp-Zpo+իW=wL!d_WsB[lq ,pkݺB I!Yfsqwq7#DER=-[nQFyk%q|֭ވIYxG|rO5mڴ3sL̻s ?͞=۷w?_{5\nߞ"hӧ;vl 6io17@07{o869s_3m4׿o|owt`?y)X~}6!5 ԰Xp_\{nժUޛ$[jFɀ n#>5kڵkݰaê*;pP_s}߸qш0 Z#|Ig9]=A|~{/7X+V"=W^y[y/[wgyc,S.K2 XXvmy38ݵkJ$穧r;wsgB9HE3!!)D6?qy3 "|52HX&LB51cǎmHtfTf8n1Lrm֋8! 8iҤ\ƶmۼq)yu]z !hŋ>VPh`0`@A(j[nB!'0rYJci9Ͱm׉qO 4rDg02GWlЇ<#*?_m!2BChn5'z 1o7tS62!B8fąj(dp%sXI8EpaDz|@kq⒤VB׃%9.⍾1wo,Ο-p\'\":>pZص[[ѿAJ;&wX#㻬$9k3}p|0B3xh`6B,D@ ECq~ NXrYzOyFµcEaݻI6 ~؋\LGv+Wˆ.7 AcXgܸq~e'#ܱcGΘOqxxgX Y*$CpǏvٲe[nm0\' zwr\[߾} \й/M脅 M$ vh7hڋsG|rL@8Ck۽8ڀu7c2wnW\qwfн{wV]v`Ç .(K.uo?Gbi W^g$9a#{>/:i7w]wJ~\BCZBmaⱬմ1bajƬ@yPp嚬ÿ́W&X”IKBIgl0n>&o&ODY"Øԁɘ^CL2'N,~d"N>w]q@V ycq7# xϒK?G[,laZmq fA봭 o+M +mbuF'v7}? i[D"{s50zז,-7[\H Q2XΝ념Ţ1`ꇽys/&@dfٳgO\6bLْ29u3X"k"I&mÿ̈́e45[C=OAuE %LB3IMQ{pW8裋zqL`pRn v nr'rhY`)x{h0:M?"!@?_6VH艛߈1\j1}T$KbRbDoρb7$^` ں#AؕXDq sgru3׸+7BHH QzϕhC,VH&c,1k9]Q$BL#ckmȶqaȜRo GuJ„+-.f7? ↅ_\9J,zhCåB>(%Dd7*P 'FqА!$$X$}Q J8wy'bx,KߕĠq.\ e'$8ӆLI!/`"vr=B-2F4e׸~K(:y/sM)/g}-$7Q`1r29ŋJ$mgsx#_OpْE6ߔQ{6->ˏYI{A1db\ /$zA^`L,iK? Q jD=90Ld&0 J(%$2Ig !(ab3Bv/x1(~͎,[,˙v$+:u,\8?jr.LLdKjXA%ى(|SZAdA]uF?m8&7Qn#S">_ ~5k۽{ߟyG#ژ6 sA!n>|:u{g 7폧#4z8gV I! & ┰1PL6GQ]>+bCt\j!PIdyW}DE1db +&e:@!˄b}Յ@<- !mD8-Qܾ}*4p]B I!jAYnV(/B Г^WKB!ꅣ*@4Aȶ;r֐L?ުyW:cޭ[믿ޝvij|!ub$Eӽ (DL9 I Yt+#$x.{#BHH odtۮAT"$ԀB!U$"8,M1k GB!!)D6m$L< lmdb6kB!DS@YBHi [l{~D\CB!H  ,q޽{{5Gl(#B! )S4v X*%"B I!K$ǽ{ f׮]>*7B!u 7H dӷo_7{l׾}{5BNk׮uPB!đ")D]vB!"7oެB!$$B!B!B!B!BBR!B I!B!!)B!$$B!B!B!BBR!BHH !B I!B!!)B!$$B!HfڮD}IENDB`jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/expected/Example4.png000066400000000000000000000713001326546671500305570ustar00rootroot00000000000000PNG  IHDR cHRMz&u0`:pQ<gAMA|QsRGBbKGD pHYs+ IDATxדlWz巎wyV0 hɦ&k#ibBFoM]"Moxsq}UxHT7h/Dv|H-p/|nv4Ȧk#<|!NIwCUg< W1^zi<}*݈+Q9*\0nÓ;wsy|[aꈠj4# 9?xrAO!p(ML)EN=/| >yb|t |O#hϡ.ט!"3(fC[eW).N{q/<ݍ!,SSKڢ@ATASV6J"t=luBQ@W6OPON{q o~S~PZZZZ?o8}<{mZiMa`a+t<}ۛCWni=5'߆aLtN+DZ>@H N/&(D6 O<{Ku}PZZZZ[ksTR,&&K>9f6P-FO$YQ(p̧%Z:"/xb8*1[Xj]b*&N03<|on (---ԶD9|e6r" ʑX/W<& )Z:n&CD0vXLBE;`P)Tô z͖Z , ¦`:lAؔMʨ]8M2hr 9uwx wBRp8?B&E ȋaG7%`߱pm稛Z9 qB~f x&M5zu ~EҢo±BAatJ,~'Ti5AYԨ :וͻtKtX\Tax0;}.;8gؽ ^֋ }wQPZZZZ{9p{71ۂBw5 1BÞGe iaQ4+@!+Dsv;o'wLaг:"ΤmZ8 ?&x=HK/D#P 8td "CZa<*Mi#}tbӋ =B#)%Z#}phRBd:n"jԆuFGPڼ?u!L 6~Ҁ,S:;XO/VBDHk Pb3=2Uޣ ,YZ`–IUjJ2fГ~ߛw2!H$XZ."/j)Ppx_%[c8PZZZZӁwûw7 (UdRx8B@vlʀctNEC5Wd \&Pu:( 8K/yVU EU>|ӳ KkFmow:r0/տ]'Pe?KBt,| b5# donC;um: kya=zK8!^݂ABA@ժaL5f#_d(]؄O^b|:V*4tcd0CէjkҙU9щzQӊ$lgҩah6X${tmx3VSPZZZZ?c91ŽqJ1MSiX5\aks@പ[dӍmC=i;l:WUt*AQRIjDN^jR@ԖJ\RRHk±B#&& Y7rыd:arB($$ֶ,$dUK"rrUh2(rw.Mlm5~֒go6>x=,=d;[#t< D5j\zf1pt|@} C rTy^R]U"rFgЃe*|^`v1U#@j}ckatf%hɚBVRӶT9}#| T57&lNH5fU0bkgn.5&{w;p5QUPZZZZ?#I!.ΞJOq` !xDeQ،;% Vn3Ta`01 k9!!Rwvc OP >\xPƳoFqg~Wn<ٴ$Zll  [HwYo=<}vBDX:5</ЀR{T늳g(ˁp\nF}GKAE;l"BB%0b6IdnXM)ϓkg5;Cv5݈wyPGIXKX, 7dV}57yH^`\dPk1|Fs@/r<<%GHN1ܤKTfP{ 9gnk.cc+]nvlA:8V L3V^/O_^Qlk !Vi—4^!dSap<E`-2 :GQ.8@?KX!cjWt(k|ml;}}($6+wFhhv(ӚJhZY8?%ֲ)ء!V JzJPx|<⹖vT'ثS$?|'*1D){]mǥ.0wT <OXg`\ˁ%a !PM;uj+sZÏ\XMMree,=%f)6A$NWiCB آmtq1lt>@Ve$=".~\Q 8Vq}}RPZZZZ?mz41\p0^'h])Vpxy@ٰ* BXrm5֥rGGKr< w.Sd8UvmL:.VhB~.iHAXUH CE?awkKWE%vǂkXjxjiJ'KJ}5`Ra9ː, rcsPӚYBm2F| x;['՞1ޣK?vO^/y"NTPFz"[" Uj]DÎ=55V%Ng8<=; 1p.k@ᖍ*] Uј Y)NͧC#&X|G\mxn+dݨ.2lLcfx J4A$઺\g :LU)&KuHmz>=KǶP7'G[Q>'hB E+)yB05e*VZwY&aA%]MHc :BaK`9`cc x #t{M*5bhˬ˄aGpPުLָELJr_ED^!Ofz6Z׼\*2޻c<8W'UZpuN ''+SIr.vIoskھR\JKKK''i.ywMbz~7FDx%kjL҇;i,8b?u?ͦT y",5.0ވj.{I&&3 @RyO`W|o>;::`YʓRF*{y[\-1V乥^9U:me^|Ë+ŧPg2ǁXJޞ (YIBeFj$p .:s$J AYh$x^EV(%ODZdk@NW |&ʪ_ܼ%qcw .!X&0 \F^+S-tcϕ#f˟.*FL8ggt64 2>{@9 4]*ݦg|'9k_~EQ|Oi8>9Ǐˉ<k0m^.th*$1Քn-@Heu ٸ8KA<&R6U]UWWlٱ9xttd~U`(SUUE'ĵ.n? oV݆؁d %NSe=q|s= VXkG]ժ JAwg 8<V~Wg(qS9G"͹n\co{㾔F-&F>CkFәq`O &1DaLb#l̆Ύo~j7 )8v;d4U <Ͱ.`Kt=on`$e? :tL RaZ] yb:q$0].mS4 $#oMǪ t㛸Mg%UmYV(x\k#P֘_\`59hڕ-ܺW9!"_2<\aL*|泳SEx Y >Qǐƿ IDAT>>x;/0;9FE1~^N6%`dJ"U%qdL!q0,%%SHZի%ԕn&! *Ɠ5 x*xܗ_e7=V|@ LO/" [Yױ}%8L+DoX["hOOA3 קJ\\6Y7[l]?_Sc (---d.prCEjK]DH7Eg+ZdPkہ=:aЋ`IwYadJ$0cxfMu0IpݐnL6f+n9ݼ_'o (&)x߻!uye\T,fxrǧ8Il,ۘdR㝇0 ]+t֊p\`?pJǺEEǸ:u9(K$o؎{t4:3##T 0[X/&XkF -YtaEխkUcI2d(e>*AǗ‹<[ }Wsp_4Z`uvIćN`=kEmȵe'i:#?;({;ؽ#"r1F{8?bg:dt漏 ŕk`5,KBPݦ`k`0[`s7)]vvb{g[giiE""Ŗzl s`NkTeGM6srzSt3F!!gG75<ϡjf@)CFr=Wk;h>>[;%tlUԐ=9<ƷW6<=t~(=bXjs}lbo'nKD$etIhOJ/?UxsC0,[#M, ;WŻod u"/$ >J9[h&54jeQ :-xWUY~"+05nN@7 de|Qn:䰴 Z4pRtqML/`/;C<p/c% <9:tjr1#bw+JKKKT-6RVKKJƥ-Q,rϔ =@rtOh*TM:Peeiq/@/QH!$.eK5u`MXN ~'8ٖEx8.)U 5a$yS:1^H`tGTe#$t f96=Y)X^~/ڷ`G.fS|1 g`9]DI$lt623Lg'WS'՞(q5ET-"Ujn~6 q]2&{Z3Mt] Ps,RM[I 3LtBIC !c89; rx/;MM[2x4@@d؈k*g/ͤU 7$ x1MbecL`Kk`#|!~/aCOBY1?:@AEolcI fkB ~oMLJ6ktUṪ qR6~^T՗^,$р4{ Nn"A3T|Nਊ8űeG8 Ux݆Ѻت9avtWe;T]6fG|OI3D[k%fkc)IVsxGE0=ן· |A'IdX+6(EW" <_}&Ճ)U' 4e# )bEJqC!u*[ؐNCLk^!@`8ֲUiL+}߿ ϴӣS e3vj>"$R%8OQ&(% ϒkH/7/%{~?dU|b4c@R喥Z/ }IM-n xuƁ<`Z)siEv"ti@ҕ@l,ܰl?P}[搊s8&nl "G\ 3d-[ W zg6XWknJC⑲DD@}aNw^-ʋC4m^tA=G_ loD5@yQp?W7)7%gV9R)AIPd+wTC(VP*V+2: )㖊"W~%~HŁR8a]}*Z)4dz0;Jr0 ܈./?Ahh QӋaQaDw(Õ?XrN&ࢆngn'W^x GG8~-1} ViO?m__1;s=Z7r AQqp/tzQN"GRKU@<I w<]ZYHRB5hܒ͊C _U }K{V>.nᆋMfZ d s2jo+!.iљvEGUtט_se,_V$ ϽŰ靖O# (---F&!q:݂qL8QLgC7chL&tC,W+/p°W֋-qB\0ӕe(0IH}RKBw]="d}+QZ2We2W^Rk MH.$8dRUX , 8q [F!TxZbaW:Z""- g0F.O[wu[/uq<<]^hk@8U (---FMӢYxK/"M |.E6r:p*$<6;o90Q)GJ.C^ct _T Z#E7!$KRdKDcBIlѨ!S]6_\b~Wo/~ UtL:|֒͹*( M##D,Csw2% ,jhײiN`].ae֤۳[5u(weN Yrj$xtKvK3tl❃*s'/1׀8@W{qwT鸔i˶*A"=bNZU}q|zJ*yA *O˔ʅX8=CNDE|I*/ˍEL/{\M+ &O@9f˟u3+%4;Pm[+$E,O_ES~%Tn +IWGht0(ByCuX ;\JKKKJUת1ckg{Wxm6Jy PVbX+{W܋Sp#v0_$sأ}h!? XT<" R}V뛘Ӂ'j*tORV$E@j-_%4SkYdty.*oW޽Q`bq?QܑǐGmbcszNlt@OlJ\T{OCJ]̓ŬK\[\LZƛvѧ粆2?։ T.Ypqt_!!CaDht`# 9݋U760$2HԎKwE(SCI5Lq;m-*0mW5_l܂d;ga)zD01NwoʸcIi@iiii},@!x!Q;I)߿j8Lkԉz=!MftS!2&!elAj^O4ys-j堤z x}ê" =) JaA^ˏ`2[hH.tZj1 P2(gܿl |p)t1/U])<0][ESL$ %'mJ*I6p˼Ƃ+wvpyL홦GH=Kޟ2PX~yCu% :G ]¨*իCaOM۝M8}p+=KJIJI;֗JOU;hJ5Jk$0M /ʵxgqr>&GjWkՅj9}zq->AIMU{ )V+Y /x^-m6lXaI^Y.[{W:$рIkFQ߯ZB@I9%l_G6<><Ƈq#̒pb%M jסC'iBjmᢑE*ĸӸ|Np|=WWկ$̊P- $%( (---c<]-!G݀GE5IqJ%\U ..v!HiOƥ-{l,VkDm>)0.I0@/}އ^LJbk~Ve%BH`|TeG67J:7- M; AbNgg7a GxN5Pq~qQPZZZZL0xpxBG\È/noFbe~_UF<)<0t~ƞ V/g{kmܼN+߉DtK&A9jX2! <{v>pdI KJ? R|-dqOcd3%a4H˔KMWq/\A P c&i@iiii}Bu.k7:>dc]M`X5FC[ 7 'jq<[;Q5d˜yop _hrt7o)U yLA(IMzn=KWv8 ?#)B-Eby$2pΤ*е%YJPNE%#ei’+JJKKKsQ[꫷Y|^J,,ٻT7j4}ղ-%FE 44#.`2Vx~W^~׮8=lvި+$X=! ˄`'ܤGg9*@H5 TGAٓ{؈:1_}&D-MTb^dek7se7nUc*]FmZJ5tej@iiii}>9>wߺ'O㝷Tj _'M7_\ ݋)RUU8"~3cՒc?Fxtt5a zX'F8Y.ы| \KzTj} - qsU% ئ ..ݗ j\&_HC$v$ule {W_xK^¬5[>yi1O^͏*4>7I)xǯS/?es?`r1v&lm-.{UߗlqodPՂ~tMU6>8!QݏKSK a3"ctIC6JJŞܟW$ik+ /~9> έ6 -Ǩr5<؁PZZZZ>E{ta≂h3 9&J2S٢I OqCL9دU.ګ/ 1aX jRQH!A}w*CS\ϗ"Fv>_ٟ<<xk_E ,UfY}]}<n/HJKKKMGaXK'$MyKEYp Ww%=~2 I;0sơk kJ+3AK{n==|wp}<׿ lq$U|RuH+`B\2_W~S7v!ݿS~#'Ԁ\dRZ霤\ʹ[PHxے5TmF#['(`@XytJy3[o=ۄ$bankRjeQh),Zj I bؒ$LIf&gַv?sM̛%䞩}|s^J ;_YB&.)ed*b/97y;r^>яmw|M^]+SʢEcyR s.HbGOGKeZzHni&ƗVdK.!9Is+r̬DHSئvDz4P⸮= }(YhKK$luʼnE.Y^fv[}^eI] \8Ȝ\Rߗ\zk_#{ λk_|CMOD͑pqNIS@mBY\숒?\g*&drrR.xXr~ۭ211%\{M^tÕnTIcPK.+(ĉ/}߽GjA`riصvEЋvc kaqQB; ;-14"=*`+%3X.ȞAi1 .a,={% Q )ST 1y7^w\~xՊ(]Ib^V^Bef#JN"zcB(fhEtx*La[촢a/{m/ck䵯~\v~*9@K./[~LnʚbG 9+c,h酨TTFՋ6|ױ p(Hj"=K|eeFYNIAN] G.Z֭T& (0@ uXaIb_x[#񎶯RWtH7#Ha+&kr3%7\L(JNT.i`3jҜkʞ]{ʾGJ%2Qs(bNH()x A ^R}GP  VUT8(Y:$iwUcrJNSfvlAMJebBVOKuZ)+5X 3/ #%Urb;לnS'ܽ]梼e/l`ir%\NEȮp`~ٳ1]aeGHВjP^')9Y) -*u#RVWW` *eI6tA%XQS `) Dzv%RZ%kҟEZZ=8/qرRj)iNda_QIF\e cŠyl69gL 4 bEi>r%\/=ܕȁc[{w-M}ȑP^IUfa)]e5 24'ϩ *Rdy\OhxEPF`f&?!MD H?N+TU+S-_N"twjNuң$RKQ0`*g pM-yūev 6{Q-x11oTw:}Ď))HAFq^APWiQ?Vӵ4H~ɷ8v6iO$6sW+-Mn%hTB)X oI ))-W VpSeYqM\01)+]Qj4j *\reysw$iKweTP/B'c_AsY_ |x=) (&  CX7P`c4Q[r1Yv'V[*+0 i/Z0CT6 7^ט"s2f͖4T$m u,+0Np(& vK)y\xr/F#EB>s%\ٳ#[ʽR*UdLVtRʘJ;v\;0j(%@o텲iY8v), LrVbQ7RZ՜M ;b֢+^]_=!RU=–~ͨb{R׳XJ 9SjuXJĩ2m? c8 븯,.t,ҏ!(X2قHgPQCɲSH0YaN=޹SbeJ1X7^y#mx7}J[2k([z@zenݠ w5;ST.䒃wl;nKZK9*Djv+@ R1 N@#{R4W TZ BX2- +W0E؞*+ OBjI!zOfg@C|u˱OwR؄K R6)#<0ݕJV1.qd:GTG8WФzmS bR5R&tfSٖTiEVO7>Z`x^ \EGAfLP/QNj&$vc32$,lQlԋX# puq^XVh}* -!Ng,oA;Бr76+^7/KiLkSq:T.2#ؽOŦlKDRUe~Ąԕ D~ DQhIWT0WP8@$MS֢ W,>`$[HEk=)OYR klTDVlR-d>j. ͦ^-W.+EWAi-,e㲨Uv(hJ,.,Hk戴m)ˢƒR+"~AΠ)\r%QQ#&{nժ{ FM#]E]",B '0sYE0qrNV~ҷ\6)#P).Q `2ҧFH\DAV5$ @' KYX1,j.JG!ZHH*RƜOWy&qk%Yvz zx%\r)'F}>!ۏ+.1}=+ޏR+.6V@q-l;xT0]QGVymnӲ``]%BYPTf0ѳK X]X 3p"`^u:R bm^)P4Q4مKWSrkrh~NZxFY{ḁ0b~r%\Ξ ڻ_ݔ*|½$ 2V[X9Q|NƇ؉LިDAM#Ń([6uRe9 asaQ|mE,THIo(obcNX QC4i}IaX% PJ*dZI}lNYK.<ؓ+&1e'&kROwDZ!(xP)Q)*%y{"zdY.?_0Q?ci~rI^hZjU\+*(9ʼ^U|̍1X+=z+b=o6r&VL7dja% ۥ}ϴ-]"Šnvy󟟏3$;v} r%bP42J|ڐɒ'5 9M#gggQճ}$*y(n%HY }o}>*'b PDEs dȩnH>S:U%?+E KՍ‡e8 Z^qn#޿Y/ccU_=ʤs"|_,=\veg{/c?cR*'3?3g=K?C@~~I}O!wqOYv%ٟc *͛~Oo}ky3)oxNxmM=_lw[nsWڸ@7MM{)2V0oI]R c lv;R j1[00***P6ŬfKJSIϘ[tP=6hD%Vv-P*שgUu9LptTum,,-̣^WT帎i;R=wUnz(GGEwaAI)pSvNɅ8&>&4}sg(l^gzR^ʫ_jy׻e`|I9{ʟʝwީ{Ʈ?==m |φ?{6i읿yE/2@xgϑ\|Ν .9ʱ|\pr5Ȼnld??qR28ڿI̎RV\R]U^Sth(zI"c)D7؃L@&9TS\Bl@qerc=@\TP=qXY@ \pAZSz/UZM)Nt`*%h:*܋^l\6dM*z;wV9瀁ݓX *b y,yk [;ª )G}ǓEPSHْZ(vXǨblJ[njj5{m]r%B>яr{7l1=y4sha&ۿ}ޏ9c+;e;M)P^V^P2YH6ڔEeuĽ H@@yEs4XJSd`T,ӛyG#:f#:>/ \׫ 2sB8`^/L.z>D-VUד{ \4l+5eUrYӶRڿ;2O:b`0gZ0MfA dAe |p}c;'c:م&Ms^& o}[T,V`0aX;哟1_ioNʺy]롇WV0]JYSwqAr@xC&'$(yL{q~"}2;$I@Dⸯ7s 9IJh%߲/S%SjVApEa"hY)Rwlt|- gi2DN~/S<@)Vی A*xN*rԴ;0ctgRa@>OI.*o' ,//TUY-W`0,$ 5 $Kd:̆{۹sf???ݾP[|U6&NAژ)w{VB12|S=MiOL4'3_d9P-c濺2'H-s-=lն ȡDچ'1{/CZ?(*+HMABu1ը5UlSs4d=id\mÂx1y)΃i`hڈWb~Lv1,]w%/}K9χH;{y _hf6fkrx3l8оw["~ 0h }7e۶mvL ⰧoM6;i頤_c?~X40{H ɟx5,><`m{=l}g~sSP=6'sn/wwꫯch7>'mv뮻N~h@İFER;sR9,d|KY_U>g>ccq0~ٍQߘy2_}ƽl [ 0GĆ <[pT6g5cX}̨.T,e O,)dg+!#eʯ;Ez}#+j3Ho tI,J.IDAT ,"2._YT1VD@S Q iJ5n?fGZT $%B)( װ{%&F0jIBf׳L0:7k_8c .{ea 9<Q};Nff1۷VL !̺袋o!MNNc)Vt/yK)l5oс})lok8"pbb28[3 N8}13{#'7ǭ^ڔD^=}@i;:|s?S`?C?d}(_&. W-o7N1J 0_5 =/΃%onR9v J'Moz<~lxPX^{*J E;6V۷ok4*(Rmf,<]vYHc}3Yʯʱ2PP(}Ӱo?2< Ȣh[<y[O1 ^{? 1>s ;'u}o*ᵵjT@#"` d\P05s`*׈\yz\u 뗂A>>@A ^h: ,Q|X}R z@IK Z~Y5mHæ_#\DA=[>j}Xv چrYeT+$.(W]'DVMȢr|lJĥׯ9<l}U ɄA*Q8|&/mV(_^5YsJI|?((-fe`2Q@ A2f:^0+Ӊ^G?}XPƜp@,YdC?9y(mpPr,tc+k (FOogGGgBGsls"JD<(g5cm9u;1l`ُ;?q q rDL6s󌎵aϟE*c/nsLX2{Kꢸ պN0-*.\N˞%,<@׋$d:> CFͮ $}bQWR.,Ni( 8=RMIX%ʘݑ]2IO) **j7C9Бn_\Pv:T}h"k/JJ/uύ冷Tg+'\}(QjGK]eR}TF} LiLGMdk/ZoV,X[G'{'/+o>_@|G1`(~S.R0`ۏ@x"Y׿Lx16>2ɳNZɰdlWƲ{%AorɚU2]J {dr)xP(Jd xJlLm{(xʚB1Ђ-,ї{E= Uږ1 :tZ]ŲD]IgRs%7[@UpJ%tܺ L#{3S( V7zGAOUh,DIA7\[wH{iYkAm}XP ',q&7 ]-%Q (C1sRװLNj://[L,f]'GXOEP~GJ`wfW"3 afGLW.~,xϟg7l!8H Kl<-5Ʋ T>s̨`%2\PSIF%eI$a-P vB f(5 b_R ǔDbl ){؄0e&9R#9GitPPkP7M06c)#ץ~ Vܬq6E ¼9Ld,[?PÑvQzK$Wqӳa4~V2 ͘- oomE1LANf_XtXa+dX)aUDs>پ߭TaN2fY?-dʙE~Lf`@660:wX#pHf%X>K=:G Z)Dcm٘]ze:RֱApA`33N"q'^Dwt|=[lXY_aO(|(@)cNHًq]_LmŧZ -$eujec-taZ-(VG5_<\TM j|RԧdMPچܲ0lNG?ͿV^erm2lw&>&X &1;kaC G 0JxupZFa/_jx xB;2Ԅ]şM9&QdëQ%tl!l3]Mj>馛s@o6iO·s7:nLѨ'+HZz&|ykKIzAlc}`x"3 Z%YԒ¦VbhbEh|"~- re NcώUE P6̠{(QH9jqa\r%\r%\r%r%\r*\r%\r%\r%\r%\r*\r%\YEfIENDB`jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/expected/Example4_shaped.png000066400000000000000000000711611326546671500321100ustar00rootroot00000000000000PNG  IHDR cHRMz&u0`:pQ<gAMA|QsRGBbKGD pHYs+ IDATxדlWz巎wyV0 hɦ&k#ibBFoM]"Moxsq}UxHT7h/Dv|H-p/|nv4Ȧk#<|!NIwCUg< W1^zi<}*݈+Q9*\0nÓ;wsy|[aꈠj4# 9?xrAO!p(ML)EN=/| >yb|t |O#hϡ.ט!"3(fC[eW).N{q/<ݍ!,SSKڢ@ATASV6J"t=luBQ@W6OPON{q o~S~PZZZZ?o8}<{mZiMa`a+t<}ۛCWni=5'߆aLtN+DZ>@H N/&(D6 O<{Ku}PZZZZ[ksTR,&&K>9f6P-FO$YQ(p̧%Z:"/xb8*1[Xj]b*&N03<|on (---ԶD9|e6r" ʑX/W<& )Z:n&CD0vXLBE;`P)Tô z͖Z , ¦`:lAؔMʨ]8M2hr 9uwx wBRp8?B&E ȋaG7%`߱pm稛Z9 qB~f x&M5zu ~EҢo±BAatJ,~'Ti5AYԨ :וͻtKtX\Tax0;}.;8gؽ ^֋ }wQPZZZZ{9p{71ۂBw5 1BÞGe iaQ4+@!+Dsv;o'wLaг:"ΤmZ8 ?&x=HK/D#P 8td "CZa<*Mi#}tbӋ =B#)%Z#}phRBd:n"jԆuFGPڼ?u!L 6~Ҁ,S:;XO/VBDHk Pb3=2Uޣ ,YZ`–IUjJ2fГ~ߛw2!H$XZ."/j)Ppx_%[c8PZZZZӁwûw7 (UdRx8B@vlʀctNEC5Wd \&Pu:( 8K/yVU EU>|ӳ KkFmow:r0/տ]'Pe?KBt,| b5# donC;um: kya=zK8!^݂ABA@ժaL5f#_d(]؄O^b|:V*4tcd0CէjkҙU9щzQӊ$lgҩah6X${tmx3VSPZZZZ?c91ŽqJ1MSiX5\aks@പ[dӍmC=i;l:WUt*AQRIjDN^jR@ԖJ\RRHk±B#&& Y7rыd:arB($$ֶ,$dUK"rrUh2(rw.Mlm5~֒go6>x=,=d;[#t< D5j\zf1pt|@} C rTy^R]U"rFgЃe*|^`v1U#@j}ckatf%hɚBVRӶT9}#| T57&lNH5fU0bkgn.5&{w;p5QUPZZZZ?#I!.ΞJOq` !xDeQ،;% Vn3Ta`01 k9!!Rwvc OP >\xPƳoFqg~Wn<ٴ$Zll  [HwYo=<}vBDX:5</ЀR{T늳g(ˁp\nF}GKAE;l"BB%0b6IdnXM)ϓkg5;Cv5݈wyPGIXKX, 7dV}57yH^`\dPk1|Fs@/r<<%GHN1ܤKTfP{ 9gnk.cc+]nvlA:8V L3V^/O_^Qlk !Vi—4^!dSap<E`-2 :GQ.8@?KX!cjWt(k|ml;}}($6+wFhhv(ӚJhZY8?%ֲ)ء!V JzJPx|<⹖vT'ثS$?|'*1D){]mǥ.0wT <OXg`\ˁ%a !PM;uj+sZÏ\XMMree,=%f)6A$NWiCB آmtq1lt>@Ve$=".~\Q 8Vq}}RPZZZZ?mz41\p0^'h])Vpxy@ٰ* BXrm5֥rGGKr< w.Sd8UvmL:.VhB~.iHAXUH CE?awkKWE%vǂkXjxjiJ'KJ}5`Ra9ː, rcsPӚYBm2F| x;['՞1ޣK?vO^/y"NTPFz"[" Uj]DÎ=55V%Ng8<=; 1p.k@ᖍ*] Uј Y)NͧC#&X|G\mxn+dݨ.2lLcfx J4A$઺\g :LU)&KuHmz>=KǶP7'G[Q>'hB E+)yB05e*VZwY&aA%]MHc :BaK`9`cc x #t{M*5bhˬ˄aGpPުLָELJr_ED^!Ofz6Z׼\*2޻c<8W'UZpuN ''+SIr.vIoskھR\JKKK''i.ywMbz~7FDx%kjL҇;i,8b?u?ͦT y",5.0ވj.{I&&3 @RyO`W|o>;::`YʓRF*{y[\-1V乥^9U:me^|Ë+ŧPg2ǁXJޞ (YIBeFj$p .:s$J AYh$x^EV(%ODZdk@NW |&ʪ_ܼ%qcw .!X&0 \F^+S-tcϕ#f˟.*FL8ggt64 2>{@9 4]*ݦg|'9k_~EQ|Oi8>9Ǐˉ<k0m^.th*$1Քn-@Heu ٸ8KA<&R6U]UWWlٱ9xttd~U`(SUUE'ĵ.n? oV݆؁d %NSe=q|s= VXkG]ժ JAwg 8<V~Wg(qS9G"͹n\co{㾔F-&F>CkFәq`O &1DaLb#l̆Ύo~j7 )8v;d4U <Ͱ.`Kt=on`$e? :tL RaZ] yb:q$0].mS4 $#oMǪ t㛸Mg%UmYV(x\k#P֘_\`59hڕ-ܺW9!"_2<\aL*|泳SEx Y >Qǐƿ IDAT>>x;/0;9FE1~^N6%`dJ"U%qdL!q0,%%SHZի%ԕn&! *Ɠ5 x*xܗ_e7=V|@ LO/" [Yױ}%8L+DoX["hOOA3 קJ\\6Y7[l]?_Sc (---d.prCEjK]DH7Eg+ZdPkہ=:aЋ`IwYadJ$0cxfMu0IpݐnL6f+n9ݼ_'o (&)x߻!uye\T,fxrǧ8Il,ۘdR㝇0 ]+t֊p\`?pJǺEEǸ:u9(K$o؎{t4:3##T 0[X/&XkF -YtaEխkUcI2d(e>*AǗ‹<[ }Wsp_4Z`uvIćN`=kEmȵe'i:#?;({;ؽ#"r1F{8?bg:dt漏 ŕk`5,KBPݦ`k`0[`s7)]vvb{g[giiE""Ŗzl s`NkTeGM6srzSt3F!!gG75<ϡjf@)CFr=Wk;h>>[;%tlUԐ=9<ƷW6<=t~(=bXjs}lbo'nKD$etIhOJ/?UxsC0,[#M, ;WŻod u"/$ >J9[h&54jeQ :-xWUY~"+05nN@7 de|Qn:䰴 Z4pRtqML/`/;C<p/c% <9:tjr1#bw+JKKKT-6RVKKJƥ-Q,rϔ =@rtOh*TM:Peeiq/@/QH!$.eK5u`MXN ~'8ٖEx8.)U 5a$yS:1^H`tGTe#$t f96=Y)X^~/ڷ`G.fS|1 g`9]DI$lt623Lg'WS'՞(q5ET-"Ujn~6 q]2&{Z3Mt] Ps,RM[I 3LtBIC !c89; rx/;MM[2x4@@d؈k*g/ͤU 7$ x1MbecL`Kk`#|!~/aCOBY1?:@AEolcI fkB ~oMLJ6ktUṪ qR6~^T՗^,$р4{ Nn"A3T|Nਊ8űeG8 Ux݆Ѻت9avtWe;T]6fG|OI3D[k%fkc)IVsxGE0=ן· |A'IdX+6(EW" <_}&Ճ)U' 4e# )bEJqC!u*[ؐNCLk^!@`8ֲUiL+}߿ ϴӣS e3vj>"$R%8OQ&(% ϒkH/7/%{~?dU|b4c@R喥Z/ }IM-n xuƁ<`Z)siEv"ti@ҕ@l,ܰl?P}[搊s8&nl "G\ 3d-[ W zg6XWknJC⑲DD@}aNw^-ʋC4m^tA=G_ loD5@yQp?W7)7%gV9R)AIPd+wTC(VP*V+2: )㖊"W~%~HŁR8a]}*Z)4dz0;Jr0 ܈./?Ahh QӋaQaDw(Õ?XrN&ࢆngn'W^x GG8~-1} ViO?m__1;s=Z7r AQqp/tzQN"GRKU@<I w<]ZYHRB5hܒ͊C _U }K{V>.nᆋMfZ d s2jo+!.iљvEGUtט_se,_V$ ϽŰ靖O# (---F&!q:݂qL8QLgC7chL&tC,W+/p°W֋-qB\0ӕe(0IH}RKBw]="d}+QZ2We2W^Rk MH.$8dRUX , 8q [F!TxZbaW:Z""- g0F.O[wu[/uq<<]^hk@8U (---FMӢYxK/"M |.E6r:p*$<6;o90Q)GJ.C^ct _T Z#E7!$KRdKDcBIlѨ!S]6_\b~Wo/~ UtL:|֒͹*( M##D,Csw2% ,jhײiN`].ae֤۳[5u(weN Yrj$xtKvK3tl❃*s'/1׀8@W{qwT鸔i˶*A"=bNZU}q|zJ*yA *O˔ʅX8=CNDE|I*/ˍEL/{\M+ &O@9f˟u3+%4;Pm[+$E,O_ES~%Tn +IWGht0(ByCuX ;\JKKKJUת1ckg{Wxm6Jy PVbX+{W܋Sp#v0_$sأ}h!? XT<" R}V뛘Ӂ'j*tORV$E@j-_%4SkYdty.*oW޽Q`bq?QܑǐGmbcszNlt@OlJ\T{OCJ]̓ŬK\[\LZƛvѧ粆2?։ T.Ypqt_!!CaDht`# 9݋U760$2HԎKwE(SCI5Lq;m-*0mW5_l܂d;ga)zD01NwoʸcIi@iiii},@!x!Q;I)߿j8Lkԉz=!MftS!2&!elAj^O4ys-j堤z x}ê" =) JaA^ˏ`2[hH.tZj1 P2(gܿl |p)t1/U])<0][ESL$ %'mJ*I6p˼Ƃ+wvpyL홦GH=Kޟ2PX~yCu% :G ]¨*իCaOM۝M8}p+=KJIJI;֗JOU;hJ5Jk$0M /ʵxgqr>&GjWkՅj9}zq->AIMU{ )V+Y /x^-m6lXaI^Y.[{W:$рIkFQ߯ZB@I9%l_G6<><Ƈq#̒pb%M jסC'iBjmᢑE*ĸӸ|Np|=WWկ$̊P- $%( (---c<]-!G݀GE5IqJ%\U ..v!HiOƥ-{l,VkDm>)0.I0@/}އ^LJbk~Ve%BH`|TeG67J:7- M; AbNgg7a GxN5Pq~qQPZZZZL0xpxBG\È/noFbe~_UF<)<0t~ƞ V/g{kmܼN+߉DtK&A9jX2! <{v>pdI KJ? R|-dqOcd3%a4H˔KMWq/\A P c&i@iiii}Bu.k7:>dc]M`X5FC[ 7 'jq<[;Q5d˜yop _hrt7o)U yLA(IMzn=KWv8 ?#)B-Eby$2pΤ*е%YJPNE%#ei’+JJKKKsQ[꫷Y|^J,,ٻT7j4}ղ-%FE 44#.`2Vx~W^~׮8=lvި+$X=! ˄`'ܤGg9*@H5 TGAٓ{؈:1_}&D-MTb^dek7se7nUc*]FmZJ5tej@iiii}>9>wߺ'O㝷Tj _'M7_\ ݋)RUU8"~3cՒc?Fxtt5a zX'F8Y.ы| \KzTj} - qsU% ئ ..ݗ j\&_HC$v$ule {W_xK^¬5[>yi1O^͏*4>7I)xǯS/?es?`r1v&lm-.{UߗlqodPՂ~tMU6>8!QݏKSK a3"ctIC6JJŞܟW$ik+ /~9> έ6 -Ǩr5<؁PZZZZ>E{ta≂h3 9&J2S٢I OqCL9دU.ګ/ 1aX jRQH!A}w*CS\ϗ"Fv>_ٟ<<xk_E ,UfY}]}<n/HJKKKMGaXK'$MyKEYp Ww%=~2 I;0sơk kJ+3AK{n==|wp}<׿ lq$U|RuH+`B\2_W~S7v!ݿS~#'Ԁ\dRZ霤\ʹ[PHxے5TmF#['(`@XytJyɳIZIl~c>G?r*r (("g(`'dc,I9y6OlZeٚ }o߾sϹdn33e`ɒ<li+e="nC.ˏ~ckIx{2\.,S5*(u[D rlٸUVYfiTkh|2PK2 evwr\q_eՒ{z V Z^IT"$xW3D4'\cf5gK(u[oXXו'"7fjҪ5 DN[B&w^BeIgw97W˔\f$gJ\=Ud5]~HkvJIS@ujZ2;%,@Z)АvIYw rՕWజwrN߹SN]uyEgRݎ @%H"A 3rÚdlv)yEŵK^ĵscX3hHQ30c- }EDFw\Jo![wSݫ 6ev#t$EfsdTg"Kt:=E`.yʨݎY\8$$4CMeeSUFqSV,K%R|ҷYI@^&6v|XX?'+O壒o~iϗC:펭M+nY{IJ&W ePWx&I$D[zQn$թlߺC֭]';X/zK@(G$Xvbp(U <% l){,N7R(XBWSN?kuh4jR޴|TaqUؼQ95$A,²ek0fJzvIEO0GŖ w:%ͪdܼfYy+=cT0HSP$H""DWصuLo$VS!SW ԤnKyb)kZb\5nlzppꁾZDA(gQ` m۹O-*F#b./YTԋ(s*ռ 4- R&1?v6H``:QvM R+NZ.$\ "#ҝJc,YqRtD)RZ"K(,Meġ7qlso߾CN9ewr)Ӈ T"$"\~fҫel kRθ2Ȱ' O*W\Q@I'^uʂ8  QQ!X+01D{ r|m5^'P[)0 dQ5g\6gs:1"S2<:*A&մ~VSIia>:p}ǹh^zM)q\9uJ9~+\~GetDI$8nJonܱFir)dy(Ӯ([͆d1 v{27JaΗ1Pj[2Ө;v)K}, kGA֕T@VJѵ@6J+-$ӶїX}$2@UiKU!ʠIeRKd>%@ʗ,Qlk:Z7w@LĘL7E=ɗɹ=vT"$Q2k *iݭL&2O^G9Tah"E&fT=C뙃\O>9V5XJg-3mےFC!փeqF<|bR$MJ;R`(6Yt izkV5eO۶l@Ri"몳vOfád X%"VZ3r-7_/TfeI r$r⎖$H"$ठpKڮ1E]%|*" P ;?\+x8H͕f'0bM*TPas-C!H,U(ܗ2Eڞ*K BjI!zГI"G_RPdl->I&\/lQ^+]LwYv +kw{X`&k BHV֗!2ۨKsj&@r15ui}\QHZ+ťCrEϹ424L^Vs2;dxxX±ČJJ$Duk._+_F aKJ9)vR=)%禔= ;RP iXsMYYG^ \iCdVS=L(L(KSMq|lۺcSYôldfYk\`xL-_)[7q5پsdEYL&jZ)+ٰu1¢ *; Uq1I$D`P&;A® eАHII+kyRjLB@"֞``.Cmʎw ALr^ 0l" fr w=6* ]s9ϙןk(mwlXأ %0Υpuq]X_.ޝv(kCU=Nߌŝ7˞r'>}Z}NEZq:T"$r"#ڶS٪4T?JAA))SD`,8Rp: spr=`- r+aLټjmkJfSF~n#mUl*g3~s +)K2SuJxQ3-Y>p@fʎT֕ٙMK^̬̊b%IQ\fJ*DId(瑍wloۍ 2墂GUyxYPoF g3䝰c,'l$RkH!ד\t&c)7P *\jʎ:*zz2,eae54|^4-Eʀ)URL1+FUV$KG{&, @%H":1b͍eۦBOyg!i-5{YuMkn-׵2eCt#Cyufբ``]%BYPTf٧:W*.ZvzN8l`kp^`mS+ص[ʮ<БINLTerjZzN-ʞ)9eYdaJ$D9vºNʞc"Uݩץa6S4fԍ)cJ{m%C S%`s7K8]{)ʄ 0v 3eMN,ǷA$8JFffAs R/)hzN`U* yZD0,̒8Y(Yq2[(mYH"ܻؓ+7]tjiN햊 FCżH꧊KX!/)Q)%y==2Z,^`u$扣 Y@(BA\KRQ@z@s}@f^̍1@+s=S^7mz)Ӈ):#ePAΝ[Mn鉺K:Q_.~H"܃+ٻK* ezRtHܨkl㬓c]mKG|6/])-)K/ؓ}]kAqV[\C1sHm y)"O֨nH#?Sײxݎ"Ç qB@2 qf!wܴVvJ L*8nG?+_Jٶm=c!G=y1+xɭ*9y|W׿}O'+f)]vQ+Ӿm%/y},W]uբ9xcP'v?|k_+ׯ)[}cw/>ll6{?szmo;I!`0]*%Y_* lm6Rs> j120J+*6¬f JSߕ1)7(K!{`WDcA70hRNm˪˅`zOSPյkhfh ^\֣ױc=Gb^G93ےԙ미ZD{)_WǤoMiX/|?S~cNX/7}4o}^(t 7)w}׬Yc?0-[g^}C h8,FcãL6>b嗿]s,.Do߾\g{eb6ɩVΪ./*:R톄DPeDڛ AH)@&9dS"]օK(12S#؍z)ⴂ reARjz,K5kJY]Z怒1Jx)R֭-ϽhaZLVF n,k.{$@`6?8&=sMaT(={ݴiG?fMe˖zP?n~ټy|ccD=qVgE+;e[7]WS^TV2Tȋ6ڈEEuu8PGO2/gYRdgH̅[#8:f#:k^`R*<,/ty[\z,C=6Z \Oz*i=Y椬`;/*,ȰR}_ѺQ[K:^{@aa2 ͘5?Ow'J<#'|LJ)Dwey;hfO>}CZhrך`yߎ39RњTl_Ku=۴Urd`F5 SԜf}R(ȠY<0|iuJadNP9" (`t܆kz+9Nz2\6cQqf-SYSdVsE;mQ)"iol&u|Kݲ(9cDa/9{>E#^ZnάQ0Hl^N.L)oQvMF)T:=d1k$/|PNdyHaL{%-k׮}C<| ^`)?y[ݱF\7p]q@S(嫯ڮcL2+G7ςz[ק# WςgP Ա  .}{ݖXկ=p1G\7,=|G[9ksk[CY<פoϔi}T<.((ٰaa1<oaLR_+}q.n{w}uÿ% ɫ$GrA鵉Bn{^q6~b}(HksmUxܕM7IQWta,R, @͟r)'>QB3d7n@o[pe Q(ܷ-vm5544dub {)~`/} G>pY*L3rh'e: mF3sp(DڒSmC Ox-7g?[?XO]J*|3@'τrQbȔ zQ|>5mvvV'[=7&* 4^k7z_,+Vs9gQ}9O67,\sK-bώ6/ʏ{ߙ@QZtՑ}2 .e̋GIcBC8^?3.3X=ϟ{``<ϵgȹO{lq pK<b͍0^sL7zիLy&7D'hJ^bI P FxGuq0 nH.cTFҮcLSel O*23!|LVAKA:SJM G^.+{ H9&xR_v馴WH["\^J9Dî%.dq2-G$Wud   ژ^flXĠ4_`=tpfqq ~Px0{ C< =ʍaf{ 3Rʘ_H+;<Wv7,$fJƳM̖ r<D|@8~+9%R$hyIݽ\Hw[sZlx@p,y?7 ֗>Xv봐ukf:pzֳcTPY))dt",a 8b[U]=KY,$CFͮќc3A>/ _Q3_K캰8vs0H4x+C24D ^ݑwɦ;dN8'mi=E~^ZʸՖit# 3L);lj93 x 3]>1;L.y3y1P%BEx ⎝J죄3|PX2Z,P(X~ϗܱt} &|Da!Cu3!̛#% (X5^{ =ؠ"gmK.G K-R "M̴̽sn-2sIRP63@մWސFX*JP6TɞIjMf N20_[SY'4@110cGז=Q" e&ɺeYw/Xm,o p^ LLÑLmf )߅h> xH`z6Dfcsf6 BpW (bʎMWLXXyoCkwRY;hm1⾽P?s~_x("1õ;m,ʂQu$UfYN(A%.i c$QѫVea/@J1sA^yea eJ $XS/RZP‚sH&6ӄiդV$mE0%Kd4,~Iz6IF{̄Rk\M -+ Ǡ }|Rij[N0Fx7wК 3УEsBe,POzғ[~PP 1o5y.Lb3N]s( QWq%гYc= Ŏovs~&bk,:q^JMs3{9r|${wcQ' zH #byjXL!SV8R{i dɲX2(,e#2@>+{igZ*,+CRGijf21>i*Dliss-jS6-zs̘Ԣ \iTJ@GbX &+M7TY?ԑ;c֞#nOJ='D[sM&K6q9X65b/qob]Cye& z]2rY_FVJ ˜T1kmQH'ݻ:6e-GF\HeXTT4Sձ1BAY/I/+^Ee4ES`@>#tދdL"Bu$h[W)k֦$6e)Gj]ZYyH]eK@隙J9F/_gߎLNL7!q'+/$c'nXa0馛]̝׿oxs֭[_CǮtF$;Cat/d{hݻmE:ܖ)P5._MK_u o~c+F˔ɋ{:32SfNy q=О/)1#s_^432}R6_z饲n:]qxNxE& <8RCkGz׮] -/4KCO7E=u 2~ӟLܣO(xB9׾;w+}f&~ @e/g9<./PIXqrW#Qr|Niʡ+m(`#*16LfL=O% ;Bߦڅ>Ac [_xn 38T[M^:Ť#0+~%"?@:$!TCٴ7͙֏<&]QDȡ9<6QOcFxGej\֜LE6\xAHٹƲ@D3kEa1cHM"'$u! "fqd%c=ZѲ+<;$D2t֤bFq5d{uY&+i!8-?uNgsϏd=9Sj6NY#'MIH")地DIT"3F$IH"$HP$H"$T"$H" @%H"$HP$H"$H"$H" @%H"$HV깁qzJIENDB`jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/lion.png000066400000000000000000000460121326546671500262420ustar00rootroot00000000000000PNG  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`jlatexmath-1.0.7/jlatexmath-example-export/src/test/resources/logging.properties000066400000000000000000000000351326546671500303320ustar00rootroot00000000000000org.apache.fop.level = SEVEREjlatexmath-1.0.7/jlatexmath-example-giws/000077500000000000000000000000001326546671500204405ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/LaTeXGenerator.giws.xml000066400000000000000000000004511326546671500247560ustar00rootroot00000000000000 jlatexmath-1.0.7/jlatexmath-example-giws/Makefile000066400000000000000000000026631326546671500221070ustar00rootroot00000000000000SHELL = /bin/sh JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64 # # C++ compiler options # CC = g++ CFLAGS = -g INCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux LIBS = -ljvm -L$(JAVA_HOME)/jre/lib/amd64 -L$(JAVA_HOME)/jre/lib/amd64/server/ # # Ant # ANT = ant # # GIWS options # GIWS = giws GFLAGS = -e -r -g GIWS_OUTPUT = giws # # GIWS PROJECT INFORMATIONS # OBJECT_NAME = LaTeXGenerator BINARY = latex PACKAGE = GiwsExample.jar MAIN = latex.cpp GIWS_CPP_FILE = $(addprefix $(GIWS_OUTPUT)/, $(OBJECT_NAME).cpp GiwsException.cpp) GIWS_DESC_FILE = $(OBJECT_NAME).giws.xml all: $(BINARY) $(PACKAGE): ant # build output binary $(BINARY): $(GIWS_CPP_FILE) $(PACKAGE) $(CC) $(GIWS_CPP_FILE) $(MAIN) $(CFLAGS) $(LIBS) $(INCLUDES) -I$(GIWS_OUTPUT) -o $(BINARY) @if test $(MAKELEVEL) -eq 0; then \ echo "==========================================================================="; \ echo "Dont forget to set library path before running the program:"; \ echo "# export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(JAVA_HOME)/jre/lib/amd64/server/"; \ echo "==========================================================================="; \ fi # run giws to generate cpp code $(GIWS_CPP_FILE): mkdir -p $(GIWS_OUTPUT) $(GIWS) -f $(GIWS_DESC_FILE) $(GFLAGS) -o $(GIWS_OUTPUT) # Generate jar $(PACKAGE): ant # cleanup giws generated files (cpp/hxx, bin) and .class clean: rm -fr $(GIWS_OUTPUT) $(BINARY) ant clean jlatexmath-1.0.7/jlatexmath-example-giws/README000066400000000000000000000013111326546671500213140ustar00rootroot00000000000000It 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. jlatexmath-1.0.7/jlatexmath-example-giws/examples-ant.vcxproj000066400000000000000000000114021326546671500244510ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {FBF86EFE-4757-4721-BCEA-2C5368BA1966} MakeFileProj Makefile true Makefile true Makefile false Makefile false examples-ant.exe WIN32;_DEBUG;$(NMakePreprocessorDefinitions) cd $(SolutionDir) && call ant examples-ant.exe WIN32;_DEBUG;$(NMakePreprocessorDefinitions) cd $(SolutionDir) && call ant examples-ant.exe WIN32;NDEBUG;$(NMakePreprocessorDefinitions) cd $(SolutionDir) && call ant examples-ant.exe WIN32;NDEBUG;$(NMakePreprocessorDefinitions) cd $(SolutionDir) && call ant jlatexmath-1.0.7/jlatexmath-example-giws/examples-ant.vcxproj.filters000066400000000000000000000015561326546671500261310ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms jlatexmath-1.0.7/jlatexmath-example-giws/examples.sln000066400000000000000000000041021326546671500227710ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "examples", "examples.vcxproj", "{9514B254-2267-4CDF-A2C5-560250D5C501}" ProjectSection(ProjectDependencies) = postProject {FBF86EFE-4757-4721-BCEA-2C5368BA1966} = {FBF86EFE-4757-4721-BCEA-2C5368BA1966} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "examples-ant", "examples-ant.vcxproj", "{FBF86EFE-4757-4721-BCEA-2C5368BA1966}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {9514B254-2267-4CDF-A2C5-560250D5C501}.Debug|Win32.ActiveCfg = Debug|Win32 {9514B254-2267-4CDF-A2C5-560250D5C501}.Debug|Win32.Build.0 = Debug|Win32 {9514B254-2267-4CDF-A2C5-560250D5C501}.Debug|x64.ActiveCfg = Debug|x64 {9514B254-2267-4CDF-A2C5-560250D5C501}.Debug|x64.Build.0 = Debug|x64 {9514B254-2267-4CDF-A2C5-560250D5C501}.Release|Win32.ActiveCfg = Release|Win32 {9514B254-2267-4CDF-A2C5-560250D5C501}.Release|Win32.Build.0 = Release|Win32 {9514B254-2267-4CDF-A2C5-560250D5C501}.Release|x64.ActiveCfg = Release|x64 {9514B254-2267-4CDF-A2C5-560250D5C501}.Release|x64.Build.0 = Release|x64 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Debug|Win32.ActiveCfg = Debug|Win32 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Debug|Win32.Build.0 = Debug|Win32 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Debug|x64.ActiveCfg = Debug|x64 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Debug|x64.Build.0 = Debug|x64 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Release|Win32.ActiveCfg = Release|Win32 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Release|Win32.Build.0 = Release|Win32 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Release|x64.ActiveCfg = Release|x64 {FBF86EFE-4757-4721-BCEA-2C5368BA1966}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal jlatexmath-1.0.7/jlatexmath-example-giws/examples.vcxproj000066400000000000000000000170271326546671500237020ustar00rootroot00000000000000 Debug Win32 Debug x64 Release Win32 Release x64 {9514B254-2267-4CDF-A2C5-560250D5C501} Win32Proj examples Application true Unicode Application true Unicode Application false true Unicode Application false true Unicode true true false false Level3 Disabled WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) $(JAVA_HOME)/include;$(JAVA_HOME)/include/win32 Console true $(JAVA_HOME)/lib/jvm.lib;%(AdditionalDependencies) Level3 Disabled WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) $(JAVA_HOME)/include;$(JAVA_HOME)/include/win32 Console true $(JAVA_HOME)/lib/jvm.lib;%(AdditionalDependencies) Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) $(JAVA_HOME)/include;$(JAVA_HOME)/include/win32 Console true true true Level3 MaxSpeed true true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) $(JAVA_HOME)/include;$(JAVA_HOME)/include/win32 Console true true true jlatexmath-1.0.7/jlatexmath-example-giws/examples.vcxproj.filters000066400000000000000000000025101326546671500253400ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Source Files Source Files Source Files Header Files Header Files jlatexmath-1.0.7/jlatexmath-example-giws/latex.cpp000066400000000000000000000061171326546671500222660ustar00rootroot00000000000000/* * 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ #include "LaTeXGenerator.hxx" #include JavaVM* create_vm() { JavaVM* jvm; JNIEnv* env; JavaVMInitArgs args; JavaVMOption options[2]; args.version = JNI_VERSION_1_4; args.nOptions = 2; #ifndef _MSC_VER options[0].optionString = const_cast("-Djava.class.path=./dist/GiwsExample.jar:/usr/share/java/jlatexmath.jar"); #else options[0].optionString = const_cast("-Djava.class.path=./dist/GiwsExample.jar;../../dist/jlatexmath-1.0.3.jar"); #endif options[1].optionString = const_cast("-Xcheck:jni"); args.options = options; args.ignoreUnrecognized = JNI_FALSE; JNI_CreateJavaVM(&jvm, (void **)&env, &args); return jvm; } int main(int argc, char ** argv) { if (argc == 3) { JavaVM* jvm = create_vm(); org_scilab_forge_example_giws::LaTeXGenerator * latex = new org_scilab_forge_example_giws::LaTeXGenerator(jvm); latex->generate(argv[1], argv[2]); delete latex; } return 0; } jlatexmath-1.0.7/jlatexmath-example-giws/pom.xml000066400000000000000000000027441326546671500217640ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath-example-giws jar ${project.artifactId} TODO ${project.parent.groupId} jlatexmath ${project.parent.version} junit junit ${junit.version} test org.sonatype.plugins nexus-staging-maven-plugin ${nexus.staging.plugin.version} true true jlatexmath-1.0.7/jlatexmath-example-giws/src/000077500000000000000000000000001326546671500212275ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/000077500000000000000000000000001326546671500221535ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/000077500000000000000000000000001326546671500230745ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/org/000077500000000000000000000000001326546671500236635ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/org/scilab/000077500000000000000000000000001326546671500251205ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/org/scilab/forge/000077500000000000000000000000001326546671500262225ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/org/scilab/forge/example/000077500000000000000000000000001326546671500276555ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/org/scilab/forge/example/giws/000077500000000000000000000000001326546671500306265ustar00rootroot00000000000000LaTeXGenerator.java000066400000000000000000000065301326546671500342420ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-example-giws/src/main/java/org/scilab/forge/example/giws/* * 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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.imageio.ImageIO; import javax.swing.JLabel; 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); } } jlatexmath-1.0.7/jlatexmath-font-cyrillic/000077500000000000000000000000001326546671500206145ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/COPYING000066400000000000000000000354221326546671500216550ustar00rootroot00000000000000 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 jlatexmath-1.0.7/jlatexmath-font-cyrillic/LICENSE000066400000000000000000000046741326546671500216340ustar00rootroot00000000000000JLaTeXMath 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. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version. 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. jlatexmath-1.0.7/jlatexmath-font-cyrillic/pom.xml000066400000000000000000000044031326546671500221320ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath-font-cyrillic jar ${project.artifactId} Cyrillic font for use with jlatexmath org.apache.maven.plugins maven-jar-plugin ${jar.plugin.version} src/main/resources/META-INF/MANIFEST.MF org.codehaus.mojo build-helper-maven-plugin ${build.helper.plugin.version} add-resource generate-resources add-resource ${project.basedir} META-INF LICENSE COPYING jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/000077500000000000000000000000001326546671500214035ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/000077500000000000000000000000001326546671500223275ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/000077500000000000000000000000001326546671500243415ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/META-INF/000077500000000000000000000000001326546671500255015ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/META-INF/MANIFEST.MF000066400000000000000000000014231326546671500271330ustar00rootroot00000000000000 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-fontjlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/000077500000000000000000000000001326546671500251305ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/000077500000000000000000000000001326546671500263655ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/000077500000000000000000000000001326546671500274675ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/000077500000000000000000000000001326546671500316305ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/000077500000000000000000000000001326546671500334425ustar00rootroot00000000000000fonts/000077500000000000000000000000001326546671500345145ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillicjlm_cyrillic.map.xml000066400000000000000000000133241326546671500404710ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnbx10.ttf000066400000000000000000000761201326546671500372220ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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`*jlm_wnbx10.xml000066400000000000000000000567761326546671500372440ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnbxti10.ttf000066400000000000000000001455141326546671500375630ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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`*jlm_wnbxti10.xml000066400000000000000000000716431326546671500375670ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnr10.ttf000066400000000000000000001063501326546671500370510ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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>^`*jlm_wnr10.xml000066400000000000000000000574021326546671500370570ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnss10.ttf000066400000000000000000000464301326546671500372370ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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`*jlm_wnss10.xml000066400000000000000000000562171326546671500372460ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnssbx10.ttf000066400000000000000000000740441326546671500375730ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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`+jlm_wnssbx10.xml000066400000000000000000000561361326546671500376000ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnssi10.ttf000066400000000000000000000605601326546671500374100ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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!`+jlm_wnssi10.xml000066400000000000000000000611351326546671500374120ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wnti10.ttf000066400000000000000000001437301326546671500372270ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts 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`+jlm_wnti10.xml000066400000000000000000000717241326546671500372350ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlm_wntt10.ttf000066400000000000000000001007501326546671500372350ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts @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`jlm_wntt10.xml000066400000000000000000000135761326546671500372510ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts language_cyrillic.xml000066400000000000000000000035541326546671500407220ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts mappings_cyrillic.xml000066400000000000000000000151201326546671500407450ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts symbols_cyrillic.xml000066400000000000000000000132121326546671500406170ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-cyrillic/src/main/resources/org/scilab/forge/jlatexmath/cyrillic/fonts jlatexmath-1.0.7/jlatexmath-font-greek/000077500000000000000000000000001326546671500200775ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/COPYING000066400000000000000000000354221326546671500211400ustar00rootroot00000000000000 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 jlatexmath-1.0.7/jlatexmath-font-greek/LICENSE000066400000000000000000000030311326546671500211010ustar00rootroot00000000000000JLaTeXMath 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. jlatexmath-1.0.7/jlatexmath-font-greek/pom.xml000066400000000000000000000043741326546671500214240ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath-font-greek jar ${project.artifactId} Greek font for use with jlatexmath org.apache.maven.plugins maven-jar-plugin ${jar.plugin.version} src/main/resources/META-INF/MANIFEST.MF org.codehaus.mojo build-helper-maven-plugin ${build.helper.plugin.version} add-resource generate-resources add-resource ${project.basedir} META-INF LICENSE COPYING jlatexmath-1.0.7/jlatexmath-font-greek/src/000077500000000000000000000000001326546671500206665ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/000077500000000000000000000000001326546671500216125ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/000077500000000000000000000000001326546671500236245ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/META-INF/000077500000000000000000000000001326546671500247645ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/META-INF/MANIFEST.MF000066400000000000000000000013721326546671500264210ustar00rootroot00000000000000 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-fontjlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/000077500000000000000000000000001326546671500244135ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/000077500000000000000000000000001326546671500256505ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/000077500000000000000000000000001326546671500267525ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/000077500000000000000000000000001326546671500311135ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/000077500000000000000000000000001326546671500322105ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts/000077500000000000000000000000001326546671500333415ustar00rootroot00000000000000jlm_fcmbipg.ttf000066400000000000000000001747441326546671500362730ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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*jlm_fcmbipg.xml000066400000000000000000002402151326546671500362610ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fcmbpg.ttf000066400000000000000000001643441326546671500361150ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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*jlm_fcmbpg.xml000066400000000000000000000610151326546671500361070ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fcmripg.ttf000066400000000000000000001770201326546671500363010ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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+jlm_fcmripg.xml000066400000000000000000002410141326546671500362770ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fcmrpg.ttf000066400000000000000000001654641326546671500361410ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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+jlm_fcmrpg.xml000066400000000000000000000605271326546671500361360ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fcsbpg.ttf000066400000000000000000001372001326546671500361120ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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+jlm_fcsbpg.xml000066400000000000000000000574671326546671500361350ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fcsropg.ttf000066400000000000000000001450441326546671500363160ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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+jlm_fcsropg.xml000066400000000000000000000640321326546671500363160ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fcsrpg.ttf000066400000000000000000001340341326546671500361340ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(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+jlm_fcsrpg.xml000066400000000000000000000574651326546671500361530ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_fctrpg.ttf000066400000000000000000001526741326546671500361470ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fontspFFTMS(ՠ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,jlm_fctrpg.xml000066400000000000000000000321141326546671500361340ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlm_greek.map.xml000066400000000000000000000272711326546671500365300ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts language_greek.xml000066400000000000000000000035431326546671500367510ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts mappings_greek.xml000066400000000000000000000311561326546671500370050ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts symbols_greek.xml000066400000000000000000000176011326546671500366560ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-font-greek/src/main/resources/org/scilab/forge/jlatexmath/greek/fonts jlatexmath-1.0.7/jlatexmath-fop/000077500000000000000000000000001326546671500166225ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/COPYING000066400000000000000000000354221326546671500176630ustar00rootroot00000000000000 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 jlatexmath-1.0.7/jlatexmath-fop/LICENSE000066400000000000000000000033141326546671500176300ustar00rootroot00000000000000JLaTeXMath-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. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version. jlatexmath-1.0.7/jlatexmath-fop/README000066400000000000000000000011151326546671500175000ustar00rootroot00000000000000You should modify the file fop.properties to have good path : jlatexmath-0.9.1, fop 0.95 and xmlgraphics-commons-1.3.1 are required to compile jlatexmath-fop. In fact the version 0.95 is essentially required to handle embedded fonts which are in jlatexmath.jar. After the version 0.9.4, the plugin can be used (and must be compiled) with fop 1.0 and xmlgraphics-common-1.4. Put jlatexmath-fop.jar and jlatexmath.jar in your fop/lib or in a directory known by fop. To see it in action, go to the directory examples and read the README. Have fun ! Calixte (calixte@contrib.scilab.fr) jlatexmath-1.0.7/jlatexmath-fop/doc/000077500000000000000000000000001326546671500173675ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/doc/README000066400000000000000000000041241326546671500202500ustar00rootroot00000000000000Projet JLaTeXMath : documentation de première intention pour les débutants. --------------------------------------------------------------------------- Ce texte donne quelques indications sur l'utilisation de la documentation du projet JLaTeXMath destinée aux débutants souhaitant intégrer des expressions mathématiques dans un texte préparé au format DocBook. 1... Description du paquet de documentation -------------------------------------- Les fichiers sont distribués dans les dossiers suivants : Racine du paquet README : le texte que vous lisez equations : les fichiers XML définissant les expressions mathématiques du texte imprimables : les fichiers de documentation au format PDF programmes : les sources des programmes d'exemples du texte xml : les sources DocBook des imprimables. Pour commencer, lire le document imprimables/doc-jlatexmath.pdf. 2... Compilation des sources DocBook ------------------------------- Les particularités du texte présenté ne permettent pas de proposer une procédure simple pour compiler les sources au format DocBook du dossier xml afin d'obtenir un document imprimable au format pdf comme imprimables/doc-jlatexmath.pdf avec tous ses enrichissements. Cependant, il est possible de compiler ce texte en mo- difiant les en-têtes du fichier. Les enrichissements, comme la coloration synta- xique par exemple, supposent des configurations non triviales des feuilles de styles xsl qui dépassent le cadre de cette initiation. 3... License ------- Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front- Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". 4... Gnu Free Documentation License ------------------------------ See http://www.gnu.org/licenses/gpl-3.0.html jlatexmath-1.0.7/jlatexmath-fop/doc/equations/000077500000000000000000000000001326546671500213775ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/doc/equations/chimie.xml000066400000000000000000000024611326546671500233620ustar00rootroot00000000000000 Édition d'une équation en chimie jlatexmath-1.0.7/jlatexmath-fop/doc/equations/eq-2dim.xml000066400000000000000000000017151326546671500233630ustar00rootroot00000000000000 2. \end{cases} ]]> jlatexmath-1.0.7/jlatexmath-fop/doc/equations/eq-tres-compliquee-2.xml000066400000000000000000000027001326546671500260000ustar00rootroot00000000000000 Nouvelle équation très compliquée jlatexmath-1.0.7/jlatexmath-fop/doc/equations/eq-tres-compliquee.xml000066400000000000000000000044631326546671500256510ustar00rootroot00000000000000 Édition d'une équation complexe avec : jlatexmath-1.0.7/jlatexmath-fop/doc/imprimables/000077500000000000000000000000001326546671500216735ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/doc/imprimables/doc-jlatexmath.pdf000066400000000000000000006445721326546671500253140ustar00rootroot00000000000000%PDF-1.4 % 4 0 obj << /Title /Author (Christophe HARO) /Creator (DocBook XSL Stylesheets with Apache FOP) /Producer (Apache FOP Version 0.95) /CreationDate (D:20100416163209+02'00') >> endobj 5 0 obj << /N 3 /Length 16 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 17 0 R /Filter /FlateDecode >> stream xSKn0,$Jr@ `Ef MD%Q!iXz.z>}NZof8EM YƒbYl}>z*o?,vŃ:OF .0ҔE&X&bS+E*o]l!ٌu}6"lTؕ~SHAs%j#d5(Jv.K 9cjȖrmbFxN?(xIDٚJ.0 :@ۡF=GӘViidHHRI"w+27Oh&'~#zLf,3,e\=w ޺=7?>zodB%TFcDˈ2f=mcCUE}z$WBYcjF/cB*mQ2x\&(Eb !u^cԖ~rqU\*AZ endstream endobj 12 0 obj << /Type /Annot /Subtype /Link /Rect [ 265.536 587.474 552.756 599.474 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://forge.scilab.org/index.php/p/jlatexmath/downloads/) /S /URI >> /H /I >> endobj 14 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 573.074 75.231 585.074 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://forge.scilab.org/index.php/p/jlatexmath/downloads/) /S /URI >> /H /I >> endobj 15 0 obj << /Length 18 0 R /Filter /FlateDecode >> stream x\o\X9Q0+YjQzrpl%v Ůmno }+'Vp8p޲c%#Zg Uw'da3T`gXi];# aZ6 |kw5R*T5 i"^:q<Mmo9Libo(( tO:#ǹ hlmPϮby+1@&3f[룭Q+6}d0Wp\Mm@ZP|dz(mvw?:˛g?y{J~~0'$+wһjVl gZKU h"-F _,=+z$VC ㍋PѰxgt=T.PRr-;i*AK ̄ rpj+ 1P)<8%ӏog +qݎ ߢ-rkeĞ} h@^Y  ğ6h+M^+rتBzT sx]==JX|< -={b bF+h&x;\pj )Ntza2biF%*Ƕ)0d+i4G 7aǢ+`LnA8N "0V}2>HU|^ƁVKoa# i2*}@P⡱/{ayC8v58]K!L۩Ϭ12vFƽ@M:h,%hֈL!5GXs9h:Yc`YP.'~xSF_/+Mxٰ2ΗY].iTGK;=.]fqR؇gVM ge2;&:oC(`L;W!F$%V\MS!p 1!@{VM#l7gtnI ?F|Ƅ)~.(fbEdi>봁A).Ki/<.l k0[Z@* RrYQȲ/+r)jgiN1rrמ|0T`}(8yI%뎈;2vƵwyf"nҤr8I]Hѻ1IX¸Onn˫**@U(BdWp6'VR>ӿy' v$dDO{{z)}LɆD\N&C'6 HԀUc˭#? A%,[vo, { !Z(2f -3L$՛&'4bL1;"hVy3!7Ğ%eJ{HlTk[PCc]"ZaxIdUPv", _g5fl׎`3S"W܂G!X=dpNYg`}6$R :A]H2U:yF$zӡƸX$GURo: 37z\EV[gmgɊy$:kCd34l 㐰>ѡ%W-<``'_Z|#+fTyjwЌ2s YLI =Wq^;ˆ WccwD@‡nkuWzթZR{>ܤX)$oż|%UͻTӒs.5Kѓ_L`Om5F|DdI){FnuMG5c)Xqp|Y<^32OxģC0/x܂7f1ڄZ+ߴ-9)hAē>aDq0is;8w7;<=$ . $oX$owk4V2=A3_13N鰐`Br2VUㅋx뭻2ü1ʧW~ NYGN#S|92#T%\Ϛ,b圄cܼ{뾾7߾y!|I Kū׿oM8ZbuDӫ]4r)Qc:NWv;y9Ģ)ͣX\>CKvRڜN,.3iB?([Dw7VPl(ɒIIv8ѬC jG샲#ųw)\CtY˛MdV64/mớbŰ[ 9̋ '}\V<_mc6AOٓN$L:گi TPnTohuǙ8HFaXLkcHAH{ `_+۰"z]"=qxK`UH*-c/&DtxiJ;A_:_<+#Y#QDP]8>U?IjY'}^9PeaN1xU}=hVx<=` ``#Ɉ"2 Vc4w#hqFji<ݴ,ӒXQ%̷[+kkJϗ_!='1kuT#gC0*yRFb)V9Z**T%9\ԌLʠvo}:{T)Fb t(~{7҃uG'C"꩛Cq> endobj 16 0 obj 2596 endobj 17 0 obj 485 endobj 18 0 obj 4263 endobj 20 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream xZ[o7~ $YDI۸}.AǖZIJ&{83:yH U3Թ9& 9AZkbsq?S$I #1"!IlI֖DCڎ,mp_~#? ~lXxl<8?#·I(:"_ ӂ~iDY7~zr1f_ !9Lj.tWĘ8EqeL:Jm%|*b(AD0 v JcdTFkε#S*UbV\/S-k&Ң"†Q&X0S) Scql-ˏh3 m;}dUJ!M;‡!?#Z9% F߃f{]Q?&16vN{rMfc0 Vz Sm' =拙VPkށt? 1M%,٧ $N3tsW0ժwe/qZ:KųXM2 @),DsTYp tF0nNScFαLbWXU!Υ'/coࣤUɁx,\lʻޜyuuop9m!*}D0Ժ;K6#}x=|fԫU_K6O%>b !#a"9Õb$u=>[ ly*a"? c'CHJ|fq, WmTP !+n}U.]07T:êHpe+E B: T=VGZMףQ)gUq;A0XBS[$QϪ4^Il珎E *xnisLNQ´þo"VH$Yg? "&~,.뫩|[FP]?:=,4lU%Q$N\ !8`5M:\eglb x e[S6|9 `@T ؚ Z !קe[$ZV!3O֖DƘJ0- P;&j! HgZIðo:AfC}D%'MRRlvEL0 HLC3MuA03Kc C.63VvdA%&P~Xn):CqށH(u^O2r3h4LW$eXc ր˗>#^8a ]}}3z|.sHotS]ZWCQeXF ʴfJAP <Z-ҫ0lqe#0:T 4`YG b,"8P&ru\'Z}6lr]fP^icp D)`STOJtzo PuNeuMUl E(w4m țFݨ-af\3S4qjjӚi-zZqs ~Q k٥$rVKGgz[C9ߌ7֐ =ejlG;jСZ=hٚŵA/uFm5xr-.ΪOV&JH_/^,DCzb1Α!I_PO9&JI@ipU24i%F@kYqU0S>.:@@=tF5E7 l[:t$FXvUu`D n7KL׉o;z.iRajmWhK@_1ݸhKb!8ޒtڢeM1Ա%rC EɻEu1C> j:!Ri_ϻdU#ܶNŹT}nJ rt\CXw'nן}T$d9BqFW@Y,qq/h8yzgP![L:lΧ߼ϞE@;塴>jnu@]v~w<&R|y8M f#h|چ!@>ukIhs U^4;=t1ڍk3zW]\޷#(ia@U(*\f-GXn#ᵮ}:L} sf7 }vfAIt? :.P8*95.Cw萶>l`#XխP|4s2jHUX[S"^@V3,͉Wg'Es&:za,Bv'wW?"Wfۇ{9Fp+g۔pF7eq5Yd<)ĵn~"/>{3%N O>#:}Vpd3xyc3߯0m ڏ Be&ك; vBS޽i%ZIcMRsZ3+Rx(O/<zv vRҘD Ԑb U*9ΜgEY8+}]ZYLWuSuρ endstream endobj 19 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 20 0 R >> endobj 21 0 obj 2726 endobj 23 0 obj << /Length 24 0 R /Filter /FlateDecode >> stream xZms6_jn&MᝀIܗ^ݹiAi$8;H #ľb$0OqR:V۳?ψ}H"N :b1±ZD#)mе0lqhtGuq0&HDϰGe-ߞGwgB[E\ZX֒pZ6? 1frjv1fߣ3G`8SX܀P?%֭GbLII 82ĝ78|*B(AX0 z fMR!~2O!JŮJ,c԰ DnAfI=Շvq*fT;f |F}ѠgY8FXnԅz5\ͣ:3)~j~qT7,"eP*"4Ơ2A넮|3vjt#;wgsDBLAw2:$ '\/'Tm8D;j%m:qKyĿ;3N{p/h΁Eg0LePNgH%CLBug+}DVC`TGx{M@ܺh >N vo1?$6;$n]HVv8 RkrpܜGjD(7 -4< ϋ`vJa¥xKަ,%_*L#=b~4ϓ~̓/Q2"` jhgbqŴ84,_'1bVbβA*͌5 7+H:!mciIҚi*yER&is!I6Y])\?[.}Et>5ߌ >5ThіDiKFs38ZS _?=1:.\?7>BN4l@oʒ M+3]PO ~ɇ Vĸ#cSvkFH А[uY1V?KOi`i/^M"=5drMaQBtw mkg͒/N~*-,QSuBӶcVҶʫ~l̡X9TV'eӡDԃ w(OMTmՎLt :P+ˮz =B ԅݖPQPJju~ I 3/+>5Cjm33@ | /7r\js7|HnӇW.@@5YdgCAU7W`UpIC;TU>uic.K|ޮm]^vh[U7}ԷfFk7XƸkv򰱚ewBײC0&>YƟ!-Xd,Ü厇-D9Thi8DuzCXem cD qAbY䰘C6 'rZHjoN(8`%~MzLU,WrČ-}v_&'/M7=p&:ED=yڿ% |>;y-O]ss.K .`d?d8yr,qdA0O%R߽,Ϟ@nR}\2ÍrWכlG]C Q./h-trj [P^.Tw[Zn U؛d Gg>.U`Drq/4֎4āPHhOZ@Ps1M=8&Z.uWȨRN;s_'msNl&r7$]B-8Tm5VP %aJ]hsGs&zrqI.\n?7PEZ0{> NT쎔EZ^epQ6;TU[-Ť_%ųg/p|B|yQ e.R'> endobj 24 0 obj 2506 endobj 26 0 obj << /Length 27 0 R /Filter /FlateDecode >> stream xko"^uh^\ ǑcYs .%rGw3ΐ\`?f} 1I)kt-FU]'‘ͺf/qC둻_'䧟}hOp!@F OF'a+-| 04f]J̓7 1cjoާͺi1f/7?||"f%8cH[j41%%1u>>J"3MVQF @a`pH*ѓUz 8W(^zIZC-;M9P+0\LVuw2M_D8cT;FnyeQa6tm[Ug]cȍ~`Ɉ~vǤ~LD&2AsEf 2AG 0F|P-сT5z-Z3fs0oN'B's, Y: @x-?{ @uS#v0^7TJ Iݠ*$VʚAf5vFV0A5P"A ϧͳ&ڭζrxFnK SR-a,#T Hogn^n\P \ϸ67EXFۺbt1HDxXE .0B'ӓ2yI#Y ?%WOzINMN2x6$?Z R[CScP <F!Pvϫnt,Y0 !Bf%(.m誼"zQx ҥQй?bNxCٹ*?+WAlK3q> i rI'ėI5ٌ,;Fo-_n|R!5- ?pu@KW|/2Glyr5RT2y49Re`uh^DnUuE) >J#,=АzgiIǫtwN{g$11m/rӏY-'r(:z/#|4QR dB6US5y9` ɹrb9LЁ!N}eI{KdɿSW 5?Pai&2gx1>S<9|f2cF)9!SC7Toa=αUH&M7D E`phs~l(PiɈO?vYX:b1h26Y4&`-nxzL);h-MOO(oǢw$KOp2v(ݝ!ΗraY-=z҄pzu|_6PI#'7Rߕ[B0hzcJ^]|1gnm>6;T(VhnƨFӳO旪ciqe qfxWim]IwZѹHjQZ/ƳmsPu\E~ nMqτ)85ғ_߬sku^WtNq'"#\~eU ,ŵkz$ȵMFyW$Zm߿S<Nsts|fR\4|SNpi yoA,Wi+4؄cu)!yn]¦s$HO^#%2"J DpZgn= ,5f?!}:[lY\ LzՄ:=$}Nz)ka¡ c5nBP3[,$ŲWU't}_@*N1חHn[Hd N) 't:1pӘM:ks?\ފsvYQK%A9RiՕ0a򕒯apntLbC?sgc~uBx!;|[.cDvl*TD1@17c:_;Vmll*|8kL"@?˧LR^8W:6ĕOĨPS O'Wñd:Bbh}.N_ un,p Is<>xP)K IV. R.K E28Y8X;N>YF$ sLBn0:K1X*DvhdF>O6͵RD endstream endobj 25 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 26 0 R >> endobj 27 0 obj 2941 endobj 30 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 340.27997 291.975 352.27997 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 29 0 R /H /I >> endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream xko~"_b5PzI @l_*ɮtnᒻ.;?Dp8'QdZ댡9/Y'9QuBfC 591Inu8.yNIC?=_~(Qǣ??q 1B{j[8ڳ ƙy,')30g׋cJ{ X t\ ~ tgt HBXGdRנ9VSO3@'L@OWY¨:H]Z%a}6U,&ԬgMQq*jp%{q^}=ty}x;nnד?˧|,irO4I1 Tϰg]G]-h7.6*~l7r]}H7+W6Zկ^1LZF Iͦqe?jQ˭L w89'YxkgG1ԙc:d&B{\D_=y}OOdvc;F,N2 '\_X\ S1WSK(#,fr8,ŵ(#{3cć<>bcN I tH XQCU.rMs4P"\Lc͖$͵z-&gB?" x6mV0T1ogX\X? g{3mq7 I O~rF4n9c O4y|A%VK:tfaد}t"|фR*ȑT3#U# c gڇm8-Pʲ5WkЂAԣfX,^-Ԡ(:*$(m pRCQ^o6U$] L8QmvUqibR*ۈkW >Ja H+ՈPήeܺF2xˉm[D0,SC۪Btaim1,54־!Ѓݮ0sPp'VdӞDm,A蓛҈4j`ucd2L:j|n 4,ϳ$9ƨ,9O#;2ƌ&A <9pA%a"R %4Ez'\cx{X:6u?^d9(#'>nQ[wW\g+sчE>O Ȣp )s(r$(ͧK AxpOX& jECXhHaf&4ͲlNzI@4aEffa9MrPz$;f>ŁŸؼ $ Xr` :2o>2:lbgUHi›m.{5;񂞽?td+O',(kD18,64/DAON-_dɢlLpJZW :s˪X}b<ޢgYX&J{yAe|B3e7>T&7+$QS2b V 3 #MRmyA qE` E8(x+g!2_aZZ𲫎yL r`{q&qv'S:傇Q6h KVTMa7")xo/IS,<ۖ3|fVy1rtAK^FNFxϢp c#<^zQwaie40My䊶nº!6zfa)l +x#) -rRV%DFhU/$u]3-_za%ݼK0n/|fd&M[3ߋKfu0>P//ׯ?H~>(9C06onURi}A'c |R S.xx endstream endobj 31 0 obj [ 30 0 R ] endobj 28 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 /Annots 31 0 R /Contents 32 0 R >> endobj 33 0 obj 4077 endobj 36 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 358.848 363.627 370.848 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 35 0 R /H /I >> endobj 38 0 obj << /Length 39 0 R /Filter /FlateDecode >> stream xn7(ܗ@ să93b)ƒyEV,>DF[-v| 2JF׷G?1  t6PcSDvȇp/0)|%#? 9;?]#蛄qo#[8ڋ9?y_8Y"GRfp/O_/oN(?^^HDM`:R}@`O$՚yDVH!u \Bie0EѪZ8#@ t2 jJ-x FNL%%aK!ҭx?doKrì?eW6n۳@(c`o?*C+nz ^_^)Vv/98bcO;&!6-s4hL7Q*Ӌy NA#zv? [gf^ }q_QIq1H㊛f˶ĕ6K`gcÖ6),P3O88 [W{8DRXp߷ e^)w ]AuRv ]3|9}ɣsM~*te[Hf`$(XjI DTơM[Ļd@e$MO__|d4gn\.М`VWÓ?a~2-嚓~qsp{dW l.t$29k~zs}ۋ+ 91A!W{7ח>?79R˯e88V?6tnZ~f$ҹ]]6tDZiny ՏU}~s{\ߍS~xW_/yw9l6]K߻ M5 xjh߿#) EOR#sX0կ#舶h_y6'o ^84Y,1 c30~uA " MEIR{ڢzSM*+-GˮbQM1OMhbltF%1bRJN:FDzOSN% /%c|>N#:>kbxbO O݄QǞD;1 f{3%g-CGb}kHx>KbahJ%Vbwdd"v%62Bxkh_-aGpOi>.+^вMOir) TvhV׫B:(;;Xo(|H<\7n4Ye!.]1W0/q̛/myn-nR,==f>%! i9ܓFD#Bi/dhp,bBc}+U2M2f Ҡ޼%Oı+JEi?9tHEvG̦UK\%z,OSEf9e%DkE;?\d ÉIӒ?pO@~6^$Yx&THʸ芈&` <3@u.(^P_iz1R\-As 171wa1=tIv,'L|"1[B׉O|Qrr$5DM#eI}MkV2dF|E9A~$rq%ݓ{9JYu]S*m>I&<2V5LS򗾬Xu*~x8 2bzz"`8QYb`u>÷.s/^ώބgpyy N]U~Z$}{u}㓫x~wy~j",w$?՘%]V"terrYmOZiaz3z+JUr:n9hYghQa,nc=Nʓ=GM~ʯ[W-Q __6M8p!b'>.~{EKl 0fgŪ|KpZԔD`޴]$b?r-޿{_W'ϲ|&ZgD/Vi2\ XijG%?kAXB^VZ`6KI{Zi+:nNv/kG2 endstream endobj 37 0 obj [ 36 0 R ] endobj 34 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 /Annots 37 0 R /Contents 38 0 R >> endobj 39 0 obj 3708 endobj 42 0 obj << /Type /Annot /Subtype /Link /Rect [ 102.303 554.427 117.615 566.427 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 41 0 R /H /I >> endobj 45 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 283.46896 352.155 295.46896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 44 0 R /H /I >> endobj 47 0 obj << /Type /Annot /Subtype /Link /Rect [ 87.117 116.393005 102.429 128.393 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 46 0 R /H /I >> endobj 48 0 obj << /Length 49 0 R /Filter /FlateDecode >> stream xn\]_H<dk]K}BD$(!yx;\f@({H gs!(wV2buP Nr JΩD|v8.7 _/\ݟ/Qv<.h\:8ЅZTlvHsƙoy?,ORfaޗNjWRd_.//@b &Нr))h0?}Ej<"+z]WZ"LQj?s4Rm³Q+uv7[P_U$GC!Jk( G)̈ZXnW1bwo;%liC,u{{Ck@ 4PkGjf#K3O>s6^b}]JwI(ȟ(YYT@g u.4Ж!ZOVO9TJoVfk䧻vݿ˗}뗟Em3( $G[@`AsPc!WwHwW;Ē_nI;E)JIgQӝe-aY˸sC1kX밺x 55ա{,zY®֤Dl4$m@8FBBb &Af2#Hɭ3Oa?rµ`A7 p(87 NZ8T# >i2Dvc $19PDx>M`70>:!)`)xC,2d@1+aMiC@0?49N)( )gI=]? -jq&E k; Mcno6T -T3 (,DR1ܐИ5rJ])# rDKq OsMdn2j J&)˳Lx1eѨH*38zmn9~.{c/ipp>Nyl1Ҭ:~Rfßqi&30B9Li~A dy-FeMHogT>%緗W_fvT1?Y|>f|U3-Z@.f,4Aa8/8wR7"ۗfy ޑbMuYan /2 IS6ߤ" ^[XKX8n,ZU.e6cF'=~tAV ,z8M\@- |%}YS(*:t2 {[â:c-KG K*P@/\u>mw\Z*P, vw1(ߜ ZʛQ߼!2mK64ixQG}o�.\o |[P|u/`^\s>ԋiu]r:ӕ] <**"\k& +e0x + vlȦ'V,5h"mnZˮw躂9.jO'e[t;q6:Ո&'XӻV evp^s]L-k|hr + nήٚk/!buj;E^$+fKg>Y}*sg]s~jiX6YIPGPxٲ&MklDh,s£QEHO"O0Aa oe.n!оQHWet]P2R[-,ȤųJъ)I/,Hc@=i M&2'}`L*v#7J 鉲H>o\6ׄ# KY*.]2Ju # /~!l~Wk-=USEWa1)y gBO4*OwJKMjmoPNMa7Ulwڒ+Ek@=%ԃgkqn0M~D3hEF}>M6WS,uaN טx.#TT&6mh98OBm*R8K-5Ugf P{VYxUmii8Џ ΌFWziY= .`; t'NOne+t/CZj@0E7= r&@'/q-iJHBHSPޚ68@nel41>L dlzt%5:/prwOt:9v_$8㹓$+fu!,|>|e^iuEhѐ3 k~b'K `IJ툒6Imڷiʶ6,ߗ6vc=yjj qGm!Ń Z:CYJ:)hwy+8yK1aY"Liv7g7Wk~v&cW6i\е eũ:qŤ3pm6M^ QtC̸ob!Ta}T78J:eLK<̦3U5^x9yCX&nfgm)ZITYf&h+}Ici̷g-26ݓt[Z3|=ӻ/GqX9:8N? endstream endobj 43 0 obj [ 42 0 R 45 0 R 47 0 R ] endobj 40 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 /Annots 43 0 R /Contents 48 0 R >> endobj 49 0 obj 4536 endobj 51 0 obj << /N 1 /Alternate /DeviceGray /Length 54 0 R /Filter /FlateDecode >> stream xc``v fb``+)rrR`g`gfdcOL.. *awqa@FoWA$em[rAQ >)@#yƔܼ {P^RT rf``bRrSjD씒 9 A! ɚ %y ): 99 E% EũEe)z@v:ȟ Eɉ9 yeEřy  z~LA`g8恄! Vppv1> stream x]Q!0ߗ+]2ve\# c#X$GȒnv- Oa}B GAUHO4O1e|o{}r X,em41 lEUDa`TGBa. zKUB^ .yl#DԤ9Q;C^%os3=6뵰 z% ϋ1X|_4%eSAɬ9d endstream endobj 54 0 obj 317 endobj 55 0 obj 240 endobj 57 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 68.99896 361.311 80.99896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 56 0 R /H /I >> endobj 59 0 obj << /Length 60 0 R /Filter /FlateDecode >> stream xn7}Ë]Qt:YK6v8dY'a[2l ȿodi%~4un{ g$#;T 7 9QB#%t4֪Ip3px+ 94y7ws?7?poJyC;8r?m~Lx,\{<"n@HԺ8s+/  OR6"K/fR*^ /9} E*z5pʥD -3A&?-8Fk62B ˚+S)JG:^5Sm=HFƚ썥LJbtG9?o4dT)VR[4RZk}h.ɵb\,?fpg7 r>}dǑPc A=C8Rť'w&I.۞~M꧂h=DpPa)k8.oFp䍡3||( hl#H+F=IXd5Zx1gqD6cs#%?C NoDqU)BZhN|Ow38e)$C%L =&nw 7:krl~ Kftg߆]p2D/҂,\.iv}KD.!&sدDcKvҼ~o/59Yo=$#!GasV{R \WߗQLcy[i(Pt׷*??ܼ}("ݧh_-ᨉAe__«_ӻ<]+ E0cÂ?\޾z5ݐ=b*h4Fj*K1$U0~;:]ex;xO@'51[@"xWNp7z8}Nwmɇ@:g)*f҅=lKIF%qdjBf.BD m*5@9LrLlJ ZmoVA/ǚ/G5Jt3//Y%E iܩ45ҒYuSsX'StRB%Č%#}~n\?x@4sqip߄/+v@sd'1gDW>?lnBCB.lkT!HP=߾Y$k^U*h* Upkɥח/NM'pQ'Z 'Prw8V:}ttaY_FũVDW/8W8 _}~oMMϟ? ä'K^%C}5m}\X z0~4D.?76Xh8;$.(Bļ{, Q ,($r6PP/)k] /pMvjl`I9ϳd%qv{ tƴz1أ@"j_Z_Z_P^nxX 08iVY+UlKȺG&;7dy_F LɌ>@L9%/97דuW&<0`.FT|jmbdTk".]̅f7ҹk[qlt~|XvnU ΝKT{R.ikA%ͭV{8\"4 ݿw}gێͽ#G؎-Ps;E6l6~k(Z>y' {L %SA e;"hޫtAJIj?ۑ% lv:Cq,qFm yK@0QWQ0]qb"ڄ5o!4\Kl},LJRsaY#wIwDʢ,\kݡ)[a~,ɝ$/Hyctʚ@Co٪8!,KRKxwVx}S-V3+TaNS엳s^vJS +<;9{[jIap4 'wslwx51PxuNIKivM3' O^,d(dGaǙ%5B+6Z%uN19="U!ELTЎcQP\8,Vkbt(f^"&Ը~07w{3]uK5eYLxDyB4jX ]ZJ[R&ng{4f dFZCXPMRqS8])ഥPF塔%U,ZI1|UKILc^35b1]~Clzf=ңq>!3AnCvD [gZY>V+dh-. h}k!ͣ ,uB{ YgڲqMNLihAmR&%W۹tS`JfQ\5ZfRR56EO\3S}{I] cr!|ZеZ9jk};F8mC-8OwCFPnTr"{U&dvޮdY e3쬯{ P[NA^{zCӛ!Ԯ szij Y-<CN8!6>2ڳ_Vc O|+[ugul4/U t6šDc(I<̽ _K̹e\u:|Qw\ ~ -06t\ptꭦY?7h&5J&m円nz8fg4tc^ I` [o'V'BKYNJ:~\m'y"ޯNl BNՓvXmFC,cGL?7 \t&ssVΓ'mGM\( :lϧ4-^mL3"Rg-\5oI~^XѨ[=ڡ; _z/gG m/p=EX|$kLcV݃&]ibZqgqҞ׮u]_ӫb,F'W%Svi a}aTkdkoMLQښ?J7aM8zlP`LQ++晣(46dG bxҔ?fYS̏- endstream endobj 58 0 obj [ 57 0 R ] endobj 50 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 /Annots 58 0 R /Contents 59 0 R >> endobj 60 0 obj 3610 endobj 62 0 obj << /Length 63 0 R /Filter /FlateDecode >> stream x]koǕ_1[~he,-6@>d.-$:$eQTs{fYS=QLcLuֽ+N%B{aW/OޝK22k{Q b+i*gW׫bx|f'7'b'+޻Xʮ>'nXF'5nlW2.sd͋W ^W*/#?h}Z{qc!aՋ?<{~(PFCk44 .g"i6.n;Zƒ?eS rx.*)1!B|_JaJJ'lo>\L;8*oebm%VR(g|kЙ;]:꽯D]gxR)Wrk'Hd7C{$o 8&QHJ9U+ YVz5JUľn6,ZШh3|c}Z~Xڥo o(yw=&?gHG™ȷ;o[|}',[iߢN15I^r+m+VOjPqP]N[> yݗz:֗`_H j}^lp݀߼VfxޡI6۸zzG7[mAOlP}2f6I/6#y!=K:&eXI8*JJ5Q4Q~a0Ŭ)rnJКis(r P"}P`ѵEu8ROpJ8.}P"5l >lAjwEQl s>r̵}@,y ExM溠Dv.CqdLG t.G]`]er[@).f-`tz1a@4UA'1H ;-2`LEF/:2C6)de!#!1,3dk^4RaD0>jU$V*.mgc@X ׈>T3bo;MM.VBVOX"%,"nE!Bs<:y˓%4J"ш-3'1;gD&@&+m)W!~7)R{0RjfcJy!rƌ*V aD&h_yaW5͢ૈKį (Ji縺u\Uxe(Q_2vdFP\;$Xkk>\v*Hl@Bf\>n%lLJT,X {œ-BVֻUDr9p@h{.o_W€ig2 K3j倅Łr@y@ lRX^SpjN^(ŵ<gm-_[\ z0Gc)ŏ8 al"u |]^1gڀ`^3r@ӁNËp]Xi3e,,/)f@v؅R" QXRB0ς@:9^^&n3-ge.=6/ sͽږ"I.E&\$^ N'l V>hZmZrB5j}d0iAix3Nqѱ r3ƒƒ%րLd#*[ud Y1|Emа|-)ջBNxVbbg,Zr¸` 7z.Di]/g~vq (QVO>]fxWdҰ $I\:XDT!x H%P Os7x0"&VK{29:*UPV,e,N9k\V.耉/a /v, 9۳%c1yX4[7ZԁNL-M3p.35E2k*3";^WD{,t+@4YOl++1Dg^4SQ}3srp ,ZPE+dNe3?Ld6Bmv?͜S[ymH 9T)00Knrs6wfL gҎef5 RZOf i|>s}1ΛG&g-JI^1Dk#Ѥj;Uو3R<EcgK#E'}}tT6ZhN!Q,œl^a¡O]xVϹ*E:JX@ȲfMtR_17:pe~_*_*6u,2/3y,[5; otM`*\#?F㖈-:pǎ-$y2G.$;~xLeǎ/t8"qK,liL!c:S,jWi j⸻2w*y#aḂꐉdH)-g"Nx\e}CKQ wѐ']沷q7#r1^ Í|v; ghD` x.]#3`򃟬$\6@~v` m!:`{樑QCQp'B%4?BAea  B $傡"0r) jaMD\mRم,@ٰ`fE.jPn!XBNDckYN@kU1 m77hOB .4W,څoA(B3е{a/cquǫD[D>E)2Y 3ϼP='z`y3@pػ_Qi!-,*9;6# <p9 *P; 3ʃ&WHY &p͗n^~-ipbICǿ% C:TFa~?T`pD#o}#!i )ױB/ FR9g zk %^~ \I%&bŴOiŎ`pb%RNԻ-遂oy-\q8wTn/ 7EtiL GRPdwrxws)w6ǻ{9ɽ7xfmӽ;ni%Go8vޒ]XHx<{ު·4ۿ1I!ՌnP3rkFiFLe9ku_5]ktG-LyxIuWL6C[}}r /YsĕHW>S9ko+SC-ܴ^ƫ<P-ȫUݽ(_D5Op7`FHؽ"*ߢKFıA ꇝ~uJ# yiTspCTS%>*͇Hn4 Of݊COp>vIVnG7/>\Yn ǺPmRqR":>lG.LKäޢL^o~{Ǐz{! W&[%[KDdvRY0|4z݇˷7cv߮.}X+HA_%hpEOxz[ٿQ|L1}w/WBPsNuiPS?RYz1aRl+X߾ǜr뛗o/.o^^~}y|25[!%o>rwߏst$!|;B%|Oט8|GFLMeyg2׉5&~Uf%9 sE(1UTY hbg>) o?\o.o֟ޜ}>o?)? dĿ>?[R]5SoN V/8;[\4j*ٖI^~(b޼&ҧ4Zs|" endstream endobj 61 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 62 0 R >> endobj 63 0 obj 5259 endobj 66 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 125.92395 353.89502 137.92395 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 65 0 R /H /I >> endobj 68 0 obj << /Length 69 0 R /Filter /FlateDecode >> stream xZoIb@4~p٬Lap=V~ͣgb vb4Luuկÿ=iN(Eq1|7H N `2FXicDA8])fv^.|(\OpɫHN-hrBh.qPF޻)N=i1Q,{ū}1;(^g^ِDS`-g@ 1$Nfq9&7X@D`>ac(AD0 8 7R<9*O#5 KzKL9ي+njqDpQaIi EĩMqN63f.ΐYRkͺp1h@AJC8eK(~%>;=H =T231@&ŨdQhj!H+l=qS,%N ̍#`y-Vo5\Z>D%R3/8" oc|m qW QiKIЈ6V:YyvY(_06\jrBrYOVM/'O}ĶȒԖz;^UEzu#)ƒ+(>hfٶ3>-oFcV,h Ha1>2d#]}Pٍò||d+L'yT$bJv]7a w⅑ (-=l VM-ocf)7O(<<@Fa)QLvFR%t'@Jme+axeâ.α÷Gz"%H?l|V-_& *seV2՝evu=}V)OP\ӥS|}f`H6R=~vUOl 7W ^h&=2>7oV{$V-P60X(ZV\dÉJ4ǨhW>/rEh5]&эͪ5~9䲬.nzyk8>nezKpCl=~ZTYxYAMPcS=I?XH>[*{쿎TQ.FtoC"~jQ52-Q*9SZ)%w$7 Q|$ <ࠃ2G?[Yv3^uV!.{ŒcW8A4'I'; 6UwqV|A^;Ux;xbr]#(NN)ZG*iK74$ٗkpt{%8q?Yq/w#8vqQ4OQ;j^> endobj 69 0 obj 1953 endobj 71 0 obj << /Type /Annot /Subtype /Link /Rect [ 241.943 131.706 257.255 143.706 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 41 0 R /H /I >> endobj 74 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 88.50598 322.94702 100.50598 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 73 0 R /H /I >> endobj 75 0 obj << /Length 76 0 R /Filter /FlateDecode >> stream x\ko_Ї AѼ VZ P$fBID./mX6-rvsgǟ{8{'ʋВ eaw>Sͬ)P(woiu=^u履1܏{?td&d5x'ocPHmi!Eyee5~yp4ًZ׋#ιx \MQ ӹJnC~-gv>RZQ2J+mSJVa0;'OV& 8n=^k|x.r%mM+r3g0dRKƃʆJ5A\;C/`-b٠/gYsϺx)VaIJziZ4RiR?$c$rh?D "6T\`\!`)I@Qm[5f^:rSiGY7ka &GYfhdgC9*!,sМqq3lrdCAhYcKr[צ8pT亾%Mn,FnE.x/#ǍImpNA`)ϙ"- {aBV)r28Z%d)!Zi]>tBUz&QQd4YM e|8u/~,x@^,RW/zL>,Bӝ\W^Jho CֿmգlW% gl0`5] znL:dkŒLA<-- gW\*JzaQzkM&Av8P1Zcw&eA+֏jd`2"P){UtGeU}KYZ.ڣ7ggߴBW7ʬ}f~>Ϯongz~ o]^/O7Wo"f_\z'd]a`MXR5րZMb6iAػac DvHe9WKOP0x{~=DRrjrw;nn_R8*b˻T .׷Iymu%,/foϖ뻯go&g8VdۀT4.Mha?'b(__'sRfyܼÓ (^O(A4*}BR 46w.|g5SVBYXizL.+зѠey`<}~`__Υv&>rf{U3i9{hb(Qύb É6n{B0* |I#n̞S_z'{A!)m mU#/(NJzNJD@+ m!p z_^>boq1{m \"^U6^{tUf#DuђՍd/Jη,'Dۣ-ڣ? iNYyx2r]׳^@gSٹ|^7VB.twht<*G̦,/#)ZѹZ0e:ߙ0e ^saSDwx25ZViA6O#Ob1'^cY^d}Ų< #ǜkWj]Mwܓ=kUh> endobj 76 0 obj 3917 endobj 79 0 obj << /Type /Annot /Subtype /Link /Rect [ 86.967 195.58398 336.73502 207.58398 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 78 0 R /H /I >> endobj 81 0 obj << /Length 82 0 R /Filter /FlateDecode >> stream xn6_C7E14`N-Xfu[q;6{EJ"%ќɤCL4#s#)P`🕌Xk1T5/15\#tm(:&VUr @M—5ywz6hwP o4 |h>cUk8ڋq<@s޶Ƌ%$e=|/%TJbNI{%;.#9ڏ8PD+̡NU#T8JdFD`TshXV&rr)5e9 >h?{c |xBctGW Wc43tPS!>i[ pGП= D{m-8M/m8x=imB ix&"M$L†@ pF/@i`.@US5hi3h.ΏxU}Q#D ^>K1 "8.9uY|$DV+" ӊ"᣸@Tc s%(,_IhM1raWUK7ײ]s7aQ E]9'q }4u60l[[I=?4;ưJl:;cV c;Mрrµwl;K"qt_C]Sh_7Yw׳2Y|t8!9 ,uobۋ nPXknW `L+h!;0`o!)N?[J+2*fcJ`kgSGJMx6f 1AEA`S'R6;aH""jAp)e-pXҹv[]\^gpuPK܄cnƃZ"l ۫-1/Y||$[`˨nNq<_@݋~P_>_quvȽ> ?^]_̢1u-1K,6ֵvld p?MYvv_i͋)|s2:/g9-X6Sū˫HLY* N)ݣzT0v~ي?o׫T( ={ Xe䏋p_EvKV 3$0swwۻ=};p*L~|ǿ3'MG>e6A?I~j?jim.+nFm39_呹H­oWz-s wu? ut*=sEav/F*tz>/B-㷼ʜK5J*J|YxaCIòe bL؄X2mSyDs ǣJNo{4c}80C~M<1piPщN;&N(+WȄ&ʼ %k ܄==n_lKbpߍe#o+2hcpe6O@Lyj W9B`r>B`Wb襆@6m"i/(./z~3lx < Zt=vk;!rRKs aP|4hC#4b!MrN ń Pb|'M4DKLc$aX+AB!5?Jz$v юQEnG;jӐՙV0'oGoײ/Dxжs4xg,n#? cpTʕ7XJ;'%nvLk-i8vn3&άxd jQ9`M2 ta9,a+>fBOه ̈́Q0MXCq.Zn973ﴡcޞŰO" 0.jy80m0.ktP⊍c4NI8LA?9`v˙_B4z[L3 mwu菓]݂M>Cb]5՜G_U$< ; dA`8Kˈ1XMQ^%뵴\7Wa:'T2M?Fg(~I|s}_Z>EU&Sn9Z+L(>3> $26߮y\1;+Y6bv'}òK{A<0ߧ[kq_:+ endstream endobj 80 0 obj [ 79 0 R ] endobj 77 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 /Annots 80 0 R /Contents 81 0 R >> endobj 82 0 obj 3954 endobj 84 0 obj << /Type /Annot /Subtype /Link /Rect [ 251.747 585.82697 552.755 597.82697 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://sourceforge.net/projects/cm-unicode/files/cm-unicode/0.7.0/cm-unicode-0.7.0-ttf.tar.xz) /S /URI >> /H /I >> endobj 86 0 obj << /Type /Annot /Subtype /Link /Rect [ 99.211 571.427 297.78702 583.427 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://sourceforge.net/projects/cm-unicode/files/cm-unicode/0.7.0/cm-unicode-0.7.0-ttf.tar.xz) /S /URI >> /H /I >> endobj 87 0 obj << /Type /Annot /Subtype /Link /Rect [ 150.924 529.196 421.656 541.196 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.sagehill.net/docbookxsl/AddFont.html) /S /URI >> /H /I >> endobj 88 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.799 529.196 552.755 541.196 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://xmlgraphics.apache.org/fop/0.95/fonts.html) /S /URI >> /H /I >> endobj 89 0 obj << /Type /Annot /Subtype /Link /Rect [ 99.211 514.79596 330.919 526.79596 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://xmlgraphics.apache.org/fop/0.95/fonts.html) /S /URI >> /H /I >> endobj 90 0 obj << /Length 91 0 R /Filter /FlateDecode >> stream xndxp/` r0|/N&cߞ";ٯ ǐz$ګXF g%#Zg UWOwcam&t|l(:6&VV?r' w_~o>}Qܧw8|~pk#t~+ v'R0o%Iʌ:=T|}5 AS.,tafAjFVH! g\"LQj>pU+h <6^S҄G$&H;b9Ds Q s2X ?s"8v vzSy_wKCATשb̫~}|v =SBA`1L@Ȓ-9 lr\Ca*5Pjθ 1\,nK AA|J8]C) [p=Ɠ_>+gW1+y;p"sC9cD ȑcy^)& j4P<=Ht5e*wp GT0m(!_uV`k¦|~Jx ~q:&d=ƊsA((τCf38ӆ*Ah5L;d8'9=>όː3~bLJݞQ}!rλ%.q ɄN7rd/b2ŏo {l RS1ib7PJ1lF"}pڦ N˭YߐxlF= qEևi aʘ9- jiggDʕ/vpY^OpTHN-Vkb4e3>K|CN묗;nToFZ,-Z,iqB]@moR6M)'~?hn:͏cL(8_HKcZ(=&"(֋`uأ3?mb8.*Il1  d6)<"ǧu-9Ye72=LijX0EPJ clPCN,AU9]]*>+,t؇~(α.7Yoơ]#[_AL+zv!B0ዯL5X&_45^!U$z-$Ujfͬ#M5SENb>êW l͢&enUt}vz/,ϏI}d8\^3"Wjk ٛs whQa_iF4'|j*ճK烕d=%P6Jwao Epn`Z]NzWka4(Obœso.Q>4Ygva,A-ndyk?>'H=,o{& pm}m?۹=\_\y]D측Hxkf6q&6Vz.%gvm*e06Y_fUM_=_:a w[Q (}̜H*+9gm%FvǞw S ovϫZ6<섫x9laaC}lLFפ;=HGe))<6h)csacw,@zN|6XG,]*TaV`*!%o] [bw3p䱸Bj+1S;HI9g>xXYG hu#zHM>2m79ӤS&w N ?opaC Ja;膇FsHʆ6ТIST+O7Oȱvt_Y~Erh:M7J˸WW{jϙ}yPW0I'+Ĩڭuq'ʪ2&ixZ9PD.H#`k= HstT>)a]LvHl5)1@Gnhu[آU3=fi1Cǐ52zg4(L}2o^Gdr*6bҲ*tr}0qo@?zˆRYYVM5tWQeٵ;w+8~Ψ\BjڀB">e4=O9L23i퀕8it~ߨcoI1ߗx]M­\G=V"8J^<ĺPoG+W*c * 5'x+Z71Cחg\nB(p}^UQWpߡM|=cg KvBRƦ r^Vپeow ԉoUݳvk)T:A= [RuY4@j91eџv%: =c©[CטSk|LQRTHEpy@N˔iİqN۬4i9jwnQ׽!ҝm MY^'Ơ}=ag|S/J*Fw =xLxS΢}c(7'5N`t1v]iQG=LkϘ-=qr\݄/$MGCO>8:Y0|$'鲔+j!M3Q@vw^&[bѳT"{ymmaedi g,Z~@WO?\L˳@K("e?ZVm'D&F]LumVjXObɇ꘳ōǬi޵֚LH\m,`)lXWvV7%flQ*u'U>>fVT_ҭ<3@4*\k=}w,{nlaJB ͟bPNʫ:YlډϺ79ݵ-fQ(C1a^(gh29 "كr5):"g];Vt;xo<5|GZx+׃h;qAۈ_AJĨ? M# ʹdx-Oi \ TMs;C~fD;bM˵`tMibQ:KFUky,Jzo(HaKwW_SؼvzFa "Մ+ffR!$Lp߹0(J//A/|S;C_.QTotQp 'V޷}s\x+\Z07zU~ξۻ\CH _F۹^MKɔrB2 ~/ۿmm('>T iʇo ozuWk*h"EOz_8@ /0{x9r<','{ *^''MMʝCD1*rpު"Q|(f6I<6B[W_y?x8u G12pvTP endstream endobj 85 0 obj [ 84 0 R 86 0 R 87 0 R 88 0 R 89 0 R ] endobj 83 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 /Annots 85 0 R /Contents 90 0 R >> endobj 91 0 obj 3989 endobj 93 0 obj << /Type /Annot /Subtype /Link /Rect [ 95.334 353.76398 454.74597 365.76398 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://xmlgraphics.apache.org/fop/0.95/fonts.html#Base-14+Fonts) /S /URI >> /H /I >> endobj 95 0 obj << /Length 96 0 R /Filter /FlateDecode >> stream xn#7_<8y6CZ" <(QVf%fE}I6= 0C%Q 32aBJ6C lCrdzHgOgpVp33 `н:&qQρ3ȭ˔9ÀFKys`(p~g?qStFHZ!( dQ*C"D 2=xE !W+a`@'JMAOB\K% nN9y5tT bMU cJ PW/L& *D-$@U6#>hi#+@!Ө~ cj`UJ?jld\ɶ_zGÜ2D!o*\H$eܤ[G`UCԄ_w̆@hB3U_dglCzGLF䰃K jBϼNZˑQmRØ=$ ԭ¾i(7^F/."q",VJ`H-E,lZiPʵ[ɝW_("qW`R;Kw4c]˻ZZvk/t#NHrB0dezVǗȖz\rnR=(+f"=2"l}F JܘW=*E~H|jr:^1D:# #u\EJ#!' I2rqJöL'7s_sXٲ5@hn5Wq]/Md0!NH9=lTB$KYCP[I7xqWӒb~?r\ɤppx3W':v bPu5} =xkk7Qm:8@WOYI.es,91 $Z.!H\O"h9M1!s t`1j|aP;E KUd|J鍃 蕍 OdEih!-@&(Qc -8TѰ Cҙ^v3Lz:>ϿOe`X7v^ُ /o{[gip\7RrWUވIQ>|wx|>=Α⃶9ѵ 8*ʴ`P6~x\y]!M|p|7 pxz>7'pwvt9T6RŇLyꏋqzqΉc?!"qئ>H2OkB; qhـmھr ]UFv r3`^|I[6NR\2ܒ TS9ySE c\gǕ OrIh XiԺVFQ:J-k Wᴔ[K}KuRuJc\qXL`tr+ X+LRr8V,f@>!ѨJL&t8tT֫G"O{s5mιDЖ!I~;/̪s)P[\KhW +בT) QKP;J]4'frZyRQ !N)]gx>&㙝RMMܽ hAsZO*#R)[Sk?|F>>ӕzñDN6b={&!n͍$[J\O:*[YK 8Mq$돮bv=zLtnxNӑ @ Jzaڎ @j] ڕ"% _h,${8H 4.8"9" gvVfie`ӮZ3{9qFLya9gG=*Ӱ75>TЬiߝ6ӅÅm1bub}ڮ2ubxyRar[?~;js>\E&89nVρq5+wݦΗ Ud7O'Twby>}r`JXҠޟB[g^oO%z\mܛ[}dztr7'-ڹk%×_K1ޮכncRfs_4@(Ou6 nҜpҵH ʚJ`/`GGBNR) :έS\usoB>i&%BwDAǒ\:D{hAUC]Sn$aq7h>#1E8\vO%l}auUR=zXv.#=-,e~] S_ٸ]-ViTt97*xr{~qu^YoxvG sm:z7&vP:4Tߤj:նUAC酱\W9U*G/*,YRq~$?i~qҳ]0-\o endstream endobj 94 0 obj [ 93 0 R ] endobj 92 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 /Annots 94 0 R /Contents 95 0 R >> endobj 96 0 obj 3661 endobj 98 0 obj << /Type /Annot /Subtype /Link /Rect [ 386.423 116.40198 552.755 128.40198 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://xmlgraphics.apache.org/fop/0.95/fonts.html) /S /URI >> /H /I >> endobj 100 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 102.00195 145.851 114.00195 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://xmlgraphics.apache.org/fop/0.95/fonts.html) /S /URI >> /H /I >> endobj 101 0 obj << /Length 102 0 R /Filter /FlateDecode >> stream xnܺ_}HFM"Y8"iއ-';;1{7D$hL$Qg8G3h&H8xT0(tsdc.eFrVjN`}Ftbf)1=1u Bfg;:20J`@DgzRQXQV.W\@~Z@A 8-H+D`LH1=ZIĬD7S-iȑr%RȜc,ψ0s#!Y~4c0Uj^il[]T]i ډ jW2GT",:!툡4; ARC<')1}Bb+E'KwyΞ~B|y :?;nm=m/.;o^_80!tꟶ e0+!u-&_vg`,rPf2N!ZOP.v0ZOlW*ofοW 7&˦I?f4 EòTuP%/JHNŏ>@^?ViAB=B}NjcP|T]=Y1zYNU .Kyw"QkqcRuF|-o&o&n RPwU\B^LHHTT*nԲ7(JvcZ~wZ (Lua$XFXs{˧rTOadQ4D>p-9Cuyrp9P0xC>@>Pp>3d{B2b6{:Ҁ:B !ܰ:B#p5Ы yu8^GhNbNVaZq3V)*,Hcp> PߒQ˃UXɒ QȁU8:T}}!԰*B} !ٞPgX> endobj 102 0 obj 3045 endobj 104 0 obj << /Type /Annot /Subtype /Link /Rect [ 156.267 386.20697 411.50702 398.20697 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://forge.scilab.org/index.php/p/jlatexmath/) /S /URI >> /H /I >> endobj 107 0 obj << /Type /Annot /Subtype /Link /Rect [ 60.749 242.20697 463.98703 254.20697 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 106 0 R /H /I >> endobj 109 0 obj << /Type /Annot /Subtype /Link /Rect [ 201.26 213.40698 508.05402 225.40698 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 108 0 R /H /I >> endobj 111 0 obj << /Type /Annot /Subtype /Link /Rect [ 315.407 199.00696 552.757 211.00696 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 112 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 184.607 187.137 196.607 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 114 0 obj << /Type /Annot /Subtype /Link /Rect [ 59.794 155.807 336.443 167.807 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 113 0 R /H /I >> endobj 115 0 obj << /Length 116 0 R /Filter /FlateDecode >> stream xMo\_/z@oA P4 NӴ@;#f!w%ׁ lEr8=$%}#{oy'S<2;CX,v=|<Џ@'?PNp=}zϝ ;D/G>ElۆZMY*Zڠ7h"<7۷?=q#vpV/Aa!mD`$2 ΰN\ `}uaSrQB S &z?g"7%y%?%ng~6_*j+Me]6\C}Yb]v׮#ٖ63 άYsj]K >YT9d}HvߣSCrQ_ q D>1Pe@\tHH1_̴xFQY &j4_ _!qG:m“( >~ ŠoͤY1fc-vh8:Y .ޙ NH8a$u|E#V) BdTt#QE9b "l$Q#,+d{.o6y u1-g4h(lPl =^!Ih۳>> 5%~%EgK1llSUTR`:Z퉙BWN\BAj8lE9$/ Ӡ9dd BPDԡx`ACCS51Z Ш$q'm(q9ڏi"ŐUoHZSĀ,ޱEY<0 # eUJs"rĴ%nwe¦#,谭s$~hK 9Bֆi42M%J]3,S9|^1OnRB~EX1rJm:QoX'bK&3ֆnEjqo霟#> 00,ܹ?S耨qmJ~\T4܅ae: aH3s U^:;m빚cH{k'1Y{yQQYH)))O=%3*j!c!R151Zc1ܮ)&S-77În~J¨g<֢q<cc\=9OAKb3Y^З"L!pUo-V|w/;!&Bj^.fq4J|RE;JҮXhL&Rq\y ǒXYzh |bL띏d9`kG192YTo݇jizУсZnq*d;̫~ia*%{QM}GNrӲy fEh:pؽ*\OB:h0L|ő nv|]Y;Vc6e'J͢)b}CbE!o{Uln^ `ɌD J4)&Wex $*4m*퉒.{IM} [| WR d\{rT蚥98AQJ E_6щrn *+.m5HgiE9+/X+dI>oc!H~I<ïI89H}]w?|br\QxY _5o8v]%JceIUx;BTҧ(/Dx>SW4`e1*'=bV+Xj;3ӻS%'JmB42A$(E|m"nvϬ*c(ڢs'^%+tYqMIUR2hB }_`lc:.b6u xw>\F7&> 7j_s@ &|E;]/ԧVŤ,Hrש^jJg( vYv hdUna(t_:a > n▯+>!_}{++9\b^ *)_b m6Ҩ1ADEG+𮺭j֢د3݆wJ<7M; O1qYp D vCbdCh'o4,Eӱ[P}'GGHJt|i][B/=XL!Gxŀmza ӈŇ5/=ʞS('+#I\$u/'_oE Ie_+;js t:M9$bgJwӼApǫ;%qu=MXN0O43"u`˹&X.H]6W8wEn\pE~Yy[-;hʪѸQi4LI{76^<<_h.=s5a[H{xP;]2e9{#6இR \]AR52F`U5 zW&7^`}oɍ[r| ĢBUV{PL݃}x,].'e벎 dveLK;HM34k|Gzw{c{RkDNjfsDnhxiCLF G%]!_Ь~.{h@_y0Q]aB .N^3gհ@WYgl xW^a V(}L+ ]a~0-n蔏ԑ. pI{vqK:*]:۹-9TRokc 5ܪC6!jiVϻнJc+]<^LLnabL'|M6Ӵ S] L+f,9fV צnǒO&N7dҳommJsSqF,9}.)4t9GH$K+^ i ¼Éujp΁4 *sp_9U%D6F VʶL鷗lkQ[W;h "mȫh2XUvkx[ᱎQ cI;GGHې9'^{@v.CKCm!;&<~ی;:M,,qUB[Z\u Bшtj.8`w˒]T,-Kvq[fU#8ocWF>MBȡVao )rF)vNnB5ݳ)viќ0 \"1x F<^19+ǘβS<4Ϊ=bc䫞yNX]pCDww endstream endobj 105 0 obj [ 104 0 R 107 0 R 109 0 R 111 0 R 112 0 R 114 0 R ] endobj 10 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 /Annots 105 0 R /Contents 115 0 R >> endobj 116 0 obj 4604 endobj 118 0 obj << /Type /Annot /Subtype /Link /Rect [ 243.024 756.68896 552.756 768.68896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.sagehill.net/docbookxsl/ProgramListings.html) /S /URI >> /H /I >> endobj 120 0 obj << /Type /Annot /Subtype /Link /Rect [ 144.987 742.289 442.83902 754.289 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://xmlguru.cz/2006/07/docbook-syntax-highlighting) /S /URI >> /H /I >> endobj 121 0 obj << /Length 122 0 R /Filter /FlateDecode >> stream x[{o8?B0\A@ŞNC~C(EbqpR"_}G0r*\D)Jk` \'&, wzor{oW{.`1hhPrSO:!)֬SL%$m>TJCXgNqqv!D_$'g?M@.pDH;"ι6=R%e>ɽŠy9Bq#8%" ^~*H1'C/./QiyK&Tc*ax$^p"M :6zuʈX;s--ČAˬR)]ϺpԵAKJ WS Nt ZrMN؎/"~7 <`)D0P:ET#qJ!1F`!nPjLRSU1=tmLMK%A°_7J=r+2l# Ӝް udk L)6wY_V&)G0c-v"E<^,qۋx:>FFf2"8Zנ:;3ΦGv^:E.m>Ԡ/a13uidl7g&LchBIwn@2(;v}2,If'>C,WSoldULX .6uߵR3lZGyjFda72츬ܩ!ϝmN}h:InwZ?L<1t'[YǞ]N2 6EHqeՎQu~_e!VKE^)s]3O5uVe H!€S3 .`i!, 8J:KL;f0#J(2?tF-ypW31O鶐QSk+lMUo3fDkA|fac,0_PZVVtXj2j2,vB|ɮw| B 퓷4F8Ѧ,y/߼&|2_^d_˧yLuA['&bmɒI6vZç pF6ng\F6P`-puh1rF_[PRMn:+v7뙱/ᯋη j9;?7!() XUQ-r=M[XqV AZ]Ryf ISjcQ( Sôbⶢ- m|M 5Rў9n9ğ̼FHA԰e %"DG*Y;gRfd0Fcܻ4 %`M!ߥ\ I4%}O.)J8f0cFF2[] ִ9:zHCq/#9n`pc b&-6%yd0ֻĬt|{멢X@pFeI `1@!@qvg:eKJ{J4DEu ;mJݲ(֥; GY23&apDqdpdYXƻyCpQٻb238+ DIȩ/]0.4:"mq 8.r &)T~V.k.m665bG'Wf*"N7B'W7[/3fn6:xSwߪ3wO u5!\/rm]/@j9<8szMW+<\,tҫbPʡh;#D[ xo2;^o֫?ֻ d~zst6ߏ^†瑎-f3֏9<۷vb;\϶W%Bq>߯lTb _"2FlkC&2[-ni*a'̋8YgC#:?urC5XGnb:]M2bu>[\6[}^\US McܛGWs3׼>̦Wul.v'{{t\ jJj/MJX!moY~T.RMD!x;>޾b(#yv,Pf eɫi DvIPp%`QwH!,o6'6Zf > endobj 122 0 obj 3160 endobj 124 0 obj << /Type /Annot /Subtype /Link /Rect [ 294.181 582.407 549.421 594.407 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://forge.scilab.org/index.php/p/jlatexmath/) /S /URI >> /H /I >> endobj 126 0 obj << /Type /Annot /Subtype /Link /Rect [ 210.879 556.00696 379.53903 568.00696 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://docbook.sourceforge.net/) /S /URI >> /H /I >> endobj 127 0 obj << /Type /Annot /Subtype /Link /Rect [ 514.799 529.607 552.755 541.607 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.sagehill.net/docbookxsl/) /S /URI >> /H /I >> endobj 128 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 515.207 199.86299 527.207 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.sagehill.net/docbookxsl/) /S /URI >> /H /I >> endobj 129 0 obj << /Type /Annot /Subtype /Link /Rect [ 440.12402 474.40698 552.756 486.40698 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.gnu.org/software/emacs/) /S /URI >> /H /I >> endobj 130 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 460.007 129.627 472.007 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.gnu.org/software/emacs/) /S /URI >> /H /I >> endobj 131 0 obj << /Type /Annot /Subtype /Link /Rect [ 90.639 445.60696 330.89102 457.60696 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.thaiopensource.com/nxml-mode/) /S /URI >> /H /I >> endobj 132 0 obj << /Type /Annot /Subtype /Link /Rect [ 63.831 382.32498 284.499 394.32498 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://www.gnu.org/licenses/gpl-3.0.html) /S /URI >> /H /I >> endobj 133 0 obj << /Length 134 0 R /Filter /FlateDecode >> stream xYIoG_1!JnyyQr#XJ$āY$ 82??U:auWWWU5l?V2buP5=a~M$t6PcSDz*e@$|8zcnC_6O݋5m`Q&c pɈkj [8ڛd83/ _#)3H|z>CJyz:]}##9RaBO@jFVH!wr_de0E&ZBPQ8&T[OQ+u@L}JvtJxFǴE@nǢNpݡZ=Z9acq,hk3+1c`pS8O$F&=;oY=DNNd=fGpȌ.k|5Q6!vy9( hlfj˜r, { @(̋Y,r~2/l!$g?S[/V&i=Q)Mwνa9)ۓ!k 2n0o:%q,47y%͍_|t]¦Dsހôdi7޼{WjW-d׊3a%X.PJn >]}7cҗKź1fXqÃ;r'W'pjGC(f[αVx}sr(cIjՊYt݇n]__}囿ޓU[h(*@ ڢócT/U0Byjէۣ+P5 65 1]bx 0DzSx<6> Lrd: Z`5s!oWCY;nXE+ M$n\tΊ.r`[g6>ꨝkx9Nbڮ Qhm1*e,HP7]YM,NM˲Hc9NJC~^>n6CTњc2%_Oγ BB8#9cѸ,^q3 2K뒻8 ,lG9d "eءc{ʋLe> 9Nsa5Ci[Kc7>n-q1 ؾD=WExł]Ad*1v#d #j"~\,E3"mP$hE͢1 F| >]&PV(U{nL5L*]]PISyoV֌d|$ރsO" 靱&MY*ŬѲMK|α4u P |l7fܠVLܲd "A<\)Rg(ǵ&3RJ\,Ex ./UYMtnz6i{}0>urȭ6˞: %tT0?I]T)n4oW|d8l4Յ0&Θl9{,J]>9`_W /./u; J:EHx$c?ԅdx׀+ endstream endobj 125 0 obj [ 124 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R ] endobj 123 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 /Annots 125 0 R /Contents 133 0 R >> endobj 134 0 obj 2089 endobj 135 0 obj << /Type /Annot /Subtype /Link /Rect [ 232.237 704.071 474.157 715.388 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (mailto:Christophe.HARO@ac-nantes.fr) /S /URI >> /H /I >> endobj 137 0 obj << /Type /Annot /Subtype /Link /Rect [ 231.395 679.59094 473.31503 690.90796 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (mailto:Calixte.DENIZET@ac-rennes.fr) /S /URI >> /H /I >> endobj 139 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 316.10898 123.05199 328.10898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 138 0 R /H /I >> endobj 140 0 obj << /Type /Annot /Subtype /Link /Rect [ 546.64 316.10898 552.64 328.10898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 138 0 R /H /I >> endobj 141 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 301.70898 378.049 313.70898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 106 0 R /H /I >> endobj 142 0 obj << /Type /Annot /Subtype /Link /Rect [ 545.671 301.70898 551.671 313.70898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 106 0 R /H /I >> endobj 144 0 obj << /Type /Annot /Subtype /Link /Rect [ 66.519 287.309 238.617 299.309 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 143 0 R /H /I >> endobj 145 0 obj << /Type /Annot /Subtype /Link /Rect [ 546.402 287.309 552.402 299.309 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 143 0 R /H /I >> endobj 147 0 obj << /Type /Annot /Subtype /Link /Rect [ 66.519 272.90897 263.62302 284.90897 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 146 0 R /H /I >> endobj 148 0 obj << /Type /Annot /Subtype /Link /Rect [ 546.058 272.90897 552.058 284.90897 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 146 0 R /H /I >> endobj 149 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 258.50897 290.048 270.50897 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 108 0 R /H /I >> endobj 150 0 obj << /Type /Annot /Subtype /Link /Rect [ 546.202 258.50897 552.202 270.50897 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 108 0 R /H /I >> endobj 151 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 244.10895 365.933 256.10895 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 152 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.635 244.10895 552.635 256.10895 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 110 0 R /H /I >> endobj 154 0 obj << /Type /Annot /Subtype /Link /Rect [ 66.519 229.70898 262.419 241.70898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 153 0 R /H /I >> endobj 155 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.39 229.70898 552.39 241.70898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 153 0 R /H /I >> endobj 157 0 obj << /Type /Annot /Subtype /Link /Rect [ 66.519 215.30896 265.21402 227.30896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 156 0 R /H /I >> endobj 158 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.302 215.30896 552.302 227.30896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 156 0 R /H /I >> endobj 160 0 obj << /Type /Annot /Subtype /Link /Rect [ 66.519 200.909 177.01 212.909 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 159 0 R /H /I >> endobj 161 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.569 200.909 552.569 212.909 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 159 0 R /H /I >> endobj 163 0 obj << /Type /Annot /Subtype /Link /Rect [ 66.519 186.50897 239.872 198.50897 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 162 0 R /H /I >> endobj 164 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.39 186.50897 552.39 198.50897 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 162 0 R /H /I >> endobj 165 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 172.10895 263.825 184.10895 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 113 0 R /H /I >> endobj 166 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.239 172.10895 552.239 184.10895 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 113 0 R /H /I >> endobj 168 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 157.70898 126.38699 169.70898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 167 0 R /H /I >> endobj 169 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.667 157.70898 552.667 169.70898 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 167 0 R /H /I >> endobj 171 0 obj << /Type /Annot /Subtype /Link /Rect [ 42.519 143.30896 241.357 155.30896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 170 0 R /H /I >> endobj 172 0 obj << /Type /Annot /Subtype /Link /Rect [ 540.407 143.30896 552.407 155.30896 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 170 0 R /H /I >> endobj 173 0 obj << /Name /Im2 /Type /XObject /Length 174 0 R /Filter /FlateDecode /Subtype /Image /Width 24 /Height 24 /BitsPerComponent 8 /ColorSpace [/Indexed /DeviceRGB 255 <0800001000001800002100002900003100004200004A00005200005A00006B00007300007B00008400008C0000940000947B7B9C52529C5A5A9C7B7BA50000A53939A54A4AA58484A59494A5A5A5AD0000AD3131AD9494B50000B52929B58C8CB59C9CB5A5A5B5B5B5BD0000BDADADBDB5B5C60000C61010C61818C6C6C6CE0000CE1010CE1818CE2929D60000D62929D6D6D6DE0000DEDEDEE70000E72121E7E7E7EF0000EF0808EFEFEFF70000F7F7F7FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF>] >> stream xmQ0to4 F W1)5wYIg_63Ͷm;Ri5 F HРpmt NεHd'6L=su+C{¸=qˋ!jsjXQ:5lx2en Gc?CsMy`RmV/NwIvqwO'(e3HW*E}> stream x[eqWlpB2؁a |1 G&Ҳ~~a|I).(c<{ZjuWwUk_[kV/_g^/)\X揫z!__?ʗop/kʿg>s_U//NgV?7.$߽1oN>rZߎgqWj#I?vj7#܋ϟ}7-\>ÔS9_sן:(7.X{߼ɅKpRȟ*o鿽q\O_ϫH_?"wI\;̫ ipn^/_{_ YQ]홿wk|D-ޣEw"a]/9_g,AGGw,W]H1[ɅkEɻv,1R>Syx>_wUڇ5?uAnefʓkWZJ7Rb{TOR,z ۓݒbz_rPrmMu&krR56lvհK˴9ol6ǭ훇j_;_|]ĠЗ_}?Ww_~ɷow?|%Ķou{1r2̚|TF)5[mS|H5c mHڪ<їo߿z^Fo4V}]3m? l] 9``*ȇi~/a`Gi|jE.|13FG߄_6nŏ.YX}ƫ܈k /gS@D.:xa7ݒͭmF2r^6DO{)ѤǷk^,6K7w1 f7e.\ovmzN$q~eF7v9(6V=5䆞ȟ]p!{莐Kp잒:v9b}?pu6{؍C6'YSo;;m%A[,=&v :I>t[T>z#؋`7= 4ȫI?/Bؚ)Q7wKsлA>Ht0yɓH/wH>-CҠmK{%dW/\tLV,R7ê7[v Cs◯~ JK2gb}oV/q&Lz)p*&ϸ4|sJ<=L||g=gV8*`&ٟA{|o?o>|>|Wݟ߿OO']GOCKAl?|B{ﻃ>|'۳eSϵeZjL׆DW5F5ݬs}j~ܘ<^zCϝ{swZsQ|z4?)Le-O[=U.1k+u;jJkI>l?+O}Vwk"w᧻lC*x̍yбaj`ƶ:#/ܹ!NWcqupss~{X@g+v3GsSBo7M&泧/A"LZt{nɣ&al1N_Y ض-@\󴁱Όn`L}½IV=Fx87&I|W-!ٛ58,d`fG[@滧<%w3Gg9E{ CXv >||~qYw>˘+~ kw_Bof&~{kۘx_83JD轖Vzzфˣz"k)S ND/l;(?r bN\p5CW"E 5 AIvۯbhB_[;$/Y4o齬@i)\GJ$.$=Ӡ}! Qi0?.2fO.0'@Y&e"L{5kQнZ GE$|VH^EwLJd& .[2.fKƱGǢ: AΎxKʬRFOwkɉU. b{#6`{a8b{eLJ-kL|-8GʞE8HF]! =.-J`{fJ-Wֽt2M|0Hd+ ]A"iEQcqaD 5#L2!qF1zFFc{ĵ:|#[َbyGd;存q1h8\ѓ$. ËوbxGd#&RY0X!Lg:0Hd#0H$-=j7#ݭbXE>dMbd;ʊUj1ދ(7E=by}(RM#^ĵXkAZ&mIbpGvV'ަ|9\E"[Q E"iE )Bju Z-}Ͳ^#:mZXNb{Ǯَ0p!X KcgIloÊlG^X$r<ͰHdyk^iÛ#L tZi6~:$6?耸WXۡUxu= uN?=hmobN翜r|;S=p~COxQއo6wMz5:], 5p?t+xSa RxY_An})< d+Hq}) WW 28Rϯ G RtY_An})< $pW Rx_An})< dWEX$Ue*n6N1bH\EcHZc.scs֓:<;%sat.bDƪ5Y,֘ .] koepxν] koepK" ِ2i9~ܤ&ɐ IU;awbD6Y<타S=Zߞ;E&);+H1q{w{+=wQ?υwcsP,&>ch|@5>K #>r,"P8$S@ Gp08"ҘR8l5>Kg b|:jgg]Z5>Kg ^,C1[`pWl5f `:f a0Kc@#Bk(Zc.6f 1[pEkؘ-P8""Q:k5heVg5Jfk'obUkD-X֨X.VXFBI(\8aHaQVk5pVĪuZhCi֚r$cjD-`ĵ#j9LvL0VYFBE1i,ՈZ$q1iXaZ|``I8EpF9a4ZZZN I#ՈZ%ZQ !GRV#lHjF-`uF#"RfՈZZ_i5NjiֈN5p!=phxBk5bH 'uDq*ZK|h{+].AK?polnf4 }( dy{|y*j93;yY$mK 8϶}nQt 68K 8϶6(ۀlpmhpmûmQsmqx 8 68<wۀlómqx 8 Gñ68 8϶"L!o HcbPb}+Z84Z$YƷKhj եIoU$ƷkdFeju򐥳ZY)zju[Reo{V$_[rb:vuqxG2;VXRԥZ G,5@by ,IcWXI3VYp4!1p4im*„ju,j[bK8[l 흱%loGj*M1]2llhĺu5a)(,cN~6륽rw>f4T^>Ž<,cW> +ǿ~ eC;硝79qnjslFjS`(65짩pD$iCyEpp"m8|Ep"m8|Ep6"m8vEp"m8|EpaV [ GH +҆W H +҆W [ Ei+҆W i+҆W iñ+҆W i+҆W i+҆W i+҆W w$矰SF5? yy-΍!YvuubLljI6ݕywwZ횓:=1-޽*rxbgo]e?^t93SX̙óef)\,&#eOj)!_1gSx"A1C.Fsl)9-6sl)9Y p |l)9"˄ڳf)138gKRSVg p38G7KN2Y)9<[ poa{G pϖLN0#8gKRS8LHRsx.ݝO9YS GRó%?fO)\ L~y&?fO){K~ْrx GL~ْrxO){K~ْrx.w&?lO9YS ۋ-)7K~J[SϖÛ%?p3)gK~͒R8,H~ْrx;rxfS;rx,)cmx:v|/9O0zll{v[`ժ~xnGlKEmnWԙnv=`4kÕ."ݙē#bE_EXR!X2XK_¡)rı:dp1!_DwhpEنCXR!X2R}C O2H aX8<%r"̜i8N#]NEX_eIawX2x$j#%f:N_4'D!#ʳZvWI{ j5P0Y|f8H[c:!Z-w(ZdcuHWhne)ٱۗ>x[\۫w8{,h;/P5K S:b(<;D2qxLD^f"h8X&" 2qxLD^,73B)<ݥఈsG.V ֨Ɯ! ץW. N.k.xKp]]R-KDDY""Ë%"4FKDey<9KDqxDD2U,ߥbxg&" 8(\+c7k\V2;jVj \#HK]gZKLk5locY-K@k5,okKDk5 '఼Z1ZZ%V~prVkZYF a˲Z%SgZKL] <; ¹Z{d'`ZA8tVpi)VkH'j5RvX)Z僛cZj΁j;!jűsj ֨#֨\:;FV2֨<;x5U:>iCGӎOQ^~ {w TVfGҌ{4bx)-Rţ%5omowY}́d5EwXH5 VStzݭ\5Cޤ_M:Zs77n҉!Ck&/&nPtG" =\!W;fpk>d‰43Q&)D 3B/>woI_djv$tGb vk>jlt$i:_a FiDitКIp5AZ4T5?guJ1׀əNȣXZ!1ahHHFY4D,Ƙ 1&V1C`}t$]' ]PlV;ibwHF.;úbjq ]VX1Cw*&`D̠b.+ )a- (f ̚"ˊ&f辂 :Ke3t_-X1FLbY- "fb u3tY -a[g0C>}E4 fbaHŲZ0Ac&~&:<Ň,eZb#Hbzm֙x\Ep!_DbEM;_ׂZ BC!E}Z eQMt{I'ZA5Q4RM-5 d04vn&ny'  \\ %W63MC5h;.?P^m8Wq RGb p.08JT]ps6Ν95 6`~0HpW Gqb`p,|@N 0tà6`n GygpWoZ^M*tCZ_M* ޵tC(6 #0Â8ʫV5Z#05VI3vp 9xqRQ8yV䩭`|VWBZ0>5RI-Z 38ju /+p \gp^dٵuGeNeSx_/NeSxuٝ^V:఼3p \\, \)uk^V:by-p\ؾNeS-*ݵu /+p»3] \nǭR5y*HbbxKr^(L1e_wCn9tϑkE-y]խ\cIZ"$H獢!xch8P+QËJ$_ )HƾOJ-9XDV)cJ^R"wH)XDaֿpѡE|~B`/P.|R$ I.OF H.OHЂIbu9[D ;$rx:ۭN"⬓$rx:.wIpYƉ.őŞ=vVow$! ٥0R1%:VqpKvUjxgD ;$rx2ޭL"2^L"v+H0R1L"w+H0L"+}IhGD/V&ûIdpgD/V&ûIpgD.V&ûL"+$R8PcӓQdtVRa:&c`QQuیrxrx}F rx;rxޭ. =rxѺۭ. &c`Yûpgx_/VhEfu9X]@V±8rxޭ. cQrtޭ. 6cdwϺޭ. >/h&c݂vϺXO`%3tK!i w)!οvOwbW&^>]Զy͒7wWyYq#kݣMhӳxgv/mӢ_yw㽏#3H͘ 3wKV OWmD"LKVf̅)9IZ#9|Nb|gsOV!f4p18C5KWa9ZZ#9D5kw(<;^nܡPx]wwܡpVla0=\^}&0p&<,,eLدW O5< 8<Q py51)3~64^Ko#$g aUp XQ>on/-_"x7xP D{I6Tɋ<?{/wnwzѯz_ #ƍsjk.>oHQ>]3½ 82> endobj 176 0 obj 10322 endobj 177 0 obj << /Type /Annot /Subtype /Link /Rect [ 103.179 252.24298 248.739 264.24298 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 167 0 R /H /I >> endobj 179 0 obj << /Length 180 0 R /Filter /FlateDecode >> stream xn$]_YA~W0V ìv@x"d]>ȆvFbX-aA RJi)ql~<"vt XbҺG]Hwwf^7_RhGGѷ79*qݛ#@-| l;b=YJt6 1c" ŵ{1|\ooO10 rF? &j2U"1 v!8b ;/c Gk?D@'M@Pj ħsLdKKLZܒK4 3MnK#eBա}5TɹrL\ZNgY+Z]a='f(!'ՀeON&ꛌdoh?@=)DpH015TshX+ uB$ 6c^ ^ϳ ` |OK ~1Odi"|KȹB谒TwNy4fZ;56-bY,E |Db|>-NYC9{ 5X<0Dj `r?QȋfF=]m7w?hI ]oas}z]ݟԶ)DX2y&x{\yYrv߿Y?nns$!E0Tᠤ2y&Ezg=!'0,Ù2PЇ}E: p>^7o S{ˏ> @$ "ڵ~yv^<ӻG0QPU>B9"f,Ml#:j6vw{zXݬѿ׏V<֏BAMI,J$kZVʰM Wlޔjhbf]:n֏k41%R^͔W6k!렂>gϴ7S8Ye(IV! 29 ]"skf<g?p]CHm2^%U-`*Y|6a&qΐ 4N~ H[{.Ӕ=W6*t<4)5q^#ԞQss#P$q9,F#CYE%-&:r fzXjX/$Sc#! bJ>՞jm_VkW8WVq nww,YܝMjvu 1, |-:8u}1hf=RvKxn}n_C M?Dc@Eꇭ)fh1`$Ǿcp*.dݰ_Gwá띴,?f%cCj958 Ǎmʼez07I~ )ȵˆ<'sp' `I>g_F%V|"ʂEnf]M!h骀JD6~Abc%`+l])K~-[b&RLBZsI=ĸ$`y^(n%kVK..' f-Sw&SaөڥCN,z*?}Hd/WqN=|ͥkHpS4=KwX}]l#ۄ.UN](~t[փB_X8z1ˣc>e[ N$:a~YJ$1%]DtTs![ox  0ȧJW J -z\f()J1߱× Y]1hҞôܬLoqٻ{q~{./'7F7 ⻲CE_Ұ]@1ߛ0^?o__q]2E;`ʹL˫ ͍;qP) ɚ-r|'a,+!I`iy$++jQ1uRʐX LFE\!Yw1 xӼ#q-E}RpRpq /[eiXFSqAYk-L굷_@nѭ׌( q/99% fn k89J npgr9U:Ϛ{xX mq#?NC]oPW^ nT.µ+ܸ2=pܟ]l{YXS6z>׿'ِm5\TwJSJVR IV_%W.).^UV(a˼TD3/@^M,^f[#-`bZKHuOcjSi/Sz Yy?Cb?A*js u"=`xFe ']D@$&* Qg 'l9ptX*7ZQijʩX j$Lj2%NnDmԴ,lhTJRBրʞIelL8TD^&zg_g&o'BCP1 endstream endobj 178 0 obj [ 177 0 R ] endobj 103 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 /Annots 178 0 R /Contents 179 0 R >> endobj 180 0 obj 4040 endobj 183 0 obj << /Title /Parent 182 0 R /Next 185 0 R /A 181 0 R >> endobj 185 0 obj << /Title /Parent 182 0 R /Prev 183 0 R /Next 186 0 R /A 184 0 R >> endobj 186 0 obj << /Title /Parent 182 0 R /Prev 185 0 R /Next 187 0 R /A 138 0 R >> endobj 187 0 obj << /Title /Parent 182 0 R /Prev 186 0 R /Next 190 0 R /First 188 0 R /Last 189 0 R /Count -2 /A 106 0 R >> endobj 188 0 obj << /Title /Parent 187 0 R /Next 189 0 R /A 143 0 R >> endobj 189 0 obj << /Title /Parent 187 0 R /Prev 188 0 R /A 146 0 R >> endobj 190 0 obj << /Title /Parent 182 0 R /Prev 187 0 R /Next 191 0 R /A 108 0 R >> endobj 191 0 obj << /Title /Parent 182 0 R /Prev 190 0 R /Next 196 0 R /First 192 0 R /Last 195 0 R /Count -4 /A 110 0 R >> endobj 192 0 obj << /Title /Parent 191 0 R /Next 193 0 R /A 153 0 R >> endobj 193 0 obj << /Title /Parent 191 0 R /Prev 192 0 R /Next 194 0 R /A 156 0 R >> endobj 194 0 obj << /Title /Parent 191 0 R /Prev 193 0 R /Next 195 0 R /A 159 0 R >> endobj 195 0 obj << /Title /Parent 191 0 R /Prev 194 0 R /A 162 0 R >> endobj 196 0 obj << /Title /Parent 182 0 R /Prev 191 0 R /Next 197 0 R /A 113 0 R >> endobj 197 0 obj << /Title /Parent 182 0 R /Prev 196 0 R /Next 198 0 R /A 167 0 R >> endobj 198 0 obj << /Title /Parent 182 0 R /Prev 197 0 R /A 170 0 R >> endobj 199 0 obj << /Type /FontDescriptor /FontName /EAAAIC+jlm_eufm10 /FontBBox [-25 -224 1054 740] /Flags 33 /CapHeight 666 /Ascent 740 /Descent -224 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 200 0 R /CIDSet 201 0 R >> endobj 200 0 obj << /Length1 1440 /Length 269 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 201 0 obj << /Length 270 0 R /Filter /FlateDecode >> stream x{ ) endstream endobj 202 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAIC+jlm_eufm10 /Encoding /Identity-H /ToUnicode 204 0 R /DescendantFonts [203 0 R] >> endobj 203 0 obj << /Type /Font /BaseFont /EAAAIC+jlm_eufm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 199 0 R /DW 0 /W [ 0 [750 0 0 828 ] ] >> endobj 204 0 obj << /Length 271 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 205 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 206 0 obj << /Type /FontDescriptor /FontName /EAAAHJ+jlm_cmmi10 /FontBBox [-32 -250 1048 750] /Flags 97 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 207 0 R /CIDSet 208 0 R >> endobj 207 0 obj << /Length1 7620 /Length 272 0 R /Filter /FlateDecode >> stream xY p\Wy>׾W+JzjZRl˖e˖mێc;$$'LpLt`&0mB3::}%00eOIC)$%mU{wW \=ܫ BxL(g9nBbO;srJEpHY"p|]N0ˤM^'"ޟf/O3F$ !"5 _yDĻ2kxϪa4?e.2 8HK!#"0>+^,a&Q/Iٛc$ '|;]H^N /;FHˤIL$2R`I֗祾TV96 up!Jt[p_F">Dԫ{%Lب_;M @.,1vJaOI։gus 0넆/䤳i!**žJT ,}b?˥lIgҩl+xq!pSJefNnvY6 Q DtP$ָ:ѣY 0Iu>nB^\WClkk6 X 0*TԤtPL G}M ɑ2T *A=,_*>P޺PW>.QFh5)W-"3>=+> fKyIL8|F1u})R0hLVzUc~t>_ɠnSیf ]H93KCC(zDlƗcbԎ?7b 'I-t?S}:/ѡ_I?G坡&Mѯ[<{8L8=j7(>oWJقgjx>H.-rQ+ b1[r8h߻  zj k;C$d@#0 : Cz` "щ#!1j݀H_8 E2ïL8c90B B/ LmD;(},\b+(WAT9gJf[}G6_s^#yk!#2,by~HUoowo_S;׷\e ncX.P*,vN/+6|v~dROUHmkx~x`h*5SGw&[D،Ɩ0T#瞖9s4=r3 3&'68#-|%r j]W֦ >&I3(g P*ػbhV`K JL1ϓ1)'w7g5~iHR]0ZXi8 ,+Gѹ԰ ǗZ̀>jz< A7j*&Lˣ %zP(! mzy;/TI%3Nk"iws@άeT ܵMj=0Wi?.Ib#m,*' K)h$Jv[ )i܅QȗʿםSk~ya %|M?ҡ-& YT?yX>pI\tSZʙxfYFmh|_,Np,|ҹd4x e1]uFJa ߝPQH-G[ߌV_@eZz7n`yִ̻|IQ[ v-jRP/z, c^ !pn,CUtU"|Oߚd+26fn?9``¹N=ip4zlU 8ۧ&sű^:1j(BT F?oҵ )'ȁde`(M)M*#mK0]/m= /x7KYhx\u )ENbE ,˗R͹ILjˬhZ/o{+΃`c,OaZ 1)aYb9 2rv Nj|L-7o1H_Lq+FV/b\SVr]#RL%%d%!@ۉ'S/̆\jl+ݔ S8;,.e8zu2]_LX)}6NT7ko7Ym*nVᔑl0ZJ[5v޽c5'ABڠhi\j rU*P}[nZyIԟJ"7wҼoAhBl徎j~&3N ͊L>'QN\?[C尀U],6IDNHS=1ȑAIfbXMqe'oJ[tCgжLjy19/>HLoHȹ^>ʞ*.rfxek Ĥ\錜߿-*|Y2G̠)z?g/`R v\O ,g_ Xf5\ z΃d"=gEUfڪg$ۚa0+ nS wQC@Ydg)?]r"A aLyZ,oJr_W`:=e#1bw ƿʰ KZQC7k714<]mi'WoHCFfۋ`:SJM0SH,ktΰOC* fu~&^#$|I{wm BT3n^3 3a5'nKuX2Ղ=v@4??wώhڵ.+Jw;bF@_#G=04(/d}.4BOE:C4Q\kߗRǐ Z4(i-DC&b{x-{[E9ܘQFGx^W/iPg/&%Ռ }kZYt},Ȟ(]K" %N]Swpp(/, Pv璡' Sl z]gzְKn-+M Fs) i1̱QF>Tk"ij0W 1 &vZE}1Gh~w0Zs+fSRS~e2j7;<_+4C,mte qGZ;lvʧ<nɫGϴ4w糖DGga㫢Fokuy!nzWþ 6!lyH~?r&`> . rzaa`qPayGUk~tj~.VM0湀KLnh endstream endobj 208 0 obj << /Length 273 0 R /Filter /FlateDecode >> stream x{, /h endstream endobj 209 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHJ+jlm_cmmi10 /Encoding /Identity-H /ToUnicode 211 0 R /DescendantFonts [210 0 R] >> endobj 210 0 obj << /Type /Font /BaseFont /EAAAHJ+jlm_cmmi10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 206 0 R /DW 0 /W [ 0 [750 0 333 970 528 361 576 344 600 595 576 570 759 530 827 520 277 571 466 520 489 277 777 571 465 468 429 878 584 490 298 446 572 777 803 714 437 493 762 831 ] ] >> endobj 211 0 obj << /Length 274 0 R /Filter /FlateDecode >> stream x]j0E -E%;v!PR YA~-SC- ^+URGҕF| # itGItjB*aZ=D*HBr;ئ袧g9"L_ӣ0LސoI<|qt:Hyo[ՑH8`S;\!uq$to*M'Zl0vbnϞV7{ƎIޑ,P3b*s6mtT4H3Ƞ^ "PРHLYȉR1)PԠACm(f)o V +33UC_A_Wb/T}5OA_]RЗGkn+BP mӭ[Yއ.K;5nki}wS?^ endstream endobj 212 0 obj << /Type /FontDescriptor /FontName /EAAAHC+CMUSerif-Roman /FontBBox [-1135 -387 1495 1094] /Flags 33 /CapHeight 683 /Ascent 1094 /Descent -387 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 213 0 R /CIDSet 214 0 R >> endobj 213 0 obj << /Length1 22056 /Length 275 0 R /Filter /FlateDecode >> stream x $Wu ^DfDfKV/U[enu7IRо! $$hc0cm* f8Pf>l 2/IgP87qN 9W߅ρ{& }]p/-Pβ 3o16^d=l<<=# c$:qe6WH;}U }p;_eȱ{*%eUHai=o p< ]ʰq+$`X#x؈Uy#I$'IR>r#9I$]r&{޳!KO $C*d"nR#>AAj'4Hn>l'YS'7 ZKg]\mߑ;r'3uN OduV[3̯_Wb?=e {󱓬Ix9sn53K?s&fxX3iaQStY7Soc?'6l9|҅KXe2'cXUJ19OtcqMC9N<۬G8^uiܥ{]n,H6 xٛf™L,v 7큯96 k×'e z%Оܥ\ҞKsxu ^ꆌhPWM^rtvLVt|h/ӫ4{>qIN;V d?O&`NgNCH0vÙ1/X ÊDŽU4V)UM~cP@{f Uώͪ++ Wp͛UfUݬjPUMGx /πԽ0a.|)cT_!W|g }T*H~I`lp򄄡-mB/h$?L?GHF;@; p_2HRuy!vVBuV I7@Uӧ0\PT#'?>nGiуPp NWiVH.\|A)T_L*$'| 5uo\yz4`\OQs_- L!8\x9<9WRR 0 R)S:`}@0/AB 53-)!($IH)S-6\ Ը4^.-Z\\Nv(.)4^qG﬜xƟ$w=t'1dSyYl@sCzR%؂ͼ> e&물ȸ:HxNZӰKdlؑ2X!f@@aMQMJ%tPB%s^`!-ts8t~/w"{3JLV#.'9{vtW o# ]Bz]$M$m!4E蟥߰-0o£{r_2N$Umt^UDwVLzyh_oܴiϫkaο>h\B^} Nĉ͕@4Da%Y‚z,dSa5Ł"-^!e8YՃ2HdRPSS$)$4Td] C$>|e\}MvZRv r{ca;F` J ҵ12++]5;LG(`T:Ӈd@ eKW hb'8&| @ W:.y@( @9y:a`PEwSfL8gQ?sw<{Dol7=\:{˳jKlb6S.A~ˢX#$ %6P!MF׈kDHDH tRأaPJb*Ƈҡ7SEK:hӥ4`[x ,U=掐ALUs FB 2dԵ J큋ea܃>4k.y}yrQ]!^RlIVZcY-#b:0'WWtkx$hyx#< 6xTH/ܝ5䣌jzS.X} \Q M5Euh~QtzS1jv* _[*5ɘ"pYI0IV5\zoHpR[4ƧMr+2/N˷l*ɐT,>{3s{vOg{7b2ғl3_\)L+> ݔ"EPO`ny~,xN7ÁSE̐ϓAy +c!44XIff$cqEe6S Lnrꃜf8`njoY=GEPCeT` Z l 1jZZ.?|Gi8 ڋ(,r~\2 '|d2ʾz5hF =[" D0űŅ ?4~NnA&CaiR4Y*O1&*bsv :%N8(<\L&  >f+ ?5QlFD!OF7=ӝ^{3<]_p>I|'RPi1 k t/g:#K=@b TR{JM7:p T7UPyT4y? <ebWCzc(\bb)d8}zb#v4QZ[sK;n}nelW>m۞N~efae~v/3dPFgJhr-egwT$AE`PQnTQ@l‚xL&̫Rr4ʬ;g&NР*&j5T7ff:3{&Dպ1ިoˀf 'ڻ&ߩht%)"49Aǥ@=G*gBs$lU/ Kvuәe(?<ҭ#: s CCcO>wZ_"nJۃ a[ki2}.y7>Z)0^m_ %~8y 5*#-$ASCG7:Z%0W`X`B/JÐWdZ560ҫfy٨nyNke/Dz)<y9\K0dAJ2կE r0vP IDg4A d a](pQ'>CR\oN _R?\>1Z zo؅Bm?{2c5v<3&' Զ3k @C9jڊ"51@dh8׈@b Hx5?CȌ =X%E"jZ=Awb;džTShBBTaP̙*%}PfTTy#UG*X*L@q:<V&!“c,:o*̙zo>sFɿQĢɫ?~@~ >r 8 xjaipyXց\Z-ИMQv <[[-HR ҕM?Sm,%!~]%Ϡ9t{3P1C (SGre$uYk,Y/Q |"ĪtZp#K|͌G!6d|O wNW3&#JiXHr?p:RFZNn鱗Cp vO񙥊K v IM~>TW*!q,"`-#$*. uAhYcF]@7Uϣi|iQ52Znf9x٨dY&S*+D1GCL:7< qCz,"1CwL/Pꠅ"B6o(6QI9 (me78+r\rOy˲N•-",'Z @tETB$52@T x.@Tg.Mriugd:6,6؂<*}cBaTvPtimGDR+0|Ʀ qI hxϓ` &6]:S=q+:mgI|dKTF3Pv+8Gcq4c8MþfU3/_1vFRJ^So㺙DOS w-U&9!8X88F[#T򂶎]AEp, &PJ4L {`qʘ@̘mckXPoD @a:  Jh 2{Z؜1,UPUE,퇎J2B8iYY<gQ/Z;V޹P NV$SD5<SoZ9!JH\u9slw(cneiuû#'W}Zo FNofp^o)O5roZW>G068E<"*v5Mo,'gw#@6`g6(gr-\4qM~YEiD Һ) :KQ5кA'^4 :FwdTy-qNWՆPƤnl^uO76h䀼.E][BT fY (\]|l:?7'ӻrz;.Da{3jqBLpo'|xA-/Tw;$7-FAtX\+|96F$0I$ V1C0=B`ӏG'?أBM\9FG'[EY`,fqyΖdkG#i35YG8D_w|>hQ1K5% `#"37}O_Zl6׼Ǐ;ۜ> N7;G13;6;fʃ~ b,Yp%{lʿ80%I j1 p,po#x7PҾd<*!в" G<sr^׸۵x([p4Z\j5_+KEoDXs^_vHٵDRl ;fuɊ}$k)hr"L5y&B|-jj )ô=tC`"&/<4kylm6@qsZdryuLy<=7 StK\1'@`~TM9~y[)U /C[Lv҅YML\aK?p1r# }k#EvT|eEq&F" &,:ekf !)9tcݐQ.ݵ@|g79z}Ǘ}j=ۿGm{vRy~q}؅ͽY2m)]ޢ\;%v+h@e ʹ"}3oQ K],fv#jN. jb*&= FƄ\Ag7q[Lhc4@.w87'H:t۷43k٢y4\O=h'aL|{rb~޻-d[\tftZ43k?Vwkv]+X8ٻ69 IT6#p-9Cl-0l(S5-3զQDaOA p7 Ϫ8J[]Wb  g"/'+'l2ɒ\nOC%B5#琿-i->}2]ӅITˎt]~O(%Z>n'+0s!ɹ?Hx V@-4}+@,MXrhkyy@0Hm.r Ys-IYI*jWirҫA.}$D8SPO~<Ѻ_!1R&OA%Iʱ>P0Rѹ0W,M (EI$pXPbvV]3H:^RF^La9$277-d(}lYZ+HMo;z-z^:l>cZ͛[ s U`Pɗn5<#40Tx_s|LRGi&pPo|6@P2z|(3M+?u*0͚nJaÊ.almn1:ތNt- bgKE4A9X7 aLr財um5`/V"+j}bRBVз xrCErj(n=aXP S%?S&1(9+ɵMTnE-wƮ+ 1UV`aF!nz+NJX.ˬ#9`¿Ʋ< %kP5͂v3'>pOq)Ԑ2ɂ~IL3͒x'2oZ¸.$4 [qe(Rn@$0Hru(#"cYZl)qr]@[ʁvgNGSnM)*g~`c, ⓽kc>_b0_X|a$8* cM7RBMkܛqt7s3qWΌo>o~ugmba߮zjb~:۳I~?}߽}˞v5ԎA`u| Fy)\qS) 7@̴X3۠ZoR^i $25StmE/z68=୚Hl<+0+ bQ=@{55J\0>67 [aLҭI)ւli%\R)7 dl$gk J}8q§D)5-VnR'x-k?n=sgha$˳CoEP JsyDOx׉Eq4.#RFA5&l7M{@M9E]dEG;׆ B0{2L/nkຌP ?4;gEb+'v,Ψ'T.55W ҙO|c kl۟3tbcsSޏ1Ob\f ذ젂C50As1[hLR\4f `^axd]5'AvVM_p_h`nE3r)uaegs:;i3&d:{xyGx}Ipڝxoq]PG0bf1[Å:#a׵l #;>R?Xn#Xo;c )/ ~;#.ʻ7;>eå+_tv^ٰᕻb}orI\Y9#StʜwSwepc̗w.yșIN&jk/aҩ>(HA5N5FY]oG}T_ߓ2.΢~dY ) |E}}ؽlo{;:@%%M,ʌY$;:+#F׆"<ƽC{`:Y;2XעXD˽4VZ\gg/D]ovk>o?wYY\x{&ێdk!600Xnj-πś̶۫KśʼnlLnVtz@=C{gb@aO,#wvd\jj pMfjcz?@+aWpQ5Zlp+{ih7}hf0ZmfpLNWu6N8r_0,7;둳N>1!(X='ÉDIqYd ъ+O"+,huR~Qd) bpƜ&fIq]~ܬ6 lMit@B[e )jjv<19%Ⱦs]}3MJڸk,:2SlPaG0)w~bPE#.gkQ'Q6ZSq;cmp]X(8; ;ۃ??$ 7~\,mxW}P,売լJ:]!v7kKȝGѩ{ǫorqsWG=a .^) kw])Ù?7,5" M¶`m:^켳*t@CUgo#_>g$DSqSN*1͟QnD, SEFف }(y> Eƶ{"ݟ?bJg&. 43zoɒ^&:!W\Ds$Of7Rp>Zo4w͵/=GaB;MñƖEy}ثߗ,#, G,aF1>@ .cG'E ?%OLi*]Ȧg 0oѯ)BМp - H4s|04pKk{〜<赭M t#jedcf,0L4k9eDoaeP,ap$ʠ}/ A`(K) 13A3OZ8kժѓc vF'RD͏z*wM7(ʱ)nfwl:)48g.Zˆz 7y{7"Z'E1qٰa+o\̴,Yqv(c"-UIw?غ9YBp*,Wcxg'蹅FcEAP 5pa^U{fh/*ei G!nJP@7jh:_csq'! t%^kۘr%il|C%5J$vDntGN8;+'uSs79ǎ?sczh~ V3[?ב߉_Ո+i,"[ \Y5cXØ^2vcnvl[vvcQ^.1 ^t xYsv-/Yٹx-O-}n[<;/,ex=8j}[JwO|ߘ{a+X8+NLv{"јj/,ֹ*b&.T6WOL޳Cx#un{A=~k.HL-2DR< xr[^G?)~sP |V/+|飮wiv-78贻ߺsehFe.Ns_98Mlw5,2B_Շ~dkf3Xab?`gk^s5 6h T9 37,qܮP~ ';IX [?C~ḥYdH7'ƙ=` >\ |l߇F@zF5/ b;  lHҥH%F㡔מp?!'V/ , ſt sSN;6E/6pnLQ# ӳf{O?$<< {\l` endstream endobj 214 0 obj << /Length 276 0 R /Filter /FlateDecode >> stream xf_ P$AJLt4P0E- endstream endobj 215 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHC+CMUSerif-Roman /Encoding /Identity-H /ToUnicode 217 0 R /DescendantFonts [216 0 R] >> endobj 216 0 obj << /Type /Font /BaseFont /EAAAHC+CMUSerif-Roman /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 212 0 R /DW 0 /W [ 0 [760 0 333 333 333 680 444 391 833 277 394 500 555 500 500 388 555 444 555 527 277 555 555 500 305 555 784 750 750 652 763 625 750 500 278 500 277 527 555 722 278 361 722 722 527 708 527 750 500 527 444 278 916 500 680 500 277 444 777 500 500 1027 500 444 750 277 305 500 500 736 611 555 555 388 388 444 500 444 500 834 680 500 513 833 778 555 333 500 ] ] >> endobj 217 0 obj << /Length 277 0 R /Filter /FlateDecode >> stream x]Ɋ@}7Ɇ>d!N@KĒ>R5v9;?n6iO2ImTr'Lճ^_)[O,ccF4&|<lJ>FugpznG.f֤ogvR_ˋ,y96Q7_?%zh:Leٯܪ]NvyIwʽS~QP *&u/O*"¡CXzTŞ^ՠ ,%JHnSeQ`dm+*_/Wgsi/G)_ k _5&|A@fS k _JNG>_ )WP |Oc* >=ӽOϓ/Pk'O|% >!k|t<*(A{DЕC072UoJPRC>jIZh Bȝ+[/ê" 5zT8!juDZ/jipro1<8O-%N\cַiZki0^xo endstream endobj 218 0 obj << /Type /FontDescriptor /FontName /EAAAIB+jlm_cmsy10 /FontBBox [-29 -960 1116 775] /Flags 97 /CapHeight 683 /Ascent 775 /Descent -960 /ItalicAngle -15 /StemV 0 /MissingWidth 500 /FontFile2 219 0 R /CIDSet 220 0 R >> endobj 219 0 obj << /Length1 1360 /Length 278 0 R /Filter /FlateDecode >> stream xUT_h[e?|O$&WMm"$k$M24:\ֲN[mE:mAnOÇm2|새>i aZDAEz?}wāz~ҹA ٳS3^9,ohu7/ WYrsoLO_B`xaHu!]`޹W>wqw[oFU:c Ww+1wX?݂:uJ{url5P|P^uWݧwmgTdU- @ tB X.ߡVCRsY"?A@Zz"֛H%C(rAz~0-j "߲h>wXHwPllm 2~P7Q.gQAv/d7k@RZmn'NۻMEKM2<\*ƕIm*"}; ՗ڡCIKJn-)YNPmnIO? 'fb޶Ҹeq(8qt^?=9 wgq\.ZKXиeI XKH ^8βs քs)c NTT܋;M _/azU|=ARCCZZmH+.01}k(pn&&h~P&2yĉ{P5;]U&s2s$] 1tZ [8'P ""$@YSV8΢":tQt6^f֜VbY+{_.K\p'4FK{0Zg P^@ ) endstream endobj 220 0 obj << /Length 279 0 R /Filter /FlateDecode >> stream x{#2 2 endstream endobj 221 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAIB+jlm_cmsy10 /Encoding /Identity-H /ToUnicode 223 0 R /DescendantFonts [222 0 R] >> endobj 222 0 obj << /Type /Font /BaseFont /EAAAIB+jlm_cmsy10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 218 0 R /DW 0 /W [ 0 [750 0 333 777 1000 277 666 777 555 777 1000 1000 ] ] >> endobj 223 0 obj << /Length 280 0 R /Filter /FlateDecode >> stream x]j0 E -!3!PR YA~c+,e2qt%m) `JX\j9€TYY%7r_oùS:j ?!fZ&8|Wc~pF堠*A߼}a9s7I}s3q0 Kᣁ˳&OR0ofw!*SQ:-Q]FZ>jNQKsΑS$FT%@kj$8VϋQfhFa:RbM( endstream endobj 224 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding >> endobj 225 0 obj << /Type /FontDescriptor /FontName /EAAAHE+TimesNewRomanPS-BoldMT /FontBBox [-558 -306 2000 1025] /Flags 33 /CapHeight 662 /Ascent 1025 /Descent -306 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 226 0 R /CIDSet 227 0 R >> endobj 226 0 obj << /Length1 31064 /Length 281 0 R /Filter /FlateDecode >> stream xļy|[8:3WuҕtXeɶ;gq@v%v [ P HB QRhiihKҒ Cߙ+%~~}?O̙~,3##Ҡ4bMW'Z$#/\r)oͫ޶!B֭Yl!Wk6~.+S5@޿leP#BA˗]3~PnX5-q9,-MIv߽r)ڥF{՝f'䑺p5ఌ*0Ձ.~G> l=.r=*?ABoy PBCx>EH=J0^­6}ͅ,/)գ8A=(?´4C;Ňx%(np&( @8 *HmdP9KN03f4/2'i7&V ]H.$(ʮyޟ=R$N>X`CW(Gы0^NBף9GZTD4  @N | ݍmu=c E\5}-@=Bh~9Z,N 5lDQF}PK:]1,Z~㋦K,t=^@'mxL@h9ڀU؂K:[g<=uEsc$xz  QtiCFuS }B؎k8@-- @OwЏK/P['^\>F -݌nE?/s8gA??0W0@3O\Hܨ6 PA5F! =#XAه2fQ*>~ h$7'a\D7a:q7~(oBk`7#SVUFv- ^"^f9s@yoJ?Z%ס-Yt M`7LA,;1Bf [!)v+RKI_S:NInh (|_B `4φ: ߇LJO8ENr/yLqęv5E@{eީ>M'wM?4 %@Yu) ߅CÜB@;.OS_`= bGqB܋;=1 >$IqRCf%F2"\\YY ߧ(O'Uak_|w M=whʳˠVٰ+|7Mj-0@y)z z#~?8&&JoiX6 ֶ߈ow/68~ cB$IZLQw)YA;!A&$3^EJ."迠_ 5G 3%[4S}`B*rcP:TrCNM_=x4dAe2~bzfqR35`hdj%a\ 4ܤܥ|RyHC/ t ڽDAj ?[ai^t 1/6FKo,܈]!D0`8`PV}#zMxRV"<}\ Q>grp#n[A2PzAɇQ=Hv5' {1(7aD^T|T65oe^vF g!D6<UÖ́ڞ^֣.HH).T.~$/ц^G;@j]P6hjlTUVSɲDE'+hĆOVp >8ɈNz1=c& gpR̻hyP<9*<\\3?s!캼"]G7xM4οEw瘻qzh5zk k5x(6yr?(?s\xzDo_7p @[cXcgUr1³* %VW<Ppy4sl>%,x3_)@^ZpH]Ce9f<XH[\r3)UۈD{.#&j(nI&>buT @ hXcjajaijaTɋQ9›W2*}rƕ^ k\ &K<#504 Aa*PNp/;N)#@)KmSTv+VeЏ233~4FH@Aa9|fXOcwcOi]a+Y<+2af'ZP u[uLZ'zt .>]N7)s;Ξ`Ovd},+RJbZ0ρ#h+/猁?.w~O8=m8G"i'w !J"|"` ЉɅBd%-[r/߂omB}S{ޔ<Oi! 9$!f^Zd/ԸGǠYp@1^%g$ZGGJd0rW.mrT*1\Ʀȃv`~F4To)J :?"Rg;ρB lrHLYH"A5Qr4,CRH)hހ?#_(  /'DCF!H>%:222|'dx4dxAß    AZU)#R_,%oos~÷>o O !ٿ_1%Eyi#_ 6oF H PnwGheE F|PM>ٺPP(E_W{|_Y~u~uh\E$E( /|.q^G)G˅t+|[q@}Nx'~Rx{uPY0$j\x)Y-}N c˅~bya(Pzpdᛀ,&\peƸW,XXWJrk k` @U/_p~<9j3V'tB #K3@P9:GBXT<) ^PݠZZjyUUOeUռڨ֫jU+DԈXGOH zheGVA} In`5C+ga9jsFUsrꞋzb|W[,>;_ZLb+Ι9 [#bwOxqq-Py7}S֙57;7P;_}b9*i`7'GBGed]Gr)}GrYy4iF 5K uShd jh4|67 6|iq\$wH*4~@ d4'E;@M#`eF*_e_>H("!C!<2c(o@Xn wǦ5~+6"Wp٪&qU{ pF3ca^iU{~4C\72o[ںl[uCeheuyC!{fϣm Ѷh[yr[skszzQk_ے!:-O6[1sT~Kbkf%[-4 42bƀ(_!$+ko#|*oXkg!DWBJnZ̿]'(ࢍރεPGޝۈB6aԲo}km?fd  Y~ }Xxff{;wxD-6Շ_}Jl&'Vf]GnkcQ"J̯B/~ͫ<ȦΧʎz'.<˳yV['e)g6u#P(j{5 Zb:cBܟ/\c-)5Pf%rZF~O6+U .*DI4]UX1Kw e'uF|9)`9pEO 4ਇJTIMd@;*G8qHYXS8H<DHx g۶D2oI$D>Wvk*fgw[$)@t߰J *Ie)ǘ?7xS'&_]k{̛kkzw!ǒEw?rsX>>4KW.^ O>4 \wDHeŭ#mG Ʒsҫq"%`P-YdXihڴ ݆n{>o%knsYy{R1k,>/B9ҩ kuBҥ|嗳/g'(OM6y@y|/OJψ1_u^챐x`B(P.GvP縋%V3%7nb#O>!*c@罁L*6)bTy̠O"z AZ7qHceрX"$ ok)ĂFo}*28YYȰO+>Yĩ5QKP cgB).=rNu7''g~US4QK@Vd! c+h}TlU ahPd!"Cٺ}'CTpa \bgtg› |>.lAy@e#H9d\>RZϠV D q)Ikʦ$ Qm9ُ eI^4'lxt#“:Y}+Eg9pI4eBA&*dFB$r7~wm>]ɇ;3ߪߥߧgq)J)RY(^Y BMɡCП;, (3j*`P&EUkb|ʨ aNL(Ӯf2i}[ /]zmC^={Ffo`:&fB!I%/H[Rl hJLM˥\X+pT"zU`DܚWHxJQ='nݮѹ ` z/c,|T"EbTdxEm%'TR.Q2 >Gڣx)RRN(>*Ps∋I#LF %ٞ FA>HSʟ 2@˜OkE KI|5\STpP^4TD#TҼgK][KyԵ+5֥mh8#\fTD2E1#v@0^|1y,HɝIqB-Кݠ h!Zr-c-L 5k?`#SP`'$$f7?R(1t%3xu%D*>̪: )҇=z_AÖڶv͒Y5~/4(*@8mRhDa!}F/uSWW׍u)|vsVAІ>YtQ'zeYGy֩d(㜮|@?JrPRvȾuMI"OT4WoxK瞞eQ=fk›M-S%$gMyJjĵ ^S.˨䣞e׷)*wjebyR&̙ҮȲte IE oA!TCDYzE~OJFK>V3d=ZEq\U*X%E%hUVAPYƋJ33,P4+oHh)x5YJMc,Xg)/(to=cVj6tUCƝ gnD"J mZ9ʼV:cꦶ[ϟm<ڌ0>W{U(PsO @n݆f|e#ӥ&64V~WV5jU4QNŚzQTͨꮺUT}ꅪ_VwDn W5Z*UjQ7窷oW?~\SڣT3Vq"BjN5vQ*ER,ᜂssNqG/)*ʄTYLQkB?D(j5/j~ix PDjh&MTS,jy`ؕJI g+O)IZ)){J5nsWRC)m6g'Q6 8tO> ,Q4fpſ曀Kә cCzI=u %g\ ug*_bam:E&~poGP. VMB}F +KSllY0J2z֍jTwDf5fmx[:ZU^޳X1p%+wܿvOuژ ҊU]7uO a9 jjE:Rԁm^A\eTgR (XFmRvԄ((B, e=P9W+T@h4hՂkV e]--- Z(P.h BYrA-`嘅lf+ByI9"/,/"+/2"ol&X W Ҩ;ũXtzfę&̗`UCH0ɪ3$<'?davLlj蜕@j7ILL N=OrΓs$Z2Rt&;9x|=>"||9"vB`wz$X话#f/Xo+4H$i׾:bLN'=gHp=l"hllb^TׂbTsSC^sHpP("z_/Cf0rxޤ8 /%޸|撖37iDHLZ6LOzҢj<3Gh=|^S{Ka/m^]26VAH;"Jk"6F-:9%3JVUf}Qɳt՞y~. neJ%=UXAk%=ēVQ wDDgkdt= 3AG$(FQG!J[,fu  Jb%q1ɮèxԛ{ p}#%+)''3Slil*^@m7m}(Ӓ?Zfu®HiO=1g$ܞ W~\:OIO%N2Vg=p)nW`fL G=>;벎pL-Wǎw^2~u쵻7 S}v uTr{, t:𣧏 %TwԢ7gA g,HCV$^{`PrAQoKWPK ʧq)4pf~gs~^~Gv (#'H^N 0ANO'0?'K f#t3TdQ4)!UdC1tooQΝ{x}ŇqJf aoX;#6fāx;8vLEV#73*_D3n8^@Tns:v=IǤXOl0/T1q.E\/%yqiyC2ɤ8_ |PB>%B5V@Qc~&_ǯG0s p(q aE0z"bC?Gzf?ڭ~BYF-2>) w+{>( +U<2^Mw<9嵛nTiUfV;jVEM&& 7kV)R!ǦY Oxx"+Z5>QȩXQQ? Yuf^O%cs bUAU^h5P/$8>+|LrܩB/uVSd0/ERBG$Fq^_x(썉3 Ӊ/E= aš#bp)Q.!/&.215h X479ص[;-{T2Vv-킰K/UԹ)ٯ=yj,.˪t O*gavgFP na&tl_5ˌ\Swå[ɋIO~g@KBX3-ίIvN~l_0\pQ-_ [ zr(3z 2SݓJx,;[7ccf=Q%#AXCW#`A-XIJM8!Zjzzґq*`.pVͰYllVj[o=f%Vj [8R*U׀6Vj&[lZȼ[Y \I8Ye$qh '6rh#sm,)>F#gNE"&R4#E8R0C+Xs= ދۅOcʇn eQ2=js22H 0c4tl}>Rs/Gޜp_0;Z=-Eo7s՜GL6îxƦSu97TޗB&!ZVcg?d'\ES#F(Y-1dԣLQNKDuXK>\ޣB!t?M gZSSSKdaV S0Ų\b*\dO, Jx?̲?Ff+Hk/?|{kuɓWM=×ă!;~Z{n3D `a?Q _))5 F&zE̛XKJD SOW.١2Y G21< (+b =$]!UT V(*/(iяJ+5 P_XXT dԊjE\ NN2NDh;ť%zB5̌Hao82\:^'FXw[w>{07{'Cχ6,  ~0gP8ҝ5mU.{}]w[ekL}DZղt걮3&6=㸶˟O7kǶ/o}ߤj:h_y- oܖ'&;\~*iV[fF<T&& ][{5O$hI]ր!Ӡ Yc^>wf\,Efk%3n4{42 fgtVoz7E X"3ʔ}D)UGr:s"T w.gFpCs('NW +ZlsB+i 4yOQF)Y#4TE2DmO24)\eLOx)pMN6їD??%r2&=/[%!IM$ ,z5ð0}BE}љw C- |ELGMRNP25EU_[Fb,Bƍ#g3jCkm⎋o\kNg7̯iIZ;<3]QQZӸ󕍱=ae \҆jU⑑5 Uns|vM@V<#=kXlal4s/s)3Xj)֡:w'4\^D@j?~eZ )>ed*삍Q!(F`ۢ1tnKo08 b`")h#-B!0Dž>%u#@ʼnS Ll)bFr(c14m2W JW@HG Wo v,|y0ޫcY9q1QaY~ S6r׊}7V4OWUt9՜SZ!EwTvi`=fU$6'nbk=]$[Bj<4 @j %r#5p:)#hf@ÒQ6 (c!vTQFuc$a9Ý|GEUvmԁIS}hɺ'(>ɟ,za͋2P*Q x%_mNm6/sy;좋vSSOϯoMKf#@UM_}OosGu7flyQUoU ŤsO7<,is!{vr Vk bPTv{I|~rkIE fkFm87vK?fpp_P|3s~? X A2Ys.5(,РhH%/gjlUSYSj55&ҳ)a=?ؗO}(IFtF%&.H`Q?4n.OPOF jQ h--@'üh]̀'{B".OQy^֘gzh˯O;ޥu !7cDGZ]~wWuU?üqd2(HD`eF ye5`<&ex4>ATdI|]b6Dsv@wejުēS]~}h1X#9O҇SOEJ$GuuJ4]bvFlPV+pZMb/No\rpL%:o@X3PzZzt]5a2!mE?6VO6{}ZӠ<[zuim0W+t%ç?Y덨}L+yu*yMؒ$HCuB%&¶̔L*ÛO) Gn'D$͍Xw HԹ_j)& k q,E$yIf䍷Cq]܇HaL 6sMtkXRWcƘ(iPR[`ﶦrI:Z)96aSF .b)@#wEg:d9i2 pq\MuLx`5N#0@}/6 A[ҎW mU1ZQ<3mdMVPƛ6ajm'_Æ(l|`$8 Bx9^^{c&>pEX#1ѭq{o9Ǐc#u ፱CI/Lp,6_^_6f4>< ʽ89%/FPiKF bM=BJ@BG$2H_s3swRFR KkbHЀ#7N٭>hp~H=;.LY}tw,|ϊ)#p㲥&bc/#  0I XTCMk_ `DMeH.˕, Z7oRm̳نyC}WCl.Əg~ WXll) OFo 7#n;}#,Mp$&KiԃCZ7__D|]\\=L8e释$uJ(n*l,2;m?b|S;^`u$ݼLc yba=+j&Y $SPJaYVJlQx;&-pFjn12zN!Rxʮo%U61oUeQ\h5i>-ɺEAb9KXStxxer`5k&t#9Lȉ +X6kVbhK$z4ņFoXM68@qf6h{_=4Q*z캫$m~cjب|]o hWIw*<3E/ly6=w]LlG!{,c`i^N8N]ӹ@X.lܫ [[p n>NE\Bp#seo@#&Ӊr,#W:zXq=.aS+D.gQ] eZW 6p5d `FA+v:V!}L7vg3EՈ|_-XXM *r:]'XWw 'o]w-XmλLԜz49+ _0J ۅO&xVfa$p<'@>*$I0s2B&\Ʒ >v8vp{[("C ]a1DW2+\#qpP>8sp[jay3"|4"Pà -(m7)3<^2c .uEXLmIIK=t}i0ᣰy]n q/4񦦦 v |CWf*ÃWF?2}2v;exc楖 %I{,e9+($;k Iێ!|yi^窛w1~2QGc~{ݍ~͹Sxs8 a*13f;˝:&__HB8bK[6`z~bZz[JxݏUUg")C].Z_qvU[忪Ʊyd.)5@SQQL* SmCNA>SܔQQ!6y0k>?lƻjk~Wm:پ{ 6 bQP.Q,䔢Z}+uXn1ehmhmXnF %%QY {$s^E{ݨc@@IYib>7M<9xL,/y)8'5B5 FCWэ2 W(taqM`aI][wZ1Fuͭ95ryQ9W xZzH( UAt[`` lʪ7yUd}s>١'nӼb{>$j`iw-`_8<~OYYL~ 2 !`8PNFcBNHxa(++>H)b /MFfآ!x)?Q獨uq;9flU6JDc҅sii n ,:P2""N0mғt6Rg5sbJBUȠ T!*$ S sv56/P7}?g oՑf5ӏ'R6p Z}̗vH{Ø?5dD55p0FlH$筨Pľq#~VMwZwL]?Lg9#~S6CpCK[LYyM³7 KGY@SE|,i[![hsziHvxYӺM{#DÍ]]";s ˑv22AHG",`DF9''_4L} o:I.OBJEԨbCbAh ^V F`+Bewp,y焼 E|Q1r FɎ#, yH.G)"|S8*HjQ;>_?H?c Nk7&CȐle.쟯WIߦMvd670(rz{rj& QG2zi^lN!6ukUPY U^AY;ٹzsQ6oə{͇5s¤VM4 oߎ u_^tbWMe5֯vQ/>NOnC񫇖"ԿP`3YF lxp> ~P?4 \ :n|Տ #$=Mf7!bxCD!bOWM#O"zt =<{X]OrSwvIooß${H/1#;c,)Hxı RŘJūzhZqPF'gDL^D8pp"C]*T1A' (Xg{#'!&zQ_m+#1x{ HѠ/,..3HL91*÷#~3W@ykPbD}}r;vPz | 4U2 =b;vW%  E& _qUF39mݚ@AB׬4ͩvj3܈ vlH=3 Vu>\Wrtڟݓ. ;)GTLI2mSc > stream xp ``8aN endstream endobj 228 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHE+TimesNewRomanPS-BoldMT /Encoding /Identity-H /ToUnicode 230 0 R /DescendantFonts [229 0 R] >> endobj 229 0 obj << /Type /Font /BaseFont /EAAAHE+TimesNewRomanPS-BoldMT /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 225 0 R /DW 0 /W [ 0 [777 0 250 250 333 722 500 443 666 556 443 333 277 389 333 443 833 556 500 556 443 277 556 722 666 556 556 443 500 250 389 556 500 556 500 500 722 500 666 500 500 500 722 333 277 777 610 777 610 722 500 500 1000 500 722 666 ] ] >> endobj 230 0 obj << /Length 283 0 R /Filter /FlateDecode >> stream x]n0 C   dr%AJT ݡIek'p4mG19ɹ65 Rzd:5q̊AgN<|I>(2}2<m"diLf𭾈RC'q^oƯ &!QCdl^3/_gd/^XVf~vd?iBP{LT r3-LPU3 P$9X 5ĨogBn~> endobj 232 0 obj << /Length1 3244 /Length 284 0 R /Filter /FlateDecode >> stream xVl7~;b֋6)qw&!Ci 4B\4@-HB5 iPZ*JQPӘVJhJi?PH%jK͝ y7K"q]玎mB6!3ٵ|w%-vbMٍ[$bbC}< =Wum""|^1}=<Jpߐ~t7Ig=ȉ W "]vIg GLzt;S[p֛N,'u M#hQh5`Vq-W=NQ#1l?-\&Uߝ-Y+c%9Üku{xbѾ 5h a6"w<\'! ,1|8׳!*C5FWdf"n ndt}8H8iLYQaF&4CV<-"FX6Ԥ')kpu RxlGW?t0n )*|d'JzLPL8 {.tRb:q3e╜MԡΤO)ybR U),¬'J沋Q{V. ywHo'9^wUfBBH6ҙ"t[;D<3B*P jdm:ӳF8Je_hEF]Eh~BQC1QZ=-qhlWYʝ/H/Cz@Z)*>G!$ώ],dC 8pVf<'P{Օ;Zϙ +ef}gGМї"qL1EivI8x!á&OXSX{47'o*J~vQ1Xr9rВ7.K/&@kb?wMnM)4V}8$ 3Eg`2S4pfd@1:V~АM`xlpuKėN qHoC{1S99:nN!sIJK)7h$ʻVSW"FJ? 0! _) ;f5N2>=;ô5=ԣW60~Y'}qIcd#m>8B 29UAEJ]p ?L oV4m]]p[x;~))@^,8gسg垡nzy;sRWSPĸO[+|K`k7ͧ -X0+w">bEąɭBPPg(NavcCG0k9Z ~+˾ΰ#H3SGӵ/AwBb 1H!O9'>tCVhj@5QtqD)8SD/Qv=8'1r|V5˓apWKJ8R+TpNo/VA`=.ePfjdA)̾ _ҫ;uԖI0zG)^?4þ#_}76m` . |RP[wt+jFv9ΥNG o9vAܙ%~5[mŪY>Gĝ"7:VJE]:gvh P[JӖDԹ?!2VP*)q,;'&,wĞ-,ޫ =N z~x-+h‰ٟ ' jlJ4hS$Nhj/Sp 9[?zTb$@c?>>#d>n%N/`È!B*3COzA.SAHNga_{ѬWe9zp:^y%k^lcwfeg? {!(3/0RI) QD^{i 0es=@t1|k],:$N{}) endstream endobj 233 0 obj << /Length 285 0 R /Filter /FlateDecode >> stream x{  H0) endstream endobj 234 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAIA+jlm_cmex10 /Encoding /Identity-H /ToUnicode 236 0 R /DescendantFonts [235 0 R] >> endobj 235 0 obj << /Type /Font /BaseFont /EAAAIA+jlm_cmex10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 231 0 R /DW 0 /W [ 0 [750 0 333 1444 1055 555 527 527 666 666 666 666 666 666 1277 750 888 888 888 888 875 875 875 875 875 875 458 458 888 888 888 736 736 ] ] >> endobj 236 0 obj << /Length 286 0 R /Filter /FlateDecode >> stream x]j0y C% @I)Ѕ}-PBv~UT`'4ۯ'2Ȓw׫FִF;S$]Zӭ#]%޹4=a6Z2|?&~Խߜ&ך [eZCaEWKBMQ;N~,,0G 4X s1Ď~γd[New{Jr*@) >P-H  ځ42@M s2AC:94@| g;XrC_ϢɣX'42& ȭH"mpDž אA,c\D?O2Zꜟ0aAj -__G7 endstream endobj 237 0 obj << /Type /FontDescriptor /FontName /EAAAHD+TimesNewRomanPSMT /FontBBox [-568 -306 2000 1006] /Flags 33 /CapHeight 662 /Ascent 1006 /Descent -306 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 238 0 R /CIDSet 239 0 R >> endobj 238 0 obj << /Length1 26968 /Length 287 0 R /Filter /FlateDecode >> stream x |Tյ8>gޯ3gfμ'I&$$+ADŽ% 'jUj+/h Zb/J֪ miiKZI[{O{~ߜk>A!BiġU6ѿF!{pW-a!n|Wd͝>P7j@yԆ[5lrSn^j(w em=hy|/܋=}\%2BJD&#+OSۿ+!7=$ =f% L@oM_"ُd`WVs_F M'[ZxT x6in~\=0ҴqͬwAwԀRxF2Dd=<ܣȍP7>[([7rf{P=vhhEOFԎEЛңuCY>hy&cڅEנ>{tP+ԃl(S#1ȥFME|3^}nBIǡXT&=@}(W ݄~ZH9D;uj~Ga-_VͲwTGP;؎G g @?1j==B#kA"ihZwWpR!ZQϠ8yS@?hB_F߂xC\s;зVmA~t W b'v-;*EK mӸw W,k*ChNCh px/AV9vThڄnE߆Y!:?'*&#Wal#h r/YBp Oi"~)&ssO"[#{JC[^-_"I#E\ѮXC񖢠 1<+sJ&^/3.\l^#&']s"~n$rRr8= x @[bG㿂_ &B,$o}Wl#G==Q)|F9ČFB?#7Q_-6\ƽ?~?yHSx."ג w {(E=kHxa, G0[yS`+8[u,B'K䧹AJ'ڂ9ޙ/ xDA4D8 /Q-{G ٷ vy=\~T^|^ r>OM(5 -з~/l$jS/V,A1<ķd \Q*?"jvxq)_ka+ پ'"H^(H~:&h+y:v~6H 7{<_C7GM0wW)< *\n@ ςTBh,jᓰ~lȣ0v?}tql/##vs_@fr=CA |Xnګ@^^I[l8v#$XXN0>S7"*O&eh$ [qb6^ըUJ\sDKpftHp$_΋53[A`sKl=s ;Z~g2M+(8#o,57F4A`bdCZ׮^qMG[I0ơ}9[Ա틩nnGFرMYT? ;;< 1~um:;>hPAt[hLMb^\n׎Ng5Ħa" >c>}pXB+&?x/!$yMSF&SKhdʥALo救KfnYSǶKuEօ;Ėcۺbzݥ `|FjNX4dgR>Mt)XU\thi]|XB b83/t.jeyZ&)_~WtOҺx+fڱcfP{NJʠ(w:=-ݓ?\xAw~Ckp=6A3 JE;(>c`=>!iZ9`ݙDbC\/hΡnh7{tG@ez. #oTJÀ J+ф!e7d?>83dsf̘ jġdF5+>JWoADP|h>$q E*wހrL63VB?^E쑉#JԸZF < p<qϠ~A<2@Hn La4n=#  !,[pO'O{'&}&7qY x~.8QGAA7tp%[k?h!r V0r[a"sG1Oyi/;;VRvC2{Ta ^YR9xNX? 4u,C*-!F= @@5@3ϭ |/r -J$}e|Np]%M\5@R_WҭQ 8A%*Iծj|\rm\'. )IU;5{4y͈FOe<-ny|@SG)ߩ ݚ̀4&4O4ǭB`'c"w-@F ŵ Dp',`  EҔvnT24yT=alBxRsNw:A"PPhXY'r~LhYrQZ)R,RCR @`2]X^~]p]x]l^-nl8ST8K}A_wbޛy+)>2tUN14N%q pC>SYu<9|bCm]2(=*^ M,R4\jk " `7u,w:emxe8p˙[o9 @氌 -k|d?tV@s0B@:, `vfYsu`($?BinԵ5JuPXY(!3 0!Yuu֮XX!ط4ˆ^tS|F~ Ch ,tـTQ3ԄJ}1 C Ƈfjx п?lKß L9`i6?pwF%-!)ލoNPb%Pb3u`>>8 %Pf@Ca|F| w ړy-Άo_C|aڕ4Ա隷 ZYWLy (%+K SUBT(< ҤzVV*r%$J Jqș_Ӑg@hHoVX;y3JZyS+j]<#?%:(\WwN˓1Z JsS8uߗqߗ;;qk~dj])?Yϡ-V@MYG4ݘaQuQG|%% %Yn'n)Cc( xY:Mq1İ橎 |8V+-ި4톯GOD?J>4pI8SvX >>QN3ZGŀoجU4ifg·q`\a0T7 eMDhFThօNQ6m"DnG!D1-Mb/(Ve zQłk`@!-ry0FjՑ`rTUBl4~Vǭ Gô2̭^r\sDˢpw7~Obں  l{o#pJQo𱃄zpd+@i,ZXffYO<\M q^*F0,0v!,GScOFO[*5CA _ÅS5I8,`7Z fI,5n,#4Li0@,!t/ 4@є{):csp2 (Ǡǐ:Шt.B%''lΏ%x it].?2:8tqYҰ6iۛ3ֿZ9uH3?kS%R$Bv30cdyYnN}z.FQBxv0-A9lg)SF9ۗC}qPSU֠b.RxX0XS[;v U1tc48\Q)R_~UU]ّ豙t9EUj eNIwP>. 2mf@(ͭ9(\@r4o0[_s:n9K4 y@nF۰OsE=U B$IFՉ&A~zNEBrN"_"#'Q؋>'TBAPcJ

aJc:`)`֙4&uKΝ! P{H4Q^YYp]}'E 3,;]ՎRyn@W5 Fo:(Z٤ީª G]pM5Il V9u!8hz;pDZӱq!s 38ݟ->x4៣?'J0jhjYS]k^UY5R12ƥeS5LY8TV).OL-iBCYq4 \ K%D!2 \k_Y;LYV-)B.q#:LlK2Zo@o%"hVɌW*B6'« )'/jfga @Œy0c'59Tt($#iv Z* ;#vN9";b>3ۇtkXۻ==Q-*pW ZF ]RtډjjVv-hwjhke!XEن˓ 3u=9ݷ;gg.QKJrғ\B; /U*I!Kf3Y n2Q fH%M7T(Q7ex ,òp c\pū]".eOr\ 0ɞ)1sS[+J!l^SU(8M2Vvef/^%ްIi. U.ʨh(,'$m\V8i@t"JU gL&i2KvyIѐLPԥU=UUrC0m\'C'ÿ z7!aS6K|)51 7`p <ۓ:65=Of1yl%RwbjI#!)%&ڪn+-q=ReL؇SB/cd,sx/. .F&:_DPAjxC!*@Aut}4SRt`&Mo [0g4=m14pa\+9.gOQD91XDX:j$b]b]4a&LheV NA;:Zyɤvtad.Q 9rnۋPʠFH(J7J;SNkf.}]_}卋o[:ʖe+?H&v~Q0i?y䦹ɺXiU޺˫vY=0r̲'ys".,:!bJlZ(gH,5-!4n (f(!F6*BPM)qc/JWh@¶Sv" ؆~|$ujdȄ+=(8((H!A QWQݭPQx6G27BsRv46] cZ|dozz8ˑsvnۜ)z2vhMs&lP,V͢WNUZ[}js*BʬsCm}%!Gow ?8[ѭ쁧ۮzEy ݽSX8䅳ZL2K[LV>ݼݹ]w#ڢON((KM> B߹ޢy"lgd̔^IXk&MQa(*`EQm~ա2ɚLu3gj.EϚKsEݡP&x՞ij-FfE!L*o HK3~Q &ҋmvz7\~qz:9YJ)Cn4eGaM.y8(-*0}~k{[7>qO7?|GqGLnK#[;^og-G׋_Nj϶iT\?R%+NLPly!zpM8(>tP-:l=:"$kI:IqK҅Cc;9܁X2IV_Q DQ5,pC 5kjQXaIMΏ?r%^)OZW.jfְZVCJcTP.o5[jr(̨,Ϣ,ڟ4[Ԩ @\dfk2Y7 +LTv`NTTV]6Dvu\\zhTEk 1,Fԥ^an_ szo5$xm76Mjnegڡ~]cwD Bo|k_%QDa#aT7QLNV3{UiI}4p5 % @9B4PFBiܣ&( -)6#y23kϬӳͳH@ϭ>{?@|n5{a>w0P=}4FMʓIǭ4D 3,ҁـ<0LD%52gY-@M{uw5~j_;AҗBo߅+\3AԤdc/~r!z]mOVG̿{&ZӤ9vڗH^J/8vG1 +|B_xS!n_u[l})dy a伞?#$5uQ!7zO/!8Ks'攰D*!% 1|*p{P|7 %.kmk"9ȍIlQe%uI$$]8"2 O);+Fz:LFQoGo9t__7kø7qpζg_?|\5c30mMM&NqHb) YO[ݠ)uf<F*fSQESfUQ=JY(V$*(R^|i"]TJJhh4woI^Ib,C{ `l黉s,1?JL}Z;WiƳb dUUsi+Zu?zP`dY^''o[ZQ`nU̩iT?g2 T_+KU4Y}j;hcLx}m n-'2IkU_ɴ9\ ;}On@ES ψ MXjz2:"W)J"h2%f2 >SeSVZc@P/o &-8wWVVF_uՊzۤc(kz^.p<)p!:RtVh2Qx(45Ljj*rK 3,`\L) 8>y"yS5XRNHz:rvZ?^(T$޲`Ǥzxyiݼ{o1:ᄅҝ_gEk{kp&3F(>:'ǗH{8iHGQk#9X >=‚Km5 "ּ۪m/^PQ5!mzJܰ/ʲBX2968;'2/Z-/u. oTk~c5naW/3!|F_T]jOի%w(\lJTyڡQ9}oyII>3,Swc!}oG'FrU 3R]S]U6 RՀ|iK:AK$8AgJ [Ob;,]Lрh 5e`+5xUcV' ŒٮʨMဠRl Ҙv! 5!}MxP% :Hбz "R0B{gHC˜2!ɭ0FdIH =:d؊ČzdfjL,mɔUf˔JFkl;?wH40 X? h] +L)ͧ(5فU,znx{i9eY> q=vGXfZs@3Û+PȢs'O^mtDI($Zx {b36ǜԩqkJ&Rm6Y OwY_sVtM/m$P:wbz8c6RzLhJ$ F ]7ӳ5RA<~;LY3M_LH9OV7}@OE}0f2~k aKk,.+%FR6;N zaV]A*((lT5'TlT[&1^_S빛Dx~1҃gb;v!µRVss5ʥy_ٯ(*U.>wTSJ^S>4F''w+<`(B{% I_HD"N%<jR)ߟU+=Ц࠮vVצ/7n}͹jJ`" =U}>ՠ4ajQ;7ӕm؄} 83Ƌ~#*я8t:{lӝdlog/eTqE ҷ@lCZ->\&=1?3+8[ QkUe:(Xa<7.vAZ卅j-'0QԺÄMf`S Q4יo3?AΐQ@s?8[Z|n?h21!Sb2ے!U*L.Iњ$qJzH|I ԄJ)JH?=6t,Axu&> 3Cq7nOw BvGԲm괩%Se.*8V_Y8\-}ow%aE DHlm=b5N w@8w@*b$IZt*9yZP(g\8jWv+.S|CgN¸T ??v/u.g@OqL|_0Nwm]q2Gmq⣌Ғ-XM)K4 uBl~~Gxj ԫnOcG1`~=ޫ; bdrF\0Jj VUÜ$U)՚ш` q,r^J63g6V`=>t̛ks .@}gmAT< KqcA gFTA =:1Ӄ ? +f#5~4l)mP!que\QT7M `HcQ{vIɤ[ j.[mo"'`^K;]깊 7š)_\Vo;uS6Fzeu ~O`m_ͱm?&;l?x֑O_}W]J=[u#WFΦaQe6[Tʁ06d!Kt߷hKa硫tY%k??A*(a!9ϕ v.5H&/un[()q#(F 7 s9Wrv瀓8_& KSG + D0\ ϥ%҃i.tMXgӁd⧇ #>`ET16z0b=ӜI=/F,mN_-]\v5-h>6d^ș l=7m~NڴTq,~jG̻8[9a'cCΒjVnkAJ@q/~Td77ƈx9!x=΁6룟T,}H0gQge'dau.n4&|& 1}tuNAIe-O݁epeEUEu'oEe֚""&zP{r]_,fL^]KԻ!{*W1Wĭskj%$}otZMtK"\FNsQ,T&+=T<փ#x{V08scuuJak/?\֝<+==?[w7>VFU`VTJׯ~/(}󁓒L2잁Hb<'Sz]eGxjl۴e3^>]UthzjØ& /^#ݭph2vgZCIf+U4((S%j~jrZ742׿&{ǻwgV+.2isK ]ДT;g9E(SD&w6aJEeS $ s :n/rU_>;,m.:s7cd*+Ju{`'rǟaItu MJ{? ^us o'3dPqF,ˎuUMA^P&V[ DiNH7z!.=U"O^+#9kp.+ԗVo>ܧ?W޼l ?zzcWy >2~NH">^P8B)cLfHs cdRPD)9#FBP?DOcG񙹽rLmr{swknۦM^jbIMkE-THbii4AED*AD_kkU>胁>T(@-nVD-Yn0;7({'>a`&'kd%;`$%rp9fh>[HlGPLCo~vv̛W/|`Bee <2w~fS}~SN}{oyؾY,+|ȼ(zn#|ZDB;B T /Gp;w"Ke0-Jq 6 T*'Yu^hbN犬`#_Ek|H3=""25 j=S'M2ۥ+1)I2;櫏rY;Y@}!)Qk@QiZPq `IJP(N t]&)eN5x o8s5tո-Jb 8uWGjZo .ql` )Ȫ侎Ia-u lUCQQ \DQ(pvViPS EE)[eƹqKQ1x.no쬥X/Z5aZn `K^~Ȃk`ri eI34: 5L7RWRL(HU5kgV V eNIȦnVcLal 2i1o -ZE.YD]m ̧wlH <r|Ӏ%lʮGp}Kˎ%Tܒ#M׏=1࣯NVƨ7xG;cBBջɰ3:M619Yu9vkn:*=ⰼwi0 Ajbi p d|4xMq|q)w)k VH\ibBöVӈ)x/ AY`P^NeP.rrilmB@.4jl ٞ+k4~K1ϛ6gLLm͍GN͍oY4WrDב.{>}D?;М+ϷYjVVIm ś|+Z*˟B&]+Eg)2* e8jNvSc}b+On[}4%+ө0$~yēq֝_|qФ@g5ħDk͇6wj.F|slD#:ܭxR3ܿph;޽|Ww}P;]:WM4'ǿL3/! endstream endobj 239 0 obj << /Length 288 0 R /Filter /FlateDecode >> stream x0{Fj r +j endstream endobj 240 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHD+TimesNewRomanPSMT /Encoding /Identity-H /ToUnicode 242 0 R /DescendantFonts [241 0 R] >> endobj 241 0 obj << /Type /Font /BaseFont /EAAAHD+TimesNewRomanPSMT /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 237 0 R /DW 0 /W [ 0 [777 0 250 250 333 722 277 277 277 389 443 333 666 500 500 500 722 722 666 722 443 500 722 610 722 333 610 610 500 500 500 500 500 500 500 ] ] >> endobj 242 0 obj << /Length 289 0 R /Filter /FlateDecode >> stream x]j0E -Eg!PR YA~,SC# Y+URGyoA$DY_&б !IE6@m{Ce..*H>yX>a߽!٣X~/"9U7u"pQ7Yƒ =b0SۚV(?0L;T d*KPTZA2)( 2f*@$SE Q$r(DUT":Fς@Y  gl%|Q} b% 'dY\XZ[u"my{K|"i3Θ:|n;}>t78dOqv endstream endobj 243 0 obj << /Type /FontDescriptor /FontName /EAAAHG+CMUSerif-Italic /FontBBox [-1003 -354 1459 1110] /Flags 97 /CapHeight 683 /Ascent 1110 /Descent -354 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 244 0 R /CIDSet 245 0 R >> endobj 244 0 obj << /Length1 6744 /Length 290 0 R /Filter /FlateDecode >> stream xY{ly}wB~ awHs6ɏu<"6V6%l\oD:yGs$~(.d D:ze(g1*nIݞ`Ѷ;X`h!bbsqo;/ٱ% [t\cckV:X4ڂfx7+wK`H:q+F[U4p+vGwh 4|C:] 3TpIdc uƷŦ{2`| xw{˜o˦8ދ }؍"*n JXle=G&Oa*~Hb˻xV^-Xq Ǽ&@EZvCi#UZ!Bڊ*-%dH1d|[.]]F;odmS4Z $0i>iǽi['jSKu oMAvyۨxF(jJ`J^/ 3YqQ+>Vxx*-~A hŽ`V+3L8tFC^ 뼠1(;㿱u$T>XVw9눇cSJܛ^F 21i1$xƆӋw~⭔/0 Ũ,4 /O⽶!񨡗h}jp mb0Ff܍A1<;x`$1)LǎA 6c# qG-#Wnj8b̓Cp k2{8)I\׾)kv̚571|P>rsq}be%p Z9_ICd&7b.ॢ(Z@-Wrvi.TZ87ﻟd4§> *N+!rV&n/H4 xcgfvڵ*dmIW*IeڮM-NZQSLWVOƖ 7c~mʽӄ{q5N=-#[CQoyCjzV*H2ZUq]6R2J$؇ z;a =# ̴'0Ywa+cL>6j(a Lmv!u6qg^Ou})(P1;\FwbwLͪ)Lf!34pTAm! # aBgk@,\-6|b (Y,(q'_BOԎF vT`_ ~5:] .!Y5؛H>4@emyx9I+<8$0VHGH8`(,;̗]+#.q;ZZJ1PuTcW/"~ZQQ?H 2Tn3^ܪ h )Yug!MIjA-3 nY%smw4E7tN.D< yGyTgMF+Sr pwt#;cQ3{Jє~.'fn {9xB8\Ce+n\IͤVbndrpU`V|._%xgwU;`,` vUDK& CsUÅ.)hFm.S؏4#5ik%qUҶ=s:ћjH\9в[l"^urD$!>O5#Q7X̀6TauB)ѣ\6tbyrKUܩo=%EG Q&>THIX#J+ȸH"N ;-)@H.SbTB7p*5,t6xYͱD &$$?pUSa9!40l&SCԛ6.Zj"hY0-z%%dEmYipNF$N#KCO+*,`g@򀠰Qv+ې+ 4.V q -uJVRs$U8U(rSPf`75–;!w&iaҹdTA..LXv˴V^!$X.lq 4bD{jK/Or6_'{јlL`}i. *U$ U$Z# gvjIv\+WfOGQ^/Udv ^@j:[#g91H0 [Eb&ʃ[w+nKfeIe ,wlq޳*0z?9O: /ҽi!k~r>CN­Z s#RU( vPoՎ|M+ |;v0tPDҎJ7|n]a1 ͹+w\1CE 8D4")`23 thEpzM)9Zd)0i΢`?dޛ.)W!Us^3PWYtz Dܙ:ќz9"~{A$exN ]N/M&"DcK`D);@.p%v|7="{P5qn^(>UE?T#W'@5+  NS爀.RnXnlS2ۇӠOI:vpOmaJBҶ=TYuW JԑtMuFisù29v,Efn$L\ R;MJtϤS4.698{G:-8 IYoNs}5Mvd4͢ɳ"˳0 (3JBn8{!3韵j R/4 (өG$EIQ> stream x m endstream endobj 246 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHG+CMUSerif-Italic /Encoding /Identity-H /ToUnicode 248 0 R /DescendantFonts [247 0 R] >> endobj 247 0 obj << /Type /Font /BaseFont /EAAAHG+CMUSerif-Italic /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 243 0 R /DW 0 /W [ 0 [760 0 333 358 358 511 421 511 817 332 306 562 255 460 536 715 896 511 408 408 ] ] >> endobj 248 0 obj << /Length 292 0 R /Filter /FlateDecode >> stream x]n0 } CK*M&q؇!1]1u .ceMЏ^!4x5v% FDtWt,&lÆUztI LJ! t=hlg荽^7vhC.ҽ!:JG :)>&P kT襽G;)y/.ִKEF;*nh)rI3m)c*DT,$ǎL 2)&ŤLUDHL>!8.ߞ,=DCRs|}-ilݜE+h6 endstream endobj 249 0 obj << /Type /FontDescriptor /FontName /EAAAHI+jlm_cmr10 /FontBBox [-40 -250 1009 750] /Flags 33 /CapHeight 683 /Ascent 750 /Descent -250 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 250 0 R /CIDSet 251 0 R >> endobj 250 0 obj << /Length1 5796 /Length 293 0 R /Filter /FlateDecode >> stream xX ly}1;\r{ wy(J%YuYAJ"ɱdnT;!VN}q vavE#-#]q!mqB\m o޼ 0 #0a0#sg0dx=r]9(N!F:~9&`{Cya+x8{#i3t/ s }̨8Kw#^Jh}=^,3 G[|✵tu [VfpIyPc?`"` >a8wqC>38>M1q id>Kuy 6еҖ^l' Ȋ3%p q& v#G^sW`;DmUq?g} a\0&l0blƎa-p?'!ø.u?Oy'8GQGYFdMgܵpIXx2&ȋL^b>W+D<E/^fT {D`ᓖQ&SAl~4aj!]G$X6_]:a\g^{8R =`nt|}wtc yx]뉸wlat8<ݑ3-~$(,n+ O-h'_Ԉͺ"Kk^2Lcx3b4",&= %3ak<};2c0r&@d2@l^D{h>/\ }gIbSβ]M ZgMUAR]v7isnNk坩eb#.s-ѾopCLQ F}z[`h}-UIU A}C%U.^{딣ŗɏ01#FzP:Ʉ=x<޺lA} ߵo"VA]~U@ &2(^kHؼ~3<Wxf˽S2ݫ q@Qz =$VI$. 1,N6y(ϼCTo}/o3*./t(j.eeeyX'I)#x-HT"=om6 % @^a͞3R 7 k-]Gm3-ZUf wƛl(><)YfeMp;B)Ki\ﶵ)r,U&* *띮N2M>=/vy<" k]]nDȢ&;#:; y~OgLwT6ͱ֊{] ׅY5T.IDDT?EqɽѴYb? `GŴszC%C2Z@:; r*ŔITpA x}mB xV(ph!ϣ=G0ج"fKp*T ؑEǎB}ZH-!3#W|JA^C|zfRXzu %Pؼ{y}ܼ콏$5> D-qtUnBB7qC#{tqU?*Pn3l~UlԸùwlhr`]]@&o6[˞6捗UvrlU]1` tYZF;֓9;1z\_7&o䍗8>nohk>3"~yXrKԿC3WBZkNqSB68פY/? rj`_ bDhw:3h_D*tN_®0vMvOw*R`cZQ/4xg}um~>PJR[K;f'*ʮ]36'ɝ{tҸ@ѸHݬ`MYFArzzEYP {\X]Z Hګx<]lg˷3$\E=p j@G|'G1Cji1Nx|'&or}E^uk 7~XrGh-VT{n+rJ­^pv;.5 |fT,ceyKڷT/<^^Ԛ=VaXY3osS ѕG~kԐmg vUvddkXgLP |iȯ#:^Ec؈D~i2H1T\Д4 Uo;8#JFXp!QH5\2%&4/nOKl__q t7LXMp*$Ca1vq\^ W-%8_!2rPg%Z62V$l6!֝$Ӽ" j&^63r|LRfihmMwV#'2O<<6pP*n/쇟m!y+мmcNXJ)5xiR4p[—C2#xؽaPhrbբM43|j#3 t1IݐDvjٝͿC_]KvR;djIJ$E,~s/׌>ă$Ûh#̺x`5@D ٺ&eu9-saEW0uhdK.290;P dl*{8Ӣl?ҎX8!n4Nš ttb+gp! ƒ8U{5Sv{{Bo.4 &އ{Ϫnğ哺ܚeY[oϬkXSGF0z ll'LL 98(nss̸aF0T!Q9odHISoŠyh Y%P]jhTmU xD3]QK{%Gw:uY-DEn$u};8SyiⴅT4^Ō: шpt;nǗHRq1xSqUǀ*\c&߬owka(]^[1xΦJS xjZgIv}|EύlK_M7GPW4y,ftAk^aV,w LkMX)ٷġ`6~;lS^ 5;BukӕTP4Up FbW^AIՉU«3]o΍)Ia'Րk4okzdBk-Xrc3De߇Zz6ug݃.\{{㹰ʖZ+uWr'0yh}o=9{`g֤IJVhñDn, endstream endobj 251 0 obj << /Length 294 0 R /Filter /FlateDecode >> stream x{`%{Q gy4 endstream endobj 252 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHI+jlm_cmr10 /Encoding /Identity-H /ToUnicode 254 0 R /DescendantFonts [253 0 R] >> endobj 253 0 obj << /Type /Font /BaseFont /EAAAHI+jlm_cmr10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 249 0 R /DW 0 /W [ 0 [750 0 333 625 750 722 680 750 777 500 388 777 500 388 500 500 394 277 555 555 444 388 305 500 555 277 500 763 277 500 555 391 500 277 500 500 444 555 277 500 500 500 500 ] ] >> endobj 254 0 obj << /Length 295 0 R /Filter /FlateDecode >> stream x]j0y C5Rȡ M4N ,d琷_uI^>"Qr8>M7 ēh;) ;$tHڮ|G")D]݃yiv9i=]$0ForxKݳHBQ{n}ղ{P֊]mμڥ~ɏ="iW֏} yCtC4(IPA%lm4h JAu )x4l[F4Pdq@ *ACYD%$4T'6h(bNhcNh  %IhP 44XE I8&Q }%KЗ}vM6bo,&@#2dEL!狵t8=ܫsow j;G endstream endobj 255 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding >> endobj 256 0 obj << /Type /FontDescriptor /FontName /EAAAHH+jlm_msbm10 /FontBBox [-55 -420 2343 920] /Flags 33 /CapHeight 685 /Ascent 920 /Descent -420 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 257 0 R /CIDSet 258 0 R >> endobj 257 0 obj << /Length1 536 /Length 296 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 258 0 obj << /Length 297 0 R /Filter /FlateDecode >> stream x{,J endstream endobj 259 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHH+jlm_msbm10 /Encoding /Identity-H /ToUnicode 261 0 R /DescendantFonts [260 0 R] >> endobj 260 0 obj << /Type /Font /BaseFont /EAAAHH+jlm_msbm10 /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 256 0 R /DW 0 /W [ 0 [750 0 333 500 ] ] >> endobj 261 0 obj << /Length 298 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 262 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 263 0 obj << /Type /FontDescriptor /FontName /EAAAHF+CMUSerif-Bold /FontBBox [-1338 -401 1738 1115] /Flags 33 /CapHeight 686 /Ascent 1115 /Descent -401 /ItalicAngle 0 /StemV 0 /MissingWidth 500 /FontFile2 264 0 R /CIDSet 265 0 R >> endobj 264 0 obj << /Length1 13956 /Length 299 0 R /Filter /FlateDecode >> stream xz tyfUL_su}a0i` H$R)Z%QJDKld2t8D~Zz0Y#N}vM}xNl'/ W@tWTMĤHYl@fR'31]\±ELZZ~DI M #(jOstpN cΒیc7ïÙ%q2D{$~s9?~MJaK7COO&#E2=@Z$ϑGa>$9F"7=r=y #$Cd6$qr,y79C";~2L%)a$Uϲ]b)ΤC! 5FG̿aj #V81q䮸f̡s୹BٿKT!YC¡C<F<}n>}Hx/:|3ڜ7wo?V7 u|8q=~K\.e.̓ঝ0H\꿼`!c<00_0w -x1!6l``Ocw߲54L̟G0/3sTjP|^ ϑL?kS!{;ʊqtd0V1}HBUm]~G6(Q_wd(ӡ{-n>k{Y0 `u k tj3+~Ou _}N~Uj0%~%6].檻wі}\,hKy7S.&-~7/%%T j9x'U] 7\% g: /aEH4v!DAEGڎQtظf:slͰfzUvaMq 2'g'dFdD:2'ڈ7k.R$RG3n*6m-l+ܴ%?qzm5d# {k[}?z% !Mde|齦f z8\{t{1^jrhfr v]WOЯB,qM[RyIU@=Dnrq;YlѻM!ͤhwS*HኪsS|_"0PLih 9*}HNDnR{=9]}Ե~ hg]•w(޵]/&yq]4{D*$UIeV$Ķr[۬a/n Tw~ܿܘíOLl5|qSrdF, |p9 ^i M;#\0h 1Z#.ic[ 3AC 5q:bTa1#^f`)V0;f:ϙn]W8gs+(}>qJzrd`OsG1ww>V.ŏ⎍=10+;q[!.j[KMTbU*bn%p{ pU!]f  Ȯ(1γHv+q!6YF pC!~ 㑵V B롶 GZ#+)skLz5mن;h*ڌw a%1,.F zЅu3B,CQAU-ˆW@]z : BJy,THRSJ4jõFM=썞 i.-bEwG2,J7)CB!?*F/* ֕*4DYbuJw}(ѱx!/X{7j?a=瞹g{ہ^uEf)cc P>fyE14/:&@w# d~JP>.F/!0hՉNN:={Z,Kv 9:~lε^vAӻ6^{NВݑ*e/+&j ;#.SpC`U Y(Bo=}xMeQށ 3PB1Nha`Āw؁g14 gƴ8^o|Dӷ~pl/]ffۯih5SvgnaFybC~-Ga]# F$ 簑X @q^& XZ,m5@`а#*~d# 𤂩;\p(Gsp}cO,DHvsD/A#Ȼ. Fwt۽\S􀪨hnwgf*i}j:Z^? 9$$`Glk#h]C jl+Q6aj`,EDMBX13rME e<.c4ČA3JAy|DPr  ^@CbWO4/dFBs  ;=/xn sGxpnm~47w-[] o49A$.MdS"9U,kS F<5Ad:lx B|i5R(EyM4hABׄVzErrt+e&6zzH-:p t*V3g 6#6inYqkj4XV dы:Snnزg ѯCC\z*50ԀxۘVwg-79zlY-#ۖ`s"ZĦlXcWօĬC2k\k~R[ePF/(1\hKjIc_ S!"n;Y_o|Sѱ{'n ?Wsi5^˪Vw:o;`7)`5kFO/Nh1qX y9$GoĦ_C%,,ctqCBrJ_+?ʎQ_rȜ(Ǻ潟%/)FP,q]kr rzM,itL5n6SuxїlK;zf8{[D=Al9 .xX}"A. ]2%{rvgO";NZ\Zya6m;& * :If7ihwL]/}k2暲R0`Pe, @YՁØ1A$S<_l+T[K9X=2QK@3i;P q~W"K Ke=28`/g:+YQK .VB!_ Up\W{Kelo:iW)"񥇷Z/T,Rmh.ꕬ:Gx&r>:㕕9~1 r Aّ#M{DB:ꎊ%@8=KbYqܼ<2 N$yy7̬3Y A8$0Ban  zrd}]#Cg8dxCMlL0p`LKq$\)X]W`xL( \ݔ! ݪhR`}{T_Pyvd[#LoL#BQR;:8 >xȞ(/9)m?:_xh&krYko~ˌ֜gWV#oPq'&tA<5n%[@PAe7>"csAֻ#AƲo[n}cO? <"Q!K|S<"ƈe('//9b˨i<';ݛJJ4L |K9G+/0%*g"#ZCD$lkܷpӣTgǡ< c.n}, }MwW'6~2#t; $rǥÞhJX=r|xuś<> :uCAR u| n_G # B߱Q}6Xt-d|JҠ[O;LW\ʐǴprdᏐn xgS׈st+:zYVh.(1ȡ\UÖ|Rvs5vi |./Ox2h; ],&wc#g7AyB=B>G;ln5-/Ǖj/<:(ʹtuVŢϘeW $u tA@FKIy90 k+uګ1!(H[J!\]jpC72SJ#~޸vU<9{ǃj,>vgJCI=MEt*NFfِ+ٍ7;sc3Ԭ(iΤF~S x4PMn4]+3̈́K0(xSb#M-gӔo@7jٮ WR76>ώ,_q(wEfNT'^ kJ`{Ct6Mv<Xusbd5{ks@_ߛLbϞJNpF|LU"˱݁uf% ,X ͇;yti 5 ǂ79KCCsCL:\lH_Knj cQ'Ca@J]4J2^kN_f{ϙg:tJ)`61V*z<+v=ѢC752( zp"ܾy ^`,i*@!_PA6&WW_1F<-h[EWWN4&U7.~6E2A&vhFȍ,sXLy{ 6`%s :]?96,RP*74Xuk|79z Qٟ%pxM5G^bI\AAN(,un $ .´,-qOUB4wKו ؁8UgmuI~ZX)d)+p$5yɹk}:wxa gfLC1+{Z|IK͕gU]x0?Hx .8떜h'}Xi.λYn'K tv W/K$vB"Y0(ER~N O$ [Nn Gm)CctT[PdS'5 '~56]EWsWԁIwr endstream endobj 265 0 obj << /Length 300 0 R /Filter /FlateDecode >> stream xpF/(0000(0@ O endstream endobj 266 0 obj << /Type /Font /Subtype /Type0 /BaseFont /EAAAHF+CMUSerif-Bold /Encoding /Identity-H /ToUnicode 268 0 R /DescendantFonts [267 0 R] >> endobj 267 0 obj << /Type /Font /BaseFont /EAAAHF+CMUSerif-Bold /CIDToGIDMap /Identity /Subtype /CIDFontType2 /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> /FontDescriptor 263 0 R /DW 0 /W [ 0 [760 0 333 383 383 881 575 511 818 606 638 638 473 527 638 453 638 575 559 958 527 638 447 594 606 723 863 786 638 638 755 606 319 575 319 884 319 527 575 319 606 575 755 575 559 639 639 575 575 575 575 351 869 436 383 ] ] >> endobj 268 0 obj << /Length 301 0 R /Filter /FlateDecode >> stream x]n0@ C ԒEn?"GXd࿯ǨHxy 9fY]&ɋj;mT(~wْ|_gvPpSRuSyTAڵdz}8m8EYMW7~sQYn?-"~GQ&?^٫/˳_GLiMi ogI BK[PHEUWCz&@/5T&R]BJy'P%QtQD֐4_O^ *OW8+P᠓3CN*``P2 iL, bCzȧ1#J69$RůϦ}`,tΘxә6'|5J#1IY_ۭiZ.d&we{øf_~@ endstream endobj 269 0 obj 1130 endobj 270 0 obj 13 endobj 271 0 obj 242 endobj 272 0 obj 4827 endobj 273 0 obj 25 endobj 274 0 obj 409 endobj 275 0 obj 14210 endobj 276 0 obj 52 endobj 277 0 obj 601 endobj 278 0 obj 968 endobj 279 0 obj 19 endobj 280 0 obj 281 endobj 281 0 obj 22522 endobj 282 0 obj 27 endobj 283 0 obj 469 endobj 284 0 obj 2157 endobj 285 0 obj 23 endobj 286 0 obj 371 endobj 287 0 obj 19406 endobj 288 0 obj 20 endobj 289 0 obj 384 endobj 290 0 obj 4397 endobj 291 0 obj 20 endobj 292 0 obj 318 endobj 293 0 obj 3879 endobj 294 0 obj 23 endobj 295 0 obj 421 endobj 296 0 obj 432 endobj 297 0 obj 12 endobj 298 0 obj 241 endobj 299 0 obj 9098 endobj 300 0 obj 39 endobj 301 0 obj 468 endobj 1 0 obj << /Type /Pages /Count 20 /Kids [8 0 R 10 0 R 11 0 R 19 0 R 22 0 R 25 0 R 28 0 R 34 0 R 40 0 R 50 0 R 61 0 R 64 0 R 70 0 R 77 0 R 83 0 R 92 0 R 97 0 R 103 0 R 117 0 R 123 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Metadata 7 0 R /Lang (fr) /PageLabels 9 0 R /Outlines 182 0 R /PageMode /UseOutlines >> endobj 3 0 obj << /Font << /F131 202 0 R /F5 205 0 R /F108 209 0 R /F180 215 0 R /F118 221 0 R /F11 224 0 R /F169 228 0 R /F114 234 0 R /F171 240 0 R /F182 246 0 R /F103 252 0 R /F10 255 0 R /F121 259 0 R /F9 262 0 R /F181 266 0 R >> /ProcSet [ /PDF /ImageB /ImageC /Text ] /XObject << /Im2 173 0 R /Im1 53 0 R >> /ColorSpace << /ICC51 52 0 R /DefaultRGB 6 0 R >> >> endobj 9 0 obj << /Nums [0 << /P (1) >> 1 << /P (2) >> 2 << /P (3) >> 3 << /P (4) >> 4 << /P (5) >> 5 << /P (6) >> 6 << /P (7) >> 7 << /P (8) >> 8 << /P (9) >> 9 << /P (10) >> 10 << /P (11) >> 11 << /P (12) >> 12 << /P (13) >> 13 << /P (14) >> 14 << /P (15) >> 15 << /P (16) >> 16 << /P (17) >> 17 << /P (18) >> 18 << /P (19) >> 19 << /P (20) >> ] >> endobj 29 0 obj << /Type /Action /S /GoTo /D [25 0 R /XYZ 42.519 292.67297 null] >> endobj 35 0 obj << /Type /Action /S /GoTo /D [28 0 R /XYZ 42.519 339.08 null] >> endobj 41 0 obj << /Type /Action /S /GoTo /D [40 0 R /XYZ 42.519 662.29095 null] >> endobj 44 0 obj << /Type /Action /S /GoTo /D [34 0 R /XYZ 42.519 357.64798 null] >> endobj 46 0 obj << /Type /Action /S /GoTo /D [40 0 R /XYZ 42.519 174.422 null] >> endobj 56 0 obj << /Type /Action /S /GoTo /D [40 0 R /XYZ 42.519 282.26898 null] >> endobj 65 0 obj << /Type /Action /S /GoTo /D [61 0 R /XYZ 42.519 769.889 null] >> endobj 73 0 obj << /Type /Action /S /GoTo /D [64 0 R /XYZ 42.519 124.724 null] >> endobj 78 0 obj << /Type /Action /S /GoTo /D [77 0 R /XYZ 42.519 769.889 null] >> endobj 106 0 obj << /Type /Action /S /GoTo /D [11 0 R /XYZ 42.519 769.889 null] >> endobj 108 0 obj << /Type /Action /S /GoTo /D [25 0 R /XYZ 42.519 332.123 null] >> endobj 110 0 obj << /Type /Action /S /GoTo /D [77 0 R /XYZ 42.519 194.38397 null] >> endobj 138 0 obj << /Type /Action /S /GoTo /D [10 0 R /XYZ 42.519 669.089 null] >> endobj 143 0 obj << /Type /Action /S /GoTo /D [11 0 R /XYZ 42.519 663.321 null] >> endobj 146 0 obj << /Type /Action /S /GoTo /D [11 0 R /XYZ 42.519 249.05896 null] >> endobj 153 0 obj << /Type /Action /S /GoTo /D [83 0 R /XYZ 42.519 415.70297 null] >> endobj 156 0 obj << /Type /Action /S /GoTo /D [83 0 R /XYZ 42.519 324.90497 null] >> endobj 159 0 obj << /Type /Action /S /GoTo /D [97 0 R /XYZ 42.519 769.889 null] >> endobj 167 0 obj << /Type /Action /S /GoTo /D [123 0 R /XYZ 42.519 644.48895 null] >> endobj 170 0 obj << /Type /Action /S /GoTo /D [123 0 R /XYZ 42.519 444.40698 null] >> endobj 162 0 obj << /Type /Action /S /GoTo /D [103 0 R /XYZ 42.519 769.889 null] >> endobj 113 0 obj << /Type /Action /S /GoTo /D [103 0 R /XYZ 42.519 251.04297 null] >> endobj 181 0 obj << /Type /Action /S /GoTo /D [8 0 R /XYZ 42.519 769.889 null] >> endobj 182 0 obj << /First 183 0 R /Last 198 0 R >> endobj 184 0 obj << /Type /Action /S /GoTo /D [8 0 R /XYZ 42.519 386.42197 null] >> endobj xref 0 302 0000000000 65535 f 0000206038 00000 n 0000206233 00000 n 0000206383 00000 n 0000000015 00000 n 0000000443 00000 n 0000003125 00000 n 0000003158 00000 n 0000097636 00000 n 0000206788 00000 n 0000072700 00000 n 0000008551 00000 n 0000003756 00000 n 0000008517 00000 n 0000003968 00000 n 0000004178 00000 n 0000008736 00000 n 0000008757 00000 n 0000008777 00000 n 0000011600 00000 n 0000008798 00000 n 0000011768 00000 n 0000014371 00000 n 0000011789 00000 n 0000014539 00000 n 0000017577 00000 n 0000014560 00000 n 0000017745 00000 n 0000022089 00000 n 0000207159 00000 n 0000017766 00000 n 0000022062 00000 n 0000017909 00000 n 0000022274 00000 n 0000026245 00000 n 0000207243 00000 n 0000022295 00000 n 0000026218 00000 n 0000022434 00000 n 0000026430 00000 n 0000031529 00000 n 0000207324 00000 n 0000026451 00000 n 0000031488 00000 n 0000207408 00000 n 0000026591 00000 n 0000207492 00000 n 0000026734 00000 n 0000026876 00000 n 0000031714 00000 n 0000036541 00000 n 0000031735 00000 n 0000032164 00000 n 0000032199 00000 n 0000032647 00000 n 0000032667 00000 n 0000207574 00000 n 0000032687 00000 n 0000036514 00000 n 0000032828 00000 n 0000036726 00000 n 0000042082 00000 n 0000036747 00000 n 0000042250 00000 n 0000044472 00000 n 0000207658 00000 n 0000042271 00000 n 0000044445 00000 n 0000042416 00000 n 0000044657 00000 n 0000048989 00000 n 0000044678 00000 n 0000048955 00000 n 0000207740 00000 n 0000044818 00000 n 0000044962 00000 n 0000049174 00000 n 0000053397 00000 n 0000207822 00000 n 0000049195 00000 n 0000053370 00000 n 0000049340 00000 n 0000053582 00000 n 0000058837 00000 n 0000053603 00000 n 0000058782 00000 n 0000053855 00000 n 0000054104 00000 n 0000054306 00000 n 0000054510 00000 n 0000054717 00000 n 0000059022 00000 n 0000063030 00000 n 0000059043 00000 n 0000063003 00000 n 0000059266 00000 n 0000063215 00000 n 0000066810 00000 n 0000063236 00000 n 0000066775 00000 n 0000063444 00000 n 0000063652 00000 n 0000066996 00000 n 0000102138 00000 n 0000067018 00000 n 0000072631 00000 n 0000207904 00000 n 0000067227 00000 n 0000207987 00000 n 0000067374 00000 n 0000208070 00000 n 0000067521 00000 n 0000067667 00000 n 0000208915 00000 n 0000067808 00000 n 0000067949 00000 n 0000072887 00000 n 0000076610 00000 n 0000072909 00000 n 0000076573 00000 n 0000073124 00000 n 0000073335 00000 n 0000076798 00000 n 0000080636 00000 n 0000076820 00000 n 0000080551 00000 n 0000077023 00000 n 0000077216 00000 n 0000077407 00000 n 0000077599 00000 n 0000077795 00000 n 0000077984 00000 n 0000078185 00000 n 0000078384 00000 n 0000080824 00000 n 0000080846 00000 n 0000097391 00000 n 0000081037 00000 n 0000208155 00000 n 0000081234 00000 n 0000081381 00000 n 0000081525 00000 n 0000081670 00000 n 0000208238 00000 n 0000081816 00000 n 0000081957 00000 n 0000208321 00000 n 0000082099 00000 n 0000082246 00000 n 0000082392 00000 n 0000082537 00000 n 0000082683 00000 n 0000082828 00000 n 0000208406 00000 n 0000082974 00000 n 0000083119 00000 n 0000208491 00000 n 0000083263 00000 n 0000083410 00000 n 0000208576 00000 n 0000083556 00000 n 0000083696 00000 n 0000208831 00000 n 0000083838 00000 n 0000083983 00000 n 0000084127 00000 n 0000084272 00000 n 0000208659 00000 n 0000084418 00000 n 0000084565 00000 n 0000208745 00000 n 0000084711 00000 n 0000084856 00000 n 0000085002 00000 n 0000086970 00000 n 0000086991 00000 n 0000097822 00000 n 0000097845 00000 n 0000102109 00000 n 0000097991 00000 n 0000102326 00000 n 0000209001 00000 n 0000209083 00000 n 0000102348 00000 n 0000209136 00000 n 0000102577 00000 n 0000102745 00000 n 0000102901 00000 n 0000103299 00000 n 0000103508 00000 n 0000103741 00000 n 0000104009 00000 n 0000104387 00000 n 0000104620 00000 n 0000104868 00000 n 0000105040 00000 n 0000105261 00000 n 0000105517 00000 n 0000105669 00000 n 0000105882 00000 n 0000106139 00000 n 0000107367 00000 n 0000107458 00000 n 0000107619 00000 n 0000107855 00000 n 0000108175 00000 n 0000108285 00000 n 0000108544 00000 n 0000113469 00000 n 0000113572 00000 n 0000113733 00000 n 0000114115 00000 n 0000114602 00000 n 0000114867 00000 n 0000129176 00000 n 0000129306 00000 n 0000129471 00000 n 0000130050 00000 n 0000130729 00000 n 0000130988 00000 n 0000132054 00000 n 0000132151 00000 n 0000132312 00000 n 0000132585 00000 n 0000132944 00000 n 0000133055 00000 n 0000133327 00000 n 0000155948 00000 n 0000156053 00000 n 0000156226 00000 n 0000156685 00000 n 0000157232 00000 n 0000157491 00000 n 0000159746 00000 n 0000159847 00000 n 0000160008 00000 n 0000160365 00000 n 0000160814 00000 n 0000161081 00000 n 0000180586 00000 n 0000180684 00000 n 0000180852 00000 n 0000181221 00000 n 0000181683 00000 n 0000181949 00000 n 0000186444 00000 n 0000186542 00000 n 0000186708 00000 n 0000187015 00000 n 0000187411 00000 n 0000187667 00000 n 0000191644 00000 n 0000191745 00000 n 0000191905 00000 n 0000192298 00000 n 0000192797 00000 n 0000192911 00000 n 0000193168 00000 n 0000193697 00000 n 0000193787 00000 n 0000193948 00000 n 0000194186 00000 n 0000194505 00000 n 0000194611 00000 n 0000194875 00000 n 0000204072 00000 n 0000204189 00000 n 0000204353 00000 n 0000204798 00000 n 0000205344 00000 n 0000205366 00000 n 0000205386 00000 n 0000205407 00000 n 0000205429 00000 n 0000205449 00000 n 0000205470 00000 n 0000205493 00000 n 0000205513 00000 n 0000205534 00000 n 0000205555 00000 n 0000205575 00000 n 0000205596 00000 n 0000205619 00000 n 0000205639 00000 n 0000205660 00000 n 0000205682 00000 n 0000205702 00000 n 0000205723 00000 n 0000205746 00000 n 0000205766 00000 n 0000205787 00000 n 0000205809 00000 n 0000205829 00000 n 0000205850 00000 n 0000205872 00000 n 0000205892 00000 n 0000205913 00000 n 0000205934 00000 n 0000205954 00000 n 0000205975 00000 n 0000205997 00000 n 0000206017 00000 n trailer << /Size 302 /Root 2 0 R /Info 4 0 R /ID [<7286315F4AFD852B9DE1C49925732ED6> <7286315F4AFD852B9DE1C49925732ED6>] >> startxref 209220 %%EOF jlatexmath-1.0.7/jlatexmath-fop/doc/programmes/000077500000000000000000000000001326546671500215435ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/doc/programmes/fibo.e000066400000000000000000000021771326546671500226370ustar00rootroot00000000000000indexing description : "{ Le terme de rang `n' de la suite de Fibonacci (Version récursive terminale). La suite de Fibonacci est définie par : }" auteurs : "Christophe HARO" copyright_auteur : "Auteur : (c) Christophe HARO, 2010" licenses_url : "http://www.gnu.org/licences/gpl-3-0.html" licence : "GPL" projet : "JLATEXMATH" dossier : "${DOCBOOK}/jlatexmath/" fichier : "fibo.e" date : "$Date: 2010-04-16 09:28:46 +0200 (Ven 16 avr 2010) $" revision : "$Revision: 13 $" url : "$HeadURL: svn://localhost/jlatexmath/programmes/fibo.e $" modifications : "$Author: haro $" ... feature fibonacci(n : INTEGER) : INTEGER is -- Le terme de rang `n' require n > 0 do Result := fibo(n, 1, 1) ensure "{ Result = le terme de rang `n'}" end feature {} fibo(n, F1, Resultat : INTEGER) : INTEGER is do if n < 3 then Result := Resultat else Result := fibo(n-1, Resultat, Resultat + F1) end end ... jlatexmath-1.0.7/jlatexmath-fop/doc/programmes/fibonacci.e000066400000000000000000000027611326546671500236340ustar00rootroot00000000000000indexing description : "{ Retourne l'élément de rang `n' de la suite de fibonacci (Version itérative) La suite de Fibonacci est définie par : }" auteurs : "Christophe HARO" copyright_auteur : "Auteur : (c) Christophe HARO, 2010" licenses_url : "http://www.gnu.org/licences/gpl-3-0.html" licence : "GPL" projet : "JLATEXMATH" dossier : "${DOCBOOK}/jlatexmath/" fichier : "fibo.e" date : "$Date: 2010-04-16 09:28:46 +0200 (Ven 16 avr 2010) $" revision : "$Revision: 13 $" url : "$HeadURL: svn://localhost/jlatexmath/programmes/fibonacci.e $" modifications : "$Author: haro $" ... feature fibonacci(n : INTEGER) : INTEGER is -- L'élément de rang `n' require n > 0 local i : INTEGER -- Le rang du dernier élément calculé f1, f2 : INTEGER -- Les deux éléments qui le précèdent do from f1 := 1 -- fibonacci(i-1) : terme de rang 1 Result := 1 -- fibonacci(i) : terme de rang 2 i := 2 -- Rang du dernier terme calculé invariant Result = fibonacci(i) f1 = fibonacci(i-1) variant n - i until i >= n loop f2 := f1 f1 := Result Result := f1 + f2 i := i + 1 end ensure --"{ Result est l'élément de rang `n' de la suite }" end ... jlatexmath-1.0.7/jlatexmath-fop/doc/xml/000077500000000000000000000000001326546671500201675ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/doc/xml/doc-jlatexmath.xml000066400000000000000000001523421326546671500236240ustar00rootroot00000000000000 %entites; ]>

DocBook et les formules mathématiques Utiliser \JLaTeXMath \JLaTeXMath Christophe HARO
Christophe.HARO@ac-nantes.fr
Calixte DENIZET
Calixte.DENIZET@ac-rennes.fr
Christophe HARO and Calixte DENIZET Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Notes de révision dernier commit :"$Date: 2010-04-16 16:31:47 +0200 (Ven 16 avr 2010) $" dernière compilation : revision : "$Revision: 16 $" url : "$HeadURL: svn://localhost/jlatexmath/xml/doc-jlatexmath.xml $" modifications : "$Author: haro $" Ce document montre comment utiliser quelques commandes \LaTeX pour éditer un texte scientifique au format DocBook. Il s'agit de réaliser une petite démonstration pour présenter le rendu obtenu dans une sortie au format PDF d'un texte Mathématique incluant des équations.
Source des programmes présentés Pour des raisons techniques, les sources des programmes présentés ne sont pas exactement ceux des programmes réels. Ainsi, par exemple, lorsqu'un environnement multi-ligne de \LaTeX nécessite de placer le caractère , celui-ci devrait être échappé puisque c'est un caractère réservé de XML. Le code source réel, tel qu'il apparaît dans les fichiers joints, encadre les instructions des expressions mathématiques par les balises  … ]]> qui échappent ainsi les caractères réservés de XML. Cependant, ces balises ne peuvent être imbriquées dans les éléments ]]>. Elles n'apparaissent donc pas dans ce document, mais il faudra veiller à les rétablir pour obtenir des programmes XML valides.
Introduction Ce texte a été composé avec EMACS dans le mode majeur nXML. Le système de composition est DocBook en version 5.0 XML validé par le schéma RELAX NG. Les feuilles de styles XSLT sont utilisées par XMLLINT pour la validation et la résolution des inclusions externes. SAXON est le processeur XSLT et FOP réalise la composition des textes imprimés au format pdf. La composition à l'aide de FOP utilise les extensions \JLaTeXMath pour le rendu des équations et des expressions mathématiques. La composition d'expressions mathématiques avec DocBook n'est pas simple et, surtout, donne un rendu qui n'est pas satisfaisant comparé à celui que permet \LaTeX et ses paquetages d'extensions. Il existe différents projets qui tentent de rassembler le meilleur des deux mondes. Le projet \JLaTeXMath développé par Calixte DENIZET est de ceux-là. Il permet d'intégrer simplement dans un texte xml au format DocBook certaines des commandes \LaTeX les plus utiles pour composer les expressions mathématiques. \JLaTeXMath est une API Java. Son utilisation est simple, efficace et robuste. La page d'acceuil du projet, à l'adresse , vous en dira plus. L'objectif de cette documentation est de donner quelques exemples simples de composition d'expressions mathématiques. Ce n'est donc un tutoriel ni sur DocBook, ni sur \LaTeX. Ce n'est pas non plus une étude exhaustive des possibilités de \JLaTeXMath. Les références en fin de texte permettront d'aller plus loin pour ceux que cela intéresse. Elle s'adresse au débutant sans expertise particulière sur DocBook pour lui permettre de démarrer rapidement avec la composition de textes scientifiques. Cependant, elle ne lui économisera pas les efforts nécessaires pour l'utiliser efficacement. La , donne quelques indications pour installer le paquetage \JLaTeXMath et pour configurer la feuille de style afin d'en utiliser les fonctionnalités. La , montre quelques exemples de composition d'expressions. La , complète ces éléments et montre comment changer les polices de caractères utilisées par défaut pour se rapprocher encore un peu plus du rendu obtenu avec \LaTeX. La , montre sur un exemple simple comment insérer une expression composée avec \JLaTeXMath dans les commentaires du code source d'un programme informatique pour compléter sa documentation. Le document conclut par quelques références utilisées pour composer ce texte.
Installation du paquetage et adaptation de la feuille de style Il n'y a pas d'installation de \JLaTeXMath au sens propre. Il suffit de placer l'archive jlatexmath-embedded-fop-x.y.z.jar dans un dossier accessible par FOP et d'ajuster la feuille de style xsl. Cette section indique comment faire.
Installation de <jlm:latex style="text">\JLaTeXMath</jlm:latex> Commencer par télécharger l'archive jlatexmath-embedded-fop-x.y.z.zip depuis le site du projet. L'adresse de téléchargement est et la version x.y.z est la 0.9.1(). Déballer cette archive dans un dossier quelconque. Elle contient le fichier jlatexmath-embedded-fop-x.y.z.jar qui doit être accessible à FOP. Vous avez deux possibilités : ajuster le CLASSPATH qui donne les chemins d'accès aux classes Java utilisées par FOP ou placer cette archive dans le dossier lib/ du répertoire dans lequel est installé FOP. L'ajustement de la valeur de la variable d'environnement CLASSPATH met en jeu des commandes qui dépendent du système d'exploitation hôte et du processeur de commandes utilisé par l'utilisateur de ce système. Sur un système UNIX par exemple et pour un utilisateur d'un tel système pour lequel le processeur de commandes est bash ou sh, l'ajustement est réalisé par la commande : $ export CLASSPATH=${CLASSPATH}:chemin/jlatexmath-embedded-fop-x.y.z.jar Dans cette commande, il faut évidemment remplacer chemin par le chemin d'accès à l'archive, c'est à dire le nom du dossier dans lequel elle a été placée. Il faut aussi remplacer x.y.z par leurs valeurs effectives. Le caractère $ qui débute la ligne ne doit pas être tapé. Il est mis ici pour figurer le caractère d'invite (prompt) du processeur de commandes et peut différer selon la configuration du système. Ainsi, par exemple sur le calculateur sur lequel est tapé ce texte, le prompt est callisto:~ haro$. Une méthode plus rapide consiste à placer, si c'est possible, l'archive dans le dossier lib/ du répertoire d'installation de FOP. Dans ce cas, la modification de CLASSPATH n'est pas nécessaire.
Adaptation de la feuille de style Il s'agit de préparer une feuille de style primaire qui va définir les commandes nécessaires pour permettre la traduction des éléments \JLaTeXMath, mais qui va aussi charger la feuille de style « normale » de la distribution DocBook. Au lieu de préciser dans chaque instance de l'élément <latex> l'espace de nom, comme ceci : ... ]]> la feuille de style définit le préfixe jlm. L'en-tête du fichier qui définit la feuille de style est, par exemple : ... ]]> Bien entendu, les pointillés doivent être remplacés par ce qui manque ou éliminés si votre feuille de style est réduite aux adaptations nécessaires à \JLaTeXMath. Il reste alors à rajouter la partie concernant l'élément ]]>. ]]> Ce segment de code de la feuille de style compose le fichier latex.xsl placé dans le dossier examples/ de l'archive du projet. Il suffit donc de la copier/coller. Finalement, l'adaptation complète de la feuille de style devient : ... ]]> Pour éditer un texte, il suffit de définir les espaces de noms et de préfixer les éléments dans le texte. Les préfixes définis sont libres. Ce texte, par exemple, utilise le préfixe jlm: pour les éléments ]]>, mais ce n'est pas une obligation. Les définitions utilisées pour ce texte sont les suivantes : ...
]]> Ce qui permet ensuite de composer les éléments comme cela a été précisé au tout début de cette section.
Exemples de composition avec <jlm:latex style="text">\JLaTeXMath</jlm:latex> Une première tentative Commençons par une première tentative. Il s'agit d'une équation simple, sans titre ni numérotation. Le programme source pour cette équation est : \sum_{i=0}^{i=n}{i} = \frac{n \times (n+1)}{2} ]]> Il suffit donc de placer les instructions \LaTeX qui composent l'équation dans un paragraphe. on obtient : \sum_{i=0}^{i=n}{i} = \frac{n \times (n+1)}{2} La même expression peut aussi être composée pour être intégrée au texte de la ligne en cours. Il s'agit donc d'une expression « en ligne » (in-line). Il suffit de définir l'attribut style de l'élément ]]> et de lui attribuer la valeur , comme ceci : Ceci est le texte d'un paragraphe dont une ligne contient une expression mathématique composée avec \LaTeX. L'expression est \sum_{i=0}^{i=n}{i} = \frac{n \times (n+1)}{2} et elle s'intègre parfaitement au texte. La taille des caractères est ajustée automatiquement. ]]> On obtient alors le résultat suivant : Ceci est le texte d'un paragraphe dont une ligne contient une expression mathématique composée avec \LaTeX. L'expression est \sum_{i=0}^{i=n}{i} = \frac{n \times (n+1)}{2} et elle s'intègre parfaitement au texte. La taille des caractères est ajustée automatiquement. La formule n'est pas vraiment impressionnante et pas difficile à préparer, même sans \JLaTeXMath. Voyons un second exemple, toujours sans numérotation, mais un peu plus compliqué. Fin de l'. Un exemple d'équation plus élaborée Voici le résultat à obtenir : Les instructions nécessaires pour obtenir ce résultat sont évidemment plus difficiles à écrire. Le programme est le suivant : \phi_n(\kappa) = \frac{1}{4\pi^2\kappa^2} \int_0^\infty \frac{\sin(\kappa R)}{\kappa R} \frac{\partial}{\partial R}\left[ R^2\frac{\partial D_n(R)}{\partial R}\right]\,dR ]]> Essayons encore avec une expression utilisant une matrice. Voici ce que nous souhaitons obtenir : Le programme s'écrit : \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)} ]]> Remarquer l'utilisation de la police de caractères \mathfrak. Bien entendu, nous devrions utiliser des environnements plus spécialisés pour améliorer la composition, par exemple pour ajuster l'espacement qui précède et qui suit le signe \overset{\mathrm{def}}{=} . C'est tout à fait possible avec les commandes , , … qui sont reconnues par \JLaTeXMath mais nous en resterons là pour cette initiation. Fin de l'. Équation numérotée avec son titre Les équations sont habituellement numérotées afin de pouvoir y faire référence dans le texte. Pour que l'équation soit numérotée, elle doit être enveloppée dans un élément ]]> et un titre doit être défini dans le sous-élément ]]>. Enfin, l'équation sera référencée à l'aide de l'identifiant défini comme valeur de l'attribut id de l'élément ]]>. Le programme de l'équation précédente devient : Une équation numérotée \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)} ]]> Avec le résultat suivant : Une équation numérotée La référence à cette équation utilise son identifiant dans le texte, comme ceci : L'équation ci-dessus définit le déterminant de la matrice. Elle utilise la police \mathfrak. Le programme de la référence est : L'équation ci-dessus définit le déterminant de la matrice. Elle utilise la police \mathfrak. ]]> Remarquer que le numéro dans le texte est « cliquable ». En fait, il est programmé dans le texte comme un lien sur l'identifiant de l'équation. Lorsque l'équation est numérotée, l'espace de la largeur de la page est divisé en deux parties. La partie gauche reçoit l'expression et la partie droite le numéro de référence. Par défaut, l'expression est centrée dans sa partie et le numéro est cadré à droite dans la sienne. Ces placements sont configurables en ajustant la feuille de style xsl, mais ces ajustements dépassent le cadre de cette documentation d'initiation. Les références en fin d'article permettent d'aller plus loin. Fin de l'. Équation à « plusieurs dimensions » L'expression « plusieurs dimensions » signifie simplement que l'équation occupera plusieurs lignes dont il faut assurer une présentation harmonieuse. C'est ce que la culture \LaTeX désigne par l'expression « environnement multi-line ». Voyons d'abord une équation à deux dimensions. La suite de Fibonacci est définie par : Définition de la suite de Fibonacci La suite est définie par une expression présentée sur deux lignes selon le domaine des valeurs de i. Pour obtenir ce résultat, le programme utilise l'environnement cases de \LaTeX. Comme l'équation devient compliquée, elle est composée dans un fichier séparé dont le nom est ici eq-2dim.xml. Voici d'abord le contenu significatif de ce fichier : f_i = \begin{cases} 1 & \mbox{si } i = 1 \mbox{ ou } i = 2,\\ f_{i-1} + f_{i-2} & \mbox{si } i > 2. \end{cases} ]]> Le texte du paragraphe ci-dessus qui définit la suite est alors : La suite de Fibonacci est définie par : Définition de la suite de Fibonacci ]]> Ce programme utilise les entités , qui est l'entité permettant d'insérer une espace typographique insécable dans le texte et , dont la valeur est le chemin d'accès au fichier eq-2dim.xml dans le système de gestion de fichiers du calculateur hôte. Voyez les références en fin d'article pour savoir comment définir et charger ces entités. Voyez aussi l'en-tête du code source de cet article pour apprendre comment cela a été fait ici. Fichiers de l'exemple Le fichier qui contient le code source de cet article est doc-jlatexmath.xml. Il est placé dans le dossier xml du répertoire de la documentation. L'équation de l'exemple est définie dans le fichier eq-2dim.xml du dossier equations. Étudiez ce fichier car il est légèrement différent de ce qui est présenté ci-dessus. C'est la version de l'archive de documentation qui doit être utilisée. Une difficulté plus contraignante est l'élément <include> qui permet de charger le contenu du fichier désigné pour l'inclure dans le texte. C'est que les processeurs XSLT, comme saxon ou xsltproc par exemple, ne savent pas interpréter l'élément <include> pour résoudre les références et inclure des fichiers externes. La solution consiste à réaliser une compilation du texte en plusieurs passes. La première passe utilise le processeur xmllint (noter les deux caractères 'l') qui résoud les références externes et compose un fichier xml intermédiaire dans lequel le fichier externe est chargé à sa place. Les autres passes compilent le texte du fichier intermédiaire. Voyez les références en fin d'article pour plus de détails sur l'inclusion de fichiers dans un texte composé pour DocBook. Fin de l'. Une équation vraiment compliquée Cette fois, voici un texte mathématique vraiment compliqué. L'expression se présente ainsi : C'est encore une équation définie dans un fichier xml séparé. Il est inclus par les instructions suivantes : ]]> Le texte de ce fichier est le suivant : Édition d'une équation complexe \left\{ \begin{array}{l} \dot{x}(t)= \left( \begin{array}{ccccc} 0 &1 &0 & &0 \\ \vdots & &\ddots&\ddots& \\ 0 & & &\ddots&0 \\ \underline{\hat{a}}_k & & &0 &1 \\ -a_0 &-a_1&\ldots&\ldots&-a_{n-1}\\ \end{array} \right) x(t) + \left( \begin{array}{c} 0 \\ \vdots\\ 0 \\ \vdots\\ 1 \end{array} \right) e(t) \\ s(t) = \left( \begin{array}{ccccccc} b_0 & b_1 & \ldots & b_m & 0 & \ldots & 0\\ \end{array} \right) x(t) \end{array} \right. avec : \underbrace{ \underline{\hat{a}}_k= \left[ \sum_{i=1}^k \frac{\underline{x}_i \underline{x}_i^T}{\sigma_i^2} \right]^{-1} \left[ \sum_{i=1}^k \frac{\underline{x}_i y_i}{\sigma_i} \right] }_{D'apr\grave{e}s\ la\ r\grave{e}gle\ \acute{e}nonc\acute{e}e\ plus\ haut} \hspace{1cm} \forall k,\ tel\ que\ 1\leq k < N ]]> Le texte placé en indice, sous l'accolade, peut aussi être programmé en utilisant la commande \text, comme ceci : Mais alors, le rendu n'est plus le même. Fin de l'. Un autre exemple non trivial Voici encore une dernière formule compliquée : Elle est aussi définie dans un fichier indépendant qui est inclus ici par les instructions : Voici encore une dernière formule compliquée : ]]> Le texte du fichier de définition de la formule est : Nouvelle équation très compliquée \forall f \in C^\infty \left( \left[ -\frac{T}{2} ; \frac{T}{2} \right] \right), \forall t \in \left[ -\frac{T}{2} ; \frac{T}{2} \right], f(\tau) = \sum_{k = -\infty}^{+\infty} e^{2i\pi\frac{k}{T}t} \times \underbrace{ \frac{1}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) e^{-2i\pi\frac{k}{T}t} dt }_{a_k = \tilde{f}\left(\nu = \frac{k}{T}\right)} ]]> Là encore et comme pour l'équation , il faudrait faire quelques efforts supplémentaires pour améliorer la composition. Restons-en là. Fin de l'. Édition d'une formule chimique Le dernier exemple montre comment éditer une formule chimique. Il semble inutile de revenir sur les instructions de chargement du fichier qui définit l'équation. Le texte de ce fichier est le suivant : Édition d'une équation en chimie \begin{eqnarray} MnO_4^- + 8H^+ + 5e^- & \stackrel{\displaystyle\longrightarrow}{\longleftarrow} & Mn^{2+} + 4H_2O \\ H_2O_2 & \stackrel{\displaystyle\longrightarrow}{\longleftarrow} & 0_2 + 2H^+ + 2e^- \\ 2MnO_4^- + 5H_2O_2 + 6H^+ & \longrightarrow & 2Mn^{2+} + 5O_2 + 8H_2O \end{eqnarray} ]]> La dernière ligne devrait être précédée d'une ligne horizontale programmée avec la commande \hline, mais celle-ci ne semble pas fonctionner pour l'instant(). La situation doit évoluer et le problème sera probablement corrigé lorsque vous lirez ces lignes. . Ici encore, des environnements spécialisés de \LaTeX permettent de composer des formules chimiques de qualité. Ils sont utilisables avec \JLaTeXMath, mais leur utilisation dépasse le cadre de cette présentation. Fin de l'.
Complément : changer les polices de caractères par défaut Cette section n'expose pas une fonctionnalité particulière de \JLaTeXMath, bien que l'archive intègre tout ce qui est nécessaire. On souhaite obtenir un rendu global du fichier pdf généré par FOP aussi proche que possible de celui obtenu avec du « pur » \LaTeX. L'objectif est ambitieux, aussi allons nous nous limiter, pour l'instant, à préparer l'environnement et la feuille de style pour charger et utiliser des polices de caractères de la famille Computer Modern (CM) en remplacement de celles utilisées par défaut avec DocBook. Ce n'est qu'une première tentative, de portée limitée, afin de rester simple et de permettre à tout débutant de réussir cette évolution. Comme cette évolution est tout à fait possible indépendamment de \JLaTeXMath, la suite de cette section ne propose pas d'utiliser les polices de caractères embarquées dans l'archive du projet. Elle montre comment installer, configurer et utiliser ces polices indépendamment. L'évolution est réalisée en quatre étapes. Récupérer dans un dossier quelconque les fichiers de polices de caractères au format ttf depuis l'adresse  ; générer les fichiers de métriques des fonts à utiliser comme indiqué à l'adresse ou à l'adresse  ; modifier le fichier de configuration de FOP pour définir les nouvelles polices et leurs métriques et associer les fichiers correspondants aux noms des polices ; adapter la feuille de style pour charger et utiliser effectivement ces polices. Passer ces quatre étapes avec succés n'est pas difficile, mais il faut être attentif et soigneux.
Télécharger l'archive des polices La première étape est élémentaire. Il s'agit de télécharger l'archive et de la déballer dans un dossier quelconque. Dans la suite, ce dossier est désigné par ${FONTS}. Par conséquent, remplacer partout ce nom par le chemin d'accès complet.
Générer les fichiers de métriques Générer les fichiers de métriques est un peu plus délicat. Cet exemple va supposer que nous voulons installer la police de caractères CMUSerif-Roman. C'est celle qui est utilisée dans le texte que vous lisez. Le fichier qui contient cette font est ${FONTS}/cmunrm.ttf. Pour déterminer à quelle police correspond un fichier du dossier ${FONTS}, il suffit de consulter le fichier texte ${FONTS}/Fontmap.CMU. Pour observer les glyphes correspondantes, il suffit d'ouvrir le fichier avec le lecteur adapté. La distribution de FOP contient la classe qui permet de générer les métriques. Soit ${FOP} le dossier d'installation. Ce dossier contient les sous-dossiers ${FOP}/build/ et ${FOP}/lib/. On commence par faire de ce dernier répertoire le répertoire de travail : callisto:~ haro$ cd ${FOP}/lib callisto:lib haro$ Tout ce qui précède le premier caractère $ est l'invite du processeur de commandes et ne doit donc pas être tapé. Le second exemplaire de ce caractère est le caractère de déréférencement de la variable d'environnement qui le suit et, lui, doit être tapé si vous avez défini cette variable. Sinon, vous devez taper à la place de ${FOP} le chemin d'accès complet au dossier d'installation de la distribution de FOP que vous utilisez. Ainsi, par exemple sur le PC que j'utilise pour saisir ce texte, FOP est installé dans le dossier fop-0.95/ de mon répertoire de travail. Je dois donc taper, après l'invite du processeur de commandes : cd ./fop-0.95/lib Il suffit alors de lancer la commande de génération des métriques, comme ceci : callisto:lib haro$ java -cp \ ../build/fop.jar:avalon-framework-4.2.0.jar:\ commons-logging-1.0.4.jar:\ commons-io-1.3.1.jar:\ xmlgraphics-commons-1.3.1.jar \ org.apache.fop.fonts.apps.TTFReader \ ${FONTS}/cmunrm.ttf \ ${FONTS}/cmunrm.xml Le caractère '\' en bout de ligne est le caractère de suite, qui indique au processeur de commandes que la commande n'est pas terminée et qu'elle se poursuit sur la ligne suivante. Cette facilité est utilisée ici pour améliorer la présentation du texte, mais on peut normalement taper toute la commande sans se préoccuper des retours à la ligne. Bien entendu, il faut remplacer les indications de versions des paquetages par les valeurs de ceux que vous avez effectivement installés avec FOP. Remarquer que la commande ci-dessus n'est pas la même que celle indiquée à l'adresse . L'archive xmlgraphics-commons-1.3.1.jar n'est pas indiquée dans la commande du site. Lorsque tout se passe bien, le système répond : TTF Reader for Apache FOP 0.95 Parsing font... Reading /Users/haro/fop-0.95/fonts-LaTeX/cm-unicode.ttf/cmunrm.ttf... Font Family: [CMU Serif] Creating xml font file... Creating CID encoded metrics... Writing xml font file /Users/haro/fop-0.95/fonts-LaTeX/cm-unicode.ttf/cmunrm.xml... This font contains no embedding license restrictions. XML font metrics file successfully created. callisto:lib haro$ Le dossier ${FONTS} contient alors le nouveau fichier cmunrm.xml des métriques. Cette génération doit être reprise pour chacune des polices à installer. Les métriques étant toutes générées, il faut à présent indiquer à FOP où trouver les fichiers de polices et les métriques correspondantes.
Configurer FOP Il s'agit de modifier le fichier ${FOP}/conf/fop.xconf. Commencer par en faire une copie de sauvegarde. La copie étant réalisée, le fichier est complété ainsi : ... ... /Library/Fonts ... ]]> Bien entendu, il faut remplacer les chemins d'accès des url à leurs valeurs effectives dans le SGF hôte. Attention aussi à bien préfixer chaque URL par file:/// avec TROIS caractères '/'. Les attributs de l'élément ]]> sont commentés à l'adresse . L'attribut embed-url permet d'embarquer dans le pdf généré les fonts correspondantes, ce qui permet au visualiseur d'afficher le document, même si la machine sur lequel il est affiché ne dispose pas des polices.
Utiliser les nouvelles polices Il reste à modifier la feuille de style primaire pour utiliser les nouvelles polices. Pour cela, on ajoute à la feuille de style déjà préparée dans les sections précédentes les éléments suivants : Times New Roman CMUSerif-Roman 12pt Courier 9pt ]]> Ce sont exactement les paramètres utilisés pour préparer le document que vous lisez. Cependant, il est aussi possible de s'en tenir aux polices installées par défaut avec \JLaTeXMath. Voyez pour cela le fichier examples/latex.xsl dans l'archive du projet. Vous obtiendrez les mêmes résultats avec moins d'efforts. Encore une fois, la procédure décrite ci-dessus est indépendante de \JLaTeXMath et permet d'installer une police quelconque. Il faudra, dorénavant, lancer FOP avec l'option , complétée du chemin d'accès au nouveau fichier de configuation, comme ceci par exemple : callisto:xml haro$ fop -c ${FOP}/conf/fop.xconf \ ${FO}/doc-jlatexmath.fo -pdf ${JLATEXMATH}/imprimables/doc-jlatexmath.pdf ${FOP} est le dossier d'installation de FOP, ${FO} est le dossier qui reçoit le fichier intermédiaire au format fo à convertir. ${JLATEXMATH} est le dossier du projet actuellement en développement. Dans cet exemple, il s'agit tout simplement de la documentation que vous lisez. Il ne vous reste plus qu'à expérimenter vos propres configurations. Les références précédentes et celles de la , devraient vous y aider.
<jlm:latex style="text">\LaTeX</jlm:latex> dans les sources de programmes Lorsque le document expose des sources de programmes informatiques, il peut être intéressant d'embarquer, dans les commentaires du programme, des expressions mathématiques composées avec \JLaTeXMath. Cette section montre un exemple simple de documentation embarquée dans le code source d'un programme. Le code source d'un programme informatique est inséré dans un document au format DocBook à l'aide de l'élément ]]>. L'attribut language de cet élément permet de préciser le langage informatique dans lequel est écrit le code du programme. Des API complémentaires autorisent, par exemple, la coloration syntaxique du code. Les lecteurs intéressés trouveront tous les renseignements nécessaires à l'adresse ainsi qu'à l'adresse . Voici un exemple de présentation de code source. Il s'agit d'un extrait d'une classe écrite en langage Eiffel. indexing description : "{ Le terme de rang `n' de la suite de Fibonacci (Version récursive terminale). La suite de Fibonacci est définie par : }" auteurs : "Christophe HARO" copyright_auteur : "Auteur : (c) Christophe HARO, 2010" licenses_url : "http://www.gnu.org/licences/gpl-3-0.html" licence : "GPL" projet : "JLATEXMATH" dossier : "${DOCBOOK}/jlatexmath/" fichier : "fibo.e" date : "$Date: 2010-04-16 16:31:47 +0200 (Ven 16 avr 2010) $" revision : "$Revision: 16 $" url : "$HeadURL: svn://localhost/jlatexmath/xml/doc-jlatexmath.xml $" modifications : "$Author: haro $" ... feature -- Requête publique fibonacci(n : INTEGER) : INTEGER is -- Le terme de rang `n' require n > 0 do Result := fibo(n, 1, 1) ensure "{ Result = le terme de rang `n'}" end feature {} -- Requête privée fibo(n, F1, Resultat : INTEGER) : INTEGER is -- Le terme de rang `n' do if n < 3 then Result := Resultat else Result := fibo(n-1, Resultat, Resultat + F1) end end ... Remarquer quelques défauts dans ce texte. D'une part, la coloration syntaxique est perdue après l'inclusion dans le commentaire d'en-tête. D'autre part, il n'est pas possible de réaliser une double inclusion. Il serait ainsi interessant de pouvoir programmer : ]]> Le programme source serait chargé et chargerait à son tour la formule. Cette double inclusion ne semble pas fonctionner ici.
Webographie Le projet \JLaTeXMath est accessible à l'adresse . Le site du projet DocBook est . Une référence indispensable sur DocBook et l'adaptation des feuilles de styles est . On y trouve une documentation claire et complète dispensée par un professionnel, par ailleurs développeur des feuilles de styles. EMACS est l'éditeur de texte utilisé pour composer ce document. Le site est . Le mode nXML de cet éditeur est un paquetage complémentaire disponible à l'adresse .
GNU Free Documentation License See .
jlatexmath-1.0.7/jlatexmath-fop/doc/xml/gpl-3.0.xml000066400000000000000000001235301326546671500217750ustar00rootroot00000000000000 <acronym>GNU</acronym> General Public License version 3 Version 3, 29 June 2007 Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program—to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty for this free software. For both users’ and authors’ sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. “This License” refers to version 3 of the GNU General Public License. “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. A “covered work” means either the unmodified Program or a work based on the Program. To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users’ Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work’s users, your or third parties’ legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: The work must carry prominent notices stating that you modified it, and giving a relevant date. The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or Limiting the use for publicity purposes of names of licensors or authors of the material; or Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor’s “contributor version”. A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others’ Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. one line to give the program’s name and a brief idea of what it does. Copyright (C) year name of author 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 3 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. If not, see http://www.gnu.org/licenses/. Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: program Copyright (C) year name of author This program comes with ABSOLUTELY NO WARRANTY; for details type ‘show w’. This is free software, and you are welcome to redistribute it under certain conditions; type ‘show c’ for details. The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the General Public License. Of course, your program’s commands might be different; for a GUI interface, you would use an “about box”. You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see http://www.gnu.org/licenses/. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read http://www.gnu.org/philosophy/why-not-lgpl.html. jlatexmath-1.0.7/jlatexmath-fop/examples/000077500000000000000000000000001326546671500204405ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/examples/README000066400000000000000000000007441326546671500213250ustar00rootroot00000000000000Put the archive jlatexmath-embedded-fop-...jar in a directory accesible by FOP. To see the Docbook example (you should eventually modify the include in latex.xsl to include fo/docbook.xsl) you need the CM Unicode fonts available at http://sourceforge.net/projects/cm-unicode/ (if you don't want to use it, you must modify latex.xsl) : fop -c conf.xml -xml latex_docbook.xml -xsl latex.xsl -pdf latex_docbook.pdf to see the fo example : fop -c conf.xml -fo latex.fo -pdf latex.pdfjlatexmath-1.0.7/jlatexmath-fop/examples/conf.xml000066400000000000000000000124511326546671500221120ustar00rootroot00000000000000 . 72 72 flate jlatexmath-1.0.7/jlatexmath-fop/examples/latex.fo000066400000000000000000000076721326546671500221170ustar00rootroot00000000000000 \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 jlatexmath-1.0.7/jlatexmath-fop/examples/latex.pdf000066400000000000000000000626051326546671500222610ustar00rootroot00000000000000%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 jlatexmath-1.0.7/jlatexmath-fop/examples/latex.xsl000066400000000000000000000026361326546671500223140ustar00rootroot00000000000000 CMUSerif-Roman CMUSansSerif CMUTypewriter-Regular jlatexmath-1.0.7/jlatexmath-fop/examples/latex_docbook.pdf000066400000000000000000001350471326546671500237620ustar00rootroot00000000000000%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 jlatexmath-1.0.7/jlatexmath-fop/examples/latex_docbook.xml000066400000000000000000000076461326546671500240140ustar00rootroot00000000000000 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 : jlatexmath-1.0.7/jlatexmath-fop/examples/times.pdf000066400000000000000000000775041326546671500222710ustar00rootroot00000000000000%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 jlatexmath-1.0.7/jlatexmath-fop/pom.xml000066400000000000000000000046601326546671500201450ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath-fop jar ${project.artifactId} A Java API to render LaTeX ${project.parent.groupId} jlatexmath ${project.parent.version} org.apache.xmlgraphics fop ${fop.version} junit junit ${junit.version} test org.codehaus.mojo build-helper-maven-plugin ${build.helper.plugin.version} add-resource generate-resources add-resource ${project.basedir} META-INF LICENSE COPYING jlatexmath-1.0.7/jlatexmath-fop/src/000077500000000000000000000000001326546671500174115ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/000077500000000000000000000000001326546671500203355ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/000077500000000000000000000000001326546671500212565ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/000077500000000000000000000000001326546671500220455ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/000077500000000000000000000000001326546671500233025ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/000077500000000000000000000000001326546671500244045ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/000077500000000000000000000000001326546671500265455ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/000077500000000000000000000000001326546671500273315ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/JLaTeXMathElement.java000066400000000000000000000157151326546671500334200ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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.awt.Color; import java.awt.geom.Point2D; import java.util.HashMap; 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.PropertyList; import org.apache.fop.fo.properties.CommonFont; import org.apache.fop.fo.properties.FixedLength; import org.apache.fop.fo.properties.Property; import org.scilab.forge.jlatexmath.TeXConstants; import org.scilab.forge.jlatexmath.TeXFormula; import org.scilab.forge.jlatexmath.TeXIcon; 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); } } JLaTeXMathElementMapping.java000066400000000000000000000070231326546671500346460ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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); } } } jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/JLaTeXMathObj.java000066400000000000000000000055421326546671500325360ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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"; } } JLaTeXMathXMLHandler.java000066400000000000000000000074171326546671500337060ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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; } } jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/000077500000000000000000000000001326546671500304135ustar00rootroot00000000000000ImageJLaTeXMath.java000066400000000000000000000062511326546671500340470ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.ImageInfo; import org.apache.xmlgraphics.image.loader.impl.AbstractImage; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; /** * 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; } } jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/loader/000077500000000000000000000000001326546671500316615ustar00rootroot00000000000000Graphics2DImagePainterJLaTeXMath.java000066400000000000000000000076531326546671500405160ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/loader/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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 java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import org.apache.xmlgraphics.java2d.Graphics2DImagePainter; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.fop.JLaTeXMathElement; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * @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()); } } ImageConverterJLaTeXMathToG2D.java000066400000000000000000000067451326546671500400150ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/loader/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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.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; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; /** * 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; } } ImageLoaderFactoryJLaTeXMath.java000066400000000000000000000073621326546671500400000ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/loader/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoaderFactory; import org.apache.xmlgraphics.image.loader.spi.ImageLoader; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; /** * @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; } } ImageLoaderJLaTeXMath.java000066400000000000000000000100141326546671500364340ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/loader/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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.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.scilab.forge.jlatexmath.fop.JLaTeXMathObj; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; 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; } } PreloaderJLaTeXMath.java000066400000000000000000000105671326546671500362150ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/java/org/scilab/forge/jlatexmath/fop/image/loader/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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.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; import org.scilab.forge.jlatexmath.TeXIcon; import org.scilab.forge.jlatexmath.fop.JLaTeXMathElement; import org.scilab.forge.jlatexmath.fop.JLaTeXMathObj; import org.scilab.forge.jlatexmath.fop.image.ImageJLaTeXMath; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * 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; } } jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/000077500000000000000000000000001326546671500223475ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/000077500000000000000000000000001326546671500235075ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/services/000077500000000000000000000000001326546671500253325ustar00rootroot00000000000000org.apache.fop.fo.ElementMapping000066400000000000000000000000701326546671500332740ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/servicesorg.scilab.forge.jlatexmath.fop.JLaTeXMathElementMappingorg.apache.fop.render.XMLHandler000066400000000000000000000000651326546671500332040ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/servicesorg.scilab.forge.jlatexmath.fop.JLaTeXMathXMLHandler org.apache.xmlgraphics.image.loader.spi.ImageConverter000066400000000000000000000001121326546671500375500ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/servicesorg.scilab.forge.jlatexmath.fop.image.loader.ImageConverterJLaTeXMathToG2Dorg.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory000066400000000000000000000001111326546671500403360ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/servicesorg.scilab.forge.jlatexmath.fop.image.loader.ImageLoaderFactoryJLaTeXMathorg.apache.xmlgraphics.image.loader.spi.ImagePreloader000066400000000000000000000001011326546671500375140ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-fop/src/main/resources/META-INF/servicesorg.scilab.forge.jlatexmath.fop.image.loader.PreloaderJLaTeXMath jlatexmath-1.0.7/jlatexmath-ignore/000077500000000000000000000000001326546671500173215ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath-ignore/pom.xml000066400000000000000000000022521326546671500206370ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath-ignore pom ${project.artifactId} only required to prevent example/test modules from being deployed to sonatype ${project.parent.groupId} jlatexmath-example-export ${project.parent.version} ${project.parent.groupId} jlatexmath-example-giws ${project.parent.version} jlatexmath-1.0.7/jlatexmath/000077500000000000000000000000001326546671500160405ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/COPYING000066400000000000000000000354221326546671500171010ustar00rootroot00000000000000 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 jlatexmath-1.0.7/jlatexmath/LICENSE000066400000000000000000000053711326546671500170530ustar00rootroot00000000000000JLaTeXMath 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. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version. 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. jlatexmath-1.0.7/jlatexmath/pom.xml000066400000000000000000000125031326546671500173560ustar00rootroot00000000000000 4.0.0 org.scilab.forge jlatexmath-parent 1.0.7 jlatexmath jar ${project.artifactId} A Java API to render LaTeX 1.19 ${project.parent.groupId} jlatexmath-font-greek ${project.parent.version} ${project.parent.groupId} jlatexmath-font-cyrillic ${project.parent.version} junit junit ${junit.version} test org.openjdk.jmh jmh-core ${jmh.version} test org.openjdk.jmh jmh-generator-annprocess ${jmh.version} test org.apache.maven.plugins maven-jar-plugin ${jar.plugin.version} src/main/resources/META-INF/MANIFEST.MF org.codehaus.mojo build-helper-maven-plugin ${build.helper.plugin.version} add-resource generate-resources add-resource ${project.basedir} META-INF LICENSE COPYING benchmark org.codehaus.mojo exec-maven-plugin 1.6.0 run-benchmarks integration-test exec test java -classpath org.openjdk.jmh.Main -f 1 -i 10 -wi 5 -jvmArgs -Xmx512m jlatexmath-1.0.7/jlatexmath/src/000077500000000000000000000000001326546671500166275ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/000077500000000000000000000000001326546671500175535ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/000077500000000000000000000000001326546671500204745ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/000077500000000000000000000000001326546671500212635ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/000077500000000000000000000000001326546671500225205ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/000077500000000000000000000000001326546671500236225ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/000077500000000000000000000000001326546671500257635ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/AccentedAtom.java000066400000000000000000000200651326546671500311600ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/AlphabetRegistration.java000066400000000000000000000053261326546671500327470ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; 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(); } AlphabetRegistrationException.java000066400000000000000000000050271326546671500345450ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an error occured while registering an alphabet */ public class AlphabetRegistrationException extends Exception { private static final long serialVersionUID = 2024902825275906423L; protected AlphabetRegistrationException(String str) { super(str); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ArrayOfAtoms.java000066400000000000000000000101511326546671500311730ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; 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); } } } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Atom.java000066400000000000000000000115771326546671500275410ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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; } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/BigDelimiterAtom.java000066400000000000000000000056401326546671500320140ustar00rootroot00000000000000/* BigDelimiterAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a big delimiter (for left and right commands). */ public class BigDelimiterAtom extends Atom { public SymbolAtom delim; private int size; public BigDelimiterAtom(SymbolAtom delim, int size) { this.delim = delim; this.size = size; } public Box createBox(TeXEnvironment env) { Box b = DelimiterFactory.create(delim, env, size); HorizontalBox hbox = new HorizontalBox(); final float h = b.getHeight(); final float total = h + b.getDepth(); final float axis = env.getTeXFont().getAxisHeight(env.getStyle()); b.setShift(-total / 2 + h - axis); hbox.add(b); return hbox; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/BigOperatorAtom.java000066400000000000000000000207161326546671500316720ustar00rootroot00000000000000/* BigOperatorAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; /** * An atom representing a "big operator" (or an atom that acts as one) together * with its limits. */ public class BigOperatorAtom extends Atom { // limits private Atom under = null, over = null; // atom representing a big operator protected Atom base = null; // whether the "limits"-value should be taken into account // (otherwise the default rules will be applied) private boolean limitsSet = false; // whether limits should be drawn over and under the base (<-> as scripts) private boolean limits = false; /** * Creates a new BigOperatorAtom from the given atoms. * The default rules the positioning of the limits will be applied. * * @param base atom representing the big operator * @param under atom representing the under limit * @param over atom representing the over limit */ public BigOperatorAtom(Atom base, Atom under, Atom over) { this.base = base; this.under = under; this.over = over; type = TeXConstants.TYPE_BIG_OPERATOR; } /** * Creates a new BigOperatorAtom from the given atoms. * Limits will be drawn according to the "limits"-value * * @param base atom representing the big operator * @param under atom representing the under limit * @param over atom representing the over limit * @param limits whether limits should be drawn over and under the base (<-> as scripts) */ public BigOperatorAtom(Atom base, Atom under, Atom over, boolean limits) { this(base, under, over); this.limits = limits; limitsSet = true; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Box y; float delta; RowAtom bbase = null; Atom Base = base; if (base instanceof TypedAtom) { Atom at = ((TypedAtom)base).getBase(); if (at instanceof RowAtom && ((RowAtom)at).lookAtLastAtom && base.type_limits != TeXConstants.SCRIPT_LIMITS) { base = ((RowAtom)at).getLastAtom(); bbase = (RowAtom)at; } else base = at; } if ((limitsSet && !limits) || (!limitsSet && style >= TeXConstants.STYLE_TEXT) || (base.type_limits == TeXConstants.SCRIPT_NOLIMITS) || (base.type_limits == TeXConstants.SCRIPT_NORMAL && style >= TeXConstants.STYLE_TEXT)) { // if explicitly set to not display as limits or if not set and style // is not display, then attach over and under as regular sub- en // superscript if (bbase != null) { bbase.add(new ScriptsAtom(base, under, over)); Box b = bbase.createBox(env); bbase.getLastAtom(); bbase.add(base); base = Base; return b; } return new ScriptsAtom(base, under, over).createBox(env); } else { if (base instanceof SymbolAtom && base.type == TeXConstants.TYPE_BIG_OPERATOR) { // single // bigop // symbol Char c = tf.getChar(((SymbolAtom) base).getName(), style); y = base.createBox(env); // include delta in width delta = c.getItalic(); } else { // formula delta = 0; y = new HorizontalBox(base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env)); } // limits Box x = null, z = null; if (over != null) x = over.createBox(env.supStyle()); if (under != null) z = under.createBox(env.subStyle()); // make boxes equally wide float maxWidth = Math.max(Math.max(x == null ? 0 : x.getWidth(), y .getWidth()), z == null ? 0 : z.getWidth()); x = changeWidth(x, maxWidth); y = changeWidth(y, maxWidth); z = changeWidth(z, maxWidth); // build vertical box VerticalBox vBox = new VerticalBox(); float bigop5 = tf.getBigOpSpacing5(style), kern = 0; float xh = 0; // TODO: check why this is not used // NOPMD // over if (over != null) { vBox.add(new StrutBox(0, bigop5, 0, 0)); x.setShift(delta / 2); vBox.add(x); kern = Math.max(tf.getBigOpSpacing1(style), tf .getBigOpSpacing3(style) - x.getDepth()); vBox.add(new StrutBox(0, kern, 0, 0)); xh = vBox.getHeight() + vBox.getDepth(); } // base vBox.add(y); // under if (under != null) { float k = Math.max(tf.getBigOpSpacing2(style), tf .getBigOpSpacing4(style) - z.getHeight()); vBox.add(new StrutBox(0, k, 0, 0)); z.setShift(-delta / 2); vBox.add(z); vBox.add(new StrutBox(0, bigop5, 0, 0)); } // set height and depth vertical box and return it float h = y.getHeight(), total = vBox.getHeight() + vBox.getDepth(); if (x != null) h += bigop5 + kern + x.getHeight() + x.getDepth(); vBox.setHeight(h); vBox.setDepth(total - h); if (bbase != null) { HorizontalBox hb = new HorizontalBox(bbase.createBox(env)); bbase.add(base); hb.add(vBox); base = Base; return hb; } return vBox; } } /* * Centers the given box in a new box that has the given width */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/BoldAtom.java000066400000000000000000000053141326546671500303320ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Box.java000066400000000000000000000250701326546671500273620ustar00rootroot00000000000000/* Box.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.Rectangle2D; import java.util.LinkedList; /** * An abstract graphical representation of a formula, that can be painted. All characters, font * sizes, positions are fixed. Only special Glue boxes could possibly stretch or shrink. * A box has 3 dimensions (width, height and depth), can be composed of other child boxes * that can possibly be shifted (up, down, left or right). Child boxes can also be positioned * outside their parent's box (defined by it's dimensions). *

* Subclasses must implement the abstract {@link #draw(Graphics2D, float, float)} method * (that paints the box). This implementation must start with calling the method * {@link #startDraw(Graphics2D, float, float)} and end with calling the method * {@link #endDraw(Graphics2D)} to set and restore the color's that must be used for * painting the box and to draw the background! They must also implement the abstract * {@link #getLastFontId()} method (the last font * that will be used when this box will be painted). */ public abstract class Box { public static boolean DEBUG = false; /** * The foreground color of the whole box. Child boxes can override this color. * If it's null and it has a parent box, the foreground color of the parent will * be used. If it has no parent, the foreground color of the component on which it * will be painted, will be used. */ protected Color foreground; /** * The background color of the whole box. Child boxes can paint a background on top of * this background. If it's null, no background will be painted. */ protected Color background; private Color prevColor; // used temporarily in startDraw and endDraw /** * The width of this box, i.e. the value that will be used for further * calculations. */ protected float width = 0; /** * The height of this box, i.e. the value that will be used for further * calculations. */ protected float height = 0; /** * The depth of this box, i.e. the value that will be used for further * calculations. */ protected float depth = 0; /** * The shift amount: the meaning depends on the particular kind of box * (up, down, left, right) */ protected float shift = 0; protected int type = -1; /** * List of child boxes */ protected LinkedList children = new LinkedList(); protected Box parent; protected Box elderParent; protected Color markForDEBUG; /** * Inserts the given box at the end of the list of child boxes. * * @param b the box to be inserted */ public void add(Box b) { children.add(b); b.parent = this; b.elderParent = elderParent; } /** * Inserts the given box at the given position in the list of child boxes. * * @param pos the position at which to insert the given box * @param b the box to be inserted */ public void add(int pos, Box b) { children.add(pos, b); b.parent = this; b.elderParent = elderParent; } /** * Creates an empty box (no children) with all dimensions set to 0 and no * foreground and background color set (default values will be used: null) */ protected Box() { this(null, null); } /** * Creates an empty box (no children) with all dimensions set to 0 and sets * the foreground and background color of the box. * * @param fg the foreground color * @param bg the background color */ protected Box(Color fg, Color bg) { foreground = fg; background = bg; } public void setParent(Box parent) { this.parent = parent; } public Box getParent() { return parent; } public void setElderParent(Box elderParent) { this.elderParent = elderParent; } public Box getElderParent() { return elderParent; } /** * Get the width of this box. * * @return the width of this box */ public float getWidth() { return width; } public void negWidth() { width = -width; } /** * Get the height of this box. * * @return the height of this box */ public float getHeight() { return height; } /** * Get the depth of this box. * * @return the depth of this box */ public float getDepth() { return depth; } /** * Get the shift amount for this box. * * @return the shift amount */ public float getShift() { return shift; } /** * Set the width for this box. * * @param w the width */ public void setWidth(float w) { width = w; } /** * Set the depth for this box. * * @param d the depth */ public void setDepth(float d) { depth = d; } /** * Set the height for this box. * * @param h the height */ public void setHeight(float h) { height = h; } /** * Set the shift amount for this box. * * @param s the shift amount */ public void setShift(float s) { shift = s; } /** * Paints this box at the given coordinates using the given graphics context. * * @param g2 the graphics (2D) context to use for painting * @param x the x-coordinate * @param y the y-coordinate */ public abstract void draw(Graphics2D g2, float x, float y); /** * Get the id of the font that will be used the last when this box will be painted. * * @return the id of the last font that will be used. */ public abstract int getLastFontId(); /** * Stores the old color setting, draws the background of the box (if not null) * and sets the foreground color (if not null). * * @param g2 the graphics (2D) context * @param x the x-coordinate * @param y the y-coordinate */ protected void startDraw(Graphics2D g2, float x, float y) { // old color prevColor = g2.getColor(); if (background != null) { // draw background g2.setColor(background); g2.fill(new Rectangle2D.Float(x, y - height, width, height + depth)); } if (foreground == null) { g2.setColor(prevColor); // old foreground color } else { g2.setColor(foreground); // overriding foreground color } drawDebug(g2, x, y); } protected void drawDebug(Graphics2D g2, float x, float y, boolean showDepth) { if (DEBUG) { Stroke st = g2.getStroke(); if (markForDEBUG != null) { Color c = g2.getColor(); g2.setColor(markForDEBUG); g2.fill(new Rectangle2D.Float(x, y - height, width, height + depth)); g2.setColor(c); } g2.setStroke(new BasicStroke((float) (Math.abs(1 / g2.getTransform().getScaleX())), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); if (width < 0) { x += width; width = -width; } g2.draw(new Rectangle2D.Float(x, y - height, width, height + depth)); if (showDepth) { Color c = g2.getColor(); g2.setColor(Color.RED); if (depth > 0) { g2.fill(new Rectangle2D.Float(x, y, width, depth)); g2.setColor(c); g2.draw(new Rectangle2D.Float(x, y, width, depth)); } else if (depth < 0) { g2.fill(new Rectangle2D.Float(x, y + depth, width, -depth)); g2.setColor(c); g2.draw(new Rectangle2D.Float(x, y + depth, width, -depth)); } else { g2.setColor(c); } } g2.setStroke(st); } } protected void drawDebug(Graphics2D g2, float x, float y) { if (DEBUG) { drawDebug(g2, x, y, true); } } /** * Restores the previous color setting. * * @param g2 the graphics (2D) context */ protected void endDraw(Graphics2D g2) { g2.setColor(prevColor); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/BreakFormula.java000066400000000000000000000136041326546671500312040ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/BreakMarkAtom.java000066400000000000000000000046641326546671500313200ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/CedillaAtom.java000066400000000000000000000063741326546671500310160ustar00rootroot00000000000000/* CedillaAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom with a cedilla. */ public class CedillaAtom extends Atom { private Atom base; public CedillaAtom(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("jlatexmathcedilla", env.getStyle()); float italic = ch.getItalic(); Box cedilla = new CharBox(ch); Box y; if (Math.abs(italic) > TeXFormula.PREC) { y = new HorizontalBox(new StrutBox(-italic, 0, 0, 0)); y.add(cedilla); } else { y = cedilla; } Box ce = new HorizontalBox(y, b.getWidth(), TeXConstants.ALIGN_CENTER); float x = 0.4f * SpaceAtom.getFactor(TeXConstants.UNIT_MU, env); vb.add(new StrutBox(0, -x, 0, 0)); vb.add(ce); float f = vb.getHeight() + vb.getDepth(); vb.setHeight(b.getHeight()); vb.setDepth(f - b.getHeight()); return vb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Char.java000066400000000000000000000063271326546671500275130ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/CharAtom.java000066400000000000000000000107351326546671500303320ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; private boolean mathMode; /** * 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, boolean mathMode) { this.c = c; this.textStyle = textStyle; this.mathMode = mathMode; } public CharAtom(char c, String textStyle) { this(c, textStyle, false); } public boolean isMathMode() { return mathMode; } 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 + "\'"; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/CharBox.java000066400000000000000000000074701326546671500301640ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; /** * A box representing a single character. */ public class CharBox extends Box { private final CharFont cf; private final float size; private float italic; 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(); italic = c.getItalic(); } public void addItalicCorrectionToWidth() { width += italic; italic = 0; } 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 (Math.abs(size - TeXFormula.FONT_SCALE_FACTOR) > TeXFormula.PREC) { g2.scale(size / TeXFormula.FONT_SCALE_FACTOR, size / TeXFormula.FONT_SCALE_FACTOR); } 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/CharFont.java000066400000000000000000000051741326546671500303410ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/CharSymbol.java000066400000000000000000000066161326546671500307020ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ColorAtom.java000066400000000000000000000301741326546671500305320ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 = s.trim(); if (s.length() >= 1) { if (s.charAt(0) == '#') { return Color.decode(s); } else if (s.indexOf(',') != -1 || 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 = 1f - k; return new Color(kk * (1f - c), kk * (1f - m), kk * (1f - y)); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/CumulativeScriptsAtom.java000066400000000000000000000062371326546671500331450ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/DdotsAtom.java000066400000000000000000000061531326546671500305310ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/DefaultTeXFont.java000066400000000000000000000506111326546671500314650ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 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; 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/DefaultTeXFontParser.java000066400000000000000000000732051326546671500326460ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * 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 * TeXFormula.FONT_SCALE_FACTOR); 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; } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/DelimiterFactory.java000066400000000000000000000130301326546671500320710ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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); } } DelimiterMappingNotFoundException.java000066400000000000000000000055031326546671500353400ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* DelimiterMappingNotFoundException.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals a missing character-to-delimiter mapping. * * @author Kurt Vermeulen */ public class DelimiterMappingNotFoundException extends JMathTeXException { private static final long serialVersionUID = 273456491396361682L; protected DelimiterMappingNotFoundException(char delimiter) { super("No mapping found for the character '" + delimiter + "'! " + "Insert a <" + TeXFormulaSettingsParser.CHARTODEL_MAPPING_EL + ">-element in '" + TeXFormulaSettingsParser.RESOURCE_NAME + "'."); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/DoubleFramedAtom.java000066400000000000000000000054741326546671500320120ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a boxed base atom. */ public class DoubleFramedAtom extends FBoxAtom { public DoubleFramedAtom(Atom base) { super(base); } 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); float sspace = 1.5f * drt + 0.5f * SpaceAtom.getFactor(TeXConstants.UNIT_POINT, env); return new FramedBox(new FramedBox(bbase, 0.75f * drt, space), 1.5f * drt, sspace); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Dummy.java000066400000000000000000000114371326546671500277270ustar00rootroot00000000000000/* Dummy.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Used by RowAtom. The "textSymbol"-property and the type of an atom can change * (according to the TeX-algorithms used). Or this atom can be replaced by a ligature, * (if it was a CharAtom). But atoms cannot be changed, otherwise * different boxes could be made from the same TeXFormula, and that is not desired! * This "dummy atom" makes sure that changes to an atom (during the createBox-method of * a RowAtom) will be reset. */ public class Dummy { private Atom el; private boolean textSymbol = false; private int type = -1; /** * Creates a new Dummy for the given atom. * * @param a an atom */ public Dummy(Atom a) { el = a; } /** * Changes the type of the atom * * @param t the new type */ public void setType(int t) { type = t; } /** * Changes the type of the atom * * @param t the new type */ public int getType() { return type; } /** * * @return the changed type, or the old left type if it hasn't been changed */ public int getLeftType() { return (type >= 0 ? type : el.getLeftType()); } /** * * @return the changed type, or the old right type if it hasn't been changed */ public int getRightType() { return (type >= 0 ? type : el.getRightType()); } public boolean isCharSymbol() { return el instanceof CharSymbol; } public boolean isCharInMathMode() { return el instanceof CharAtom && ((CharAtom) el).isMathMode(); } /** * This method will only be called if isCharSymbol returns true. */ public CharFont getCharFont(TeXFont tf) { return ((CharSymbol) el).getCharFont(tf); } /** * Changes this atom into the given "ligature atom". * * @param a the ligature atom */ public void changeAtom(FixedCharAtom a) { textSymbol = false; type = -1; el = a; } public Box createBox(TeXEnvironment rs) { if (textSymbol) ((CharSymbol) el).markAsTextSymbol(); Box b = el.createBox(rs); if (textSymbol) ((CharSymbol) el).removeMark(); // atom remains unchanged! return b; } public void markAsTextSymbol() { textSymbol = true; } public boolean isKern() { return el instanceof SpaceAtom; } // only for Row-elements public void setPreviousAtom(Dummy prev) { if (el instanceof Row) ((Row) el).setPreviousAtom(prev); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/EmptyAtom.java000066400000000000000000000046251326546671500305540ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/EmptyFormulaException.java000066400000000000000000000050001326546671500331240ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; public class EmptyFormulaException extends Exception { private static final long serialVersionUID = -8034123603703695067L; public EmptyFormulaException() { super("Illegal operation with an empty Formula!"); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Extension.java000066400000000000000000000062661326546671500306140ustar00rootroot00000000000000/* Extension.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Represents an extension character that is defined by Char-objects of it's 4 * possible parts (null means part not present). */ public class Extension { // there ALLWAYS is a repeat character! (check TFM.isExtensionChar()) private final Char top; private final Char middle; private final Char bottom; private final Char repeat; public Extension(Char t, Char m, Char r, Char b) { top = t; middle = m; repeat = r; bottom = b; } public boolean hasTop() { return top != null; } public boolean hasMiddle() { return middle != null; } public boolean hasBottom() { return bottom != null; } public Char getTop() { return top; } public Char getMiddle() { return middle; } public Char getRepeat() { return repeat; } public Char getBottom() { return bottom; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FBoxAtom.java000066400000000000000000000063521326546671500303130ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FcscoreAtom.java000066400000000000000000000054341326546671500310410ustar00rootroot00000000000000/* FcscoreAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom with representing an L with a caron. */ public class FcscoreAtom extends Atom { private int N; public FcscoreAtom(int N) { this.N = N; } public int getLeftType() { return TeXConstants.TYPE_ORDINARY; } public int getRightType() { return TeXConstants.TYPE_ORDINARY; } public Box createBox(TeXEnvironment env) { final float factor = 12 * SpaceAtom.getFactor(TeXConstants.UNIT_MU, env); return new FcscoreBox(N == 5 ? 4 : N, factor * 1f, factor * 0.07f, factor * 0.125f, N == 5); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FcscoreBox.java000066400000000000000000000104551326546671500306700ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.BasicStroke; import java.awt.Graphics2D; import java.awt.Stroke; 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FencedAtom.java000066400000000000000000000137431326546671500306430ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FixedCharAtom.java000066400000000000000000000053501326546671500313070ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } FontAlreadyLoadedException.java000066400000000000000000000050021326546671500337440ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; public class FontAlreadyLoadedException extends XMLResourceParseException { private static final long serialVersionUID = -6172324828113185078L; public FontAlreadyLoadedException(String msg) { super(msg); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FontInfo.java000066400000000000000000000225101326546671500303500ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FormulaNotFoundException.java000066400000000000000000000053601326546671500335730ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that unknown predefined TeXFormula name was used. * * @author Kurt Vermeulen */ public class FormulaNotFoundException extends JMathTeXException { private static final long serialVersionUID = 7660105446051204466L; protected FormulaNotFoundException(String name) { super("There's no predefined TeXFormula with the name '" + name + "' defined in '" + PredefinedTeXFormulaParser.RESOURCE_NAME + "'!"); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FractionAtom.java000066400000000000000000000251361326546671500312230ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/FramedBox.java000066400000000000000000000101451326546671500304760ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.Rectangle2D; /** * A box representing a rotated box. */ public class FramedBox extends Box { protected Box box; protected float thickness; protected float space; private Color line; private Color bg; public FramedBox(Box box, float thickness, float space) { this.box = box; this.width = box.width + 2 * thickness + 2 * space; this.height = box.height + thickness + space; this.depth = box.depth + thickness + space; this.shift = box.shift; this.thickness = thickness; this.space = space; } public FramedBox(Box box, float thickness, float space, Color line, Color bg) { this(box, thickness, space); this.line = line; this.bg = bg; } public void draw(Graphics2D g2, float x, float y) { Stroke st = g2.getStroke(); g2.setStroke(new BasicStroke(thickness, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); float th = thickness / 2; if (bg != null) { Color prev = g2.getColor(); g2.setColor(bg); g2.fill(new Rectangle2D.Float(x + th, y - height + th, width - thickness, height + depth - thickness)); g2.setColor(prev); } if (line != null) { Color prev = g2.getColor(); g2.setColor(line); g2.draw(new Rectangle2D.Float(x + th, y - height + th, width - thickness, height + depth - thickness)); g2.setColor(prev); } else { g2.draw(new Rectangle2D.Float(x + th, y - height + th, width - thickness, height + depth - thickness)); } //drawDebug(g2, x, y); g2.setStroke(st); box.draw(g2, x + space + thickness, y); } public int getLastFontId() { return box.getLastFontId(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/GeoGebraLogoAtom.java000066400000000000000000000052341326546671500317470ustar00rootroot00000000000000/* GeoGebraLogoAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; public class GeoGebraLogoAtom extends Atom { public GeoGebraLogoAtom() { } public int getLeftType() { return TeXConstants.TYPE_ORDINARY; } public int getRightType() { return TeXConstants.TYPE_ORDINARY; } public Box createBox(TeXEnvironment env) { CharBox o = new CharBox(env.getTeXFont().getDefaultChar('o', env.getStyle())); return new GeoGebraLogoBox(o.width, o.height); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/GeoGebraLogoBox.java000066400000000000000000000077361326546671500316100ustar00rootroot00000000000000/* GraphicsBox.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.AffineTransform; /** * A box representing a box containing a graphics. */ public class GeoGebraLogoBox extends Box { private static final Color gray = new Color(102, 102, 102); private static final Color blue = new Color(153, 153, 255); private static final BasicStroke st = new BasicStroke(3.79999995f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 4f); public GeoGebraLogoBox(float w, float h) { this.depth = 0; this.height = h; this.width = w; this.shift = 0; } public void draw(Graphics2D g2, float x, float y) { AffineTransform oldAt = g2.getTransform(); Color oldC = g2.getColor(); Stroke oldS = g2.getStroke(); g2.translate(x + 0.25f * height / 2.15f, y - 1.75f / 2.15f * height); g2.setColor(gray); g2.setStroke(st); g2.scale(0.05f * height / 2.15f, 0.05f * height / 2.15f); g2.rotate(-26 * Math.PI / 180, 20.5, 17.5); g2.drawArc(0, 0, 43, 32, 0, 360); g2.rotate(26 * Math.PI / 180, 20.5, 17.5); g2.setStroke(oldS); drawCircle(g2, 16f, -5f); drawCircle(g2, -1f, 7f); drawCircle(g2, 5f, 28f); drawCircle(g2, 27f, 24f); drawCircle(g2, 36f, 3f); g2.setStroke(oldS); g2.setTransform(oldAt); g2.setColor(oldC); } private static void drawCircle(Graphics2D g2, float x, float y) { g2.setColor(blue); g2.translate(x, y); g2.fillArc(0, 0, 8, 8, 0, 360); g2.setColor(Color.BLACK); g2.drawArc(0, 0, 8, 8, 0, 360); g2.translate(-x, -y); } public int getLastFontId() { return 0; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Glue.java000066400000000000000000000104341326546671500275240ustar00rootroot00000000000000/* Glue.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Represents glue by its 3 components. Contains the "glue rules". */ public class Glue { // the glue components private final float space; private final float stretch; private final float shrink; private final String name; // contains the different glue types private static Glue[] glueTypes; // the glue table representing the "glue rules" (as in TeX) private static final int[][][] glueTable; static { GlueSettingsParser parser = new GlueSettingsParser(); glueTypes = parser.getGlueTypes(); glueTable = parser.createGlueTable(); } public Glue(float space, float stretch, float shrink, String name) { this.space = space; this.stretch = stretch; this.shrink = shrink; this.name = name; } /** * Name of this glue object. */ public String getName () { return this.name; } /** * Creates a box representing the glue type according to the "glue rules" based * on the atom types between which the glue must be inserted. * * @param lType left atom type * @param rType right atom type * @param env the TeXEnvironment * @return a box containing representing the glue */ public static Box get(int lType, int rType, TeXEnvironment env) { // types > INNER are considered of type ORD for glue calculations int l = (lType > TeXConstants.TYPE_INNER ? TeXConstants.TYPE_ORDINARY : lType); int r = (rType > TeXConstants.TYPE_INNER ? TeXConstants.TYPE_ORDINARY : rType); // search right glue-type in "glue-table" int glueType = glueTable[l][r][env.getStyle() / 2]; return glueTypes[glueType].createBox(env); } private Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); // use "quad" from a font marked as an "mu font" float quad = tf.getQuad(env.getStyle(), tf.getMuFontId()); return new GlueBox((space / 18.0f) * quad, (stretch / 18.0f) * quad, (shrink / 18.0f) * quad); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/GlueBox.java000066400000000000000000000053411326546671500301760ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/GlueSettingsParser.java000066400000000000000000000233751326546671500324320ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/GraphicsAtom.java000066400000000000000000000131501326546671500312070ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Label; import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.net.MalformedURLException; import java.net.URL; 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/GraphicsBox.java000066400000000000000000000077331326546671500310510ustar00rootroot00000000000000/* GraphicsBox.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; /** * A box representing a box containing a graphics. */ public class GraphicsBox extends Box { public final static int BILINEAR = 0; public final static int NEAREST_NEIGHBOR = 1; public final static int BICUBIC = 2; private BufferedImage image; private float scl; private Object interp; public GraphicsBox(BufferedImage image, float width, float height, float size, int interpolation) { this.image = image; this.width = width; this.height = height; this.scl = 1 / size; depth = 0; shift = 0; switch (interpolation) { case BILINEAR : interp = RenderingHints.VALUE_INTERPOLATION_BILINEAR; break; case NEAREST_NEIGHBOR : interp = RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR; break; case BICUBIC : interp = RenderingHints.VALUE_INTERPOLATION_BICUBIC; break; default : interp = null; } } public void draw(Graphics2D g2, float x, float y) { AffineTransform oldAt = g2.getTransform(); Object oldKey = null; if (interp != null) { oldKey = g2.getRenderingHint(RenderingHints.KEY_INTERPOLATION); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, interp); } g2.translate(x, y - height); g2.scale(scl, scl); g2.drawImage(image, 0, 0, null); g2.setTransform(oldAt); if (oldKey != null) { g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, oldKey); } } public int getLastFontId() { return 0; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/HdotsforAtom.java000066400000000000000000000063231326546671500312430ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/HlineAtom.java000066400000000000000000000055451326546671500305170ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/HorizontalBox.java000066400000000000000000000145561326546671500314430ustar00rootroot00000000000000/* HorizontalBox.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.awt.Graphics2D; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; /** * A box composed of a horizontal row of child boxes. */ public class HorizontalBox extends Box { private float curPos = 0; // NOPMD protected List breakPositions; public HorizontalBox(Box b, float w, int alignment) { if (w != Float.POSITIVE_INFINITY) { float rest = w - b.getWidth(); if (rest > 0) { if (alignment == TeXConstants.ALIGN_CENTER || alignment == TeXConstants.ALIGN_NONE) { StrutBox s = new StrutBox(rest / 2, 0, 0, 0); add(s); add(b); add(s); } else if (alignment == TeXConstants.ALIGN_LEFT) { add(b); add(new StrutBox(rest, 0, 0, 0)); } else if (alignment == TeXConstants.ALIGN_RIGHT) { add(new StrutBox(rest, 0, 0, 0)); add(b); } else { add(b); } } else { add(b); } } else { add(b); } } public HorizontalBox(Box b) { add(b); } public HorizontalBox() { // basic horizontal box } public HorizontalBox(Color fg, Color bg) { super(fg, bg); } public HorizontalBox cloneBox() { HorizontalBox b = new HorizontalBox(foreground, background); b.shift = shift; return b; } public void draw(Graphics2D g2, float x, float y) { startDraw(g2, x, y); float xPos = x; for (Box box: children) { /*int i = children.indexOf(box); if (breakPositions != null && breakPositions.indexOf(i) != -1) { box.markForDEBUG = java.awt.Color.BLUE; }*/ box.draw(g2, xPos, y + box.shift); xPos += box.getWidth(); } endDraw(g2); } public final void add(Box b) { recalculate(b); super.add(b); } public final void add(int pos, Box b) { recalculate(b); super.add(pos, b); } private void recalculate(Box b) { // Commented for ticket 764 // \left(\!\!\!\begin{array}{c}n\\\\r\end{array}\!\!\!\right)+123 //curPos += b.getWidth(); //width = Math.max(width, curPos); width += b.getWidth(); height = Math.max((children.size() == 0 ? Float.NEGATIVE_INFINITY : height), b.height - b.shift); depth = Math.max((children.size() == 0 ? Float.NEGATIVE_INFINITY : depth), b.depth + b.shift); } public int getLastFontId() { // iterate from the last child box to the first 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; } public void addBreakPosition(int pos) { if (breakPositions == null) { breakPositions = new ArrayList(); } breakPositions.add(pos); } protected HorizontalBox[] split(int position) { return split(position, 1); } protected HorizontalBox[] splitRemove(int position) { return split(position, 2); } private HorizontalBox[] split(int position, int shift) { HorizontalBox hb1 = cloneBox(); HorizontalBox hb2 = cloneBox(); for (int i = 0; i <= position; i++) { hb1.add(children.get(i)); } for (int i = position + shift; i < children.size(); i++) { hb2.add(children.get(i)); } if (breakPositions != null) { for (int i = 0; i < breakPositions.size(); i++) { if (breakPositions.get(i) > position + 1) { hb2.addBreakPosition(breakPositions.get(i) - position - 1); } } } return new HorizontalBox[] {hb1, hb2}; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/HorizontalRule.java000066400000000000000000000070631326546671500316150ustar00rootroot00000000000000/* HorizontalRule.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; /** * A box representing a horizontal line. */ public class HorizontalRule extends Box { private Color color = null; private float speShift = 0;; public HorizontalRule(float thickness, float width, float s) { height = thickness; this.width = width; shift = s; } public HorizontalRule(float thickness, float width, float s, boolean trueShift) { height = thickness; this.width = width; if (trueShift) { shift = s; } else { shift = 0; speShift = s; } } public HorizontalRule(float thickness, float width, float s, Color c) { height = thickness; this.width = width; color = c; shift = s; } public void draw(Graphics2D g2, float x, float y) { Color old = g2.getColor(); if (color != null) g2.setColor(color); if (speShift == 0) { g2.fill(new Rectangle2D.Float(x, y - height, width, height)); } else { g2.fill(new Rectangle2D.Float(x, y - height + speShift, width, height)); } g2.setColor(old); } public int getLastFontId() { return TeXFont.NO_FONT; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/IJAtom.java000066400000000000000000000055001326546671500277510ustar00rootroot00000000000000/* IJAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom with representing an IJ. */ public class IJAtom extends Atom { private boolean upper; public IJAtom(boolean upper) { this.upper = upper; } public Box createBox(TeXEnvironment env) { CharBox I = new CharBox(env.getTeXFont().getChar(upper ? 'I' : 'i', "mathnormal", env.getStyle())); CharBox J = new CharBox(env.getTeXFont().getChar(upper ? 'J' : 'j', "mathnormal", env.getStyle())); HorizontalBox hb = new HorizontalBox(I); hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.065f, 0, 0).createBox(env)); hb.add(J); return hb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/IddotsAtom.java000066400000000000000000000061531326546671500307020ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/InvalidAtomTypeException.java000066400000000000000000000051241326546671500335600ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown atom type constant was used. * * @author Kurt Vermeulen */ public class InvalidAtomTypeException extends JMathTeXException { private static final long serialVersionUID = -6558639348158242539L; protected InvalidAtomTypeException(String msg) { super(msg); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/InvalidDelimiterException.java000066400000000000000000000062671326546671500337450ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 { private static final long serialVersionUID = 212553180078002724L; 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 + "'!"); } } InvalidDelimiterTypeException.java000066400000000000000000000053431326546671500345220ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown delimiter type constant was used. * * @author Kurt Vermeulen */ public class InvalidDelimiterTypeException extends JMathTeXException { private static final long serialVersionUID = -7170484583239756156L; protected InvalidDelimiterTypeException() { super( "The delimiter type was not valid! " + "Use one of the delimiter type constants from the class 'TeXConstants'."); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/InvalidMatrixException.java000066400000000000000000000051111326546671500332560ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals a problem of dimensions in the matrix. * * @author Calixte Denizet */ public class InvalidMatrixException extends JMathTeXException { private static final long serialVersionUID = -6766435055092128073L; protected InvalidMatrixException(String msg) { super(msg); } } InvalidSymbolTypeException.java000066400000000000000000000051711326546671500340500ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 { private static final long serialVersionUID = 6679471054726869590L; protected InvalidSymbolTypeException(String msg) { super(msg); } } InvalidTeXFormulaException.java000066400000000000000000000051221326546671500337630ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* InvalidTeXFormulaException.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an invalid TeXFormula was used. * * @author Kurt Vermeulen */ public class InvalidTeXFormulaException extends JMathTeXException { private static final long serialVersionUID = -1360488533073280569L; protected InvalidTeXFormulaException(String msg) { super(msg); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/InvalidUnitException.java000066400000000000000000000052471326546671500327430ustar00rootroot00000000000000/* InvalidUnitException.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown unit constant was used. * * @author Kurt Vermeulen */ public class InvalidUnitException extends JMathTeXException { private static final long serialVersionUID = 860909774647515072L; protected InvalidUnitException() { super("The delimiter type was not valid! " + "Use one of the unit constants from the class 'TeXConstants'."); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ItAtom.java000066400000000000000000000053071326546671500300300ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/JMathTeXException.java000066400000000000000000000053001326546671500321270ustar00rootroot00000000000000/* JMathTeXException.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Superclass of all the possible (public) exceptions that can be thrown in this package. * * @author Kurt Vermeulen */ public class JMathTeXException extends RuntimeException { private static final long serialVersionUID = 6788678896908035811L; protected JMathTeXException(String msg) { super(msg); } protected JMathTeXException(String msg, Throwable cause) { super(msg, cause); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/JavaFontRenderingAtom.java000066400000000000000000000074531326546671500330260ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/JavaFontRenderingBox.java000066400000000000000000000113311326546671500326440ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Font; import java.awt.Graphics2D; import java.awt.font.TextAttribute; import java.awt.font.TextLayout; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.util.Hashtable; import java.util.Map; /** * A box representing a scaled box. */ public class JavaFontRenderingBox extends Box { private static final Graphics2D TEMPGRAPHIC = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB).createGraphics(); private static Font font = new Font("Serif", Font.PLAIN, 10); private TextLayout text; private float size; private static TextAttribute KERNING; private static Integer KERNING_ON; private static TextAttribute LIGATURES; private static Integer LIGATURES_ON; static { try { // to avoid problems with Java 1.5 KERNING = (TextAttribute) (TextAttribute.class.getField("KERNING").get(TextAttribute.class)); KERNING_ON = (Integer) (TextAttribute.class.getField("KERNING_ON").get(TextAttribute.class)); LIGATURES = (TextAttribute) (TextAttribute.class.getField("LIGATURES").get(TextAttribute.class)); LIGATURES_ON = (Integer) (TextAttribute.class.getField("LIGATURES_ON").get(TextAttribute.class)); } catch (Exception e) { } } public JavaFontRenderingBox(String str, int type, float size, Font f, boolean kerning) { this.size = size; if (kerning && KERNING != null) { Map map = new Hashtable(); map.put(KERNING, KERNING_ON); map.put(LIGATURES, LIGATURES_ON); f = f.deriveFont(map); } this.text = new TextLayout(str, f.deriveFont(type), TEMPGRAPHIC.getFontRenderContext()); Rectangle2D rect = text.getBounds(); this.height = (float) (-rect.getY() * size / 10); this.depth = (float) (rect.getHeight() * size / 10) - this.height; this.width = (float) ((rect.getWidth() + rect.getX() + 0.4f) * size / 10); } public JavaFontRenderingBox(String str, int type, float size) { this(str, type, size, font, true); } public static void setFont(String name) { font = new Font(name, Font.PLAIN, 10); } public void draw(Graphics2D g2, float x, float y) { drawDebug(g2, x, y); g2.translate(x, y); g2.scale(0.1 * size, 0.1 * size); text.draw(g2, 0, 0); g2.scale(10 / size, 10 / size); g2.translate(-x, -y); } public int getLastFontId() { return 0; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/LCaronAtom.java000066400000000000000000000056731326546671500306400ustar00rootroot00000000000000/* LCaronAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom with representing an L with a caron. */ public class LCaronAtom extends Atom { private boolean upper; public LCaronAtom(boolean upper) { this.upper = upper; } public Box createBox(TeXEnvironment env) { CharBox A = new CharBox(env.getTeXFont().getChar("textapos", env.getStyle())); CharBox L = new CharBox(env.getTeXFont().getChar(upper ? 'L' : 'l', "mathnormal", env.getStyle())); HorizontalBox hb = new HorizontalBox(L); if (upper) hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.3f, 0, 0).createBox(env)); else hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.13f, 0, 0).createBox(env)); hb.add(A); return hb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/LaTeXAtom.java000066400000000000000000000077711326546671500304400ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/LapedAtom.java000066400000000000000000000056051326546671500305020ustar00rootroot00000000000000/* LapedAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a laped atom (i.e. with no width). */ public class LapedAtom extends Atom { private Atom at; private char type; public LapedAtom(Atom at, char type) { this.at = at; this.type = type; } public Box createBox(TeXEnvironment env) { Box b = at.createBox(env); VerticalBox vb = new VerticalBox(); vb.add(b); vb.setWidth(0); switch (type) { case 'l' : b.setShift(- b.getWidth()); break; case 'r' : b.setShift(0); break; default : b.setShift(- b.getWidth() / 2); } return vb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/LongdivAtom.java000066400000000000000000000114651326546671500310600ustar00rootroot00000000000000/* GraphicsAtom.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2017 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.util.ArrayList; /** * An atom representing a long division. */ public class LongdivAtom extends VRowAtom { public LongdivAtom(long divisor, long dividend) { setHalign(TeXConstants.ALIGN_RIGHT); setVtop(true); String[] res = makeResults(divisor, dividend); Atom rule = new RuleAtom(TeXConstants.UNIT_EX, 0f, TeXConstants.UNIT_EX, 2.6f, TeXConstants.UNIT_EX, 0.5f); for (int i = 0; i < res.length; ++i) { Atom num = new TeXFormula(res[i]).root; if (i % 2 == 0) { RowAtom ra = new RowAtom(num); ra.add(rule); if (i == 0) { append(ra); } else { append(new UnderlinedAtom(ra)); } } else if (i == 1) { String div = Long.toString(divisor); SymbolAtom rparen = SymbolAtom.get(TeXFormula.symbolMappings[')']); Atom big = new BigDelimiterAtom(rparen, 1); Atom ph = new PhantomAtom(big, false, true, true); RowAtom ra = new RowAtom(ph); Atom raised = new RaiseAtom(big, TeXConstants.UNIT_X8, 3.5f, TeXConstants.UNIT_X8, 0f, TeXConstants.UNIT_X8, 0f); ra.add(new SmashedAtom(raised)); ra.add(num); Atom a = new OverlinedAtom(ra); RowAtom ra1 = new RowAtom(new TeXFormula(div).root); ra1.add(new SpaceAtom(TeXConstants.THINMUSKIP)); ra1.add(a); append(ra1); } else { RowAtom ra = new RowAtom(num); ra.add(rule); append(ra); } } } private String[] makeResults(long divisor, long dividend) { ArrayList vec = new ArrayList<>(); long q = dividend / divisor; vec.add(Long.toString(q)); vec.add(Long.toString(dividend)); while (q != 0) { final double p = (double) Math.floor(Math.log10((double) q)); final double p10 = Math.pow(10., p); final long d = (long) (Math.floor(((double) q) / p10) * p10); final long dd = d * divisor; vec.add(Long.toString(dd)); dividend -= dd; vec.add(Long.toString(dividend)); q -= d; } String[] res = new String[vec.size()]; return vec.toArray(res); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MacroInfo.java000066400000000000000000000132531326546671500305070ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; 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()); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MathAtom.java000066400000000000000000000054161326546671500303460ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MatrixAtom.java000066400000000000000000000470321326546671500307210ustar00rootroot00000000000000/* MatrixAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * A box representing a matrix. */ public class MatrixAtom extends Atom { public static SpaceAtom hsep = new SpaceAtom(TeXConstants.UNIT_EM, 1f, 0.0f, 0.0f); public static SpaceAtom semihsep = new SpaceAtom(TeXConstants.UNIT_EM, 0.5f, 0.0f, 0.0f); public static SpaceAtom vsep_in = new SpaceAtom(TeXConstants.UNIT_EX, 0.0f, 1f, 0.0f); public static SpaceAtom vsep_ext_top = new SpaceAtom(TeXConstants.UNIT_EX, 0.0f, 0.4f, 0.0f); public static SpaceAtom vsep_ext_bot = new SpaceAtom(TeXConstants.UNIT_EX, 0.0f, 0.4f, 0.0f); public static final int ARRAY = 0; public static final int MATRIX = 1; public static final int ALIGN = 2; public static final int ALIGNAT = 3; public static final int FLALIGN = 4; public static final int SMALLMATRIX = 5; public static final int ALIGNED = 6; public static final int ALIGNEDAT = 7; private static final Box nullBox = new StrutBox(0, 0, 0, 0); private ArrayOfAtoms matrix; private int[] position; private Map vlines = new HashMap(); private int type; private boolean isPartial; private boolean spaceAround; private static SpaceAtom align = new SpaceAtom(TeXConstants.MEDMUSKIP); /** * Creates an empty matrix * */ public MatrixAtom(boolean isPartial, ArrayOfAtoms array, String options, boolean spaceAround) { this.isPartial = isPartial; this.matrix = array; this.type = ARRAY; this.spaceAround = spaceAround; parsePositions(new StringBuffer(options)); } /** * Creates an empty matrix * */ public MatrixAtom(boolean isPartial, ArrayOfAtoms array, String options) { this(isPartial, array, options, false); } /** * Creates an empty matrix * */ public MatrixAtom(ArrayOfAtoms array, String options) { this(false, array, options); } public MatrixAtom(boolean isPartial, ArrayOfAtoms array, int type) { this(isPartial, array, type, false); } public MatrixAtom(boolean isPartial, ArrayOfAtoms array, int type, boolean spaceAround) { this.isPartial = isPartial; this.matrix = array; this.type = type; this.spaceAround = spaceAround; if (type != MATRIX && type != SMALLMATRIX) { position = new int[matrix.col]; for (int i = 0; i < matrix.col; i += 2) { position[i] = TeXConstants.ALIGN_RIGHT; if (i + 1 < matrix.col) { position[i + 1] = TeXConstants.ALIGN_LEFT; } } } else { position = new int[matrix.col]; for (int i = 0; i < matrix.col; i++) { position[i] = TeXConstants.ALIGN_CENTER; } } } public MatrixAtom(boolean isPartial, ArrayOfAtoms array, int type, int alignment) { this(isPartial, array, type, alignment, true); } public MatrixAtom(boolean isPartial, ArrayOfAtoms array, int type, int alignment, boolean spaceAround) { this.isPartial = isPartial; this.matrix = array; this.type = type; this.spaceAround = spaceAround; position = new int[matrix.col]; for (int i = 0; i < matrix.col; i++) { position[i] = alignment; } } public MatrixAtom(ArrayOfAtoms array, int type) { this(false, array, type); } private void parsePositions(StringBuffer opt) { int len = opt.length(); int pos = 0; char ch; TeXFormula tf; TeXParser tp; List lposition = new ArrayList(); while (pos < len) { ch = opt.charAt(pos); switch (ch) { case 'l' : lposition.add(TeXConstants.ALIGN_LEFT); break; case 'r' : lposition.add(TeXConstants.ALIGN_RIGHT); break; case 'c' : lposition.add(TeXConstants.ALIGN_CENTER); break; case '|' : int nb = 1; while (++pos < len) { ch = opt.charAt(pos); if (ch != '|') { pos--; break; } else { nb++; } } vlines.put(lposition.size(), new VlineAtom(nb)); break; case '@' : pos++; tf = new TeXFormula(); tp = new TeXParser(isPartial, opt.substring(pos), tf, false); Atom at = tp.getArgument(); matrix.col++; for (int j = 0; j < matrix.row; j++) { matrix.array.get(j).add(lposition.size(), at); } lposition.add(TeXConstants.ALIGN_NONE); pos += tp.getPos(); pos--; break; case '*' : pos++; tf = new TeXFormula(); tp = new TeXParser(isPartial, opt.substring(pos), tf, false); String[] args = tp.getOptsArgs(2, 0); pos += tp.getPos(); int nrep = Integer.parseInt(args[1]); String str = ""; for (int j = 0; j < nrep; j++) { str += args[2]; } opt.insert(pos, str); len = opt.length(); pos--; break; case ' ': case '\t': break; default : lposition.add(TeXConstants.ALIGN_CENTER); } pos++; } for (int j = lposition.size(); j < matrix.col; j++) { lposition.add(TeXConstants.ALIGN_CENTER); } if (lposition.size() != 0) { Integer[] tab = lposition.toArray(new Integer[0]); position = new int[tab.length]; for (int i = 0; i < tab.length; i++) { position[i] = tab[i]; } } else { position = new int[] {TeXConstants.ALIGN_CENTER}; } } public Box[] getColumnSep(TeXEnvironment env, float width) { int col = matrix.col; Box[] arr = new Box[col + 1]; Box Align, AlignSep, Hsep; float h, w = env.getTextwidth(); int i; if (type == ALIGNED || type == ALIGNEDAT) { w = Float.POSITIVE_INFINITY; } switch (type) { case ARRAY : //Array : hsep_col/2 elem hsep_col elem hsep_col ... hsep_col elem hsep_col/2 i = 1; if (position[0] == TeXConstants.ALIGN_NONE) { arr[1] = new StrutBox(0.0f, 0.0f, 0.0f, 0.0f); i = 2; } if (spaceAround) { arr[0] = semihsep.createBox(env); } else { arr[0] = new StrutBox(0.0f, 0.0f, 0.0f, 0.0f); } arr[col] = arr[0]; Hsep = hsep.createBox(env); for (; i < col; i++) { if (position[i] == TeXConstants.ALIGN_NONE) { arr[i] = new StrutBox(0.0f, 0.0f, 0.0f, 0.0f); arr[i + 1] = arr[i]; i++; } else { arr[i] = Hsep; } } return arr; case MATRIX : case SMALLMATRIX : //Simple matrix : (hsep_col/2 or 0) elem hsep_col elem hsep_col ... hsep_col elem (hsep_col/2 or 0) arr[0] = nullBox; arr[col] = arr[0]; Hsep = hsep.createBox(env); for (i = 1; i < col; i++) { arr[i] = Hsep; } return arr; case ALIGNED : case ALIGN : //Align env. : hsep=(textwidth-matWidth)/(2n+1) and hsep eq_lft \medskip el_rgt hsep ... hsep elem hsep Align = align.createBox(env); if (w != Float.POSITIVE_INFINITY) { h = Math.max((w - width - (col / 2) * Align.getWidth()) / (float) Math.floor((col + 3)/ 2), 0); AlignSep = new StrutBox(h, 0.0f, 0.0f, 0.0f); } else { AlignSep = hsep.createBox(env); } arr[col] = AlignSep; for (i = 0; i < col; i++) { if (i % 2 == 0) { arr[i] = AlignSep; } else { arr[i] = Align; } } break; case ALIGNEDAT : case ALIGNAT : //Alignat env. : hsep=(textwidth-matWidth)/2 and hsep elem ... elem hsep if (w != Float.POSITIVE_INFINITY) { h = Math.max((w - width) / 2, 0); } else { h = 0; } Align = align.createBox(env); Box empty = nullBox; arr[0] = new StrutBox(h, 0.0f, 0.0f, 0.0f); arr[col] = arr[0]; for (i = 1; i < col; i++) { if (i % 2 == 0) { arr[i] = empty; } else { arr[i] = Align; } } break; case FLALIGN : //flalign env. : hsep=(textwidth-matWidth)/(2n+1) and hsep eq_lft \medskip el_rgt hsep ... hsep elem hsep Align = align.createBox(env); if (w != Float.POSITIVE_INFINITY) { h = Math.max((w - width - (col / 2) * Align.getWidth()) / (float) Math.floor((col - 1)/ 2), 0); AlignSep = new StrutBox(h, 0.0f, 0.0f, 0.0f); } else { AlignSep = hsep.createBox(env); } arr[0] = nullBox; arr[col] = arr[0]; for (i = 1; i < col; i++) { if (i % 2 == 0) { arr[i] = AlignSep; } else { arr[i] = Align; } } break; } if (w == Float.POSITIVE_INFINITY) { arr[0] = nullBox; arr[col] = arr[0]; } return arr; } public Box createBox(TeXEnvironment env) { int row = matrix.row; int col = matrix.col; Box[][] boxarr = new Box[row][col]; float[] lineDepth = new float[row]; float[] lineHeight = new float[row]; float[] rowWidth = new float[col]; float matW = 0; float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); if (type == SMALLMATRIX) { env = env.copy(); env.setStyle(TeXConstants.STYLE_SCRIPT); } List listMulti = new ArrayList(); for (int i = 0; i < row; i++) { lineDepth[i] = 0; lineHeight[i] = 0; for (int j = 0; j < col; j++) { Atom at = null; try { at = matrix.array.get(i).get(j); } catch (Exception e) { //The previous atom was an intertext atom //position[j - 1] = -1; boxarr[i][j - 1].type = TeXConstants.TYPE_INTERTEXT; j = col - 1; } boxarr[i][j] = (at == null) ? nullBox : at.createBox(env); lineDepth[i] = Math.max(boxarr[i][j].getDepth(), lineDepth[i]); lineHeight[i] = Math.max(boxarr[i][j].getHeight(), lineHeight[i]); if (boxarr[i][j].type != TeXConstants.TYPE_MULTICOLUMN) { rowWidth[j] = Math.max(boxarr[i][j].getWidth(), rowWidth[j]); } else { ((MulticolumnAtom) at).setRowColumn(i, j); listMulti.add((MulticolumnAtom) at); } } } for (int i = 0; i < listMulti.size(); i++) { MulticolumnAtom multi = listMulti.get(i); int c = multi.getCol(); int r = multi.getRow(); int n = multi.getSkipped(); float w = 0; for (int j = c; j < c + n; j++) { w += rowWidth[j]; } if (boxarr[r][c].getWidth() > w) { float extraW = (boxarr[r][c].getWidth() - w) / n; for (int j = c; j < c + n; j++) { rowWidth[j] += extraW; } } } for (int j = 0; j < col; j++) { matW += rowWidth[j]; } Box[] Hsep = getColumnSep(env, matW); for (int j = 0; j < col + 1; j++) { matW += Hsep[j].getWidth(); if (vlines.get(j) != null) { matW += vlines.get(j).getWidth(env); } } VerticalBox vb = new VerticalBox(); Box Vsep = vsep_in.createBox(env); vb.add(vsep_ext_top.createBox(env)); float totalHeight = 0; for (int i = 0; i < row; i++) { HorizontalBox hb = new HorizontalBox(); for (int j = 0; j < col; j++) { switch (boxarr[i][j].type) { case -1 : case TeXConstants.TYPE_MULTICOLUMN : if (j == 0) { if (vlines.get(0) != null) { VlineAtom vat = vlines.get(0); vat.setHeight(lineHeight[i] + lineDepth[i] + Vsep.getHeight()); vat.setShift(lineDepth[i] + Vsep.getHeight() / 2); Box vatBox = vat.createBox(env); hb.add(new HorizontalBox(vatBox, Hsep[0].getWidth() + vatBox.getWidth(), TeXConstants.ALIGN_LEFT)); } else { hb.add(Hsep[0]); } } boolean lastVline = true; if (boxarr[i][j].type == -1) { hb.add(new HorizontalBox(boxarr[i][j], rowWidth[j], position[j])); } else { Box b = generateMulticolumn(env, Hsep, rowWidth, i, j); MulticolumnAtom matom = (MulticolumnAtom) matrix.array.get(i).get(j); j += matom.getSkipped() - 1; hb.add(b); lastVline = matom.hasRightVline(); } if (lastVline && vlines.get(j + 1) != null) { VlineAtom vat = vlines.get(j + 1); vat.setHeight(lineHeight[i] + lineDepth[i] + Vsep.getHeight()); vat.setShift(lineDepth[i] + Vsep.getHeight() / 2); Box vatBox = vat.createBox(env); if (j < col - 1) { hb.add(new HorizontalBox(vatBox, Hsep[j + 1].getWidth() + vatBox.getWidth(), TeXConstants.ALIGN_CENTER)); } else { hb.add(new HorizontalBox(vatBox, Hsep[j + 1].getWidth() + vatBox.getWidth(), TeXConstants.ALIGN_RIGHT)); } } else { hb.add(Hsep[j + 1]); } break; case TeXConstants.TYPE_INTERTEXT : float f = env.getTextwidth(); f = f == Float.POSITIVE_INFINITY ? rowWidth[j] : f; hb = new HorizontalBox(boxarr[i][j], f, TeXConstants.ALIGN_LEFT); j = col - 1; break; case TeXConstants.TYPE_HLINE : HlineAtom at = (HlineAtom) matrix.array.get(i).get(j); at.setWidth(matW); if (i >= 1 && matrix.array.get(i - 1).get(j) instanceof HlineAtom) { hb.add(new StrutBox(0, 2 * drt, 0, 0)); at.setShift(-Vsep.getHeight() / 2 + drt); } else { at.setShift(-Vsep.getHeight() / 2); } hb.add(at.createBox(env)); j = col; break; } } if (boxarr[i][0].type != TeXConstants.TYPE_HLINE) { hb.setHeight(lineHeight[i]); hb.setDepth(lineDepth[i]); vb.add(hb); if (i < row - 1) vb.add(Vsep); } else { vb.add(hb); } } vb.add(vsep_ext_bot.createBox(env)); totalHeight = vb.getHeight() + vb.getDepth(); float axis = env.getTeXFont().getAxisHeight(env.getStyle()); vb.setHeight(totalHeight / 2 + axis); vb.setDepth(totalHeight / 2 - axis); return vb; } private Box generateMulticolumn(TeXEnvironment env, Box[] Hsep, float[] rowWidth, int i, int j) { float w = 0; MulticolumnAtom mca = (MulticolumnAtom) matrix.array.get(i).get(j); int k, n = mca.getSkipped(); for (k = j; k < j + n - 1; k++) { w += rowWidth[k] + Hsep[k + 1].getWidth(); if (vlines.get(k + 1) != null) { w += vlines.get(k + 1).getWidth(env); } } w += rowWidth[k]; Box b = mca.createBox(env); float bw = b.getWidth(); if (bw > w) { // It isn't a good idea but for the moment I have no other solution ! w = 0; } mca.setWidth(w); b = mca.createBox(env); return b; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Metrics.java000066400000000000000000000060001326546671500302300ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MiddleAtom.java000066400000000000000000000050601326546671500306460ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MonoScaleAtom.java000066400000000000000000000053051326546671500313320ustar00rootroot00000000000000/* MonoScaleAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a mono scale Atom. */ public class MonoScaleAtom extends ScaleAtom { private float factor; public MonoScaleAtom(Atom base, float factor) { super(base, (double) factor, (double) factor); this.factor = factor; } public Box createBox(TeXEnvironment env) { env = env.copy(); float f = env.getScaleFactor(); env.setScaleFactor(factor); return new ScaleBox(base.createBox(env), factor / f); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MulticolumnAtom.java000066400000000000000000000112001326546671500317510ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/MultlineAtom.java000066400000000000000000000105441326546671500312440ustar00rootroot00000000000000/* MultlineAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a vertical row of other atoms. */ public class MultlineAtom extends Atom { public static SpaceAtom vsep_in = new SpaceAtom(TeXConstants.UNIT_EX, 0.0f, 1.0f, 0.0f); public static final int MULTLINE = 0; public static final int GATHER = 1; public static final int GATHERED = 2; private ArrayOfAtoms column; private int type; private boolean isPartial; public MultlineAtom(boolean isPartial, ArrayOfAtoms column, int type) { this.isPartial = isPartial; this.column = column; this.type = type; } public MultlineAtom(ArrayOfAtoms column, int type) { this(false, column, type); } public Box createBox(TeXEnvironment env) { float tw = env.getTextwidth(); if (tw == Float.POSITIVE_INFINITY || type == GATHERED) { return new MatrixAtom(isPartial, column, "").createBox(env); } VerticalBox vb = new VerticalBox(); Atom at = column.array.get(0).get(0); int alignment = type == GATHER ? TeXConstants.ALIGN_CENTER : TeXConstants.ALIGN_LEFT; if (at.alignment != -1) { alignment = at.alignment; } vb.add(new HorizontalBox(at.createBox(env), tw, alignment)); Box Vsep = vsep_in.createBox(env); for (int i = 1; i < column.row - 1; i++) { at = column.array.get(i).get(0); alignment = TeXConstants.ALIGN_CENTER; if (at.alignment != -1) { alignment = at.alignment; } vb.add(Vsep); vb.add(new HorizontalBox(at.createBox(env), tw, alignment)); } if (column.row > 1) { at = column.array.get(column.row - 1).get(0); alignment = type == GATHER ? TeXConstants.ALIGN_CENTER : TeXConstants.ALIGN_RIGHT; if (at.alignment != -1) { alignment = at.alignment; } vb.add(Vsep); vb.add(new HorizontalBox(at.createBox(env), tw, alignment)); } float height = vb.getHeight() + vb.getDepth(); vb.setHeight(height / 2); vb.setDepth(height / 2); return vb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/NewCommandMacro.java000066400000000000000000000111701326546671500316400ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/NewEnvironmentMacro.java000066400000000000000000000061221326546671500325670ustar00rootroot00000000000000/* NewEnvironmentMacro.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; public class NewEnvironmentMacro extends NewCommandMacro { public NewEnvironmentMacro() { } public static void addNewEnvironment(String name, String begdef, String enddef, int nbArgs) throws ParseException { //if (macrocode.get(name + "@env") != null) //throw new ParseException("Environment " + name + " already exists ! Use renewenvironment instead ..."); addNewCommand(name + "@env", begdef + " #" + (nbArgs + 1) + " " + enddef, nbArgs + 1); } public static void addReNewEnvironment(String name, String begdef, String enddef, int nbArgs) throws ParseException { if (macrocode.get(name + "@env") == null) throw new ParseException("Environment " + name + "is not defined ! Use newenvironment instead ..."); addReNewCommand(name + "@env", begdef + " #" + (nbArgs + 1) + " " + enddef, nbArgs + 1); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/NthRoot.java000066400000000000000000000120001326546671500302140ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OgonekAtom.java000066400000000000000000000062461326546671500307010ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom with an ogonek. */ public class OgonekAtom extends Atom { 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OvalAtom.java000066400000000000000000000047501326546671500303560ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * 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)); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OvalBox.java000066400000000000000000000061571326546671500302110ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.BasicStroke; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.RoundRectangle2D; /** * A box representing a rotated box. */ public class OvalBox extends FramedBox { 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OverBar.java000066400000000000000000000052461326546671500301750ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OverUnderBox.java000066400000000000000000000122601326546671500312110ustar00rootroot00000000000000/* OverUnderBox.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; /** * A box representing another box with a delimiter box and a script box above or under it, * with script and delimiter seperated by a kern. */ public class OverUnderBox extends Box { // base, delimiter and script atom private final Box base; private final Box del; private final Box script; // kern amount between the delimiter and the script private final float kern; // whether the delimiter should be drawn over (<-> under) the base atom private final boolean over; /** * the parameter boxes must have an equal width!! * * @param b * base box to be drawn on the baseline * @param d * delimiter box * @param script * subscript or superscript box * @param over * true : draws delimiter and script box above the base box, false : under the * base box */ public OverUnderBox(Box b, Box d, Box script, float kern, boolean over) { base = b; del = d; this.script = script; this.kern = kern; this.over = over; // calculate metrics of the box width = b.getWidth(); height = b.height + (over ? d.getWidth() : 0) + (over && script != null ? script.height + script.depth + kern : 0); depth = b.depth + (over ? 0 : d.getWidth()) + (!over && script != null ? script.height + script.depth + kern : 0); } public void draw(Graphics2D g2, float x, float y) { drawDebug(g2, x, y); base.draw(g2, x, y); float yVar = y - base.height - del.getWidth(); del.setDepth(del.getHeight() + del.getDepth()); del.setHeight(0); if (over) { // draw delimiter and script above base box double transX = x + (del.height + del.depth) * 0.75, transY = yVar; AffineTransform oldAt = g2.getTransform(); g2.translate(transX, transY); g2.rotate(Math.PI / 2); del.draw(g2, 0, 0); g2.setTransform(oldAt); // draw superscript if (script != null) { script.draw(g2, x, yVar - kern - script.depth); } } yVar = y + base.depth; if (!over) { // draw delimiter and script under base box double transX = x + (del.getHeight() + del.depth) * 0.75, transY = yVar; AffineTransform oldAt = g2.getTransform(); g2.translate(transX, transY); g2.rotate(Math.PI / 2); del.draw(g2, 0, 0); g2.setTransform(oldAt); yVar += del.getWidth(); // draw subscript if (script != null) { script.draw(g2, x, yVar + kern + script.height); } } } public int getLastFontId() { return base.getLastFontId(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OverUnderDelimiter.java000066400000000000000000000107541326546671500324050ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/OverlinedAtom.java000066400000000000000000000061011326546671500313740ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ParseException.java000066400000000000000000000051771326546671500315710ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an error occured while parsing a string to a formula. */ public class ParseException extends JMathTeXException { private static final long serialVersionUID = -3498558910250213782L; public ParseException(String str, Throwable cause) { super(str, cause); } public ParseException(String str) { super(str); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ParseOption.java000066400000000000000000000062361326546671500311000ustar00rootroot00000000000000/* ParseOption.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; /** * Parse command options, e.g. \includegraphics[width=1cm,height=2in,keepaspectratio]{...} */ public final class ParseOption { public final static Map parseMap(String options) { Map map = new HashMap(); if (options == null || options.length() == 0) { return map; } StringTokenizer tokens = new StringTokenizer(options, ","); while (tokens.hasMoreTokens()) { String tok = tokens.nextToken().trim(); String[] optarg = tok.split("="); if (optarg != null) { if (optarg.length == 2) { map.put(optarg[0].trim(), optarg[1].trim()); } else if (optarg.length == 1) { map.put(optarg[0].trim(), null); } } } return map; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/PhantomAtom.java000066400000000000000000000065461326546671500310700ustar00rootroot00000000000000/* PhantomAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom that should be drawn invisibly. */ public class PhantomAtom extends Atom implements Row { // RowAtom to be drawn invisibly private RowAtom elements; // dimensions to be taken into account private boolean w = true, h = true, d = true; public PhantomAtom(Atom el) { if (el == null) elements = new RowAtom(); else elements = new RowAtom(el); } public PhantomAtom(Atom el, boolean width, boolean height, boolean depth) { this(el); w = width; h = height; d = depth; } public Box createBox(TeXEnvironment env) { Box res = elements.createBox(env); return new StrutBox((w ? res.getWidth() : 0), (h ? res.getHeight() : 0), (d ? res.getDepth() : 0), res.getShift()); } public int getLeftType() { return elements.getLeftType(); } public int getRightType() { return elements.getRightType(); } public void setPreviousAtom(Dummy prev) { elements.setPreviousAtom(prev); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/PredefMacroInfo.java000066400000000000000000000561361326546671500316440ustar00rootroot00000000000000/* PredefMacroInfo.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Class to load the predefined commands. Mainly wrote to avoid the use of the Java reflection. */ class PredefMacroInfo extends MacroInfo { private int id; public PredefMacroInfo(int id, int nbArgs, int posOpts) { super(nbArgs, posOpts); this.id = id; } public PredefMacroInfo(int id, int nbArgs) { super(nbArgs); this.id = id; } public Object invoke(final TeXParser tp, final String[] args) throws ParseException { return invokeID(id, tp, args); } private static final Object invokeID(final int id, final TeXParser tp, final String[] args) throws ParseException { try { switch (id) { case 0: return PredefMacros.newcommand_macro(tp, args); case 1: return PredefMacros.renewcommand_macro(tp, args); case 2: return PredefMacros.rule_macro(tp, args); case 3: case 4: return PredefMacros.hvspace_macro(tp, args); case 5: case 6: case 7: return PredefMacros.clrlap_macro(tp, args); case 8: case 9: case 10: return PredefMacros.mathclrlap_macro(tp, args); case 11: return PredefMacros.includegraphics_macro(tp, args); case 12: return PredefMacros.cfrac_macro(tp, args); case 13: return PredefMacros.frac_macro(tp, args); case 14: return PredefMacros.sfrac_macro(tp, args); case 15: return PredefMacros.genfrac_macro(tp, args); case 16: return PredefMacros.over_macro(tp, args); case 17: return PredefMacros.overwithdelims_macro(tp, args); case 18: return PredefMacros.atop_macro(tp, args); case 19: return PredefMacros.atopwithdelims_macro(tp, args); case 20: return PredefMacros.choose_macro(tp, args); case 21: return PredefMacros.underscore_macro(tp, args); case 22: return PredefMacros.mbox_macro(tp, args); case 23: return PredefMacros.text_macro(tp, args); case 24: return PredefMacros.intertext_macro(tp, args); case 25: return PredefMacros.binom_macro(tp, args); case 26: return PredefMacros.mathbf_macro(tp, args); case 27: return PredefMacros.bf_macro(tp, args); case 28: return PredefMacros.textstyle_macros(tp, args); case 29: return PredefMacros.textstyle_macros(tp, args); case 30: return PredefMacros.textstyle_macros(tp, args); case 31: return PredefMacros.mathit_macro(tp, args); case 32: return PredefMacros.it_macro(tp, args); case 33: return PredefMacros.mathrm_macro(tp, args); case 34: return PredefMacros.rm_macro(tp, args); case 35: return PredefMacros.textstyle_macros(tp, args); case 36: return PredefMacros.mathsf_macro(tp, args); case 37: return PredefMacros.sf_macro(tp, args); case 38: return PredefMacros.mathtt_macro(tp, args); case 39: return PredefMacros.tt_macro(tp, args); case 40: case 41: case 42: case 43: case 44: case 45: return PredefMacros.textstyle_macros(tp, args); case 46: case 47: case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: return PredefMacros.accentbis_macros(tp, args); case 58: return PredefMacros.T_macro(tp, args); case 59: return PredefMacros.accentbis_macros(tp, args); case 60: return PredefMacros.accent_macro(tp, args); case 61: return PredefMacros.grkaccent_macro(tp, args); case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: case 74: case 75: return PredefMacros.accent_macros(tp, args); case 76: return PredefMacros.nbsp_macro(tp, args); case 77: return PredefMacros.smallmatrixATATenv_macro(tp, args); case 78: return PredefMacros.matrixATATenv_macro(tp, args); case 79: return PredefMacros.overrightarrow_macro(tp, args); case 80: return PredefMacros.overleftarrow_macro(tp, args); case 81: return PredefMacros.overleftrightarrow_macro(tp, args); case 82: return PredefMacros.underrightarrow_macro(tp, args); case 83: return PredefMacros.underleftarrow_macro(tp, args); case 84: return PredefMacros.underleftrightarrow_macro(tp, args); case 85: return PredefMacros.xleftarrow_macro(tp, args); case 86: return PredefMacros.xrightarrow_macro(tp, args); case 87: return PredefMacros.underbrace_macro(tp, args); case 88: return PredefMacros.overbrace_macro(tp, args); case 89: return PredefMacros.underbrack_macro(tp, args); case 90: return PredefMacros.overbrack_macro(tp, args); case 91: return PredefMacros.underparen_macro(tp, args); case 92: return PredefMacros.overparen_macro(tp, args); case 93: case 94: return PredefMacros.sqrt_macro(tp, args); case 95: return PredefMacros.overline_macro(tp, args); case 96: return PredefMacros.underline_macro(tp, args); case 97: return PredefMacros.mathop_macro(tp, args); case 98: return PredefMacros.mathpunct_macro(tp, args); case 99: return PredefMacros.mathord_macro(tp, args); case 100: return PredefMacros.mathrel_macro(tp, args); case 101: return PredefMacros.mathinner_macro(tp, args); case 102: return PredefMacros.mathbin_macro(tp, args); case 103: return PredefMacros.mathopen_macro(tp, args); case 104: return PredefMacros.mathclose_macro(tp, args); case 105: return PredefMacros.joinrel_macro(tp, args); case 106: return PredefMacros.smash_macro(tp, args); case 107: return PredefMacros.vdots_macro(tp, args); case 108: return PredefMacros.ddots_macro(tp, args); case 109: return PredefMacros.iddots_macro(tp, args); case 110: return PredefMacros.nolimits_macro(tp, args); case 111: return PredefMacros.limits_macro(tp, args); case 112: return PredefMacros.normal_macro(tp, args); case 113: return PredefMacros.leftparenthesis_macro(tp, args); case 114: return PredefMacros.leftbracket_macro(tp, args); case 115: return PredefMacros.left_macro(tp, args); case 116: return PredefMacros.middle_macro(tp, args); case 117: return PredefMacros.cr_macro(tp, args); case 118: return PredefMacros.multicolumn_macro(tp, args); case 119: return PredefMacros.hdotsfor_macro(tp, args); case 120: return PredefMacros.arrayATATenv_macro(tp, args); case 121: return PredefMacros.alignATATenv_macro(tp, args); case 122: return PredefMacros.alignedATATenv_macro(tp, args); case 123: return PredefMacros.flalignATATenv_macro(tp, args); case 124: return PredefMacros.alignatATATenv_macro(tp, args); case 125: return PredefMacros.alignedatATATenv_macro(tp, args); case 126: return PredefMacros.multlineATATenv_macro(tp, args); case 127: return PredefMacros.gatherATATenv_macro(tp, args); case 128: return PredefMacros.gatheredATATenv_macro(tp, args); case 129: return PredefMacros.shoveright_macro(tp, args); case 130: return PredefMacros.shoveleft_macro(tp, args); case 131: return PredefMacros.backslashcr_macro(tp, args); case 132: return PredefMacros.newenvironment_macro(tp, args); case 133: return PredefMacros.renewenvironment_macro(tp, args); case 134: return PredefMacros.makeatletter_macro(tp, args); case 135: return PredefMacros.makeatother_macro(tp, args); case 136: case 137: return PredefMacros.fbox_macro(tp, args); case 138: return PredefMacros.stackrel_macro(tp, args); case 139: return PredefMacros.stackbin_macro(tp, args); case 140: return PredefMacros.accentset_macro(tp, args); case 141: return PredefMacros.underaccent_macro(tp, args); case 142: return PredefMacros.undertilde_macro(tp, args); case 143: return PredefMacros.overset_macro(tp, args); case 144: return PredefMacros.Braket_macro(tp, args); case 145: return PredefMacros.Set_macro(tp, args); case 146: return PredefMacros.underset_macro(tp, args); case 147: return PredefMacros.boldsymbol_macro(tp, args); case 148: return PredefMacros.LaTeX_macro(tp, args); case 149: return PredefMacros.GeoGebra_macro(tp, args); case 150: return PredefMacros.big_macro(tp, args); case 151: return PredefMacros.Big_macro(tp, args); case 152: return PredefMacros.bigg_macro(tp, args); case 153: return PredefMacros.Bigg_macro(tp, args); case 154: return PredefMacros.bigl_macro(tp, args); case 155: return PredefMacros.Bigl_macro(tp, args); case 156: return PredefMacros.biggl_macro(tp, args); case 157: return PredefMacros.Biggl_macro(tp, args); case 158: return PredefMacros.bigr_macro(tp, args); case 159: return PredefMacros.Bigr_macro(tp, args); case 160: return PredefMacros.biggr_macro(tp, args); case 161: return PredefMacros.Biggr_macro(tp, args); case 162: return PredefMacros.displaystyle_macro(tp, args); case 163: return PredefMacros.textstyle_macro(tp, args); case 164: return PredefMacros.scriptstyle_macro(tp, args); case 165: return PredefMacros.scriptscriptstyle_macro(tp, args); case 166: return PredefMacros.sideset_macro(tp, args); case 167: return PredefMacros.prescript_macro(tp, args); case 168: return PredefMacros.rotatebox_macro(tp, args); case 169: return PredefMacros.reflectbox_macro(tp, args); case 170: return PredefMacros.scalebox_macro(tp, args); case 171: return PredefMacros.resizebox_macro(tp, args); case 172: return PredefMacros.raisebox_macro(tp, args); case 173: return PredefMacros.shadowbox_macro(tp, args); case 174: return PredefMacros.ovalbox_macro(tp, args); case 175: return PredefMacros.doublebox_macro(tp, args); case 176: return PredefMacros.phantom_macro(tp, args); case 177: return PredefMacros.hphantom_macro(tp, args); case 178: return PredefMacros.vphantom_macro(tp, args); case 179: return PredefMacros.spATbreve_macro(tp, args); case 180: return PredefMacros.spAThat_macro(tp, args); case 181: return PredefMacros.definecolor_macro(tp, args); case 182: return PredefMacros.textcolor_macro(tp, args); case 183: return PredefMacros.fgcolor_macro(tp, args); case 184: return PredefMacros.bgcolor_macro(tp, args); case 185: return PredefMacros.colorbox_macro(tp, args); case 186: return PredefMacros.fcolorbox_macro(tp, args); case 187: return PredefMacros.cedilla_macro(tp, args); case 188: return PredefMacros.IJ_macro(tp, args); case 189: return PredefMacros.IJ_macro(tp, args); case 190: return PredefMacros.TStroke_macro(tp, args); case 191: return PredefMacros.TStroke_macro(tp, args); case 192: return PredefMacros.LCaron_macro(tp, args); case 193: return PredefMacros.tcaron_macro(tp, args); case 194: return PredefMacros.LCaron_macro(tp, args); case 195: return PredefMacros.ogonek_macro(tp, args); case 196: return PredefMacros.cong_macro(tp, args); case 197: return PredefMacros.doteq_macro(tp, args); case 198: return PredefMacros.jlmDynamic_macro(tp, args); case 199: return PredefMacros.jlmExternalFont_macro(tp, args); case 200: return PredefMacros.jlmText_macro(tp, args); case 201: return PredefMacros.jlmTextit_macro(tp, args); case 202: return PredefMacros.jlmTextbf_macro(tp, args); case 203: return PredefMacros.jlmTextitbf_macro(tp, args); case 204: return PredefMacros.DeclareMathSizes_macro(tp, args); case 205: return PredefMacros.magnification_macro(tp, args); case 206: return PredefMacros.hline_macro(tp, args); case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: return PredefMacros.size_macros(tp, args); case 217: return PredefMacros.jlatexmathcumsup_macro(tp, args); case 218: return PredefMacros.jlatexmathcumsub_macro(tp, args); case 219: return PredefMacros.hstrok_macro(tp, args); case 220: return PredefMacros.Hstrok_macro(tp, args); case 221: return PredefMacros.dstrok_macro(tp, args); case 222: return PredefMacros.Dstrok_macro(tp, args); case 223: return PredefMacros.dotminus_macro(tp, args); case 224: return PredefMacros.ratio_macro(tp, args); case 225: return PredefMacros.smallfrowneq_macro(tp, args); case 226: return PredefMacros.geoprop_macro(tp, args); case 227: return PredefMacros.minuscolon_macro(tp, args); case 228: return PredefMacros.minuscoloncolon_macro(tp, args); case 229: return PredefMacros.simcolon_macro(tp, args); case 230: return PredefMacros.simcoloncolon_macro(tp, args); case 231: return PredefMacros.approxcolon_macro(tp, args); case 232: return PredefMacros.approxcoloncolon_macro(tp, args); case 233: return PredefMacros.coloncolon_macro(tp, args); case 234: return PredefMacros.equalscolon_macro(tp, args); case 235: return PredefMacros.equalscoloncolon_macro(tp, args); case 236: return PredefMacros.colonminus_macro(tp, args); case 237: return PredefMacros.coloncolonminus_macro(tp, args); case 238: return PredefMacros.colonequals_macro(tp, args); case 239: return PredefMacros.coloncolonequals_macro(tp, args); case 240: return PredefMacros.colonsim_macro(tp, args); case 241: return PredefMacros.coloncolonsim_macro(tp, args); case 242: return PredefMacros.colonapprox_macro(tp, args); case 243: return PredefMacros.coloncolonapprox_macro(tp, args); case 244: return PredefMacros.kern_macro(tp, args); case 245: return PredefMacros.char_macro(tp, args); case 246: case 247: return PredefMacros.romannumeral_macro(tp, args); case 248: return PredefMacros.textcircled_macro(tp, args); case 249: return PredefMacros.textsc_macro(tp, args); case 250: return PredefMacros.sc_macro(tp, args); case 251: case 252: case 253: case 254: case 255: case 256: case 257: case 258: case 259: case 260: return PredefMacros.muskip_macros(tp, args); case 261: return PredefMacros.quad_macro(tp, args); case 262: return PredefMacros.surd_macro(tp, args); case 263: return PredefMacros.iint_macro(tp, args); case 264: return PredefMacros.iiint_macro(tp, args); case 265: return PredefMacros.iiiint_macro(tp, args); case 266: return PredefMacros.idotsint_macro(tp, args); case 267: return PredefMacros.int_macro(tp, args); case 268: return PredefMacros.oint_macro(tp, args); case 269: return PredefMacros.lmoustache_macro(tp, args); case 270: return PredefMacros.rmoustache_macro(tp, args); case 271: return PredefMacros.insertBreakMark_macro(tp, args); case 272: return PredefMacros.jlmXML_macro(tp, args); case 273: return PredefMacros.above_macro(tp, args); case 274: return PredefMacros.abovewithdelims_macro(tp, args); case 275: return PredefMacros.st_macro(tp, args); case 276: return PredefMacros.fcscore_macro(tp, args); case 277: return PredefMacros.textstyle_macros(tp, args); case 278: return PredefMacros.qquad_macro(tp, args); case 279: return PredefMacros.longdiv_macro(tp, args); case 280: return PredefMacros.questeq_macro(tp, args); case 281: return PredefMacros.bangle_macro(tp, args); case 282: return PredefMacros.brace_macro(tp, args); case 283: return PredefMacros.brack_macro(tp, args); default: return null; } } catch (Exception e) { throw new ParseException("Problem with command " + args[0] + " at position " + tp.getLine() + ":" + tp.getCol() + "\n" + e.getMessage()); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/PredefMacros.java000066400000000000000000002576411326546671500312170ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 longdiv_macro(final TeXParser tp, final String[] args) throws ParseException { try { long dividend = Long.valueOf(args[1]); long divisor = Long.valueOf(args[2]); return new LongdivAtom(divisor, dividend); } catch (NumberFormatException e) { throw new ParseException("Divisor and dividend must be integer numbers"); } } 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 { return choose_brackets("lbrack", "rbrack", tp, args); } public static final Atom brack_macro(final TeXParser tp, final String[] args) throws ParseException { return choose_brackets("lsqbrack", "rsqbrack", tp, args); } public static final Atom bangle_macro(final TeXParser tp, final String[] args) throws ParseException { return choose_brackets("langle", "rangle", tp, args); } public static final Atom brace_macro(final TeXParser tp, final String[] args) throws ParseException { return choose_brackets("lbrace", "rbrace", tp, args); } public static final Atom choose_brackets(final String left, final String right, 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(left, TeXConstants.TYPE_OPENING, true), new SymbolAtom(right, 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 questeq_macro(final TeXParser tp, final String[] args) throws ParseException { Atom at = new UnderOverAtom(SymbolAtom.get(TeXFormula.symbolMappings['=']), new ScaleAtom(SymbolAtom.get(TeXFormula.symbolMappings['?']), 0.75f), TeXConstants.UNIT_MU, 2.5f, true, true); return new TypedAtom(TeXConstants.TYPE_RELATION, TeXConstants.TYPE_RELATION, at); } 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 qquad_macro(final TeXParser tp, final String[] args) throws ParseException { return new SpaceAtom(TeXConstants.UNIT_EM, 2f, 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/PredefinedCommands.java000066400000000000000000000544431326546671500323670ustar00rootroot00000000000000/* PredefinedCommands.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; final class PredefinedCommands { PredefinedCommands() { } static { MacroInfo.Commands.put("newcommand", new PredefMacroInfo(0, 2, 2)); MacroInfo.Commands.put("renewcommand", new PredefMacroInfo(1, 2, 2)); MacroInfo.Commands.put("rule", new PredefMacroInfo(2, 2, 1)); MacroInfo.Commands.put("hspace", new PredefMacroInfo(3, 1)); MacroInfo.Commands.put("vspace", new PredefMacroInfo(4, 1)); MacroInfo.Commands.put("llap", new PredefMacroInfo(5, 1)); MacroInfo.Commands.put("rlap", new PredefMacroInfo(6, 1)); MacroInfo.Commands.put("clap", new PredefMacroInfo(7, 1)); MacroInfo.Commands.put("mathllap", new PredefMacroInfo(8, 1)); MacroInfo.Commands.put("mathrlap", new PredefMacroInfo(9, 1)); MacroInfo.Commands.put("mathclap", new PredefMacroInfo(10, 1)); MacroInfo.Commands.put("includegraphics", new PredefMacroInfo(11, 1, 1)); MacroInfo.Commands.put("cfrac", new PredefMacroInfo(12, 2, 1)); MacroInfo.Commands.put("frac", new PredefMacroInfo(13, 2)); MacroInfo.Commands.put("sfrac", new PredefMacroInfo(14, 2)); MacroInfo.Commands.put("genfrac", new PredefMacroInfo(15, 6)); MacroInfo.Commands.put("over", new PredefMacroInfo(16, 0)); MacroInfo.Commands.put("overwithdelims", new PredefMacroInfo(17, 2)); MacroInfo.Commands.put("atop", new PredefMacroInfo(18, 0)); MacroInfo.Commands.put("atopwithdelims", new PredefMacroInfo(19, 2)); MacroInfo.Commands.put("choose", new PredefMacroInfo(20, 0)); MacroInfo.Commands.put("underscore", new PredefMacroInfo(21, 0)); MacroInfo.Commands.put("mbox", new PredefMacroInfo(22, 1)); MacroInfo.Commands.put("text", new PredefMacroInfo(23, 1)); MacroInfo.Commands.put("intertext", new PredefMacroInfo(24, 1)); MacroInfo.Commands.put("binom", new PredefMacroInfo(25, 2)); MacroInfo.Commands.put("mathbf", new PredefMacroInfo(26, 1)); MacroInfo.Commands.put("bf", new PredefMacroInfo(27, 0)); MacroInfo.Commands.put("mathbb", new PredefMacroInfo(28, 1)); MacroInfo.Commands.put("mathcal", new PredefMacroInfo(29, 1)); MacroInfo.Commands.put("cal", new PredefMacroInfo(30, 1)); MacroInfo.Commands.put("mathit", new PredefMacroInfo(31, 1)); MacroInfo.Commands.put("it", new PredefMacroInfo(32, 0)); MacroInfo.Commands.put("mathrm", new PredefMacroInfo(33, 1)); MacroInfo.Commands.put("rm", new PredefMacroInfo(34, 0)); MacroInfo.Commands.put("mathscr", new PredefMacroInfo(35, 1)); MacroInfo.Commands.put("mathsf", new PredefMacroInfo(36, 1)); MacroInfo.Commands.put("sf", new PredefMacroInfo(37, 0)); MacroInfo.Commands.put("mathtt", new PredefMacroInfo(38, 1)); MacroInfo.Commands.put("tt", new PredefMacroInfo(39, 0)); MacroInfo.Commands.put("mathfrak", new PredefMacroInfo(40, 1)); MacroInfo.Commands.put("mathds", new PredefMacroInfo(41, 1)); MacroInfo.Commands.put("frak", new PredefMacroInfo(42, 1)); MacroInfo.Commands.put("Bbb", new PredefMacroInfo(43, 1)); MacroInfo.Commands.put("oldstylenums", new PredefMacroInfo(44, 1)); MacroInfo.Commands.put("bold", new PredefMacroInfo(45, 1)); MacroInfo.Commands.put("^", new PredefMacroInfo(46, 1)); MacroInfo.Commands.put("\'", new PredefMacroInfo(47, 1)); MacroInfo.Commands.put("\"", new PredefMacroInfo(48, 1)); MacroInfo.Commands.put("`", new PredefMacroInfo(49, 1)); MacroInfo.Commands.put("=", new PredefMacroInfo(50, 1)); MacroInfo.Commands.put(".", new PredefMacroInfo(51, 1)); MacroInfo.Commands.put("~", new PredefMacroInfo(52, 1)); MacroInfo.Commands.put("u", new PredefMacroInfo(53, 1)); MacroInfo.Commands.put("v", new PredefMacroInfo(54, 1)); MacroInfo.Commands.put("H", new PredefMacroInfo(55, 1)); MacroInfo.Commands.put("r", new PredefMacroInfo(56, 1)); MacroInfo.Commands.put("U", new PredefMacroInfo(57, 1)); MacroInfo.Commands.put("T", new PredefMacroInfo(58, 1)); MacroInfo.Commands.put("t", new PredefMacroInfo(59, 1)); MacroInfo.Commands.put("accent", new PredefMacroInfo(60, 2)); MacroInfo.Commands.put("grkaccent", new PredefMacroInfo(61, 2)); MacroInfo.Commands.put("hat", new PredefMacroInfo(62, 1)); MacroInfo.Commands.put("widehat", new PredefMacroInfo(63, 1)); MacroInfo.Commands.put("tilde", new PredefMacroInfo(64, 1)); MacroInfo.Commands.put("acute", new PredefMacroInfo(65, 1)); MacroInfo.Commands.put("grave", new PredefMacroInfo(66, 1)); MacroInfo.Commands.put("ddot", new PredefMacroInfo(67, 1)); MacroInfo.Commands.put("cyrddot", new PredefMacroInfo(68, 1)); MacroInfo.Commands.put("mathring", new PredefMacroInfo(69, 1)); MacroInfo.Commands.put("bar", new PredefMacroInfo(70, 1)); MacroInfo.Commands.put("breve", new PredefMacroInfo(71, 1)); MacroInfo.Commands.put("check", new PredefMacroInfo(72, 1)); MacroInfo.Commands.put("vec", new PredefMacroInfo(73, 1)); MacroInfo.Commands.put("dot", new PredefMacroInfo(74, 1)); MacroInfo.Commands.put("widetilde", new PredefMacroInfo(75, 1)); MacroInfo.Commands.put("nbsp", new PredefMacroInfo(76, 0)); MacroInfo.Commands.put("smallmatrix@@env", new PredefMacroInfo(77, 1)); MacroInfo.Commands.put("matrix@@env", new PredefMacroInfo(78, 1)); MacroInfo.Commands.put("overrightarrow", new PredefMacroInfo(79, 1)); MacroInfo.Commands.put("overleftarrow", new PredefMacroInfo(80, 1)); MacroInfo.Commands.put("overleftrightarrow", new PredefMacroInfo(81, 1)); MacroInfo.Commands.put("underrightarrow", new PredefMacroInfo(82, 1)); MacroInfo.Commands.put("underleftarrow", new PredefMacroInfo(83, 1)); MacroInfo.Commands.put("underleftrightarrow", new PredefMacroInfo(84, 1)); MacroInfo.Commands.put("xleftarrow", new PredefMacroInfo(85, 1, 1)); MacroInfo.Commands.put("xrightarrow", new PredefMacroInfo(86, 1, 1)); MacroInfo.Commands.put("underbrace", new PredefMacroInfo(87, 1)); MacroInfo.Commands.put("overbrace", new PredefMacroInfo(88, 1)); MacroInfo.Commands.put("underbrack", new PredefMacroInfo(89, 1)); MacroInfo.Commands.put("overbrack", new PredefMacroInfo(90, 1)); MacroInfo.Commands.put("underparen", new PredefMacroInfo(91, 1)); MacroInfo.Commands.put("overparen", new PredefMacroInfo(92, 1)); MacroInfo.Commands.put("sqrt", new PredefMacroInfo(93, 1, 1)); MacroInfo.Commands.put("sqrtsign", new PredefMacroInfo(94, 1)); MacroInfo.Commands.put("overline", new PredefMacroInfo(95, 1)); MacroInfo.Commands.put("underline", new PredefMacroInfo(96, 1)); MacroInfo.Commands.put("mathop", new PredefMacroInfo(97, 1)); MacroInfo.Commands.put("mathpunct", new PredefMacroInfo(98, 1)); MacroInfo.Commands.put("mathord", new PredefMacroInfo(99, 1)); MacroInfo.Commands.put("mathrel", new PredefMacroInfo(100, 1)); MacroInfo.Commands.put("mathinner", new PredefMacroInfo(101, 1)); MacroInfo.Commands.put("mathbin", new PredefMacroInfo(102, 1)); MacroInfo.Commands.put("mathopen", new PredefMacroInfo(103, 1)); MacroInfo.Commands.put("mathclose", new PredefMacroInfo(104, 1)); MacroInfo.Commands.put("joinrel", new PredefMacroInfo(105, 0)); MacroInfo.Commands.put("smash", new PredefMacroInfo(106, 1, 1)); MacroInfo.Commands.put("vdots", new PredefMacroInfo(107, 0)); MacroInfo.Commands.put("ddots", new PredefMacroInfo(108, 0)); MacroInfo.Commands.put("iddots", new PredefMacroInfo(109, 0)); MacroInfo.Commands.put("nolimits", new PredefMacroInfo(110, 0)); MacroInfo.Commands.put("limits", new PredefMacroInfo(111, 0)); MacroInfo.Commands.put("normal", new PredefMacroInfo(112, 0)); MacroInfo.Commands.put("(", new PredefMacroInfo(113, 0)); MacroInfo.Commands.put("[", new PredefMacroInfo(114, 0)); MacroInfo.Commands.put("left", new PredefMacroInfo(115, 1)); MacroInfo.Commands.put("middle", new PredefMacroInfo(116, 1)); MacroInfo.Commands.put("cr", new PredefMacroInfo(117, 0)); MacroInfo.Commands.put("multicolumn", new PredefMacroInfo(118, 3)); MacroInfo.Commands.put("hdotsfor", new PredefMacroInfo(119, 1, 1)); MacroInfo.Commands.put("array@@env", new PredefMacroInfo(120, 2)); MacroInfo.Commands.put("align@@env", new PredefMacroInfo(121, 2)); MacroInfo.Commands.put("aligned@@env", new PredefMacroInfo(122, 2)); MacroInfo.Commands.put("flalign@@env", new PredefMacroInfo(123, 2)); MacroInfo.Commands.put("alignat@@env", new PredefMacroInfo(124, 2)); MacroInfo.Commands.put("alignedat@@env", new PredefMacroInfo(125, 2)); MacroInfo.Commands.put("multline@@env", new PredefMacroInfo(126, 2)); MacroInfo.Commands.put("gather@@env", new PredefMacroInfo(127, 2)); MacroInfo.Commands.put("gathered@@env", new PredefMacroInfo(128, 2)); MacroInfo.Commands.put("shoveright", new PredefMacroInfo(129, 1)); MacroInfo.Commands.put("shoveleft", new PredefMacroInfo(130, 1)); MacroInfo.Commands.put("\\", new PredefMacroInfo(131, 0)); MacroInfo.Commands.put("newenvironment", new PredefMacroInfo(132, 3)); MacroInfo.Commands.put("renewenvironment", new PredefMacroInfo(133, 3)); MacroInfo.Commands.put("makeatletter", new PredefMacroInfo(134, 0)); MacroInfo.Commands.put("makeatother", new PredefMacroInfo(135, 0)); MacroInfo.Commands.put("fbox", new PredefMacroInfo(136, 1)); MacroInfo.Commands.put("boxed", new PredefMacroInfo(137, 1)); MacroInfo.Commands.put("stackrel", new PredefMacroInfo(138, 2, 1)); MacroInfo.Commands.put("stackbin", new PredefMacroInfo(139, 2, 1)); MacroInfo.Commands.put("accentset", new PredefMacroInfo(140, 2)); MacroInfo.Commands.put("underaccent", new PredefMacroInfo(141, 2)); MacroInfo.Commands.put("undertilde", new PredefMacroInfo(142, 1)); MacroInfo.Commands.put("overset", new PredefMacroInfo(143, 2)); MacroInfo.Commands.put("Braket", new PredefMacroInfo(144, 1)); MacroInfo.Commands.put("Set", new PredefMacroInfo(145, 1)); MacroInfo.Commands.put("underset", new PredefMacroInfo(146, 2)); MacroInfo.Commands.put("boldsymbol", new PredefMacroInfo(147, 1)); MacroInfo.Commands.put("LaTeX", new PredefMacroInfo(148, 0)); MacroInfo.Commands.put("GeoGebra", new PredefMacroInfo(149, 0)); MacroInfo.Commands.put("big", new PredefMacroInfo(150, 1)); MacroInfo.Commands.put("Big", new PredefMacroInfo(151, 1)); MacroInfo.Commands.put("bigg", new PredefMacroInfo(152, 1)); MacroInfo.Commands.put("Bigg", new PredefMacroInfo(153, 1)); MacroInfo.Commands.put("bigl", new PredefMacroInfo(154, 1)); MacroInfo.Commands.put("Bigl", new PredefMacroInfo(155, 1)); MacroInfo.Commands.put("biggl", new PredefMacroInfo(156, 1)); MacroInfo.Commands.put("Biggl", new PredefMacroInfo(157, 1)); MacroInfo.Commands.put("bigr", new PredefMacroInfo(158, 1)); MacroInfo.Commands.put("Bigr", new PredefMacroInfo(159, 1)); MacroInfo.Commands.put("biggr", new PredefMacroInfo(160, 1)); MacroInfo.Commands.put("Biggr", new PredefMacroInfo(161, 1)); MacroInfo.Commands.put("displaystyle", new PredefMacroInfo(162, 0)); MacroInfo.Commands.put("textstyle", new PredefMacroInfo(163, 0)); MacroInfo.Commands.put("scriptstyle", new PredefMacroInfo(164, 0)); MacroInfo.Commands.put("scriptscriptstyle", new PredefMacroInfo(165, 0)); MacroInfo.Commands.put("sideset", new PredefMacroInfo(166, 3)); MacroInfo.Commands.put("prescript", new PredefMacroInfo(167, 3)); MacroInfo.Commands.put("rotatebox", new PredefMacroInfo(168, 2, 1)); MacroInfo.Commands.put("reflectbox", new PredefMacroInfo(169, 1)); MacroInfo.Commands.put("scalebox", new PredefMacroInfo(170, 2, 2)); MacroInfo.Commands.put("resizebox", new PredefMacroInfo(171, 3)); MacroInfo.Commands.put("raisebox", new PredefMacroInfo(172, 2, 2)); MacroInfo.Commands.put("shadowbox", new PredefMacroInfo(173, 1)); MacroInfo.Commands.put("ovalbox", new PredefMacroInfo(174, 1)); MacroInfo.Commands.put("doublebox", new PredefMacroInfo(175, 1)); MacroInfo.Commands.put("phantom", new PredefMacroInfo(176, 1)); MacroInfo.Commands.put("hphantom", new PredefMacroInfo(177, 1)); MacroInfo.Commands.put("vphantom", new PredefMacroInfo(178, 1)); MacroInfo.Commands.put("sp@breve", new PredefMacroInfo(179, 0)); MacroInfo.Commands.put("sp@hat", new PredefMacroInfo(180, 0)); MacroInfo.Commands.put("definecolor", new PredefMacroInfo(181, 3)); MacroInfo.Commands.put("textcolor", new PredefMacroInfo(182, 2)); MacroInfo.Commands.put("fgcolor", new PredefMacroInfo(183, 2)); MacroInfo.Commands.put("bgcolor", new PredefMacroInfo(184, 2)); MacroInfo.Commands.put("colorbox", new PredefMacroInfo(185, 2)); MacroInfo.Commands.put("fcolorbox", new PredefMacroInfo(186, 3)); MacroInfo.Commands.put("c", new PredefMacroInfo(187, 1)); MacroInfo.Commands.put("IJ", new PredefMacroInfo(188, 0)); MacroInfo.Commands.put("ij", new PredefMacroInfo(189, 0)); MacroInfo.Commands.put("TStroke", new PredefMacroInfo(190, 0)); MacroInfo.Commands.put("tStroke", new PredefMacroInfo(191, 0)); MacroInfo.Commands.put("Lcaron", new PredefMacroInfo(192, 0)); MacroInfo.Commands.put("tcaron", new PredefMacroInfo(193, 0)); MacroInfo.Commands.put("lcaron", new PredefMacroInfo(194, 0)); MacroInfo.Commands.put("k", new PredefMacroInfo(195, 1)); MacroInfo.Commands.put("cong", new PredefMacroInfo(196, 0)); MacroInfo.Commands.put("doteq", new PredefMacroInfo(197, 0)); MacroInfo.Commands.put("jlmDynamic", new PredefMacroInfo(198, 1, 1)); MacroInfo.Commands.put("jlmExternalFont", new PredefMacroInfo(199, 1)); MacroInfo.Commands.put("jlmText", new PredefMacroInfo(200, 1)); MacroInfo.Commands.put("jlmTextit", new PredefMacroInfo(201, 1)); MacroInfo.Commands.put("jlmTextbf", new PredefMacroInfo(202, 1)); MacroInfo.Commands.put("jlmTextitbf", new PredefMacroInfo(203, 1)); MacroInfo.Commands.put("DeclareMathSizes", new PredefMacroInfo(204, 4)); MacroInfo.Commands.put("magnification", new PredefMacroInfo(205, 1)); MacroInfo.Commands.put("hline", new PredefMacroInfo(206, 0)); MacroInfo.Commands.put("tiny", new PredefMacroInfo(207, 0)); MacroInfo.Commands.put("scriptsize", new PredefMacroInfo(208, 0)); MacroInfo.Commands.put("footnotesize", new PredefMacroInfo(209, 0)); MacroInfo.Commands.put("small", new PredefMacroInfo(210, 0)); MacroInfo.Commands.put("normalsize", new PredefMacroInfo(211, 0)); MacroInfo.Commands.put("large", new PredefMacroInfo(212, 0)); MacroInfo.Commands.put("Large", new PredefMacroInfo(213, 0)); MacroInfo.Commands.put("LARGE", new PredefMacroInfo(214, 0)); MacroInfo.Commands.put("huge", new PredefMacroInfo(215, 0)); MacroInfo.Commands.put("Huge", new PredefMacroInfo(216, 0)); MacroInfo.Commands.put("jlatexmathcumsup", new PredefMacroInfo(217, 1)); MacroInfo.Commands.put("jlatexmathcumsub", new PredefMacroInfo(218, 1)); MacroInfo.Commands.put("hstrok", new PredefMacroInfo(219, 0)); MacroInfo.Commands.put("Hstrok", new PredefMacroInfo(220, 0)); MacroInfo.Commands.put("dstrok", new PredefMacroInfo(221, 0)); MacroInfo.Commands.put("Dstrok", new PredefMacroInfo(222, 0)); MacroInfo.Commands.put("dotminus", new PredefMacroInfo(223, 0)); MacroInfo.Commands.put("ratio", new PredefMacroInfo(224, 0)); MacroInfo.Commands.put("smallfrowneq", new PredefMacroInfo(225, 0)); MacroInfo.Commands.put("geoprop", new PredefMacroInfo(226, 0)); MacroInfo.Commands.put("minuscolon", new PredefMacroInfo(227, 0)); MacroInfo.Commands.put("minuscoloncolon", new PredefMacroInfo(228, 0)); MacroInfo.Commands.put("simcolon", new PredefMacroInfo(229, 0)); MacroInfo.Commands.put("simcoloncolon", new PredefMacroInfo(230, 0)); MacroInfo.Commands.put("approxcolon", new PredefMacroInfo(231, 0)); MacroInfo.Commands.put("approxcoloncolon", new PredefMacroInfo(232, 0)); MacroInfo.Commands.put("coloncolon", new PredefMacroInfo(233, 0)); MacroInfo.Commands.put("equalscolon", new PredefMacroInfo(234, 0)); MacroInfo.Commands.put("equalscoloncolon", new PredefMacroInfo(235, 0)); MacroInfo.Commands.put("colonminus", new PredefMacroInfo(236, 0)); MacroInfo.Commands.put("coloncolonminus", new PredefMacroInfo(237, 0)); MacroInfo.Commands.put("colonequals", new PredefMacroInfo(238, 0)); MacroInfo.Commands.put("coloncolonequals", new PredefMacroInfo(239, 0)); MacroInfo.Commands.put("colonsim", new PredefMacroInfo(240, 0)); MacroInfo.Commands.put("coloncolonsim", new PredefMacroInfo(241, 0)); MacroInfo.Commands.put("colonapprox", new PredefMacroInfo(242, 0)); MacroInfo.Commands.put("coloncolonapprox", new PredefMacroInfo(243, 0)); MacroInfo.Commands.put("kern", new PredefMacroInfo(244, 1)); MacroInfo.Commands.put("char", new PredefMacroInfo(245, 1)); MacroInfo.Commands.put("roman", new PredefMacroInfo(246, 1)); MacroInfo.Commands.put("Roman", new PredefMacroInfo(247, 1)); MacroInfo.Commands.put("textcircled", new PredefMacroInfo(248, 1)); MacroInfo.Commands.put("textsc", new PredefMacroInfo(249, 1)); MacroInfo.Commands.put("sc", new PredefMacroInfo(250, 0)); MacroInfo.Commands.put(",", new PredefMacroInfo(251, 0)); MacroInfo.Commands.put(":", new PredefMacroInfo(252, 0)); MacroInfo.Commands.put(";", new PredefMacroInfo(253, 0)); MacroInfo.Commands.put("thinspace", new PredefMacroInfo(254, 0)); MacroInfo.Commands.put("medspace", new PredefMacroInfo(255, 0)); MacroInfo.Commands.put("thickspace", new PredefMacroInfo(256, 0)); MacroInfo.Commands.put("!", new PredefMacroInfo(257, 0)); MacroInfo.Commands.put("negthinspace", new PredefMacroInfo(258, 0)); MacroInfo.Commands.put("negmedspace", new PredefMacroInfo(259, 0)); MacroInfo.Commands.put("negthickspace", new PredefMacroInfo(260, 0)); MacroInfo.Commands.put("quad", new PredefMacroInfo(261, 0)); MacroInfo.Commands.put("surd", new PredefMacroInfo(262, 0)); MacroInfo.Commands.put("iint", new PredefMacroInfo(263, 0)); MacroInfo.Commands.put("iiint", new PredefMacroInfo(264, 0)); MacroInfo.Commands.put("iiiint", new PredefMacroInfo(265, 0)); MacroInfo.Commands.put("idotsint", new PredefMacroInfo(266, 0)); MacroInfo.Commands.put("int", new PredefMacroInfo(267, 0)); MacroInfo.Commands.put("oint", new PredefMacroInfo(268, 0)); MacroInfo.Commands.put("lmoustache", new PredefMacroInfo(269, 0)); MacroInfo.Commands.put("rmoustache", new PredefMacroInfo(270, 0)); MacroInfo.Commands.put("-", new PredefMacroInfo(271, 0)); MacroInfo.Commands.put("jlmXML", new PredefMacroInfo(272, 1)); MacroInfo.Commands.put("above", new PredefMacroInfo(273, 0)); MacroInfo.Commands.put("abovewithdelims", new PredefMacroInfo(274, 2)); MacroInfo.Commands.put("st", new PredefMacroInfo(275, 1)); MacroInfo.Commands.put("fcscore", new PredefMacroInfo(276, 1)); MacroInfo.Commands.put("mathnormal", new PredefMacroInfo(277, 1)); MacroInfo.Commands.put("qquad", new PredefMacroInfo(278, 0)); MacroInfo.Commands.put("longdiv", new PredefMacroInfo(279, 2)); MacroInfo.Commands.put("questeq", new PredefMacroInfo(280, 0)); MacroInfo.Commands.put("bangle", new PredefMacroInfo(281, 0)); MacroInfo.Commands.put("brace", new PredefMacroInfo(282, 0)); MacroInfo.Commands.put("brack", new PredefMacroInfo(283, 0)); } } PredefinedTeXFormulaParser.java000066400000000000000000000120351326546671500337410ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* PredefinedTeXFormulaParser.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.io.InputStream; import java.util.Map; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /** * Parses and creates predefined TeXFormula objects form an XML-file. */ public class PredefinedTeXFormulaParser { public static final String RESOURCE_NAME = "PredefinedTeXFormulas.xml"; private Element root; private String type; public PredefinedTeXFormulaParser(InputStream file, String type) throws ResourceParseException { try { this.type = type; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); root = factory.newDocumentBuilder().parse(file).getDocumentElement(); } catch (Exception e) { // JDOMException or IOException throw new XMLResourceParseException("", e); } } public PredefinedTeXFormulaParser(String PredefFile, String type) throws ResourceParseException { this(PredefinedTeXFormulaParser.class.getResourceAsStream(PredefFile), type); } public void parse(Map predefinedTeXFormulas) { // get required string attribute String enabledAll = getAttrValueAndCheckIfNotNull("enabled", root); if ("true".equals(enabledAll)) { // parse formula's // iterate all "Font"-elements NodeList list = root.getElementsByTagName(this.type); for (int i = 0; i < list.getLength(); i++) { Element formula = (Element)list.item(i); // get required string attribute String enabled = getAttrValueAndCheckIfNotNull("enabled", formula); if ("true".equals (enabled)) { // parse this formula // get required string attribute String name = getAttrValueAndCheckIfNotNull("name", formula); // parse and build the formula and add it to the table if ("TeXFormula".equals(this.type)) predefinedTeXFormulas.put(name, (TeXFormula) new TeXFormulaParser(name, formula, this.type).parse()); else predefinedTeXFormulas.put(name, (MacroInfo) new TeXFormulaParser(name, formula, this.type).parse()); } } } } 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/PredefinedTeXFormulas.java000066400000000000000000000326711326546671500330360ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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"); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/RaiseAtom.java000066400000000000000000000065721326546671500305240ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ReflectAtom.java000066400000000000000000000050341326546671500310350ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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)); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ReflectBox.java000066400000000000000000000054701326546671500306710ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ResizeAtom.java000066400000000000000000000100751326546671500307130ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ResourceParseException.java000066400000000000000000000052641326546671500332760ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an error occurred while loading the necessary resources into memory. */ public class ResourceParseException extends JMathTeXException { private static final long serialVersionUID = -7083164592631533649L; protected ResourceParseException(String msg) { super(msg); } protected ResourceParseException(String msg, Throwable cause) { super(msg, cause); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/RomanAtom.java000066400000000000000000000053231326546671500305260ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/RotateAtom.java000066400000000000000000000076561326546671500307230ustar00rootroot00000000000000/* RotateAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.util.Map; /** * An atom representing a rotated Atom. */ public class RotateAtom extends Atom { private Atom base; private double angle; private int option = -1; private int xunit, yunit; private float x, y; public RotateAtom(Atom base, String angle, String option) { this.type = base.type; this.base = base; this.angle = Double.parseDouble(angle); this.option = RotateBox.getOrigin(option); } public RotateAtom(Atom base, double angle, String option) { this.type = base.type; this.base = base; this.angle = angle; Map map = ParseOption.parseMap(option); if (map.containsKey("origin")) { this.option = RotateBox.getOrigin(map.get("origin")); } else { if (map.containsKey("x")) { float[] xinfo = SpaceAtom.getLength(map.get("x")); this.xunit = (int) xinfo[0]; this.x = xinfo[1]; } else { this.xunit = TeXConstants.UNIT_POINT; this.x = 0; } if (map.containsKey("y")) { float[] yinfo = SpaceAtom.getLength(map.get("y")); this.yunit = (int) yinfo[0]; this.y = yinfo[1]; } else { this.yunit = TeXConstants.UNIT_POINT; this.y = 0; } } } public Box createBox(TeXEnvironment env) { if (option != -1) { return new RotateBox(base.createBox(env), angle, option); } else { return new RotateBox(base.createBox(env), angle, x * SpaceAtom.getFactor(xunit, env), y * SpaceAtom.getFactor(yunit, env)); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/RotateBox.java000066400000000000000000000161041326546671500305370ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/Row.java000066400000000000000000000057311326546671500274030ustar00rootroot00000000000000/* Row.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * A "composed atom": an atom that consists of child atoms that will be displayed * next to each other horizontally with glue between them. */ public interface Row { /** * Sets the given dummy containing the atom that comes just before * the first child atom of this "composed atom". This method will allways be called * by another composed atom, so this composed atom will be a child of it (nested). * This is necessary to determine the glue to insert between the first child atom * of this nested composed atom and the atom that the dummy contains. * * @param dummy the dummy that comes just before this "composed atom" */ public void setPreviousAtom(Dummy dummy); } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/RowAtom.java000066400000000000000000000241411326546671500302200ustar00rootroot00000000000000/* RowAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet to handle the case where several ligatures occure*/ package org.scilab.forge.jlatexmath; import java.util.BitSet; import java.util.LinkedList; import java.util.ListIterator; import org.scilab.forge.jlatexmath.dynamic.DynamicAtom; /** * An atom representing a horizontal row of other atoms, to be seperated by glue. * It's also responsible for inserting kerns and ligatures. */ public class RowAtom extends Atom implements Row { // atoms to be displayed horizontally next to eachother protected LinkedList elements = new LinkedList(); public boolean lookAtLastAtom = false; // previous atom (for nested Row atoms) private Dummy previousAtom = null; // set of atom types that make a previous bin atom change to ord private static BitSet binSet; // set of atom types that can possibly need a kern or, together with the // previous atom, be replaced by a ligature private static BitSet ligKernSet; static { // fill binSet binSet = new BitSet (16); binSet.set(TeXConstants.TYPE_BINARY_OPERATOR); binSet.set(TeXConstants.TYPE_BIG_OPERATOR); binSet.set(TeXConstants.TYPE_RELATION); binSet.set(TeXConstants.TYPE_OPENING); binSet.set(TeXConstants.TYPE_PUNCTUATION); // fill ligKernSet ligKernSet = new BitSet (16); ligKernSet.set(TeXConstants.TYPE_ORDINARY); ligKernSet.set(TeXConstants.TYPE_BIG_OPERATOR); ligKernSet.set(TeXConstants.TYPE_BINARY_OPERATOR); ligKernSet.set(TeXConstants.TYPE_RELATION); ligKernSet.set(TeXConstants.TYPE_OPENING); ligKernSet.set(TeXConstants.TYPE_CLOSING); ligKernSet.set(TeXConstants.TYPE_PUNCTUATION); } protected RowAtom() { // empty } public RowAtom(Atom el) { if (el != null) { if (el instanceof RowAtom) // no need to make an mrow the only element of an mrow elements.addAll(((RowAtom) el).elements); else elements.add(el); } } public Atom getLastAtom() { if (elements.size() != 0) { return elements.removeLast(); } return new SpaceAtom(TeXConstants.UNIT_POINT, 0.0f, 0.0f, 0.0f); } public final void add(Atom el) { if (el != null) { elements.add(el); } } /** * * @param cur * current atom being processed * @param prev * previous atom */ private void changeToOrd(Dummy cur, Dummy prev, Atom next) { int type = cur.getLeftType(); if (type == TeXConstants.TYPE_BINARY_OPERATOR && ((prev == null || binSet.get(prev.getRightType())) || next == null)) { cur.setType(TeXConstants.TYPE_ORDINARY); } else if (next != null && cur.getRightType() == TeXConstants.TYPE_BINARY_OPERATOR) { int nextType = next.getLeftType(); if (nextType == TeXConstants.TYPE_RELATION || nextType == TeXConstants.TYPE_CLOSING || nextType == TeXConstants.TYPE_PUNCTUATION) { cur.setType(TeXConstants.TYPE_ORDINARY); } } } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); HorizontalBox hBox = new HorizontalBox(env.getColor(), env.getBackground()); int position = 0; env.reset(); // convert atoms to boxes and add to the horizontal box for (ListIterator it = elements.listIterator(); it.hasNext();) { Atom at = it.next(); position++; boolean markAdded = false; while (at instanceof BreakMarkAtom) { if (!markAdded) { markAdded = true; } if (it.hasNext()) { at = it.next(); position++; } else { break; } } if (at instanceof DynamicAtom && ((DynamicAtom) at).getInsertMode()) { Atom a = ((DynamicAtom) at).getAtom(); if (a instanceof RowAtom) { elements.remove(position - 1); elements.addAll(position - 1, ((RowAtom) a).elements); it = elements.listIterator(position - 1); at = it.next(); } else { at = a; } } Dummy atom = new Dummy(at); // if necessary, change BIN type to ORD Atom nextAtom = null; if (it.hasNext()) { nextAtom = it.next(); it.previous(); } changeToOrd(atom, previousAtom, nextAtom); // check for ligatures or kerning float kern = 0; // Calixte : I put a while to handle the case where there are // several ligatures as in ffi or ffl while (it.hasNext() && atom.getRightType() == TeXConstants.TYPE_ORDINARY && atom.isCharSymbol()) { Atom next = it.next(); position++; if (next instanceof CharSymbol && ligKernSet.get(next.getLeftType())) { atom.markAsTextSymbol(); CharFont l = atom.getCharFont(tf), r = ((CharSymbol) next).getCharFont(tf); CharFont lig = tf.getLigature(l, r); if (lig == null) { kern = tf.getKern(l, r, env.getStyle()); it.previous(); position--; break; // iterator remains unchanged (no ligature!) } else { // ligature atom.changeAtom(new FixedCharAtom(lig)); // go on with the // ligature } } else { it.previous(); position--; break; }// iterator remains unchanged } // insert glue, unless it's the first element of the row // OR this element or the next is a Kern. if (it.previousIndex() != 0 && previousAtom != null && !previousAtom.isKern() && !atom.isKern()) { hBox.add(Glue.get(previousAtom.getRightType(), atom.getLeftType(), env)); } // insert atom's box atom.setPreviousAtom(previousAtom); Box b = atom.createBox(env); if (atom.isCharInMathMode() && b instanceof CharBox) { // When we've a single char, we need to add italic correction // As an example: (TVY) looks crappy... CharBox cb = (CharBox) b; cb.addItalicCorrectionToWidth(); } if (markAdded || (at instanceof CharAtom && Character.isDigit(((CharAtom) at).getCharacter()))) { hBox.addBreakPosition(hBox.children.size()); } hBox.add(b); // set last used fontId (for next atom) env.setLastFontId(b.getLastFontId()); // insert kern if (Math.abs(kern) > TeXFormula.PREC) { hBox.add(new StrutBox(kern, 0, 0, 0)); } // kerns do not interfere with the normal glue-rules without kerns if (!atom.isKern()) { previousAtom = atom; } } // reset previousAtom previousAtom = null; return hBox; } public void setPreviousAtom(Dummy prev) { previousAtom = prev; } public int getLeftType() { if (elements.size() == 0) { return TeXConstants.TYPE_ORDINARY; } else { return (elements.get(0)).getLeftType(); } } public int getRightType() { if (elements.size() == 0) { return TeXConstants.TYPE_ORDINARY; } else { return (elements.get(elements.size() - 1)).getRightType(); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/RuleAtom.java000066400000000000000000000054621326546671500303650ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; 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)); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ScaleAtom.java000066400000000000000000000057001326546671500305000ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a scaled Atom. */ public class ScaleAtom extends Atom { protected Atom base; private double xscl, yscl; public ScaleAtom(Atom base, double xscl, double yscl) { this.type = base.type; this.base = base; this.xscl = xscl; this.yscl = yscl; } public ScaleAtom(Atom base, double scl) { this.type = base.type; this.base = base; this.xscl = scl; this.yscl = scl; } public int getLeftType() { return base.getLeftType(); } public int getRightType() { return base.getRightType(); } public Box createBox(TeXEnvironment env) { return new ScaleBox(base.createBox(env), xscl, yscl); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ScaleBox.java000066400000000000000000000066631326546671500303410ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; 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); } 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ScriptsAtom.java000066400000000000000000000240341326546671500311010ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ShadowAtom.java000066400000000000000000000050541326546671500307000ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a boxed base atom. */ public class ShadowAtom extends FBoxAtom { public ShadowAtom(Atom base) { super(base); } public Box createBox(TeXEnvironment env) { return new ShadowBox((FramedBox) super.createBox(env), env.getTeXFont().getDefaultRuleThickness(env.getStyle()) * 4); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/ShadowBox.java000066400000000000000000000105461326546671500305320ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.BasicStroke; import java.awt.Graphics2D; import java.awt.Stroke; 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); } */ jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/SmallCapAtom.java000066400000000000000000000051621326546671500311470ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a small capital atom. */ public class SmallCapAtom extends Atom { protected Atom base; public SmallCapAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { boolean prev = env.getSmallCap(); env.setSmallCap(true); Box box = base.createBox(env); env.setSmallCap(prev); return box; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/SmashedAtom.java000066400000000000000000000055141326546671500310400ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 SmashedAtom(Atom at) { this.at = at; } public Box createBox(TeXEnvironment env) { Box b = at.createBox(env); if (h) b.setHeight(0); if (d) b.setDepth(0); return b; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/SpaceAtom.java000066400000000000000000000234701326546671500305100ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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(); } }, new UnitConversion() {//X8 public float getPixelConversion(TeXEnvironment env) { return env.getTeXFont().getDefaultRuleThickness(env.getStyle()); } } }; // 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/SsAtom.java000066400000000000000000000051651326546671500300430ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/StrikeThroughAtom.java000066400000000000000000000056751326546671500322660ustar00rootroot00000000000000/* SmashedAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a smashed atom (i.e. with no height and no depth). */ public class StrikeThroughAtom extends Atom { private Atom at; public StrikeThroughAtom(Atom at) { this.at = at; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); float axis = tf.getAxisHeight(style); float drt = tf.getDefaultRuleThickness(style); Box b = at.createBox(env); HorizontalRule rule = new HorizontalRule(drt, b.getWidth(), -axis + drt, false); HorizontalBox hb = new HorizontalBox(); hb.add(b); hb.add(new StrutBox(-b.getWidth(), 0, 0, 0)); hb.add(rule); return hb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/StrutBox.java000066400000000000000000000052501326546671500304220ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/StyleAtom.java000066400000000000000000000053071326546671500305540ustar00rootroot00000000000000/* StyleAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a modification of style in a formula (e.g. textstyle or displaystyle). */ public class StyleAtom extends Atom { private int style; private Atom at; public StyleAtom(int style, Atom at) { this.style = style; this.at = at; } public Box createBox(TeXEnvironment env) { int sstyle = env.getStyle(); env.setStyle(style); Box box = at.createBox(env); env.setStyle(sstyle); return box; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/SymbolAtom.java000066400000000000000000000163641326546671500307260ustar00rootroot00000000000000/* SymbolAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.BitSet; import java.util.Map; /** * A box representing a symbol (a non-alphanumeric character). */ public class SymbolAtom extends CharSymbol { // whether it's is a delimiter symbol private final boolean delimiter; // symbol name private final String name; // contains all defined symbols public static Map symbols; // contains all the possible valid symbol types private static BitSet validSymbolTypes; private char unicode; static { symbols = new TeXSymbolParser().readSymbols(); // set valid symbol types validSymbolTypes = new BitSet(16); validSymbolTypes.set(TeXConstants.TYPE_ORDINARY); validSymbolTypes.set(TeXConstants.TYPE_BIG_OPERATOR); validSymbolTypes.set(TeXConstants.TYPE_BINARY_OPERATOR); validSymbolTypes.set(TeXConstants.TYPE_RELATION); validSymbolTypes.set(TeXConstants.TYPE_OPENING); validSymbolTypes.set(TeXConstants.TYPE_CLOSING); validSymbolTypes.set(TeXConstants.TYPE_PUNCTUATION); validSymbolTypes.set(TeXConstants.TYPE_ACCENT); } public SymbolAtom(SymbolAtom s, int type) throws InvalidSymbolTypeException { if (!validSymbolTypes.get(type)) throw new InvalidSymbolTypeException( "The symbol type was not valid! " + "Use one of the symbol type constants from the class 'TeXConstants'."); name = s.name; this.type = type; if (type == TeXConstants.TYPE_BIG_OPERATOR) this.type_limits = TeXConstants.SCRIPT_NORMAL; delimiter = s.delimiter; } /** * Constructs a new symbol. This used by "TeXSymbolParser" and the symbol * types are guaranteed to be valid. * * @param name symbol name * @param type symbol type constant * @param del whether the symbol is a delimiter */ public SymbolAtom(String name, int type, boolean del) { this.name = name; this.type = type; if (type == TeXConstants.TYPE_BIG_OPERATOR) this.type_limits = TeXConstants.SCRIPT_NORMAL; delimiter = del; } public SymbolAtom setUnicode(char c) { this.unicode = c; return this; } public char getUnicode() { return unicode; } public static void addSymbolAtom(String file) { FileInputStream in; try { in = new FileInputStream(file); } catch (FileNotFoundException e) { throw new ResourceParseException(file, e); } addSymbolAtom(in, file); } public static void addSymbolAtom(InputStream in, String name) { TeXSymbolParser tsp = new TeXSymbolParser(in, name); symbols.putAll(tsp.readSymbols()); } public static void addSymbolAtom(SymbolAtom sym) { symbols.put(sym.name, sym); } /** * Looks up the name in the table and returns the corresponding SymbolAtom representing * the symbol (if it's found). * * @param name the name of the symbol * @return a SymbolAtom representing the found symbol * @throws SymbolNotFoundException if no symbol with the given name was found */ public static SymbolAtom get(String name) throws SymbolNotFoundException { Object obj = symbols.get(name); if (obj == null) // not found throw new SymbolNotFoundException(name); else return (SymbolAtom) obj; } /** * * @return true if this symbol can act as a delimiter to embrace formulas */ public boolean isDelimiter() { return delimiter; } public String getName() { return name; } public Box createBox(TeXEnvironment env) { TeXFont tf = env.getTeXFont(); int style = env.getStyle(); Char c = tf.getChar(name, style); Box cb = new CharBox(c); if (env.getSmallCap() && unicode != 0 && Character.isLowerCase(unicode)) { try { cb = new ScaleBox(new CharBox(tf.getChar(TeXFormula.symbolTextMappings[Character.toUpperCase(unicode)], style)), 0.8, 0.8); } catch (SymbolMappingNotFoundException e) { } } if (type == TeXConstants.TYPE_BIG_OPERATOR) { if (style < TeXConstants.STYLE_TEXT && tf.hasNextLarger(c)) c = tf.getNextLarger(c, style); cb = new CharBox(c); cb.setShift(-(cb.getHeight() + cb.getDepth()) / 2 - env.getTeXFont().getAxisHeight(env.getStyle())); float delta = c.getItalic(); HorizontalBox hb = new HorizontalBox(cb); if (delta > TeXFormula.PREC) hb.add(new StrutBox(delta, 0, 0, 0)); return hb; } return cb; } public CharFont getCharFont(TeXFont tf) { // style doesn't matter here return tf.getChar(name, TeXConstants.STYLE_DISPLAY).getCharFont(); } } SymbolMappingNotFoundException.java000066400000000000000000000054411326546671500346700ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals a missing symbol mapping. * * @author Kurt Vermeulen */ public class SymbolMappingNotFoundException extends JMathTeXException { private static final long serialVersionUID = 2659192520874275262L; protected SymbolMappingNotFoundException(String symbolName) { super("No mapping found for the symbol '" + symbolName + "'! " + "Insert a <" + DefaultTeXFontParser.SYMBOL_MAPPING_EL + ">-element in '" + DefaultTeXFontParser.RESOURCE_NAME + "'."); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/SymbolNotFoundException.java000066400000000000000000000052661326546671500334400ustar00rootroot00000000000000/* SymbolNotFoundException.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals that an unknown symbol was used. * * @author Kurt Vermeulen */ public class SymbolNotFoundException extends JMathTeXException { private static final long serialVersionUID = -3005021333407670912L; protected SymbolNotFoundException(String name) { super("There's no symbol with the name '" + name + "' defined in '" + TeXSymbolParser.RESOURCE_NAME + "'!"); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TStrokeAtom.java000066400000000000000000000100421326546671500310370ustar00rootroot00000000000000/* TStrokeAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom with a stroked T */ public class TStrokeAtom extends Atom { private boolean upper; public TStrokeAtom(boolean upper) { this.upper = upper; } public Box createBox(TeXEnvironment env) { Char ch = env.getTeXFont().getChar("bar", env.getStyle()); float italic = ch.getItalic(); CharBox T = new CharBox(env.getTeXFont().getChar(upper ? 'T' : 't', "mathnormal", env.getStyle())); CharBox B = new CharBox(ch); Box y; if (Math.abs(italic) > TeXFormula.PREC) { y = new HorizontalBox(new StrutBox(-italic, 0, 0, 0)); y.add(B); } else y = B; Box b = new HorizontalBox(y, T.getWidth(), TeXConstants.ALIGN_CENTER); VerticalBox vb = new VerticalBox(); vb.add(T); vb.add(new StrutBox(0, -0.5f * T.getHeight(), 0, 0)); vb.add(b); return vb; } } /*if (upper) hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.7f, 0, 0).createBox(env)); else hb.add(new SpaceAtom(TeXConstants.UNIT_EM, -0.3f, 0, 0).createBox(env)); hb.add(A); return hb; } 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(); float x = new SpaceAtom(TeXConstants.UNIT_MU, 1f, 0, 0).createBox(env).getWidth(); 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; } }*/ jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXConstants.java000066400000000000000000000240321326546671500312240ustar00rootroot00000000000000/* TeXConstants.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; /** * The collection of constants that can be used in the methods of the classes of * this package. */ public class TeXConstants { // ******************* // ALIGNMENT CONSTANTS // ******************* /** * Alignment constant: extra space will be added to the right of the formula */ public static final int ALIGN_LEFT = 0; /** * Alignment constant: extra space will be added to the left of the formula */ public static final int ALIGN_RIGHT = 1; /** * Alignment constant: the formula will be centered in the middle. This constant * can be used for both horizontal and vertical alignment. */ public static final int ALIGN_CENTER = 2; /** * Alignment constant: extra space will be added under the formula */ public static final int ALIGN_TOP = 3; /** * Alignment constant: extra space will be added above the formula */ public static final int ALIGN_BOTTOM = 4; /** * Alignment constant: none */ public static final int ALIGN_NONE = 5; public static final int THINMUSKIP = 1; public static final int MEDMUSKIP = 2; public static final int THICKMUSKIP = 3; public static final int NEGTHINMUSKIP = -1; public static final int NEGMEDMUSKIP = -2; public static final int NEGTHICKMUSKIP = -3; public static final int QUAD = 3; public static final int SCRIPT_NORMAL = 0; public static final int SCRIPT_NOLIMITS = 1; public static final int SCRIPT_LIMITS = 2; // ********************* // SYMBOL TYPE CONSTANTS // ********************* /** * Symbol/Atom type: ordinary symbol, e.g. "slash" */ public static final int TYPE_ORDINARY = 0; /** * Symbol/Atom type: big operator (= large operator), e.g. "sum" */ public static final int TYPE_BIG_OPERATOR = 1; /** * Symbol/Atom type: binary operator, e.g. "plus" */ public static final int TYPE_BINARY_OPERATOR = 2; /** * Symbol/Atom type: relation, e.g. "equals" */ public static final int TYPE_RELATION = 3; /** * Symbol/Atom type: opening symbol, e.g. "lbrace" */ public static final int TYPE_OPENING = 4; /** * Symbol/Atom type: closing symbol, e.g. "rbrace" */ public static final int TYPE_CLOSING = 5; /** * Symbol/Atom type: punctuation symbol, e.g. "comma" */ public static final int TYPE_PUNCTUATION = 6; /** * Atom type: inner atom (NOT FOR SYMBOLS!!!) */ public static final int TYPE_INNER = 7; /** * Symbol type: accent, e.g. "hat" */ public static final int TYPE_ACCENT = 10; public static final int TYPE_INTERTEXT = 11; public static final int TYPE_MULTICOLUMN = 12; public static final int TYPE_HLINE = 13; // *************************************** // OVER AND UNDER DELIMITER TYPE CONSTANTS // *************************************** /** * Delimiter type constant for putting delimiters over and under formula's: brace */ public static final int DELIM_BRACE = 0; /** * Delimiter type constant for putting delimiters over and under formula's: square bracket */ public static final int DELIM_SQUARE_BRACKET = 1; /** * Delimiter type constant for putting delimiters over and under formula's: parenthesis */ public static final int DELIM_BRACKET = 2; /** * Delimiter type constant for putting delimiters over and under formula's: * arrow with single line pointing to the left */ public static final int DELIM_LEFT_ARROW = 3; /** * Delimiter type constant for putting delimiters over and under formula's: * arrow with single line pointing to the right */ public static final int DELIM_RIGHT_ARROW = 4; /** * Delimiter type constant for putting delimiters over and under formula's: * arrow with single line pointing to the left and to the right */ public static final int DELIM_LEFT_RIGHT_ARROW = 5; /** * Delimiter type constant for putting delimiters over and under formula's: * arrow with two lines pointing to the left */ public static final int DELIM_DOUBLE_LEFT_ARROW = 6; /** * Delimiter type constant for putting delimiters over and under formula's: * arrow with two lines pointing to the right */ public static final int DELIM_DOUBLE_RIGHT_ARROW = 7; /** * Delimiter type constant for putting delimiters over and under formula's: * arrow with two lines pointing to the left and to the right */ public static final int DELIM_DOUBLE_LEFT_RIGHT_ARROW = 8; /** * Delimiter type constant for putting delimiters over and under formula's: * underline once */ public static final int DELIM_SINGLE_LINE = 9; /** * Delimiter type constant for putting delimiters over and under formula's: * underline twice */ public static final int DELIM_DOUBLE_LINE = 10; // ******************* // TEX STYLE CONSTANTS // ******************* /** * TeX style: display style. *

* The large versions of big operators are used and limits are placed under and over * these operators (default). Symbols are rendered in the largest size. */ public static final int STYLE_DISPLAY = 0; /** * TeX style: text style. *

* The small versions of big operators are used and limits are attached to * these operators as scripts (default). The same size as in the display style * is used to render symbols. */ public static final int STYLE_TEXT = 2; /** * TeX style: script style. *

* The same as the text style, but symbols are rendered in a smaller size. */ public static final int STYLE_SCRIPT = 4; /** * TeX style: script_script style. *

* The same as the script style, but symbols are rendered in a smaller size. */ public static final int STYLE_SCRIPT_SCRIPT = 6; // ************** // UNIT CONSTANTS // ************** /** * Unit constant: em *

* 1 em = the width of the capital 'M' in the current font */ public static final int UNIT_EM = 0; /** * Unit constant: ex *

* 1 ex = the height of the character 'x' in the current font */ public static final int UNIT_EX = 1; /** * Unit constant: pixel */ public static final int UNIT_PIXEL = 2; /** * Unit constant: postscript point */ public static final int UNIT_POINT = 3; /** * Unit constant: pica *

* 1 pica = 12 point */ public static final int UNIT_PICA = 4; /** * Unit constant: math unit (mu) *

* 1 mu = 1/18 em (em taken from the "mufont") */ public static final int UNIT_MU = 5; /** * Unit constant: cm *

* 1 cm = 28.346456693 point */ public static final int UNIT_CM = 6; /** * Unit constant: mm *

* 1 mm = 2.8346456693 point */ public static final int UNIT_MM = 7; /** * Unit constant: in *

* 1 in = 72 point */ public static final int UNIT_IN = 8; /** * Unit constant: sp *

* 1 sp = 65536 point */ public static final int UNIT_SP = 9; /** * Unit constant: in *

* 1 in = 72.27 pt */ public static final int UNIT_PT = 10; /** * Unit constant: in *

* 1 in = 72 point */ public static final int UNIT_DD = 11; /** * Unit constant: in *

* 1 in = 72 point */ public static final int UNIT_CC = 12; /** * Unit constant: x8 *

* 1 s8 = 1 default rule thickness */ public static final int UNIT_X8 = 13; } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXEnvironment.java000066400000000000000000000203731326546671500315600ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXFont.java000066400000000000000000000211031326546671500301520ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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(); } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXFormula.java000066400000000000000000001114611326546671500306600ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.awt.Graphics2D; import java.awt.GraphicsEnvironment; import java.awt.Image; import java.awt.Insets; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.imageio.ImageIO; import javax.imageio.stream.FileImageOutputStream; /** * 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; // point-to-pixel conversion public static float PIXELS_PER_POINT = 1f; // font scale for deriving public static float FONT_SCALE_FACTOR = 100f; // 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; 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); if (!(tf.root instanceof RowAtom)) { // depending of the context a RowAtom can be modified // so we can't reuse it 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; } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXFormulaParser.java000066400000000000000000000473651326546671500320500ustar00rootroot00000000000000/* TeXFormulaParser.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * Parses a "TeXFormula"-element representing a predefined TeXFormula's from an XML-file. */ public class TeXFormulaParser { private interface ActionParser { // NOPMD public void parse(Element el) throws ResourceParseException; } private interface ArgumentValueParser { // NOPMD public Object parseValue(String value, String type) throws ResourceParseException; } private class MethodInvocationParser implements ActionParser { MethodInvocationParser () { // avoids creation of special accessor type } public void parse(Element el) throws ResourceParseException { // get required string attributes String methodName = getAttrValueAndCheckIfNotNull("name", el); String objectName = getAttrValueAndCheckIfNotNull(ARG_OBJ_ATTR, el); // check if temporary TeXFormula exists Object object = tempFormulas.get(objectName); if (object == null) {// doesn't exist throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_OBJ_ATTR, "has an unknown temporary TeXFormula name as value : '" + objectName + "'!"); } else { // parse arguments NodeList args = el.getElementsByTagName("Argument"); // get argument classes and values Class[] argClasses = getArgumentClasses(args); Object[] argValues = getArgumentValues(args); // invoke method try { TeXFormula.class.getMethod(methodName, argClasses).invoke((TeXFormula) object, argValues); } catch (Exception e) { throw new XMLResourceParseException( "Error invoking the method '" + methodName + "' on the temporary TeXFormula '" + objectName + "' while constructing the predefined TeXFormula '" + formulaName + "'!\n" + e.toString()); } } } } private class CreateTeXFormulaParser implements ActionParser { CreateTeXFormulaParser () { // avoids creation of special accessor type } public void parse(Element el) throws ResourceParseException { // get required string attribute String name = getAttrValueAndCheckIfNotNull("name", el); // parse arguments NodeList args = el.getElementsByTagName("Argument"); // get argument classes and values Class[] argClasses = getArgumentClasses(args); Object[] argValues = getArgumentValues(args); // create TeXFormula object //String code = "TeXFormula.predefinedTeXFormulasAsString.put(\"%s\", \"%s\");"; //System.out.println(String.format(code, formulaName, argValues[0])); try { TeXFormula f = TeXFormula.class.getConstructor(argClasses).newInstance(argValues); // succesfully created, so add to "temporary formula's"-hashtable tempFormulas.put(name, f); } catch (Exception e) { throw new XMLResourceParseException( "Error creating the temporary TeXFormula '" + name + "' while constructing the predefined TeXFormula '" + formulaName + "'!\n" + e.toString()); } } } private class CreateCommandParser implements ActionParser { CreateCommandParser () { // avoids creation of special accessor type } public void parse(Element el) throws ResourceParseException { // get required string attribute String name = getAttrValueAndCheckIfNotNull("name", el); // parse arguments NodeList args = el.getElementsByTagName("Argument"); // get argument classes and values Class[] argClasses = getArgumentClasses(args); Object[] argValues = getArgumentValues(args); // create TeXFormula object try { MacroInfo f = MacroInfo.class.getConstructor(argClasses).newInstance(argValues); // succesfully created, so add to "temporary formula's"-hashtable tempCommands.put(name, f); } catch (IllegalArgumentException e) { String err = "IllegalArgumentException:\n"; err += "ClassLoader to load this class (TeXFormulaParser): " + this.getClass().getClassLoader() + "\n"; for (Class cl : argClasses) { err += "Created class: " + cl + " loaded with the ClassLoader: " + cl.getClassLoader() + "\n"; } for (Object obj : argValues) { err += "Created object: " + obj + "\n"; } throw new XMLResourceParseException( "Error creating the temporary command '" + name + "' while constructing the predefined command '" + formulaName + "'!\n" + err); } catch (Exception e) { throw new XMLResourceParseException( "Error creating the temporary command '" + name + "' while constructing the predefined command '" + formulaName + "'!\n" + e.toString()); } } } private class FloatValueParser implements ArgumentValueParser { FloatValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { checkNullValue(value, type); try { return new Float(Float.parseFloat(value)); } catch (NumberFormatException e) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "has an invalid '" + type + "'-value : '" + value + "'!", e); } } } private class CharValueParser implements ArgumentValueParser { CharValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { checkNullValue(value, type); if (value.length() == 1) { return new Character(value.charAt(0)); } else { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "must have a value that consists of exactly 1 character!"); } } } private class BooleanValueParser implements ArgumentValueParser { BooleanValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { checkNullValue(value, type); if ("true".equals(value)) { return Boolean.TRUE; } else if ("false".equals(value)) { return Boolean.FALSE; } else { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "has an invalid '" + type + "'-value : '" + value + "'!"); } } } private class IntValueParser implements ArgumentValueParser { IntValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { checkNullValue(value, type); try { int val = Integer.parseInt(value); return new Float(val); } catch (NumberFormatException e) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "has an invalid '" + type + "'-value : '" + value + "'!", e); } } } private class ReturnParser implements ActionParser { ReturnParser () { // avoids creation of special accessor type } public void parse(Element el) throws ResourceParseException { // get required string attribute String name = getAttrValueAndCheckIfNotNull("name", el); Object res = type == COMMAND ? tempCommands.get(name) : tempFormulas.get(name); if (res == null) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, RETURN_EL, "name", "contains an unknown temporary TeXFormula variable name '" + name + "' for the predefined TeXFormula '" + formulaName + "'!"); } else { result = res; } } } private class StringValueParser implements ArgumentValueParser { StringValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { return value; } } private class TeXFormulaValueParser implements ArgumentValueParser { TeXFormulaValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { if (value == null) {// null pointer argument return null; } else { Object formula = tempFormulas.get(value); if (formula == null) {// unknown temporary TeXFormula! throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "has an unknown temporary TeXFormula name as value : '" + value + "'!"); } else { return (TeXFormula) formula; } } } } private class TeXConstantsValueParser implements ArgumentValueParser { TeXConstantsValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { checkNullValue(value, type); try { // get constant value (if present) int constant = TeXConstants.class.getDeclaredField(value).getInt( null); // return constant integer value return Integer.valueOf(constant); } catch (Exception e) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "has an unknown constant name as value : '" + value + "'!", e); } } } private class ColorConstantValueParser implements ArgumentValueParser { ColorConstantValueParser () { // avoids creation of special accessor type } public Object parseValue(String value, String type) throws ResourceParseException { checkNullValue(value, type); try { // return Color constant (if present) return Color.class.getDeclaredField(value).get(null); } catch (Exception e) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "has an unknown color constant name as value : '" + value + "'!", e); } } } private static final String ARG_VAL_ATTR = "value", RETURN_EL = "Return", ARG_OBJ_ATTR = "formula"; private static Map> classMappings = new HashMap>(); private final Map argValueParsers = new HashMap(); private final Map actionParsers = new HashMap(); private final Map tempFormulas = new HashMap(); private final Map tempCommands = new HashMap(); private Object result = new Object(); private final String formulaName; private final Element formula; private static final int COMMAND = 0, TEXFORMULA = 1; private int type; static { // string-to-class mappings classMappings.put("TeXConstants", int.class); // all integer constants classMappings.put("TeXFormula", TeXFormula.class); classMappings.put("String", String.class); classMappings.put("float", float.class); classMappings.put("int", int.class); classMappings.put("boolean", boolean.class); classMappings.put("char", char.class); classMappings.put("ColorConstant", Color.class); } public TeXFormulaParser(String name, Element formula, String type) { formulaName = name; this.formula = formula; this.type = "Command".equals(type) ? COMMAND : TEXFORMULA; // action parsers if ("Command".equals(type)) actionParsers.put("CreateCommand", new CreateCommandParser()); else actionParsers.put("CreateTeXFormula", new CreateTeXFormulaParser()); actionParsers.put("MethodInvocation", new MethodInvocationParser()); actionParsers.put(RETURN_EL, new ReturnParser()); // argument value parsers argValueParsers.put("TeXConstants", new TeXConstantsValueParser()); argValueParsers.put("TeXFormula", new TeXFormulaValueParser()); argValueParsers.put("String", new StringValueParser()); argValueParsers.put("float", new FloatValueParser()); argValueParsers.put("int", new IntValueParser()); argValueParsers.put("boolean", new BooleanValueParser()); argValueParsers.put("char", new CharValueParser()); argValueParsers.put("ColorConstant", new ColorConstantValueParser()); } public Object parse() throws ResourceParseException { // parse and execute actions NodeList list = formula.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if (node.getNodeType() != Node.TEXT_NODE) { Element el = (Element)node; ActionParser p = actionParsers.get(el.getTagName()); if (p != null) {// ignore unknown elements p.parse(el); } } } return result; } private Object[] getArgumentValues(NodeList args) { Object[] res = new Object[args.getLength()]; int i = 0; for (int j = 0; j < args.getLength(); j++) { Element arg = (Element)args.item(j); // get required string attribute String type = getAttrValueAndCheckIfNotNull("type", arg); // get value, not present means a nullpointer String value = arg.getAttribute(ARG_VAL_ATTR); // parse value, hashtable will certainly contain a parser for the class type, // because the class types have been checked before! res[i] = argValueParsers.get(type).parseValue(value, type); i++; } return res; } private static Class[] getArgumentClasses(NodeList args) throws ResourceParseException { Class[] res = new Class[args.getLength()]; int i = 0; for (int j = 0; j < args.getLength(); j++) { Element arg = (Element)args.item(j); // get required string attribute String type = getAttrValueAndCheckIfNotNull("type", arg); // find class mapping Object cl = classMappings.get(type); if (cl == null) {// no class mapping found throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", "type", "has an invalid class name value!"); } else { res[i] = (Class) cl; } i++; } return res; } private static void checkNullValue(String value, String type) throws ResourceParseException { if (value.equals("")) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, "Argument", ARG_VAL_ATTR, "is required for an argument of type '" + type + "'!"); } } private static String getAttrValueAndCheckIfNotNull(String attrName, Element element) throws ResourceParseException { String attrValue = element.getAttribute(attrName); if (attrValue.equals("")) { throw new XMLResourceParseException( PredefinedTeXFormulaParser.RESOURCE_NAME, element.getTagName(), attrName, null); } return attrValue; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXFormulaSettingsParser.java000066400000000000000000000152351326546671500335600ustar00rootroot00000000000000/* TeXFormulaSettingsParser.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.io.InputStream; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /** * Parses predefined TeXFormula's from an XML-file. */ public class TeXFormulaSettingsParser { public static final String RESOURCE_NAME = "TeXFormulaSettings.xml"; public static final String CHARTODEL_MAPPING_EL = "Map"; private Element root; public TeXFormulaSettingsParser() throws ResourceParseException { this(GlueSettingsParser.class.getResourceAsStream(RESOURCE_NAME), RESOURCE_NAME); } public TeXFormulaSettingsParser(InputStream file, String name) throws ResourceParseException { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); root = factory.newDocumentBuilder().parse(file).getDocumentElement(); } catch (Exception e) { // JDOMException or IOException throw new XMLResourceParseException(name, e); } } public void parseSymbolToFormulaMappings(String[] mappings, String[] textMappings) throws ResourceParseException { Element charToSymbol = (Element)root.getElementsByTagName("CharacterToFormulaMappings").item(0); if (charToSymbol != null) // element present addFormulaToMap(charToSymbol.getElementsByTagName("Map"), mappings, textMappings); } public void parseSymbolMappings(String[] mappings, String[] textMappings) throws ResourceParseException { Element charToSymbol = (Element)root.getElementsByTagName("CharacterToSymbolMappings").item(0); if (charToSymbol != null) // element present addToMap(charToSymbol.getElementsByTagName("Map"), mappings, textMappings); } private static void addToMap(NodeList mapList, String[] tableMath, String[] tableText) throws ResourceParseException { for (int i = 0; i < mapList.getLength(); i++) { Element map = (Element) mapList.item(i); String ch = map.getAttribute("char"); String symbol = map.getAttribute("symbol"); String text = map.getAttribute("text"); // both attributes are required! if (ch.equals("")) { throw new XMLResourceParseException(RESOURCE_NAME, map.getTagName(), "char", null); } else if (symbol.equals("")) { throw new XMLResourceParseException(RESOURCE_NAME, map.getTagName(), "symbol", null); } if (ch.length() == 1) {// valid element found tableMath[ch.charAt(0)] = symbol; } else { // only single-character mappings allowed, ignore others throw new XMLResourceParseException(RESOURCE_NAME, map.getTagName(), "char", "must have a value that contains exactly 1 character!"); } if (tableText != null && !text.equals("")) { tableText[ch.charAt(0)] = text; } } } private static void addFormulaToMap(NodeList mapList, String[] tableMath, String[] tableText) throws ResourceParseException { for (int i = 0; i < mapList.getLength(); i++) { Element map = (Element)mapList.item(i); String ch = map.getAttribute("char"); String formula = map.getAttribute("formula"); String text = map.getAttribute("text"); // both attributes are required! if (ch.equals("")) throw new XMLResourceParseException(RESOURCE_NAME, map.getTagName(), "char", null); else if (formula.equals("")) throw new XMLResourceParseException(RESOURCE_NAME, map.getTagName(), "formula", null); if (ch.length() == 1) {// valid element found tableMath[ch.charAt(0)] = formula; } else // only single-character mappings allowed, ignore others throw new XMLResourceParseException(RESOURCE_NAME, map.getTagName(), "char", "must have a value that contains exactly 1 character!"); if (tableText != null && !text.equals("")) { tableText[ch.charAt(0)] = text; } } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXIcon.java000066400000000000000000000217651326546671500301520ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXParser.java000066400000000000000000001530351326546671500305120ustar00rootroot00000000000000/* TeXParser.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/p/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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.awt.Color; import java.util.HashSet; import java.util.Set; /** * This class implements a parser for LaTeX' formulas. */ public class TeXParser { TeXFormula formula; private StringBuffer parseString; private int pos; private int spos; private int line; private int col; private int len; private int group; private boolean insertion; private int atIsLetter; private boolean arrayMode; private boolean ignoreWhiteSpace = true; private boolean isPartial; // the escape character private static final char ESCAPE = '\\'; // grouping characters (for parsing) private static final char L_GROUP = '{'; private static final char R_GROUP = '}'; private static final char L_BRACK = '['; private static final char R_BRACK = ']'; private static final char DOLLAR = '$'; private static final char DQUOTE = '\"'; // Percent char for comments private static final char PERCENT = '%'; // script characters (for parsing) private static final char SUB_SCRIPT = '_'; private static final char SUPER_SCRIPT = '^'; private static final char PRIME = '\''; private static final char BACKPRIME = '\u2035'; private static final char DEGRE = '\u00B0'; private static final char SUPZERO = '\u2070'; private static final char SUPONE = '\u00B9'; private static final char SUPTWO = '\u00B2'; private static final char SUPTHREE = '\u00B3'; private static final char SUPFOUR = '\u2074'; private static final char SUPFIVE = '\u2075'; private static final char SUPSIX = '\u2076'; private static final char SUPSEVEN = '\u2077'; private static final char SUPEIGHT = '\u2078'; private static final char SUPNINE = '\u2079'; private static final char SUPPLUS = '\u207A'; private static final char SUPMINUS = '\u207B'; private static final char SUPEQUAL = '\u207C'; private static final char SUPLPAR = '\u207D'; private static final char SUPRPAR = '\u207E'; private static final char SUPN = '\u207F'; private static final char SUBZERO = '\u2080'; private static final char SUBONE = '\u2081'; private static final char SUBTWO = '\u2082'; private static final char SUBTHREE = '\u2083'; private static final char SUBFOUR = '\u2084'; private static final char SUBFIVE = '\u2085'; private static final char SUBSIX = '\u2086'; private static final char SUBSEVEN = '\u2087'; private static final char SUBEIGHT = '\u2088'; private static final char SUBNINE = '\u2089'; private static final char SUBPLUS = '\u208A'; private static final char SUBMINUS = '\u208B'; private static final char SUBEQUAL = '\u208C'; private static final char SUBLPAR = '\u208D'; private static final char SUBRPAR = '\u208E'; protected static boolean isLoading = false; private static final Set unparsedContents = new HashSet(6); static { unparsedContents.add("jlmDynamic"); unparsedContents.add("jlmText"); unparsedContents.add("jlmTextit"); unparsedContents.add("jlmTextbf"); unparsedContents.add("jlmTextitbf"); unparsedContents.add("jlmExternalFont"); } /** * Create a new TeXParser * * @param parseString the string to be parsed * @param formula the formula where to put the atoms * @throws ParseException if the string could not be parsed correctly */ public TeXParser(String parseString, TeXFormula formula) { this(parseString, formula, true); } /** * Create a new TeXParser * * @param isPartial if true certains exceptions are not thrown * @param parseString the string to be parsed * @param formula the formula where to put the atoms * @throws ParseException if the string could not be parsed correctly */ public TeXParser(boolean isPartial, String parseString, TeXFormula formula) { this(parseString, formula, false); this.isPartial = isPartial; firstpass(); } /** * Create a new TeXParser with or without a first pass * * @param isPartial if true certains exceptions are not thrown * @param parseString the string to be parsed * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @throws ParseException if the string could not be parsed correctly */ public TeXParser(boolean isPartial, String parseString, TeXFormula formula, boolean firstpass) { this.formula = formula; this.isPartial = isPartial; if (parseString != null) { this.parseString = new StringBuffer(parseString); this.len = parseString.length(); this.pos = 0; if (firstpass) { firstpass(); } } else { this.parseString = null; this.pos = 0; this.len = 0; } } /** * Create a new TeXParser with or without a first pass * * @param parseString the string to be parsed * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @throws ParseException if the string could not be parsed correctly */ public TeXParser(String parseString, TeXFormula formula, boolean firstpass) { this(false, parseString, formula, firstpass); } /** * Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created. * * @param isPartial if true certains exceptions are not thrown * @param parseString the string to be parsed * @param aoa an ArrayOfAtoms where to put the elements * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @throws ParseException if the string could not be parsed correctly */ public TeXParser(boolean isPartial, String parseString, ArrayOfAtoms aoa, boolean firstpass) { this(isPartial, parseString, (TeXFormula) aoa, firstpass); arrayMode = true; } /** * Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created. * * @param isPartial if true certains exceptions are not thrown * @param parseString the string to be parsed * @param aoa an ArrayOfAtoms where to put the elements * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @throws ParseException if the string could not be parsed correctly */ public TeXParser(boolean isPartial, String parseString, ArrayOfAtoms aoa, boolean firstpass, boolean space) { this(isPartial, parseString, (TeXFormula) aoa, firstpass, space); arrayMode = true; } /** * Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created. * * @param parseString the string to be parsed * @param aoa an ArrayOfAtoms where to put the elements * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @throws ParseException if the string could not be parsed correctly */ public TeXParser(String parseString, ArrayOfAtoms aoa, boolean firstpass) { this(false, parseString, (TeXFormula) aoa, firstpass); } /** * Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command * * @param isPartial if true certains exceptions are not thrown * @param parseString the string to be parsed * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @param space a boolean to indicate if the parser must ignore or not the white space * @throws ParseException if the string could not be parsed correctly */ public TeXParser(boolean isPartial, String parseString, TeXFormula formula, boolean firstpass, boolean space) { this(isPartial, parseString, formula, firstpass); this.ignoreWhiteSpace = space; } /** * Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command * * @param parseString the string to be parsed * @param firstpass a boolean to indicate if the parser must replace the user-defined macros by their content * @param space a boolean to indicate if the parser must ignore or not the white space * @throws ParseException if the string could not be parsed correctly */ public TeXParser(String parseString, TeXFormula formula, boolean firstpass, boolean space) { this(false, parseString, formula, firstpass); this.ignoreWhiteSpace = space; } /** * Reset the parser with a new latex expression */ public void reset(String latex) { parseString = new StringBuffer(latex); len = parseString.length(); formula.root = null; pos = 0; spos = 0; line = 0; col = 0; group = 0; insertion = false; atIsLetter = 0; arrayMode = false; ignoreWhiteSpace = true; firstpass(); } /** Return true if we get a partial formula */ public boolean getIsPartial() { return isPartial; } /** Get the number of the current line */ public int getLine() { return line; } /** Get the number of the current column */ public int getCol() { return pos - col - 1; } /** Get the last atom of the current formula */ public Atom getLastAtom() { Atom at = formula.root; if (at instanceof RowAtom) return ((RowAtom)at).getLastAtom(); formula.root = null; return at; } /** Get the atom represented by the current formula */ public Atom getFormulaAtom() { Atom at = formula.root; formula.root = null; return at; } /** Put an atom in the current formula */ public void addAtom(Atom at) { formula.add(at); } /** Indicate if the character @ can be used in the command's name */ public void makeAtLetter() { atIsLetter++; } /** Indicate if the character @ can be used in the command's name */ public void makeAtOther() { atIsLetter--; } /** Return a boolean indicating if the character @ is considered as a letter or not */ public boolean isAtLetter() { return (atIsLetter != 0); } /** Return a boolean indicating if the parser is used to parse an array or not */ public boolean isArrayMode() { return arrayMode; } public void setArrayMode(boolean arrayMode) { this.arrayMode = arrayMode; } /** Return a boolean indicating if the parser must ignore white spaces */ public boolean isIgnoreWhiteSpace() { return ignoreWhiteSpace; } /** Return a boolean indicating if the parser is in math mode */ public boolean isMathMode() { return ignoreWhiteSpace; } /** Return the current position in the parsed string */ public int getPos() { return pos; } /** Rewind the current parsed string * @param n the number of character to be rewinded * @return the new position in the parsed string */ public int rewind(int n) { pos -= n; return pos; } public String getStringFromCurrentPos() { return parseString.substring(pos); } public void finish() { pos = parseString.length(); } /** Add a new row when the parser is in array mode * @throws ParseException if the parser is not in array mode */ public void addRow() throws ParseException { if (!arrayMode) throw new ParseException("You can add a row only in array mode !"); ((ArrayOfAtoms)formula).addRow(); } private void firstpass() throws ParseException { if (len != 0) { char ch; String com; int spos; String[] args; MacroInfo mac; while (pos < len) { ch = parseString.charAt(pos); switch (ch) { case ESCAPE : spos = pos; com = getCommand(); if ("newcommand".equals(com) || "renewcommand".equals(com)) { args = getOptsArgs(2, 2); mac = MacroInfo.Commands.get(com); try { mac.invoke(this, args); } catch (ParseException e) { if (!isPartial) { throw e; } } parseString.delete(spos, pos); len = parseString.length(); pos = spos; } else if (NewCommandMacro.isMacro(com)) { mac = MacroInfo.Commands.get(com); args = getOptsArgs(mac.nbArgs, mac.hasOptions ? 1 : 0); args[0] = com; try { parseString.replace(spos, pos, (String) mac.invoke(this, args)); } catch (ParseException e) { if (!isPartial) { throw e; } else { spos += com.length() + 1; } } len = parseString.length(); pos = spos; } else if ("begin".equals(com)) { args = getOptsArgs(1, 0); mac = MacroInfo.Commands.get(args[1] + "@env"); if (mac == null) { if (!isPartial) { throw new ParseException("Unknown environment: " + args[1] + " at position " + getLine() + ":" + getCol()); } } else { try { String[] optarg = getOptsArgs(mac.nbArgs - 1, 0); String grp = getGroup("\\begin{" + args[1] + "}", "\\end{" + args[1] + "}"); String expr = "{\\makeatletter \\" + args[1] + "@env"; for (int i = 1; i <= mac.nbArgs - 1; i++) expr += "{" + optarg[i] + "}"; expr += "{" + grp + "}\\makeatother}"; parseString.replace(spos, pos, expr); len = parseString.length(); pos = spos; } catch (ParseException e) { if (!isPartial) { throw e; } } } } else if ("makeatletter".equals(com)) atIsLetter++; else if ("makeatother".equals(com)) atIsLetter--; else if (unparsedContents.contains(com)) { getOptsArgs(1, 0); } break; case PERCENT : spos = pos++; char chr; while (pos < len) { chr = parseString.charAt(pos++); if (chr == '\r' || chr == '\n') { break; } } if (pos < len) { pos--; } parseString.replace(spos, pos, ""); len = parseString.length(); pos = spos; break; case DEGRE : parseString.replace(pos, pos + 1, "^{\\circ}"); len = parseString.length(); pos++; break; case SUPTWO : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{2}"); len = parseString.length(); pos++; break; case SUPTHREE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{3}"); len = parseString.length(); pos++; break; case SUPONE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{1}"); len = parseString.length(); pos++; break; case SUPZERO : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{0}"); len = parseString.length(); pos++; break; case SUPFOUR : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{4}"); len = parseString.length(); pos++; break; case SUPFIVE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{5}"); len = parseString.length(); pos++; break; case SUPSIX : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{6}"); len = parseString.length(); pos++; break; case SUPSEVEN : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{7}"); len = parseString.length(); pos++; break; case SUPEIGHT : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{8}"); len = parseString.length(); pos++; break; case SUPNINE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{9}"); len = parseString.length(); pos++; break; case SUPPLUS : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{+}"); len = parseString.length(); pos++; break; case SUPMINUS : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{-}"); len = parseString.length(); pos++; break; case SUPEQUAL : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{=}"); len = parseString.length(); pos++; break; case SUPLPAR : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{(}"); len = parseString.length(); pos++; break; case SUPRPAR : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{)}"); len = parseString.length(); pos++; break; case SUPN : parseString.replace(pos, pos + 1, "\\jlatexmathcumsup{n}"); len = parseString.length(); pos++; break; case SUBTWO : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{2}"); len = parseString.length(); pos++; break; case SUBTHREE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{3}"); len = parseString.length(); pos++; break; case SUBONE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{1}"); len = parseString.length(); pos++; break; case SUBZERO : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{0}"); len = parseString.length(); pos++; break; case SUBFOUR : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{4}"); len = parseString.length(); pos++; break; case SUBFIVE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{5}"); len = parseString.length(); pos++; break; case SUBSIX : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{6}"); len = parseString.length(); pos++; break; case SUBSEVEN : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{7}"); len = parseString.length(); pos++; break; case SUBEIGHT : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{8}"); len = parseString.length(); pos++; break; case SUBNINE : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{9}"); len = parseString.length(); pos++; break; case SUBPLUS : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{+}"); len = parseString.length(); pos++; break; case SUBMINUS : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{-}"); len = parseString.length(); pos++; break; case SUBEQUAL : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{=}"); len = parseString.length(); pos++; break; case SUBLPAR : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{(}"); len = parseString.length(); pos++; break; case SUBRPAR : parseString.replace(pos, pos + 1, "\\jlatexmathcumsub{)}"); len = parseString.length(); pos++; break; default : pos++; } } pos = 0; len = parseString.length(); } } /** Parse the input string * @throws ParseException if an error is encountered during parsing */ public void parse() throws ParseException { if (len != 0) { char ch; while (pos < len) { ch = parseString.charAt(pos); switch (ch) { case '\n' : line++; col = pos; case '\t' : case '\r' : pos++; break; case ' ' : pos++; if (!ignoreWhiteSpace) {// We are in a mbox formula.add(new SpaceAtom()); formula.add(new BreakMarkAtom()); while (pos < len) { ch = parseString.charAt(pos); if (ch != ' ' || ch != '\t' || ch != '\r') break; pos++; } } break; case DOLLAR : pos++; if (!ignoreWhiteSpace) {// We are in a mbox int style = TeXConstants.STYLE_TEXT; boolean doubleDollar = false; if (parseString.charAt(pos) == DOLLAR) { style = TeXConstants.STYLE_DISPLAY; doubleDollar = true; pos++; } formula.add(new MathAtom(new TeXFormula(this, getDollarGroup(DOLLAR), false).root, style)); if (doubleDollar) { if (parseString.charAt(pos) == DOLLAR) { pos++; } } } break; case ESCAPE : Atom at = processEscape(); formula.add(at); if (arrayMode && at instanceof HlineAtom) { ((ArrayOfAtoms) formula).addRow(); } if (insertion) { insertion = false; } break; case L_GROUP : Atom atom = getArgument(); if (atom != null) { atom.type = TeXConstants.TYPE_ORDINARY; } formula.add(atom); break; case R_GROUP : group--; pos++; if (group == -1) throw new ParseException("Found a closing '" + R_GROUP + "' without an opening '" + L_GROUP + "'!"); return; case SUPER_SCRIPT : formula.add(getScripts(ch)); break; case SUB_SCRIPT : if (ignoreWhiteSpace) { formula.add(getScripts(ch)); } else { formula.add(new UnderscoreAtom()); pos++; } break; case '&' : if (!arrayMode) throw new ParseException("Character '&' is only available in array mode !"); ((ArrayOfAtoms) formula).addCol(); pos++; break; case '~' : formula.add(new SpaceAtom()); pos++; break; case PRIME : if (ignoreWhiteSpace) { formula.add(new CumulativeScriptsAtom(getLastAtom(), null, SymbolAtom.get("prime"))); } else { formula.add(convertCharacter(PRIME, true)); } pos++; break; case BACKPRIME : if (ignoreWhiteSpace) { formula.add(new CumulativeScriptsAtom(getLastAtom(), null, SymbolAtom.get("backprime"))); } else { formula.add(convertCharacter(BACKPRIME, true)); } pos++; break; case DQUOTE : if (ignoreWhiteSpace) { formula.add(new CumulativeScriptsAtom(getLastAtom(), null, SymbolAtom.get("prime"))); formula.add(new CumulativeScriptsAtom(getLastAtom(), null, SymbolAtom.get("prime"))); } else { formula.add(convertCharacter(PRIME, true)); formula.add(convertCharacter(PRIME, true)); } pos++; break; default : formula.add(convertCharacter(ch, false)); pos++; } } } if (formula.root == null && !arrayMode) { formula.add(new EmptyAtom()); } } private Atom getScripts(char f) throws ParseException { pos++; Atom first = getArgument(); Atom second = null; char s = '\0'; if (pos < len) s = parseString.charAt(pos); if (f == SUPER_SCRIPT && s == SUPER_SCRIPT) { second = first; first = null; } else if (f == SUB_SCRIPT && s == SUPER_SCRIPT) { pos++; second = getArgument(); } else if (f == SUPER_SCRIPT && s == SUB_SCRIPT) { pos++; second = first; first = getArgument(); } else if (f == SUPER_SCRIPT && s != SUB_SCRIPT) { second = first; first = null; } Atom at; if (formula.root instanceof RowAtom) { at = ((RowAtom)formula.root).getLastAtom(); } else if (formula.root == null) { at = new PhantomAtom(new CharAtom('M', "mathnormal"), false, true, true); } else { at = formula.root; formula.root = null; } if (at.getRightType() == TeXConstants.TYPE_BIG_OPERATOR) return new BigOperatorAtom(at, first, second); else if (at instanceof OverUnderDelimiter) { if (((OverUnderDelimiter)at).isOver()) { if (second != null) { ((OverUnderDelimiter)at).addScript(second); return new ScriptsAtom(at, first, null); } } else if (first != null) { ((OverUnderDelimiter)at).addScript(first); return new ScriptsAtom(at, null, second); } } return new ScriptsAtom(at, first, second); } /** Get the contents between two delimiters * @param openclose the opening and closing character (such $) * @return the enclosed contents * @throws ParseException if the contents are badly enclosed */ public String getDollarGroup(char openclose) throws ParseException { int spos = pos; char ch; do { ch = parseString.charAt(pos++); if (ch == ESCAPE) { pos++; } } while (pos < len && ch != openclose); if (ch == openclose) { return parseString.substring(spos, pos - 1); } else { return parseString.substring(spos, pos); } } /** Get the contents between two delimiters * @param open the opening character * @param close the closing character * @return the enclosed contents * @throws ParseException if the contents are badly enclosed */ public String getGroup(char open, char close) throws ParseException { if (pos == len) return null; int group, spos; char ch = parseString.charAt(pos); if (pos < len && ch == open) { group = 1; spos = pos; while (pos < len - 1 && group != 0) { pos++; ch = parseString.charAt(pos); if (ch == open) group++; else if (ch == close) group--; else if (ch == ESCAPE && pos != len - 1) pos++; } pos++; if (group != 0) { return parseString.substring(spos + 1, pos); } return parseString.substring(spos + 1, pos - 1); } else { throw new ParseException("missing '" + open + "'!"); } } /** Get the contents between two strings as in \begin{foo}...\end{foo} * @param open the opening string * @param close the closing string * @return the enclosed contents * @throws ParseException if the contents are badly enclosed */ public String getGroup(String open, String close) throws ParseException { int group = 1; int ol = open.length(), cl = close.length(); boolean lastO = isValidCharacterInCommand(open.charAt(ol - 1)); boolean lastC = isValidCharacterInCommand(close.charAt(cl - 1)); int oc = 0, cc = 0; int startC = 0; char prev = '\0'; StringBuffer buf = new StringBuffer(); while (pos < len && group != 0) { char c = parseString.charAt(pos); char c1; if (prev != ESCAPE && c == ' ') {//Trick to handle case where close == "\end {foo}" while (pos < len && parseString.charAt(pos++) == ' ') { buf.append(' '); } c = parseString.charAt(--pos); if (isValidCharacterInCommand(prev) && isValidCharacterInCommand(c)) { oc = cc = 0; } } if (c == open.charAt(oc)) oc++; else oc = 0; if (c == close.charAt(cc)) { if (cc == 0) { startC = pos; } cc++; } else cc = 0; if (pos + 1 < len) { c1 = parseString.charAt(pos + 1); if (oc == ol) { if (!lastO || !isValidCharacterInCommand(c1)) { group++; } oc = 0; } if (cc == cl) { if (!lastC || !isValidCharacterInCommand(c1)) { group--; } cc = 0; } } else { if (oc == ol) { group++; oc = 0; } if (cc == cl) { group--; cc = 0; } } prev = c; buf.append(c); pos++; } if (group != 0) { if (isPartial) { return buf.toString(); } throw new ParseException("The token " + open + " must be closed by " + close); } return buf.substring(0, buf.length() - pos + startC); } /** Get the argument of a command in his atomic format * @return the corresponding atom * @throws ParseException if the argument is incorrect */ public Atom getArgument() throws ParseException { skipWhiteSpace(); char ch; if (pos < len) { ch = parseString.charAt(pos); } else { return new EmptyAtom(); } if (ch == L_GROUP) { TeXFormula tf = new TeXFormula(); TeXFormula sformula = this.formula; this.formula = tf; pos++; group++; parse(); this.formula = sformula; if (this.formula.root == null) { RowAtom at = new RowAtom(); at.add(tf.root); return at; } return tf.root; } if (ch == ESCAPE) { Atom at = processEscape(); if (insertion) { insertion = false; return getArgument(); } return at; } Atom at = convertCharacter(ch, true); pos++; return at; } public String getOverArgument() throws ParseException { if (pos == len) return null; int ogroup = 1, spos; char ch = '\0'; spos = pos; while (pos < len && ogroup != 0) { ch = parseString.charAt(pos); switch (ch) { case L_GROUP : ogroup++; break; case '&' : /* if a & is encountered at the same level as \over we must break the argument */ if (ogroup == 1) { ogroup--; } break; case R_GROUP : ogroup--; break; case ESCAPE : pos++; /* if a \\ or a \cr is encountered at the same level as \over we must break the argument */ if (pos < len && parseString.charAt(pos) == '\\' && ogroup == 1) { ogroup--; pos--; } else if (pos < len - 1 && parseString.charAt(pos) == 'c' && parseString.charAt(pos + 1) == 'r' && ogroup == 1) { ogroup--; pos--; } break; } pos++; } if (ogroup >= 2) // end of string reached, but not processed properly throw new ParseException("Illegal end, missing '}' !"); String str; if (ogroup == 0) { str = parseString.substring(spos, pos - 1); } else { str = parseString.substring(spos, pos); ch = '\0'; } if (ch == '&' || ch == '\\' || ch == R_GROUP) pos--; return str; } public float[] getLength() throws ParseException { if (pos == len) return null; int spos; char ch = '\0'; skipWhiteSpace(); spos = pos; while (pos < len && ch != ' ') { ch = parseString.charAt(pos++); } skipWhiteSpace(); return SpaceAtom.getLength(parseString.substring(spos, pos - 1)); } /** Convert a character in the corresponding atom in using the file TeXFormulaSettings.xml for non-alphanumeric characters * @param c the character to be converted * @return the corresponding atom * @throws ParseException if the character is unknown */ public Atom convertCharacter(char c, boolean oneChar) throws ParseException { if (ignoreWhiteSpace) {// The Unicode Greek letters in math mode are not drawn with the Greek font if (c >= 945 && c <= 969) { return SymbolAtom.get(TeXFormula.symbolMappings[c]); } else if (c >= 913 && c <= 937) { return new TeXFormula(TeXFormula.symbolFormulaMappings[c]).root; } } c = convertToRomanNumber(c); if (((c < '0' || c > '9') && (c < 'a' || c > 'z') && (c < 'A' || c > 'Z'))) { Character.UnicodeBlock block = Character.UnicodeBlock.of(c); if (!isLoading && !DefaultTeXFont.loadedAlphabets.contains(block)) { DefaultTeXFont.addAlphabet(DefaultTeXFont.registeredAlphabets.get(block)); } String symbolName = TeXFormula.symbolMappings[c]; if (symbolName == null && (TeXFormula.symbolFormulaMappings == null || TeXFormula.symbolFormulaMappings[c] == null)) { TeXFormula.FontInfos fontInfos = null; boolean isLatin = Character.UnicodeBlock.BASIC_LATIN.equals(block); if ((isLatin && TeXFormula.isRegisteredBlock(Character.UnicodeBlock.BASIC_LATIN)) || !isLatin) { fontInfos = TeXFormula.getExternalFont(block); } if (fontInfos != null) { if (oneChar) { return new JavaFontRenderingAtom(Character.toString(c), fontInfos); } int start = pos++; int end = len - 1; while (pos < len) { c = parseString.charAt(pos); if (!Character.UnicodeBlock.of(c).equals(block)) { end = --pos; break; } pos++; } return new JavaFontRenderingAtom(parseString.substring(start, end + 1), fontInfos); } if (!isPartial) { throw new ParseException("Unknown character : '" + Character.toString(c) + "' (or " + ((int) c) + ")"); } else { return new ColorAtom(new RomanAtom(new TeXFormula("\\text{(Unknown char " + ((int) c) + ")}").root), null, Color.RED); } } else { if (!ignoreWhiteSpace) {// we are in text mode if (TeXFormula.symbolTextMappings[c] != null) { return SymbolAtom.get(TeXFormula.symbolTextMappings[c]).setUnicode(c); } } if (TeXFormula.symbolFormulaMappings != null && TeXFormula.symbolFormulaMappings[c] != null) { return new TeXFormula(TeXFormula.symbolFormulaMappings[c]).root; } try { return SymbolAtom.get(symbolName); } catch (SymbolNotFoundException e) { throw new ParseException("The character '" + Character.toString(c) + "' was mapped to an unknown symbol with the name '" + symbolName + "'!", e); } } } else { // alphanumeric character TeXFormula.FontInfos fontInfos = TeXFormula.externalFontMap.get(Character.UnicodeBlock.BASIC_LATIN); if (fontInfos != null) { if (oneChar) { return new JavaFontRenderingAtom(Character.toString(c), fontInfos); } int start = pos++; int end = len - 1; while (pos < len) { c = parseString.charAt(pos); if (((c < '0' || c > '9') && (c < 'a' || c > 'z') && (c < 'A' || c > 'Z'))) { end = --pos; break; } pos++; } return new JavaFontRenderingAtom(parseString.substring(start, end + 1), fontInfos); } return new CharAtom(c, formula.textStyle, ignoreWhiteSpace); } } private String getCommand() { int spos = ++pos; char ch = '\0'; while (pos < len) { ch = parseString.charAt(pos); if ((ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z') && (atIsLetter == 0 || ch != '@')) break; pos++; } if (ch == '\0') return ""; if (pos == spos) { pos++; } String com = parseString.substring(spos, pos); if ("cr".equals(com) && pos < len && parseString.charAt(pos) == ' ') { pos++; } return com; } private Atom processEscape() throws ParseException { spos = pos; String command = getCommand(); if (command.length() == 0) { return new EmptyAtom(); } if (MacroInfo.Commands.get(command) != null) return processCommands(command); try { return TeXFormula.get(command).root; } catch (FormulaNotFoundException e) { try { return SymbolAtom.get(command); } catch (SymbolNotFoundException e1) { } } // not a valid command or symbol or predefined TeXFormula found if (!isPartial) { throw new ParseException("Unknown symbol or command or predefined TeXFormula: '" + command + "'"); } else { return new ColorAtom(new RomanAtom(new TeXFormula("\\backslash " + command).root), null, Color.RED); } } private void insert(int beg, int end, String formula) { parseString.replace(beg, end, formula); len = parseString.length(); pos = beg; insertion = true; } /** Get the arguments ant the options of a command * @param nbArgs the number of arguments of the command * @param opts must be 1 if the options are found before the first argument and must be 2 if they must be found before the second argument * @return an array containing arguments and at the end the options are put */ /* Should be improved */ public String[] getOptsArgs(int nbArgs, int opts) { //A maximum of 10 options can be passed to a command String[] args = new String[nbArgs + 10 + 1]; if (nbArgs != 0) { //We get the options just after the command name if (opts == 1) { int j = nbArgs + 1; try { for (; j < nbArgs + 11; j++) { skipWhiteSpace(); args[j] = getGroup(L_BRACK, R_BRACK); } } catch (ParseException e) { args[j] = null; } } //We get the first argument skipWhiteSpace(); try { args[1] = getGroup(L_GROUP, R_GROUP); } catch (ParseException e) { if (parseString.charAt(pos) != '\\') { args[1] = "" + parseString.charAt(pos); pos++; } else args[1] = getCommandWithArgs(getCommand()); } //We get the options after the first argument if (opts == 2) { int j = nbArgs + 1; try { for (; j < nbArgs + 11; j++) { skipWhiteSpace(); args[j] = getGroup(L_BRACK, R_BRACK); } } catch (ParseException e) { args[j] = null; } } //We get the next arguments for (int i = 2; i <= nbArgs; i++) { skipWhiteSpace(); try { args[i] = getGroup(L_GROUP, R_GROUP); } catch (ParseException e) { if (parseString.charAt(pos) != '\\') { args[i] = "" + parseString.charAt(pos); pos++; } else { args[i] = getCommandWithArgs(getCommand()); } } } if (ignoreWhiteSpace) { skipWhiteSpace(); } } return args; } /** * return a string with command and options and args * @param command name of command * @return * @author Juan Enrique Escobar Robles */ private String getCommandWithArgs(String command) { if (command.equals("left")) { return getGroup("\\left", "\\right"); } MacroInfo mac = MacroInfo.Commands.get(command); if (mac != null) { int mac_opts = 0; if (mac.hasOptions) { mac_opts = mac.posOpts; } String[] mac_args = getOptsArgs(mac.nbArgs, mac_opts); StringBuffer mac_arg = new StringBuffer("\\"); mac_arg.append(command); for (int j = 0; j < mac.posOpts; j++) { String arg_t = mac_args[mac.nbArgs + j + 1]; if (arg_t != null) { mac_arg.append("[").append(arg_t).append("]"); } } for (int j = 0; j < mac.nbArgs; j++) { String arg_t = mac_args[j + 1]; if (arg_t != null) { mac_arg.append("{").append(arg_t).append("}"); } } return mac_arg.toString(); } return "\\" + command; } /** * Processes the given TeX command (by parsing following command arguments * in the parse string). */ private Atom processCommands(String command) throws ParseException { MacroInfo mac = MacroInfo.Commands.get(command); int opts = 0; if (mac.hasOptions) opts = mac.posOpts; String[] args = getOptsArgs(mac.nbArgs, opts); args[0] = command; if (NewCommandMacro.isMacro(command)) { String ret = (String) mac.invoke(this, args); insert(spos, pos, ret); return null; } return (Atom) mac.invoke(this, args); } /** Test the validity of the name of a command. It must contains only alpha characters and eventually a @ if makeAtletter activated * @param com the command's name * @return the validity of the name */ public final boolean isValidName(String com) { if (com == null || "".equals(com)) { return false; } char c = '\0'; if (com.charAt(0) == '\\') { int pos = 1; int len = com.length(); while (pos < len) { c = com.charAt(pos); if (!Character.isLetter(c) && (atIsLetter == 0 || c != '@')) break; pos++; } } else { return false; } return Character.isLetter(c); } /** Test the validity of a character in a command. It must contains only alpha characters and eventually a @ if makeAtletter activated * @param com the command's name * @return the validity of the name */ public final boolean isValidCharacterInCommand(char ch) { return Character.isLetter(ch) || (atIsLetter != 0 && ch == '@'); } private final void skipWhiteSpace() { char c; while (pos < len) { c = parseString.charAt(pos); if (c != ' ' && c != '\t' && c != '\n' && c != '\r') break; if (c == '\n') { line++; col = pos; } pos++; } } /** * The aim of this method is to convert foreign number into roman ones ! */ private static char convertToRomanNumber(char c) { if (c == 0x66b) {//Arabic dot return '.'; } else if (0x660 <= c && c <= 0x669) {//Arabic return (char) (c - (char) 0x630); } else if (0x6f0 <= c && c <= 0x6f9) {//Arabic return (char) (c - (char) 0x6c0); } else if (0x966 <= c && c <= 0x96f) {//Devanagari return (char) (c - (char) 0x936); } else if (0x9e6 <= c && c <= 0x9ef) {//Bengali return (char) (c - (char) 0x9b6); } else if (0xa66 <= c && c <= 0xa6f) {//Gurmukhi return (char) (c - (char) 0xa36); } else if (0xae6 <= c && c <= 0xaef) {//Gujarati return (char) (c - (char) 0xab6); } else if (0xb66 <= c && c <= 0xb6f) {//Oriya return (char) (c - (char) 0xb36); } else if (0xc66 <= c && c <= 0xc6f) {//Telugu return (char) (c - (char) 0xc36); } else if (0xd66 <= c && c <= 0xd6f) {//Malayalam return (char) (c - (char) 0xd36); } else if (0xe50 <= c && c <= 0xe59) {//Thai return (char) (c - (char) 0xe20); } else if (0xed0 <= c && c <= 0xed9) {//Lao return (char) (c - (char) 0xea0); } else if (0xf20 <= c && c <= 0xf29) {//Tibetan return (char) (c - (char) 0xe90); } else if (0x1040 <= c && c <= 0x1049) {//Myanmar return (char) (c - (char) 0x1010); } else if (0x17e0 <= c && c <= 0x17e9) {//Khmer return (char) (c - (char) 0x17b0); } else if (0x1810 <= c && c <= 0x1819) {//Mongolian return (char) (c - (char) 0x17e0); } else if (0x1b50 <= c && c <= 0x1b59) {//Balinese return (char) (c - (char) 0x1b20); } else if (0x1bb0 <= c && c <= 0x1bb9) {//Sundanese return (char) (c - (char) 0x1b80); } else if (0x1c40 <= c && c <= 0x1c49) {//Lepcha return (char) (c - (char) 0x1c10); } else if (0x1c50 <= c && c <= 0x1c59) {//Ol Chiki return (char) (c - (char) 0x1c20); } else if (0xa8d0 <= c && c <= 0xa8d9) {//Saurashtra return (char) (c - (char) 0xa8a0); } return c; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TeXSymbolParser.java000066400000000000000000000133321326546671500316730ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.io.InputStream; import java.util.HashMap; import java.util.Map; 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TextCircledAtom.java000066400000000000000000000055141326546671500316660ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TextStyleAtom.java000066400000000000000000000053561326546671500314250ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } TextStyleMappingNotFoundException.java000066400000000000000000000054571326546671500353770ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * Signals a missing text style mapping. * * @author Kurt Vermeulen */ public class TextStyleMappingNotFoundException extends JMathTeXException { private static final long serialVersionUID = 4887043712790844966L; protected TextStyleMappingNotFoundException(String styleName) { super("No mapping found for the text style '" + styleName + "'! " + "Insert a <" + DefaultTeXFontParser.STYLE_MAPPING_EL + ">-element in '" + DefaultTeXFontParser.RESOURCE_NAME + "'."); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TtAtom.java000066400000000000000000000051651326546671500300450ustar00rootroot00000000000000/* TtAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing a typewriter atom. */ public class TtAtom extends Atom { private Atom base; public TtAtom(Atom base) { this.base = base; } public Box createBox(TeXEnvironment env) { env = env.copy(env.getTeXFont().copy()); env.getTeXFont().setTt(true); Box box = base.createBox(env); env.getTeXFont().setTt(false); return box; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/TypedAtom.java000066400000000000000000000061141326546671500305360ustar00rootroot00000000000000/* TypedAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom with an overrided lefttype and righttype. This * affects the glue inserted before and after this atom. */ public class TypedAtom extends Atom { // new lefttype and righttype private final int leftType; private final int rightType; // atom for which new types are set private final Atom atom; public TypedAtom(int leftType, int rightType, Atom atom) { this.leftType = leftType; this.rightType = rightType; this.atom = atom; this.type_limits = atom.type_limits; } public Atom getBase() { atom.type_limits = type_limits; return atom; } public Box createBox(TeXEnvironment env) { return atom.createBox(env); } public int getLeftType() { return leftType; } public int getRightType() { return rightType; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/URLAlphabetRegistration.java000066400000000000000000000076151326546671500333350ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.net.URL; import java.net.URLClassLoader; 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/UnderOverArrowAtom.java000066400000000000000000000075701326546671500324040ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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 boolean over, left = false, dble = false; public UnderOverArrowAtom(Atom base, boolean left, boolean over) { this.base = base; 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) { 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/UnderOverAtom.java000066400000000000000000000154771326546671500313760ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; 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(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/UnderlinedAtom.java000066400000000000000000000063571326546671500315530ustar00rootroot00000000000000/* UnderlinedAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing another atom with a line under it. */ class UnderlinedAtom extends Atom { // the base to be underlined private final Atom base; public UnderlinedAtom(Atom f) { base = f; type = TeXConstants.TYPE_ORDINARY; // for spacing rules } public Box createBox(TeXEnvironment env) { float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); // create formula box in same style Box b = (base == null ? new StrutBox(0, 0, 0, 0) : base.createBox(env)); // create vertical box VerticalBox vBox = new VerticalBox(); vBox.add(b); vBox.add(new StrutBox(0, 3 * drt, 0, 0)); vBox.add(new HorizontalRule(drt, b.getWidth(), 0)); // baseline vertical box = baseline box b // there's also an invisible strut of height drt under the rule vBox.setDepth(b.getDepth() + 5 * drt); vBox.setHeight(b.getHeight()); return vBox; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/UnderscoreAtom.java000066400000000000000000000054421326546671500315650ustar00rootroot00000000000000/* UnderscoreAtom.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * An atom representing an underscore. */ public class UnderscoreAtom extends Atom { public static SpaceAtom w = new SpaceAtom(TeXConstants.UNIT_EM, 0.7f, 0, 0); public static SpaceAtom s = new SpaceAtom(TeXConstants.UNIT_EM, 0.06f, 0, 0); public UnderscoreAtom() { } public Box createBox(TeXEnvironment env) { float drt = env.getTeXFont().getDefaultRuleThickness(env.getStyle()); HorizontalBox hb = new HorizontalBox(s.createBox(env)); hb.add(new HorizontalRule(drt, w.createBox(env).getWidth(), 0)); return hb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/VCenteredAtom.java000066400000000000000000000057621326546671500313400ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/VRowAtom.java000066400000000000000000000134071326546671500303510ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ /* Modified by Calixte Denizet */ package org.scilab.forge.jlatexmath; import java.util.LinkedList; 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; protected boolean vtop = false; protected int halign = TeXConstants.ALIGN_NONE; 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 setHalign(int halign) { this.halign = halign; } public int getHalign() { return halign; } public void setVtop(boolean vtop) { this.vtop = vtop; } public boolean getVtop() { return vtop; } 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(); if (halign != TeXConstants.ALIGN_NONE) { float maxWidth = -Float.POSITIVE_INFINITY; LinkedList boxes = new LinkedList<>(); for (ListIterator it = elements.listIterator(); it.hasNext();) { Box b = it.next().createBox(env); boxes.add(b); if (maxWidth < b.getWidth()) { maxWidth = b.getWidth(); } } Box interline = new StrutBox(0, env.getInterline(), 0, 0); // convert atoms to boxes and add to the horizontal box for (ListIterator it = boxes.listIterator(); it.hasNext();) { Box b = it.next(); vb.add(new HorizontalBox(b, maxWidth, halign)); if (addInterline && it.hasNext()) { vb.add(interline); } } } else { 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(it.next().createBox(env)); if (addInterline && it.hasNext()) { vb.add(interline); } } } vb.setShift(-raise.createBox(env).getWidth()); if (vtop) { float t = vb.getSize() == 0 ? 0 : vb.children.getFirst().getHeight(); vb.setHeight(t); vb.setDepth(vb.getDepth() + vb.getHeight() - t); } else { float t = vb.getSize() == 0 ? 0 : vb.children.getLast().getDepth(); vb.setHeight(vb.getDepth() + vb.getHeight() - t); vb.setDepth(t); } return vb; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/VdotsAtom.java000066400000000000000000000054511326546671500305530ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/VerticalBox.java000066400000000000000000000114541326546671500310550ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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.MAX_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 = it.previous().getLastFontId(); return fontId; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/VlineAtom.java000066400000000000000000000066101326546671500305270ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } WebStartAlphabetRegistration.java000066400000000000000000000064741326546671500343510ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/* WebStartAlphabetRegistration.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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import org.scilab.forge.jlatexmath.cyrillic.CyrillicRegistration; import org.scilab.forge.jlatexmath.greek.GreekRegistration; public class WebStartAlphabetRegistration implements AlphabetRegistration { private Character.UnicodeBlock[] blocks; private AlphabetRegistration reg; private WebStartAlphabetRegistration(Character.UnicodeBlock[] blocks) { this.blocks = blocks; } public static void register(Character.UnicodeBlock[] blocks) { DefaultTeXFont.registerAlphabet(new WebStartAlphabetRegistration(blocks)); } public Character.UnicodeBlock[] getUnicodeBlock() { return blocks; } public Object getPackage() throws AlphabetRegistrationException { if (blocks == JLM_GREEK) { reg = new GreekRegistration(); } else if (blocks == JLM_CYRILLIC) { reg = new CyrillicRegistration(); } else { throw new AlphabetRegistrationException("Invalid Unicode Block"); } return reg; } public String getTeXFontFileName() { return reg.getTeXFontFileName(); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/XArrowAtom.java000066400000000000000000000075421326546671500307010ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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) { 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/XLeftRightArrowFactory.java000066400000000000000000000117031326546671500332130ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; /** * 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) { 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) { 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; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/XMLResourceParseException.java000066400000000000000000000071611326546671500336550ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; public class XMLResourceParseException extends ResourceParseException { private static final long serialVersionUID = 2091302779298293946L; /* * 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/cache/000077500000000000000000000000001326546671500270265ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/cache/JLaTeXMathCache.java000066400000000000000000000317041326546671500325230ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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.Reference; import java.lang.ref.ReferenceQueue; import java.lang.ref.SoftReference; import java.util.Iterator; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; 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(); } } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/cyrillic/000077500000000000000000000000001326546671500275755ustar00rootroot00000000000000CyrillicRegistration.java000066400000000000000000000052651326546671500345360ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/cyrillic/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.cyrillic; 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"; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/dynamic/000077500000000000000000000000001326546671500274075ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/dynamic/DynamicAtom.java000066400000000000000000000103371326546671500324630ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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); } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/dynamic/ExternalConverter.java000066400000000000000000000045101326546671500337240ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.dynamic; public interface ExternalConverter { public String getLaTeXString(String externalCode); } ExternalConverterFactory.java000066400000000000000000000045231326546671500352010ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/dynamic/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath.dynamic; public interface ExternalConverterFactory { public ExternalConverter getExternalConverter(); } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/greek/000077500000000000000000000000001326546671500270605ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/greek/GreekRegistration.java000066400000000000000000000034161326546671500333570ustar00rootroot00000000000000/* 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 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"; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/internal/000077500000000000000000000000001326546671500275775ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/internal/util/000077500000000000000000000000001326546671500305545ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/internal/util/Images.java000066400000000000000000000025561326546671500326340ustar00rootroot00000000000000package org.scilab.forge.jlatexmath.internal.util; import java.awt.Color; import java.awt.image.BufferedImage; public final class Images { private Images() { // prevent instantiation } public static double DISTANCE_THRESHOLD = 40; public static double distance(BufferedImage imgA, BufferedImage imgB) { // The images must be the same size. if (imgA.getWidth() == imgB.getWidth() && imgA.getHeight() == imgB.getHeight()) { int width = imgA.getWidth(); int height = imgA.getHeight(); double mse = 0; // Loop over every pixel. for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { Color ca = new Color(imgA.getRGB(x, y)); Color cb = new Color(imgB.getRGB(x, y)); double variance = sqr(ca.getRed() - cb.getRed()) // + sqr(ca.getBlue() - cb.getBlue()) // + sqr(ca.getGreen() - cb.getGreen()) // + sqr(ca.getAlpha() - cb.getAlpha()); mse += variance; } } return Math.sqrt(mse / height / width); } else { return -1; } } private static double sqr(double x) { return x * x; } } jlatexmath-1.0.7/jlatexmath/src/main/java/org/scilab/forge/jlatexmath/tcaronAtom.java000066400000000000000000000053561326546671500307460ustar00rootroot00000000000000/* 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. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ 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; } } jlatexmath-1.0.7/jlatexmath/src/main/resources/000077500000000000000000000000001326546671500215655ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/resources/META-INF/000077500000000000000000000000001326546671500227255ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/resources/META-INF/MANIFEST.MF000066400000000000000000000104471326546671500243650ustar00rootroot00000000000000 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-fontjlatexmath-1.0.7/jlatexmath/src/main/resources/org/000077500000000000000000000000001326546671500223545ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/resources/org/scilab/000077500000000000000000000000001326546671500236115ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/resources/org/scilab/forge/000077500000000000000000000000001326546671500247135ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/resources/org/scilab/forge/jlatexmath/000077500000000000000000000000001326546671500270545ustar00rootroot00000000000000jlatexmath-1.0.7/jlatexmath/src/main/resources/org/scilab/forge/jlatexmath/DefaultTeXFont.xml000066400000000000000000000155551326546671500324450ustar00rootroot00000000000000 jlatexmath-1.0.7/jlatexmath/src/main/resources/org/scilab/forge/jlatexmath/GlueSettings.xml000066400000000000000000000163421326546671500322210ustar00rootroot00000000000000