[LON-CAPA-cvs] cvs: loncom /html/adm/jsMath COPYING.txt jsMath-BaKoMa-fonts.js jsMath-autoload.html jsMath-controls.html jsMath-fallback-mac-mozilla.js jsMath-fallback-mac-msie.js jsMath-fallback-mac.js jsMath-fallback-pc.js jsMath-fallback-symbols.js jsMath-fallback-unix.js jsMath-loader.html jsMath-msie-mac.js jsMath-old-browsers.js jsMath.js /html/adm/jsMath/extensions AMSsymbols.js HTML.js boldsymbol.js double-click.js fbox.js leaders.js mathchoice.js mimeTeX.js moreArrows.js newcommand.js underset-overset.js /html/adm/jsMath/plugins autoload.js mimeTeX.js noImageFonts.js tex2math.js /html/adm/jsMath/uncompressed def.js jsMath-fallback-mac.js jsMath-fallback-pc.js jsMath-fallback-symbols.js jsMath-fallback-unix.js jsMath.js
albertel
lon-capa-cvs@mail.lon-capa.org
Mon, 27 Mar 2006 19:32:37 -0000
This is a MIME encoded message
--albertel1143487957
Content-Type: text/plain
albertel Mon Mar 27 14:32:37 2006 EDT
Added files:
/loncom/html/adm/jsMath jsMath-BaKoMa-fonts.js jsMath-autoload.html
jsMath-controls.html jsMath-loader.html
jsMath-old-browsers.js
/loncom/html/adm/jsMath/extensions AMSsymbols.js HTML.js
boldsymbol.js double-click.js
fbox.js leaders.js mathchoice.js
mimeTeX.js moreArrows.js
newcommand.js
underset-overset.js
/loncom/html/adm/jsMath/uncompressed def.js jsMath-fallback-mac.js
jsMath-fallback-pc.js
jsMath-fallback-symbols.js
jsMath-fallback-unix.js
jsMath.js
Modified files:
/loncom/html/adm/jsMath COPYING.txt jsMath-fallback-mac-mozilla.js
jsMath-fallback-mac-msie.js
jsMath-fallback-mac.js
jsMath-fallback-pc.js
jsMath-fallback-symbols.js
jsMath-fallback-unix.js jsMath-msie-mac.js
jsMath.js
/loncom/html/adm/jsMath/plugins autoload.js mimeTeX.js
noImageFonts.js tex2math.js
Log:
-jsMath 3.2
--albertel1143487957
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20060327143237.txt"
Index: loncom/html/adm/jsMath/COPYING.txt
diff -u loncom/html/adm/jsMath/COPYING.txt:1.1 loncom/html/adm/jsMath/COPYING.txt:1.2
--- loncom/html/adm/jsMath/COPYING.txt:1.1 Thu Feb 24 23:57:49 2005
+++ loncom/html/adm/jsMath/COPYING.txt Mon Mar 27 14:32:07 2006
@@ -1,340 +1,202 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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
-
- 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
-convey 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 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT 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, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision 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, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This 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 Library General
-Public License instead of this License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
Index: loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js:1.2 Wed Dec 7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js Mon Mar 27 14:32:07 2006
@@ -1,5 +1,5 @@
/*
- * jsMath-fallback-mac-mozzilla.js
+ * jsMath-fallback-mac-mozilla.js
*
* Part of the jsMath package for mathematics on the web.
*
@@ -8,19 +8,19 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
@@ -31,26 +31,28 @@
*
*/
+jsMath.Script.Start();
+
jsMath.Update.TeXfonts({
cmmi10: {
// '41': // leftharpoondown
// '43': // rightharpoondown
- '44': {c: '<SPAN STYLE="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">˓</SPAN>'},
- '45': {c: '<SPAN STYLE="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">˒</SPAN>'},
- '47': {c: '<SPAN STYLE="font-size:60%">◁</SPAN>'},
+ '44': {c: '<span style="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">˓</span>'},
+ '45': {c: '<span style="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">˒</span>'},
+ '47': {c: '<span style="font-size:60%">◁</span>'},
// '92': // natural
- '126': {c: '<SPAN STYLE="position:relative; left: .3em; top: -.7em; font-size: 50%">→</SPAN>'}
+ '126': {c: '<span style="position:relative; left: .3em; top: -.7em; font-size: 50%">→</span>'}
},
cmsy10: {
'0': {c: '–', tclass: 'normal'},
- '11': {c: '<SPAN STYLE="font-size: 70%">◯</SPAN><SPAN STYLE="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</SPAN>', tclass: 'normal'},
+ '11': {c: '<span style="font-size: 70%">◯</span><span style="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</span>', tclass: 'normal'},
'42': {c: '⥣'}, '43': {c: '⥥'},
- '48': {c: '<SPAN STYLE="font-size: 133%; margin-right: -.75em; position: relative; top:.4em">′</SPAN>', tclass: 'normal'},
- '93': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
- '104': {c: '<SPAN STYLE="position:relative; top:.15em; margin-left:-.6em">〈</SPAN>'},
- '105': {c: '<SPAN STYLE="position:relative; top:.15em; margin-right:-.6em">〉</SPAN>'},
- '109': {c: '⥣<SPAN STYLE="position:relative; top:.1em; margin-left:-1em">⥥</SPAN>'}
+ '48': {c: '<span style="font-size: 133%; margin-right: -.75em; position: relative; top:.4em">′</span>', tclass: 'normal'},
+ '93': {c: '∪<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+ '104': {c: '<span style="position:relative; top:.15em; margin-left:-.6em">〈</span>'},
+ '105': {c: '<span style="position:relative; top:.15em; margin-right:-.6em">〉</span>'},
+ '109': {c: '⥣<span style="position:relative; top:.1em; margin-left:-1em">⥥</span>'}
//, '116': // sqcup
// '117': // sqcap
// '118': // sqsubseteq
@@ -58,44 +60,44 @@
},
cmex10: {
- '10': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">〈</SPAN>'},
- '11': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">〉</SPAN>'},
+ '10': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">〈</span>'},
+ '11': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">〉</span>'},
'14': {c: '/'}, '15': {c: '\\'},
- '28': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">〈</SPAN>'},
- '29': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">〉</SPAN>'},
+ '28': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">〈</span>'},
+ '29': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">〉</span>'},
'30': {c: '/'}, '31': {c: '\\'},
- '42': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">〈</SPAN>'},
- '43': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">〉</SPAN>'},
+ '42': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">〈</span>'},
+ '43': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">〉</span>'},
'44': {c: '/'}, '45': {c: '\\'},
'46': {c: '/'}, '47': {c: '\\'},
- '68': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">〈</SPAN>'},
- '69': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">〉</SPAN>'},
+ '68': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">〈</span>'},
+ '69': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">〉</span>'},
// '70': // sqcup
// '71': // big sqcup
'72': {ic: .194}, '73': {ic: .444},
'82': {tclass: 'bigop1cx', ic: .15}, '90': {tclass: 'bigop2cx', ic:.6},
- '85': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
- '93': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'}
+ '85': {c: '∪<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+ '93': {c: '∪<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'}
}
});
-jsMath.Update.Styles({
- '.symbol': "font-family: Osaka",
- '.arrow1': "font-family: Osaka; position: relative; top: .125em; margin: -1px",
- '.arrow2': "font-family: AppleGothic; font-size: 100%; position:relative; top: .11em; margin:-1px",
- '.bigop1': "font-family: AppleGothic; font-size: 110%; position:relative; top: .9em; margin:-.05em",
- '.bigop1b': "font-family: Osaka; font-size: 140%; position: relative; top: .8em; margin:-.1em",
- '.bigop1c': "font-family: AppleGothic; font-size: 125%; position:relative; top: .85em; margin:-.3em",
- '.bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
- '.bigop2': "font-family: AppleGothic; font-size: 175%; position:relative; top: .85em; margin:-.1em",
- '.bigop2b': "font-family: Osaka; font-size: 200%; position: relative; top: .75em; margin:-.15em",
- '.bigop2c': "font-family: AppleGothic; font-size: 300%; position:relative; top: .75em; margin:-.35em",
- '.bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .7em; margin-left:-.1em; margin-right:-.2em",
- '.delim1b': "font-family: Times; font-size: 150%; position:relative; top:.8em; margin:.01em",
- '.delim2b': "font-family: Times; font-size: 210%; position:relative; top:.8em; margin:.01em",
- '.delim3b': "font-family: Times; font-size: 300%; position:relative; top:.75em; margin:.01em",
- '.delim4b': "font-family: Times; font-size: 400%; position:relative; top:.725em; margin:.01em",
+jsMath.Setup.Styles({
+ '.typeset .symbol': "font-family: Osaka",
+ '.typeset .arrow1': "font-family: Osaka; position: relative; top: .125em; margin: -1px",
+ '.typeset .arrow2': "font-family: AppleGothic; font-size: 100%; position:relative; top: .11em; margin:-1px",
+ '.typeset .bigop1': "font-family: AppleGothic; font-size: 110%; position:relative; top: .9em; margin:-.05em",
+ '.typeset .bigop1b': "font-family: Osaka; font-size: 140%; position: relative; top: .8em; margin:-.1em",
+ '.typeset .bigop1c': "font-family: AppleGothic; font-size: 125%; position:relative; top: .85em; margin:-.3em",
+ '.typeset .bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
+ '.typeset .bigop2': "font-family: AppleGothic; font-size: 175%; position:relative; top: .85em; margin:-.1em",
+ '.typeset .bigop2b': "font-family: Osaka; font-size: 200%; position: relative; top: .75em; margin:-.15em",
+ '.typeset .bigop2c': "font-family: AppleGothic; font-size: 300%; position:relative; top: .75em; margin:-.35em",
+ '.typeset .bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .7em; margin-left:-.1em; margin-right:-.2em",
+ '.typeset .delim1b': "font-family: Times; font-size: 150%; position:relative; top:.8em; margin:.01em",
+ '.typeset .delim2b': "font-family: Times; font-size: 210%; position:relative; top:.8em; margin:.01em",
+ '.typeset .delim3b': "font-family: Times; font-size: 300%; position:relative; top:.75em; margin:.01em",
+ '.typeset .delim4b': "font-family: Times; font-size: 400%; position:relative; top:.725em; margin:.01em"
});
@@ -107,9 +109,4 @@
jsMath.Macro('joinrel','\\mathrel{\\kern-3mu}');
-/*
- * Reinstall the styles
- */
-
-jsMath.Setup.Styles();
-
+jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js:1.2 Wed Dec 7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js Mon Mar 27 14:32:07 2006
@@ -8,19 +8,19 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
@@ -31,6 +31,8 @@
*
*/
+jsMath.Script.Start();
+
jsMath.Update.TeXfonts({
cmr10: {
'0': {c: 'G', tclass: 'greek'},
@@ -44,50 +46,50 @@
'8': {c: 'F', tclass: 'greek'},
'9': {c: 'Y', tclass: 'greek'},
'10': {c: 'W', tclass: 'greek'},
- '22': {c: '<SPAN STYLE="position:relative; top:.1em">`</SPAN>', tclass: 'symbol3'}
+ '22': {c: '<span style="position:relative; top:.1em">`</span>', tclass: 'symbol3'}
},
cmti10: {
- '0': {c: '<I>G</I>', tclass: 'greek'},
- '1': {c: '<I>D</I>', tclass: 'greek'},
- '2': {c: '<I>Q</I>', tclass: 'greek'},
- '3': {c: '<I>L</I>', tclass: 'greek'},
- '4': {c: '<I>X</I>', tclass: 'greek'},
- '5': {c: '<I>P</I>', tclass: 'greek'},
- '6': {c: '<I>S</I>', tclass: 'greek'},
- '7': {c: '<I>¡</I>', tclass: 'greek'},
- '8': {c: '<I>F</I>', tclass: 'greek'},
- '9': {c: '<I>Y</I>', tclass: 'greek'},
- '10': {c: '<I>W</I>', tclass: 'greek'},
- '22': {c: '<SPAN STYLE="position:relative; top:.1em">`</SPAN>', tclass: 'symbol3'}
+ '0': {c: 'G', tclass: 'igreek'},
+ '1': {c: 'D', tclass: 'igreek'},
+ '2': {c: 'Q', tclass: 'igreek'},
+ '3': {c: 'L', tclass: 'igreek'},
+ '4': {c: 'X', tclass: 'igreek'},
+ '5': {c: 'P', tclass: 'igreek'},
+ '6': {c: 'S', tclass: 'igreek'},
+ '7': {c: '¡', tclass: 'igreek'},
+ '8': {c: 'F', tclass: 'igreek'},
+ '9': {c: 'Y', tclass: 'igreek'},
+ '10': {c: 'W', tclass: 'igreek'},
+ '22': {c: '<span style="position:relative; top:.1em">`</span>', tclass: 'symbol3'}
},
cmbx10: {
- '0': {c: '<B>G</B>', tclass: 'greek'},
- '1': {c: '<B>D</B>', tclass: 'greek'},
- '2': {c: '<B>Q</B>', tclass: 'greek'},
- '3': {c: '<B>L</B>', tclass: 'greek'},
- '4': {c: '<B>X</B>', tclass: 'greek'},
- '5': {c: '<B>P</B>', tclass: 'greek'},
- '6': {c: '<B>S</B>', tclass: 'greek'},
- '7': {c: '<B>¡</B>', tclass: 'greek'},
- '8': {c: '<B>F</B>', tclass: 'greek'},
- '9': {c: '<B>Y</B>', tclass: 'greek'},
- '10': {c: '<B>W</B>', tclass: 'greek'},
- '22': {c: '<SPAN STYLE="position:relative; top:.1em">`</SPAN>', tclass: 'symbol3'}
+ '0': {c: 'G', tclass: 'bgreek'},
+ '1': {c: 'D', tclass: 'bgreek'},
+ '2': {c: 'Q', tclass: 'bgreek'},
+ '3': {c: 'L', tclass: 'bgreek'},
+ '4': {c: 'X', tclass: 'bgreek'},
+ '5': {c: 'P', tclass: 'bgreek'},
+ '6': {c: 'S', tclass: 'bgreek'},
+ '7': {c: '¡', tclass: 'bgreek'},
+ '8': {c: 'F', tclass: 'bgreek'},
+ '9': {c: 'Y', tclass: 'bgreek'},
+ '10': {c: 'W', tclass: 'bgreek'},
+ '22': {c: '<span style="position:relative; top:.1em">`</span>', tclass: 'symbol3'}
},
cmmi10: {
- '0': {c: '<I>G</I>', tclass: 'greek'},
- '1': {c: '<I>D</I>', tclass: 'greek'},
- '2': {c: '<I>Q</I>', tclass: 'greek'},
- '3': {c: '<I>L</I>', tclass: 'greek'},
- '4': {c: '<I>X</I>', tclass: 'greek'},
- '5': {c: '<I>P</I>', tclass: 'greek'},
- '6': {c: '<I>S</I>', tclass: 'greek'},
- '7': {c: '<I>¡</I>', tclass: 'greek'},
- '8': {c: '<I>F</I>', tclass: 'greek'},
- '9': {c: '<I>Y</I>', tclass: 'greek'},
- '10': {c: '<I>W</I>', tclass: 'greek'},
+ '0': {c: 'G', tclass: 'igreek'},
+ '1': {c: 'D', tclass: 'igreek'},
+ '2': {c: 'Q', tclass: 'igreek'},
+ '3': {c: 'L', tclass: 'igreek'},
+ '4': {c: 'X', tclass: 'igreek'},
+ '5': {c: 'P', tclass: 'igreek'},
+ '6': {c: 'S', tclass: 'igreek'},
+ '7': {c: '¡', tclass: 'igreek'},
+ '8': {c: 'F', tclass: 'igreek'},
+ '9': {c: 'Y', tclass: 'igreek'},
+ '10': {c: 'W', tclass: 'igreek'},
'11': {c: 'a', tclass: 'greek'},
'12': {c: 'b', tclass: 'greek'},
'13': {c: 'g', tclass: 'greek'},
@@ -116,21 +118,21 @@
// '44': // hook left
// '45': // hook right
// '92': // natural
- '94': {c: '<SPAN STYLE="position:relative; top:.3em">︶</SPAN>'},
- '95': {c: '<SPAN STYLE="position:relative; top:-.2em">︵</SPAN>'}
+ '94': {c: '<span style="position:relative; top:.3em">︶</span>'},
+ '95': {c: '<span style="position:relative; top:-.2em">︵</span>'}
// '127': // half-circle down accent?
},
cmsy10: {
'0': {c: '–', tclass: 'normal'},
- '11': {c: '<SPAN STYLE="font-size: 70%">◯</SPAN><SPAN STYLE="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</SPAN>', tclass: 'normal'},
- '16': {c: '<SPAN STYLE="position:relative;top:-.1em; font-size: 67%">︵</SPAN><SPAN STYLE="position:relative;top:.1em;font-size:67%;margin-left:-1em">︶</SPAN>', tclass: 'normal'},
- '48': {c: '<SPAN STYLE="font-size: 133%; margin-left:-.1em; margin-right: -.6em; position: relative; top:.4em">′</SPAN>'},
- '93': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
- '96': {c: '<SPAN STYLE="font-size:67%; position:relative; top:-.3em;">|</SPAN><SPAN STYLE="position:relative; top:-.15em; margin-left:-.1em">–</SPAN>', tclass: 'normal'},
- '104': {c: '<SPAN STYLE="position:relative; top:.2em; margin-left:-.6em">〈</SPAN>'},
- '105': {c: '<SPAN STYLE="position:relative; top:.2em; margin-right:-.6em">〉</SPAN>'},
- '109': {c: '⇑<SPAN STYLE="position:relative; top:.1em; margin-left:-1em">⇓</SPAN>'},
+ '11': {c: '<span style="font-size: 70%">◯</span><span style="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</span>', tclass: 'normal'},
+ '16': {c: '<span style="position:relative;top:-.1em; font-size: 67%">︵</span><span style="position:relative;top:.1em;font-size:67%;margin-left:-1em">︶</span>', tclass: 'normal'},
+ '48': {c: '<span style="font-size: 133%; margin-left:-.1em; margin-right: -.6em; position: relative; top:.4em">′</span>'},
+ '93': {c: '∪<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+ '96': {c: '<span style="font-size:67%; position:relative; top:-.3em;">|</span><span style="position:relative; top:-.15em; margin-left:-.1em">–</span>', tclass: 'normal'},
+ '104': {c: '<span style="position:relative; top:.2em; margin-left:-.6em">〈</span>'},
+ '105': {c: '<span style="position:relative; top:.2em; margin-right:-.6em">〉</span>'},
+ '109': {c: '⇑<span style="position:relative; top:.1em; margin-left:-1em">⇓</span>'},
'110': {c: '\\', d:0, tclass: 'normal'}
// '111': // wr
//, '113': // amalg
@@ -141,24 +143,24 @@
},
cmex10: {
- '10': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">〈</SPAN>'},
- '11': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">〉</SPAN>'},
+ '10': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">〈</span>'},
+ '11': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">〉</span>'},
'14': {c: '/'}, '15': {c: '\\'},
- '28': {c: '<SPAN STYLE="position:relative; top:.05em; margin-left:-.6em">〈</SPAN>'},
- '29': {c: '<SPAN STYLE="position:relative; top:.05em; margin-right:-.6em">〉</SPAN>'},
+ '28': {c: '<span style="position:relative; top:.05em; margin-left:-.6em">〈</span>'},
+ '29': {c: '<span style="position:relative; top:.05em; margin-right:-.6em">〉</span>'},
'30': {c: '/'}, '31': {c: '\\'},
- '42': {c: '<SPAN STYLE="margin-left:-.6em">〈</SPAN>'},
- '43': {c: '<SPAN STYLE="margin-right:-.6em">〉</SPAN>'},
+ '42': {c: '<span style="margin-left:-.6em">〈</span>'},
+ '43': {c: '<span style="margin-right:-.6em">〉</span>'},
'44': {c: '/'}, '45': {c: '\\'},
'46': {c: '/'}, '47': {c: '\\'},
- '68': {c: '<SPAN STYLE="margin-left:-.6em">〈</SPAN>'},
- '69': {c: '<SPAN STYLE="margin-right:-.6em">〉</SPAN>'},
+ '68': {c: '<span style="margin-left:-.6em">〈</span>'},
+ '69': {c: '<span style="margin-right:-.6em">〉</span>'},
// '70': // sqcup
// '71': // big sqcup
'72': {ic: 0}, '73': {ic: 0},
'82': {tclass: 'bigop1cx', ic: .15}, '90': {tclass: 'bigop2cx', ic:.6},
- '85': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
- '93': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
+ '85': {c: '∪<span style="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+ '93': {c: '∪<span style="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
// '96': // coprod
// '97': // big coprod
'98': {c: '︿', h: 0.722, w: .58, tclass: 'wide1'},
@@ -171,31 +173,32 @@
});
-jsMath.Update.Styles({
- '.arrow1': "font-family: Osaka; position: relative; top: .125em; margin: -1px",
- '.arrow2': "font-family: Osaka; position: relative; top: .1em; margin:-1px",
- '.bigop1': "font-family: Symbol; font-size: 110%; position:relative; top: .8em; margin:-.05em",
- '.bigop1b': "font-family: Symbol; font-size: 140%; position: relative; top: .8em; margin:-.1em",
- '.bigop1c': "font-family: Osaka; font-size: 125%; position:relative; top: .85em; margin:-.3em",
- '.bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
- '.bigop2': "font-family: Symbol; font-size: 175%; position:relative; top: .8em; margin:-.07em",
- '.bigop2a': "font-family: Baskerville; font-size: 175%; position: relative; top: .65em",
- '.bigop2b': "font-family: Symbol; font-size: 175%; position: relative; top: .8em; margin:-.07em",
- '.bigop2c': "font-family: Osaka; font-size: 230%; position:relative; top: .85em; margin:-.35em",
- '.bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .6em; margin-left:-.1em; margin-right:-.2em",
- '.delim1b': "font-family: Times; font-size: 150%; position:relative; top:.8em",
- '.delim2b': "font-family: Times; font-size: 210%; position:relative; top:.75em;",
- '.delim3b': "font-family: Times; font-size: 300%; position:relative; top:.7em;",
- '.delim4b': "font-family: Times; font-size: 400%; position:relative; top:.65em;",
- '.symbol3': "font-family: Symbol",
- '.wide1': "font-size: 50%; position: relative; top:-1.1em",
- '.wide2': "font-size: 80%; position: relative; top:-.7em",
- '.wide3': "font-size: 125%; position: relative; top:-.5em",
- '.wide1a': "font-size: 75%; position: relative; top:-.5em",
- '.wide2a': "font-size: 133%; position: relative; top: -.15em",
- '.wide3a': "font-size: 200%; position: relative; top: -.05em",
- '.greek': "font-family: Symbol"
+jsMath.Setup.Styles({
+ '.typeset .arrow1': "font-family: Osaka; position: relative; top: .125em; margin: -1px",
+ '.typeset .arrow2': "font-family: Osaka; position: relative; top: .1em; margin:-1px",
+ '.typeset .bigop1': "font-family: Symbol; font-size: 110%; position:relative; top: .8em; margin:-.05em",
+ '.typeset .bigop1b': "font-family: Symbol; font-size: 140%; position: relative; top: .8em; margin:-.1em",
+ '.typeset .bigop1c': "font-family: Osaka; font-size: 125%; position:relative; top: .85em; margin:-.3em",
+ '.typeset .bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
+ '.typeset .bigop2': "font-family: Symbol; font-size: 175%; position:relative; top: .8em; margin:-.07em",
+ '.typeset .bigop2a': "font-family: Baskerville; font-size: 175%; position: relative; top: .65em",
+ '.typeset .bigop2b': "font-family: Symbol; font-size: 175%; position: relative; top: .8em; margin:-.07em",
+ '.typeset .bigop2c': "font-family: Osaka; font-size: 230%; position:relative; top: .85em; margin:-.35em",
+ '.typeset .bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .6em; margin-left:-.1em; margin-right:-.2em",
+ '.typeset .delim1b': "font-family: Times; font-size: 150%; position:relative; top:.8em",
+ '.typeset .delim2b': "font-family: Times; font-size: 210%; position:relative; top:.75em;",
+ '.typeset .delim3b': "font-family: Times; font-size: 300%; position:relative; top:.7em;",
+ '.typeset .delim4b': "font-family: Times; font-size: 400%; position:relative; top:.65em;",
+ '.typeset .symbol3': "font-family: Symbol",
+ '.typeset .wide1': "font-size: 50%; position: relative; top:-1.1em",
+ '.typeset .wide2': "font-size: 80%; position: relative; top:-.7em",
+ '.typeset .wide3': "font-size: 125%; position: relative; top:-.5em",
+ '.typeset .wide1a': "font-size: 75%; position: relative; top:-.5em",
+ '.typeset .wide2a': "font-size: 133%; position: relative; top: -.15em",
+ '.typeset .wide3a': "font-size: 200%; position: relative; top: -.05em",
+ '.typeset .greek': "font-family: Symbol",
+ '.typeset .igreek': "font-family: Symbol; font-style:italic",
+ '.typeset .bgreek': "font-family: Symbol; font-weight:bold"
});
-jsMath.Setup.Styles();
-
+jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath-fallback-mac.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-mac.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-mac.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-mac.js:1.2 Wed Dec 7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-mac.js Mon Mar 27 14:32:07 2006
@@ -8,1047 +8,22 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-/********************************************************************
- *
- * Here we replace the TeX character mappings by equivalent unicode
- * points when possible, and adjust the character dimensions
- * based on the fonts we hope we get them from (the styles are set
- * to try to use the best characters available in the standard
- * fonts).
- */
-
-jsMath.Add(jsMath.TeX,{
-
- cmr10: [
- // 00 - 0F
- {c: 'Γ', tclass: 'greek'},
- {c: 'Δ', tclass: 'greek'},
- {c: 'Θ', tclass: 'greek'},
- {c: 'Λ', tclass: 'greek'},
- {c: 'Ξ', tclass: 'greek'},
- {c: 'Π', tclass: 'greek'},
- {c: 'Σ', tclass: 'greek'},
- {c: 'Υ', tclass: 'greek'},
- {c: 'Φ', tclass: 'greek'},
- {c: 'Ψ', tclass: 'greek'},
- {c: 'Ω', tclass: 'greek'},
- {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: 'fi', tclass: 'normal'},
- {c: 'fl', tclass: 'normal'},
- {c: 'ffi', tclass: 'normal'},
- {c: 'ffl', tclass: 'normal'},
- // 10 - 1F
- {c: 'ı', a:0, tclass: 'normal'},
- {c: 'j', d:.2, tclass: 'normal'},
- {c: '`', tclass: 'accent'},
- {c: '´', tclass: 'accent'},
- {c: 'ˇ', tclass: 'accent'},
- {c: '˘', tclass: 'accent'},
- {c: '<SPAN STYLE="position:relative; top:.1em">ˉ</SPAN>', tclass: 'accent'},
- {c: '˚', tclass: 'accent'},
- {c: '̧', tclass: 'normal'},
- {c: 'ß', tclass: 'normal'},
- {c: 'æ', a:0, tclass: 'normal'},
- {c: 'œ', a:0, tclass: 'normal'},
- {c: 'ø', tclass: 'normal'},
- {c: 'Æ', tclass: 'normal'},
- {c: 'Œ', tclass: 'normal'},
- {c: 'Ø', tclass: 'normal'},
- // 20 - 2F
- {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
- {c: '!', lig: {'96': 60}, tclass: 'normal'},
- {c: '”', tclass: 'normal'},
- {c: '#', tclass: 'normal'},
- {c: '$', tclass: 'normal'},
- {c: '%', tclass: 'normal'},
- {c: '&', tclass: 'normal'},
- {c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
- {c: '(', d:.2, tclass: 'normal'},
- {c: ')', d:.2, tclass: 'normal'},
- {c: '*', tclass: 'normal'},
- {c: '+', a:.1, tclass: 'normal'},
- {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
- {c: '.', a:-.25, tclass: 'normal'},
- {c: '/', tclass: 'normal'},
- // 30 - 3F
- {c: '0', tclass: 'normal'},
- {c: '1', tclass: 'normal'},
- {c: '2', tclass: 'normal'},
- {c: '3', tclass: 'normal'},
- {c: '4', tclass: 'normal'},
- {c: '5', tclass: 'normal'},
- {c: '6', tclass: 'normal'},
- {c: '7', tclass: 'normal'},
- {c: '8', tclass: 'normal'},
- {c: '9', tclass: 'normal'},
- {c: ':', tclass: 'normal'},
- {c: ';', tclass: 'normal'},
- {c: '¡', tclass: 'normal'},
- {c: '=', a:0, d:-.1, tclass: 'normal'},
- {c: '¿', tclass: 'normal'},
- {c: '?', lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '@', tclass: 'normal'},
- {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'B', tclass: 'normal'},
- {c: 'C', tclass: 'normal'},
- {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- {c: 'E', tclass: 'normal'},
- {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'G', tclass: 'normal'},
- {c: 'H', tclass: 'normal'},
- {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
- {c: 'J', tclass: 'normal'},
- {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'M', tclass: 'normal'},
- {c: 'N', tclass: 'normal'},
- {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- // 50 - 5F
- {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: 'Q', d: 1, tclass: 'normal'},
- {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'S', tclass: 'normal'},
- {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: 'U', tclass: 'normal'},
- {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: 'Z', tclass: 'normal'},
- {c: '[', d:.1, tclass: 'normal'},
- {c: '“', tclass: 'normal'},
- {c: ']', d:.1, tclass: 'normal'},
- {c: 'ˆ', tclass: 'accent'},
- {c: '˙', tclass: 'accent'},
- // 60 - 6F
- {c: '‘', lig: {'96': 92}, tclass: 'normal'},
- {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
- {c: 'd', tclass: 'normal'},
- {c: 'e', a:0, tclass: 'normal'},
- {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
- {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'i', tclass: 'normal'},
- {c: 'j', d:1, tclass: 'normal'},
- {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'l', tclass: 'normal'},
- {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- // 70 - 7F
- {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'q', a:0, d:1, tclass: 'normal'},
- {c: 'r', a:0, tclass: 'normal'},
- {c: 's', a:0, tclass: 'normal'},
- {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
- {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'x', a:0, tclass: 'normal'},
- {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: 'z', a:0, tclass: 'normal'},
- {c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
- {c: '—', a:.1, ic: 0.0278, tclass: 'normal'},
- {c: '˝', tclass: 'accent'},
- {c: '˜', tclass: 'accent'},
- {c: '¨', tclass: 'accent'}
- ],
-
- cmmi10: [
- // 00 - 0F
- {c: '<I>Γ</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'greek'},
- {c: '<I>Δ</I>', krn: {'127': 0.167}, tclass: 'greek'},
- {c: '<I>Θ</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Λ</I>', krn: {'127': 0.167}, tclass: 'greek'},
- {c: '<I>Ξ</I>', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Π</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Σ</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Υ</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Φ</I>', krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Ψ</I>', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Ω</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'α', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'β', d:1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'γ', a:0, d:1, ic: 0.0556, tclass: 'greek'},
- {c: 'δ', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: 'ε', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
- // 10 - 1F
- {c: 'ζ', d:1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'η', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
- {c: 'θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'ι', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
- {c: 'κ', a:0, tclass: 'greek'},
- {c: 'λ', tclass: 'greek'},
- {c: 'μ', a:0, d:1, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'ν', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
- {c: 'ξ', d:1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
- {c: 'π', a:0, ic: 0.0359, tclass: 'greek'},
- {c: 'ρ', a:0, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'σ', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
- {c: 'τ', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
- {c: 'υ', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'φ', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'χ', a:0, d:1, krn: {'127': 0.0556}, tclass: 'greek'},
- // 20 - 2F
- {c: 'ψ', a:.1, d:1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
- {c: 'ω', a:0, ic: 0.0359, tclass: 'greek'},
- {c: 'ε', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'ϑ', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: 'ϖ', a:0, ic: 0.0278, tclass: 'normal'},
- {c: 'ϱ', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: 'ς', a:0, d:1, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: 'ϕ', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '↼', a:0, d:-.2, tclass: 'harpoon'},
- {c: '↽', a:0, d:-.1, tclass: 'harpoon'},
- {c: '⇀', a:0, d:-.2, tclass: 'harpoon'},
- {c: '⇁', a:0, d:-.1, tclass: 'harpoon'},
- {c: '<SPAN STYLE="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">˓</SPAN>', a:.1, tclass: 'lucida'},
- {c: '<SPAN STYLE="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">˒</SPAN>', a:.1, tclass: 'lucida'},
- {c: '<SPAN STYLE="font-size:50%">▷</SPAN>', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size:50%">◁</SPAN>', tclass: 'symbol'},
- // 30 - 3F
- {c: '0', tclass: 'normal'},
- {c: '1', tclass: 'normal'},
- {c: '2', tclass: 'normal'},
- {c: '3', tclass: 'normal'},
- {c: '4', tclass: 'normal'},
- {c: '5', tclass: 'normal'},
- {c: '6', tclass: 'normal'},
- {c: '7', tclass: 'normal'},
- {c: '8', tclass: 'normal'},
- {c: '9', tclass: 'normal'},
- {c: '.', a:-.3, tclass: 'normal'},
- {c: ',', a:-.3, d:.2, tclass: 'normal'},
- {c: '<', a:.1, tclass: 'normal'},
- {c: '<SPAN STYLE="font-size:133%; position:relative; top:.1em">/</SPAN>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
- {c: '>', a:.1, tclass: 'normal'},
- {c: '<SPAN STYLE="font-size:50%">★</SPAN>', a:0, tclass: 'symbol'},
- // 40 - 4F
- {c: '∂', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>A</I>', krn: {'127': 0.139}, tclass: 'normal'},
- {c: '<I>B</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>C</I>', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>D</I>', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>E</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>F</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>G</I>', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>H</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>I</I>', ic: 0.0785, krn: {'127': 0.111}, tclass: 'normal'},
- {c: '<I>J</I>', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'normal'},
- {c: '<I>K</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>L</I>', krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>M</I>', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>N</I>', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>O</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'normal'},
- // 50 - 5F
- {c: '<I>P</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>Q</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>R</I>', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>S</I>', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>T</I>', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>U</I>', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'normal'},
- {c: '<I>V</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>W</I>', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>X</I>', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>Y</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>Z</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '♭', tclass: 'symbol2'},
- {c: '♮', tclass: 'symbol2'},
- {c: '♯', tclass: 'symbol2'},
- {c: '<SPAN STYLE="position: relative; top:.5em">⌣</SPAN>', a:0, d:-.1, tclass: 'normal'},
- {c: '<SPAN STYLE="position: relative; top:-.3em">⌢</SPAN>', a:0, d:-.1, tclass: 'normal'},
- // 60 - 6F
- {c: 'ℓ', krn: {'127': 0.111}, tclass: 'symbol'},
- {c: '<I>a</I>', a:0, tclass: 'normal'},
- {c: '<I>b</I>', tclass: 'normal'},
- {c: '<I>c</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>d</I>', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'normal'},
- {c: '<I>e</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>f</I>', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'normal'},
- {c: '<I>g</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>h</I>', krn: {'127': -0.0278}, tclass: 'normal'},
- {c: '<I>i</I>', tclass: 'normal'},
- {c: '<I>j</I>', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'normal'},
- {c: '<I>k</I>', ic: 0.0315, tclass: 'normal'},
- {c: '<I>l</I>', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>m</I>', a:0, tclass: 'normal'},
- {c: '<I>n</I>', a:0, tclass: 'normal'},
- {c: '<I>o</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- // 70 - 7F
- {c: '<I>p</I>', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>q</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>r</I>', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>s</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>t</I>', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>u</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>v</I>', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>w</I>', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>x</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>y</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>z</I>', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>ı</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>j</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '℘', a:0, d:1, krn: {'127': 0.111}, tclass: 'normal'},
- {c: '<SPAN STYLE="position:relative; left: .4em; top: -.8em; font-size: 50%">→</SPAN>', ic: 0.154, tclass: 'symbol'},
- {c: '̑', ic: 0.399, tclass: 'normal'}
- ],
-
- cmsy10: [
- // 00 - 0F
- {c: '−', a:.1, tclass: 'symbol'},
- {c: '·', a:0, d:-.2, tclass: 'symbol'},
- {c: '×', a:0, tclass: 'symbol'},
- {c: '<SPAN STYLE="position:relative; top:.3em">*</SPAN>', a:0, tclass: 'symbol'},
- {c: '÷', a:0, tclass: 'symbol'},
- {c: '◊', tclass: 'lucida'},
- {c: '±', a:.1, tclass: 'symbol'},
- {c: '∓', tclass: 'symbol'},
- {c: '⊕', tclass: 'symbol'},
- {c: '⊖', tclass: 'symbol'},
- {c: '⊗', tclass: 'symbol'},
- {c: '⊘', tclass: 'symbol'},
- {c: '⊙', tclass: 'symbol3'},
- {c: '◯', tclass: 'symbol'},
- {c: '<SPAN STYLE="position:relative; top:.25em;">°</SPAN>', a:0, d:-.1, tclass: 'symbol'},
- {c: '•', a:0, d:-.2, tclass: 'symbol'},
- // 10 - 1F
- {c: '≍', a:.1, tclass: 'symbol'},
- {c: '≡', a:.1, tclass: 'symbol'},
- {c: '⊆', tclass: 'symbol'},
- {c: '⊇', tclass: 'symbol'},
- {c: '≤', tclass: 'symbol'},
- {c: '≥', tclass: 'symbol'},
- {c: '≼', tclass: 'symbol'},
- {c: '≽', tclass: 'symbol'},
- {c: '~', a:0, d: -.2, tclass: 'normal'},
- {c: '≈', a:.1, d:-.1, tclass: 'symbol'},
- {c: '⊂', tclass: 'symbol'},
- {c: '⊃', tclass: 'symbol'},
- {c: '≪', tclass: 'symbol'},
- {c: '≫', tclass: 'symbol'},
- {c: '≺', tclass: 'symbol'},
- {c: '≻', tclass: 'symbol'},
- // 20 - 2F
- {c: '←', a:0, d:-.15, tclass: 'arrow1'},
- {c: '→', a:0, d:-.15, tclass: 'arrow1'},
- {c: '↑', h:1, tclass: 'arrow1a'},
- {c: '↓', h:1, tclass: 'arrow1a'},
- {c: '↔', a:0, tclass: 'arrow1'},
- {c: '↗', h:1, tclass: 'arrows'},
- {c: '↘', h:1, tclass: 'arrows'},
- {c: '≃', a: .1, tclass: 'symbol'},
- {c: '⇐', a:.1, tclass: 'arrow2'},
- {c: '⇒', a:.1, tclass: 'arrow2'},
- {c: '⇑', h:.9, d:.1, tclass: 'arrow2a'},
- {c: '⇓', h:.9, d:.1, tclass: 'arrow2a'},
- {c: '⇔', a:.1, tclass: 'arrow2'},
- {c: '↖', h:1, tclass: 'arrows'},
- {c: '↙', h:1, tclass: 'arrows'},
- {c: '∝', a:.1, tclass: 'symbol'},
- // 30 - 3F
- {c: '<SPAN STYLE="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">′</SPAN>', a: 0, tclass: 'lucida'},
- {c: '∞', a:.1, tclass: 'symbol'},
- {c: '∈', tclass: 'symbol'},
- {c: '∋', tclass: 'symbol'},
- {c: '△', tclass: 'symbol'},
- {c: '▽', tclass: 'symbol'},
- {c: '/', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</SPAN>', a:0, tclass: 'normal'},
- {c: '∀', tclass: 'symbol'},
- {c: '∃', tclass: 'symbol'},
- {c: '¬', a:0, d:-.1, tclass: 'symbol1'},
- {c: '∅', tclass: 'symbol'},
- {c: 'ℜ', tclass: 'symbol'},
- {c: 'ℑ', tclass: 'symbol'},
- {c: '⊤', tclass: 'symbol'},
- {c: '⊥', tclass: 'symbol'},
- // 40 - 4F
- {c: 'ℵ', tclass: 'symbol'},
- {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
- {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
- {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
- {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
- // 50 - 5F
- {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
- {c: '⋃', tclass: 'symbol'},
- {c: '⋂', tclass: 'symbol'},
- {c: '⊎', tclass: 'symbol'},
- {c: '⋀', tclass: 'symbol'},
- {c: '⋁', tclass: 'symbol'},
- // 60 - 6F
- {c: '⊢', tclass: 'symbol'},
- {c: '⊣', tclass: 'symbol2'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '{', d:.2, tclass: 'normal'},
- {c: '}', d:.2, tclass: 'normal'},
- {c: '〈', a:.3, d:.2, tclass: 'normal'},
- {c: '〉', a:.3, d:.2, tclass: 'normal'},
- {c: '|', d:.1, tclass: 'vertical'},
- {c: '||', d:.1, tclass: 'vertical'},
- {c: '↕', h:1, d:.15, tclass: 'arrow1a'},
- {c: '⇕', a:.2, d:.1, tclass: 'arrows'},
- {c: '<SPAN STYLE="margin:-.1em">∖</SPAN>', a:.3, d:.1, tclass: 'lucida'},
- {c: '<SPAN STYLE="font-size: 75%; margin:-.3em">≀</SPAN>', tclass: 'symbol'},
- // 70 - 7F
- {c: '<SPAN STYLE="position:relative; top: .86em">√</SPAN>', h:.04, d:.9, tclass: 'lucida'},
- {c: '∐', a:.4, tclass: 'symbol'},
- {c: '∇', tclass: 'symbol'},
- {c: '∫', h:1, d:.1, ic: 0.111, tclass: 'root'},
- {c: '⊔', tclass: 'symbol'},
- {c: '⊓', tclass: 'symbol'},
- {c: '⊑', tclass: 'symbol'},
- {c: '⊒', tclass: 'symbol'},
- {c: '§', d:.1, tclass: 'normal'},
- {c: '†', d:.1, tclass: 'normal'},
- {c: '‡', d:.1, tclass: 'normal'},
- {c: '¶', a:.3, d:.1, tclass: 'lucida'},
- {c: '♣', tclass: 'symbol'},
- {c: '♦', tclass: 'symbol'},
- {c: '♥', tclass: 'symbol'},
- {c: '♠', tclass: 'symbol'}
- ],
-
- cmex10: [
- // 00 - 0F
- {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
- {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
- {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
- {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
- {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
- {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
- {c: '〈', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
- {c: '〉', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
- {c: '|', h:.7, d:.15, delim: {rep: 12}, tclass: 'vertical1'},
- {c: '||', h:.7, d:.15, delim: {rep: 13}, tclass: 'vertical1'},
- {c: '∕', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
- {c: '∖', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
- // 10 - 1F
- {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
- {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
- {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
- {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
- {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
- {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
- {c: '<SPAN STYLE="margin: -.1em">{</SPAN>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
- {c: '<SPAN STYLE="margin: -.1em">}</SPAN>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
- {c: '〈', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
- {c: '〉', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
- {c: '∕', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
- {c: '∖', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
- // 20 - 2F
- {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
- {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
- {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
- {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
- {c: '<SPAN STYLE="margin: -.1em">{</SPAN>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
- {c: '<SPAN STYLE="margin: -.1em">}</SPAN>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
- {c: '〈', h: 0.04, d: 2.96, tclass: 'delim4c'},
- {c: '〉', h: 0.04, d: 2.96, tclass: 'delim4c'},
- {c: '∕', h: 0.04, d: 2.96, tclass: 'delim4b'},
- {c: '∖', h: 0.04, d: 2.96, tclass: 'delim4b'},
- {c: '∕', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
- {c: '∖', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
- // 30 - 3F
- {c: '', h: .85, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {bot: 52, rep: 54}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {bot: 53, rep: 55}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 50, rep: 54}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 51, rep: 55}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {rep: 63}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {rep: 119}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {rep: 62}, tclass: 'normal'},
- {c: '|', h: .7, d: .15, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical2'},
- // 40 - 4F
- {c: '', h: .85, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {rep: 66}, tclass: 'normal'},
- {c: '', h: .85, d: .2, delim: {rep: 67}, tclass: 'normal'},
- {c: '〈', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
- {c: '〉', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
- {c: '⊔', h: 0, d: 1, n: 71, tclass: 'bigop1'},
- {c: '⊔', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '∮', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
- {c: '∮', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
- {c: '⊙', h: 0, d: 1, n: 75, tclass: 'bigop1'},
- {c: '⊙', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⊕', h: 0, d: 1, n: 77, tclass: 'bigop1'},
- {c: '⊕', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⊗', h: 0, d: 1, n: 79, tclass: 'bigop1'},
- {c: '⊗', h: 0.1, d: 1.5, tclass: 'bigop2'},
- // 50 - 5F
- {c: '∑', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
- {c: '∏', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
- {c: '∫', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
- {c: '∪', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
- {c: '∩', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
- {c: '⊎', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
- {c: '∧', h: 0, d: 1, n: 94, tclass: 'bigop1'},
- {c: '∨', h: 0, d: 1, n: 95, tclass: 'bigop1'},
- {c: '∑', h: 0.1, d: 1.6, tclass: 'bigop2a'},
- {c: '∏', h: 0.1, d: 1.5, tclass: 'bigop2a'},
- {c: '∫', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
- {c: '∪', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '∩', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '⊎', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '∧', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '∨', h: 0.1, d: 1.5, tclass: 'bigop2'},
- // 60 - 6F
- {c: '∐', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
- {c: '∐', h: 0.1, d: 1.5, tclass: 'bigop2a'},
- {c: '︿', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
- {c: '︿', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
- {c: '︿', h: 0.99, w: 1.65, tclass: 'wide3'},
- {c: '⁓', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
- {c: '⁓', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
- {c: '⁓', h: 0.99, w: 2, tclass: 'wide3a'},
- {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
- {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
- {c: '<SPAN STYLE="margin: -.1em">{</SPAN>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
- {c: '<SPAN STYLE="margin: -.1em">}</SPAN>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
- // 70 - 7F
- {c: '<SPAN STYLE="font-size: 125%; position:relative; top:.95em">√</SPAN>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 190%; position:relative; top:.925em">√</SPAN>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 250%; position:relative; top:.925em">√</SPAN>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 320%; position:relative; top:.92em">√</SPAN>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 400%; position:relative; top:.92em">√</SPAN>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 500%; position:relative; top:.9em">√</SPAN>', h: .12, d: 4.5, n: 118, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 625%; position:relative; top:.9em">√</SPAN>', h: .14, d: 5.7, tclass: 'root'},
- {c: '||', h:.65, d:.15, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical2'},
- {c: '▵', h:.4, delim: {top: 120, rep: 63}, tclass: 'arrow1b'},
- {c: '▿', h:.38, delim: {bot: 121, rep: 63}, tclass: 'arrow1b'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╭</SPAN>', h:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╮</SPAN>', h:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╰</SPAN>', h:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╯</SPAN>', h:.1, tclass: 'symbol'},
- {c: '▵', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2b'},
- {c: '▿', h:.6, d:-.1, delim: {bot: 127, rep: 119}, tclass: 'arrow2b'}
- ],
-
- cmti10: [
- // 00 - 0F
- {c: '<I>Γ</I>', ic: 0.133, tclass: 'greek'},
- {c: '<I>Δ</I>', tclass: 'greek'},
- {c: '<I>Θ</I>', ic: 0.094, tclass: 'greek'},
- {c: '<I>Λ</I>', tclass: 'greek'},
- {c: '<I>Ξ</I>', ic: 0.153, tclass: 'greek'},
- {c: '<I>Π</I>', ic: 0.164, tclass: 'greek'},
- {c: '<I>Σ</I>', ic: 0.12, tclass: 'greek'},
- {c: '<I>Υ</I>', ic: 0.111, tclass: 'greek'},
- {c: '<I>Φ</I>', ic: 0.0599, tclass: 'greek'},
- {c: '<I>Ψ</I>', ic: 0.111, tclass: 'greek'},
- {c: '<I>Ω</I>', ic: 0.103, tclass: 'greek'},
- {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'},
- // 10 - 1F
- {c: '<I>ı</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'},
- {c: '<I>`</I>', tclass: 'accent'},
- {c: '<I>´</I>', ic: 0.0969, tclass: 'accent'},
- {c: '<I>ˇ</I>', ic: 0.083, tclass: 'accent'},
- {c: '<I>˘</I>', ic: 0.108, tclass: 'accent'},
- {c: '<I>ˉ</I>', ic: 0.103, tclass: 'accent'},
- {c: '<I>˚</I>', tclass: 'accent'},
- {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'},
- {c: '<I>ß</I>', ic: 0.105, tclass: 'normal'},
- {c: '<I>æ</I>', a:0, ic: 0.0751, tclass: 'normal'},
- {c: '<I>œ</I>', a:0, ic: 0.0751, tclass: 'normal'},
- {c: '<I>ø</I>', ic: 0.0919, tclass: 'normal'},
- {c: '<I>Æ</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>Œ</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>Ø</I>', ic: 0.094, tclass: 'normal'},
- // 20 - 2F
- {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'},
- {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'},
- {c: '<I>”</I>', ic: 0.0696, tclass: 'normal'},
- {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'},
- {c: '<I>$</I>', tclass: 'normal'},
- {c: '<I>%</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>&</I>', ic: 0.0969, tclass: 'normal'},
- {c: '<I>’</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'},
- {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'},
- {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'},
- {c: '<I>*</I>', ic: 0.149, tclass: 'normal'},
- {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'},
- {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'},
- {c: '<I>.</I>', a:-.25, tclass: 'normal'},
- {c: '<I>/</I>', ic: 0.162, tclass: 'normal'},
- // 30 - 3F
- {c: '<I>0</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>1</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>2</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>3</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>4</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>5</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>6</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>7</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>8</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>9</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'},
- {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'},
- {c: '<I>¡</I>', ic: 0.0756, tclass: 'normal'},
- {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'},
- {c: '<I>¿</I>', tclass: 'normal'},
- {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '<I>@</I>', ic: 0.096, tclass: 'normal'},
- {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>B</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>C</I>', ic: 0.145, tclass: 'normal'},
- {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
- {c: '<I>E</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'},
- {c: '<I>H</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>I</I>', ic: 0.158, tclass: 'normal'},
- {c: '<I>J</I>', ic: 0.14, tclass: 'normal'},
- {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>M</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>N</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
- // 50 - 5F
- {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'},
- {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'},
- {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>S</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
- {c: '<I>U</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'},
- {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
- {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'},
- {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'},
- {c: '<I>“</I>', ic: 0.169, tclass: 'normal'},
- {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'},
- {c: '<I>ˆ</I>', ic: 0.0665, tclass: 'accent'},
- {c: '<I>˙</I>', ic: 0.118, tclass: 'accent'},
- // 60 - 6F
- {c: '<I>‘</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'},
- {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'},
- {c: '<I>i</I>', ic: 0.102, tclass: 'normal'},
- {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'},
- {c: '<I>k</I>', ic: 0.108, tclass: 'normal'},
- {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'},
- {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- // 70 - 7F
- {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'},
- {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'},
- {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'},
- {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'},
- {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'},
- {c: '<I>–</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'},
- {c: '<I>—</I>', a:.1, ic: 0.0921, tclass: 'normal'},
- {c: '<I>˝</I>', ic: 0.122, tclass: 'accent'},
- {c: '<I>˜</I>', ic: 0.116, tclass: 'accent'},
- {c: '<I>¨</I>', tclass: 'accent'}
- ],
-
- cmbx10: [
- // 00 - 0F
- {c: '<B>Γ</B>', tclass: 'greek'},
- {c: '<B>Δ</B>', tclass: 'greek'},
- {c: '<B>Θ</B>', tclass: 'greek'},
- {c: '<B>Λ</B>', tclass: 'greek'},
- {c: '<B>Ξ</B>', tclass: 'greek'},
- {c: '<B>Π</B>', tclass: 'greek'},
- {c: '<B>Σ</B>', tclass: 'greek'},
- {c: '<B>Υ</B>', tclass: 'greek'},
- {c: '<B>Φ</B>', tclass: 'greek'},
- {c: '<B>Ψ</B>', tclass: 'greek'},
- {c: '<B>Ω</B>', tclass: 'greek'},
- {c: '<B>ff</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: '<B>fi</B>', tclass: 'normal'},
- {c: '<B>fl</B>', tclass: 'normal'},
- {c: '<B>ffi</B>', tclass: 'normal'},
- {c: '<B>ffl</B>', tclass: 'normal'},
- // 10 - 1F
- {c: '<B>ı</B>', a:0, tclass: 'normal'},
- {c: '<B>j</B>', d:.2, tclass: 'normal'},
- {c: '<B>`</B>', tclass: 'accent'},
- {c: '<B>´</B>', tclass: 'accent'},
- {c: '<B>ˇ</B>', tclass: 'accent'},
- {c: '<B>˘</B>', tclass: 'accent'},
- {c: '<B>ˉ</B>', tclass: 'accent'},
- {c: '<B>˚</B>', tclass: 'accent'},
- {c: '<B>?</B>', tclass: 'normal'},
- {c: '<B>ß</B>', tclass: 'normal'},
- {c: '<B>æ</B>', a:0, tclass: 'normal'},
- {c: '<B>œ</B>', a:0, tclass: 'normal'},
- {c: '<B>ø</B>', tclass: 'normal'},
- {c: '<B>Æ</B>', tclass: 'normal'},
- {c: '<B>Œ</B>', tclass: 'normal'},
- {c: '<B>Ø</B>', tclass: 'normal'},
- // 20 - 2F
- {c: '<B>?</B>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
- {c: '<B>!</B>', lig: {'96': 60}, tclass: 'normal'},
- {c: '<B>”</B>', tclass: 'normal'},
- {c: '<B>#</B>', tclass: 'normal'},
- {c: '<B>$</B>', tclass: 'normal'},
- {c: '<B>%</B>', tclass: 'normal'},
- {c: '<B>&</B>', tclass: 'normal'},
- {c: '<B>’</B>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
- {c: '<B>(</B>', d:.2, tclass: 'normal'},
- {c: '<B>)</B>', d:.2, tclass: 'normal'},
- {c: '<B>*</B>', tclass: 'normal'},
- {c: '<B>+</B>', a:.1, tclass: 'normal'},
- {c: '<B>,</B>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '<B>-</B>', a:0, lig: {'45': 123}, tclass: 'normal'},
- {c: '<B>.</B>', a:-.25, tclass: 'normal'},
- {c: '<B>/</B>', tclass: 'normal'},
- // 30 - 3F
- {c: '<B>0</B>', tclass: 'normal'},
- {c: '<B>1</B>', tclass: 'normal'},
- {c: '<B>2</B>', tclass: 'normal'},
- {c: '<B>3</B>', tclass: 'normal'},
- {c: '<B>4</B>', tclass: 'normal'},
- {c: '<B>5</B>', tclass: 'normal'},
- {c: '<B>6</B>', tclass: 'normal'},
- {c: '<B>7</B>', tclass: 'normal'},
- {c: '<B>8</B>', tclass: 'normal'},
- {c: '<B>9</B>', tclass: 'normal'},
- {c: '<B>:</B>', tclass: 'normal'},
- {c: '<B>;</B>', tclass: 'normal'},
- {c: '<B>¡</B>', tclass: 'normal'},
- {c: '<B>=</B>', a:0, d:-.1, tclass: 'normal'},
- {c: '<B>¿</B>', tclass: 'normal'},
- {c: '<B>?</B>', lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '<B>@</B>', tclass: 'normal'},
- {c: '<B>A</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>B</B>', tclass: 'normal'},
- {c: '<B>C</B>', tclass: 'normal'},
- {c: '<B>D</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- {c: '<B>E</B>', tclass: 'normal'},
- {c: '<B>F</B>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>G</B>', tclass: 'normal'},
- {c: '<B>H</B>', tclass: 'normal'},
- {c: '<B>I</B>', krn: {'73': 0.0278}, tclass: 'normal'},
- {c: '<B>J</B>', tclass: 'normal'},
- {c: '<B>K</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>L</B>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>M</B>', tclass: 'normal'},
- {c: '<B>N</B>', tclass: 'normal'},
- {c: '<B>O</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- // 50 - 5F
- {c: '<B>P</B>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: '<B>Q</B>', d: 1, tclass: 'normal'},
- {c: '<B>R</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>S</B>', tclass: 'normal'},
- {c: '<B>T</B>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: '<B>U</B>', tclass: 'normal'},
- {c: '<B>V</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>W</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>X</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>Y</B>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: '<B>Z</B>', tclass: 'normal'},
- {c: '<B>[</B>', d:.1, tclass: 'normal'},
- {c: '<B>“</B>', tclass: 'normal'},
- {c: '<B>]</B>', d:.1, tclass: 'normal'},
- {c: '<B>ˆ</B>', tclass: 'accent'},
- {c: '<B>˙</B>', tclass: 'accent'},
- // 60 - 6F
- {c: '<B>‘</B>', lig: {'96': 92}, tclass: 'normal'},
- {c: '<B>a</B>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>b</B>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>c</B>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
- {c: '<B>d</B>', tclass: 'normal'},
- {c: '<B>e</B>', a:0, tclass: 'normal'},
- {c: '<B>f</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: '<B>g</B>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
- {c: '<B>h</B>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>i</B>', tclass: 'normal'},
- {c: '<B>j</B>', d:1, tclass: 'normal'},
- {c: '<B>k</B>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>l</B>', tclass: 'normal'},
- {c: '<B>m</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>n</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>o</B>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- // 70 - 7F
- {c: '<B>p</B>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>q</B>', a:0, d:1, tclass: 'normal'},
- {c: '<B>r</B>', a:0, tclass: 'normal'},
- {c: '<B>s</B>', a:0, tclass: 'normal'},
- {c: '<B>t</B>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>u</B>', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
- {c: '<B>v</B>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>w</B>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>x</B>', a:0, tclass: 'normal'},
- {c: '<B>y</B>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: '<B>z</B>', a:0, tclass: 'normal'},
- {c: '<B>–</B>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
- {c: '<B>—</B>', a:.1, ic: 0.0278, tclass: 'normal'},
- {c: '<B>˝</B>', tclass: 'accent'},
- {c: '<B>˜</B>', tclass: 'accent'},
- {c: '<B>¨</B>', tclass: 'accent'}
- ]
-});
-
-
-/*
- * We need to replace the jsMath.Box.TeX function in order to use the
- * different font metrics in the tables above, and to handle the
- * scaling better.
- */
-
-jsMath.Add(jsMath.Box,{
- TeX: function (C,font,style,size) {
- c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
- if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
- if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
- var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
- var scale = jsMath.Typeset.TeX(style,size).scale;
- if (c.bh != null) {
- box.bh = c.bh * scale;
- box.bd = c.bd * scale;
- } else {
- var h = box.bd+box.bh;
- var ph = Math.round(h*jsMath.em);
- if (h > jsMath.hd) {
- box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
- + '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'width: 1; height: '+ph+'px">').h - h;
- box.bh = h - box.bd;
- }
- c.bh = box.bh/scale;
- c.bd = box.bd/scale;
- }
- if (jsMath.msieFontBug) {
- // hack to avoid Font changing back to the default
- // font when a unicode reference is not followed
- // by a letter or number
- box.html += '<SPAN STYLE="display: none">x</SPAN>'
- }
- return box;
- }
-});
-
-jsMath.Update.Styles({
- '.cmr10': "font-family: serif",
- '.lucida': "font-family: 'Lucida Grande'",
- '.asymbol': "font-family: 'Apple Symbols'; font-size: 115%",
- '.cal': "font-family: 'Apple Chancery'",
- '.arrows': "font-family: 'Hiragino Mincho Pro'",
- '.arrow1': "font-family: 'Hiragino Mincho Pro'; position: relative; top: .075em; margin: -1px",
- '.arrow1a': "font-family: 'Hiragino Mincho Pro'; margin:-.3em",
- '.arrow1b': "font-family: AppleGothic; font-size: 50%",
- '.arrow2': "font-family: Symbol; font-size: 140%; position: relative; top: .1em; margin:-1px",
- '.arrow2a': "font-family: Symbol",
- '.arrow2b': "font-family: AppleGothic; font-size: 67%",
- '.harpoon': "font-family: AppleGothic; font-size: 90%",
- '.symbol': "font-family: 'Hiragino Mincho Pro'",
- '.symbol2': "font-family: 'Hiragino Mincho Pro'; margin:-.2em",
- '.symbol3': "font-family: AppleGothic",
- '.delim1': "font-family: Times; font-size: 133%; position:relative; top:.75em",
- '.delim1b': "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position:relative; top:.8em; margin: -.1em",
- '.delim1c': "font-family: Symbol; font-size: 120%; position:relative; top:.8em;",
- '.delim2': "font-family: Baskerville; font-size: 180%; position:relative; top:.75em",
- '.delim2b': "font-family: 'Hiragino Mincho Pro'; font-size: 190%; position:relative; top:.8em; margin: -.1em",
- '.delim2c': "font-family: Symbol; font-size: 167%; position:relative; top:.8em;",
- '.delim3': "font-family: Baskerville; font-size: 250%; position:relative; top:.725em",
- '.delim3b': "font-family: 'Hiragino Mincho Pro'; font-size: 250%; position:relative; top:.8em; margin: -.1em",
- '.delim3c': "font-family: symbol; font-size: 240%; position:relative; top:.775em;",
- '.delim4': "font-family: Baskerville; font-size: 325%; position:relative; top:.7em",
- '.delim4b': "font-family: 'Hiragino Mincho Pro'; font-size: 325%; position:relative; top:.8em; margin: -.1em",
- '.delim4c': "font-family: Symbol; font-size: 300%; position:relative; top:.8em;",
- '.vertical': "font-family: Copperplate",
- '.vertical1': "font-family: Copperplate; font-size: 85%; margin: .15em;",
- '.vertical2': "font-family: Copperplate; font-size: 85%; margin: .17em;",
- '.greek': "font-family: serif",
- '.bigop1': "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position: relative; top: .85em; margin:-.05em",
- '.bigop1a': "font-family: Baskerville; font-size: 100%; position: relative; top: .775em;",
- '.bigop1b': "font-family: 'Hiragino Mincho Pro'; font-size: 160%; position: relative; top: .7em; margin:-.1em",
- '.bigop1c': "font-family: Apple Symbols; font-size: 125%; position: relative; top: .75em; margin:-.1em;",
- '.bigop2': "font-family: 'Hiragino Mincho Pro'; font-size: 200%; position: relative; top: .8em; margin:-.07em",
- '.bigop2a': "font-family: Baskerville; font-size: 175%; position: relative; top: .7em;",
- '.bigop2b': "font-family: 'Hiragino Mincho Pro'; font-size: 270%; position: relative; top: .62em; margin:-.1em",
- '.bigop2c': "font-family: 'Apple Symbols'; font-size: 250%; position: relative; top: .7em; margin:-.17em;",
- '.wide1': "font-size: 67%; position: relative; top:-.8em",
- '.wide2': "font-size: 110%; position: relative; top:-.5em",
- '.wide3': "font-size: 175%; position: relative; top:-.32em",
- '.wide1a': "font-size: 75%; position: relative; top:-.5em",
- '.wide2a': "font-size: 133%; position: relative; top: -.15em",
- '.wide3a': "font-size: 200%; position: relative; top: -.05em",
- '.root': "font-family: Baskerville;",
- '.accent': "position: relative; top: .02em"
-});
-
-/*
- * Check for ability to access Apple Symbols font
- */
-
-jsMath.noAppleSymbols = (jsMath.BBoxFor('∣').w ==
- jsMath.BBoxFor('<SPAN STYLE="font-family: Apple Symbols">∣</SPAN>').w);
-
-if (jsMath.noAppleSymbols) {
- jsMath.Update.TeXfonts({
- cmsy10: {
- '16': {c: '<SPAN STYLE="position:relative;top:.25em; font-size: 67%">⌣</SPAN><SPAN STYLE="position:relative;top:-.15em;font-size:67%;margin-left:-1em">⌢</SPAN>', tclass: 'normal'},
- '22': {c: '≺<SPAN STYLE="position:relative;top:.3em; margin-left:-1em">—</SPAN>', tclass: 'normal'},
- '23': {c: '≻<SPAN STYLE="position:relative;top:.3em; margin-left:-1em">—</SPAN>', tclass: 'normal'},
- '91': {c: '∪'},
- '92': {c: '∩'},
- '93': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</SPAN>'},
- '94': {c: '∧'},
- '95': {c: '∨'},
- '96': {c: '|<SPAN STYLE="position:relative; top:-.15em; margin-left:-.1em">–</SPAN>', tclass: 'normal'},
- '109': {c: '⇑<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">⇓</SPAN>', h:.9, d:.2, tclass: 'arrow2a'}
- },
-
- cmex10: {
- '85': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</SPAN>'},
- '93': {c: '∪<SPAN STYLE="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</SPAN>'}
- }
- });
-
- jsMath.Macro('rightleftharpoons','\\unicode{x21CC}');
-} else {
- jsMath.Update.Styles({
- '.harpoon': 'font-family: Apple Symbols; font-size: 125%'
- });
-
-}
-
-
-//
-// Adjust for OmniWeb
-//
-if (navigator.accentColorName) {
- jsMath.Update.TeXfonts({
- cmsy10: {
- '55': {c: '<SPAN STYLE="font-size: 75%; position:relative; left:.3em; top:-.15em; margin-left:-.3em">˫</SPAN>'},
- '104': {c: '<SPAN STYLE="position:relative; top:.2em; margin-left:-.55em">〈</SPAN>'},
- '105': {c: '<SPAN STYLE="position:relative; top:.2em; margin-right:-.55em">〉</SPAN>'}
- }
- });
-
- jsMath.Update.Styles({
- '.arrow2': 'font-family: Symbol; font-size: 100%; position: relative; top: -.1em; margin:-1px'
- });
-
- if (jsMath.noAppleSymbols) {
- jsMath.Update.TeXfonts({
- cmsy10: {
- '22': {c: '≺<SPAN STYLE="position:relative;top:.25em; margin-left:-.8em; margin-right:.2em">–</SPAN>', tclass: 'normal'},
- '23': {c: '≻<SPAN STYLE="position:relative;top:.25em; margin-left:-.7em; margin-right:.1em">–</SPAN>', tclass: 'normal'},
- '96': {c: '<SPAN STYLE="font-size:80%; position:relative; top:-.15em">|</SPAN><SPAN STYLE="position:relative; top:-.1em; margin-left:-.1em">–</SPAN>', tclass: 'normal'}
- }
- });
- }
-
-}
-
-//
-// Check for Mozilla
-//
-if (jsMath.hidden.ATTRIBUTE_NODE) {jsMath.Setup.Script('jsMath-fallback-mac-mozilla.js')}
-//
-// Check for MSIE
-//
-if (jsMath.spanHeightVaries) {jsMath.Setup.Script('jsMath-fallback-mac-msie.js')}
-
-
-/*
- * Reinstall Styles and fonts
- */
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
-
-/*
- * No access to TeX "not" character, so fake this
- */
-jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
-
-
-jsMath.absoluteHeightVaries = 1;
-
-jsMath.defaultH = 0.8;
-
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+jsMath.Script.Uncompress([
+ ['jsMath.Script.Start();jsMath.Add(jsMath.TeX,{cmr10',':[{c:"Γ",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek','"},{c:"','ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',28,':"fl",',28,':"ffi",',28,':"ffl",',28,':"ı',';",a:0,',28,':"j",d:0.2,',28,':"`",',22,'accent','"},{c:"&#','xB4;",',22,44,45,'x2C7;",',22,44,45,'x2D8;",',22,44,'"},{c:"<span style=\\"','position:relative; top',':.1em\\">ˉ',';</span>",',22,44,45,'x2DA;",',22,44,45,'x0327;",',28,':"ß",',28,':"æ',38,28,':"œ',38,28,':"ø",',28,':"Æ",',28,':"Œ",',28,':"Ø",',28,':"?",krn:{"108":-0.278,"76":-0.319},',28,':"!",lig:{"96":60},',28,':"”",',28,':"#",',28,':"$",',28,':"%",',28,':"&",',28,':"’",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',28,':"(",','d:0.2,',28,':")",',105,28,':"*",',28,':"+",','a:0.1,',28,':",",a:-','0.3,d:0.2,','w:0.278,',28,':"-",','a:0,','lig:{"45":123},',28,':".",a:-0.','25,',28,':"/",',28,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,':":",',28,':";",',28,':"¡",',28,':"=",','a:0,d:-0.','1,',28,':"¿",',28,':"?",lig:{"96":62},',28,':"@",',28,':"A','",krn:{"','116','":-0.0278,"','67',167,'79',167,'71',167,'85',167,'81',167,'84','":-0.0833,"','89',179,'86','":-0.111',',"87',183,'},',28,':"B",',28,':"C",',28,':"D',165,'88',167,'87',167,'65',167,'86',167,'89','":-0.0278','},',28,':"E",',28,':"F',165,'111',179,'101',179,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',167,'67',167,'71',167,'81',203,'},',28,':"G",',28,':"H",',28,':"I',165,'73":0.','0278','},',28,':"J",',28,':"K',165,'79',167,'67',167,'71',167,'81',203,'},',28,':"L',165,'84',179,'89',179,'86',183,',"87',183,'},',28,':"M",',28,':"N",',28,':"O',165,'88',167,'87',167,'65',167,'86',167,'89',203,'},',28,'
:"P',165,'65',179,'111',167,'101',167,'97',167,'46',179,'44":-0.','0833','},',28,':"Q",','d:0.1,',28,':"R',165,'116',167,'67',167,'79',167,'71',167,'85',167,'81',167,'84',179,'89',179,'86',183,',"87',183,'},',28,':"S",',28,':"T',165,'121',167,'101',179,'111',215,293,',"117":-0.',293,'},',28,':"U",',28,':"V",','ic:0.0139,krn:{"','111',179,'101',179,'117',215,'111,"79',167,'67',167,'71',167,'81',203,'},',28,':"W",',341,'111',179,'101',179,'117',215,'111,"79',167,'67',167,'71',167,'81',203,'},',28,':"X',165,'79',167,'67',167,'71',167,'81',203,'},',28,':"Y",ic:0.025,','krn:{"101',179,'111',215,293,334,293,'},',28,':"Z",',28,':"[",',297,28,':"“",',28,':"]",',297,28,':"ˆ",',22,44,45,'x2D9;",',22,44,45,'x2018;",lig:{"96":92},',28,':"a','",a:0,krn:{"','118',167,'106":0.','0556,"121',167,'119',203,'},',28,':"b',165,'101','":0.0278,"','111',432,'120',167,'100',432,'99',432,'113',432,'118',167,422,'0556,"121',167,'119',203,'},',28,':"c',419,'104',167,'107',203,'},',28,':"d",',28,':"e','",a:0,',28,':"f',26,'12,"102":11,"108":13},',28,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',422,233,'},',28,':"h',165,'116',167,'117',167,'98',167,'121',167,'118',167,'119',203,'},',28,':"i",',28,40,28,':"k',165,'97','":-0.0556,"','101',167,'97',167,'111',167,'99',203,'},',28,':"l",',28,':"m',419,'116',167,'117',167,'98',167,'121',167,'118',167,'119',203,'},',28,':"n',419,'116',167,'117',167,'98',167,'121',167,'118',167,'119',203,'},',28,':"o',419,'101',432,'111',432,'120',167,'100',432,'99',432,'113',432,'118',167,422,'0556,"121',167,'119',203,'},',28,':"p',463,105,389,432,'111',432,'120',167,'100',432,'99',432,'113',432,'118',167,422,'0556,"121',167,'119',203,'},',28,':"q',463,105,28,':"r',463,28,':"s',463,28,':"t',165,'121',167,'119',203,'},',28,':"u',419,'119',203,'},',28,':"v',463,341,'97',499,'101',167,'97',167,'111',167,'99',203,'},',28,':"w',463,341,'101',167,'97',167,'111',167,'99',203,'},',28,':"x',463,28,':"y",',470,471,'111',167,'101',167,'97',167,'46',179,'44":-0.',293,'},',28,':"z',463,28,':"–',';",a:0.1,','ic:0.
',233,',lig:{"45":124},',28,':"—',665,'ic:0.',233,',',28,':"˝",',22,44,45,'x2DC;",',22,44,45,'xA8;",',22,44,'"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',293,'},tclass:"igreek"},{c:"&',3,'krn:{"127":0.','167',692,5,'ic:0.',233,',krn:{"127":0.',293,692,7,694,'167',692,9,'ic:0.0757',700,293,692,11,'ic:0.0812,krn:{"61',499,'59":-0.0556,"58":-0.0556,"127":0.','0556',692,13,'ic:0.0576',700,293,692,15,'ic:0.139',690,'0556',692,17,694,293,692,19,'ic:0.11,krn:{"61',499,715,'0556',692,21,'ic:0.0502',700,293,692,'alpha',';",a:0,ic:0.','0037',700,233,'},',2,'beta;",','d:0.2,ic:0.','0528',700,293,'},',2,'gamma;",',470,'0556,',2,'delta;",ic:0.0378,krn:{"',715,'0556},',2,'epsilon;",a:0',700,'0556},',22,'lucida"},{c:"ζ",',751,'0738',700,293,'},',2,'eta;",',470,'0359',700,'0556},',2,'theta;",ic:0.',233,700,293,'},',2,'iota;",a:0',700,'0556},',2,'kappa',38,2,'lambda;",',2,'mu',38,'d:0.2',700,233,'},',2,'nu',744,'0637,krn:{"',715,233,'},',2,'xi;",',751,'046',700,101,2,'pi',744,'0359,',2,'rho',38,'d:0.2',700,293,'},',2,'sigma',744,819,'krn:{"59',499,'58":-0.0556','},',2,'tau',744,'113,krn:{"',715,233,'},',2,'upsilon',744,'0359',700,233,'},',2,'phi',665,'d:0.2',700,293,'},',2,'chi',38,'d:0.2',700,'0556},',2,'psi',665,751,'0359',700,101,2,'omega',744,819,2,'epsilon;",a:0',700,293,'},',22,'greek',45,'x3D1;",',694,293,'},',28,':"ϖ',744,233,',',28,':"ϱ',38,'d:0.2',700,293,'},',28,':"ς",',470,'0799',700,293,'},',28,':"ϕ',665,'d:0.2',700,293,'},',28,':"↼",',155,'2,',22,'harpoon',45,'x21BD;",',155,'1,',22,'harpoon',45,'x21C0;",',155,'2,',22,'harpoon',45,'x21C1;",',155,'1,',22,'harpoon',57,'font-size',': 133%; ',58,':.1em; margin:-.2em; left:-.05em\\">&#','x02D3',60,113,22,'lucida',57,936,937,58,939,'x02D2',60,113,22,'lucida',57,936,':50%\\">&#','x25B7',60,22,'symbol',57,936,957,'x25C1',60,22,961,24,'0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,123,'3,',28,':",",a:-',116,28,':"<',665,28,':"<span sty
le=\\"',936,':133%; ',58,':.1em\\">/</','span>",',297,'krn:{"1',499,'65',499,'77',499,'78',499,'89":0.0556,"90":-0.0556},',28,':">',665,28,999,936,957,'x2605',60,120,'tclass:"symbol"},{c:"&#','x2202;",ic:0.0556',700,293,'},',28,':"A",',694,'139','},tclass:"italic"},{c:"','B",ic:0.0502',700,293,1034,'C",ic:0.0715,krn:{"61',167,715,293,1034,'D",ic:0.',233,700,'0556',1034,'E",ic:0.0576',700,293,1034,'F",ic:0.139',690,293,1034,'G",',694,293,1034,'H",ic:0.0812,krn:{"61',499,715,'0556',1034,'I",ic:0.0785',700,'111',1034,'J",ic:0.0962',690,'167',1034,'K",ic:0.0715,krn:{"61',499,715,'0556',1034,'L",',694,233,1034,'M','",ic:0.109,krn:{"','61',499,715,293,1034,'N',1084,'61',179,'61',167,715,293,1034,'O",ic:0.',233,700,293,1034,'P",ic:0.139',690,293,1034,'Q",d:0.2',700,293,1034,'R",ic:0.00773',700,293,1034,'S",ic:0.0576,krn:{"61',499,715,293,1034,'T','",ic:0.139,krn:{"','61',167,715,293,1034,'U',1084,'59',183,',"58',183,',"61',499,'127":0.',233,1034,'V",ic:0.222,krn:{"59','":-0.167,"','58',1140,'61',183,1034,'W',1122,'59',1140,'58',1140,'61',183,1034,'X",ic:0.0785,krn:{"61',179,'61',167,715,293,1034,'Y",ic:0.222,krn:{"59',1140,'58',1140,'61',183,1034,'Z",ic:0.0715,krn:{"61',499,715,293,'},',22,'italic',45,'x266D;",',22,'symbol2',45,'x266E;",',22,'symbol2',45,'x266F;",',22,'symbol2',57,'position: relative; top',':.5em\\">⌣',60,155,'1,',28,999,1189,':-.3em\\">⌢',60,155,'1,',28,':"ℓ",',694,101,22,961,24,'a',463,22,'italic"},{c:"','b",',22,1211,'c",a:0',700,'0556',1034,'d',165,'89":0.0556,"90',499,'106',183,',"102',1140,1136,'167',1034,'e",a:0',700,'0556',1034,'f",',751,'108,krn:{"',715,'167',1034,'g",',470,'0359',700,233,1034,'h',165,'127',203,1034,'i",',22,1211,'j",',751,'0572,krn:{"59',499,833,1034,'k",ic:0.0315,',22,1211,'l",ic:0.0197',700,293,1034,'m',463,22,1211,'n',463,22,1211,'o",a:0',700,'0556',1034,'p',463,'d:0.2',700,293,1034,'q",',470,'0359',700,293,1034,'r','",a:0,ic:0.',233,',krn:{"',715,'0556',1034,'s",a:0',700,'0556',1034,'t",',694,293,1034,'u",a:0',700,233,1034,'v',1292,'0359',700,233,1034
,'w',1292,'0269',700,293,1034,'x",a:0',700,233,1034,'y",',470,'0359',700,'0556',1034,'z',1292,'044',700,'0556},',22,'italic',45,'x131;",a:0',700,233,1034,'j",d:0.2',700,293,'},',22,'italic',45,'x2118',38,'d:0.2',700,101,28,999,'position:relative; left: .4em; top: -.8em; ',936,': 50%\\">→',60,'ic:0.154,',1025,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c:"−',665,1025,'xB7;",',155,'2,',1025,'xD7',38,22,961,57,58,':.3em\\">*',60,120,1025,'xF7',38,1025,'x25CA;",',22,'lucida',45,'xB1',665,1025,'x2213;",',1025,'x2295;",',1025,'x2296;",',1025,'x2297;",',1025,'x2298;",',1025,'x2299;",',22,'symbol3',45,'x25EF;",',22,961,57,58,':.25em;\\">°',60,155,'1,',1025,'x2022;",',155,'2,',1025,'x224D',665,1025,'x2261',665,1025,'x2286;",',1025,'x2287;",',1025,'x2264;",',1025,'x2265;",',1025,'x227C;",',1025,'x227D;",',22,961,'"},{c:"~",',155,'2,',28,':"≈',665,'d:-0.1,',1025,'x2282;",',1025,'x2283;",',1025,'x226A;",',1025,'x226B;",',1025,'x227A;",',1025,'x227B;",',1025,'x2190;",',155,'15,',22,'arrow1',45,'x2192;",',155,'15,',22,'arrow1',45,'x2191',';",h:1,',22,'arrow1a',45,'x2193',1473,22,'arrow1a',45,'x2194',38,22,'arrow1',45,'x2197',1473,22,'arrows',45,'x2198',1473,22,'arrows',45,'x2243',665,1025,'x21D0',665,22,'arrow2',45,'x21D2',665,22,'arrow2',45,'x21D1;",h:0.9,',297,22,'arrow2a',45,'x21D3;",h:0.9,',297,22,'arrow2a',45,'x21D4',665,22,'arrow2',45,'x2196',1473,22,'arrows',45,'x2199',1473,22,'arrows',45,'x221D',665,22,961,57,936,937,'margin-right',': -.1em; ',1189,':.4em\\">′',60,120,22,'lucida',45,'x221E',665,1025,'x2208;",',1025,'x220B;",',1025,'x25B3;",',1025,'x25BD;",',22,961,'"},{c:"/",',22,961,57,936,':50%; ',58,':-.3em; ',1542,':-.2em\\">|</',1004,120,28,':"∀",',1025,'x2203;",',1025,'xAC;",',155,'1,',22,'symbol1',45,'x2205;",',1025,'x211C;",',1025,'x2111;",',1025,'x22A4;",',1025,'x22A5;",',1025,'x2135;",',22,961,24,'A','",krn:{"48":0.','194','},tclass:"cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139',1603,'C",ic:0.0583',1605,'139',1603,'D",ic:0.',233,1605,293,1603,'E",ic:0.0894',1605,'111'
,1603,'F",ic:0.0993',1605,'111',1603,'G",',751,'0593',1605,'111',1603,'H",ic:0.00965',1605,'111',1603,'I",ic:0.0738',1605,233,1603,'J",',751,'185',1605,'167',1603,'K",ic:0.0144',1605,'0556',1603,'L',1601,'139',1603,'M',1601,'139',1603,'N",ic:0.147',1605,293,1603,'O",ic:0.',233,1605,'111',1603,'P",ic:0.0822',1605,293,1603,'Q",d:0.2',1605,'111',1603,'R',1601,293,1603,'S",ic:0.075',1605,'139',1603,'T",ic:0.254',1605,233,1603,'U",ic:0.0993',1605,293,1603,'V",ic:0.0822',1605,233,1603,'W",ic:0.0822',1605,293,1603,'X",ic:0.146',1605,'139',1603,'Y",ic:0.0822',1605,293,1603,'Z",ic:0.0794',1605,'139},',22,'cal',45,'x22C3;",',1025,'x22C2;",',1025,'x228E;",',1025,'x22C0;",',1025,'x22C1;",',1025,'x22A2;",',1025,'x22A3;",',22,'symbol2',45,'xF8F0',';",a:',116,28,':"",a:',116,28,':"",a:',116,28,':"",a:',116,28,':"{",',105,28,':"}",',105,28,':"〈",a:',116,28,':"〉",a:',116,28,':"|",',297,22,'vertical','"},{c:"||",',297,22,'vertical',45,'x2195',1473,'d:0.15,',22,'arrow1a',45,'x21D5;",a:0.2,',297,22,'arrows',57,'margin:-.1em\\">&#','x2216',60,'a:0.3,',297,22,'lucida',57,936,': 75%; margin:-.3em\\">≀',60,22,961,57,58,': .86em\\">√',60,'h:0.04,d:0.9,',22,'lucida',45,'x2210;",a:0.4,',1025,'x2207;",',1025,'x222B',1473,297,'ic:0.111,',22,'root',45,'x2294;",',1025,'x2293;",',1025,'x2291;",',1025,'x2292;",',1025,'xA7;",',297,28,':"†",',297,28,':"‡",',297,28,':"¶",a:0.3,',297,22,'lucida',45,'x2663;",',1025,'x2666;",',1025,'x2665;",',1025,'x2660;",',22,961,'"}],cmex10:[{c',104,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',107,1838,'17,',22,1841,400,1838,'104,',22,1841,405,1838,'105,',22,'delim1',45,1728,'",',1838,'106,',22,'delim1',45,'xF8FB',';",h:0.04,d:','1.16,n:','107,',22,'delim1',45,'xF8EE',1866,1867,'108,',22,'delim1',45,'xF8F9',1866,1867,'109,',22,1841,1741,1838,'110,',22,1841,1744,1838,'111,',22,'delim1',45,'x3008',1866,1867,'68,',22,'delim1c',45,'x3009',1866,1867,'69,',22,'delim1c"},{c',1753,'h:0.7,d:0.15,delim:{','rep:12},',22,'vertical1',1757,1910,'rep:13},',22,'ver
tical1',45,'x2215',1866,1867,'46,',22,'delim1b',45,1774,1866,1867,'47,',22,'delim1b"},{c',104,'h:0.04,d:1.76,n:','18,',22,'delim2"},{c',107,1934,'19,',22,1937,104,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',107,1944,'33,',22,1947,400,1944,'34,',22,1947,405,1944,'35,',22,'delim3',45,1728,1866,'2.36,n:','36,',22,'delim3',45,'xF8FB',1866,1966,'37,',22,'delim3',45,'xF8EE',1866,1966,'38,',22,'delim3',45,'xF8F9',1866,1966,'39,',22,'delim3',57,'margin: -.1em','\\">{</',1004,1944,'40,',22,'delim3',57,1992,'\\">}</',1004,1944,'41,',22,'delim3',45,'x3008',1866,1966,'42,',22,'delim3c',45,'x3009',1866,1966,'43,',22,'delim3c',45,'x2215',1866,1966,'44,',22,'delim3b',45,1774,1866,1966,'45,',22,'delim3b"},{c',104,'h:0.04,d:2.96,n:','48,',22,'delim4"},{c',107,2036,'49,',22,2039,400,2036,'50,',22,2039,405,2036,'51,',22,'delim4',45,1728,1866,'2.96,','n:52,',22,'delim4',45,'xF8FB',1866,2058,'n:53,',22,'delim4',45,'xF8EE',1866,2058,'n:54,',22,'delim4',45,'xF8F9',1866,2058,'n:55,',22,'delim4',57,1992,'\\">{</',1004,2036,'56,',22,'delim4',57,1992,'\\">}</',1004,2036,'57,',22,'delim4',45,'x3008',1866,2058,22,'delim4c',45,'x3009',1866,2058,22,'delim4c',45,'x2215',1866,2058,22,'delim4b',45,1774,1866,2058,22,'delim4b',45,'x2215',1866,'1.76,n:','30,',22,'delim2b',45,1774,1866,2126,'31,',22,'delim2b',45,'xF8EB',';",h:0.85,d:0.2,delim:{','top:48,bot:64,rep:66},',28,':"',2139,'top:49,bot:65,rep:67},',28,':"',2139,'top:50,bot:52,rep:54},',28,':"',2139,'top:51,bot:53,rep:55},',28,':"&#',1728,2139,'bot:52,rep:54},',28,':"',2139,'bot:53,rep:55},',28,':"',2139,'top:50,rep:54},',28,':"',2139,'top:51,rep:55},',28,':"',2139,'top:56,mid:60,bot:58,rep:62},',28,':"',2139,'top:57,mid:61,bot:59,rep:62},',28,':"',2139,'top:56,bot:','58,rep:62},',28,':"',2139,'top:57,bot:','59,rep:62},',28,':"',2139,'rep:63},',28,':"',2139,'rep:119},',28,':"',2139,'rep:62},',28,1753,1910,'top:120,bot:121,rep:63},',22,'vertical2',45,'xF8ED',2139,2181,'59,rep:62},',28,':"',2139,218
6,'58,rep:62},',28,':"',2139,'rep:66},',28,':"',2139,'rep:67},',28,':"〈',1866,2126,'28,',22,'delim2c',45,'x3009',1866,2126,'29,',22,'delim2c',45,'x2294',';",h:0,d:1,n:','71,',22,'bigop1',45,1805,'h:0.1,d:1.5,',22,'bigop2',45,'x222E;",h:0,d:','1.11,ic:0.095,n:73,',22,'bigop1c',45,2250,'2.22,ic:0.222,',22,'bigop2c',45,'x2299',2240,'75,',22,'bigop1',45,1403,'h:0.1,d:1.5,',22,'bigop2',45,'x2295',2240,'77,',22,'bigop1',45,1395,'h:0.1,d:1.5,',22,'bigop2',45,'x2297',2240,'79,',22,'bigop1',45,1399,'h:0.1,d:1.5,',22,'bigop2',45,'x2211',2240,'88,tcl'],
+ ['ass:"','bigop1a','"},{c:"&#','x220F',';",h:0,d:1,n:','89,','tclass:"',1,2,'x222B;",h:0,d:','1.11,','ic:0.','095,n:90,',6,'bigop1c',2,'x222A',4,'91,',6,'bigop1b',2,'x2229',4,'92,',6,20,2,'x228E',4,'93,',6,20,2,'x2227',4,'94,',6,'bigop1',2,'x2228',4,'95,',6,38,2,'x2211',';",h:0.1,d:1.','6,',6,'bigop2a',2,'x220F',47,'5,',6,50,2,9,'2.22,',11,'222,',6,'bigop2c',2,16,47,'5,',6,'bigop2b',2,22,47,'5,',6,69,2,'x228E',47,'5,',6,69,2,34,47,'5,',6,'bigop2',2,40,47,'5,',6,87,2,'x2210',4,'97,',6,1,2,'x2210',47,'5,',6,50,2,'xFE3F;",h:0.','722,w:0.','65,n:99,',6,'wide1',2,107,'85,w:1.1,n:100,',6,'wide2',2,107,'99,w:1.65,',6,'wide3',2,'x2053;",h:0.',108,'75,n:102,',6,'wide1a',2,123,'8,w:1.35,n:103,',6,'wide2a',2,123,'99,w:2,',6,'wide3a"},{c:"[",','h:0.04,d:1.76,n:','20,',6,'delim2','"},{c:"]",',138,'21,',6,141,2,'xF8F0;",',138,'22,',6,141,2,'xF8FB;",',138,'23,',6,141,2,'xF8EE;",',138,'24,',6,141,2,'xF8F9",',138,'25,',6,141,'"},{c:"<','span style=\\"','margin: -.1em','\\">{</span>",',138,'26,',6,141,'"},{c:"<',172,173,'\\">}</span>",',138,'27,',6,141,'"},{c:"<span style=\\"font-size: ','125','%; position:relative; top:.','95em','\\">√</span>",h:0.','04,d:1.16,n:113,',6,'root',187,'190',189,'925em',191,'04,d:1.76,n:114,',6,194,187,'250',189,'925em',191,'06,d:2.36,n:115,',6,194,187,'320',189,'92em',191,'08,d:2.96,n:116,',6,194,187,'400',189,'92em',191,'1,d:3.75,n:117,',6,194,187,'500',189,'9em',191,'12,d:4.5,n:118,',6,194,187,'625',189,'9em',191,'14,d:5.7,',6,194,'"},{c:"||",h:0.65,d:0.15',',delim:{top:126,','bot:127,rep:119},',6,'vertical2',2,'x25B5;",h:0.','4,delim:{top:120,rep:63},',6,'arrow1b',2,'x25BF;",h:0.','38,delim:{bot:121,rep:63},',6,252,187,'67',189,'35em','; margin-left:-.','5em\\">╭',';</span>",','h:0.1,',6,'symbol',187,'67',189,'35em; margin-right:-.5em\\">&#','x256E',264,265,6,267,187,'67',189,'35em',262,'5em\\">╰',264,265,6,267,187,'67',189,271,'x256F',264,265,6,267,2,249,'5',244,'rep:119},',6,'arrow2b',2,254,'6,d:-0.1,delim:{bot:127,rep:119},',6,302,'"}],cmti10',':[{c:"Γ",',11,'133,',
6,'igreek"},{c:"&','Delta;",',6,313,'Theta;",','ic:0.094,',6,313,'Lambda;",',6,313,'Xi;",',11,'153,',6,313,'Pi;",',11,'164,',6,313,'Sigma;",',11,'12,',6,313,'Upsilon;",',11,'111,',6,313,'Phi;",',11,'0599,',6,313,'Psi;",',11,341,6,313,'Omega;",','ic:0.103,',6,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',361,':"fl',363,361,':"ffi',363,361,':"ffl',363,361,':"ı",a:0,',11,'0767,',361,':"j",d:0.2,',11,'0374,',361,':"`",',6,'iaccent',2,'xB4;",',11,'0969,',6,384,2,'x2C7;",',11,'083,',6,384,2,'x2D8;",',11,'108,',6,384,2,'x2C9;",',355,6,384,2,'x2DA;",',6,384,'"},{c:"?",','d:0.17,w:0.46,',361,':"ß",',11,'105,',361,':"æ",a:0,','ic:0.0751,',361,':"œ",a:0,',420,361,':"ø",',11,'0919,',361,':"Æ",',11,'12,',361,':"Œ",',11,'12,',361,':"Ø",',318,361,':"?",krn:{"108":-0.','256,"76":-0.321},',361,':"!",','ic:0.124,lig:{"96":','60},',361,':"”",',11,'0696,',361,':"#",',11,'0662,',361,':"$",',361,':"%",',11,'136,',361,':"&",',11,'0969,',361,':"’",',11,'124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',361,':"(",d:0.2,',11,'162,',361,':")",d:0.2,',11,'0369,',361,':"*",',11,'149,',361,':"+",a:0.1,',11,'0369,',361,':",",a:-0.3,d:0.2,w:0.278,',361,':"-",a:0,',11,'0283',',lig:{"45":','123},',361,':".",a:-0.25,',361,':"/",',11,'162,',361,':"0",',11,'136,',361,':"1",',11,'136,',361,':"2",',11,'136,',361,':"3",',11,'136,',361,':"4",',11,'136,',361,':"5",',11,'136,',361,':"6",',11,'136,',361,':"7",',11,'136,',361,':"8",',11,'136,',361,':"9",',11,'136,',361,':":",',11,'0582,',361,':";",',11,'0582,',361,':"¡",',11,'0756,',361,':"=",a:0,d:-0.1,',11,'0662,',361,':"¿",',361,':"?",','ic:0.122,','lig:{"96":','62},',361,':"@",',11,'096,',361,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.025
6,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',571,'86','":-0.102,"','87',575,'101','":-0.0511,"','97',579,'111',579,'100',579,'99',579,'103',579,'113','":-0.0511','},',361,':"B',363,361,':"C",','ic:0.145,',361,':"D",',318,'krn:{"88','":-0.0256,"','87',603,'65',603,'86',603,'89":-0.','0256},',361,':"E",',11,'12,',361,':"F','",ic:0.133,krn:{"','111',571,'101',571,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',575,'79',603,'67',603,'71',603,'81":-0.0256','},',361,':"G",',11,'0872,',361,':"H",',11,'164,',361,':"I",',11,'158,',361,':"J",',11,'14,',361,':"K",',598,'krn:{"79',603,'67',603,'71',603,633,'},',361,':"L",krn:{"84',571,'89',571,'86',575,'87',575,'101',579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"M",',11,'164,',361,':"N",',11,'164,',361,':"O",',318,'krn:{"88',603,'87',603,'65',603,'86',603,610,'0256},',361,':"P',363,'krn:{"65":-0.0767},',361,':"Q",d:0.1,',318,361,':"R",',11,'0387,',569,'0.0256,"84',571,'89',571,'86',575,'87',575,'101',579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"S",',11,'12,',361,':"T',618,'121',571,'101',571,'111',624,'117',571,'65":-0.0767},',361,':"U",',11,'164,',361,':"V",ic:0.','184,krn:{"','111',571,'101',571,'117',624,'65',575,'79',603,'67',603,'71',603,633,'},',361,':"W",ic:0.',764,'65":-0.0767},',361,':"X",',11,'158,krn:{"79',603,'67',603,'71',603,633,'},',361,':"Y",',11,'194',',krn:{"101',571,'111',624,'117',571,'65":-0.0767},',361,':"Z",',598,361,':"[",d:0.1,',11,'188,',361,':"“",',11,'169,',361,':"]",d:0.1,',11,'105,',361,':"ˆ",',11,'0665,',6,384,2,'x2D9;",',11,'118,',6,384,2,'x2018;",',444,'92},',361,':"a','",a:0,ic:0.',376,361,':"b",',11,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"c',840,'0565',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"d',363,'krn:{"108":','0.0511},',361,':"e',840,'0751',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"f',359,'12,"102":11,"108":13},',361,':"g','",a:0,d:0.2,
ic:0.','0885,',361,':"h",',11,376,361,':"i",',11,'102,',361,378,598,361,':"k",',11,400,361,':"l',363,883,'0.0511},',361,':"m',840,376,361,':"n',840,376,'krn:{"39":-0.102},',361,':"o',840,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"p',910,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"q',910,'0885,',361,':"r',840,'108',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"s',840,'0821,',361,':"t",',11,'0949,',361,':"u',840,376,361,':"v',840,400,361,':"w',840,400,883,'0.0511},',361,':"x',840,'12,',361,':"y',910,'0885,',361,':"z',840,'123,',361,':"–",a:0.1,ic:0.','0921',492,'124},',361,':"—",a:0.1,ic:0.','0921,',361,':"˝",',560,6,384,2,'x2DC;",',11,'116,',6,384,2,'xA8;",',6,384,'"}],cmbx10',309,6,'bgreek"},{c:"&','Delta;",',6,1062,317,6,1062,'Lambda;",',6,1062,324,6,1062,329,6,1062,334,6,1062,339,6,1062,344,6,1062,349,6,1062,354,6,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1096,':"fl",',1096,':"ffi",',1096,':"ffl",',1096,374,1096,378,1096,':"`",',6,'baccent',2,386,6,1111,2,392,6,1111,2,398,6,1111,2,404,6,1111,2,'x2DA;",',6,1111,412,1096,415,1096,419,1096,422,1096,425,1096,429,1096,433,1096,437,1096,440,'278,"76":-0.319},',1096,443,561,'60},',1096,447,1096,451,1096,':"$",',1096,457,1096,461,1096,465,468,'111,"33":0.111},lig:{"39":34},',1096,471,1096,475,1096,479,1096,483,1096,':",",a:-0.3,d:0.2,w:0.278,',1096,':"-",a:0',492,'123},',1096,':".",a:-0.25,',1096,497,1096,501,1096,505,1096,509,1096,513,1096,517,1096,521,1096,525,1096,529,1096,533,1096,537,1096,541,1096,545,1096,549,1096,553,1096,':"¿",',1096,559,561,'62},',1096,564,1096,':"A",krn:{"116','":-0.0278,"','67',1224,'79',1224,'71',1224,'85',1224,'81',1224,'84','":-0.0833,"','89',1236,'86":-0.','111,"87":-0.111},',1096,':"B",',1096,597,1096,':"D",krn:{"88',1224,'87',1224,'65',1224,'86',1224,610,'0278},',1096,613,1096,'
:"F",krn:{"111',1236,'101',1236,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1224,'67',1224,'71',1224,'81":-0.0278','},',1096,636,1096,640,1096,':"I",krn:{"73":0.0278},',1096,648,1096,':"K",krn:{"79',1224,'67',1224,'71',1224,1271,'},',1096,':"L",krn:{"84',1236,'89',1236,1239,'111,"87":-0.111},',1096,687,1096,691,1096,':"O",krn:{"88',1224,'87',1224,'65',1224,'86',1224,610,'0278},',1096,':"P",krn:{"65',1236,'111',1224,'101',1224,'97',1224,'46',1236,'44":-0.0833},',1096,712,1096,':"R",krn:{"116',1224,'67',1224,'79',1224,'71',1224,'85',1224,'81',1224,'84',1236,'89',1236,1239,'111,"87":-0.111},',1096,743,1096,':"T",krn:{"121',1224,'101',1236,'111',1264,'0833,"117":-0.0833','},',1096,759,1096,763,'0139,krn:{"','111',1236,'101',1236,'117',1264,'111,"79',1224,'67',1224,'71',1224,1271,'},',1096,782,1360,'111',1236,'101',1236,'117',1264,'111,"79',1224,'67',1224,'71',1224,1271,'},',1096,':"X",krn:{"79',1224,'67',1224,'71',1224,1271,'},',1096,':"Y",',11,'025',800,1236,'111',1264,1354,'},',1096,808,1096,811,1096,815,1096,819,1096,823,6,1111,2,829,6,1111,2,835,561,'92},',1096,':"a','",a:0,krn:{"','118',1224,'106":0.','0556,"121',1224,'119":-0.','0278},',1096,':"b",krn:{"101','":0.0278,"','111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"c',1433,'104',1224,'107":-0.0278},',1096,':"d",',1096,':"e",a:0,',1096,':"f',1094,'12,"102":11,"108":13},',1096,':"g',910,1360,1436,'0278},',1096,':"h",krn:{"116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,917,1096,378,1096,':"k",krn:{"97":-0.0556,"101',1224,'97',1224,'111',1224,'99":-0.','0278},',1096,':"l",',1096,':"m',1433,'116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,':"n',1433,'116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,':"o",a:0',800,1443,'111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"p",a:0,d:0.2',800,1443,'111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,
1436,'0556,"121',1224,1439,'0278},',1096,':"q",a:0,d:0.2,',1096,':"r",a:0,',1096,':"s",a:0,',1096,':"t",krn:{"121',1224,1439,'0278},',1096,':"u',1433,1439,'0278},',1096,':"v',840,1360,'97":-0.0556,"101',1224,'97',1224,'111',1224,1505,'0278},',1096,':"w',840,'0139',800,1224,'97',1224,'111',1224,1505,'0278},',1096,':"x",a:0,',1096,':"y',910,1360,'111',1224,'101',1224,'97',1224,'46',1236,'44":-0.0833},',1096,':"z",a:0,',1096,1037,'0278',492,'124},',1096,1042,'0278,',1096,1045,6,1111,2,1050,6,1111,2,'xA8;",',6,1111,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family: ','serif','",".typeset .','italic":"font-style: italic',1663,'bold":"font-weight: bold',1663,'lucida":"font-family: \'Lucida Grande','\'",".typeset .','asymbol','":"font-family: \'Apple ','Symbols\'; ','font-size: ','115','%",".typeset .','cal',1671,'Chancery',1669,'arrows','":"font-family: \'Hiragino Mincho Pro',1669,'arrow1',1681,'\'; ','position: relative; top',': .075em; margin: -1px',1663,'arrow1a',1681,'\'; margin:-.','3em',1663,252,1661,'AppleGothic','; ',1673,'50',1675,'arrow2',1661,'Symbol','; ',1673,'140%; ',1686,': .','1em; margin:-1px',1663,'arrow2a',1661,1703,1663,302,1661,1696,'; ',1673,'67',1675,'harpoon',1661,1696,'; ',1673,'90',1675,267,1681,1669,'symbol2',1681,1691,'2em',1663,'symbol3',1661,1696,1663,'delim1',1661,'Times; ',1673,'133',189,'75em',1663,'delim1b',1681,'\'; ',1673,'133',189,'8em; ',173,1663,'delim1c',1661,1703,'; ',1673,'120',189,'8em',';",".typeset .',141,1661,'Baskerville','; ',1673,'180',189,1747,1663,'delim2b',1681,'\'; ',1673,'190',189,'8em; ',173,1663,'delim2c',1661,1703,'; ',1673,'167',189,'8em',1766,'delim3',1661,1769,'; ',1673,'250',189,'725em',1663,'delim3b',1681,'\'; ',1673,'250',189,'8em; ',173,1663,'delim3c',1661,267,'; ',1673,'240',189,'775em',1766,'delim4',1661,1769,'; ',1673,'325',189,'7em',1663,'delim4b',1681,'\'; ',1673,'325',189,'8em; ',173,1663,'delim4c',1661,1703,'; ',1673,'300',189,'8em',1766,'vertical',1661,'Copperplate',1663,'vertical1',1661,1850,'; ',1673,'85%; margin: .','15em',176
6,247,1661,1850,'; ',1673,1857,'17em',1766,'greek',1661,1662,1663,357,1661,1662,'; font-style:italic',1663,1092,1661,1662,'; font-weight:bold',1663,38,1681,'\'; ',1673,'133%; ',1686,': .85em','; margin:-.','05em',1663,1,1661,1769,'; ',1673,'100%; ',1686,': .775em',1766,20,1681,'\'; ',1673,'160%; ',1686,': .7em','; margin:-.1em',1663,14,1661,'Apple Symbols','; ',1673,'125%; ',1686,': .',1747,1908,1766,87,1681,'\'; ',1673,'200%; ',1686,': .8em',1889,'07em',1663,50,1661,1769,'; ',1673,'175%; ',1686,1907,1766,69,1681,'\'; ',1673,'270%; ',1686,': .62em',1908,1663,63,1671,'Symbols\'; ',1673,'250%; ',1686,1907,1889,'17em',1766,111,'":"',1673,'67%; ',1686,':-.8em',1663,116,'":"',1673,'110%; ',1686,':-.5em',1663,121,'":"',1673,'175%; ',1686,':-.32em',1663,127,'":"',1673,'75%; ',1686,1971,1663,132,'":"',1673,'133%; ',1686,': -.15em',1663,'wide3a":"',1673,'200%; ',1686,': -.05em',1663,194,1661,1769,1766,'accent":"',1686,': .02em',1663,384,'":"',1686,2006,'; font-style:italic',1663,1111,'":"',1686,2006,1880,'"});jsMath.noAppleSymbols=(jsMath.BBoxFor("∣").w==jsMath.BBoxFor("<',172,'font-family: ',1912,'\\">∣</span>").w);','if(jsMath.noAppleSymbols){jsMath.Update.TeXfonts({cmsy10:{"','16":{c:"<','span style=\\"position:relative',';top:.','25em; ',1673,'67%\\">⌣</span><',2026,';top:-.15em;font-size:67%;','margin-left:-','1em\\">⌢',264,6,'normal"},"','22','":{c:"&#','x227A;<',2026,2027,'3em; ',2033,'1em\\">&','mdash',264,6,2037,'23',2039,'x227B;<',2026,2027,2043,2033,2045,'mdash',264,6,2037,'91','":{c:"∪',';"},"92',2039,22,';"},"93',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,':-.3em; margin-right:.4em\\">+</span','>"},"94',2039,34,';"},"95',2039,40,';"},"96":{c:"|<',2026,'; top:-.15em',262,2045,'ndash',264,6,2037,'109',2039,'x21D1;<',2026,'; top:.','1em',262,'6em\\">⇓',264,'h:0.9,d:0.2,',6,1711,'"}},cmex10:{"85',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,2076,'>"},"93',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,2076,'>"}}});jsMath.Macro("rightleftharpoons","\\\\unicode{x21CC}")
;}else{',1659,'harpoon',1661,1912,'; ',1673,'125%"});}','if(jsMath.browser=="','OmniWeb"){jsMath.Update.TeXfonts({cmsy10:{"55":{c:"<',172,1673,'75%; ','position:relative','; left:.3em',2085,262,'3em\\">˫</span>"},"104":{c:"<',2026,2096,'2em',262,'55em\\">〈</span>"},"105":{c:"<',2026,2096,'2em','; margin-right',':-.55em\\">〉</span>"}}});',1659,'arrow2',1661,1703,'; ',1673,'100%; ',1686,': -.',1709,'"});',2024,'22',2039,'x227A;<',2026,2027,'25em',262,'8em',2150,':.2em\\">&ndash',264,6,2037,'23',2039,'x227B;<',2026,2027,'25em',262,'7em',2150,':.',2045,'ndash',264,6,2037,'96":{c:"<',172,'font-size:80%; ',2137,2085,'\\">|</span><',2026,'; top:-.1em',262,2045,'ndash',264,6,'normal"}}});}}',2132,'Opera"){',1659,14,'":"margin:0pt .12em 0pt 0pt',1766,63,2210,';"});}',2132,'Mozilla','"){jsMath.Setup.Script("jsMath-fallback-mac-','mozilla.js");}',2132,'MSIE',2217,'msie.js");}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 4mu/}}");jsMath.Box.defaultH=0.8;jsMath.Script.End();']
+]);
Index: loncom/html/adm/jsMath/jsMath-fallback-pc.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-pc.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-pc.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-pc.js:1.2 Wed Dec 7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-pc.js Mon Mar 27 14:32:07 2006
@@ -8,1012 +8,22 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
-
-/********************************************************************
- *
- * Here we replace the TeX character mappings by equivalent unicode
- * points when possible, and adjust the character dimensions
- * based on the fonts we hope we get them from (the styles are set
- * to try to use the best characters available in the standard
- * fonts).
- */
-
-jsMath.Add(jsMath.TeX,{
-
- cmr10: [
- // 00 - 0F
- {c: 'Γ', tclass: 'greek'},
- {c: 'Δ', tclass: 'greek'},
- {c: 'Θ', tclass: 'greek'},
- {c: 'Λ', tclass: 'greek'},
- {c: 'Ξ', tclass: 'greek'},
- {c: 'Π', tclass: 'greek'},
- {c: 'Σ', tclass: 'greek'},
- {c: 'Υ', tclass: 'greek'},
- {c: 'Φ', tclass: 'greek'},
- {c: 'Ψ', tclass: 'greek'},
- {c: 'Ω', tclass: 'greek'},
- {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: 'fi', tclass: 'normal'},
- {c: 'fl', tclass: 'normal'},
- {c: 'ffi', tclass: 'normal'},
- {c: 'ffl', tclass: 'normal'},
- // 10 - 1F
- {c: 'ı', a:0, tclass: 'normal'},
- {c: 'j', d:.2, tclass: 'normal'},
- {c: 'ˋ', tclass: 'accent'},
- {c: 'ˊ', tclass: 'accent'},
- {c: 'ˇ', tclass: 'accent'},
- {c: '˘', tclass: 'accent'},
- {c: 'ˉ', tclass: 'accent'},
- {c: '˚', tclass: 'accent'},
- {c: '̧', tclass: 'normal'},
- {c: 'ß', tclass: 'normal'},
- {c: 'æ', a:0, tclass: 'normal'},
- {c: 'œ', a:0, tclass: 'normal'},
- {c: 'ø', tclass: 'normal'},
- {c: 'Æ', tclass: 'normal'},
- {c: 'Œ', tclass: 'normal'},
- {c: 'Ø', tclass: 'normal'},
- // 20 - 2F
- {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
- {c: '!', lig: {'96': 60}, tclass: 'normal'},
- {c: '”', tclass: 'normal'},
- {c: '#', tclass: 'normal'},
- {c: '$', tclass: 'normal'},
- {c: '%', tclass: 'normal'},
- {c: '&', tclass: 'normal'},
- {c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
- {c: '(', d:.2, tclass: 'normal'},
- {c: ')', d:.2, tclass: 'normal'},
- {c: '*', tclass: 'normal'},
- {c: '+', a:.1, tclass: 'normal'},
- {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
- {c: '.', a:-.25, tclass: 'normal'},
- {c: '/', tclass: 'normal'},
- // 30 - 3F
- {c: '0', tclass: 'normal'},
- {c: '1', tclass: 'normal'},
- {c: '2', tclass: 'normal'},
- {c: '3', tclass: 'normal'},
- {c: '4', tclass: 'normal'},
- {c: '5', tclass: 'normal'},
- {c: '6', tclass: 'normal'},
- {c: '7', tclass: 'normal'},
- {c: '8', tclass: 'normal'},
- {c: '9', tclass: 'normal'},
- {c: ':', tclass: 'normal'},
- {c: ';', tclass: 'normal'},
- {c: '¡', tclass: 'normal'},
- {c: '=', a:0, d:-.1, tclass: 'normal'},
- {c: '¿', tclass: 'normal'},
- {c: '?', lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '@', tclass: 'normal'},
- {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'B', tclass: 'normal'},
- {c: 'C', tclass: 'normal'},
- {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- {c: 'E', tclass: 'normal'},
- {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'G', tclass: 'normal'},
- {c: 'H', tclass: 'normal'},
- {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
- {c: 'J', tclass: 'normal'},
- {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'M', tclass: 'normal'},
- {c: 'N', tclass: 'normal'},
- {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- // 50 - 5F
- {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: 'Q', d: 1, tclass: 'normal'},
- {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'S', tclass: 'normal'},
- {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: 'U', tclass: 'normal'},
- {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: 'Z', tclass: 'normal'},
- {c: '[', d:.1, tclass: 'normal'},
- {c: '“', tclass: 'normal'},
- {c: ']', d:.1, tclass: 'normal'},
- {c: 'ˆ', tclass: 'accent'},
- {c: '˙', tclass: 'accent'},
- // 60 - 6F
- {c: '‘', lig: {'96': 92}, tclass: 'normal'},
- {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
- {c: 'd', tclass: 'normal'},
- {c: 'e', a:0, tclass: 'normal'},
- {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
- {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'i', tclass: 'normal'},
- {c: 'j', d:1, tclass: 'normal'},
- {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'l', tclass: 'normal'},
- {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- // 70 - 7F
- {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'q', a:0, d:1, tclass: 'normal'},
- {c: 'r', a:0, tclass: 'normal'},
- {c: 's', a:0, tclass: 'normal'},
- {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
- {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'x', a:0, tclass: 'normal'},
- {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: 'z', a:0, tclass: 'normal'},
- {c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
- {c: '—', a:.1, ic: 0.0278, tclass: 'normal'},
- {c: '˝', tclass: 'accent'},
- {c: '˜', tclass: 'accent'},
- {c: '¨', tclass: 'accent'}
- ],
-
- cmmi10: [
- // 00 - 0F
- {c: '<I>Γ</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'greek'},
- {c: '<I>Δ</I>', krn: {'127': 0.167}, tclass: 'greek'},
- {c: '<I>Θ</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Λ</I>', krn: {'127': 0.167}, tclass: 'greek'},
- {c: '<I>Ξ</I>', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Π</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Σ</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Υ</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Φ</I>', krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Ψ</I>', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Ω</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'α', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'β', d:1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'γ', a:0, d:1, ic: 0.0556, tclass: 'greek'},
- {c: 'δ', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: 'ε', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
- // 10 - 1F
- {c: 'ζ', d:1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'η', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
- {c: 'θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'ι', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
- {c: 'κ', a:0, tclass: 'greek'},
- {c: 'λ', tclass: 'greek'},
- {c: 'μ', a:0, d:1, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'ν', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
- {c: 'ξ', d:1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
- {c: 'π', a:0, ic: 0.0359, tclass: 'greek'},
- {c: 'ρ', a:0, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'σ', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
- {c: 'τ', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
- {c: 'υ', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'φ', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'χ', a:0, d:1, krn: {'127': 0.0556}, tclass: 'greek'},
- // 20 - 2F
- {c: 'ψ', a:.1, d:1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
- {c: 'ω', a:0, ic: 0.0359, tclass: 'greek'},
- {c: 'ε', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'ϑ', krn: {'127': 0.0833}, tclass: 'lucida'},
- {c: 'ϖ', a:0, ic: 0.0278, tclass: 'lucida'},
- {c: 'ϱ', a:0, d:1, krn: {'127': 0.0833}, tclass: 'lucida'},
- {c: 'ς', a:0, d:1, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'lucida'},
- {c: 'ϕ', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'lucida'},
- {c: '↼', a:0, d:-.2, tclass: 'arrows'},
- {c: '↽', a:0, d:-.1, tclass: 'arrows'},
- {c: '⇀', a:0, d:-.2, tclass: 'arrows'},
- {c: '⇁', a:0, d:-.1, tclass: 'arrows'},
- {c: '<SPAN STYLE="position:relative; top:-.1em">˓</SPAN>', a:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="position:relative; top:-.1em">˒</SPAN>', a:.1, tclass: 'symbol'},
- {c: '▹', tclass: 'symbol'},
- {c: '◃', tclass: 'symbol'},
- // 30 - 3F
- {c: '0', tclass: 'normal'},
- {c: '1', tclass: 'normal'},
- {c: '2', tclass: 'normal'},
- {c: '3', tclass: 'normal'},
- {c: '4', tclass: 'normal'},
- {c: '5', tclass: 'normal'},
- {c: '6', tclass: 'normal'},
- {c: '7', tclass: 'normal'},
- {c: '8', tclass: 'normal'},
- {c: '9', tclass: 'normal'},
- {c: '.', a:-.3, tclass: 'normal'},
- {c: ',', a:-.3, d:.2, tclass: 'normal'},
- {c: '<', a:.1, tclass: 'normal'},
- {c: '<SPAN STYLE="font-size:133%; position:relative; top:.1em">/</SPAN>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
- {c: '>', a:.1, tclass: 'normal'},
- {c: '⋆', a:0, tclass: 'arial'},
- // 40 - 4F
- {c: '∂', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>A</I>', krn: {'127': 0.139}, tclass: 'normal'},
- {c: '<I>B</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>C</I>', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>D</I>', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>E</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>F</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>G</I>', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>H</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>I</I>', ic: 0.0785, krn: {'127': 0.111}, tclass: 'normal'},
- {c: '<I>J</I>', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'normal'},
- {c: '<I>K</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>L</I>', krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>M</I>', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>N</I>', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>O</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'normal'},
- // 50 - 5F
- {c: '<I>P</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>Q</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>R</I>', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>S</I>', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>T</I>', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>U</I>', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'normal'},
- {c: '<I>V</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>W</I>', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>X</I>', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>Y</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>Z</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '♭', tclass: 'symbol'},
- {c: '♮', tclass: 'symbol'},
- {c: '♯', tclass: 'symbol'},
- {c: '<SPAN STYLE="position: relative; top:-.3em; font-size:75%">‿</SPAN>', a:0, d:-.1, tclass: 'arial'},
- {c: '<SPAN STYLE="position: relative; top:.4em; font-size:75%">⁀</SPAN>', a:0, d:-.1, tclass: 'arial'},
- // 60 - 6F
- {c: 'ℓ', krn: {'127': 0.111}, tclass: 'normal'},
- {c: '<I>a</I>', a:0, tclass: 'normal'},
- {c: '<I>b</I>', tclass: 'normal'},
- {c: '<I>c</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>d</I>', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'normal'},
- {c: '<I>e</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>f</I>', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'normal'},
- {c: '<I>g</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>h</I>', krn: {'127': -0.0278}, tclass: 'normal'},
- {c: '<I>i</I>', tclass: 'normal'},
- {c: '<I>j</I>', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'normal'},
- {c: '<I>k</I>', ic: 0.0315, tclass: 'normal'},
- {c: '<I>l</I>', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>m</I>', a:0, tclass: 'normal'},
- {c: '<I>n</I>', a:0, tclass: 'normal'},
- {c: '<I>o</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- // 70 - 7F
- {c: '<I>p</I>', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>q</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>r</I>', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>s</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>t</I>', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>u</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>v</I>', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>w</I>', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>x</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>y</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>z</I>', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>ı</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>j</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '℘', a:0, d:1, krn: {'127': 0.111}, tclass: 'arial'},
- {c: '<SPAN STYLE="position:relative; left: .3em; top: -.65em; font-size: 67%">→</SPAN>', ic: 0.154, tclass: 'symbol'},
- {c: '̑', ic: 0.399, tclass: 'normal'}
- ],
-
- cmsy10: [
- // 00 - 0F
- {c: '<SPAN STYLE="position:relative; top:.1em">−</SPAN>', a:.1, tclass: 'symbol'},
- {c: '·', a:0, d:-.2, tclass: 'normal'},
- {c: '×', a:0, tclass: 'normal'},
- {c: '<SPAN STYLE="position:relative; top:.3em">*</SPAN>', a:0, tclass: 'normal'},
- {c: '÷', a:0, tclass: 'normal'},
- {c: '◊', tclass: 'symbol'},
- {c: '±', a:.1, tclass: 'normal'},
- {c: '∓', tclass: 'symbol'},
- {c: '⊕', tclass: 'symbol'},
- {c: '⊖', tclass: 'symbol'},
- {c: '⊗', tclass: 'symbol'},
- {c: '⊘', tclass: 'symbol'},
- {c: '⊙', tclass: 'symbol'},
- {c: '◯', tclass: 'arial'},
- {c: '∘', a:0, d:-.1, tclass: 'symbol2'},
- {c: '•', a:0, d:-.2, tclass: 'symbol'},
- // 10 - 1F
- {c: '≍', a:.1, tclass: 'symbol2'},
- {c: '≡', a:.1, tclass: 'symbol2'},
- {c: '⊆', tclass: 'symbol'},
- {c: '⊇', tclass: 'symbol'},
- {c: '≤', tclass: 'symbol'},
- {c: '≥', tclass: 'symbol'},
- {c: '≼', tclass: 'symbol'},
- {c: '≽', tclass: 'symbol'},
- {c: '~', a:0, d: -.2, tclass: 'normal'},
- {c: '≈', a:.1, d:-.1, tclass: 'symbol'},
- {c: '⊂', tclass: 'symbol'},
- {c: '⊃', tclass: 'symbol'},
- {c: '≪', tclass: 'symbol'},
- {c: '≫', tclass: 'symbol'},
- {c: '≺', tclass: 'symbol'},
- {c: '≻', tclass: 'symbol'},
- // 20 - 2F
- {c: '←', a:-.1, tclass: 'arrow1'},
- {c: '→', a:-.1, tclass: 'arrow1'},
- {c: '↑', a:.2, d:0, tclass: 'arrow1a'},
- {c: '↓', a:.2, d:0, tclass: 'arrow1a'},
- {c: '↔', a:-.1, tclass: 'arrow1'},
- {c: '↗', a:.1, tclass: 'arrows'},
- {c: '↘', a:.1, tclass: 'arrows'},
- {c: '≃', a: .1, tclass: 'symbol2'},
- {c: '⇐', a:-.1, tclass: 'arrow2'},
- {c: '⇒', a:-.1, tclass: 'arrow2'},
- {c: '⇑', a:.2, d:.1, tclass: 'arrow1a'},
- {c: '⇓', a:.2, d:.1, tclass: 'arrow1a'},
- {c: '⇔', a:-.1, tclass: 'arrow2'},
- {c: '↖', a:.1, tclass: 'arrows'},
- {c: '↙', a:.1, tclass: 'arrows'},
- {c: '∝', a:.1, tclass: 'normal'},
- // 30 - 3F
- {c: '<SPAN STYLE="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">′</SPAN>', a: 0, tclass: 'lucida'},
- {c: '∞', a:.1, tclass: 'symbol'},
- {c: '∈', tclass: 'symbol'},
- {c: '∋', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 150%; position:relative; top:.2em">△</SPAN>', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 150%; position:relative; top:.2em">▽</SPAN>', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 133%; position:relative; top:.2em">/</SPAN>', d:1, tclass: 'normal'},
- {c: '<SPAN STYLE="font-size: 67%; position: relative; top:-.15em; margin-right:-.3em">⊢</SPAN>', tclass: 'symbol'},
- {c: '∀', tclass: 'symbol'},
- {c: '∃', tclass: 'symbol'},
- {c: '¬', a:0, d:-.1, tclass: 'symbol'},
- {c: '∅', tclass: 'symbol'},
- {c: 'ℜ', tclass: 'symbol'},
- {c: 'ℑ', tclass: 'symbol'},
- {c: '⊤', tclass: 'symbol'},
- {c: '⊥', tclass: 'symbol'},
- // 40 - 4F
- {c: 'ℵ', tclass: 'symbol'},
- {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
- {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
- {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
- {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
- // 50 - 5F
- {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
- {c: '⋃', tclass: 'symbol'},
- {c: '⋂', tclass: 'symbol'},
- {c: '⊎', tclass: 'symbol'},
- {c: '⋀', tclass: 'symbol'},
- {c: '⋁', tclass: 'symbol'},
- // 60 - 6F
- {c: '⊢', tclass: 'symbol'},
- {c: '⊣', tclass: 'symbol'},
- {c: '⌈', a:.3, d:.2, tclass: 'arial'},
- {c: '⌉', a:.3, d:.2, tclass: 'arial'},
- {c: '⌊', a:.3, d:.2, tclass: 'arial'},
- {c: '⌋', a:.3, d:.2, tclass: 'arial'},
- {c: '{', d:.2, tclass: 'normal'},
- {c: '}', d:.2, tclass: 'normal'},
- {c: '〈', a:.3, d:.2, tclass: 'symbol'},
- {c: '〉', a:.3, d:.2, tclass: 'symbol'},
- {c: '∣', d:.1, tclass: 'symbol'},
- {c: '∥', d:.1, tclass: 'symbol'},
- {c: '↕', a:.2, d:0, tclass: 'arrow1a'},
- {c: '⇕', a:.3, d:0, tclass: 'arrow1a'},
- {c: '∖', a:.3, d:.1, tclass: 'symbol'},
- {c: '≀', tclass: 'symbol'},
- // 70 - 7F
- {c: '<SPAN STYLE="position:relative; top: .8em">√</SPAN>', h:.04, d:.8, tclass: 'symbol'},
- {c: '∐', a:.4, tclass: 'symbol'},
- {c: '∇', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 85%; left:-.1em; margin-right:-.2em">∫</SPAN>', a:.4, d:.1, ic: 0.111, tclass: 'lucida'},
- {c: '⊔', tclass: 'symbol'},
- {c: '⊓', tclass: 'symbol'},
- {c: '⊑', tclass: 'symbol'},
- {c: '⊒', tclass: 'symbol'},
- {c: '§', d:.1, tclass: 'normal'},
- {c: '†', d:.1, tclass: 'normal'},
- {c: '‡', d:.1, tclass: 'normal'},
- {c: '¶', a:.3, d:.1, tclass: 'lucida'},
- {c: '♣', tclass: 'arial'},
- {c: '♢', tclass: 'arial'},
- {c: '♡', tclass: 'arial'},
- {c: '♠', tclass: 'arial'}
- ],
-
- cmex10: [
- // 00 - 0F
- {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
- {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
- {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
- {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
- {c: '⌈', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
- {c: '⌉', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
- {c: '⌊', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
- {c: '⌋', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
- {c: '<SPAN STYLE="margin-left:-.1em">{</SPAN>', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
- {c: '<SPAN STYLE="margin-right:-.1em">}</SPAN>', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
- {c: '〈', h: 0.04, d: 1.16, n: 68, tclass: 'delim1b'},
- {c: '〉', h: 0.04, d: 1.16, n: 69, tclass: 'delim1b'},
- {c: '∣', h:.7, d:.1, delim: {rep: 12}, tclass: 'symbol'},
- {c: '∥', h:.7, d:.1, delim: {rep: 13}, tclass: 'symbol'},
- {c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1a'},
- {c: '∖', h: 0.04, d: 1.16, n: 47, tclass: 'delim1a'},
- // 10 - 1F
- {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
- {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
- {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
- {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
- {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
- {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
- {c: '⌈', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
- {c: '⌉', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
- {c: '⌊', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
- {c: '⌋', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
- {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">{</SPAN>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
- {c: '<SPAN STYLE="position:relative; left:-.05em; margin-right:-.1em">}</SPAN>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
- {c: '〈', h: 0.04, d: 2.36, n: 42, tclass: 'delim3b'},
- {c: '〉', h: 0.04, d: 2.36, n: 43, tclass: 'delim3b'},
- {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3a'},
- {c: '∖', h: 0.04, d: 2.36, n: 45, tclass: 'delim3a'},
- // 20 - 2F
- {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
- {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
- {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
- {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
- {c: '⌈', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
- {c: '⌉', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
- {c: '⌊', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
- {c: '⌋', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
- {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">{</SPAN>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
- {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">}</SPAN>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
- {c: '〈', h: 0.04, d: 2.96, tclass: 'delim4b'},
- {c: '〉', h: 0.04, d: 2.96, tclass: 'delim4b'},
- {c: '/', h: 0.04, d: 2.96, tclass: 'delim4a'},
- {c: '∖', h: 0.04, d: 2.96, tclass: 'delim4a'},
- {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2a'},
- {c: '∖', h: 0.04, d: 1.76, n: 31, tclass: 'delim2a'},
- // 30 - 3F
- {c: 'æ', h: .8, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delimx'},
- {c: 'ö', h: .8, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delimx'},
- {c: 'é', h: .8, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delimx'},
- {c: 'ù', h: .8, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delimx'},
- {c: 'ë', h: .8, d: .2, delim: {bot: 52, rep: 54}, tclass: 'delimx'},
- {c: 'û', h: .8, d: .2, delim: {bot: 53, rep: 55}, tclass: 'delimx'},
- {c: 'ê', h: .8, d: .2, delim: {top: 50, rep: 54}, tclass: 'delimx'},
- {c: 'ú', h: .8, d: .2, delim: {top: 51, rep: 55}, tclass: 'delimx'},
- {c: 'ì', h: .8, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delimx'},
- {c: 'ü', h: .8, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delimx'},
- {c: 'î', h: .8, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delimx'},
- {c: 'þ', h: .8, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delimx'},
- {c: 'í', h: .8, d: .2, delim: {rep: 63}, tclass: 'delimx'},
- {c: 'ý', h: .8, d: .2, delim: {rep: 119}, tclass: 'delimx'},
- {c: 'ï', h: .8, d: .2, delim: {rep: 62}, tclass: 'delimx'},
- {c: '<SPAN STYLE="margin:.125em">|</SPAN>', h: .8, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'normal'},
- // 40 - 4F
- {c: 'è', h: .8, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delimx'},
- {c: 'ø', h: .8, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delimx'},
- {c: 'ç', h: .8, d: .2, delim: {rep: 66}, tclass: 'delimx'},
- {c: '÷', h: .8, d: .2, delim: {rep: 67}, tclass: 'delimx'},
- {c: '〈', h: 0.04, d: 1.76, n: 28, tclass: 'delim2b'},
- {c: '〉', h: 0.04, d: 1.76, n: 29, tclass: 'delim2b'},
- {c: '⊔', h: 0, d: 1, n: 71, tclass: 'bigop1'},
- {c: '⊔', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '∮', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
- {c: '∮', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
- {c: '⊙', h: 0, d: 1, n: 75, tclass: 'bigop1'},
- {c: '⊙', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⊕', h: 0, d: 1, n: 77, tclass: 'bigop1'},
- {c: '⊕', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⊗', h: 0, d: 1, n: 79, tclass: 'bigop1'},
- {c: '⊗', h: 0.1, d: 1.5, tclass: 'bigop2'},
- // 50 - 5F
- {c: '∑', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
- {c: '∏', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
- {c: '∫', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
- {c: '∪', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
- {c: '∩', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
- {c: '⊎', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
- {c: '⋀', h: 0, d: 1, n: 94, tclass: 'bigop1'},
- {c: '⋁', h: 0, d: 1, n: 95, tclass: 'bigop1'},
- {c: '∑', h: 0.1, d: 1.6, tclass: 'bigop2a'},
- {c: '∏', h: 0.1, d: 1.5, tclass: 'bigop2a'},
- {c: '∫', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
- {c: '∪', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '∩', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '⊎', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '⋀', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⋁', h: 0.1, d: 1.5, tclass: 'bigop2'},
- // 60 - 6F
- {c: '∐', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
- {c: '∐', h: 0.1, d: 1.5, tclass: 'bigop2a'},
- {c: '︿', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
- {c: '︿', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
- {c: '︿', h: 0.99, w: 1.65, tclass: 'wide3'},
- {c: '~', h: 0.722, w: .5, n: 102, tclass: 'wide1a'},
- {c: '~', h: 0.8, w: .8, n: 103, tclass: 'wide2a'},
- {c: '~', h: 0.99, w: 1.3, tclass: 'wide3a'},
- {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
- {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
- {c: '⌈', h: 0.04, d: 1.76, n: 22, tclass: 'delim2a'},
- {c: '⌉', h: 0.04, d: 1.76, n: 23, tclass: 'delim2a'},
- {c: '⌊', h: 0.04, d: 1.76, n: 24, tclass: 'delim2a'},
- {c: '⌋', h: 0.04, d: 1.76, n: 25, tclass: 'delim2a'},
- {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">{</SPAN>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
- {c: '<SPAN STYLE="position:relative; margin-right:-.1em; left:-.05em">}</SPAN>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
- // 70 - 7F
- {c: '<SPAN STYLE="font-size: 150%; position:relative; top:.8em">√</SPAN>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 220%; position:relative; top:.8em">√</SPAN>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 310%; position:relative; top:.8em; margin-right:-.01em">√</SPAN>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 400%; position:relative; top:.8em; margin-right:-.025em">√</SPAN>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 490%; position:relative; top:.8em; margin-right:-.03em">√</SPAN>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 580%; position:relative; top:.775em; margin-right:-.04em">√</SPAN>', h: .12, d: 4.5, n: 118, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 750%; position:relative; top:.775em;margin-right:-.04em">√</SPAN>', h: .14, d: 5.7, tclass: 'root'},
- {c: '<SPAN STYLE="margin-left:.02em">|</SPAN><SPAN STYLE="margin-left:.08em; margin-right:.125em">|</SPAN>', h:.8, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'normal'},
- {c: '↑', h:.7, d:0, delim: {top: 120, rep: 63}, tclass: 'arrow1a'},
- {c: '↓', h:.65, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
- {c: '<SPAN STYLE="margin-left:-.1em"></SPAN><SPAN STYLE="position:relative; top:.55em; margin-right:-.3em">◜</SPAN>', h: 0.05, tclass: 'symbol'},
- {c: '<SPAN STYLE="margin-left:-.3em"></SPAN><SPAN STYLE="position:relative; top:.55em; margin-right:-.1em">◝</SPAN>', h: 0.05, tclass: 'symbol'},
- {c: '<SPAN STYLE="margin-left:-.1em"></SPAN><SPAN STYLE="position:relative; top:.15em; margin-right:-.3em">◟</SPAN>', h: 0.05, tclass: 'symbol'},
- {c: '<SPAN STYLE="margin-left:-.3em"></SPAN><SPAN STYLE="position:relative; top:.15em; margin-right:-.1em">◞</SPAN>', h: 0.05, tclass: 'symbol'},
- {c: '⇑', h: .7, d:0, delim: {top: 126, rep: 119}, tclass: 'arrow1a'},
- {c: '⇓', h: .7, d:0, delim: {bot: 127, rep: 119}, tclass: 'arrow1a'}
- ],
-
- cmti10: [
- // 00 - 0F
- {c: '<I>Γ</I>', ic: 0.133, tclass: 'greek'},
- {c: '<I>Δ</I>', tclass: 'greek'},
- {c: '<I>Θ</I>', ic: 0.094, tclass: 'greek'},
- {c: '<I>Λ</I>', tclass: 'greek'},
- {c: '<I>Ξ</I>', ic: 0.153, tclass: 'greek'},
- {c: '<I>Π</I>', ic: 0.164, tclass: 'greek'},
- {c: '<I>Σ</I>', ic: 0.12, tclass: 'greek'},
- {c: '<I>Υ</I>', ic: 0.111, tclass: 'greek'},
- {c: '<I>Φ</I>', ic: 0.0599, tclass: 'greek'},
- {c: '<I>Ψ</I>', ic: 0.111, tclass: 'greek'},
- {c: '<I>Ω</I>', ic: 0.103, tclass: 'greek'},
- {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'},
- // 10 - 1F
- {c: '<I>ı</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'},
- {c: '<I>ˋ</I>', tclass: 'accent'},
- {c: '<I>ˊ</I>', ic: 0.0969, tclass: 'accent'},
- {c: '<I>ˇ</I>', ic: 0.083, tclass: 'accent'},
- {c: '<I>˘</I>', ic: 0.108, tclass: 'accent'},
- {c: '<I>ˉ</I>', ic: 0.103, tclass: 'accent'},
- {c: '<I>˚</I>', tclass: 'accent'},
- {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'},
- {c: '<I>ß</I>', ic: 0.105, tclass: 'normal'},
- {c: '<I>æ</I>', a:0, ic: 0.0751, tclass: 'normal'},
- {c: '<I>œ</I>', a:0, ic: 0.0751, tclass: 'normal'},
- {c: '<I>ø</I>', ic: 0.0919, tclass: 'normal'},
- {c: '<I>Æ</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>Œ</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>Ø</I>', ic: 0.094, tclass: 'normal'},
- // 20 - 2F
- {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'},
- {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'},
- {c: '<I>”</I>', ic: 0.0696, tclass: 'normal'},
- {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'},
- {c: '<I>$</I>', tclass: 'normal'},
- {c: '<I>%</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>&</I>', ic: 0.0969, tclass: 'normal'},
- {c: '<I>’</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'},
- {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'},
- {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'},
- {c: '<I>*</I>', ic: 0.149, tclass: 'normal'},
- {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'},
- {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'},
- {c: '<I>.</I>', a:-.25, tclass: 'normal'},
- {c: '<I>/</I>', ic: 0.162, tclass: 'normal'},
- // 30 - 3F
- {c: '<I>0</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>1</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>2</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>3</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>4</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>5</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>6</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>7</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>8</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>9</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'},
- {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'},
- {c: '<I>¡</I>', ic: 0.0756, tclass: 'normal'},
- {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'},
- {c: '<I>¿</I>', tclass: 'normal'},
- {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '<I>@</I>', ic: 0.096, tclass: 'normal'},
- {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>B</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>C</I>', ic: 0.145, tclass: 'normal'},
- {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
- {c: '<I>E</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'},
- {c: '<I>H</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>I</I>', ic: 0.158, tclass: 'normal'},
- {c: '<I>J</I>', ic: 0.14, tclass: 'normal'},
- {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>M</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>N</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
- // 50 - 5F
- {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'},
- {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'},
- {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>S</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
- {c: '<I>U</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'},
- {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
- {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'},
- {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'},
- {c: '<I>“</I>', ic: 0.169, tclass: 'normal'},
- {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'},
- {c: '<I>ˆ</I>', ic: 0.0665, tclass: 'accent'},
- {c: '<I>˙</I>', ic: 0.118, tclass: 'accent'},
- // 60 - 6F
- {c: '<I>‘</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'},
- {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'},
- {c: '<I>i</I>', ic: 0.102, tclass: 'normal'},
- {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'},
- {c: '<I>k</I>', ic: 0.108, tclass: 'normal'},
- {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'},
- {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- // 70 - 7F
- {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'},
- {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'},
- {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'},
- {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'},
- {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'},
- {c: '<I>–</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'},
- {c: '<I>—</I>', a:.1, ic: 0.0921, tclass: 'normal'},
- {c: '<I>˝</I>', ic: 0.122, tclass: 'accent'},
- {c: '<I>˜</I>', ic: 0.116, tclass: 'accent'},
- {c: '<I>¨</I>', tclass: 'accent'}
- ],
-
- cmbx10: [
- // 00 - 0F
- {c: '<B>Γ</B>', tclass: 'greek'},
- {c: '<B>Δ</B>', tclass: 'greek'},
- {c: '<B>Θ</B>', tclass: 'greek'},
- {c: '<B>Λ</B>', tclass: 'greek'},
- {c: '<B>Ξ</B>', tclass: 'greek'},
- {c: '<B>Π</B>', tclass: 'greek'},
- {c: '<B>Σ</B>', tclass: 'greek'},
- {c: '<B>Υ</B>', tclass: 'greek'},
- {c: '<B>Φ</B>', tclass: 'greek'},
- {c: '<B>Ψ</B>', tclass: 'greek'},
- {c: '<B>Ω</B>', tclass: 'greek'},
- {c: '<B>ff</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: '<B>fi</B>', tclass: 'normal'},
- {c: '<B>fl</B>', tclass: 'normal'},
- {c: '<B>ffi</B>', tclass: 'normal'},
- {c: '<B>ffl</B>', tclass: 'normal'},
- // 10 - 1F
- {c: '<B>ı</B>', a:0, tclass: 'normal'},
- {c: '<B>j</B>', d:.2, tclass: 'normal'},
- {c: '<B>ˋ</B>', tclass: 'accent'},
- {c: '<B>ˊ</B>', tclass: 'accent'},
- {c: '<B>ˇ</B>', tclass: 'accent'},
- {c: '<B>˘</B>', tclass: 'accent'},
- {c: '<B>ˉ</B>', tclass: 'accent'},
- {c: '<B>˚</B>', tclass: 'accent'},
- {c: '<B>?</B>', tclass: 'normal'},
- {c: '<B>ß</B>', tclass: 'normal'},
- {c: '<B>æ</B>', a:0, tclass: 'normal'},
- {c: '<B>œ</B>', a:0, tclass: 'normal'},
- {c: '<B>ø</B>', tclass: 'normal'},
- {c: '<B>Æ</B>', tclass: 'normal'},
- {c: '<B>Œ</B>', tclass: 'normal'},
- {c: '<B>Ø</B>', tclass: 'normal'},
- // 20 - 2F
- {c: '<B>?</B>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
- {c: '<B>!</B>', lig: {'96': 60}, tclass: 'normal'},
- {c: '<B>”</B>', tclass: 'normal'},
- {c: '<B>#</B>', tclass: 'normal'},
- {c: '<B>$</B>', tclass: 'normal'},
- {c: '<B>%</B>', tclass: 'normal'},
- {c: '<B>&</B>', tclass: 'normal'},
- {c: '<B>’</B>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
- {c: '<B>(</B>', d:.2, tclass: 'normal'},
- {c: '<B>)</B>', d:.2, tclass: 'normal'},
- {c: '<B>*</B>', tclass: 'normal'},
- {c: '<B>+</B>', a:.1, tclass: 'normal'},
- {c: '<B>,</B>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '<B>-</B>', a:0, lig: {'45': 123}, tclass: 'normal'},
- {c: '<B>.</B>', a:-.25, tclass: 'normal'},
- {c: '<B>/</B>', tclass: 'normal'},
- // 30 - 3F
- {c: '<B>0</B>', tclass: 'normal'},
- {c: '<B>1</B>', tclass: 'normal'},
- {c: '<B>2</B>', tclass: 'normal'},
- {c: '<B>3</B>', tclass: 'normal'},
- {c: '<B>4</B>', tclass: 'normal'},
- {c: '<B>5</B>', tclass: 'normal'},
- {c: '<B>6</B>', tclass: 'normal'},
- {c: '<B>7</B>', tclass: 'normal'},
- {c: '<B>8</B>', tclass: 'normal'},
- {c: '<B>9</B>', tclass: 'normal'},
- {c: '<B>:</B>', tclass: 'normal'},
- {c: '<B>;</B>', tclass: 'normal'},
- {c: '<B>¡</B>', tclass: 'normal'},
- {c: '<B>=</B>', a:0, d:-.1, tclass: 'normal'},
- {c: '<B>¿</B>', tclass: 'normal'},
- {c: '<B>?</B>', lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '<B>@</B>', tclass: 'normal'},
- {c: '<B>A</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>B</B>', tclass: 'normal'},
- {c: '<B>C</B>', tclass: 'normal'},
- {c: '<B>D</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- {c: '<B>E</B>', tclass: 'normal'},
- {c: '<B>F</B>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>G</B>', tclass: 'normal'},
- {c: '<B>H</B>', tclass: 'normal'},
- {c: '<B>I</B>', krn: {'73': 0.0278}, tclass: 'normal'},
- {c: '<B>J</B>', tclass: 'normal'},
- {c: '<B>K</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>L</B>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>M</B>', tclass: 'normal'},
- {c: '<B>N</B>', tclass: 'normal'},
- {c: '<B>O</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- // 50 - 5F
- {c: '<B>P</B>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: '<B>Q</B>', d: 1, tclass: 'normal'},
- {c: '<B>R</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>S</B>', tclass: 'normal'},
- {c: '<B>T</B>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: '<B>U</B>', tclass: 'normal'},
- {c: '<B>V</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>W</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>X</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>Y</B>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: '<B>Z</B>', tclass: 'normal'},
- {c: '<B>[</B>', d:.1, tclass: 'normal'},
- {c: '<B>“</B>', tclass: 'normal'},
- {c: '<B>]</B>', d:.1, tclass: 'normal'},
- {c: '<B>ˆ</B>', tclass: 'accent'},
- {c: '<B>˙</B>', tclass: 'accent'},
- // 60 - 6F
- {c: '<B>‘</B>', lig: {'96': 92}, tclass: 'normal'},
- {c: '<B>a</B>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>b</B>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>c</B>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
- {c: '<B>d</B>', tclass: 'normal'},
- {c: '<B>e</B>', a:0, tclass: 'normal'},
- {c: '<B>f</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: '<B>g</B>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
- {c: '<B>h</B>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>i</B>', tclass: 'normal'},
- {c: '<B>j</B>', d:1, tclass: 'normal'},
- {c: '<B>k</B>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>l</B>', tclass: 'normal'},
- {c: '<B>m</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>n</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>o</B>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- // 70 - 7F
- {c: '<B>p</B>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>q</B>', a:0, d:1, tclass: 'normal'},
- {c: '<B>r</B>', a:0, tclass: 'normal'},
- {c: '<B>s</B>', a:0, tclass: 'normal'},
- {c: '<B>t</B>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>u</B>', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
- {c: '<B>v</B>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>w</B>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>x</B>', a:0, tclass: 'normal'},
- {c: '<B>y</B>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: '<B>z</B>', a:0, tclass: 'normal'},
- {c: '<B>–</B>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
- {c: '<B>—</B>', a:.1, ic: 0.0278, tclass: 'normal'},
- {c: '<B>˝</B>', tclass: 'accent'},
- {c: '<B>˜</B>', tclass: 'accent'},
- {c: '<B>¨</B>', tclass: 'accent'}
- ]
-});
-
-
-/*
- * We need to replace the jsMath.Box.TeX function in order to use the
- * different font metrics in the tables above, and to handle the
- * scaling better.
- */
-
-jsMath.Add(jsMath.Box,{
- TeX: function (C,font,style,size) {
- c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
- if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
- if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
- var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
- var scale = jsMath.Typeset.TeX(style,size).scale;
- if (c.bh != null) {
- box.bh = c.bh * scale;
- box.bd = c.bd * scale;
- } else {
- var h = box.bd+box.bh;
- var ph = Math.round(h*jsMath.em);
- if (h > jsMath.hd) {
- box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
- + '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'width: 1; height: '+ph+'px">').h - h;
- box.bh = h - box.bd;
- }
- c.bh = box.bh/scale;
- c.bd = box.bd/scale;
- }
- if (jsMath.msieFontBug) {
- // hack to avoid Font changing back to the default
- // font when a unicode reference is not followed
- // by a letter or number
- box.html += '<SPAN STYLE="display: none">x</SPAN>'
- }
- return box;
- }
-});
-
-jsMath.Update.Styles({
- '.cmr10': "font-family: serif",
- '.lucida': "font-family: 'lucida sans unicode'",
- '.arial': "font-family: 'arial unicode MS'",
- '.cal': "font-family: 'Script MT', 'Script MT Bold', cursive",
- '.arrows': "font-family: 'Arial unicode MS'",
- '.arrow1': "font-family: 'Arial unicode MS'",
- '.arrow1a': "font-family: 'Arial unicode MS'; position:relative; top:.05em;left:-.15em; margin-right:-.15em",
- '.arrow2': "font-family: 'Arial unicode MS'; position:relative; top:-.1em;",
- '.arrow3': "font-family: 'Arial unicode MS'; margin:.1em",
- '.symbol': "font-family: 'Arial unicode MS'",
- '.symbol2': "font-family: 'Arial unicode MS'",
- '.delim1': "font-family: 'Times New Roman'; font-size: 133%; position:relative; top:.7em",
- '.delim1a': "font-family: 'Lucida sans unicode'; font-size: 133%; position:relative; top:.8em",
- '.delim1b': "font-family: 'Arial unicode MS'; font-size: 133%; position:relative; top:.8em",
- '.delim2': "font-family: 'Times New Roman'; font-size: 180%; position:relative; top:.75em",
- '.delim2a': "font-family: 'Lucida sans unicode'; font-size: 180%; position:relative; top:.8em",
- '.delim2b': "font-family: 'Arial unicode MS'; font-size: 180%; position:relative; top:.8em",
- '.delim3': "font-family: 'Times New Roman'; font-size: 250%; position:relative; top:.725em",
- '.delim3a': "font-family: 'Lucida sans unicode'; font-size: 250%; position:relative; top:.775em",
- '.delim3b': "font-family: 'Arial unicode MS'; font-size: 250%; position:relative; top:.8em",
- '.delim4': "font-family: 'Times New Roman'; font-size: 325%; position:relative; top:.7em",
- '.delim4a': "font-family: 'Lucida sans unicode'; font-size: 325%; position:relative; top:.775em",
- '.delim4b': "font-family: 'Arial unicode MS'; font-size: 325%; position:relative; top:.8em",
- '.delimx': "font-family: Symbol; position:relative; top:.2em",
- '.greek': "font-family: 'Times New Roman'",
- '.bigop1': "font-family: 'Arial unicode MS'; font-size: 130%; position: relative; top: .7em; margin:-.05em",
- '.bigop1a': "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top: .85em;",
- '.bigop1b': "font-family: 'Arial unicode MS'; font-size: 180%; position: relative; top: .6em",
- '.bigop1c': "font-family: 'Arial unicode MS'; font-size: 85%; position: relative; top: 1em",
- '.bigop2': "font-family: 'Arial unicode MS'; font-size: 230%; position: relative; top: .6em; margin:-.05em",
- '.bigop2a': "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: .75em",
- '.bigop2b': "font-family: 'Arial unicode MS'; font-size: 275%; position: relative; top: .55em",
- '.bigop2c': "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: 1em; margin-right:-.1em",
- '.wide1': "font-size: 67%; position: relative; top:-.5em;",
- '.wide2': "font-size: 110%; position: relative; top:-.2em;'",
- '.wide3': "font-size: 175%;",
- '.wide1a': "font-family: 'Times New Roman'; font-size: 75%; position: relative; top:-.5em",
- '.wide2a': "font-family: 'Times New Roman'; font-size: 133%; position: relative; top:-.2em",
- '.wide3a': "font-family: 'Times New Roman'; font-size: 200%; position: relative; top:-.1em",
- '.root': "font-family: 'Arial unicode MS'; margin-right:-.075em",
- '.accent': "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em"
-});
-
-//
-// adjust for Mozilla
-//
-if (jsMath.hidden.ATTRIBUTE_NODE) {
- jsMath.Update.TeXfonts({
- cmex10: {
- '48': {c: ''},
- '49': {c: ''},
- '50': {c: ''},
- '51': {c: ''},
- '52': {c: ''},
- '53': {c: ''},
- '54': {c: ''},
- '55': {c: ''},
- '56': {c: ''},
- '57': {c: ''},
- '58': {c: ''},
- '59': {c: ''},
- '60': {c: ''},
- '61': {c: ''},
- '62': {c: ''},
- '64': {c: ''},
- '65': {c: ''},
- '66': {c: ''},
- '67': {c: ''}
- }
- });
- jsMath.Update.Styles({
- '.accent': 'font-family: Arial unicode MS; position:relative; top:.05em; left:.05em'
- });
-}
-
-//
-// adjust for MSIE
-//
-if (jsMath.browser == "MSIE") {
- jsMath.Update.TeXfonts({
- cmex10: {
- '63': {c: '<SPAN STYLE="position:relative; left:.125em; margin-right:.125em">|</SPAN>'},
- '119': {c: '<SPAN STYLE="position:relative; left:.02em; margin-right=.08em">|</SPAN><SPAN STYLE="margin-right:.125em">|</SPAN>'}
- }
- });
-}
-
-
-/*
- * Reinstall Styles and fonts
- */
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
-
-/*
- * No access to TeX "not" character, so fake this
- * Also ajust the bowtie spacing
- */
-jsMath.Macro('not','\\mathrel{\\rlap{\\kern 3mu/}}');
-jsMath.Macro('bowtie','\\mathrel\\triangleright\\kern-6mu\\mathrel\\triangleleft');
-
-jsMath.absoluteHeightVaries = 1;
-
-jsMath.defaultH = 0.8;
-
+jsMath.Script.Uncompress([
+ ['jsMath.Script.Start();jsMath.Add(jsMath.TeX,{cmr10',':[{c:"Γ",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek"},{c',':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',27,':"fl",',27,':"ffi",',27,':"ffl",',27,':"ı',';",a:0,',27,':"j",','d:0.2,',27,':"ˋ',';",tclass:"accent"},{c:"&#','x2CA',43,'x2C7',43,'x2D8',43,'x2C9',43,'x2DA',43,'x0327;",',27,':"ß",',27,':"æ',37,27,':"œ',37,27,':"ø",',27,':"Æ",',27,':"Œ",',27,':"Ø",',27,':"?",krn:{"108":-0.278,"76":-0.319},',27,':"!",lig:{"96":60},',27,':"”",',27,':"#",',27,':"$",',27,':"%",',27,':"&",',27,':"’",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',27,':"(",',40,27,':")",',40,27,':"*",',27,':"+",a:0.1,',27,':",",a:-','0.3,d:0.2,','w:0.278,',27,':"-",a:0',',lig:{"45":','123},',27,':".",a:-0.','25,',27,':"/",',27,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,':":",',27,':";",',27,':"¡",',27,':"=",a:0,d:-0.1,',27,':"¿",',27,':"?",lig:{"96":62},',27,':"@",',27,':"A','",krn:{"','116','":-0.0278,"','67',150,'79',150,'71',150,'85',150,'81',150,'84','":-0.0833,"','89',162,'86','":-0.111',',"87',166,'},',27,':"B",',27,':"C",',27,':"D',148,'88',150,'87',150,'65',150,'86',150,'89','":-0.0278','},',27,':"E",',27,':"F',148,'111',162,'101',162,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',150,'67',150,'71',150,'81',186,'},',27,':"G",',27,':"H",',27,':"I',148,'73":0.','0278','},',27,':"J",',27,':"K',148,'79',150,'67',150,'71',150,'81',186,'},',27,':"L',148,'84',162,'89',162,'86',166,',"87',166,'},',27,':"M",',27,':"N",',27,':"O',148,'88',150,'87',150,'65',150,'86',150,'89',186,'},',27,':"P',148,'65',162,'111',150,'101',150,'97',150,'46',162,'44":-0.','0833','},',27,':"Q",',40,27,':"R',148,'116',150,'67',150,'
79',150,'71',150,'85',150,'81',150,'84',162,'89',162,'86',166,',"87',166,'},',27,':"S",',27,':"T',148,'121',150,'101',162,'111',198,276,',"117":-0.',276,'},',27,':"U",',27,':"V",','ic:0.0139,krn:{"','111',162,'101',162,'117',198,'111,"79',150,'67',150,'71',150,'81',186,'},',27,':"W",',324,'111',162,'101',162,'117',198,'111,"79',150,'67',150,'71',150,'81',186,'},',27,':"X',148,'79',150,'67',150,'71',150,'81',186,'},',27,':"Y",ic:0.025,','krn:{"101',162,'111',198,276,317,276,'},',27,':"Z",',27,':"[",','d:0.1,',27,':"“",',27,':"]",',384,27,':"ˆ',43,'x2D9',43,'x2018;",lig:{"96":92},',27,':"a','",a:0,krn:{"','118',150,'106":0.','0556,"121',150,'119',186,'},',27,':"b',148,'101','":0.0278,"','111',411,'120',150,'100',411,'99',411,'113',411,'118',150,401,'0556,"121',150,'119',186,'},',27,':"c',398,'104',150,'107',186,'},',27,':"d",',27,':"e','",a:0,',27,':"f',25,'12,"102":11,"108":13},',27,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',401,216,'},',27,':"h',148,'116',150,'117',150,'98',150,'121',150,'118',150,'119',186,'},',27,':"i",',27,':"j",',40,27,':"k',148,'97','":-0.0556,"','101',150,'97',150,'111',150,'99',186,'},',27,':"l",',27,':"m',398,'116',150,'117',150,'98',150,'121',150,'118',150,'119',186,'},',27,':"n',398,'116',150,'117',150,'98',150,'121',150,'118',150,'119',186,'},',27,':"o',398,'101',411,'111',411,'120',150,'100',411,'99',411,'113',411,'118',150,401,'0556,"121',150,'119',186,'},',27,':"p',442,40,372,411,'111',411,'120',150,'100',411,'99',411,'113',411,'118',150,401,'0556,"121',150,'119',186,'},',27,':"q',442,40,27,':"r',442,27,':"s',442,27,':"t',148,'121',150,'119',186,'},',27,':"u',398,'119',186,'},',27,':"v',442,324,'97',479,'101',150,'97',150,'111',150,'99',186,'},',27,':"w',442,324,'101',150,'97',150,'111',150,'99',186,'},',27,':"x',442,27,':"y",',449,450,'111',150,'101',150,'97',150,'46',162,'44":-0.',276,'},',27,':"z',442,27,':"–',';",a:0.1,','ic:0.',216,105,'124},',27,':"—',645,'ic:0.',216,',',27,':"˝',43,'x2DC',43,'xA8;",',22,'accent"}],cmmi10',1,'ic:0.139',',krn:{"61":-0
.0556,"59":-0.111,"58":-0.111,"127":0.',276,'},tclass:"igreek"},{c:"&',3,'krn:{"127":0.','167',668,5,'ic:0.',216,',krn:{"127":0.',276,668,7,670,'167',668,9,'ic:0.0757',676,276,668,11,'ic:0.0812,krn:{"61',479,'59":-0.0556,"58":-0.0556,"127":0.','0556',668,13,'ic:0.0576',676,276,668,15,'ic:0.139',666,'0556',668,17,670,276,668,19,'ic:0.11,krn:{"61',479,691,'0556',668,21,'ic:0.0502',676,276,668,'alpha',';",a:0,ic:0.','0037',676,216,'},',2,'beta;",','d:0.2,ic:0.','0528',676,276,'},',2,'gamma;",',449,'0556,',2,'delta;",ic:0.0378,krn:{"',691,'0556},',2,'epsilon;",a:0',676,'0556},',22,'lucida"},{c:"ζ",',727,'0738',676,276,'},',2,'eta;",',449,'0359',676,'0556},',2,'theta;",ic:0.',216,676,276,'},',2,'iota;",a:0',676,'0556},',2,'kappa',37,2,'lambda;",',2,'mu',37,'d:0.2',676,216,'},',2,'nu',720,'0637,krn:{"',691,216,'},',2,'xi;",',727,'046',676,87,2,'pi',720,'0359,',2,'rho',37,'d:0.2',676,276,'},',2,'sigma',720,795,'krn:{"59',479,'58":-0.0556','},',2,'tau',720,'113,krn:{"',691,216,'},',2,'upsilon',720,'0359',676,216,'},',2,'phi',645,'d:0.2',676,276,'},',2,'chi',37,'d:0.2',676,'0556},',2,'psi',645,727,'0359',676,87,2,'omega',720,795,2,'epsilon;",a:0',676,276,'},',22,23,':"ϑ",',670,276,'},',22,'lucida"},{c:"&#','x3D6',720,216,',',22,861,'x3F1',37,'d:0.2',676,276,'},',22,861,'x3C2;",',449,'0799',676,276,'},',22,861,'x3D5',645,'d:0.2',676,276,'},',22,861,'x21BC',';",a:0,d:-0.','2,',22,'arrows"},{c:"&#','x21BD',893,'1,',22,896,'x21C0',893,'2,',22,896,'x21C1',893,'1,',22,'arrows"},{c',':"<span style=\\"position:relative; ','top:-.1em\\">&#','x02D3',';</span>",a:0','.1,',22,'symbol"},{c',912,913,'x02D2',915,'.1,','tclass:"symbol"},{c:"&#','x25B9;",',924,'x25C3;",',22,918,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,108,'3,',27,':",",a:-',101,27,':"<',645,27,':"<span style=\\"font-size',':133','%; position:relative; top:.','1em\\">/</','span>",',384,'krn:{"1',479,'65',479,'77',479,'78',479,'89":0.0556,"90":-0.0556},',27,':">',645,27,':"⋆',37,22,'a
rial"},{c:"&#','x2202;",ic:0.0556',676,276,'},',27,':"A",',670,'139','},tclass:"italic"},{c:"','B",ic:0.0502',676,276,990,'C",ic:0.0715,krn:{"61',150,691,276,990,'D",ic:0.',216,676,'0556',990,'E",ic:0.0576',676,276,990,'F",ic:0.139',666,276,990,'G",',670,276,990,'H",ic:0.0812,krn:{"61',479,691,'0556',990,'I",ic:0.0785',676,'111',990,'J",ic:0.0962',666,'167',990,'K",ic:0.0715,krn:{"61',479,691,'0556',990,'L",',670,216,990,'M','",ic:0.109,krn:{"','61',479,691,276,990,'N',1040,'61',162,'61',150,691,276,990,'O",ic:0.',216,676,276,990,'P",ic:0.139',666,276,990,'Q",d:0.2',676,276,990,'R",ic:0.00773',676,276,990,'S",ic:0.0576,krn:{"61',479,691,276,990,'T','",ic:0.139,krn:{"','61',150,691,276,990,'U',1040,'59',166,',"58',166,',"61',479,'127":0.',216,990,'V",ic:0.222,krn:{"59','":-0.167,"','58',1096,'61',166,990,'W',1078,'59',1096,'58',1096,'61',166,990,'X",ic:0.0785,krn:{"61',162,'61',150,691,276,990,'Y",ic:0.222,krn:{"59',1096,'58',1096,'61',166,990,'Z",ic:0.0715,krn:{"61',479,691,276,'},',22,'italic"},{c',':"♭",',924,'x266E;",',924,'x266F;",',22,918,':"<span style=\\"','position: relative; top',':-.3em','; font-size:75%\\">&#','x203F',915,',d:-0.1,',22,'arial','"},{c:"<span style=\\"',1140,':.4em',1142,'x2040',915,',d:-0.1,',22,981,'x2113;",',670,'111',990,'a',442,22,1131,':"b",',22,1131,':"c",a:0',676,'0556',990,'d',148,'89":0.0556,"90',479,'106',166,',"102',1096,1092,'167',990,'e",a:0',676,'0556',990,'f",',727,'108,krn:{"',691,'167',990,'g",',449,'0359',676,216,990,'h',148,'127',186,990,'i",',22,1131,':"j",',727,'0572,krn:{"59',479,809,990,'k",ic:0.0315,',22,1131,':"l",ic:0.0197',676,276,990,'m',442,22,1131,':"n',442,22,1131,':"o",a:0',676,'0556',990,'p',442,'d:0.2',676,276,990,'q",',449,'0359',676,276,990,'r','",a:0,ic:0.',216,',krn:{"',691,'0556',990,'s",a:0',676,'0556',990,'t",',670,276,990,'u",a:0',676,216,990,'v',1245,'0359',676,216,990,'w',1245,'0269',676,276,990,'x",a:0',676,216,990,'y",',449,'0359',676,'0556',990,'z',1245,'044',676,'0556},',22,1131,':"ı",a:0',676,216,990,'j",d:0.2',676,276,'},',
22,1131,':"℘',37,'d:0.2',676,87,22,'arial"},{c',912,'left: .3em; top: -.65em; font-size: 67%\\">→</',963,'ic:0.154,',924,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c',912,'top:.1em\\">−',915,'.1,',924,'xB7',893,'2,',27,':"×',37,27,912,'top:.3em\\">*',915,',',27,':"÷',37,27,':"◊",',924,'xB1',645,27,':"∓",',924,'x2295;",',924,'x2296;",',924,'x2297;",',924,'x2298;",',924,'x2299;",',924,'x25EF;",',22,981,'x2218',893,'1,',22,'symbol2"},{c:"&#','x2022',893,'2,',924,'x224D',645,22,1361,'x2261',645,22,1361,'x2286;",',924,'x2287;",',924,'x2264;",',924,'x2265;",',924,'x227C;",',924,'x227D;",',22,918,':"~",a:0,d:-0.2,',27,':"≈',645,'d:-0.1,',924,'x2282;",',924,'x2283;",',924,'x226A;",',924,'x226B;",',924,'x227A;",',924,'x227B;",',924,'x2190;",a:-0.1,',22,'arrow1"},{c:"&#','x2192;",a:-0.1,',22,1407,'x2191',';",a:0.2,d:0',',',22,'arrow1a"},{c:"&#','x2193',1412,',',22,1415,'x2194;",a:-0.1,',22,1407,'x2197',645,22,896,'x2198',645,22,896,'x2243',645,22,1361,'x21D0;",a:-0.1,',22,'arrow2"},{c:"&#','x21D2;",a:-0.1,',22,1438,'x21D1',1412,'.1,',22,1415,'x21D3',1412,'.1,',22,1415,'x21D4;",a:-0.1,',22,1438,'x2196',645,22,896,'x2199',645,22,896,'x221D',645,27,959,': 133%; margin-right: -.1em; ',1140,':.4em\\">′',915,',',22,861,'x221E',645,924,'x2208;",',924,'x220B;",',22,918,959,': 150',961,'2em\\">&#','x25B3;</',963,22,918,959,': 150',961,1485,'x25BD;</',963,22,918,959,': 133',961,'2em\\">/</',963,40,27,959,': 67%; ',1140,':-.15em; ','margin-right:-.','3em\\">⊢</',963,924,'x2200;",',924,'x2203;",',924,'xAC',893,'1,',924,'x2205;",',924,'x211C;",',924,'x2111;",',924,'x22A4;",',924,'x22A5;",',924,'x2135;",',22,918,':"A','",krn:{"48":0.','194','},tclass:"cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139',1537,'C",ic:0.0583',1539,'139',1537,'D",ic:0.',216,1539,276,1537,'E",ic:0.0894',1539,'111',1537,'F",ic:0.0993',1539,'111',1537,'G",',727,'0593',1539,'111',1537,'H",ic:0.00965',1539,'111',1537,'I",ic:0.0738',1539,216,1537,'J",',727,'185',1539,'167',1537,'K",ic:0.0144',1539,'0556
',1537,'L',1535,'139',1537,'M',1535,'139',1537,'N",ic:0.147',1539,276,1537,'O",ic:0.',216,1539,'111',1537,'P",ic:0.0822',1539,276,1537,'Q",d:0.2',1539,'111',1537,'R',1535,276,1537,'S",ic:0.075',1539,'139',1537,'T",ic:0.254',1539,216,1537,'U",ic:0.0993',1539,276,1537,'V",ic:0.0822',1539,216,1537,'W",ic:0.0822',1539,276,1537,'X",ic:0.146',1539,'139',1537,'Y",ic:0.0822',1539,276,1537,'Z",ic:0.0794',1539,'139},',22,'cal"},{c:"⋃",',924,'x22C2;",',924,'x228E;",',924,'x22C0;",',924,'x22C1;",',924,'x22A2;",',924,'x22A3;",',924,'x2308;",a:',101,22,981,'x2309;",','a:',101,22,981,'x230A;",','a:',101,22,981,'x230B;",','a:',101,22,1308,':"{",',40,27,':"}",',40,27,':"〈",','a:',101,924,'x232A;",a:',101,924,'x2223;",',384,924,'x2225;",',384,924,'x2195',1412,',',22,1415,'x21D5;",a:0.3,d:0,',22,1415,'x2216;",','a:0.3,',384,924,'x2240;",',22,918,912,'top: .8em\\">√</',963,'h:0.04,d:0.8,',924,'x2210;",a:0.4,',924,'x2207;",',22,918,959,': 85%; ','left:-.1em; margin-right:-.',1485,'x222B',915,'.4,',384,'ic:0.111,',22,861,'x2294;",',924,'x2293;",',924,'x2291;",',924,'x2292;",',924,'xA7;",',384,27,':"†",',384,27,':"‡",',384,27,':"¶",a:0.3,',384,22,861,'x2663;",',22,981,'x2662;",',22,981,'x2661;",',22,981,'x2660;",',22,'arial"}],cmex10:[{c',90,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',93,1766,'17,',22,1769,383,1766,'104,',22,1769,388,1766,'105,',22,1769,':"⌈",',1766,'106,',22,'delim1a"},{c:"&#',1662,1766,'107,',22,1789,1667,1766,'108,',22,1789,1672,1766,'109,',22,'delim1a',1148,'margin-left:-.1em\\">{</',963,1766,'110,',22,'delim1',1148,1509,'1em\\">}</',963,1766,'111,',22,1769,1683,1766,'68,',22,'delim1b','"},{c:"〉",',1766,'69,',22,'delim1b"},{c:"∣',';",h:0.7,d:0.1,delim:{rep:','12},',924,'x2225',1830,'13},',22,918,111,1766,'46,',22,1789,1704,1766,'47,',22,'delim1a"},{c',90,'h:0.04,d:1.76,n:','18,',22,'delim2"},{c',93,1849,'19,',22,1852,90,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',93,1859,'33,',22,1862,383,1859,'34,',22,1862,388,1859,'35,',22,1862,1785,1859,'36,',22,'delim3a"}
,{c',':"⌉",',1859,'37,',22,1882,':"⌊",',1859,'38,',22,1882,':"⌋",',1859,'39,',22,1882,912,1723,'1em\\">{</',963,1859,'40,',22,1862,912,'left:-.05em; ',1509,'1em\\">}</',963,1859,'41,',22,1862,1683,1859,'42,',22,'delim3b',1825,1859,'43,',22,'delim3b"},{c',111,1859,'44,',22,1882,':"∖",',1859,'45,',22,1882,90,'h:0.04,d:2.96,','n:48,',22,'delim4"},{c',93,1936,'n:49,',22,1939,383,1936,'n:50,',22,1939,388,1936,'n:51,',22,1939,1785,1936,'n:52,',22,'delim4a"},{c',1883,1936,'n:53,',22,1959,1888,1936,'n:54,',22,1959,1893,1936,'n:55,',22,1959,912,1723,'1em\\">{</',963,1936,'n:56,',22,1939,912,1723,'1em\\">}</',963,1936,'n:57,',22,1939,1683,1936,22,'delim4b',1825,1936,22,'delim4b"},{c',111,1936,22,1959,1930,1936,22,1959,111,1849,'30,',22,'delim2a"},{c',1930,1849,'31,',22,'delim2a"},{c:"æ',';",h:0.8,d:0.2,delim:{','top:48,bot:64,rep:66','},tclass:"delimx"},{c:"&#','xF6',2017,'top:49,bot:65,rep:67',2019,'xE9',2017,'top:50,bot:52,rep:54',2019,'xF9',2017,'top:51,bot:53,rep:55',2019,'xEB',2017,'bot:52,rep:54',2019,'xFB',2017,'bot:53,rep:55',2019,'xEA',2017,'top:50,rep:54',2019,'xFA',2017,'top:51,rep:55',2019,'xEC',2017,'top:56,mid:60,bot:58,rep:62',2019,'xFC',2017,'top:57,mid:61,bot:59,rep:62',2019,'xEE',2017,'top:56,bot:58,rep:62',2019,'xFE',2017,'top:57,bot:59,rep:62',2019,'xED',2017,'rep:63',2019,'xFD',2017,'rep:119',2019,'xEF',2017,'rep:62},',22,'delimx',1148,'margin:.125em\\">|</',963,'h:0.8,d:'],
+ ['0,delim:{','top:','120,bot:121,rep:63},','tclass:"','normal','"},{c:"&#','xE8',';",h:0.8,d:0.2,delim:{',1,'56,bot:59,rep:62},',3,'delimx',5,'xF8',7,1,'57,bot:58,rep:62},',3,11,5,'xE7',7,'rep:66},',3,11,5,'xF7',7,'rep:67},',3,11,5,'x2329;",','h:0.04,d:1.76,n:','28,',3,'delim2b',5,'x232A;",',33,'29,',3,36,5,'x2294',';",h:0,d:1,n:','71,',3,'bigop1',5,'x2294',';",h:0.1,d:1.','5,',3,'bigop2',5,'x222E',';",h:0,d:1.11,ic:0.095,n:','73,',3,'bigop1c',5,'x222E;",h:0,d:2.22,ic:0.222,',3,'bigop2c',5,'x2299',45,'75,',3,48,5,'x2299',51,'5,',3,54,5,'x2295',45,'77,',3,48,5,'x2295',51,'5,',3,54,5,'x2297',45,'79,',3,48,5,'x2297',51,'5,',3,54,5,'x2211',45,'88,',3,'bigop1a',5,'x220F',45,'89,',3,106,5,'x222B',57,'90,',3,60,5,'x222A',45,'91,',3,'bigop1b',5,'x2229',45,'92,',3,124,5,'x228E',45,'93,',3,124,5,'x22C0',45,'94,',3,48,5,'x22C1',45,'95,',3,48,5,'x2211',51,'6,',3,'bigop2a',5,'x220F',51,'5,',3,154,5,'x222B;",h:0,d:2.22,ic:0.222,',3,64,5,'x222A',51,'5,',3,'bigop2b',5,'x2229',51,'5,',3,170,5,'x228E',51,'5,',3,170,5,'x22C0',51,'5,',3,54,5,'x22C1',51,'5,',3,54,5,'x2210',45,'97,',3,106,5,'x2210',51,'5,',3,154,5,'xFE3F;",h:0.','722,w:0.','65,n:99,',3,'wide1',5,208,'85,w:1.1,n:100,',3,'wide2',5,208,'99,w:1.65,',3,'wide3','"},{c:"~",h:0.',209,'5,n:102,',3,'wide1a',223,'8,w:0.8,n:103,',3,'wide2a',223,'99,w:1.3,',3,'wide3a','"},{c:"[",',33,'20,',3,'delim2','"},{c:"]",',33,'21,',3,240,5,'x2308;",',33,'22,',3,'delim2a',5,'x2309;",',33,'23,',3,251,5,'x230A;",',33,'24,',3,251,5,'x230B;",',33,'25,',3,251,'"},{c:"<span style=\\"','position:relative; ','left',':-.1em','; margin-right:-.','1em\\">{</span>",',33,'26,',3,240,270,'position:relative',274,'1em; left:-.05em\\">}</span>",',33,'27,',3,240,270,'font-size: ','150%; ','position:relative; top:.','8em','\\">√</span>",h:0.','04,d:1.16,n:113,',3,'root',270,289,'220%; ',291,'8em',293,'04,d:1.76,n:114,',3,296,270,289,'310%; ',291,'8em',274,'01em',293,'06,d:2.36,n:115,',3,296,270,289,'400%; ',291,'8em',274,'025em',293,'08,d:2.96,n:116,',3,296,270,289,'490%; ',291,'8em',274,'03em',293,
'1,d:3.75,n:117,',3,296,270,289,'580%; ',291,'775em',274,'04em',293,'12,d:4.5,n:118,',3,296,270,289,'750%; ',291,343,';','margin-right',':-.04em',293,'14,d:5.7,',3,296,270,'margin-left',':.02em\\">|</','span><span style=\\"',363,':.08em; ','margin-right:.125em\\">|</span','>",h:0.8,d:',0,1,'126,bot:127,rep:119},',3,'normal',5,'x2191',';",h:0.7,d:0,delim:{',1,'120,rep:63},',3,'arrow1a',5,'x2193;",h:0.65,d:',0,'bot:121,rep:63},',3,381,270,363,273,'\\"></',365,291,'55em',274,'3em\\">◜',';</span>",h:0.','05,',3,'symbol',270,363,':-.3em\\"></',365,291,394,274,'1em\\">◝',397,'05,',3,400,270,363,273,'\\"></',365,291,'15em',274,'3em\\">◟',397,'05,',3,400,270,363,':-.3em\\"></',365,291,419,274,'1em\\">◞',397,'05,',3,400,5,'x21D1',377,1,'126,rep:119},',3,381,5,'x21D3',377,'bot:127,rep:119},',3,381,'"}],cmti10',':[{c:"Γ",','ic:0.133,',3,'igreek"},{c:"&','Delta;",',3,455,'Theta;",','ic:0.094,',3,455,'Lambda;",',3,455,'Xi;",ic:0.153,',3,455,'Pi;",ic:0.164,',3,455,'Sigma;",','ic',':0.12,',3,455,'Upsilon;",','ic:0.111,',3,455,'Phi;",','ic:0.0599,',3,455,'Psi;",','ic:0.111,',3,455,'Omega;",','ic:0.103,',3,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',496,':"fl',498,496,':"ffi',498,496,':"ffl',498,496,':"ı",a:0,','ic:0.','0767,',496,':"j",d:0.2,','ic:0.0374,',496,':"ˋ",',3,'iaccent',5,'x2CA;",','ic:0.0969,',3,518,5,'x2C7;",','ic:0.083,',3,518,5,'x2D8;",','ic:0.108,',3,518,5,'x2C9;",',490,3,518,5,'x2DA;",',3,518,'"},{c:"?",','d:0.17,w:0.46,',496,':"ß",','ic:0.105,',496,':"æ",a:0,','ic:0.0751,',496,':"œ",a:0,',550,496,':"ø",','ic:0.0919,',496,':"Æ",','ic',474,496,':"Œ",','ic',474,496,':"Ø",',460,496,':"?",krn:{"108":-0.','256,"76":-0.321},',496,':"!",','ic:0.124,lig:{"96":','60},',496,':"”",','ic:0.0696,',496,':"#",ic:0.0662,',496,':"$",',496,':"%",ic:0.136,',496,':"&",','ic:0.0969,',496,':"’",','ic:0.124,','krn:{"63"
:0.','102,"33":0.102},lig:{"39":34},',496,':"(",d:0.2,','ic:0.162,',496,':")",d:0.2,','ic:0.0369,',496,':"*",ic:0.149,',496,':"+",a:0.1,','ic:0.0369,',496,':",",a:-0.3,d:0.2,w:0.278,',496,':"-",a:0,ic:0.0283',',lig:{"45":','123},',496,':".",a:-0.25,',496,':"/",ic:0.162,',496,':"0",ic:0.136,',496,':"1",ic:0.136,',496,':"2",ic:0.136,',496,':"3",ic:0.136,',496,':"4",ic:0.136,',496,':"5",ic:0.136,',496,':"6",ic:0.136,',496,':"7",ic:0.136,',496,':"8",ic:0.136,',496,':"9",ic:0.136,',496,':":",ic:0.0582,',496,':";",ic:0.0582,',496,':"¡",','ic:0.0756,',496,':"=",a:0,d:-0.1,','ic:0.0662,',496,':"¿",',496,':"?",','ic:0.122,','lig:{"96":','62},',496,':"@",ic:0.096,',496,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',656,'86','":-0.102,"','87',660,'101','":-0.0511,"','97',664,'111',664,'100',664,'99',664,'103',664,'113','":-0.0511','},',496,':"B',498,496,':"C",','ic:0.145,',496,':"D",',460,'krn:{"88','":-0.0256,"','87',688,'65',688,'86',688,'89":-0.','0256},',496,':"E",ic',474,496,':"F','",ic:0.133,krn:{"','111',656,'101',656,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',660,'79',688,'67',688,'71',688,'81":-0.0256','},',496,':"G",ic:0.0872,',496,':"H",ic:0.164,',496,':"I",ic:0.158,',496,':"J",ic:0.14,',496,':"K",',683,'krn:{"79',688,'67',688,'71',688,717,'},',496,':"L",krn:{"84',656,'89',656,'86',660,'87',660,'101',664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"M",ic:0.164,',496,':"N",ic:0.164,',496,':"O",',460,'krn:{"88',688,'87',688,'65',688,'86',688,695,'0256},',496,':"P',498,'krn:{"65":-0.0767},',496,':"Q",d:0.2,',460,496,':"R",ic:0.0387,',654,'0.0256,"84',656,'89',656,'86',660,'87',660,'101',664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"S",ic',474,496,':"T',702,'121',656,'101',656,'111',708,'117',656,'65":-0.0767},',496,':"U",i
c:0.164,',496,':"V",ic:0.','184,krn:{"','111',656,'101',656,'117',708,'65',660,'79',688,'67',688,'71',688,717,'},',496,':"W",ic:0.',831,'65":-0.0767},',496,':"X",ic:0.158,krn:{"79',688,'67',688,'71',688,717,'},',496,':"Y",ic:0.','194',',krn:{"101',656,'111',708,'117',656,'65":-0.0767},',496,':"Z",',683,496,':"[",d:0.1,','ic:0.188,',496,':"“",','ic:0.169,',496,':"]",d:0.1,','ic:0.105,',496,':"ˆ",','ic:0.0665,',3,518,5,'x2D9;",','ic:0.118,',3,518,5,'x2018;",',573,'92},',496,':"a','",a:0,ic:0.',511,496,':"b",ic:0.0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"c',899,'0565',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"d',498,'krn:{"108":','0.0511},',496,':"e',899,'0751',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"f',494,'12,"102":11,"108":13},',496,':"g','",a:0,d:0.2,ic:0.','0885,',496,':"h",ic:0.',511,496,':"i",ic:0.102,',496,513,683,496,':"k",',531,496,':"l',498,940,'0.0511},',496,':"m',899,511,496,':"n',899,511,'krn:{"39":-0.102},',496,':"o',899,'0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"p',967,'0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"q',967,'0885,',496,':"r',899,'108',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"s',899,'0821,',496,':"t",ic:0.0949,',496,':"u',899,511,496,':"v',899,'108,',496,':"w',899,1068,940,'0.0511},',496,':"x',899,'12,',496,':"y',967,'0885,',496,':"z',899,'123,',496,':"–",a:0.1,ic:0.','0921',607,'124},',496,':"—",a:0.1,ic:0.','0921,',496,':"˝",',647,3,518,5,'x2DC;",','ic:0.116,',3,518,5,'xA8;",',3,518,'"}],cmbx10',452,3,'bgreek"},{c:"&','Delta;",',3,1112,459,3,1112,'Lambda;",',3,1112,'Xi;",',3,1112,'Pi;",',3,1112,472,3,1112,477,3,1112,481,3,1112,485,3,1112,489,3,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1146,':"fl",',1146,':"ff
i",',1146,':"ffl",',1146,509,1146,513,1146,':"ˋ",',3,'baccent',5,520,3,1161,5,525,3,1161,5,530,3,1161,5,535,3,1161,5,'x2DA;",',3,1161,543,1146,546,1146,549,1146,552,1146,555,1146,558,1146,562,1146,566,1146,569,'278,"76":-0.319},',1146,572,648,'60},',1146,576,1146,':"#",',1146,':"$",',1146,':"%",',1146,585,1146,588,590,'111,"33":0.111},lig:{"39":34},',1146,593,1146,596,1146,':"*",',1146,601,1146,':",",a:-0.3,d:0.2,w:0.278,',1146,':"-",a:0',607,'123},',1146,':".",a:-0.25,',1146,':"/",',1146,':"0",',1146,':"1",',1146,':"2",',1146,':"3",',1146,':"4",',1146,':"5",',1146,':"6",',1146,':"7",',1146,':"8",',1146,':"9",',1146,':":",',1146,':";",',1146,638,1146,641,1146,':"¿",',1146,646,648,'62},',1146,':"@",',1146,':"A",krn:{"116','":-0.0278,"','67',1274,'79',1274,'71',1274,'85',1274,'81',1274,'84','":-0.0833,"','89',1286,'86":-0.','111,"87":-0.111},',1146,':"B",',1146,682,1146,':"D",krn:{"88',1274,'87',1274,'65',1274,'86',1274,695,'0278},',1146,':"E",',1146,':"F",krn:{"111',1286,'101',1286,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1274,'67',1274,'71',1274,'81":-0.0278','},',1146,':"G",',1146,':"H",',1146,':"I",krn:{"73":0.0278},',1146,':"J",',1146,':"K",krn:{"79',1274,'67',1274,'71',1274,1321,'},',1146,':"L",krn:{"84',1286,'89',1286,1289,'111,"87":-0.111},',1146,':"M",',1146,':"N",',1146,':"O",krn:{"88',1274,'87',1274,'65',1274,'86',1274,695,'0278},',1146,':"P",krn:{"65',1286,'111',1274,'101',1274,'97',1274,'46',1286,'44":-0.0833},',1146,784,1146,':"R",krn:{"116',1274,'67',1274,'79',1274,'71',1274,'85',1274,'81',1274,'84',1286,'89',1286,1289,'111,"87":-0.111},',1146,':"S",',1146,':"T",krn:{"121',1274,'101',1286,'111',1314,'0833,"117":-0.0833','},',1146,':"U",',1146,830,'0139,krn:{"','111',1286,'101',1286,'117',1314,'111,"79',1274,'67',1274,'71',1274,1321,'},',1146,849,1410,'111',1286,'101',1286,'117',1314,'111,"79',1274,'67',1274,'71',1274,1321,'},',1146,':"X",krn:{"79',1274,'67',1274,'71',1274,1321,'},',1146,862,'025',864,1286,'111',1314,1404,'},',1146,872,1146,875,1146,878,1146,881,1146
,884,3,1161,5,889,3,1161,5,894,648,'92},',1146,':"a','",a:0,krn:{"','118',1274,'106":0.','0556,"121',1274,'119":-0.','0278},',1146,':"b",krn:{"101','":0.0278,"','111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"c',1482,'104',1274,'107":-0.0278},',1146,':"d",',1146,':"e",a:0,',1146,':"f',1144,'12,"102":11,"108":13},',1146,':"g',967,1410,1485,'0278},',1146,':"h",krn:{"116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"i",',1146,513,1146,':"k",krn:{"97":-0.0556,"101',1274,'97',1274,'111',1274,'99":-0.','0278},',1146,':"l",',1146,':"m',1482,'116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"n',1482,'116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"o",a:0',864,1492,'111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"p",a:0,d:0.2',864,1492,'111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"q",a:0,d:0.2,',1146,':"r",a:0,',1146,':"s",a:0,',1146,':"t",krn:{"121',1274,1488,'0278},',1146,':"u',1482,1488,'0278},',1146,':"v',899,1410,'97":-0.0556,"101',1274,'97',1274,'111',1274,1554,'0278},',1146,':"w',899,'0139',864,1274,'97',1274,'111',1274,1554,'0278},',1146,':"x",a:0,',1146,':"y',967,1410,'111',1274,'101',1274,'97',1274,'46',1286,'44":-0.0833},',1146,':"z",a:0,',1146,1088,'0278',607,'124},',1146,1093,'0278,',1146,1096,3,1161,5,1101,3,1161,5,'xA8;",',3,1161,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family',': serif','",".typeset .','italic":"font-style: italic',1712,'bold":"font-weight: bold',1712,'lucida',1710,': \'lucida sans unicode','\'",".typeset .','arial',1710,': \'arial unicode MS',1720,'cal',1710,': \'Script MT\', \'Script MT Bold\', cursive',1712,'arrows','":"font-family: \'Arial unicode MS',1720,'arrow1',1730,1720,381,1730,'\'; ',291,'05em;left:-.',419,274,419,1712,'arrow2',1730,'\'; ',271,'top',273,';",".typeset .','arrow3',1730,'\'; margin:.1em',
1712,400,1730,1720,'symbol2',1730,1720,'delim1','":"font-family: \'Times New Roman\'; font-','size: ','133%; ',291,'7em',1712,'delim1a','":"font-family: \'Lucida sans unicode\'; font-size: ','133%; ',291,'8em',1712,'delim1b',1730,'\'; font-size: ','133%; ',291,'8em',1712,240,1762,1763,'180%; ',291,'75em',1712,251,1769,'180%; ',291,'8em',1712,36,1730,1776,'180%; ',291,'8em',1712,'delim3',1762,1763,'250%; ',291,'725em',1712,'delim3a',1769,'250%; ',291,343,1712,'delim3b',1730,1776,'250%; ',291,'8em',1712,'delim4',1762,1763,'325%; ',291,'7em',1712,'delim4a',1769,'325%; ',291,343,1712,'delim4b',1730,1776,'325%; ',291,'8em',1712,11,1710,': Symbol; ',291,'2em',1712,'greek',1710,': \'Times New Roman',1720,492,1762,'style:italic',1712,1142,1762,'weight:bold',1712,48,1730,1776,'130','%; position: relative; top',': .7em; margin:-.05em',1712,106,1730,1776,'110',1863,': .85em',1750,124,1730,1776,'180',1863,': .6em',1712,60,1730,1776,'85',1863,': 1em',1712,54,1730,1776,'230',1863,1878,'; margin:-.05em',1712,154,1730,1776,'185',1863,': .75em',1712,170,1730,1776,'275',1863,': .',394,1712,64,1730,1776,'185',1863,1885,274,'1em',1712,212,'":"',289,'67',1863,':-.5em',1750,217,'":"',289,'110',1863,':-.2em',1750,222,'":"',289,'175%;",".typeset .',227,1762,1763,'75',1863,1924,1712,231,1762,1763,'133',1863,1931,1712,235,1762,1763,'200',1863,273,1712,296,1730,'\'; ',356,':-.075em',1712,'accent',1730,'\'; ',291,'05em; left:.15em',1712,518,1730,'\'; ',291,1968,'; font-','style:italic',1712,1161,1730,'\'; ',291,1968,1975,1857,'"});','if(jsMath.browser=="','Mozilla"){','jsMath.Update.TeXfonts({cmex10:{"','48":{c:""},"49":{c:""},"50":{c:""},"51":{c:""},"52":{c:""},"53":{c:""},"54":{c:""},"55":{c:""},"56":{c:""},"57":{c:""},"58":{c:""},"59":{c:""},"60":{c:""},"61":{c:""},"62":{c:""},"64":{c:""},"65":{c:""},"66":{c:""},"67":{c:""}}});',1708,'accent',1710,': Arial unicode MS; ',291,'05em; left:.
05em"});}',1986,'MSIE"){jsMath.Browser.msieFontBug=1;',1988,'63','":{c:"<span style=\\"position:relative; left:.','125em; ',368,'>"},"119',2000,'02em; ',356,'=.08em\\">|</',365,368,'>"}}});}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 3mu/}}");jsMath.Macro("bowtie","\\\\mathrel\\\\triangleright\\\\kern-6mu\\\\mathrel\\\\triangleleft");jsMath.Box.defaultH=0.8;jsMath.Script.End();']
+]);
\ No newline at end of file
Index: loncom/html/adm/jsMath/jsMath-fallback-symbols.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-symbols.js:1.1 loncom/html/adm/jsMath/jsMath-fallback-symbols.js:1.2
--- loncom/html/adm/jsMath/jsMath-fallback-symbols.js:1.1 Wed Dec 7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-symbols.js Mon Mar 27 14:32:07 2006
@@ -8,450 +8,21 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-jsMath.Add(jsMath.Box,{
-
- TeX_orig: jsMath.Box.TeX, // save old TeX routine
-
- /*
- * Replace the standard TeX command with one that
- * handles the fact that we don't have the sizes of the
- * characters precomputed
- */
- TeX: function (C,font,style,size) {
- c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
- if (c.img != null) {return this.TeX_orig(C,font,style,size)}
- if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
- var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
- var scale = jsMath.Typeset.TeX(style,size).scale;
- if (c.bh != null) {
- box.bh = c.bh * scale;
- box.bd = c.bd * scale;
- } else {
- var h = box.bd+box.bh;
- var ph = Math.round(h*jsMath.em);
- if (h > jsMath.hd) {
- box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
- + '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'width: 1; height: '+ph+'px">').h - h;
- box.bh = h - box.bd;
- }
- c.bh = box.bh/scale;
- c.bd = box.bd/scale;
- }
- if (jsMath.msieFontBug) {
- // hack to avoid Font changing back to the default
- // font when a unicode reference is not followed
- // by a letter or number
- box.html += '<SPAN STYLE="display: none">x</SPAN>'
- }
- return box;
- }
-});
-
-jsMath.Add(jsMath.Img,{
- UpdateTeXFonts: function (change) {
- for (var font in change) {
- for (var code in change[font]) {
- jsMath.TeX[font][code] = change[font][code];
- jsMath.TeX[font][code].tclass = 'i' + font;
- }
- }
- }
-});
-
-
-jsMath.Img.UpdateTeXFonts({
- cmr10: {
- '33': {c: '!', lig: {'96': 60}},
- '35': {c: '#'},
- '36': {c: '$'},
- '37': {c: '%'},
- '38': {c: '&'},
- '40': {c: '(', d:.2},
- '41': {c: ')', d:.2},
- '42': {c: '*', d:-.3},
- '43': {c: '+', a:.1},
- '44': {c: ',', a:-.3},
- '45': {c: '-', a:0, lig: {'45': 123}},
- '46': {c: '.', a:-.25},
- '47': {c: '/'},
- '48': {c: '0'},
- '49': {c: '1'},
- '50': {c: '2'},
- '51': {c: '3'},
- '52': {c: '4'},
- '53': {c: '5'},
- '54': {c: '6'},
- '55': {c: '7'},
- '56': {c: '8'},
- '57': {c: '9'},
- '58': {c: ':'},
- '59': {c: ';'},
- '61': {c: '=', a:0, d:-.1},
- '63': {c: '?', lig: {'96': 62}},
- '64': {c: '@'},
- '65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- '66': {c: 'B'},
- '67': {c: 'C'},
- '68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
- '69': {c: 'E'},
- '70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '71': {c: 'G'},
- '72': {c: 'H'},
- '73': {c: 'I', krn: {'73': 0.0278}},
- '74': {c: 'J'},
- '75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- '77': {c: 'M'},
- '78': {c: 'N'},
- '79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
- '80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
- '81': {c: 'Q', d: 1},
- '82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- '83': {c: 'S'},
- '84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
- '85': {c: 'U'},
- '86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
- '90': {c: 'Z'},
- '91': {c: '[', d:.1},
- '93': {c: ']', d:.1},
- '97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
- '100': {c: 'd'},
- '101': {c: 'e', a:0},
- '102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
- '103': {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}},
- '104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- '105': {c: 'i'},
- '106': {c: 'j', d:1},
- '107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- '108': {c: 'l'},
- '109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- '110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- '111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '112': {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '113': {c: 'q', a:0, d:1},
- '114': {c: 'r', a:0},
- '115': {c: 's', a:0},
- '116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
- '117': {c: 'u', a:0, krn: {'119': -0.0278}},
- '118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- '119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- '120': {c: 'x', a:0},
- '121': {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
- '122': {c: 'z', a:0}
- },
- cmmi10: {
- '65': {c: 'A', krn: {'127': 0.139}},
- '66': {c: 'B', ic: 0.0502, krn: {'127': 0.0833}},
- '67': {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '68': {c: 'D', ic: 0.0278, krn: {'127': 0.0556}},
- '69': {c: 'E', ic: 0.0576, krn: {'127': 0.0833}},
- '70': {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
- '71': {c: 'G', krn: {'127': 0.0833}},
- '72': {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
- '73': {c: 'I', ic: 0.0785, krn: {'127': 0.111}},
- '74': {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}},
- '75': {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
- '76': {c: 'L', krn: {'127': 0.0278}},
- '77': {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '78': {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '79': {c: 'O', ic: 0.0278, krn: {'127': 0.0833}},
- '80': {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
- '81': {c: 'Q', d:1, krn: {'127': 0.0833}},
- '82': {c: 'R', ic: 0.00773, krn: {'127': 0.0833}},
- '83': {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '84': {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '85': {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}},
- '86': {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
- '87': {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
- '88': {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '89': {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
- '90': {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- '97': {c: 'a', a:0},
- '98': {c: 'b'},
- '99': {c: 'c', a:0, krn: {'127': 0.0556}},
- '100': {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}},
- '101': {c: 'e', a:0, krn: {'127': 0.0556}},
- '102': {c: 'f', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}},
- '103': {c: 'g', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}},
- '104': {c: 'h', krn: {'127': -0.0278}},
- '105': {c: 'i'},
- '106': {c: 'j', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}},
- '107': {c: 'k', ic: 0.0315},
- '108': {c: 'l', ic: 0.0197, krn: {'127': 0.0833}},
- '109': {c: 'm', a:0},
- '110': {c: 'n', a:0},
- '111': {c: 'o', a:0, krn: {'127': 0.0556}},
- '112': {c: 'p', a:0, d:1, krn: {'127': 0.0833}},
- '113': {c: 'q', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}},
- '114': {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
- '115': {c: 's', a:0, krn: {'127': 0.0556}},
- '116': {c: 't', krn: {'127': 0.0833}},
- '117': {c: 'u', a:0, krn: {'127': 0.0278}},
- '118': {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}},
- '119': {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}},
- '120': {c: 'x', a:0, krn: {'127': 0.0278}},
- '121': {c: 'y', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}},
- '122': {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}}
- },
- cmsy10: {
- '0': {c:'–', a:.1}
- },
- cmti10: {
- '33': {c: '!', lig: {'96': 60}},
- '35': {c: '#', ic: 0.0662},
- '37': {c: '%', ic: 0.136},
- '38': {c: '&', ic: 0.0969},
- '40': {c: '(', d:.2, ic: 0.162},
- '41': {c: ')', d:.2, ic: 0.0369},
- '42': {c: '*', ic: 0.149},
- '43': {c: '+', a:.1, ic: 0.0369},
- '44': {c: ',', a:-.3, d:.2, w: 0.278},
- '45': {c: '-', a:0, ic: 0.0283, lig: {'45': 123}},
- '46': {c: '.', a:-.25},
- '47': {c: '/', ic: 0.162},
- '48': {c: '0', ic: 0.136},
- '49': {c: '1', ic: 0.136},
- '50': {c: '2', ic: 0.136},
- '51': {c: '3', ic: 0.136},
- '52': {c: '4', ic: 0.136},
- '53': {c: '5', ic: 0.136},
- '54': {c: '6', ic: 0.136},
- '55': {c: '7', ic: 0.136},
- '56': {c: '8', ic: 0.136},
- '57': {c: '9', ic: 0.136},
- '58': {c: ':', ic: 0.0582},
- '59': {c: ';', ic: 0.0582},
- '61': {c: '=', a:0, d:-.1, ic: 0.0662},
- '63': {c: '?', ic: 0.122, lig: {'96': 62}},
- '64': {c: '@', ic: 0.096},
- '65': {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '66': {c: 'B', ic: 0.103},
- '67': {c: 'C', ic: 0.145},
- '68': {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
- '69': {c: 'E', ic: 0.12},
- '70': {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- '71': {c: 'G', ic: 0.0872},
- '72': {c: 'H', ic: 0.164},
- '73': {c: 'I', ic: 0.158},
- '74': {c: 'J', ic: 0.14},
- '75': {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- '76': {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '77': {c: 'M', ic: 0.164},
- '78': {c: 'N', ic: 0.164},
- '79': {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
- '80': {c: 'P', ic: 0.103, krn: {'65': -0.0767}},
- '81': {c: 'Q', d: 1, ic: 0.094},
- '82': {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '83': {c: 'S', ic: 0.12},
- '84': {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
- '85': {c: 'U', ic: 0.164},
- '86': {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- '87': {c: 'W', ic: 0.184, krn: {'65': -0.0767}},
- '88': {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- '89': {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
- '90': {c: 'Z', ic: 0.145},
- '91': {c: '[', d:.1, ic: 0.188},
- '93': {c: ']', d:.1, ic: 0.105},
- '97': {c: 'a', a:0, ic: 0.0767},
- '98': {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '99': {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '100': {c: 'd', ic: 0.103, krn: {'108': 0.0511}},
- '101': {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '102': {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}},
- '103': {c: 'g', a:0, d:1, ic: 0.0885},
- '104': {c: 'h', ic: 0.0767},
- '105': {c: 'i', ic: 0.102},
- '106': {c: 'j', d:1, ic: 0.145},
- '107': {c: 'k', ic: 0.108},
- '108': {c: 'l', ic: 0.103, krn: {'108': 0.0511}},
- '109': {c: 'm', a:0, ic: 0.0767},
- '110': {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}},
- '111': {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '112': {c: 'p', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '113': {c: 'q', a:0, d:1, ic: 0.0885},
- '114': {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- '115': {c: 's', a:0, ic: 0.0821},
- '116': {c: 't', ic: 0.0949},
- '117': {c: 'u', a:0, ic: 0.0767},
- '118': {c: 'v', a:0, ic: 0.108},
- '119': {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}},
- '120': {c: 'x', a:0, ic: 0.12},
- '121': {c: 'y', a:0, d:1, ic: 0.0885},
- '122': {c: 'z', a:0, ic: 0.123}
- },
- cmbx10: {
- '33': {c: '!', lig: {'96': 60}},
- '35': {c: '#'},
- '36': {c: '$'},
- '37': {c: '%'},
- '38': {c: '&'},
- '40': {c: '(', d:.2},
- '41': {c: ')', d:.2},
- '42': {c: '*'},
- '43': {c: '+', a:.1},
- '44': {c: ',', a:-.3, d:.2, w: 0.278},
- '45': {c: '-', a:0, lig: {'45': 123}},
- '46': {c: '.', a:-.25},
- '47': {c: '/'},
- '48': {c: '0'},
- '49': {c: '1'},
- '50': {c: '2'},
- '51': {c: '3'},
- '52': {c: '4'},
- '53': {c: '5'},
- '54': {c: '6'},
- '55': {c: '7'},
- '56': {c: '8'},
- '57': {c: '9'},
- '58': {c: ':'},
- '59': {c: ';'},
- '61': {c: '=', a:0, d:-.1},
- '63': {c: '?', lig: {'96': 62}},
- '64': {c: '@'},
- '65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- '66': {c: 'B'},
- '67': {c: 'C'},
- '68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
- '69': {c: 'E'},
- '70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '71': {c: 'G'},
- '72': {c: 'H'},
- '73': {c: 'I', krn: {'73': 0.0278}},
- '74': {c: 'J'},
- '75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- '77': {c: 'M'},
- '78': {c: 'N'},
- '79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
- '80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
- '81': {c: 'Q', d: 1},
- '82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- '83': {c: 'S'},
- '84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
- '85': {c: 'U'},
- '86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- '89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
- '90': {c: 'Z'},
- '91': {c: '[', d:.1},
- '93': {c: ']', d:.1},
- '97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
- '100': {c: 'd'},
- '101': {c: 'e', a:0},
- '102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
- '103': {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}},
- '104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- '105': {c: 'i'},
- '106': {c: 'j', d:1},
- '107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- '108': {c: 'l'},
- '109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- '110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- '111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '112': {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- '113': {c: 'q', a:0, d:1},
- '114': {c: 'r', a:0},
- '115': {c: 's', a:0},
- '116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
- '117': {c: 'u', a:0, krn: {'119': -0.0278}},
- '118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- '119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- '120': {c: 'x', a:0},
- '121': {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
- '122': {c: 'z', a:0}
- }
-});
-
-
-if (jsMath.browser == 'MSIE' && navigator.platform == 'MacPPC') {
- jsMath.Update.Styles({
- '.math': 'font-style: normal',
- '.typeset': 'font-style: normal',
- '.icmr10': 'font-family: Times',
- '.icmmi10': 'font-family: Times; font-style:italic',
- '.icmbx10': 'font-family: Times; font-weight:bold',
- '.icmti10': 'font-family: Times; font-style:italic'
- });
-} else {
- jsMath.Update.Styles({
- '.math': 'font-style: normal',
- '.typeset': 'font-style: normal',
- '.icmr10': 'font-family: serif',
- '.icmmi10': 'font-family: serif; font-style:italic',
- '.icmbx10': 'font-family: serif; font-weight:bold',
- '.icmti10': 'font-family: serif; font-style:italic'
- });
-}
-
-
-jsMath.Add(jsMath.Img,{
- symbols: [
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 34, 39,
- 60, 62,
-
- 92, 94, 95,
- 96,
- 123,124,125,126,127
- ]
-});
-
-/*
- * for now, use images for everything
- */
-jsMath.Img.SetFont({
- cmr10: jsMath.Img.symbols,
- cmmi10: [
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64,
- 91, 92, 93, 94, 95,
- 96,
- 123,124,125,126,127
- ],
- cmsy10: [
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99,100,101,102,103, 104,105,106,107,108,109,110,111,
- 112,113,114,115,116,117,118,119, 120,121,122,123,124,125,126,127
- ],
- cmex10: ['all'],
- cmti10: jsMath.Img.symbols.concat(36),
- cmbx10: jsMath.Img.symbols
-});
-
-jsMath.Img.LoadFont('cm-fonts');
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
+jsMath.Script.Uncompress([
+ ['jsMath.','Script.','Start();',0,'Add(','jsMath.Img',',{','UpdateTeXFonts',':function(_1){for(var _2 in _1){for(var _3 in _1[_2]){',0,'TeX[_2][_3',']=_1[_2][_3];',0,10,'].tclass="i"+_2;}}}});',5,'.',7,'({cmr10',':{"33":{c:"!",lig:{"96":60}},"35":{c:"#"},"36":{c:"$"},"37":{c:"%"},"38":{c:"&"},"40":{c:"(",d:0.2},"41":{c:")",d:0.2},"42":{c',':"*",d:-0.3},"','43":{c:"+",a:0.1},"44":{c:",",a:-0.3','},"45":{c:"-",a:0',',lig:{"45":123}},"46":{c:".",a:-0.25},"47":{c',':"/"},"','48":{c:"0','"},"49":{c:"1"},"50":{c:"2"},"51":{c:"3"},"52":{c:"4"},"53":{c:"5"},"54":{c:"6"},"55":{c:"7"},"56":{c:"8"},"57":{c:"9"},"58":{c:":"},"59":{c:";"},"61":{c:"=",a:0,d:-0.1},"63":{c:"?",lig:{"96":62}},"64":{c:"@"},"65":{c:"A",krn:{"116','":-0.0278,"','67',27,'79',27,'71',27,'85',27,'81',27,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}},"','66":{c:"B','"},"','67":{c:"C',40,'68":{c:"D','",krn:{"','88',27,'87',27,'65',27,'86',27,'89','":-0.0278}},"','69":{c:"E',40,'70":{c:"F",','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67":-0.0278,"71":-0.0278,"81":-0.0278}},"','71":{c:"G',40,'72":{c:"H',40,'73":{c:"I',44,'73','":0.0278}},"','74":{c:"J',40,'75":{c:"K',44,'79',27,'67',27,'71',27,'81',54,'76":{c:"L",krn:{"',38,'77":{c:"M',40,'78":{c:"N',40,'79":{c:"O',44,'88',27,'87',27,'65',27,'86',27,'89',54,'80":{c:"P",','krn:{"65":-0.','0833,"111',27,'101',27,'97',27,'46":-0.0833,"44":-0.0833}},"','81":{c:"Q",d:','1},"82":{c:"R',44,'116',27,'67',27,'79',27,'71',27,'85',27,'81',27,38,'83":{c:"S',40,'84":{c:"T',44,'121',27,'101":-0.0833,"111":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.0833,"117":-0.0833}},"','85":{c:"U',40,'86":{c:"V",ic:0.','0139,',58,'87":{c:"W",ic:0.','0139,',58,'88":{c:"X",','krn:{"79',27,'67',27,'71',27,'81',54,'89":{c:"Y",ic:0.','025',',krn:{"',128,'90":{c:"Z',40,'91":{c:"[",d:0.1','},"93":{c:"]",d:0.1','},"97":{c:"a','",a:0,krn:{"','118',27,'106":0.0556,"121',27,'119',54,'98":{c:"b",','krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0
278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}},"','99":{c:"c',155,'104',27,'107',54,'100":{c:"d',40,'101":{c:"e",a',':0},"102":{c:"f",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":12,"102":11,"108":13}},"103":{c:"g",a:0,d:0.2,ic:0.0139,krn:{"106":0.0278}},"104":{c:"h",krn:{"116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'105":{c:"i"},"106":{c:"j",d:','1},"107":{c:"k',44,'97','":-0.0556,"','101',27,'97',27,'111',27,'99',54,'108":{c:"l',40,'109":{c:"m',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'110":{c:"n',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'111":{c:"o",a:0,',163,'112":{c:"p",a:0,d:0.2,',163,'113":{c:"q",a:0,d:','1','},"114":{c:"r",a:0','},"','115":{c:"s",a:0','},"116":{c:"t',44,'121',27,'119',54,'117":{c:"u',155,'119',54,'118":{c:"v','",a:0,ic:0.','0139',148,'97',189,'101',27,'97',27,'111',27,'99',54,'119":{c:"w',248,'0139',148,'101',27,'97',27,'111',27,'99',54,'120":{c:"x",a:0','},"121":{c:"y','",a:0,d:0.2,ic:0.','0139',148,'111',27,'101',27,'97',27,105,'122":{c:"z",a:0','}},cmmi10:{"65":{c:"A',44,'127":0.139}},"',39,'",ic:0.','0502,','krn:{"127":0.0833}},"',41,290,'0715',148,'61',27,'59":-0.0556,"58":-0.0556,"127":0.','0833}},"','68":{c:"D',290,'0278',',krn:{"127":0.0556}},"',55,290,'0576,',292,57,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',300,59,'",',292,61,290,'0812',148,'61',189,299,'0556}},"','73":{c:"I",ic:0.','0785',148,'127":0.111}},"',67,290,'0962',311,'167}},"75":{c:"K',290,'0715',148,'61',189,299,323,'76":{c:"L",','krn:{"127":0.0278}},"',81,290,'109',148,'61',189,299,300,83,290,'109',148,'61":-0.0833,"61',27,299,300,'79":{c:"O',290,303,',',292,97,'ic:0.139',311,300,106,'0.2,',292,'82":{c:"R',290,'00773,',292,122,290,'0576',148,'61',189,299,300,'84":{c:"T",ic:0.','139',148,'61',27,299,300,129,290,'109',148,'59":-0.111,"58":-0.111,"61',189,'127',66,131,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}},"',134,'139',399,137,'ic:0.0785',148,'61":-0.0833,"61',27,299,300,146,'222',399,150,2
90,'0715',148,'61',189,299,300,'97":{c:"a",a:0},"98":{c:"b',40,'99":{c:"c",a:0',304,170,44,'89":0.0556,"90',189,'106":-0.111,"102":-0.167,"127":0.167}},"101":{c:"e",a:0',304,'102":{c:"f",d:','0.2,ic:0.','108',148,299,'167}},"103":{c:"g',275,'0359,',341,'104":{c:"h',44,'127',54,185,432,'0572',148,'59',189,'58":-0.',323,'107":{c:"k',290,'0315},"',198,290,'0197,',292,'109":{c:"m",a:0},"110":{c:"n",a:0},"111":{c:"o",a:0',304,230,292,'113":{c:"q',275,'0359,',292,'114":{c:"r',248,303,148,299,323,236,304,'116":{c:"t",',292,'117":{c:"u",a:0,',341,'118":{c:"v',248,'0359,',341,'119":{c:"w',248,'0269,',292,273,',',341,'121":{c:"y',275,'0359',304,'122":{c:"z',248,'044',148,'127":0.0556}}},cmsy10:{"0":{c:"–",a:0.1}},cmti10:{"33":{c:"!",lig:{"96":60}},"35":{c:"#",ic:0.0662},"37":{c:"%",ic:0.136},"38":{c:"&",ic:0.0969},"40":{c:"(",d:',432,'162},"41":{c:")",d:',432,'0369},"42":{c:"*",ic:0.149},"43":{c:"+",a:0.1,ic:0.0369},"44":{c:",",a:-0.3,d:0.2,w:0.278},"45":{c:"-",a:0,ic:0.0283',23,':"/",ic:0.162},"',25,'",ic:0.136},"','49":{c:"1',506,'50":{c:"2',506,'51":{c:"3',506,'52":{c:"4',506,'53":{c:"5',506,'54":{c:"6',506,'55":{c:"7',506,'56":{c:"8',506,'57":{c:"9',506,'58":{c:":",ic:0.0582},"59":{c:";",ic:0.0582},"61":{c:"=",a:0,d:-0.1,ic:0.0662},"63":{c:"?",ic:0.122,lig:{"96":62}},"64":{c:"@",ic:0.096},"65":{c:"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',528,'86','":-0.102,"','87',532,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}},"',39,'",ic:0.103','},"',41,290,'145},"','68":{c:"D','",ic:0.094,krn:{"88":-0.0256,"87":-0.0256,"65":-0.0256,"86":-0.0256,"89":-0.0256}},"',55,'",ic:0.12},"',57,'ic:0.133',148,'111',528,'101',528,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',532,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.0256}},"',59,290,'0872},"'
,61,'",ic:0.164},"',324,'158},"',67,290,'14},"75":{c:"K',290,'145',148,557,79,'84',528,'89',528,'86',532,'87',532,535,81,562,83,562,'79":{c:"O',543,97,'ic:0.103',148,'65":-0.0767}},"',106,432,'094},"82":{c:"R',290,'0387,',526,'0.0256,"84',528,'89',528,'86',532,'87',532,535,122,545,382,'133',148,'121',528,'101',528,'111',554,'117',528,591,129,562,131,'184',148,'111',528,'101',528,'117',554,'65',532,557,134,'184',148,591,137,'ic:0.158',148,557,146,'194',148,'101',528,'111',554,'117',528,591,150,290,541,152,',ic:0.188',153,',ic:0.105},"97":{c:"a',248,'0767},"',162,'ic:0.0631',148,535,'99":{c:"c',248,'0565',148,535,170,537,148,'108":0.0511}},"','101":{c:"e',248,'0751',148,535,'102":{c:"f',290,'212',148,'39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":12,"102":11,"108":13}},"103":{c:"g',275,'0885},"','104":{c:"h',290,661,'105":{c:"i',290,'102},"106":{c:"j",d:',432,541,'107":{c:"k',290,'108},"',198,537,148,674,'109":{c:"m',248,661,'110":{c:"n',248,'0767',148,'39":-0.102}},"111":{c:"o',248,'0631',148,535,'112":{c:"p',275,'0631',148,535,'113":{c:"q',275,686,'114":{c:"r',248,'108',148,535,'115":{c:"s',248,'0821},"116":{c:"t',290,'0949},"117":{c:"u',248,661,'118":{c:"v',248,697,'119":{c:"w',248,'108',148,674,'120":{c:"x',248,'12},"121":{c:"y',275,686,'122":{c:"z',248,'123}},cmbx10',19,':"*"},"',21,',d:0.2,w:0.278},"45":{c:"-",a:0',23,':"/"},"',25,26,27,'67',27,'79',27,'71',27,'85',27,'81',27,38,39,40,41,40,'68":{c:"D',44,'88',27,'87',27,'65',27,'86',27,'89',54,55,40,57,58,59,40,61,40,'73":{c:"I',44,'73',66,67,40,'75":{c:"K',44,'79',27,'67',27,'71',27,'81',54,79,38,81,40,83,40,'79":{c:"O',44,'88',27,'87',27,'65',27,'86',27,'89',54,97,98,'0833,"111',27,'101',27,'97',27,105,106,'1},"82":{c:"R',44,'116',27,'67',27,'79',27,'71',27,'85',27,'81',27,38,122,40,'84":{c:"T',44,'121',27,128,129,40,131,'0139,',58,134,'0139,',58,137,'krn:{"79',27,'67',27,'71',27,'81',54,146,'025',148,128,150,40,152,153,'},"97":{c:"a',155,'118',27,'106":0.0556,"121',27,'119',54,162,163,'99":{c:"c',155,'104',27,'107',54,170,40,'101":{c:
"e",a',173,27,'117',27,'98',27,'121',27,'118',27,'119',54,185,'1},"107":{c:"k',44,'97',189,'101',27,'97',27,'111',27,'99',54,198,40,'109":{c:"m',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'110":{c:"n',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,228,163,230,163,232,'1',234,'},"',236,'},"116":{c:"t',44,'121',27,'119',54,'117":{c:"u',155,'119',54,'118":{c:"v',248,'0139',148,'97',189,'101',27,'97',27,'111',27,'99',54,'119":{c:"w',248,'0139',148,'101',27,'97',27,'111',27,'99',54,273,'},"121":{c:"y',275,'0139',148,'111',27,'101',27,'97',27,105,285,'}}});if(',0,'browser=="MSIE"&&navigator.platform=="MacPPC"){','jsMath.Setup.Styles({".typeset .math":"font-style: normal",".typeset .typeset":"font-style: normal",".typeset .icmr10":"font-family: ','Times','",".typeset .icmmi10":"font-family: ',1021,'; font-style: italic",".typeset .icmbx10":"font-family: ',1021,'; font-weight: bold",".typeset .icmti10":"font-family: ',1021,'; font-style: italic"});}','else{',1020,'serif',1022,1031,1024,1031,1026,1031,1028,0,'Add(',5,',{symbols:[0,','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,','34,39,60,62,92,94,95,96',',123,124,125,126,127',']});',5,'.SetFont',18,':',5,'.symbols',',cmmi10:[0,',1043,'33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,','91,92,93,94,95,96',1045,'],cmsy10:[',1043,1055,'65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122',1045,'],cmex10:["all"],cmti10:',5,1052,'.concat(36),cmbx10:',5,1052,'});',5,'.LoadFont("cm-fonts");',0,1,'End();']
+]);
\ No newline at end of file
Index: loncom/html/adm/jsMath/jsMath-fallback-unix.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-unix.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-unix.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-unix.js:1.2 Wed Dec 7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-unix.js Mon Mar 27 14:32:07 2006
@@ -8,970 +8,22 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
-
-/********************************************************************
- *
- * Here we replace the TeX character mappings by equivalent unicode
- * points when possible, and adjust the character dimensions
- * based on the fonts we hope we get them from (the styles are set
- * to try to use the best characters available in the standard
- * fonts).
- */
-
-jsMath.Add(jsMath.TeX,{
-
- cmr10: [
- // 00 - 0F
- {c: 'Γ', tclass: 'greek'},
- {c: 'Δ', tclass: 'greek'},
- {c: 'Θ', tclass: 'greek'},
- {c: 'Λ', tclass: 'greek'},
- {c: 'Ξ', tclass: 'greek'},
- {c: 'Π', tclass: 'greek'},
- {c: 'Σ', tclass: 'greek'},
- {c: 'Υ', tclass: 'greek'},
- {c: 'Φ', tclass: 'greek'},
- {c: 'Ψ', tclass: 'greek'},
- {c: 'Ω', tclass: 'greek'},
- {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: 'fi', tclass: 'normal'},
- {c: 'fl', tclass: 'normal'},
- {c: 'ffi', tclass: 'normal'},
- {c: 'ffl', tclass: 'normal'},
- // 10 - 1F
- {c: 'ı', a:0, tclass: 'normal'},
- {c: 'j', d:.2, tclass: 'normal'},
- {c: '`', tclass: 'accent'},
- {c: '´', tclass: 'accent'},
- {c: 'ˇ', tclass: 'accent'},
- {c: '˘', tclass: 'accent'},
- {c: '<SPAN STYLE="position:relative; top:.1em">ˉ</SPAN>', tclass: 'accent'},
- {c: '˚', tclass: 'accent'},
- {c: '̧', tclass: 'normal'},
- {c: 'ß', tclass: 'normal'},
- {c: 'æ', a:0, tclass: 'normal'},
- {c: 'œ', a:0, tclass: 'normal'},
- {c: 'ø', tclass: 'normal'},
- {c: 'Æ', tclass: 'normal'},
- {c: 'Œ', tclass: 'normal'},
- {c: 'Ø', tclass: 'normal'},
- // 20 - 2F
- {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
- {c: '!', lig: {'96': 60}, tclass: 'normal'},
- {c: '”', tclass: 'normal'},
- {c: '#', tclass: 'normal'},
- {c: '$', tclass: 'normal'},
- {c: '%', tclass: 'normal'},
- {c: '&', tclass: 'normal'},
- {c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
- {c: '(', d:.2, tclass: 'normal'},
- {c: ')', d:.2, tclass: 'normal'},
- {c: '*', tclass: 'normal'},
- {c: '+', a:.1, tclass: 'normal'},
- {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
- {c: '.', a:-.25, tclass: 'normal'},
- {c: '/', tclass: 'normal'},
- // 30 - 3F
- {c: '0', tclass: 'normal'},
- {c: '1', tclass: 'normal'},
- {c: '2', tclass: 'normal'},
- {c: '3', tclass: 'normal'},
- {c: '4', tclass: 'normal'},
- {c: '5', tclass: 'normal'},
- {c: '6', tclass: 'normal'},
- {c: '7', tclass: 'normal'},
- {c: '8', tclass: 'normal'},
- {c: '9', tclass: 'normal'},
- {c: ':', tclass: 'normal'},
- {c: ';', tclass: 'normal'},
- {c: '¡', tclass: 'normal'},
- {c: '=', a:0, d:-.1, tclass: 'normal'},
- {c: '¿', tclass: 'normal'},
- {c: '?', lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '@', tclass: 'normal'},
- {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'B', tclass: 'normal'},
- {c: 'C', tclass: 'normal'},
- {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- {c: 'E', tclass: 'normal'},
- {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'G', tclass: 'normal'},
- {c: 'H', tclass: 'normal'},
- {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
- {c: 'J', tclass: 'normal'},
- {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'M', tclass: 'normal'},
- {c: 'N', tclass: 'normal'},
- {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- // 50 - 5F
- {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: 'Q', d: 1, tclass: 'normal'},
- {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: 'S', tclass: 'normal'},
- {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: 'U', tclass: 'normal'},
- {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: 'Z', tclass: 'normal'},
- {c: '[', d:.1, tclass: 'normal'},
- {c: '“', tclass: 'normal'},
- {c: ']', d:.1, tclass: 'normal'},
- {c: 'ˆ', tclass: 'accent'},
- {c: '˙', tclass: 'accent'},
- // 60 - 6F
- {c: '‘', lig: {'96': 92}, tclass: 'normal'},
- {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
- {c: 'd', tclass: 'normal'},
- {c: 'e', a:0, tclass: 'normal'},
- {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
- {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'i', tclass: 'normal'},
- {c: 'j', d:1, tclass: 'normal'},
- {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'l', tclass: 'normal'},
- {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- // 70 - 7F
- {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'q', a:0, d:1, tclass: 'normal'},
- {c: 'r', a:0, tclass: 'normal'},
- {c: 's', a:0, tclass: 'normal'},
- {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
- {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: 'x', a:0, tclass: 'normal'},
- {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: 'z', a:0, tclass: 'normal'},
- {c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
- {c: '—', a:.1, ic: 0.0278, tclass: 'normal'},
- {c: '˝', tclass: 'accent'},
- {c: '˜', tclass: 'accent'},
- {c: '¨', tclass: 'accent'}
- ],
-
- cmmi10: [
- // 00 - 0F
- {c: '<I>Γ</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'greek'},
- {c: '<I>Δ</I>', krn: {'127': 0.167}, tclass: 'greek'},
- {c: '<I>Θ</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Λ</I>', krn: {'127': 0.167}, tclass: 'greek'},
- {c: '<I>Ξ</I>', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Π</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Σ</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Υ</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Φ</I>', krn: {'127': 0.0833}, tclass: 'greek'},
- {c: '<I>Ψ</I>', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: '<I>Ω</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'α', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'β', d:1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'γ', a:0, d:1, ic: 0.0556, tclass: 'greek'},
- {c: 'δ', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
- {c: 'ε', a:0, krn: {'127': 0.0556}, tclass: 'symbol'},
- // 10 - 1F
- {c: 'ζ', d:1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'η', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
- {c: 'θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'ι', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
- {c: 'κ', a:0, tclass: 'greek'},
- {c: 'λ', tclass: 'greek'},
- {c: 'μ', a:0, d:1, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'ν', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
- {c: 'ξ', d:1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
- {c: 'π', a:0, ic: 0.0359, tclass: 'greek'},
- {c: 'ρ', a:0, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'σ', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
- {c: 'τ', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
- {c: 'υ', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
- {c: 'φ', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'χ', a:0, d:1, krn: {'127': 0.0556}, tclass: 'greek'},
- // 20 - 2F
- {c: 'ψ', a:.1, d:1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
- {c: 'ω', a:0, ic: 0.0359, tclass: 'greek'},
- {c: 'ε', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
- {c: 'ϑ', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: 'ϖ', a:0, ic: 0.0278, tclass: 'normal'},
- {c: 'ϱ', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: 'ς', a:0, d:1, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: 'ϕ', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '↼', a:0, d:-.2, tclass: 'harpoon'},
- {c: '↽', a:0, d:-.1, tclass: 'harpoon'},
- {c: '⇀', a:0, d:-.2, tclass: 'harpoon'},
- {c: '⇁', a:0, d:-.1, tclass: 'harpoon'},
- {c: '<SPAN STYLE="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">˓</SPAN>', a:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">˒</SPAN>', a:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size:50%">▷</SPAN>', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size:50%">◁</SPAN>', tclass: 'symbol'},
- // 30 - 3F
- {c: '0', tclass: 'normal'},
- {c: '1', tclass: 'normal'},
- {c: '2', tclass: 'normal'},
- {c: '3', tclass: 'normal'},
- {c: '4', tclass: 'normal'},
- {c: '5', tclass: 'normal'},
- {c: '6', tclass: 'normal'},
- {c: '7', tclass: 'normal'},
- {c: '8', tclass: 'normal'},
- {c: '9', tclass: 'normal'},
- {c: '.', a:-.3, tclass: 'normal'},
- {c: ',', a:-.3, d:.2, tclass: 'normal'},
- {c: '<', a:.1, tclass: 'normal'},
- {c: '/', krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
- {c: '>', a:.1, tclass: 'normal'},
- {c: '<SPAN STYLE="font-size:50%">★</SPAN>', a:0, tclass: 'symbol'},
- // 40 - 4F
- {c: '∂', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>A</I>', krn: {'127': 0.139}, tclass: 'normal'},
- {c: '<I>B</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>C</I>', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>D</I>', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>E</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>F</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>G</I>', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>H</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>I</I>', ic: 0.0785, krn: {'127': 0.111}, tclass: 'normal'},
- {c: '<I>J</I>', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'normal'},
- {c: '<I>K</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>L</I>', krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>M</I>', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>N</I>', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>O</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'normal'},
- // 50 - 5F
- {c: '<I>P</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>Q</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>R</I>', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>S</I>', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>T</I>', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>U</I>', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'normal'},
- {c: '<I>V</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>W</I>', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>X</I>', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '<I>Y</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
- {c: '<I>Z</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
- {c: '♭', tclass: 'symbol2'},
- {c: '♮', tclass: 'symbol2'},
- {c: '♯', tclass: 'symbol2'},
- {c: '⌣', a:0, d:-.1, tclass: 'normal'},
- {c: '⌢', a:0, d:-.1, tclass: 'normal'},
- // 60 - 6F
- {c: 'ℓ', krn: {'127': 0.111}, tclass: 'symbol'},
- {c: '<I>a</I>', a:0, tclass: 'normal'},
- {c: '<I>b</I>', tclass: 'normal'},
- {c: '<I>c</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>d</I>', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'normal'},
- {c: '<I>e</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>f</I>', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'normal'},
- {c: '<I>g</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>h</I>', krn: {'127': -0.0278}, tclass: 'normal'},
- {c: '<I>i</I>', tclass: 'normal'},
- {c: '<I>j</I>', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'normal'},
- {c: '<I>k</I>', ic: 0.0315, tclass: 'normal'},
- {c: '<I>l</I>', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>m</I>', a:0, tclass: 'normal'},
- {c: '<I>n</I>', a:0, tclass: 'normal'},
- {c: '<I>o</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- // 70 - 7F
- {c: '<I>p</I>', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>q</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>r</I>', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
- {c: '<I>s</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>t</I>', krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>u</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>v</I>', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>w</I>', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '<I>x</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>y</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>z</I>', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'normal'},
- {c: '<I>ı</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
- {c: '<I>j</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
- {c: '℘', a:0, d:1, krn: {'127': 0.111}, tclass: 'normal'},
- {c: '<SPAN STYLE="position:relative; left: .4em; top: -.8em; font-size: 50%">→</SPAN>', ic: 0.154, tclass: 'symbol'},
- {c: '̑', ic: 0.399, tclass: 'normal'}
- ],
-
- cmsy10: [
- // 00 - 0F
- {c: '−', a:.1, tclass: 'symbol'},
- {c: '·', a:0, d:-.2, tclass: 'symbol'},
- {c: '×', a:0, tclass: 'symbol'},
- {c: '<SPAN STYLE="position:relative; top:.2em">*</SPAN>', a:0, tclass: 'symbol'},
- {c: '÷', a:0, tclass: 'symbol'},
- {c: '◊', tclass: 'symbol'},
- {c: '±', a:.1, tclass: 'symbol'},
- {c: '∓', tclass: 'symbol'},
- {c: '⊕', tclass: 'symbol'},
- {c: '⊖', tclass: 'symbol'},
- {c: '⊗', tclass: 'symbol'},
- {c: '⊘', tclass: 'symbol'},
- {c: '⊙', tclass: 'symbol'},
- {c: '◯', tclass: 'symbol'},
- {c: '<SPAN STYLE="position:relative; top:.25em;">°</SPAN>', a:0, d:-.1, tclass: 'symbol'},
- {c: '•', a:0, d:-.2, tclass: 'symbol'},
- // 10 - 1F
- {c: '≍', a:.1, tclass: 'symbol'},
- {c: '≡', a:.1, tclass: 'symbol'},
- {c: '⊆', tclass: 'symbol'},
- {c: '⊇', tclass: 'symbol'},
- {c: '≤', tclass: 'symbol'},
- {c: '≥', tclass: 'symbol'},
- {c: '≼', tclass: 'symbol'},
- {c: '≽', tclass: 'symbol'},
- {c: '~', a:0, d: -.2, tclass: 'normal'},
- {c: '≈', a:.1, d:-.1, tclass: 'symbol'},
- {c: '⊂', tclass: 'symbol'},
- {c: '⊃', tclass: 'symbol'},
- {c: '≪', tclass: 'symbol'},
- {c: '≫', tclass: 'symbol'},
- {c: '≺', tclass: 'symbol'},
- {c: '≻', tclass: 'symbol'},
- // 20 - 2F
- {c: '←', a:0, d:-.15, tclass: 'arrows'},
- {c: '→', a:0, d:-.15, tclass: 'arrows'},
- {c: '↑', h:1, tclass: 'arrows'},
- {c: '↓', h:1, tclass: 'arrows'},
- {c: '↔', a:0, tclass: 'arrows'},
- {c: '↗', h:1, tclass: 'arrows'},
- {c: '↘', h:1, tclass: 'arrows'},
- {c: '≃', a: .1, tclass: 'symbol'},
- {c: '⇐', a:.1, tclass: 'arrows'},
- {c: '⇒', a:.1, tclass: 'arrows'},
- {c: '⇑', h:.9, d:.1, tclass: 'arrows'},
- {c: '⇓', h:.9, d:.1, tclass: 'arrows'},
- {c: '⇔', a:.1, tclass: 'arrows'},
- {c: '↖', h:1, tclass: 'arrows'},
- {c: '↙', h:1, tclass: 'arrows'},
- {c: '∝', a:.1, tclass: 'symbol'},
- // 30 - 3F
- {c: '<SPAN STYLE="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">′</SPAN>', a: 0, tclass: 'symbol'},
- {c: '∞', a:.1, tclass: 'symbol'},
- {c: '∈', tclass: 'symbol'},
- {c: '∋', tclass: 'symbol'},
- {c: '△', tclass: 'symbol'},
- {c: '▽', tclass: 'symbol'},
- {c: '/', tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</SPAN>', a:0, tclass: 'normal'},
- {c: '∀', tclass: 'symbol'},
- {c: '∃', tclass: 'symbol'},
- {c: '¬', a:0, d:-.1, tclass: 'symbol1'},
- {c: '∅', tclass: 'symbol'},
- {c: 'ℜ', tclass: 'symbol'},
- {c: 'ℑ', tclass: 'symbol'},
- {c: '⊤', tclass: 'symbol'},
- {c: '⊥', tclass: 'symbol'},
- // 40 - 4F
- {c: 'ℵ', tclass: 'symbol'},
- {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
- {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
- {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
- {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
- // 50 - 5F
- {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
- {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
- {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
- {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
- {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
- {c: '⋃', tclass: 'symbol'},
- {c: '⋂', tclass: 'symbol'},
- {c: '⊎', tclass: 'symbol'},
- {c: '⋀', tclass: 'symbol'},
- {c: '⋁', tclass: 'symbol'},
- // 60 - 6F
- {c: '⊢', tclass: 'symbol'},
- {c: '⊣', tclass: 'symbol2'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '', a:.3, d:.2, tclass: 'normal'},
- {c: '{', d:.2, tclass: 'normal'},
- {c: '}', d:.2, tclass: 'normal'},
- {c: '〈', a:.3, d:.2, tclass: 'normal'},
- {c: '〉', a:.3, d:.2, tclass: 'normal'},
- {c: '|', d:.1, tclass: 'vertical'},
- {c: '||', d:0, tclass: 'vertical'},
- {c: '↕', h:1, d:.15, tclass: 'arrows'},
- {c: '⇕', a:.2, d:.1, tclass: 'arrows'},
- {c: '∖', a:.3, d:.1, tclass: 'normal'},
- {c: '≀', tclass: 'symbol'},
- // 70 - 7F
- {c: '<SPAN STYLE="position:relative; top: .8em">√</SPAN>', h:.04, d:.9, tclass: 'normal'},
- {c: '∐', a:.4, tclass: 'symbol'},
- {c: '∇', tclass: 'symbol'},
- {c: '∫', h:1, d:.1, ic: 0.111, tclass: 'root'},
- {c: '⊔', tclass: 'symbol'},
- {c: '⊓', tclass: 'symbol'},
- {c: '⊑', tclass: 'symbol'},
- {c: '⊒', tclass: 'symbol'},
- {c: '§', d:.1, tclass: 'normal'},
- {c: '†', d:.1, tclass: 'normal'},
- {c: '‡', d:.1, tclass: 'normal'},
- {c: '¶', a:.3, d:.1, tclass: 'normal'},
- {c: '♣', tclass: 'symbol'},
- {c: '♦', tclass: 'symbol'},
- {c: '♥', tclass: 'symbol'},
- {c: '♠', tclass: 'symbol'}
- ],
-
- cmex10: [
- // 00 - 0F
- {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
- {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
- {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
- {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
- {c: '', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
- {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
- {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
- {c: '〈', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
- {c: '〉', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
- {c: '|', h:.7, d:0, delim: {rep: 12}, tclass: 'vertical'},
- {c: '||', h:.7, d:0, delim: {rep: 13}, tclass: 'vertical'},
- {c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
- {c: '∖', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
- // 10 - 1F
- {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
- {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
- {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
- {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
- {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
- {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
- {c: '', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
- {c: '{', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
- {c: '}', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
- {c: '〈', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
- {c: '〉', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
- {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
- {c: '∖', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
- // 20 - 2F
- {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
- {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
- {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
- {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
- {c: '', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
- {c: '{', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
- {c: '}', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
- {c: '〈', h: 0.04, d: 2.96, tclass: 'delim4c'},
- {c: '〉', h: 0.04, d: 2.96, tclass: 'delim4c'},
- {c: '/', h: 0.04, d: 2.96, tclass: 'delim4b'},
- {c: '∖', h: 0.04, d: 2.96, tclass: 'delim4b'},
- {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
- {c: '∖', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
- // 30 - 3F
- {c: '', h: .8, d: .15, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {bot: 52, rep: 54}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {bot: 53, rep: 55}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 50, rep: 54}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 51, rep: 55}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {rep: 63}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {rep: 119}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {rep: 62}, tclass: 'delim'},
- {c: '|', h: .65, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical'},
- // 40 - 4F
- {c: '', h: .8, d: .15, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {rep: 66}, tclass: 'delim'},
- {c: '', h: .8, d: .15, delim: {rep: 67}, tclass: 'delim'},
- {c: '〈', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
- {c: '〉', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
- {c: '⊔', h: 0, d: 1, n: 71, tclass: 'bigop1'},
- {c: '⊔', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '∮', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
- {c: '∮', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
- {c: '⊙', h: 0, d: 1, n: 75, tclass: 'bigop1'},
- {c: '⊙', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⊕', h: 0, d: 1, n: 77, tclass: 'bigop1'},
- {c: '⊕', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '⊗', h: 0, d: 1, n: 79, tclass: 'bigop1'},
- {c: '⊗', h: 0.1, d: 1.5, tclass: 'bigop2'},
- // 50 - 5F
- {c: '∑', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
- {c: '∏', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
- {c: '∫', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
- {c: '∪', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
- {c: '∩', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
- {c: '⊎', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
- {c: '∧', h: 0, d: 1, n: 94, tclass: 'bigop1'},
- {c: '∨', h: 0, d: 1, n: 95, tclass: 'bigop1'},
- {c: '∑', h: 0.1, d: 1.6, tclass: 'bigop2a'},
- {c: '∏', h: 0.1, d: 1.5, tclass: 'bigop2a'},
- {c: '∫', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
- {c: '∪', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '∩', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '⊎', h: 0.1, d: 1.5, tclass: 'bigop2b'},
- {c: '∧', h: 0.1, d: 1.5, tclass: 'bigop2'},
- {c: '∨', h: 0.1, d: 1.5, tclass: 'bigop2'},
- // 60 - 6F
- {c: '∐', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
- {c: '∐', h: 0.1, d: 1.5, tclass: 'bigop2a'},
- {c: '︿', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
- {c: '︿', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
- {c: '︿', h: 0.99, w: 1.65, tclass: 'wide3'},
- {c: '⁓', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
- {c: '⁓', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
- {c: '⁓', h: 0.99, w: 2, tclass: 'wide3a'},
- {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
- {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
- {c: '', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
- {c: '{', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
- {c: '}', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
- // 70 - 7F
- {c: '<SPAN STYLE="font-size: 125%; position:relative; top:.95em">√</SPAN>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 190%; position:relative; top:.925em">√</SPAN>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 250%; position:relative; top:.925em">√</SPAN>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 320%; position:relative; top:.92em">√</SPAN>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 400%; position:relative; top:.92em">√</SPAN>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 500%; position:relative; top:.9em">√</SPAN>', h: .12, d: 4.5, n: 118, tclass: 'root'},
- {c: '<SPAN STYLE="font-size: 625%; position:relative; top:.9em">√</SPAN>', h: .14, d: 5.7, tclass: 'root'},
- {c: '<SPAN STYLE="margin:.001em">||</SPAN>', h:.65, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical'},
- {c: '▵', h:.45, delim: {top: 120, rep: 63}, tclass: 'arrow1'},
- {c: '▿', h:.45, delim: {bot: 121, rep: 63}, tclass: 'arrow1'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╭</SPAN>', h:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╮</SPAN>', h:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╰</SPAN>', h:.1, tclass: 'symbol'},
- {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╯</SPAN>', h:.1, tclass: 'symbol'},
- {c: '▵', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2'},
- {c: '▿', h:.5, delim: {bot: 127, rep: 119}, tclass: 'arrow2'}
- ],
-
- cmti10: [
- // 00 - 0F
- {c: '<I>Γ</I>', ic: 0.133, tclass: 'greek'},
- {c: '<I>Δ</I>', tclass: 'greek'},
- {c: '<I>Θ</I>', ic: 0.094, tclass: 'greek'},
- {c: '<I>Λ</I>', tclass: 'greek'},
- {c: '<I>Ξ</I>', ic: 0.153, tclass: 'greek'},
- {c: '<I>Π</I>', ic: 0.164, tclass: 'greek'},
- {c: '<I>Σ</I>', ic: 0.12, tclass: 'greek'},
- {c: '<I>Υ</I>', ic: 0.111, tclass: 'greek'},
- {c: '<I>Φ</I>', ic: 0.0599, tclass: 'greek'},
- {c: '<I>Ψ</I>', ic: 0.111, tclass: 'greek'},
- {c: '<I>Ω</I>', ic: 0.103, tclass: 'greek'},
- {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'},
- // 10 - 1F
- {c: '<I>ı</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'},
- {c: '<I>`</I>', tclass: 'accent'},
- {c: '<I>´</I>', ic: 0.0969, tclass: 'accent'},
- {c: '<I>ˇ</I>', ic: 0.083, tclass: 'accent'},
- {c: '<I>˘</I>', ic: 0.108, tclass: 'accent'},
- {c: '<I>ˉ</I>', ic: 0.103, tclass: 'accent'},
- {c: '<I>˚</I>', tclass: 'accent'},
- {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'},
- {c: '<I>ß</I>', ic: 0.105, tclass: 'normal'},
- {c: '<I>æ</I>', a:0, ic: 0.0751, tclass: 'normal'},
- {c: '<I>œ</I>', a:0, ic: 0.0751, tclass: 'normal'},
- {c: '<I>ø</I>', ic: 0.0919, tclass: 'normal'},
- {c: '<I>Æ</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>Œ</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>Ø</I>', ic: 0.094, tclass: 'normal'},
- // 20 - 2F
- {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'},
- {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'},
- {c: '<I>”</I>', ic: 0.0696, tclass: 'normal'},
- {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'},
- {c: '<I>$</I>', tclass: 'normal'},
- {c: '<I>%</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>&</I>', ic: 0.0969, tclass: 'normal'},
- {c: '<I>’</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'},
- {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'},
- {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'},
- {c: '<I>*</I>', ic: 0.149, tclass: 'normal'},
- {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'},
- {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'},
- {c: '<I>.</I>', a:-.25, tclass: 'normal'},
- {c: '<I>/</I>', ic: 0.162, tclass: 'normal'},
- // 30 - 3F
- {c: '<I>0</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>1</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>2</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>3</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>4</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>5</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>6</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>7</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>8</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>9</I>', ic: 0.136, tclass: 'normal'},
- {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'},
- {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'},
- {c: '<I>¡</I>', ic: 0.0756, tclass: 'normal'},
- {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'},
- {c: '<I>¿</I>', tclass: 'normal'},
- {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '<I>@</I>', ic: 0.096, tclass: 'normal'},
- {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>B</I>', ic: 0.103, tclass: 'normal'},
- {c: '<I>C</I>', ic: 0.145, tclass: 'normal'},
- {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
- {c: '<I>E</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'},
- {c: '<I>H</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>I</I>', ic: 0.158, tclass: 'normal'},
- {c: '<I>J</I>', ic: 0.14, tclass: 'normal'},
- {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>M</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>N</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
- // 50 - 5F
- {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'},
- {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'},
- {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>S</I>', ic: 0.12, tclass: 'normal'},
- {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
- {c: '<I>U</I>', ic: 0.164, tclass: 'normal'},
- {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'},
- {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
- {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
- {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'},
- {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'},
- {c: '<I>“</I>', ic: 0.169, tclass: 'normal'},
- {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'},
- {c: '<I>ˆ</I>', ic: 0.0665, tclass: 'accent'},
- {c: '<I>˙</I>', ic: 0.118, tclass: 'accent'},
- // 60 - 6F
- {c: '<I>‘</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'},
- {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'},
- {c: '<I>i</I>', ic: 0.102, tclass: 'normal'},
- {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'},
- {c: '<I>k</I>', ic: 0.108, tclass: 'normal'},
- {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'},
- {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- // 70 - 7F
- {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
- {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'},
- {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'},
- {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'},
- {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'},
- {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'},
- {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'},
- {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
- {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'},
- {c: '<I>–</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'},
- {c: '<I>—</I>', a:.1, ic: 0.0921, tclass: 'normal'},
- {c: '<I>˝</I>', ic: 0.122, tclass: 'accent'},
- {c: '<I>˜</I>', ic: 0.116, tclass: 'accent'},
- {c: '<I>¨</I>', tclass: 'accent'}
- ],
-
- cmbx10: [
- // 00 - 0F
- {c: '<B>Γ</B>', tclass: 'greek'},
- {c: '<B>Δ</B>', tclass: 'greek'},
- {c: '<B>Θ</B>', tclass: 'greek'},
- {c: '<B>Λ</B>', tclass: 'greek'},
- {c: '<B>Ξ</B>', tclass: 'greek'},
- {c: '<B>Π</B>', tclass: 'greek'},
- {c: '<B>Σ</B>', tclass: 'greek'},
- {c: '<B>Υ</B>', tclass: 'greek'},
- {c: '<B>Φ</B>', tclass: 'greek'},
- {c: '<B>Ψ</B>', tclass: 'greek'},
- {c: '<B>Ω</B>', tclass: 'greek'},
- {c: '<B>ff</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
- {c: '<B>fi</B>', tclass: 'normal'},
- {c: '<B>fl</B>', tclass: 'normal'},
- {c: '<B>ffi</B>', tclass: 'normal'},
- {c: '<B>ffl</B>', tclass: 'normal'},
- // 10 - 1F
- {c: '<B>ı</B>', a:0, tclass: 'normal'},
- {c: '<B>j</B>', d:.2, tclass: 'normal'},
- {c: '<B>`</B>', tclass: 'accent'},
- {c: '<B>´</B>', tclass: 'accent'},
- {c: '<B>ˇ</B>', tclass: 'accent'},
- {c: '<B>˘</B>', tclass: 'accent'},
- {c: '<B>ˉ</B>', tclass: 'accent'},
- {c: '<B>˚</B>', tclass: 'accent'},
- {c: '<B>?</B>', tclass: 'normal'},
- {c: '<B>ß</B>', tclass: 'normal'},
- {c: '<B>æ</B>', a:0, tclass: 'normal'},
- {c: '<B>œ</B>', a:0, tclass: 'normal'},
- {c: '<B>ø</B>', tclass: 'normal'},
- {c: '<B>Æ</B>', tclass: 'normal'},
- {c: '<B>Œ</B>', tclass: 'normal'},
- {c: '<B>Ø</B>', tclass: 'normal'},
- // 20 - 2F
- {c: '<B>?</B>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
- {c: '<B>!</B>', lig: {'96': 60}, tclass: 'normal'},
- {c: '<B>”</B>', tclass: 'normal'},
- {c: '<B>#</B>', tclass: 'normal'},
- {c: '<B>$</B>', tclass: 'normal'},
- {c: '<B>%</B>', tclass: 'normal'},
- {c: '<B>&</B>', tclass: 'normal'},
- {c: '<B>’</B>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
- {c: '<B>(</B>', d:.2, tclass: 'normal'},
- {c: '<B>)</B>', d:.2, tclass: 'normal'},
- {c: '<B>*</B>', tclass: 'normal'},
- {c: '<B>+</B>', a:.1, tclass: 'normal'},
- {c: '<B>,</B>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
- {c: '<B>-</B>', a:0, lig: {'45': 123}, tclass: 'normal'},
- {c: '<B>.</B>', a:-.25, tclass: 'normal'},
- {c: '<B>/</B>', tclass: 'normal'},
- // 30 - 3F
- {c: '<B>0</B>', tclass: 'normal'},
- {c: '<B>1</B>', tclass: 'normal'},
- {c: '<B>2</B>', tclass: 'normal'},
- {c: '<B>3</B>', tclass: 'normal'},
- {c: '<B>4</B>', tclass: 'normal'},
- {c: '<B>5</B>', tclass: 'normal'},
- {c: '<B>6</B>', tclass: 'normal'},
- {c: '<B>7</B>', tclass: 'normal'},
- {c: '<B>8</B>', tclass: 'normal'},
- {c: '<B>9</B>', tclass: 'normal'},
- {c: '<B>:</B>', tclass: 'normal'},
- {c: '<B>;</B>', tclass: 'normal'},
- {c: '<B>¡</B>', tclass: 'normal'},
- {c: '<B>=</B>', a:0, d:-.1, tclass: 'normal'},
- {c: '<B>¿</B>', tclass: 'normal'},
- {c: '<B>?</B>', lig: {'96': 62}, tclass: 'normal'},
- // 40 - 4F
- {c: '<B>@</B>', tclass: 'normal'},
- {c: '<B>A</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>B</B>', tclass: 'normal'},
- {c: '<B>C</B>', tclass: 'normal'},
- {c: '<B>D</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- {c: '<B>E</B>', tclass: 'normal'},
- {c: '<B>F</B>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>G</B>', tclass: 'normal'},
- {c: '<B>H</B>', tclass: 'normal'},
- {c: '<B>I</B>', krn: {'73': 0.0278}, tclass: 'normal'},
- {c: '<B>J</B>', tclass: 'normal'},
- {c: '<B>K</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>L</B>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>M</B>', tclass: 'normal'},
- {c: '<B>N</B>', tclass: 'normal'},
- {c: '<B>O</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
- // 50 - 5F
- {c: '<B>P</B>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: '<B>Q</B>', d: 1, tclass: 'normal'},
- {c: '<B>R</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
- {c: '<B>S</B>', tclass: 'normal'},
- {c: '<B>T</B>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: '<B>U</B>', tclass: 'normal'},
- {c: '<B>V</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>W</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>X</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
- {c: '<B>Y</B>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
- {c: '<B>Z</B>', tclass: 'normal'},
- {c: '<B>[</B>', d:.1, tclass: 'normal'},
- {c: '<B>“</B>', tclass: 'normal'},
- {c: '<B>]</B>', d:.1, tclass: 'normal'},
- {c: '<B>ˆ</B>', tclass: 'accent'},
- {c: '<B>˙</B>', tclass: 'accent'},
- // 60 - 6F
- {c: '<B>‘</B>', lig: {'96': 92}, tclass: 'normal'},
- {c: '<B>a</B>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>b</B>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>c</B>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
- {c: '<B>d</B>', tclass: 'normal'},
- {c: '<B>e</B>', a:0, tclass: 'normal'},
- {c: '<B>f</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
- {c: '<B>g</B>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
- {c: '<B>h</B>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>i</B>', tclass: 'normal'},
- {c: '<B>j</B>', d:1, tclass: 'normal'},
- {c: '<B>k</B>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>l</B>', tclass: 'normal'},
- {c: '<B>m</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>n</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>o</B>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- // 70 - 7F
- {c: '<B>p</B>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>q</B>', a:0, d:1, tclass: 'normal'},
- {c: '<B>r</B>', a:0, tclass: 'normal'},
- {c: '<B>s</B>', a:0, tclass: 'normal'},
- {c: '<B>t</B>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
- {c: '<B>u</B>', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
- {c: '<B>v</B>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>w</B>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
- {c: '<B>x</B>', a:0, tclass: 'normal'},
- {c: '<B>y</B>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
- {c: '<B>z</B>', a:0, tclass: 'normal'},
- {c: '<B>–</B>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
- {c: '<B>—</B>', a:.1, ic: 0.0278, tclass: 'normal'},
- {c: '<B>˝</B>', tclass: 'accent'},
- {c: '<B>˜</B>', tclass: 'accent'},
- {c: '<B>¨</B>', tclass: 'accent'}
- ]
-});
-
-
-/*
- * We need to replace the jsMath.Box.TeX function in order to use the
- * different font metrics in the tables above, and to handle the
- * scaling better.
- */
-
-jsMath.Add(jsMath.Box,{
-
- TeX_orig = jsMath.Box.TeX,
-
- TeX: function (C,font,style,size) {
- c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
- if (c.img != null) {return this.TeX_orig(C,font,style,size)}
- if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
- var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
- var scale = jsMath.Typeset.TeX(style,size).scale;
- if (c.bh != null) {
- box.bh = c.bh * scale;
- box.bd = c.bd * scale;
- } else {
- var h = box.bd+box.bh;
- var ph = Math.round(h*jsMath.em);
- if (h > jsMath.hd) {
- box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
- + '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'width: 1; height: '+ph+'px">').h - h;
- box.bh = h - box.bd;
- }
- c.bh = box.bh/scale;
- c.bd = box.bd/scale;
- }
- if (jsMath.msieFontBug) {
- // hack to avoid Font changing back to the default
- // font when a unicode reference is not followed
- // by a letter or number
- box.html += '<SPAN STYLE="display: none">x</SPAN>'
- }
- return box;
- }
-});
-
-jsMath.Update.Styles({
- '.math': 'font-style: normal',
- '.cmr10': 'font-family: serif',
- '.cal': 'font-family: cursive',
- '.arrows': '',
- '.arrow1': '',
- '.arrow2': '',
- '.harpoon': 'font-size: 125%',
- '.symbol': '',
- '.symbol2': '',
- '.delim1': 'font-size: 133%; position:relative; top:.75em',
- '.delim1b': 'font-size: 133%; position:relative; top:.8em; margin: -.1em',
- '.delim1c': 'font-size: 120%; position:relative; top:.8em;',
- '.delim2': 'font-size: 180%; position:relative; top:.75em',
- '.delim2b': 'font-size: 190%; position:relative; top:.8em; margin: -.1em',
- '.delim2c': 'font-size: 167%; position:relative; top:.8em;',
- '.delim3': 'font-size: 250%; position:relative; top:.725em',
- '.delim3b': 'font-size: 250%; position:relative; top:.8em; margin: -.1em',
- '.delim3c': 'font-size: 240%; position:relative; top:.775em;',
- '.delim4': 'font-size: 325%; position:relative; top:.7em',
- '.delim4b': 'font-size: 325%; position:relative; top:.8em; margin: -.1em',
- '.delim4c': 'font-size: 300%; position:relative; top:.8em;',
- '.delim': '',
- '.vertical': '',
- '.greek': '',
- '.bigop1': 'font-size: 133%; position: relative; top: .85em; margin:-.05em',
- '.bigop1a': 'font-size: 100%; position: relative; top: .775em;',
- '.bigop1b': 'font-size: 160%; position: relative; top: .7em; margin:-.1em',
- '.bigop1c': 'font-size: 125%; position: relative; top: .75em; margin:-.1em;',
- '.bigop2': 'font-size: 200%; position: relative; top: .8em; margin:-.07em',
- '.bigop2a': 'font-size: 175%; position: relative; top: .7em;',
- '.bigop2b': 'font-size: 270%; position: relative; top: .62em; margin:-.1em',
- '.bigop2c': 'font-size: 250%; position: relative; top: .7em; margin:-.17em;',
- '.wide1': 'font-size: 67%; position: relative; top:-.8em',
- '.wide2': 'font-size: 110%; position: relative; top:-.5em',
- '.wide3': 'font-size: 175%; position: relative; top:-.32em',
- '.wide1a': 'font-size: 75%; position: relative; top:-.5em',
- '.wide2a': 'font-size: 133%; position: relative; top: -.15em',
- '.wide3a': 'font-size: 200%; position: relative; top: -.05em',
- '.root': '',
- '.accent': 'position: relative; top: .02em'
-});
-
-
-/*
- * Reinstall Styles and fonts
- */
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
-
-/*
- * No access to TeX "not" character, so fake this
- */
-jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
-jsMath.Macro('joinrel','\\mathrel{\\kern-2mu}');
-
-
-jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
-jsMath.absoluteHeightVaries = 1;
-
-jsMath.defaultH = 0.8;
+jsMath.Script.Uncompress([
+ ['jsMath.Script.Start();jsMath.Add(jsMath.TeX,{cmr10',':[{c:"Γ",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek"},{c',':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',27,':"fl",',27,':"ffi",',27,':"ffl",',27,':"ı',';",a:0,',27,':"j",d:0.2,',27,':"`',';",tclass:"accent"},{c:"&#','xB4',42,'x2C7',42,'x2D8;",',22,'accent"},{c',':"<span style=\\"','position:relative; top',':.1em\\">ˉ',';</span>",',22,49,':"˚',42,'x0327;",',27,':"ß",',27,':"æ',37,27,':"œ',37,27,':"ø",',27,':"Æ",',27,':"Œ",',27,':"Ø",',27,':"?",krn:{"108":-0.278,"76":-0.319},',27,':"!",lig:{"96":60},',27,':"”",',27,':"#",',27,':"$",',27,':"%",',27,':"&",',27,':"’",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',27,':"(",','d:0.2,',27,':")",',95,27,':"*",',27,':"+",','a:0.1,',27,':",",a:-','0.3,d:0.2,','w:0.278,',27,':"-",a:0',',lig:{"45":','123},',27,':".",a:-0.','25,',27,':"/",',27,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,':":",',27,':";",',27,':"¡",',27,':"=",','a:0,d:-0.','1,',27,':"¿",',27,':"?",lig:{"96":62},',27,':"@",',27,':"A','",krn:{"','116','":-0.0278,"','67',157,'79',157,'71',157,'85',157,'81',157,'84','":-0.0833,"','89',169,'86','":-0.111',',"87',173,'},',27,':"B",',27,':"C",',27,':"D',155,'88',157,'87',157,'65',157,'86',157,'89','":-0.0278','},',27,':"E",',27,':"F',155,'111',169,'101',169,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',157,'67',157,'71',157,'81',193,'},',27,':"G",',27,':"H",',27,':"I',155,'73":0.','0278','},',27,':"J",',27,':"K',155,'79',157,'67',157,'71',157,'81',193,'},',27,':"L',155,'84',169,'89',169,'86',173,',"87',173,'},',27,':"M",',27,':"N",',27,':"O',155,'88',157,'87',157,'65',157,'86',157,'89',193,'},',27,':"P',155,'65',169,'111
',157,'101',157,'97',157,'46',169,'44":-0.','0833','},',27,':"Q",d:1,',27,':"R',155,'116',157,'67',157,'79',157,'71',157,'85',157,'81',157,'84',169,'89',169,'86',173,',"87',173,'},',27,':"S",',27,':"T',155,'121',157,'101',169,'111',205,283,',"117":-0.',283,'},',27,':"U",',27,':"V",','ic:0.0139,krn:{"','111',169,'101',169,'117',205,'111,"79',157,'67',157,'71',157,'81',193,'},',27,':"W",',330,'111',169,'101',169,'117',205,'111,"79',157,'67',157,'71',157,'81',193,'},',27,':"X',155,'79',157,'67',157,'71',157,'81',193,'},',27,':"Y",ic:0.025,','krn:{"101',169,'111',205,283,323,283,'},',27,':"Z",',27,':"[",','d:0.1,',27,':"“",',27,':"]",',390,27,':"ˆ',42,'x2D9',42,'x2018;",lig:{"96":92},',27,':"a','",a:0,krn:{"','118',157,'106":0.','0556,"121',157,'119',193,'},',27,':"b',155,'101','":0.0278,"','111',417,'120',157,'100',417,'99',417,'113',417,'118',157,407,'0556,"121',157,'119',193,'},',27,':"c',404,'104',157,'107',193,'},',27,':"d",',27,':"e','",a:0,',27,':"f',25,'12,"102":11,"108":13},',27,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',407,223,'},',27,':"h',155,'116',157,'117',157,'98',157,'121',157,'118',157,'119',193,'},',27,':"i",',27,39,27,':"k',155,'97','":-0.0556,"','101',157,'97',157,'111',157,'99',193,'},',27,':"l",',27,':"m',404,'116',157,'117',157,'98',157,'121',157,'118',157,'119',193,'},',27,':"n',404,'116',157,'117',157,'98',157,'121',157,'118',157,'119',193,'},',27,':"o',404,'101',417,'111',417,'120',157,'100',417,'99',417,'113',417,'118',157,407,'0556,"121',157,'119',193,'},',27,':"p',448,95,378,417,'111',417,'120',157,'100',417,'99',417,'113',417,'118',157,407,'0556,"121',157,'119',193,'},',27,':"q',448,95,27,':"r',448,27,':"s',448,27,':"t',155,'121',157,'119',193,'},',27,':"u',404,'119',193,'},',27,':"v',448,330,'97',484,'101',157,'97',157,'111',157,'99',193,'},',27,':"w',448,330,'101',157,'97',157,'111',157,'99',193,'},',27,':"x',448,27,':"y",',455,456,'111',157,'101',157,'97',157,'46',169,'44":-0.',283,'},',27,':"z',448,27,':"–',';",a:0.1,','ic:0.',223,110,'124},',27,':"—',650,'ic:0
.',223,',',27,':"˝',42,'x2DC',42,'xA8;",',22,'accent"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',283,'},tclass:"igreek"},{c:"&',3,'krn:{"127":0.','167',673,5,'ic:0.',223,',krn:{"127":0.',283,673,7,675,'167',673,9,'ic:0.0757',681,283,673,11,'ic:0.0812,krn:{"61',484,'59":-0.0556,"58":-0.0556,"127":0.','0556',673,13,'ic:0.0576',681,283,673,15,'ic:0.139',671,'0556',673,17,675,283,673,19,'ic:0.11,krn:{"61',484,696,'0556',673,21,'ic:0.0502',681,283,673,'alpha',';",a:0,ic:0.','0037',681,223,'},',2,'beta;",','d:0.2,ic:0.','0528',681,283,'},',2,'gamma;",',455,'0556,',2,'delta;",ic:0.0378,krn:{"',696,'0556},',2,'epsilon;",a:0',681,'0556},','tclass:"symbol"},{c',':"ζ",',732,'0738',681,283,'},',2,'eta;",',455,'0359',681,'0556},',2,'theta;",ic:0.',223,681,283,'},',2,'iota;",a:0',681,'0556},',2,'kappa',37,2,'lambda;",',2,'mu',37,'d:0.2',681,223,'},',2,'nu',725,'0637,krn:{"',696,223,'},',2,'xi;",',732,'046',681,91,2,'pi',725,'0359,',2,'rho',37,'d:0.2',681,283,'},',2,'sigma',725,800,'krn:{"59',484,'58":-0.0556','},',2,'tau',725,'113,krn:{"',696,223,'},',2,'upsilon',725,'0359',681,223,'},',2,'phi',650,'d:0.2',681,283,'},',2,'chi',37,'d:0.2',681,'0556},',2,'psi',650,732,'0359',681,91,2,'omega',725,800,2,'epsilon;",a:0',681,283,'},',22,23,':"ϑ",',675,283,'},',27,':"ϖ',725,223,',',27,':"ϱ',37,'d:0.2',681,283,'},',27,':"ς",',455,'0799',681,283,'},',27,':"ϕ',650,'d:0.2',681,283,'},',27,':"↼',';",a:0,d:-0.','2,',22,'harpoon"},{c',':"↽',893,'1,',22,896,':"⇀',893,'2,',22,896,':"⇁',893,'1,',22,896,50,'font-size: 133%; ',51,':-.1em; margin:-.2em; left:-.05em\\">&#','x02D3',53,103,'tclass:"symbol"},{c:"<span style=\\"',913,51,915,'x02D2',53,103,919,'font-size:50%\\">&#','x25B7',53,919,927,'x25C1',53,749,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,113,'3,',27,':",",a:-',106,27,':"<',650,27,116,'krn:{"1',484,'65',484,'77',484,'78',484,'89":0.0556,"90":-0.0556},',27,':">',650,27,5
0,927,'x2605',53,'a:0,','tclass:"symbol"},{c:"&#','x2202;",ic:0.0556',681,283,'},',27,':"A",',675,'139','},tclass:"italic"},{c:"','B",ic:0.0502',681,283,992,'C",ic:0.0715,krn:{"61',157,696,283,992,'D",ic:0.',223,681,'0556',992,'E",ic:0.0576',681,283,992,'F",ic:0.139',671,283,992,'G",',675,283,992,'H",ic:0.0812,krn:{"61',484,696,'0556',992,'I",ic:0.0785',681,'111',992,'J",ic:0.0962',671,'167',992,'K",ic:0.0715,krn:{"61',484,696,'0556',992,'L",',675,223,992,'M','",ic:0.109,krn:{"','61',484,696,283,992,'N',1042,'61',169,'61',157,696,283,992,'O",ic:0.',223,681,283,992,'P",ic:0.139',671,283,992,'Q",d:0.2',681,283,992,'R",ic:0.00773',681,283,992,'S",ic:0.0576,krn:{"61',484,696,283,992,'T','",ic:0.139,krn:{"','61',157,696,283,992,'U',1042,'59',173,',"58',173,',"61',484,'127":0.',223,992,'V",ic:0.222,krn:{"59','":-0.167,"','58',1098,'61',173,992,'W',1080,'59',1098,'58',1098,'61',173,992,'X",ic:0.0785,krn:{"61',169,'61',157,696,283,992,'Y",ic:0.222,krn:{"59',1098,'58',1098,'61',173,992,'Z",ic:0.0715,krn:{"61',484,696,283,'},','tclass:"italic"},{c',':"♭',';",tclass:"symbol2"},{c:"&#','x266E',1134,'x266F',1134,'x2323',893,'1,',27,':"⌢',893,'1,',27,':"ℓ",',675,91,749,':"a',448,1132,':"b",',1132,':"c",a:0',681,'0556',992,'d',155,'89":0.0556,"90',484,'106',173,',"102',1098,1094,'167',992,'e",a:0',681,'0556',992,'f",',732,'108,krn:{"',696,'167',992,'g",',455,'0359',681,223,992,'h',155,'127',193,992,'i",',1132,':"j",',732,'0572,krn:{"59',484,814,992,'k",ic:0.0315,',1132,':"l",ic:0.0197',681,283,992,'m',448,1132,':"n',448,1132,':"o",a:0',681,'0556',992,'p',448,'d:0.2',681,283,992,'q",',455,'0359',681,283,992,'r','",a:0,ic:0.',223,',krn:{"',696,'0556',992,'s",a:0',681,'0556',992,'t",',675,283,992,'u",a:0',681,223,992,'v',1229,'0359',681,223,992,'w',1229,'0269',681,283,992,'x",a:0',681,223,992,'y",',455,'0359',681,'0556',992,'z',1229,'044',681,'0556},',1132,':"ı",a:0',681,223,992,'j",d:0.2',681,283,'},',1132,':"℘',37,'d:0.2',681,91,27,50,'position:relative; left: .4em; top: -.8em; font-size: 50%\\">&
#x2192',53,'ic:0.154,',983,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c:"−',650,983,'xB7',893,'2,',983,'xD7',37,919,51,':.2em\\">*',53,982,983,'xF7',37,983,'x25CA;",',983,'xB1',650,983,'x2213;",',983,'x2295;",',983,'x2296;",',983,'x2297;",',983,'x2298;",',983,'x2299;",',983,'x25EF;",',919,51,':.25em;\\">°',53,145,'1,',983,'x2022',893,'2,',983,'x224D',650,983,'x2261',650,983,'x2286;",',983,'x2287;",',983,'x2264;",',983,'x2265;",',983,'x227C;",',983,'x227D;",',749,':"~",',145,'2,',27,':"≈',650,'d:-0.1,',983,'x2282;",',983,'x2283;",',983,'x226A;",',983,'x226B;",',983,'x227A;",',983,'x227B;",',983,'x2190',893,'15',',tclass:"arrows"},{c:"&#','x2192',893,'15',1385,'x2191;",h:1',1385,'x2193;",h:1',1385,'x2194;",a:0',1385,'x2197;",h:1',1385,'x2198;",h:1',1385,'x2243',650,983,'x21D0;",a:0.1',1385,'x21D2;",a:0.1',1385,'x21D1;",h:0.9,d:0.1',1385,'x21D3;",h:0.9,d:0.1',1385,'x21D4;",a:0.1',1385,'x2196;",h:1',1385,'x2199;",h:1',1385,'x221D',650,919,913,'margin-right',': -.1em; position: relative; top:.4em\\">′',53,982,983,'x221E',650,983,'x2208;",',983,'x220B;",',983,'x25B3;",',983,'x25BD;",',749,116,919,'font-size:50%; ',51,':-.3em; ',1421,':-.2em\\">|</span>",',982,27,':"∀",',983,'x2203;",',983,'xAC',893,'1,',22,'symbol1"},{c:"∅",',983,'x211C;",',983,'x2111;",',983,'x22A4;",',983,'x22A5;",',983,'x2135;",',749,':"A','",krn:{"48":0.','194','},tclass:"cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139',1469,'C",ic:0.0583',1471,'139',1469,'D",ic:0.',223,1471,283,1469,'E",ic:0.0894',1471,'111',1469,'F",ic:0.0993',1471,'111',1469,'G",',732,'0593',1471,'111',1469,'H",ic:0.00965',1471,'111',1469,'I",ic:0.0738',1471,223,1469,'J",',732,'185',1471,'167',1469,'K",ic:0.0144',1471,'0556',1469,'L',1467,'139',1469,'M',1467,'139',1469,'N",ic:0.147',1471,283,1469,'O",ic:0.',223,1471,'111',1469,'P",ic:0.0822',1471,283,1469,'Q",d:0.2',1471,'111',1469,'R',1467,283,1469,'S",ic:0.075',1471,'139',1469,'T",ic:0.254',1471,223,1469,'U",ic:0.0993',1471,283,1469,'V",ic:0.0822',1471,223,1469,'W",ic:0.0822',1471,283,1
469,'X",ic:0.146',1471,'139',1469,'Y",ic:0.0822',1471,283,1469,'Z",ic:0.0794',1471,'139},',22,'cal"},{c:"⋃",',983,'x22C2;",',983,'x228E;",',983,'x22C0;",',983,'x22C1;",',983,'x22A2;",',983,'x22A3',1134,'xF8F0;",a:',106,27,':"",','a:',106,27,':"",','a:',106,27,':"",','a:',106,27,':"{",',95,27,':"}",',95,27,':"〈",','a:',106,27,':"〉",a:',106,27,':"|",',390,22,'vertical"},{c',':"||",','d:0,',22,1621,':"↕",h:1,d:0.15',1385,'x21D5;",a:0.2,d:0.1',1385,'x2216;",a:0.3,',390,27,':"≀",',919,51,': .8em\\">√',53,'h:0.04,d:0.9,',27,':"∐",a:0.4,',983,'x2207;",',983,'x222B;",h:1,',390,'ic:0.111,',22,'root"},{c:"⊔",',983,'x2293;",',983,'x2291;",',983,'x2292;",',983,'xA7;",',390,27,':"†",',390,27,':"‡",',390,27,':"¶",a:0.3,',390,27,':"♣",',983,'x2666;",',983,'x2665;",',983,'x2660;",',22,'symbol"}],cmex10:[{c',94,'h:0.04,d:1.16,n:','16',',tclass:"delim1"},{c',97,1678,'17',1680,389,1678,'104',1680,394,1678,'105',1680,':"",',1678,'106',1680,1593,1678,'107',1680,1597,1678,'108',1680,1601,1678,'109',1680,1605,1678,'110',1680,1608,1678,'111',1680,1611,1678,'68,',22,'delim1c','"},{c:"〉",',1678,'69,',22,'delim1c"},{c:"|",','h:0.7,d:0,delim:{rep:','12},',22,1621,1622,1727,'13},',22,1621,116,1678,'46,',22,'delim1b','"},{c:"∖",',1678,'47,',22,'delim1b','"},{c:"(",','h:0.04,d:1.76,n:','18,',22,'delim2"},{c',97,1747,'19,',22,'delim2',1746,'h:0.04,d:2.36,n:','32',',tclass:"delim3"},{c',97,1757,'33',1759,389,1757,'34',1759,394,1757,'35',1759,':"",',1757,'36',1759,1593,1757,'37',1759,1597,1757,'38',1759,1601,1757,'39',1759,1605,1757,'40',1759,1608,1757,'41',1759,1611,1757,'42,',22,'delim3c',1722,1757,'43,',22,'delim3c"},{c',116,1757,'44,',22,'delim3b',1741,1757,'45,',22,'delim3b',1746,'h:0.04,d:2.96,','n:48',',tclass:"delim4"},{c',97,1817,'n:49',1819,389,1817,'n:50',1819,394,1817,'n:51',1819,1772,1817,'n:52',1819,1593,1817,'n:53',1819,1597,1817,'n:54',1819,1601,1817,'n:55',1819,1605,1817,'n:56',1819,1608,1817,'n:5
7',1819,1611,1817,22,'delim4c',1722,1817,22,'delim4c"},{c',116,1817,22,'delim4b',1741,1817,22,'delim4b"},{c',116,1747,'30,',22,'delim2b',1741,1747,'31,',22,'delim2b"},{c:"",h:0.8,d:0.15,delim:{top:48,bot:64,rep:66},',22,'delim"},{c:"'],
+ ['',';",h:0.8,d:0.15,delim:{','top:','49,bot:65,rep:67','},tclass:"delim"},{c:"&#','xF8EE',1,2,'50,bot:52,rep:54',4,'xF8F9',1,2,'51,bot:53,rep:55',4,'xF8F0',1,'bot:52,rep:54',4,'xF8FB',1,'bot:53,rep:55',4,'xF8EF',1,2,'50,rep:54',4,'xF8FA',1,2,'51,rep:55',4,'xF8F1',1,2,'56,mid:60,bot:58,rep:62',4,'xF8FC',1,2,'57,mid:61,bot:59,rep:62',4,'xF8F3',1,'top:56,bot:','58,rep:62',4,'xF8FE',1,'top:57,bot:','59,rep:62',4,'xF8F2',1,'rep:63',4,'xF8FD',1,'rep:119',4,'xF8F4',1,'rep:62},tclass:"delim"},{c:"|",','h:0.65,d:0,delim:{top:','120,bot:121',',rep:63},tclass:"','vertical','"},{c:"&#','xF8ED',1,45,'59,rep:62',4,'xF8F8',1,50,'58,rep:62',4,'xF8EC',1,'rep:66',4,'xF8F7',1,'rep:67',4,'x3008;",','h:0.04,d:1.76,n:','28',',tclass:"','delim2c',68,'x3009;",',88,'29',90,91,68,'x2294',';",h:0,d:1,n:','71',90,'bigop1',68,'x2294',';",h:0.1,d:1.5,tclass:"','bigop2',68,'x222E',';",h:0,d:1.11,ic:0.095,n:','73',90,'bigop1c',68,'x222E;",h:0,d:2.22,ic:0.222',90,'bigop2c',68,'x2299',100,'75',90,103,68,'x2299',106,107,68,'x2295',100,'77',90,103,68,'x2295',106,107,68,'x2297',100,'79',90,103,68,'x2297',106,107,68,'x2211',100,'88',90,'bigop1a',68,'x220F',100,'89',90,153,68,'x222B',110,'90',90,113,68,'x222A',100,'91',90,'bigop1b',68,'x2229',100,'92',90,171,68,'x228E',100,'93',90,171,68,'x2227',100,'94',90,103,68,'x2228',100,'95',90,103,68,'x2211;",h:0.1,d:1.6',90,'bigop2a',68,'x220F',106,199,68,'x222B;",h:0,d:2.22,ic:0.222',90,117,68,'x222A',106,'bigop2b',68,'x2229',106,211,68,'x228E',106,211,68,'x2227',106,107,68,'x2228',106,107,68,'x2210',100,'97',90,153,68,'x2210',106,199,68,'xFE3F;",h:0.','722,w:0.65,n:99',90,'wide1',68,239,'85,w:1.1,n:100',90,'wide2',68,239,'99,w:1.65',90,'wide3',68,'x2053;",h:0.','722,w:0.75,n:102',90,'wide1a',68,254,'8,w:1.35,n:103',90,'wide2a',68,254,'99,w:2',90,'wide3a','"},{c:"[",',88,'20',90,'delim2','"},{c:"]",',88,'21',90,272,68,'xF8F0;",',88,'22',90,272,68,'xF8FB;",',88,'23',90,272,68,'xF8EE;",',88,'24',90,272,68,10,'",',88,'25',90,272,'"},{c:"{",',88,'26',90,272,'"},{c:"}",',88,'27',90,272,'"},{c:"<span st
yle=\\"font-size: ','125','%; position:relative; top:.','95em','\\">√</span>",h:0.','04,d:1.16,n:113',90,'root',313,'190',315,'925em',317,'04,d:1.76,n:114',90,320,313,'250',315,'925em',317,'06,d:2.36,n:115',90,320,313,'320',315,'92em',317,'08,d:2.96,n:116',90,320,313,'400',315,'92em',317,'1,d:3.75,n:117',90,320,313,'500',315,'9em',317,'12,d:4.5,n:118',90,320,313,'625',315,'9em',317,'14,d:5.7',90,320,'"},{c:"<span style=\\"margin:.001em\\">||</span>",',64,'126,bot:127',',rep:119},tclass:"',67,68,'x25B5;",h:0.','45,delim:{',2,'120',66,'arrow1',68,'x25BF;",h:0.',376,'bot:121',66,380,313,'67',315,'35em; margin-','left:-.5em\\">&#','x256D',';</span>",h:0.','1',90,'symbol',313,'67',315,390,'right:-.5em\\">&#','x256E',393,'1',90,396,313,'67',315,390,391,'x2570',393,'1',90,396,313,'67',315,390,401,'x256F',393,'1',90,396,68,375,'5,delim:{',2,'126',372,'arrow2',68,382,429,'bot:127',372,433,'"}],cmti10:[{c:"Γ",ic:0.133,','tclass:"igreek"},{c:"&','Delta;",',441,'Theta;",','ic:0.094,',441,'Lambda;",',441,'Xi;",ic:0.153,',441,'Pi;",ic:0.164,',441,'Sigma;",ic',':0.12,',441,'Upsilon;",ic:0.111,',441,'Phi;",ic:0.0599,',441,'Psi;",ic:0.111,',441,'Omega;",ic:0.103',90,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',468,':"fl',470,468,':"ffi',470,468,':"ffl',470,468,':"ı",a:0,','ic:0.','0767,',468,':"j",d:0.2,','ic:0.0374,',468,':"`",','tclass:"iaccent"},{c:"&#','xB4;",ic:0.0969,',489,'x2C7;",ic:0.083,',489,'x2D8;",','ic:0.108,',489,'x2C9;",ic:0.103,',489,'x2DA;",tclass:"','iaccent','"},{c:"?",','d:0.17,w:0.46,',468,':"ß",','ic:0.105,',468,':"æ",a:0,','ic:0.0751,',468,':"œ",a:0,',508,468,':"ø",','ic:0.0919,',468,':"Æ",','ic',454,468,':"Œ",','ic',454,468,':"Ø",',445,468,':"?",krn:{"108":-0.','256,"76":-0.321},',468,':"!",','ic:0.124,lig:{"96":','60},',468,':"”",','ic:0.0696,',468,':"#",ic:0.0662,',468,':"$",',468,':"%",ic:0.136,',468,':"&",','ic:
0.0969,',468,':"’",','ic:0.124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',468,':"(",d:0.2,','ic:0.162,',468,':")",d:0.2,','ic:0.0369,',468,':"*",ic:0.149,',468,':"+",a:0.1,','ic:0.0369,',468,':",",a:-0.3,d:0.2,w:0.278,',468,':"-",a:0,ic:0.0283',',lig:{"45":','123},',468,':".",a:-0.25,',468,':"/",ic:0.162,',468,':"0",ic:0.136,',468,':"1",ic:0.136,',468,':"2",ic:0.136,',468,':"3",ic:0.136,',468,':"4",ic:0.136,',468,':"5",ic:0.136,',468,':"6",ic:0.136,',468,':"7",ic:0.136,',468,':"8",ic:0.136,',468,':"9",ic:0.136,',468,':":",ic:0.0582,',468,':";",ic:0.0582,',468,':"¡",','ic:0.0756,',468,':"=",a:0,d:-0.1,','ic:0.0662,',468,':"¿",',468,':"?",','ic:0.122,','lig:{"96":','62},',468,':"@",ic:0.096,',468,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',614,'86','":-0.102,"','87',618,'101','":-0.0511,"','97',622,'111',622,'100',622,'99',622,'103',622,'113','":-0.0511','},',468,':"B',470,468,':"C",','ic:0.145,',468,':"D",',445,'krn:{"88','":-0.0256,"','87',646,'65',646,'86',646,'89":-0.','0256},',468,':"E",ic',454,468,':"F','",ic:0.133,krn:{"','111',614,'101',614,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',618,'79',646,'67',646,'71',646,'81":-0.0256','},',468,':"G",ic:0.0872,',468,':"H",ic:0.164,',468,':"I",ic:0.158,',468,':"J",ic:0.14,',468,':"K",',641,'krn:{"79',646,'67',646,'71',646,675,'},',468,':"L",krn:{"84',614,'89',614,'86',618,'87',618,'101',622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"M",ic:0.164,',468,':"N",ic:0.164,',468,':"O",',445,'krn:{"88',646,'87',646,'65',646,'86',646,653,'0256},',468,':"P',470,'krn:{"65":-0.0767},',468,':"Q",d:1,',445,468,':"R",ic:0.0387,',612,'0.0256,"84',614,'89',614,'86',618,'87',618,'101',622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"S",ic',454,468,':"T',660,'121',614,'101',614
,'111',666,'117',614,'65":-0.0767},',468,':"U",ic:0.164,',468,':"V",ic:0.','184,krn:{"','111',614,'101',614,'117',666,'65',618,'79',646,'67',646,'71',646,675,'},',468,':"W",ic:0.',789,'65":-0.0767},',468,':"X",ic:0.158,krn:{"79',646,'67',646,'71',646,675,'},',468,':"Y",ic:0.','194',',krn:{"101',614,'111',666,'117',614,'65":-0.0767},',468,':"Z",',641,468,':"[",d:0.1,','ic:0.188,',468,':"“",','ic:0.169,',468,':"]",d:0.1,','ic:0.105,',468,':"ˆ",ic:0.0665,',489,'x2D9;",ic:0.118,',489,'x2018;",',531,'92},',468,':"a','",a:0,ic:0.',483,468,':"b",ic:0.0631',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"c',851,'0565',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"d',470,'krn:{"108":','0.0511},',468,':"e',851,'0751',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"f',466,'12,"102":11,"108":13},',468,':"g','",a:0,d:0.2,ic:0.','0885,',468,':"h",ic:0.',483,468,':"i",ic:0.102,',468,485,641,468,':"k",',495,468,':"l',470,892,'0.0511},',468,':"m',851,483,468,':"n',851,483,'krn:{"39":-0.102},',468,':"o',851,'0631',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"p',919,'0631',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"q',919,'0885,',468,':"r',851,'108',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"s',851,'0821,',468,':"t",ic:0.0949,',468,':"u',851,483,468,':"v',851,'108,',468,':"w',851,1020,892,'0.0511},',468,':"x',851,'12,',468,':"y',919,'0885,',468,':"z',851,'123,',468,':"–",a:0.1,ic:0.','0921',565,'124},',468,':"—",a:0.1,ic:0.','0921,',468,':"˝",',605,489,'x2DC;",ic:0.116,',489,'xA8;",tclass:"',500,'"}],cmbx10:[{c:"&Gamma',';",tclass:"bgreek"},{c:"&','Delta',1056,'Theta',1056,'Lambda',1056,'Xi',1056,'Pi',1056,'Sigma',1056,'Upsilon',1056,'Phi',1056,'Psi',1056,'Omega;",tclass:"bgreek"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bol
d"},{c',':"fi",',1078,':"fl",',1078,':"ffi",',1078,':"ffl",',1078,481,1078,485,1078,':"`',';",tclass:"baccent"},{c:"&#','xB4',1092,'x2C7',1092,'x2D8',1092,'x2C9',1092,499,'baccent',501,1078,504,1078,507,1078,510,1078,513,1078,516,1078,520,1078,524,1078,527,'278,"76":-0.319},',1078,530,606,'60},',1078,534,1078,':"#",',1078,':"$",',1078,':"%",',1078,543,1078,546,548,'111,"33":0.111},lig:{"39":34},',1078,551,1078,554,1078,':"*",',1078,559,1078,':",",a:-0.3,d:0.2,w:0.278,',1078,':"-",a:0',565,'123},',1078,':".",a:-0.25,',1078,':"/",',1078,':"0",',1078,':"1",',1078,':"2",',1078,':"3",',1078,':"4",',1078,':"5",',1078,':"6",',1078,':"7",',1078,':"8",',1078,':"9",',1078,':":",',1078,':";",',1078,596,1078,599,1078,':"¿",',1078,604,606,'62},',1078,':"@",',1078,':"A",krn:{"116','":-0.0278,"','67',1195,'79',1195,'71',1195,'85',1195,'81',1195,'84','":-0.0833,"','89',1207,'86":-0.','111,"87":-0.111},',1078,':"B",',1078,640,1078,':"D",krn:{"88',1195,'87',1195,'65',1195,'86',1195,653,'0278},',1078,':"E",',1078,':"F",krn:{"111',1207,'101',1207,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1195,'67',1195,'71',1195,'81":-0.0278','},',1078,':"G",',1078,':"H",',1078,':"I",krn:{"73":0.0278},',1078,':"J",',1078,':"K",krn:{"79',1195,'67',1195,'71',1195,1242,'},',1078,':"L",krn:{"84',1207,'89',1207,1210,'111,"87":-0.111},',1078,':"M",',1078,':"N",',1078,':"O",krn:{"88',1195,'87',1195,'65',1195,'86',1195,653,'0278},',1078,':"P",krn:{"65',1207,'111',1195,'101',1195,'97',1195,'46',1207,'44":-0.0833},',1078,742,1078,':"R",krn:{"116',1195,'67',1195,'79',1195,'71',1195,'85',1195,'81',1195,'84',1207,'89',1207,1210,'111,"87":-0.111},',1078,':"S",',1078,':"T",krn:{"121',1195,'101',1207,'111',1235,'0833,"117":-0.0833','},',1078,':"U",',1078,788,'0139,krn:{"','111',1207,'101',1207,'117',1235,'111,"79',1195,'67',1195,'71',1195,1242,'},',1078,807,1331,'111',1207,'101',1207,'117',1235,'111,"79',1195,'67',1195,'71',1195,1242,'},',1078,':"X",krn:{"79',1195,'67',1195,'71',1195,1242,'},',1078,820,'025',822,1207,'111',1235,1325,
'},',1078,830,1078,833,1078,836,1078,839,1078,':"ˆ',1092,'x2D9',1092,846,606,'92},',1078,':"a','",a:0,krn:{"','118',1195,'106":0.','0556,"121',1195,'119":-0.','0278},',1078,':"b",krn:{"101','":0.0278,"','111',1409,'120',1195,'100',1409,'99',1409,'113',1409,'118',1195,1402,'0556,"121',1195,1405,'0278},',1078,':"c',1399,'104',1195,'107":-0.0278},',1078,':"d",',1078,':"e",a:0,',1078,':"f',1076,'12,"102":11,"108":13},',1078,':"g',919,1331,1402,'0278},',1078,':"h",krn:{"116',1195,'117',1195,'98',1195,'121',1195,'118',1195,1405,'0278},',1078,':"i",',1078,485,1078,':"k",krn:{"97":-0.0556,"101',1195,'97',1195,'111',1195,'99":-0.','0278},',1078,':"l",',1078,':"m',1399,'116',1195,'117',1195,'98',1195,'121',1195,'118',1195,1405,'0278},',1078,':"n',1399,'116',1195,'117',1195,'98',1195,'121',1195,'118',1195,1405,'0278},',1078,':"o",a:0',822,1409,'111',1409,'120',1195,'100',1409,'99',1409,'113',1409,'118',1195,1402,'0556,"121',1195,1405,'0278},',1078,':"p",a:0,d:0.2',822,1409,'111',1409,'120',1195,'100',1409,'99',1409,'113',1409,'118',1195,1402,'0556,"121',1195,1405,'0278},',1078,':"q",a:0,d:0.2,',1078,':"r",a:0,',1078,':"s",a:0,',1078,':"t",krn:{"121',1195,1405,'0278},',1078,':"u',1399,1405,'0278},',1078,':"v',851,1331,'97":-0.0556,"101',1195,'97',1195,'111',1195,1471,'0278},',1078,':"w',851,'0139',822,1195,'97',1195,'111',1195,1471,'0278},',1078,':"x",a:0,',1078,':"y',919,1331,'111',1195,'101',1195,'97',1195,'46',1207,'44":-0.0833},',1078,':"z",a:0,',1078,1040,'0278',565,'124},',1078,1045,'0278,',1078,':"˝',1092,'x2DC',1092,1053,1102,'"}]});','jsMath.Setup.Styles','({".typeset .math','":"font-style: ','normal','",".typeset .','italic',1622,1625,1624,'bold":"','font-weight: bold',1624,'cmr10','":"font-family: ','serif',1624,'cal',1633,'cursive',1624,'arrows','":"",".typeset .',380,1641,433,1641,'harpoon','":"font-size: ','125%",".typeset .',396,1641,'symbol2',1641,'delim1',1647,'133',315,'75em',1624,'delim1b',1647,'133',315,'8em; margin',': -.1em',1624,'delim1c',1647,'120',315,'8em',';",".typeset .',272,1647,'180',
315,1657,1624,'delim2b',1647,'190',315,1663,': -.1em',1624,91,1647,'167',315,'8em',1671,'delim3',1647,'250',315,'725em',1624,'delim3b',1647,'250',315,1663,': -.1em',1624,'delim3c',1647,'240',315,'775em',1671,'delim4',1647,'325',315,'7em',1624,'delim4b',1647,'325',315,1663,': -.1em',1624,'delim4c',1647,'300',315,'8em',1671,'delim',1641,67,1641,'greek',1641,464,1622,1625,1624,'bgreek":"',1630,1624,103,1647,'133%; ','position: relative; top',': .85em; margin:-.05em',1624,153,1647,'100%; ',1745,': .775em',1671,171,1647,'160%; ',1745,': .7em','; margin:-.1em',1624,113,1647,'125%; ',1745,': .',1657,1759,1671,107,1647,'200%; ',1745,': .',1663,':-.07em',1624,199,1647,'175%; ',1745,1758,1671,211,1647,'270%; ',1745,': .62em',1759,1624,117,1647,'250%; ',1745,1758,'; margin:-.17em',1671,242,1647,'67%; ',1745,':-.8em',1624,247,1647,'110%; ',1745,':-.5em',1624,252,1647,'175%; ',1745,':-.32em',1624,257,1647,'75%; ',1745,1807,1624,262,1647,'133%; ',1745,': -.15em',1624,267,1647,'200%; ',1745,': -.05em',1624,320,1641,'accent":"',1745,': .02em',1624,500,'":"',1745,1837,'; font-style: ',1625,1624,1102,'":"',1745,1837,'; ',1630,'"});',1620,'();jsMath.Macro("not','","\\\\mathrel{\\\\','rlap{\\\\kern 4mu/}}");jsMath.Macro("joinrel',1855,'kern-2mu}");jsMath.Box.DelimExtend=jsMath.Box.DelimExtendRelative;jsMath.Box.defaultH=0.8;jsMath.Script.End();']
+]);
\ No newline at end of file
Index: loncom/html/adm/jsMath/jsMath-msie-mac.js
diff -u loncom/html/adm/jsMath/jsMath-msie-mac.js:1.2 loncom/html/adm/jsMath/jsMath-msie-mac.js:1.3
--- loncom/html/adm/jsMath/jsMath-msie-mac.js:1.2 Wed Dec 7 13:57:45 2005
+++ loncom/html/adm/jsMath/jsMath-msie-mac.js Mon Mar 27 14:32:07 2006
@@ -7,107 +7,24 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-/********************************************************************
- *
- * Mac MSIE has problems accessing a number of the characters in
- * the TeX fonts, so we replace them by other characters when
- * possible.
- */
-
-jsMath.Update.TeXfonts({
-
- cmr10: {
- '3': {c: '<FONT FACE="Symbol">L</FONT>', tclass: 'normal'},
- '5': {c: '<FONT FACE="Symbol">P</FONT>', tclass: 'normal'},
- '10': {c: '<FONT FACE="Symbol">W</FONT>', tclass: 'normal'},
- '16': {c: 'ı', tclass: 'normal'},
- '20': {c: '­'},
- '22': {c: '¯', tclass: 'normal', w: .3},
- '25': {c: 'ß', tclass: 'normal'},
- '26': {c: 'æ', tclass: 'normal'},
- '27': {c: 'œ', tclass: 'normal'}
- },
-
- cmmi10: {
- '3': {c: '<I><FONT FACE="Symbol">L</FONT></I>', tclass: 'normal'},
- '5': {c: '<I><FONT FACE="Symbol">P</FONT></I>', tclass: 'normal'},
- '10': {c: '<I><FONT FACE="Symbol">W</FONT></I>', tclass: 'normal'},
- '15': {c: '<I><FONT FACE="Symbol">e</FONT></I>', tclass: 'normal'},
- '16': {c: '<I><FONT FACE="Symbol">z</FONT></I>', tclass: 'normal'},
- '20': {c: '<I><FONT FACE="Symbol">k</FONT></I>', tclass: 'normal'},
- '22': {c: '<I><FONT FACE="Symbol">m</FONT></I>', tclass: 'normal'},
- '25': {c: '<I><FONT FACE="Symbol">p</FONT></I>', tclass: 'normal'},
- '26': {c: '<I><FONT FACE="Symbol">r</FONT></I>', tclass: 'normal'},
- '27': {c: '<I><FONT FACE="Symbol">s</FONT></I>', tclass: 'normal'}
- },
-
- cmsy10: {
- '3': {c: '<SPAN STYLE="vertical-align:-.3em">*</SPAN>', tclass: 'normal'},
- '5': {c: 'Ή', tclass: 'normal'},
- '10': {c: '⊗', tclass: 'normal'},
- '15': {c: '•', tclass: 'normal'},
- '16': {c: '≍', tclass: 'normal'},
- '20': {c: '≤', tclass: 'normal'},
- '22': {c: '≤', tclass: 'normal'},
- '25': {c: '≈', tclass: 'normal'},
- '26': {c: '<FONT FACE="Symbol">Ì</FONT>', tclass: 'normal'},
- '27': {c: '<FONT FACE="Symbol">É</FONT>', tclass: 'normal'}
- },
-
- cmex10: {
- '3': {c: '<SPAN STYLE="font-size: 67%">i</SPAN>'},
- '5': {c: '<SPAN STYLE="font-size: 67%">k</SPAN>'},
- '10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'},
- '15': {c: '<SPAN STYLE="font-size: 55%">Â</SPAN>'},
- '16': {c: '<SPAN STYLE="font-size: 83%">µ</SPAN>'},
- '20': {c: '<SPAN STYLE="font-size: 83%">"</SPAN>'},
- '22': {c: '<SPAN STYLE="font-size: 83%">$</SPAN>'},
- '25': {c: '<SPAN STYLE="font-size: 83%">\'</SPAN>'},
- '26': {c: '<SPAN STYLE="font-size: 83%">(</SPAN>'},
- '27': {c: '<SPAN STYLE="font-size: 83%">)</SPAN>'}
- },
-
- cmti10: {
- '3': {c: '<I><FONT FACE="Symbol">L</FONT></I>', tclass: 'normal'},
- '5': {c: '<I><FONT FACE="Symbol">P</FONT></I>', tclass: 'normal'},
- '10': {c: '<I><FONT FACE="Symbol">W</FONT></I>', tclass: 'normal'},
- '16': {c: '<I>ı</I>', tclass: 'normal'},
- '20': {c: '<I>­</I>'},
- '22': {c: '<I>¯</I>', tclass: 'normal', w: .3},
- '25': {c: '<I>ß</I>', tclass: 'normal'},
- '26': {c: '<I>æ</I>', tclass: 'normal'},
- '27': {c: '<I>œ</I>', tclass: 'normal'}
- },
-
- cmbx10: {
- '3': {c: '<B><FONT FACE="Symbol">L</FONT></B>', tclass: 'normal'},
- '5': {c: '<B><FONT FACE="Symbol">P</FONT></B>', tclass: 'normal'},
- '10': {c: '<B><FONT FACE="Symbol">W</FONT></B>', tclass: 'normal'},
- '16': {c: '<B>ı</B>', tclass: 'normal'},
- '20': {c: '<B>­</B>'},
- '22': {c: '<B>¯</B>', tclass: 'normal', w: .3},
- '25': {c: '<B>ß</B>', tclass: 'normal'},
- '26': {c: '<B>æ</B>', tclass: 'normal'},
- '27': {c: '<B>œ</B>', tclass: 'normal'}
- }
-});
+jsMath.Script.Start();
/*
* MSIE crashes if it changes the page too quickly, so we add a
@@ -123,17 +40,18 @@
Process: function () {
// we need to delay a bit before starting to process the page
// in order to avoid an MSIE display bug
- setTimeout('jsMath.msieProcess()',jsMath.delay);
+ jsMath.Message.Set("Processing Math: 0%");
+ setTimeout('jsMath.msieProcess()',jsMath.Browser.delay);
},
ProcessBeforeShowing: function () {
// we need to delay a bit before starting to process the page
// in order to avoid an MSIE display bug
- window.status = "Processing Math...";
- setTimeout('jsMath.msieProcessBeforeShowing()',5*jsMath.delay);
+ setTimeout('jsMath.msieProcessBeforeShowing()',5*jsMath.Browser.delay);
}
});
-jsMath.delay = 50; // hope this is enogh of a delay!
+jsMath.Browser.delay = 75; // hope this is enough of a delay!
+jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath.js
diff -u loncom/html/adm/jsMath/jsMath.js:1.2 loncom/html/adm/jsMath/jsMath.js:1.3
--- loncom/html/adm/jsMath/jsMath.js:1.2 Wed Dec 7 13:57:45 2005
+++ loncom/html/adm/jsMath/jsMath.js Mon Mar 27 14:32:07 2006
@@ -9,5887 +9,42 @@
* http://www.math.union.edu/locate/jsMath
*
* for the latest version, and for documentation on how to use jsMath.
- *
- * Copyright (c) 2004-2005 by Davide P. Cervone.
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- *****************************************************************************/
-
-/*
- * Prevent running everything again if this file is loaded twice
- */
-if (!jsMath || !jsMath.loaded) {
-var jsMath_old = jsMath; // save user customizations
-
-//
-// debugging routine
-//
-function ShowObject (obj,spaces) {
- var s = ''; if (!spaces) {spaces = ""}
- for (var i in obj) {
- if (obj[i] != null) {
- if (typeof(obj[i]) == "object") {
- s += spaces + i + ": {\n"
- + ShowObject(obj[i],spaces + ' ')
- + spaces + "}\n";
- } else if (typeof(obj[i]) != "function") {
- s += spaces + i + ': ' + obj[i] + "\n";
- }
- }
- }
- return s;
-}
-
-/***************************************************************************/
-//
-// Check for DOM support
-//
-if (!document.getElementById || !document.childNodes || !document.createElement) {
- alert('The mathematics on this page requires W3C DOM support in its JavaScript. '
- + 'Unfortunately, your browser doesn\'t seem to have this.');
-} else {
-
-/***************************************************************************/
-
-var jsMath = {
-
- version: "2.4b", // change this if you edit the file
-
- //
- // Name of image files
- //
- blank: "blank.gif",
-
- defaultH: 0, // default height for characters with none specified
-
- // Font sizes for \tiny, \small, etc. (must match styles below)
- sizes: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249],
-
- //
- // The styles needed for the TeX fonts
- //
- styles: {
- '.size0': 'font-size: 50%', // tiny (\scriptscriptsize)
- '.size1': 'font-size: 60%', // (50% of \large for consistency)
- '.size2': 'font-size: 70%', // scriptsize
- '.size3': 'font-size: 85%', // small (70% of \large for consistency)
- '.size4': 'font-size: 100%', // normalsize
- '.size5': 'font-size: 120%', // large
- '.size6': 'font-size: 144%', // Large
- '.size7': 'font-size: 173%', // LARGE
- '.size8': 'font-size: 207%', // huge
- '.size9': 'font-size: 249%', // Huge
-
- '.cmr10': 'font-family: cmr10, serif',
- '.cmbx10': 'font-family: cmbx10, cmr10',
- '.cmti10': 'font-family: cmti10, cmr10',
- '.cmmi10': 'font-family: cmmi10',
- '.cmsy10': 'font-family: cmsy10',
- '.cmex10': 'font-family: cmex10',
-
- '.math': 'font-family: serif; font-style: normal; font-weight: normal',
- '.typeset': 'font-family: serif; font-style: normal; font-weight: normal',
- '.normal': 'font-family: serif; font-style: normal; font-weight: normal; '
- + 'padding:0px; border:0px; margin:0px;',
- 'span.typeset': '',
- 'div.typeset': 'text-align: center; margin: 1em 0px;',
- '.mathlink': 'text-decoration: none',
- '.mathHD': 'border-width:0px; width: 1px; margin-right: -1px',
-
- '.error': 'font-size: 10pt; font-style: italic; '
- + 'background-color: #FFFFCC; padding: 1px; '
- + 'border: 1px solid #CC0000',
-
- '.jsM_panel': 'position:fixed; bottom:1.5em; right:1.5em; padding: 10px 20px; '
- + 'background-color:#DDDDDD; border: outset 2px; '
- + 'z-index:103; width:auto;',
- '.jsM_button': 'position:fixed; bottom:1px; right:2px; background-color:white; '
- + 'border: solid 1px #959595; margin:0px; padding: 0px 3px 1px 3px; '
- + 'z-index:102; color:black; text-decoration:none; font-size:x-small; width:auto;',
- '.jsM_float': 'position:absolute; top:0px; left:0px; max-width:80%; '
- + 'z-index:101; width:auto; height:auto;',
- '.jsM_drag': 'background-color:#DDDDDD; border: outset 1px; height:12px; font-size: 1px;',
- '.jsM_close': 'background-color:#E6E6E6; border: inset 1px; width:8px; height:8px; margin: 1px 2px;',
- '.jsM_source': 'background-color:#E2E2E2; border: outset 1px; '
- + 'width:auto; height:auto; padding: 8px 15px; '
- + 'font-family: courier, fixed; font-size: 90%',
- '.jsM_noFont': 'text-align: center; padding: 10px 20px; border: 3px solid #DD0000; '
- + ' background-color: #FFF8F8; color: #AA0000; font-size:small; width:auto;',
- '.jsM_fontLink': 'padding: 0px 5px 2px 5px; text-decoration:none; color:black;'
- + ' border: 2px outset; background-color:#E8E8E8; font-size:80%; width:auto;'
- },
-
-
- /***************************************************************************/
-
- /*
- * Get the width and height (in pixels) of an HTML string
- */
- BBoxFor: function (s) {
- this.hidden.innerHTML = '<NOBR><SPAN CLASS="jsM_scale">'+s+'</SPAN></NOBR>';
- var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight};
- this.hidden.innerHTML = '';
- return bbox;
- },
-
- /*
- * Get the width and height (in ems) of an HTML string
- */
- EmBoxFor: function (s) {
- var bbox = this.BBoxFor(s);
- return {w: bbox.w/this.em, h: bbox.h/this.em};
- },
-
- /*
- * For browsers that don't handle sizes of italics properly (MSIE)
- */
- EmBoxForItalics: function (s) {
- var bbox = this.BBoxFor(s);
- if (s.match(/<I>|CLASS="icm/i)) {
- bbox.w = this.BBoxFor(s+jsMath.Browser.italicString).w
- - jsMath.Browser.italicCorrection;
- }
- return {w: bbox.w/this.em, h: bbox.h/this.em};
- },
-
- /*
- * Initialize jsMath. This determines the em size, and a variety
- * of other parameters used throughout jsMath.
- */
- Init: function () {
- if (jsMath.Setup.inited != 1) {
- if (jsMath.Setup.inited) {
- alert("It looks like jsMath failed to set up properly.");
- } else {
- alert("You must call jsMath.Setup.Body() explicitly when jsMath is" +
- "loaded as part of the <HEAD> section");
- }
- jsMath.Setup.Init(); // may fail to load fallback files properly
- }
- this.em = this.BBoxFor('<IMG SRC="'+jsMath.blank+'" STYLE="width:10em; height:1em">').w/10;
- if (jsMath.Browser.italicString)
- jsMath.Browser.italicCorrection = jsMath.BBoxFor(jsMath.Browser.italicString).w;
- if (jsMath.Browser.hiddenSpace != '') {
- jsMath.Browser.spaceWidth =
- this.EmBoxFor(jsMath.Browser.hiddenSpace +
- jsMath.Browser.hiddenSpace +
- jsMath.Browser.hiddenSpace +
- jsMath.Browser.hiddenSpace +
- jsMath.Browser.hiddenSpace).w/5;
- }
- var bb = this.BBoxFor('x'); var h = bb.h;
- var d = this.BBoxFor('x<IMG SRC="'+jsMath.blank+'" HEIGHT="'+(h*jsMath.Browser.imgScale)+'" WIDTH="1">').h - h;
- this.h = (h-d)/this.em; this.d = d/this.em;
- this.hd = this.h + this.d;
- this.xWidth = bb.w; // used to tell if scale has changed
-
- this.Setup.TeXfonts();
-
- var x_height = this.EmBoxFor('<SPAN CLASS="cmr10">M</SPAN>').w/2;
- this.TeX.M_height = x_height*(26/14);
- this.TeX.h = this.h; this.TeX.d = this.d; this.TeX.hd = this.hd;
-
- this.Img.Scale();
- if (!this.initialized) {
- this.Setup.Sizes();
- this.Img.UpdateFonts();
- }
-
- // factor for \big and its brethren
- this.p_height = (this.TeX.cmex10[0].h + this.TeX.cmex10[0].d) / .85;
-
- this.initialized = 1;
- },
-
- /*
- * Get the xWidth size and if it has changed, reinitialize the sizes
- */
- ReInit: function () {
- var w = this.BBoxFor('x').w;
- if (w != this.xWidth) {this.Init()}
- },
-
- /*
- * Mark jsMath as loaded and copy any user-provided overrides
- */
- Loaded: function () {
- this.Insert(jsMath,jsMath_old);
- jsMath_old = null;
- jsMath.loaded = 1;
- },
-
- /*
- * Manage JavaScript objects:
- *
- * Add: add/replace items in an object
- * Insert: add items to an object
- * Package: add items to an object prototype
- */
- Add: function (dst,src) {for (var id in src) {dst[id] = src[id]}},
- Insert: function (dst,src) {
- for (var id in src) {
- if (dst[id] && typeof(src[id]) == 'object'
- && (typeof(dst[id]) == 'object'
- || typeof(dst[id]) == 'function')) {
- this.Insert(dst[id],src[id]);
- } else {
- dst[id] = src[id];
- }
- }
- },
- Package: function (obj,def) {this.Insert(obj.prototype,def)}
-
-}
-
-/***************************************************************************/
-
-/*
- * Miscellaneous setup and initialization
- */
-jsMath.Setup = {
-
- /*
- * Insert a DIV at the top of the page with given ID,
- * attributes, and style settings
- */
- TopHTML: function (id,attributes,styles) {
- try {
- var div = document.createElement('div');
- div.setAttribute("id",'jsMath.'+id);
- for (var i in attributes) {
- div.setAttribute(i,attributes[i]);
- if (i == "class") {div.setAttribute('className',attributes[i])} // MSIE
- }
- for (var i in styles) {div.style[i]= styles[i]}
- if (!document.body.hasChildNodes) {document.body.appendChild(div)}
- else {document.body.insertBefore(div,document.body.firstChild)}
- } catch (err) {
- var html = '<DIV ID="jsMath.'+id+'"';
- for (var id in attributes) {html += ' '+id+'="'+attributes[id]+'"'}
- if (styles) {
- html += ' STYLE="';
- for (var id in styles) {html += ' '+id+':'+styles[id]+';'}
- html += '"';
- }
- html += '</DIV>';
- if (!document.body.insertAdjacentHTML) {document.write(html)}
- else {document.body.insertAdjacentHTML('AfterBegin',html)}
- div = jsMath.Element(id);
- }
- return div;
- },
-
- /*
- * Source a jsMath JavaScript file
- */
- Script: function (file) {
- if (!file.match('^([a-zA-Z]+:/)?/')) {file = jsMath.root + file}
- document.write('<SCRIPT SRC="'+file+'"></SCRIPT>');
- },
-
- /*
- * Use a hidden <DIV> for measuring the BBoxes of things
- */
- HTML: function () {
- jsMath.hidden = this.TopHTML("Hidden",{'class':"normal"},{
- position:"absolute", top:0, left:0, border:0, padding:0, margin:0
- });
- jsMath.hiddenTop = jsMath.hidden;
- return;
- },
-
- /*
- * Find the root URL for the jsMath files (so we can load
- * the other .js and .gif files)
- */
- Source: function () {
- var script = document.getElementsByTagName('SCRIPT');
- if (script) {
- for (var i = 0; i < script.length; i++) {
- var src = script[i].src;
- if (src && src.match('(^|/)jsMath.js$')) {
- jsMath.root = src.replace(/jsMath.js$/,'');
- jsMath.Img.root = jsMath.root + "fonts/";
- jsMath.blank = jsMath.root + jsMath.blank;
- this.Domain();
- return;
- }
- }
- }
- jsMath.root = ''; jsMath.Img.root = "fonts/";
- },
-
- /*
- * Find the most restricted common domain for the main
- * page and jsMath. Report an error if jsMath is outside
- * the domain of the calling page.
- */
- Domain: function () {
- var jsDomain = ''; var pageDomain = document.domain;
- if (jsMath.root.match('://([^/]*)/')) {jsDomain = RegExp.$1}
- jsDomain = jsDomain.replace(/:\d+$/,'');
- if (jsDomain == "" || jsDomain == pageDomain) return;
- //
- // MSIE on the Mac can't change document.domain and 'try' won't
- // catch the error (Grrr!), so exit for them
- //
- if (navigator.appName == 'Microsoft Internet Explorer' &&
- navigator.platform == 'MacPPC' && navigator.onLine &&
- navigator.userProfile && document.all) return;
- jsDomain = jsDomain.split(/\./); pageDomain = pageDomain.split(/\./);
- if (jsDomain.length < 2 || pageDomain.length < 2 ||
- jsDomain[jsDomain.length-1] != pageDomain[pageDomain.length-1] ||
- jsDomain[jsDomain.length-2] != pageDomain[pageDomain.length-2]) {
- this.DomainWarning();
- return;
- }
- var domain = jsDomain[jsDomain.length-2] + '.' + jsDomain[jsDomain.length-1];
- for (var i = 3; i <= jsDomain.length && i <= pageDomain.length; i++) {
- if (jsDomain[jsDomain.length-i] != pageDomain[pageDomain.length-i]) break;
- domain = jsDomain[jsDomain.length-i] + '.' + domain;
- }
- document.domain = domain;
- },
-
- DomainWarning: function () {
- alert("In order for jsMath to be able to load the additional "
- + "components that it may need, the jsMath.js file must be "
- + "loaded from a server in the same domain as the page that "
- + "contains it. Because that is not the case for this page, "
- + "the mathematics displayed here may not appear correctly.");
- },
-
- /*
- * Look up the default height and depth for a TeX font
- * and set the skewchar
- */
- TeXfont: function (name) {
- var font = jsMath.TeX[name];
- var WH = jsMath.EmBoxFor('<SPAN CLASS="'+name+'">'+font[65].c+'</SPAN>');
- font.hd = WH.h;
- font.d = jsMath.EmBoxFor('<SPAN CLASS="'+name+'">'+ font[65].c +
- '<IMG SRC="'+jsMath.blank+'" STYLE="height:'+(font.hd*jsMath.Browser.imgScale)+'em; width:1px;"></SPAN>').h
- - font.hd;
- font.h = font.hd - font.d;
- font.dh = .05; if (jsMath.browser == 'Safari') {font.hd *= 2};
- if (name == 'cmmi10') {font.skewchar = 0177}
- else if (name == 'cmsy10') {font.skewchar = 060}
- },
-
- /*
- * Init all the TeX fonts
- */
- TeXfonts: function () {
- for (var i = 0; i < jsMath.TeX.fam.length; i++)
- {if (jsMath.TeX.fam[i]) {this.TeXfont(jsMath.TeX.fam[i])}}
- },
-
- /*
- * Compute font parameters for various sizes
- */
- Sizes: function () {
- jsMath.TeXparams = [];
- for (var j=0; j < jsMath.sizes.length; j++) {jsMath.TeXparams[j] = {}}
- for (var i in jsMath.TeX) {
- if (typeof(jsMath.TeX[i]) != 'object') {
- for (var j=0; j < jsMath.sizes.length; j++) {
- jsMath.TeXparams[j][i] = jsMath.sizes[j]*jsMath.TeX[i]/100;
- }
- }
- }
- },
-
-
- /*
- * Send the style definitions to the browser (these may be adjusted
- * by the browser-specific code)
- */
- Styles: function (styles) {
- if (!styles) {
- styles = jsMath.styles;
- styles['.jsM_scale'] = 'font-size:'+jsMath.Controls.cookie.scale+'%';
- }
- document.writeln('<STYLE TYPE="text/css" ID="jsMath.styles">');
- for (var id in styles) {document.writeln(' '+id+' {'+styles[id]+'}')}
- document.writeln('</STYLE>');
- },
-
- /*
- * Do the initialization that requires the BODY to be in place.
- * (called automatically if the jsMath.js file is loaded in the
- * BODY, but must be called explicitly if it is in the HEAD).
- */
- Body: function () {
- if (this.inited) return;
-
- this.inited = -1;
-
- jsMath.Setup.HTML();
- jsMath.Setup.Source();
- jsMath.Browser.Init();
- jsMath.Controls.Init();
- jsMath.Click.Init();
- jsMath.Setup.Styles();
-
- jsMath.Setup.User(); // do user-specific initialization
-
- //make sure browser-specific loads are done before this
- document.write('<SCRIPT>jsMath.Font.Check()</SCRIPT>');
-
- this.inited = 1;
- },
-
- /*
- * Web page author can override this to do initialization
- * that must be done before the font check is performed
- */
- User: function () {}
-
-};
-
-jsMath.Update = {
-
- /*
- * Update specific parameters for a limited number of font entries
- */
- TeXfonts: function (change) {
- for (var font in change) {
- for (var code in change[font]) {
- for (var id in change[font][code]) {
- jsMath.TeX[font][code][id] = change[font][code][id];
- }
- }
- }
- },
-
- /*
- * Update the character code for every character in a list
- * of fonts
- */
- TeXfontCodes: function (change) {
- for (var font in change) {
- for (var i = 0; i < change[font].length; i++) {
- jsMath.TeX[font][i].c = change[font][i];
- }
- }
- },
-
- /*
- * Add a collection of styles to the style list
- */
- Styles: function (styles) {
- for (var i in styles) {jsMath.styles[i] = styles[i]}
- }
-
-};
-
-/***************************************************************************/
-
-/*
- * Implement browser-specific checks
- */
-
-jsMath.Browser = {
-
- allowAbsolute: 1, // tells if browser can nest absolutely positioned
- // SPANs inside relative SPANs
- allowAbsoluteDelim: 0, // OK to use absolute placement for building delims?
- separateSkips: 0, // MSIE doesn't do negative left margins, and
- // Netscape doesn't combine skips well
-
- msieSpaceFix: '', // for MSIE spacing bug fix
- msieCenterBugFix: '', // for MSIE centering bug with image fonts
- msieInlineBlockFix: '', // for MSIE alignment bug in non-quirks mode
- imgScale: 1, // MSI scales images for 120dpi screens, so compensate
-
- renameOK: 1, // tells if brower will find a tag whose name
- // has been set via setAttributes
-
- delay: 1, // delay for asynchronous math processing
-
- spaceWidth: 0, // Konqueror space fix
- hiddenSpace: "", // ditto
- valignBug: 0, // Konqueror doesn't nest vertical-align
-
- operaHiddenFix: '', // for Opera to fix bug with math in tables
-
- /*
- * Determine if the "top" of a <SPAN> is always at the same height
- * or varies with the height of the rest of the line (MSIE).
- */
- TestSpanHeight: function () {
- jsMath.hidden.innerHTML = '<SPAN><IMG SRC="'+jsMath.blank+'" STYLE="height: 2em"></SPAN>';
- var span = jsMath.hidden.getElementsByTagName('SPAN')[0];
- var img = jsMath.hidden.getElementsByTagName('IMG')[0];
- this.spanHeightVaries = (span.offsetHeight == img.offsetHeight);
- jsMath.hidden.innerHTML = '';
- },
-
- /*
- * Determine if the NAME attribute of a tag can be changed
- * using the setAttribute function, and then be properly
- * returned by getElementByName.
- */
- TestRenameOK: function () {
- jsMath.hidden.innerHTML = '<SPAN ID="jsMath.test"></SPAN>';
- var test = document.getElementById('jsMath.test');
- test.setAttribute('NAME','jsMath_test');
- this.renameOK = (document.getElementsByName('jsMath_test').length > 0);
- jsMath.hidden.innerHTML = '';
- },
-
- /*
- * Test for browser characteristics, and adjust things
- * to overcome specific browser bugs
- */
- Init: function () {
- jsMath.browser = 'unknown';
- this.TestSpanHeight();
- this.TestRenameOK();
-
- this.MSIE();
- this.Mozilla();
- this.Opera();
- this.OmniWeb();
- this.Safari();
- this.Konqueror();
-
- //
- // Change some routines depending on the browser
- //
- if (this.allowAbsoluteDelim) {
- jsMath.Box.DelimExtend = jsMath.Box.DelimExtendAbsolute;
- jsMath.Box.Layout = jsMath.Box.LayoutAbsolute;
- } else {
- jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
- jsMath.Box.Layout = jsMath.Box.LayoutRelative;
- }
-
- if (this.separateSkips) {
- jsMath.HTML.Place = jsMath.HTML.PlaceSeparateSkips;
- jsMath.Typeset.prototype.Place = jsMath.Typeset.prototype.PlaceSeparateSkips;
- }
- },
-
- //
- // Handle bug-filled Internet Explorer
- //
- MSIE: function () {
- if (this.spanHeightVaries) {
- jsMath.browser = 'MSIE';
- if (navigator.platform == 'Win32') {
- jsMath.Update.TeXfonts({
- cmr10: {'10': {c: 'Ω', tclass: 'normal'}},
- cmmi10: {
- '10': {c: '<I>Ω</I>', tclass: 'normal'},
- '126': {c: '~<SPAN STYLE="margin-left:.1em"></SPAN>'}
- },
- cmsy10: {
- '10': {c: '⊗', tclass: 'arial'},
- '55': {c: '<SPAN STYLE="margin-right:-.54em">7</SPAN>'}
- },
- cmex10: {'10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'}},
- cmti10: {'10': {c: '<I>Ω</I>', tclass: 'normal'}},
- cmbx10: {'10': {c: '<B>Ω</B>', tclass: 'normal'}}
- });
- this.allowAbsoluteDelim = 1;
- this.separateSkips = 1;
- this.buttonCheck = 1;
- this.msieDivWidthBug = 1;
- this.msieFontBug = 1; this.msieIntegralBug = 1;
- this.msieAlphaBug = 1; this.alphaPrintBug = 1;
- this.msieCenterBugFix = 'position:relative; ';
- this.msieSpaceFix = '<IMG SRC="'+jsMath.blank+'" CLASS="mathHD">';
- this.msieInlineBlockFix = ' display: inline-block;';
- jsMath.Macro('joinrel','\\mathrel{\\kern-5mu}'),
- jsMath.styles['.arial'] = "font-family: 'Arial unicode MS'";
- // MSIE doesn't implement fixed positioning, so use absolute
- jsMath.styles['.jsM_panel'] =
- jsMath.styles['.jsM_panel'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
- jsMath.styles['.jsM_button'] = 'width:1px; '
- + jsMath.styles['.jsM_button'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
- window.onscroll = jsMath.Controls.MoveButton;
- // MSIE will rescale images if the DPIs differ
- if (screen.deviceXDPI && screen.logicalXDPI
- && screen.deviceXDPI != screen.logicalXDPI) {
- this.imgScale *= screen.logicalXDPI/screen.deviceXDPI;
- jsMath.Controls.cookie.alpha = 0;
- }
- // Handle bug with getting width of italic text
- this.italicString = '<I>x</I>';
- jsMath.EmBoxFor = jsMath.EmBoxForItalics;
- } else if (navigator.platform == 'MacPPC') {
- this.msieAbsoluteBug = 1; this.msieButtonBug = 1;
- this.msieDivWidthBug = 1;
- jsMath.Setup.Script('jsMath-msie-mac.js');
- jsMath.Parser.prototype.macros.angle = ['Replace','ord','<FONT FACE="Symbol">‹</FONT>','normal'];
- jsMath.styles['.jsM_panel'] = 'width:25em; ' + jsMath.styles['.jsM_panel'].replace(/width:auto/,"");
- jsMath.styles['.jsM_button'] = 'width:1px; ' + jsMath.styles['.jsM_button'].replace(/width:auto/,"");
- }
- jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
- }
- },
-
- //
- // Handle Netscape/Mozilla (any flavor)
- //
- Mozilla: function () {
- if (jsMath.hidden.ATTRIBUTE_NODE) {
- jsMath.browser = 'Mozilla';
- if (navigator.platform == 'MacPPC') {
- jsMath.Update.TeXfonts({
- cmr10: {'10': {c: 'Ω', tclass: 'normal'}},
- cmmi10: {'10': {c: '<I>Ω</I>', tclass: 'normal'}},
- cmsy10: {'10': {c: '⊗', tclass: 'normal'}},
- cmex10: {'10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'}},
- cmti10: {'10': {c: '<I>Ω</I>', tclass: 'normal'}},
- cmbx10: {'10': {c: '<B>Ω</B>', tclass: 'normal'}}
- });
- } else {
- jsMath.Setup.Script('jsMath-mozilla.js');
- this.alphaPrintBug = 1;
- }
- for (var i = 0; i < jsMath.TeX.fam.length; i++) {
- if (jsMath.TeX.fam[i])
- {jsMath.styles['.'+jsMath.TeX.fam[i]] += '; position: relative'}
- }
- this.allowAbsoluteDelim = 1;
- this.separateSkips = 1;
- jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
- }
- },
-
- //
- // Handle OmniWeb
- //
- OmniWeb: function () {
- if (navigator.accentColorName) {
- jsMath.browser = 'OmniWeb';
- this.allowAbsolute = !navigator.userAgent.match("OmniWeb/v4");
- this.allowAbsoluteDelim = this.allowAbsolute;
- this.buttonCheck = 1;
- }
- },
-
- //
- // Handle Opera
- //
- Opera: function () {
- if (navigator.appName == 'Opera' || navigator.userAgent.match(" Opera ")) {
- jsMath.browser = 'Opera';
- jsMath.Update.TeXfonts({
- cmr10: {
- '10': {c: 'Ω', tclass: 'normal'},
- '20': {c: 'ˇ', tclass: 'normal'}
- },
- cmmi10: {
- '10': {c: '<I>Ω</I>', tclass: 'normal'},
- '20': {c: 'κ', tclass: 'normal'}
- },
- cmsy10: {
- '10': {c: '⊗', tclass: 'normal'},
- '20': {c: '≤', tclass: 'normal'}
- },
- cmex10: {
- '10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'},
- '20': {c: '<SPAN STYLE="font-size: 82%">"</SPAN>'}
- },
- cmti10: {
- '10': {c: '<I>Ω</I>', tclass: 'normal'},
- '20': {c: '<I>ˇ</I>', tclass: 'normal'}
- },
- cmbx10: {
- '10': {c: '<B>Ω</B>', tclass: 'normal'},
- '20': {c: '<B>ˇ</B>', tclass: 'normal'}
- }
- });
- this.allowAbsolute = 0;
- this.delay = 10;
- this.operaHiddenFix = '[Processing Math]';
- }
- },
-
- //
- // Handle Safari
- //
- Safari: function () {
- if (navigator.appVersion.match(/Safari\//)) {
- jsMath.browser = 'Safari';
- var version = navigator.userAgent.match("Safari/([0-9]+)");
- version = (version)? version[1] : 200; // FIXME: hack until I get Tiger
- for (var i = 0; i < jsMath.TeX.fam.length; i++)
- {if (jsMath.TeX.fam[i]) {jsMath.TeX[jsMath.TeX.fam[i]].dh = .1}}
- jsMath.TeX.axis_height += .05;
- this.allowAbsoluteDelim = version >= 125;
- this.safariIFRAMEbug = version >= 312; // FIXME: find out if they fixed it
- this.safariImgBug = 1;
- this.buttonCheck = 1;
- }
- },
-
- //
- // Handle Konqueror
- //
- Konqueror: function () {
- if (navigator.product && navigator.product.match("Konqueror")) {
- jsMath.browser = 'Konqueror';
- jsMath.Update.TeXfonts({
- cmr10: {'20': {c: 'ˇ', tclass: 'normal'}},
- cmmi10: {'20': {c: 'κ', tclass: 'normal'}},
- cmsy10: {'20': {c: '≤', tclass: 'normal'}},
- cmex10: {'20': {c: '<SPAN STYLE="font-size: 84%">"</SPAN>'}},
- cmti10: {'20': {c: '<I>ˇ</I>', tclass: 'normal'}},
- cmbx10: {'20': {c: '<B>ˇ</B>', tclass: 'normal'}}
- });
- this.allowAbsolute = 0;
- this.allowAbsoluteDelim = 0;
- if (navigator.userAgent.match(/Konqueror\/(\d+)\.(\d+)/)) {
- if (RegExp.$1 < 3 || (RegExp.$1 == 3 && RegExp.$2 < 3)) {
- this.separateSkips = 1;
- this.valignBug = 1;
- this.hiddenSpace = ' ';
- jsMath.Box.prototype.Remeasured = function () {return this};
- }
- }
- }
- }
-
-};
-
-/***************************************************************************/
-
-/*
- * Implement font check and messages
- */
-jsMath.Font = {
-
- fallback: "symbol", // the default fallback method
-
- // the HTML for the missing font message
- message:
- '<B>No TeX fonts found</B> -- using image fonts instead.<BR>\n'
- + 'These may be slow and might not print well.<BR>\n'
- + 'Use the jsMath control panel to get additional information.',
-
- extra_message:
- 'Extra TeX fonts not found: <B><SPAN ID="jsMath.ExtraFonts"></SPAN></B><BR>'
- + 'Using image fonts instead. This may be slow and might not print well.<BR>\n'
- + 'Use the jsMath control panel to get additional information.',
-
- /*
- * Look to see if a font is found. HACK!
- * Check the character in a given position, and see if it is
- * wider than the usual one in that position.
- */
- Test1: function (name,n,factor) {
- if (n == null) {n = 124}; if (factor == null) {factor = 2}
- var wh1 = jsMath.BBoxFor('<SPAN STYLE="font-family: '+name+', serif">'+jsMath.TeX[name][n].c+'</SPAN>');
- var wh2 = jsMath.BBoxFor('<SPAN STYLE="font-family: serif">'+jsMath.TeX[name][n].c+'</SPAN>');
- //alert([wh1.w,wh2.w,wh1.h,factor*wh2.w]);
- return (wh1.w > factor*wh2.w && wh1.h != 0);
- },
-
- Test2: function (name,n,factor) {
- if (n == null) {n = 124}; if (factor == null) {factor = 2}
- var wh1 = jsMath.BBoxFor('<SPAN STYLE="font-family: '+name+', serif">'+jsMath.TeX[name][n].c+'</SPAN>');
- var wh2 = jsMath.BBoxFor('<SPAN STYLE="font-family: serif">'+jsMath.TeX[name][n].c+'</SPAN>');
- //alert([wh2.w,wh1.w,wh1.h,factor*wh1.w]);
- return (wh2.w > factor*wh1.w && wh1.h != 0);
- },
-
- /*
- * Check for the availability of TeX fonts. We do this by looking at
- * the width and height of a character in the cmex10 font. The cmex10
- * font has depth considerably greater than most characters' widths (the
- * whole font has the depth of the character with greatest depth). This
- * is not the case for most fonts, so if we can access cmex10, the
- * height of a character should be much bigger than the width.
- * Otherwise, if we don't have cmex10, we'll get a character in another
- * font with normal height and width. In this case, we insert a message
- * pointing the user to the jsMath site, and load one of the fallback
- * definitions.
- *
- */
- Check: function () {
- var cookie = jsMath.Controls.cookie;
- var wh = jsMath.BBoxFor('<SPAN STYLE="font-family: cmex10">'+jsMath.TeX.cmex10[1].c+'</SPAN>');
- jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
- if (jsMath.nofonts) {
- if (cookie.autofont || cookie.font == 'tex') {
- cookie.font = this.fallback;
- if (cookie.warn) {
- jsMath.nofontMessage = 1;
- cookie.warn = 0; jsMath.Controls.SetCookie(0);
- if (window.NoFontMessage) {window.NoFontMessage()}
- else {this.Message(this.message)}
- }
- }
- } else {
- if (cookie.autofont) {cookie.font = 'tex'}
- if (cookie.font == 'tex') return;
- }
- if (jsMath.noImgFonts) {cookie.font = 'unicode'}
- if (cookie.font == 'unicode') {
- var platform = ({Win32: 'pc', MacPPC: 'mac'})[navigator.platform] || 'unix';
- jsMath.Setup.Script('jsMath-fallback-'+platform+'.js');
- return;
- }
- if (cookie.font == 'symbol') {
- jsMath.Setup.Script('jsMath-fallback-symbols.js');
- return;
- }
- jsMath.Img.SetFont({
- cmr10: ['all'], cmmi10: ['all'], cmsy10: ['all'],
- cmex10: ['all'], cmbx10: ['all'], cmti10: ['all']
- });
- jsMath.Img.LoadFont('cm-fonts');
- },
-
- /*
- * The message for when no TeX fonts. You can eliminate this message
- * by including
- *
- * <SCRIPT>jsMath = {Font: {Message: function () {}}}</SCRIPT>
- *
- * in your HTML file, before loading jsMath.js, if you want. But this
- * means the user may not know that he or she can get a better version
- * of your page.
- */
- Message: function (message) {
- if(jsMath.Element("Warning")) return;
- var div = jsMath.Setup.TopHTML("Warning",{'class':'jsM_Warning'},{});
- div.innerHTML =
- '<CENTER><TABLE><TR><TD>'
- + '<DIV CLASS="jsM_noFont">' + message
- + '<DIV STYLE="text-align:left"><SPAN STYLE="float:left; margin: 8px 0px 0px 20px">'
- + '<A HREF="javascript:jsMath.Controls.Panel()" CLASS="jsM_fontLink">jsMath Control Panel</A>'
- + '</SPAN><SPAN STYLE="margin: 8px 20px 0px 0px; float:right">'
- + '<A HREF="javascript:jsMath.Font.HideMessage()" CLASS="jsM_fontLink">Hide this Message</A>'
- + '</SPAN></DIV><BR CLEAR="ALL"></DIV>'
- + '<DIV STYLE="width:22em; height:1px"></DIV>'
- + '</TD></TR></TABLE></CENTER><HR>';
- },
-
- HideMessage: function () {
- var message = jsMath.Element("Warning");
- if (message) {message.style.display = "none"}
- },
-
- /*
- * Register an extra font so jsMath knows about it
- */
- Register: function (data) {
- if (typeof(data) == 'string') {data = {name: data}}
- var fontname = data.name; var name = fontname.replace(/10$/,'');
- var fontfam = jsMath.TeX.fam.length;
- if (!data.style) {data.style = "font-family: "+fontname+", serif"}
- if (!data.styles) {data.styles = {}}
- if (!data.macros) {data.macros = {}}
- /*
- * Register font family
- */
- jsMath.TeX.fam[fontfam] = fontname;
- data.macros[name] = ['HandleFont',fontfam];
- jsMath.Add(jsMath.Parser.prototype.macros,data.macros);
- /*
- * Set up styles
- */
- data.styles['.'+fontname] = data.style;
- jsMath.Setup.Styles(data.styles);
- jsMath.Setup.TeXfont(fontname);
- /*
- * Check for font and give message if missing
- */
- var hasTeXfont = !jsMath.nofonts &&
- data.test(fontname,data.testChar,data.testFactor);
- if (hasTeXfont && jsMath.Controls.cookie.font == 'tex') {
- if (data.tex) {data.tex(fontname,fontfam)}
- return;
- }
- if (!hasTeXfont && jsMath.Controls.cookie.warn &&
- jsMath.Controls.cookie.font == 'tex' && !jsMath.nofonts) {
- if (!jsMath.Element("Warning")) this.Message(this.extra_message);
- var extra = jsMath.Element("ExtraFonts");
- if (extra) {
- if (extra.innerHTML != "") {extra.innerHTML += ','}
- extra.innerHTML += " " + fontname;
- }
- }
- if (jsMath.Controls.cookie.font == 'unicode') {
- if (data.fallback) {data.fallback(fontname,fontfam)}
- return;
- }
- // Image fonts
- var font = {}; font[fontname] = ['all'];
- jsMath.Img.SetFont(font);
- jsMath.Img.LoadFont(fontname);
- },
-
- /*
- * Load a font
- */
- Load: function (name) {jsMath.Setup.Script("fonts/"+name+"/def.js")}
-
-};
-
-/***************************************************************************/
-
-/*
- * Implements the jsMath control panel.
- * Much of the code is in jsMath-controls.html, which is
- * loaded into a hidden IFRAME on demand
- */
-jsMath.Controls = {
-
- // Data stored in the jsMath cookie
- cookie: {
- scale: 100,
- font: 'tex', autofont: 1, scaleImg: 0, alpha: 1,
- warn: 1, button: 1,
- print: 0, keep: '0D'
- },
-
- cookiePath: '/', // can also set cookieDomain
-
-
- /*
- * Load the control panel
- */
- Panel: function () {
- if (!this.panel) {this.panel = jsMath.Element("Controls")}
- if (this.loaded) {this.Main()} else {
- this.openMain = 1;
- if (!this.iframe) {this.iframe = jsMath.Element("Frame")}
- this.iframe.src = jsMath.root+"jsMath-controls.html";
- }
- },
-
- /*
- * Create the control panel button
- */
- Button: function () {
- var button = jsMath.Setup.TopHTML("jsMath",{'class':'jsM_button'},{});
- button.innerHTML =
- '<A HREF="javascript:jsMath.Controls.Panel()" '+
- 'STYLE="text-decoration:inherit; color:inherit">' +
- '<SPAN TITLE="Open jsMath Control Panel">jsMath</SPAN></A>'
- if (!this.cookie.button) {button.style.display = "none"}
- },
-
- /*
- * MSIE doesn't implement position:fixed, so redraw the button on scrolls.
- */
- MoveButton: function () {
- if (!this.button) {this.button = jsMath.Element("jsMath")}
- this.button.style.visibility = "hidden";
- this.button.style.visibility = "visible";
- },
-
- /*
- * Create the HTML needed for control panel
- */
- Init: function () {
- this.document = document;
- this.panel = jsMath.Setup.TopHTML("Controls", {'class':"jsM_panel"},{display:'none'});
- if (!jsMath.Browser.msieButtonBug) {this.Button()}
- else {setTimeout("jsMath.Controls.Button()",500)}
- if (jsMath.Browser.safariIFRAMEbug) {
- document.write(
- '<IFRAME SRC="'+jsMath.root+'jsMath-controls.html" '
- + 'ID="jsMath.Frame" SCROLLING="no" '
- + 'STYLE="visibility:hidden; position:absolute; width:1em; height:1em;">'
- + '</IFRAME>\n');
- return;
- }
- try {
- var frame = document.createElement('iframe');
- frame.setAttribute('scrolling','no');
- frame.style.border = '0px';
- frame.style.width = '0px';
- frame.style.height = '0px';
- document.body.insertBefore(frame,this.panel);
- this.iframe = frame;
- } catch (err) {
- document.write('<IFRAME SRC="" ID="jsMath.Frame" SCROLLING="no" '
- + 'STYLE="visibility:hidden; position:absolute; width:1em; height:1em;">'
- + '</IFRAME>\n');
- }
- },
-
- /*
- * Get the cookie data from the browser
- * (for file: references, use url '?' syntax)
- */
- GetCookie: function () {
- var cookies = document.cookie;
- if (window.location.protocol == 'file:')
- {cookies = unescape(window.location.search.substr(1))}
- if (cookies.match(/jsMath=([^;]*)/)) {
- var data = RegExp.$1.split(/,/);
- for (var i = 0; i < data.length; i++) {
- var x = data[i].match(/(.*):(.*)/);
- if (x[2].match(/^\d+$/)) {x[2] = 1*x[2]} // convert from string
- this.cookie[x[1]] = x[2];
- }
- }
- },
-
- /*
- * Save the cookie data in the browser
- * (for file: urls, append data like CGI reference)
- */
- SetCookie: function (warn) {
- var cookie = [];
- for (var id in this.cookie) {cookie[cookie.length] = id + ':' + this.cookie[id]}
- cookie = cookie.join(',');
- if (window.location.protocol == 'file:') {
- if (!warn) return;
- this.loaded = 0;
- var href = window.location.href;
- href = href.replace(/\?.*/,"") + '?jsMath=' + escape(cookie);
- if (href != window.location.href) {window.location.replace(href)}
- } else {
- if (this.cookiePath) {cookie += '; path='+this.cookiePath}
- if (this.cookieDomain) {cookie += '; domain='+this.cookieDomain}
- if (this.cookie.keep != '0D') {
- var ms = {
- D: 1000*60*60*24,
- W: 1000*60*60*24*7,
- M: 1000*60*60*24*30,
- Y: 1000*60*60*24*365
- };
- var exp = new Date;
- exp.setTime(exp.getTime() +
- this.cookie.keep.substr(0,1) * ms[this.cookie.keep.substr(1,1)]);
- cookie += '; expires=' + exp.toGMTString();
- }
- document.cookie = 'jsMath='+cookie;
- var cookies = document.cookie;
- if (warn && !cookies.match(/jsMath=/))
- {alert("Cookies must be enabled in order to save jsMath options")}
- }
- }
-
-};
-
-/***************************************************************************/
-
-/*
- * Implements the actions for clicking and double-clicking
- * on math formulas
- */
-jsMath.Click = {
-
- dragging: 0,
-
- /*
- * Create the hidden DIV used for the tex source window
- */
- Init: function () {
- this.source = jsMath.Setup.TopHTML("Source",{'class':'jsM_float'},{display:'none'});
- this.source.innerHTML =
- '<DIV CLASS="jsM_drag"><DIV CLASS="jsM_close"></DIV></DIV>'
- + '<DIV CLASS="jsM_source"><SPAN></SPAN></DIV>';
- this.drag = this.source.firstChild;
- this.tex = this.drag.nextSibling.firstChild;
- this.drag.firstChild.onclick = jsMath.Click.CloseSource;
- this.drag.onmousedown = jsMath.Click.StartDragging;
- this.drag.ondragstart = jsMath.Click.False;
- this.drag.onselectstart = jsMath.Click.False;
- this.source.onclick = jsMath.Click.CheckClose;
- },
- False: function () {return false},
-
- /*
- * Handle clicking on math to get control panel
- */
- CheckClick: function (event) {
- if (!event) {event = window.event}
- if (event.altKey) jsMath.Controls.Panel();
- },
-
- /*
- * Handle double-click for seeing TeX code
- */
- CheckDblClick: function (event) {
- if (!event) {event = window.event}
- var event = jsMath.Click.Event(event);
-
- var source = jsMath.Click.source
- var tex = jsMath.Click.tex;
-
- source.style.visibility = 'hidden';
- source.style.display = ''; source.style.width = '';
- source.style.left = ''; source.style.top = '';
- tex.innerHTML = '';
-
- var TeX = this.alt;
- TeX = TeX.replace(/^\s+|\s+$/g,'');
- TeX = TeX.replace(/&/g,'&');
- TeX = TeX.replace(/</g,'<');
- TeX = TeX.replace(/>/g,'>');
- TeX = TeX.replace(/\n/g,'<BR>');
- tex.innerHTML = TeX;
-
- var h = source.offsetHeight; var w;
- if (jsMath.Browser.msieDivWidthBug) {
- tex.className = 'jsM_source'; // Work around MSIE bug where
- w = tex.offsetWidth + 5; // DIV's don't collapse to
- tex.className = ''; // their natural widths
- } else {
- w = source.offsetWidth;
- }
- w = Math.max(50,Math.min(w,.8*event.W,event.W-40));
- var x = Math.floor(event.x-w/2); var y = Math.floor(event.y-h/2);
- x = event.X + Math.max(Math.min(x,event.W-w-20),20);
- y = event.Y + Math.max(Math.min(y,event.H-h-5),5);
-
- source.style.left = x+'px'; source.style.top = y+'px';
- source.style.width = w+'px';
- source.style.visibility = '';
- jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
- jsMath.Click.w = w; jsMath.Click.h = source.offsetHeight;
-
- jsMath.Click.DeselectText(x,y);
- return false;
- },
-
- /*
- * Get window width, height, and offsets plus
- * position of pointer relative to the window
- */
- Event: function (event) {
- var W = window.innerWidth || document.body.clientWidth;
- var H = window.innerHeight || document.body.clientHeight;
- var X = window.pageXOffset; var Y = window.pageYOffset;
- if (X == null) {X = document.body.clientLeft; Y = document.body.clientTop}
- var x = event.pageX; var y = event.pageY;
- if (x == null) {
- x = event.clientX; y = event.clientY;
- if (jsMath.browser == 'MSIE' && document.compatMode == 'CSS1Compat') {
- X = document.documentElement.scrollLeft;
- Y = document.documentElement.scrollTop;
- W = document.documentElement.clientWidth;
- H = document.documentElement.clientHeight;
- } else {
- X = document.body.scrollLeft;
- Y = document.body.scrollTop;
- }
- } else {x -= X; y -= Y}
-
- return {x: x, y: y, W: W, H: H, X: X, Y: Y};
- },
-
- /*
- * Unselect whatever text is selected (since double-clicking
- * usually selects something)
- */
- DeselectText: function (x,y) {
- if (window.getSelection && window.getSelection().removeAllRanges)
- {window.getSelection().removeAllRanges()}
- else if (document.getSelection && document.getSelection().removeAllRanges)
- {document.getSelection().removeAllRanges()}
- else if (document.selection && document.selection.empty)
- {document.selection.empty()}
- else {
- /* Hack to deselect the text in Opera and Safari */
- if (jsMath.browser == 'MSIE') return; // don't try it if MISE on Mac
- jsMath.hiddenTop.innerHTML =
- '<textarea style="visibility:hidden" ROWS="1" COLS="1">a</textarea>';
- jsMath.hiddenTop.firstChild.style.position = 'absolute';
- jsMath.hiddenTop.firstChild.style.left = x+'px';
- jsMath.hiddenTop.firstChild.style.top = y+'px';
- setTimeout(jsMath.Click.SelectHidden,1);
- }
- },
- SelectHidden: function () {
- jsMath.hiddenTop.firstChild.focus();
- jsMath.hiddenTop.firstChild.select();
- jsMath.hiddenTop.innerHTML = '';
- },
-
- /*
- * Close the TeX source window
- */
- CloseSource: function () {
- jsMath.Click.tex.innerHTML = '';
- jsMath.Click.source.style.display = 'none';
- jsMath.Click.source.style.visibility = 'hidden';
- jsMath.Click.StopDragging();
- return false;
- },
- CheckClose: function (event) {
- if (!event) {event = window.event}
- if (event.altKey) {jsMath.Click.CloseSource(); return false}
- },
-
- /*
- * Set up for dragging the source panel
- */
- StartDragging: function (event) {
- if (!event) {event = window.event}
- if (jsMath.Click.dragging) {jsMath.Click.StopDragging(event)}
- var event = jsMath.Click.Event(event);
- jsMath.Click.dragging = 1;
- jsMath.Click.x = event.x + 2*event.X - jsMath.Click.left;
- jsMath.Click.y = event.y + 2*event.Y - jsMath.Click.top;
- jsMath.Click.oldonmousemove = document.body.onmousemove;
- jsMath.Click.oldonmouseup = document.body.onmouseup;
- document.body.onmousemove = jsMath.Click.DragSource;
- document.body.onmouseup = jsMath.Click.StopDragging;
- return false;
- },
-
- /*
- * Stop dragging the source window
- */
- StopDragging: function (event) {
- if (jsMath.Click.dragging) {
- document.body.onmousemove = jsMath.Click.oldonmousemove;
- document.body.onmouseup = jsMath.Click.oldonmouseup;
- jsMath.Click.oldonmousemove = null;
- jsMath.Click.oldonmouseup = null;
- jsMath.Click.dragging = 0;
- }
- return false;
- },
-
- /*
- * Move the source window (but stay within the browser window)
- */
- DragSource: function (event) {
- if (!event) {event = window.event}
- if (jsMath.Browser.buttonCheck && !event.button) {return jsMath.Click.StopDragging(event)}
- event = jsMath.Click.Event(event);
- var x = event.x + event.X - jsMath.Click.x;
- var y = event.y + event.Y - jsMath.Click.y;
- x = Math.max(event.X,Math.min(event.W+event.X-jsMath.Click.w,x));
- y = Math.max(event.Y,Math.min(event.H+event.Y-jsMath.Click.h,y));
- jsMath.Click.source.style.left = x + 'px';
- jsMath.Click.source.style.top = y + 'px';
- jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
- return false;
- }
-
-};
-
-/***************************************************************************/
-
-/*
- * The TeX font information
- */
-jsMath.TeX = {
-
- //
- // The TeX font parameters
- //
- thinmuskip: 3/18,
- medmuskip: 4/18,
- thickmuskip: 5/18,
-
- x_height: .430554,
- quad: 1,
- num1: .676508,
- num2: .393732,
- num3: .44373,
- denom1: .685951,
- denom2: .344841,
- sup1: .412892,
- sup2: .362892,
- sup3: .288888,
- sub1: .15,
- sub2: .247217,
- sup_drop: .386108,
- sub_drop: .05,
- delim1: 2.39,
- delim2: 1.0,
- axis_height: .25,
- default_rule_thickness: .04,
- big_op_spacing1: .111111,
- big_op_spacing2: .166666,
- big_op_spacing3: .2,
- big_op_spacing4: .6,
- big_op_spacing5: .1,
-
- integer: 6553.6, // conversion of em's to TeX internal integer
- scriptspace: .05,
- nulldelimiterspace: .12,
- delimiterfactor: 901,
- delimitershortfall: .5,
- scale: 1, // scaling factor for font dimensions
-
- // The TeX math atom types (see Appendix G of the TeXbook)
- atom: ['ord', 'op', 'bin', 'rel', 'open', 'close', 'punct', 'ord'],
-
- // The TeX font families
- fam: ['cmr10','cmmi10','cmsy10','cmex10','cmti10','','cmbx10'],
-
- /*
- * The following are the TeX font mappings and metrics. The metric
- * information comes directly from the TeX .tfm files, and the
- * character mappings are for the TrueType TeX fonts. Browser-specific
- * adjustments are made to these tables in the Browser.Init() routine
- */
- cmr10: [
- // 00 - 0F
- {c: '¡', h: 0.683, w: 0.625},
- {c: '¢', h: 0.683, w: 0.833},
- {c: '£', h: 0.683, w: 0.778},
- {c: '¤', h: 0.683, w: 0.694},
- {c: '¥', h: 0.683, w: 0.667},
- {c: '¦', h: 0.683, w: 0.75},
- {c: '§', h: 0.683, w: 0.722},
- {c: '¨', h: 0.683, w: 0.778},
- {c: '©', h: 0.683, w: 0.722},
- {c: 'ª', h: 0.683, w: 0.778},
- {c: '­', h: 0.683, w: 0.722},
- {c: '®', h: 0.694, w: 0.583, ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}},
- {c: '¯', h: 0.694, w: 0.556},
- {c: '°', h: 0.694, w: 0.556},
- {c: '±', h: 0.694, w: 0.833},
- {c: '²', h: 0.694, w: 0.833},
- // 10 - 1F
- {c: '³', h: 0.431, w: 0.278},
- {c: '´', h: 0.431, d: 0.194, w: 0.306},
- {c: 'µ', h: 0.694, w: 0.5},
- {c: '¶', h: 0.694, w: 0.5},
- {c: '∙', h: 0.628, w: 0.5},
- {c: '¸', h: 0.694, w: 0.5},
- {c: '¹', h: 0.568, w: 0.5},
- {c: 'º', h: 0.694, w: 0.75},
- {c: '»', d: 0.17, w: 0.444},
- {c: '¼', h: 0.694, w: 0.5},
- {c: '½', h: 0.431, w: 0.722},
- {c: '¾', h: 0.431, w: 0.778},
- {c: '¿', h: 0.528, d: 0.0972, w: 0.5},
- {c: 'À', h: 0.683, w: 0.903},
- {c: 'Á', h: 0.683, w: 1.01},
- {c: 'Â', h: 0.732, d: 0.0486, w: 0.778},
- // 20 - 2F
- {c: 'Ã', h: 0.431, w: 0.278, krn: {'108': -0.278, '76': -0.319}},
- {c: '!', h: 0.694, w: 0.278, lig: {'96': 60}},
- {c: '"', h: 0.694, w: 0.5},
- {c: '#', h: 0.694, d: 0.194, w: 0.833},
- {c: '$', h: 0.75, d: 0.0556, w: 0.5},
- {c: '%', h: 0.75, d: 0.0556, w: 0.833},
- {c: '&', h: 0.694, w: 0.778},
- {c: '\'', h: 0.694, w: 0.278, krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}},
- {c: '(', h: 0.75, d: 0.25, w: 0.389},
- {c: ')', h: 0.75, d: 0.25, w: 0.389},
- {c: '*', h: 0.75, w: 0.5},
- {c: '+', h: 0.583, d: 0.0833, w: 0.778},
- {c: ',', h: 0.106, d: 0.194, w: 0.278},
- {c: '-', h: 0.431, w: 0.333, lig: {'45': 123}},
- {c: '.', h: 0.106, w: 0.278},
- {c: '/', h: 0.75, d: 0.25, w: 0.5},
- // 30 - 3F
- {c: '0', h: 0.644, w: 0.5},
- {c: '1', h: 0.644, w: 0.5},
- {c: '2', h: 0.644, w: 0.5},
- {c: '3', h: 0.644, w: 0.5},
- {c: '4', h: 0.644, w: 0.5},
- {c: '5', h: 0.644, w: 0.5},
- {c: '6', h: 0.644, w: 0.5},
- {c: '7', h: 0.644, w: 0.5},
- {c: '8', h: 0.644, w: 0.5},
- {c: '9', h: 0.644, w: 0.5},
- {c: ':', h: 0.431, w: 0.278},
- {c: ';', h: 0.431, d: 0.194, w: 0.278},
- {c: '<', h: 0.5, d: 0.194, w: 0.278},
- {c: '=', h: 0.367, d: -0.133, w: 0.778},
- {c: '>', h: 0.5, d: 0.194, w: 0.472},
- {c: '?', h: 0.694, w: 0.472, lig: {'96': 62}},
- // 40 - 4F
- {c: '@', h: 0.694, w: 0.778},
- {c: 'A', h: 0.683, w: 0.75, krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- {c: 'B', h: 0.683, w: 0.708},
- {c: 'C', h: 0.683, w: 0.722},
- {c: 'D', h: 0.683, w: 0.764, krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
- {c: 'E', h: 0.683, w: 0.681},
- {c: 'F', h: 0.683, w: 0.653, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- {c: 'G', h: 0.683, w: 0.785},
- {c: 'H', h: 0.683, w: 0.75},
- {c: 'I', h: 0.683, w: 0.361, krn: {'73': 0.0278}},
- {c: 'J', h: 0.683, w: 0.514},
- {c: 'K', h: 0.683, w: 0.778, krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- {c: 'L', h: 0.683, w: 0.625, krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- {c: 'M', h: 0.683, w: 0.917},
- {c: 'N', h: 0.683, w: 0.75},
- {c: 'O', h: 0.683, w: 0.778, krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
- // 50 - 5F
- {c: 'P', h: 0.683, w: 0.681, krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
- {c: 'Q', h: 0.683, d: 0.194, w: 0.778},
- {c: 'R', h: 0.683, w: 0.736, krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
- {c: 'S', h: 0.683, w: 0.556},
- {c: 'T', h: 0.683, w: 0.722, krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
- {c: 'U', h: 0.683, w: 0.75},
- {c: 'V', h: 0.683, w: 0.75, ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- {c: 'W', h: 0.683, w: 1.03, ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- {c: 'X', h: 0.683, w: 0.75, krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
- {c: 'Y', h: 0.683, w: 0.75, ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
- {c: 'Z', h: 0.683, w: 0.611},
- {c: '[', h: 0.75, d: 0.25, w: 0.278},
- {c: '\\', h: 0.694, w: 0.5},
- {c: ']', h: 0.75, d: 0.25, w: 0.278},
- {c: '^', h: 0.694, w: 0.5},
- {c: '_', h: 0.668, w: 0.278},
- // 60 - 6F
- {c: '`', h: 0.694, w: 0.278, lig: {'96': 92}},
- {c: 'a', h: 0.431, w: 0.5, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- {c: 'b', h: 0.694, w: 0.556, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- {c: 'c', h: 0.431, w: 0.444, krn: {'104': -0.0278, '107': -0.0278}},
- {c: 'd', h: 0.694, w: 0.556},
- {c: 'e', h: 0.431, w: 0.444},
- {c: 'f', h: 0.694, w: 0.306, ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
- {c: 'g', h: 0.431, d: 0.194, w: 0.5, ic: 0.0139, krn: {'106': 0.0278}},
- {c: 'h', h: 0.694, w: 0.556, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- {c: 'i', h: 0.668, w: 0.278},
- {c: 'j', h: 0.668, d: 0.194, w: 0.306},
- {c: 'k', h: 0.694, w: 0.528, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- {c: 'l', h: 0.694, w: 0.278},
- {c: 'm', h: 0.431, w: 0.833, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- {c: 'n', h: 0.431, w: 0.556, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
- {c: 'o', h: 0.431, w: 0.5, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- // 70 - 7F
- {c: 'p', h: 0.431, d: 0.194, w: 0.556, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
- {c: 'q', h: 0.431, d: 0.194, w: 0.528},
- {c: 'r', h: 0.431, w: 0.392},
- {c: 's', h: 0.431, w: 0.394},
- {c: 't', h: 0.615, w: 0.389, krn: {'121': -0.0278, '119': -0.0278}},
- {c: 'u', h: 0.431, w: 0.556, krn: {'119': -0.0278}},
- {c: 'v', h: 0.431, w: 0.528, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- {c: 'w', h: 0.431, w: 0.722, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
- {c: 'x', h: 0.431, w: 0.528},
- {c: 'y', h: 0.431, d: 0.194, w: 0.528, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
- {c: 'z', h: 0.431, w: 0.444},
- {c: '{', h: 0.431, w: 0.5, ic: 0.0278, lig: {'45': 124}},
- {c: '|', h: 0.431, w: 1, ic: 0.0278},
- {c: '}', h: 0.694, w: 0.5},
- {c: '~', h: 0.668, w: 0.5},
- {c: 'Ä', h: 0.668, w: 0.5}
- ],
-
- cmmi10: [
- // 00 - 0F
- {c: '¡', h: 0.683, w: 0.615, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
- {c: '¢', h: 0.683, w: 0.833, krn: {'127': 0.167}},
- {c: '£', h: 0.683, w: 0.763, ic: 0.0278, krn: {'127': 0.0833}},
- {c: '¤', h: 0.683, w: 0.694, krn: {'127': 0.167}},
- {c: '¥', h: 0.683, w: 0.742, ic: 0.0757, krn: {'127': 0.0833}},
- {c: '¦', h: 0.683, w: 0.831, ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
- {c: '§', h: 0.683, w: 0.78, ic: 0.0576, krn: {'127': 0.0833}},
- {c: '¨', h: 0.683, w: 0.583, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}},
- {c: '©', h: 0.683, w: 0.667, krn: {'127': 0.0833}},
- {c: 'ª', h: 0.683, w: 0.612, ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
- {c: '­', h: 0.683, w: 0.772, ic: 0.0502, krn: {'127': 0.0833}},
- {c: '®', h: 0.431, w: 0.64, ic: 0.0037, krn: {'127': 0.0278}},
- {c: '¯', h: 0.694, d: 0.194, w: 0.566, ic: 0.0528, krn: {'127': 0.0833}},
- {c: '°', h: 0.431, d: 0.194, w: 0.518, ic: 0.0556},
- {c: '±', h: 0.694, w: 0.444, ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
- {c: '²', h: 0.431, w: 0.406, krn: {'127': 0.0556}},
- // 10 - 1F
- {c: '³', h: 0.694, d: 0.194, w: 0.438, ic: 0.0738, krn: {'127': 0.0833}},
- {c: '´', h: 0.431, d: 0.194, w: 0.497, ic: 0.0359, krn: {'127': 0.0556}},
- {c: 'µ', h: 0.694, w: 0.469, ic: 0.0278, krn: {'127': 0.0833}},
- {c: '¶', h: 0.431, w: 0.354, krn: {'127': 0.0556}},
- {c: '∙', h: 0.431, w: 0.576},
- {c: '¸', h: 0.694, w: 0.583},
- {c: '¹', h: 0.431, d: 0.194, w: 0.603, krn: {'127': 0.0278}},
- {c: 'º', h: 0.431, w: 0.494, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}},
- {c: '»', h: 0.694, d: 0.194, w: 0.438, ic: 0.046, krn: {'127': 0.111}},
- {c: '¼', h: 0.431, w: 0.57, ic: 0.0359},
- {c: '½', h: 0.431, d: 0.194, w: 0.517, krn: {'127': 0.0833}},
- {c: '¾', h: 0.431, w: 0.571, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}},
- {c: '¿', h: 0.431, w: 0.437, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}},
- {c: 'À', h: 0.431, w: 0.54, ic: 0.0359, krn: {'127': 0.0278}},
- {c: 'Á', h: 0.694, d: 0.194, w: 0.596, krn: {'127': 0.0833}},
- {c: 'Â', h: 0.431, d: 0.194, w: 0.626, krn: {'127': 0.0556}},
- // 20 - 2F
- {c: 'Ã', h: 0.694, d: 0.194, w: 0.651, ic: 0.0359, krn: {'127': 0.111}},
- {c: '!', h: 0.431, w: 0.622, ic: 0.0359},
- {c: '"', h: 0.431, w: 0.466, krn: {'127': 0.0833}},
- {c: '#', h: 0.694, w: 0.591, krn: {'127': 0.0833}},
- {c: '$', h: 0.431, w: 0.828, ic: 0.0278},
- {c: '%', h: 0.431, d: 0.194, w: 0.517, krn: {'127': 0.0833}},
- {c: '&', h: 0.431, d: 0.0972, w: 0.363, ic: 0.0799, krn: {'127': 0.0833}},
- {c: '\'', h: 0.431, d: 0.194, w: 0.654, krn: {'127': 0.0833}},
- {c: '(', h: 0.367, d: -0.133, w: 1},
- {c: ')', h: 0.367, d: -0.133, w: 1},
- {c: '*', h: 0.367, d: -0.133, w: 1},
- {c: '+', h: 0.367, d: -0.133, w: 1},
- {c: ',', h: 0.464, d: -0.0363, w: 0.278},
- {c: '-', h: 0.464, d: -0.0363, w: 0.278},
- {c: '.', h: 0.465, d: -0.0347, w: 0.5},
- {c: '/', h: 0.465, d: -0.0347, w: 0.5},
- // 30 - 3F
- {c: '0', h: 0.431, w: 0.5},
- {c: '1', h: 0.431, w: 0.5},
- {c: '2', h: 0.431, w: 0.5},
- {c: '3', h: 0.431, d: 0.194, w: 0.5},
- {c: '4', h: 0.431, d: 0.194, w: 0.5},
- {c: '5', h: 0.431, d: 0.194, w: 0.5},
- {c: '6', h: 0.644, w: 0.5},
- {c: '7', h: 0.431, d: 0.194, w: 0.5},
- {c: '8', h: 0.644, w: 0.5},
- {c: '9', h: 0.431, d: 0.194, w: 0.5},
- {c: ':', h: 0.106, w: 0.278},
- {c: ';', h: 0.106, d: 0.194, w: 0.278},
- {c: '<', h: 0.539, d: 0.0391, w: 0.778},
- {c: '=', h: 0.75, d: 0.25, w: 0.5, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}},
- {c: '>', h: 0.539, d: 0.0391, w: 0.778},
- {c: '?', h: 0.465, d: -0.0347, w: 0.5},
- // 40 - 4F
- {c: '@', h: 0.694, w: 0.531, ic: 0.0556, krn: {'127': 0.0833}},
- {c: 'A', h: 0.683, w: 0.75, krn: {'127': 0.139}},
- {c: 'B', h: 0.683, w: 0.759, ic: 0.0502, krn: {'127': 0.0833}},
- {c: 'C', h: 0.683, w: 0.715, ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: 'D', h: 0.683, w: 0.828, ic: 0.0278, krn: {'127': 0.0556}},
- {c: 'E', h: 0.683, w: 0.738, ic: 0.0576, krn: {'127': 0.0833}},
- {c: 'F', h: 0.683, w: 0.643, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
- {c: 'G', h: 0.683, w: 0.786, krn: {'127': 0.0833}},
- {c: 'H', h: 0.683, w: 0.831, ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
- {c: 'I', h: 0.683, w: 0.44, ic: 0.0785, krn: {'127': 0.111}},
- {c: 'J', h: 0.683, w: 0.555, ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}},
- {c: 'K', h: 0.683, w: 0.849, ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
- {c: 'L', h: 0.683, w: 0.681, krn: {'127': 0.0278}},
- {c: 'M', h: 0.683, w: 0.97, ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: 'N', h: 0.683, w: 0.803, ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: 'O', h: 0.683, w: 0.763, ic: 0.0278, krn: {'127': 0.0833}},
- // 50 - 5F
- {c: 'P', h: 0.683, w: 0.642, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
- {c: 'Q', h: 0.683, d: 0.194, w: 0.791, krn: {'127': 0.0833}},
- {c: 'R', h: 0.683, w: 0.759, ic: 0.00773, krn: {'127': 0.0833}},
- {c: 'S', h: 0.683, w: 0.613, ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: 'T', h: 0.683, w: 0.584, ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: 'U', h: 0.683, w: 0.683, ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}},
- {c: 'V', h: 0.683, w: 0.583, ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
- {c: 'W', h: 0.683, w: 0.944, ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
- {c: 'X', h: 0.683, w: 0.828, ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: 'Y', h: 0.683, w: 0.581, ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
- {c: 'Z', h: 0.683, w: 0.683, ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
- {c: '[', h: 0.75, w: 0.389},
- {c: '\\', h: 0.694, d: 0.194, w: 0.389},
- {c: ']', h: 0.694, d: 0.194, w: 0.389},
- {c: '^', h: 0.358, d: -0.142, w: 1},
- {c: '_', h: 0.358, d: -0.142, w: 1},
- // 60 - 6F
- {c: '`', h: 0.694, w: 0.417, krn: {'127': 0.111}},
- {c: 'a', h: 0.431, w: 0.529},
- {c: 'b', h: 0.694, w: 0.429},
- {c: 'c', h: 0.431, w: 0.433, krn: {'127': 0.0556}},
- {c: 'd', h: 0.694, w: 0.52, krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}},
- {c: 'e', h: 0.431, w: 0.466, krn: {'127': 0.0556}},
- {c: 'f', h: 0.694, d: 0.194, w: 0.49, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}},
- {c: 'g', h: 0.431, d: 0.194, w: 0.477, ic: 0.0359, krn: {'127': 0.0278}},
- {c: 'h', h: 0.694, w: 0.576, krn: {'127': -0.0278}},
- {c: 'i', h: 0.66, w: 0.345},
- {c: 'j', h: 0.66, d: 0.194, w: 0.412, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}},
- {c: 'k', h: 0.694, w: 0.521, ic: 0.0315},
- {c: 'l', h: 0.694, w: 0.298, ic: 0.0197, krn: {'127': 0.0833}},
- {c: 'm', h: 0.431, w: 0.878},
- {c: 'n', h: 0.431, w: 0.6},
- {c: 'o', h: 0.431, w: 0.485, krn: {'127': 0.0556}},
- // 70 - 7F
- {c: 'p', h: 0.431, d: 0.194, w: 0.503, krn: {'127': 0.0833}},
- {c: 'q', h: 0.431, d: 0.194, w: 0.446, ic: 0.0359, krn: {'127': 0.0833}},
- {c: 'r', h: 0.431, w: 0.451, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
- {c: 's', h: 0.431, w: 0.469, krn: {'127': 0.0556}},
- {c: 't', h: 0.615, w: 0.361, krn: {'127': 0.0833}},
- {c: 'u', h: 0.431, w: 0.572, krn: {'127': 0.0278}},
- {c: 'v', h: 0.431, w: 0.485, ic: 0.0359, krn: {'127': 0.0278}},
- {c: 'w', h: 0.431, w: 0.716, ic: 0.0269, krn: {'127': 0.0833}},
- {c: 'x', h: 0.431, w: 0.572, krn: {'127': 0.0278}},
- {c: 'y', h: 0.431, d: 0.194, w: 0.49, ic: 0.0359, krn: {'127': 0.0556}},
- {c: 'z', h: 0.431, w: 0.465, ic: 0.044, krn: {'127': 0.0556}},
- {c: '{', h: 0.431, w: 0.322, krn: {'127': 0.0278}},
- {c: '|', h: 0.431, d: 0.194, w: 0.384, krn: {'127': 0.0833}},
- {c: '}', h: 0.431, d: 0.194, w: 0.636, krn: {'127': 0.111}},
- {c: '~', h: 0.714, w: 0.5, ic: 0.154},
- {c: 'Ä', h: 0.694, w: 0.278, ic: 0.399}
- ],
-
- cmsy10: [
- // 00 - 0F
- {c: '¡', h: 0.583, d: 0.0833, w: 0.778},
- {c: '¢', h: 0.444, d: -0.0556, w: 0.278},
- {c: '£', h: 0.583, d: 0.0833, w: 0.778},
- {c: '¤', h: 0.465, d: -0.0347, w: 0.5},
- {c: '¥', h: 0.583, d: 0.0833, w: 0.778},
- {c: '¦', h: 0.444, d: -0.0556, w: 0.5},
- {c: '§', h: 0.583, d: 0.0833, w: 0.778},
- {c: '¨', h: 0.583, d: 0.0833, w: 0.778},
- {c: '©', h: 0.583, d: 0.0833, w: 0.778},
- {c: 'ª', h: 0.583, d: 0.0833, w: 0.778},
- {c: '­', h: 0.583, d: 0.0833, w: 0.778},
- {c: '®', h: 0.583, d: 0.0833, w: 0.778},
- {c: '¯', h: 0.583, d: 0.0833, w: 0.778},
- {c: '°', h: 0.694, d: 0.194, w: 1},
- {c: '±', h: 0.444, d: -0.0556, w: 0.5},
- {c: '²', h: 0.444, d: -0.0556, w: 0.5},
- // 10 - 1F
- {c: '³', h: 0.464, d: -0.0363, w: 0.778},
- {c: '´', h: 0.464, d: -0.0363, w: 0.778},
- {c: 'µ', h: 0.636, d: 0.136, w: 0.778},
- {c: '¶', h: 0.636, d: 0.136, w: 0.778},
- {c: '∙', h: 0.636, d: 0.136, w: 0.778},
- {c: '¸', h: 0.636, d: 0.136, w: 0.778},
- {c: '¹', h: 0.636, d: 0.136, w: 0.778},
- {c: 'º', h: 0.636, d: 0.136, w: 0.778},
- {c: '»', h: 0.367, d: -0.133, w: 0.778},
- {c: '¼', h: 0.483, d: -0.0169, w: 0.778},
- {c: '½', h: 0.539, d: 0.0391, w: 0.778},
- {c: '¾', h: 0.539, d: 0.0391, w: 0.778},
- {c: '¿', h: 0.539, d: 0.0391, w: 1},
- {c: 'À', h: 0.539, d: 0.0391, w: 1},
- {c: 'Á', h: 0.539, d: 0.0391, w: 0.778},
- {c: 'Â', h: 0.539, d: 0.0391, w: 0.778},
- // 20 - 2F
- {c: 'Ã', h: 0.367, d: -0.133, w: 1},
- {c: '!', h: 0.367, d: -0.133, w: 1},
- {c: '"', h: 0.694, d: 0.194, w: 0.5},
- {c: '#', h: 0.694, d: 0.194, w: 0.5},
- {c: '$', h: 0.367, d: -0.133, w: 1},
- {c: '%', h: 0.694, d: 0.194, w: 1},
- {c: '&', h: 0.694, d: 0.194, w: 1},
- {c: '\'', h: 0.464, d: -0.0363, w: 0.778},
- {c: '(', h: 0.367, d: -0.133, w: 1},
- {c: ')', h: 0.367, d: -0.133, w: 1},
- {c: '*', h: 0.694, d: 0.194, w: 0.611},
- {c: '+', h: 0.694, d: 0.194, w: 0.611},
- {c: ',', h: 0.367, d: -0.133, w: 1},
- {c: '-', h: 0.694, d: 0.194, w: 1},
- {c: '.', h: 0.694, d: 0.194, w: 1},
- {c: '/', h: 0.431, w: 0.778},
- // 30 - 3F
- {c: '0', h: 0.556, w: 0.275},
- {c: '1', h: 0.431, w: 1},
- {c: '2', h: 0.539, d: 0.0391, w: 0.667},
- {c: '3', h: 0.539, d: 0.0391, w: 0.667},
- {c: '4', h: 0.694, d: 0.194, w: 0.889},
- {c: '5', h: 0.694, d: 0.194, w: 0.889},
- {c: '6', h: 0.694, d: 0.194, w: 0},
- {c: '7', h: 0.367, d: -0.133, w: 0},
- {c: '8', h: 0.694, w: 0.556},
- {c: '9', h: 0.694, w: 0.556},
- {c: ':', h: 0.431, w: 0.667},
- {c: ';', h: 0.75, d: 0.0556, w: 0.5},
- {c: '<', h: 0.694, w: 0.722},
- {c: '=', h: 0.694, w: 0.722},
- {c: '>', h: 0.694, w: 0.778},
- {c: '?', h: 0.694, w: 0.778},
- // 40 - 4F
- {c: '@', h: 0.694, w: 0.611},
- {c: 'A', h: 0.683, w: 0.798, krn: {'48': 0.194}},
- {c: 'B', h: 0.683, w: 0.657, ic: 0.0304, krn: {'48': 0.139}},
- {c: 'C', h: 0.683, w: 0.527, ic: 0.0583, krn: {'48': 0.139}},
- {c: 'D', h: 0.683, w: 0.771, ic: 0.0278, krn: {'48': 0.0833}},
- {c: 'E', h: 0.683, w: 0.528, ic: 0.0894, krn: {'48': 0.111}},
- {c: 'F', h: 0.683, w: 0.719, ic: 0.0993, krn: {'48': 0.111}},
- {c: 'G', h: 0.683, d: 0.0972, w: 0.595, ic: 0.0593, krn: {'48': 0.111}},
- {c: 'H', h: 0.683, w: 0.845, ic: 0.00965, krn: {'48': 0.111}},
- {c: 'I', h: 0.683, w: 0.545, ic: 0.0738, krn: {'48': 0.0278}},
- {c: 'J', h: 0.683, d: 0.0972, w: 0.678, ic: 0.185, krn: {'48': 0.167}},
- {c: 'K', h: 0.683, w: 0.762, ic: 0.0144, krn: {'48': 0.0556}},
- {c: 'L', h: 0.683, w: 0.69, krn: {'48': 0.139}},
- {c: 'M', h: 0.683, w: 1.2, krn: {'48': 0.139}},
- {c: 'N', h: 0.683, w: 0.82, ic: 0.147, krn: {'48': 0.0833}},
- {c: 'O', h: 0.683, w: 0.796, ic: 0.0278, krn: {'48': 0.111}},
- // 50 - 5F
- {c: 'P', h: 0.683, w: 0.696, ic: 0.0822, krn: {'48': 0.0833}},
- {c: 'Q', h: 0.683, d: 0.0972, w: 0.817, krn: {'48': 0.111}},
- {c: 'R', h: 0.683, w: 0.848, krn: {'48': 0.0833}},
- {c: 'S', h: 0.683, w: 0.606, ic: 0.075, krn: {'48': 0.139}},
- {c: 'T', h: 0.683, w: 0.545, ic: 0.254, krn: {'48': 0.0278}},
- {c: 'U', h: 0.683, w: 0.626, ic: 0.0993, krn: {'48': 0.0833}},
- {c: 'V', h: 0.683, w: 0.613, ic: 0.0822, krn: {'48': 0.0278}},
- {c: 'W', h: 0.683, w: 0.988, ic: 0.0822, krn: {'48': 0.0833}},
- {c: 'X', h: 0.683, w: 0.713, ic: 0.146, krn: {'48': 0.139}},
- {c: 'Y', h: 0.683, d: 0.0972, w: 0.668, ic: 0.0822, krn: {'48': 0.0833}},
- {c: 'Z', h: 0.683, w: 0.725, ic: 0.0794, krn: {'48': 0.139}},
- {c: '[', h: 0.556, w: 0.667},
- {c: '\\', h: 0.556, w: 0.667},
- {c: ']', h: 0.556, w: 0.667},
- {c: '^', h: 0.556, w: 0.667},
- {c: '_', h: 0.556, w: 0.667},
- // 60 - 6F
- {c: '`', h: 0.694, w: 0.611},
- {c: 'a', h: 0.694, w: 0.611},
- {c: 'b', h: 0.75, d: 0.25, w: 0.444},
- {c: 'c', h: 0.75, d: 0.25, w: 0.444},
- {c: 'd', h: 0.75, d: 0.25, w: 0.444},
- {c: 'e', h: 0.75, d: 0.25, w: 0.444},
- {c: 'f', h: 0.75, d: 0.25, w: 0.5},
- {c: 'g', h: 0.75, d: 0.25, w: 0.5},
- {c: 'h', h: 0.75, d: 0.25, w: 0.389},
- {c: 'i', h: 0.75, d: 0.25, w: 0.389},
- {c: 'j', h: 0.75, d: 0.25, w: 0.278},
- {c: 'k', h: 0.75, d: 0.25, w: 0.5},
- {c: 'l', h: 0.75, d: 0.25, w: 0.5},
- {c: 'm', h: 0.75, d: 0.25, w: 0.611},
- {c: 'n', h: 0.75, d: 0.25, w: 0.5},
- {c: 'o', h: 0.694, d: 0.194, w: 0.278},
- // 70 - 7F
- {c: 'p', h: 0.04, d: 0.96, w: 0.833},
- {c: 'q', h: 0.683, w: 0.75},
- {c: 'r', h: 0.683, w: 0.833},
- {c: 's', h: 0.694, d: 0.194, w: 0.417, ic: 0.111},
- {c: 't', h: 0.556, w: 0.667},
- {c: 'u', h: 0.556, w: 0.667},
- {c: 'v', h: 0.636, d: 0.136, w: 0.778},
- {c: 'w', h: 0.636, d: 0.136, w: 0.778},
- {c: 'x', h: 0.694, d: 0.194, w: 0.444},
- {c: 'y', h: 0.694, d: 0.194, w: 0.444},
- {c: 'z', h: 0.694, d: 0.194, w: 0.444},
- {c: '{', h: 0.694, d: 0.194, w: 0.611},
- {c: '|', h: 0.694, d: 0.13, w: 0.778},
- {c: '}', h: 0.694, d: 0.13, w: 0.778},
- {c: '~', h: 0.694, d: 0.13, w: 0.778},
- {c: 'Ä', h: 0.694, d: 0.13, w: 0.778}
- ],
-
- cmex10: [
- // 00 - 0F
- {c: '¡', h: 0.04, d: 1.16, w: 0.458, n: 16},
- {c: '¢', h: 0.04, d: 1.16, w: 0.458, n: 17},
- {c: '£', h: 0.04, d: 1.16, w: 0.417, n: 104},
- {c: '¤', h: 0.04, d: 1.16, w: 0.417, n: 105},
- {c: '¥', h: 0.04, d: 1.16, w: 0.472, n: 106},
- {c: '¦', h: 0.04, d: 1.16, w: 0.472, n: 107},
- {c: '§', h: 0.04, d: 1.16, w: 0.472, n: 108},
- {c: '¨', h: 0.04, d: 1.16, w: 0.472, n: 109},
- {c: '©', h: 0.04, d: 1.16, w: 0.583, n: 110},
- {c: 'ª', h: 0.04, d: 1.16, w: 0.583, n: 111},
- {c: '­', h: 0.04, d: 1.16, w: 0.472, n: 68},
- {c: '®', h: 0.04, d: 1.16, w: 0.472, n: 69},
- {c: '¯', d: 0.6, w: 0.333, delim: {rep: 12}},
- {c: '°', d: 0.6, w: 0.556, delim: {rep: 13}},
- {c: '±', h: 0.04, d: 1.16, w: 0.578, n: 46},
- {c: '²', h: 0.04, d: 1.16, w: 0.578, n: 47},
- // 10 - 1F
- {c: '³', h: 0.04, d: 1.76, w: 0.597, n: 18},
- {c: '´', h: 0.04, d: 1.76, w: 0.597, n: 19},
- {c: 'µ', h: 0.04, d: 2.36, w: 0.736, n: 32},
- {c: '¶', h: 0.04, d: 2.36, w: 0.736, n: 33},
- {c: '∙', h: 0.04, d: 2.36, w: 0.528, n: 34},
- {c: '¸', h: 0.04, d: 2.36, w: 0.528, n: 35},
- {c: '¹', h: 0.04, d: 2.36, w: 0.583, n: 36},
- {c: 'º', h: 0.04, d: 2.36, w: 0.583, n: 37},
- {c: '»', h: 0.04, d: 2.36, w: 0.583, n: 38},
- {c: '¼', h: 0.04, d: 2.36, w: 0.583, n: 39},
- {c: '½', h: 0.04, d: 2.36, w: 0.75, n: 40},
- {c: '¾', h: 0.04, d: 2.36, w: 0.75, n: 41},
- {c: '¿', h: 0.04, d: 2.36, w: 0.75, n: 42},
- {c: 'À', h: 0.04, d: 2.36, w: 0.75, n: 43},
- {c: 'Á', h: 0.04, d: 2.36, w: 1.04, n: 44},
- {c: 'Â', h: 0.04, d: 2.36, w: 1.04, n: 45},
- // 20 - 2F
- {c: 'Ã', h: 0.04, d: 2.96, w: 0.792, n: 48},
- {c: '!', h: 0.04, d: 2.96, w: 0.792, n: 49},
- {c: '"', h: 0.04, d: 2.96, w: 0.583, n: 50},
- {c: '#', h: 0.04, d: 2.96, w: 0.583, n: 51},
- {c: '$', h: 0.04, d: 2.96, w: 0.639, n: 52},
- {c: '%', h: 0.04, d: 2.96, w: 0.639, n: 53},
- {c: '&', h: 0.04, d: 2.96, w: 0.639, n: 54},
- {c: '\'', h: 0.04, d: 2.96, w: 0.639, n: 55},
- {c: '(', h: 0.04, d: 2.96, w: 0.806, n: 56},
- {c: ')', h: 0.04, d: 2.96, w: 0.806, n: 57},
- {c: '*', h: 0.04, d: 2.96, w: 0.806},
- {c: '+', h: 0.04, d: 2.96, w: 0.806},
- {c: ',', h: 0.04, d: 2.96, w: 1.28},
- {c: '-', h: 0.04, d: 2.96, w: 1.28},
- {c: '.', h: 0.04, d: 1.76, w: 0.811, n: 30},
- {c: '/', h: 0.04, d: 1.76, w: 0.811, n: 31},
- // 30 - 3F
- {c: '0', h: 0.04, d: 1.76, w: 0.875, delim: {top: 48, bot: 64, rep: 66}},
- {c: '1', h: 0.04, d: 1.76, w: 0.875, delim: {top: 49, bot: 65, rep: 67}},
- {c: '2', h: 0.04, d: 1.76, w: 0.667, delim: {top: 50, bot: 52, rep: 54}},
- {c: '3', h: 0.04, d: 1.76, w: 0.667, delim: {top: 51, bot: 53, rep: 55}},
- {c: '4', h: 0.04, d: 1.76, w: 0.667, delim: {bot: 52, rep: 54}},
- {c: '5', h: 0.04, d: 1.76, w: 0.667, delim: {bot: 53, rep: 55}},
- {c: '6', d: 0.6, w: 0.667, delim: {top: 50, rep: 54}},
- {c: '7', d: 0.6, w: 0.667, delim: {top: 51, rep: 55}},
- {c: '8', d: 0.9, w: 0.889, delim: {top: 56, mid: 60, bot: 58, rep: 62}},
- {c: '9', d: 0.9, w: 0.889, delim: {top: 57, mid: 61, bot: 59, rep: 62}},
- {c: ':', d: 0.9, w: 0.889, delim: {top: 56, bot: 58, rep: 62}},
- {c: ';', d: 0.9, w: 0.889, delim: {top: 57, bot: 59, rep: 62}},
- {c: '<', d: 1.8, w: 0.889, delim: {rep: 63}},
- {c: '=', d: 1.8, w: 0.889, delim: {rep: 119}},
- {c: '>', d: 0.3, w: 0.889, delim: {rep: 62}},
- {c: '?', d: 0.6, w: 0.667, delim: {top: 120, bot: 121, rep: 63}},
- // 40 - 4F
- {c: '@', h: 0.04, d: 1.76, w: 0.875, delim: {top: 56, bot: 59, rep: 62}},
- {c: 'A', h: 0.04, d: 1.76, w: 0.875, delim: {top: 57, bot: 58, rep: 62}},
- {c: 'B', d: 0.6, w: 0.875, delim: {rep: 66}},
- {c: 'C', d: 0.6, w: 0.875, delim: {rep: 67}},
- {c: 'D', h: 0.04, d: 1.76, w: 0.611, n: 28},
- {c: 'E', h: 0.04, d: 1.76, w: 0.611, n: 29},
- {c: 'F', d: 1, w: 0.833, n: 71},
- {c: 'G', h: 0.1, d: 1.5, w: 1.11},
- {c: 'H', d: 1.11, w: 0.472, ic: 0.194, n: 73},
- {c: 'I', d: 2.22, w: 0.556, ic: 0.444},
- {c: 'J', d: 1, w: 1.11, n: 75},
- {c: 'K', h: 0.1, d: 1.5, w: 1.51},
- {c: 'L', d: 1, w: 1.11, n: 77},
- {c: 'M', h: 0.1, d: 1.5, w: 1.51},
- {c: 'N', d: 1, w: 1.11, n: 79},
- {c: 'O', h: 0.1, d: 1.5, w: 1.51},
- // 50 - 5F
- {c: 'P', d: 1, w: 1.06, n: 88},
- {c: 'Q', d: 1, w: 0.944, n: 89},
- {c: 'R', d: 1.11, w: 0.472, ic: 0.194, n: 90},
- {c: 'S', d: 1, w: 0.833, n: 91},
- {c: 'T', d: 1, w: 0.833, n: 92},
- {c: 'U', d: 1, w: 0.833, n: 93},
- {c: 'V', d: 1, w: 0.833, n: 94},
- {c: 'W', d: 1, w: 0.833, n: 95},
- {c: 'X', h: 0.1, d: 1.5, w: 1.44},
- {c: 'Y', h: 0.1, d: 1.5, w: 1.28},
- {c: 'Z', d: 2.22, w: 0.556, ic: 0.444},
- {c: '[', h: 0.1, d: 1.5, w: 1.11},
- {c: '\\', h: 0.1, d: 1.5, w: 1.11},
- {c: ']', h: 0.1, d: 1.5, w: 1.11},
- {c: '^', h: 0.1, d: 1.5, w: 1.11},
- {c: '_', h: 0.1, d: 1.5, w: 1.11},
- // 60 - 6F
- {c: '`', d: 1, w: 0.944, n: 97},
- {c: 'a', h: 0.1, d: 1.5, w: 1.28},
- {c: 'b', h: 0.722, w: 0.556, n: 99},
- {c: 'c', h: 0.75, w: 1, n: 100},
- {c: 'd', h: 0.75, w: 1.44},
- {c: 'e', h: 0.722, w: 0.556, n: 102},
- {c: 'f', h: 0.75, w: 1, n: 103},
- {c: 'g', h: 0.75, w: 1.44},
- {c: 'h', h: 0.04, d: 1.76, w: 0.472, n: 20},
- {c: 'i', h: 0.04, d: 1.76, w: 0.472, n: 21},
- {c: 'j', h: 0.04, d: 1.76, w: 0.528, n: 22},
- {c: 'k', h: 0.04, d: 1.76, w: 0.528, n: 23},
- {c: 'l', h: 0.04, d: 1.76, w: 0.528, n: 24},
- {c: 'm', h: 0.04, d: 1.76, w: 0.528, n: 25},
- {c: 'n', h: 0.04, d: 1.76, w: 0.667, n: 26},
- {c: 'o', h: 0.04, d: 1.76, w: 0.667, n: 27},
- // 70 - 7F
- {c: 'p', h: 0.04, d: 1.16, w: 1, n: 113},
- {c: 'q', h: 0.04, d: 1.76, w: 1, n: 114},
- {c: 'r', h: 0.04, d: 2.36, w: 1, n: 115},
- {c: 's', h: 0.04, d: 2.96, w: 1, n: 116},
- {c: 't', d: 1.8, w: 1.06, delim: {top: 118, bot: 116, rep: 117}},
- {c: 'u', d: 0.6, w: 1.06},
- {c: 'v', h: 0.04, d: 0.56, w: 1.06},
- {c: 'w', d: 0.6, w: 0.778, delim: {top: 126, bot: 127, rep: 119}},
- {c: 'x', d: 0.6, w: 0.667, delim: {top: 120, rep: 63}},
- {c: 'y', d: 0.6, w: 0.667, delim: {bot: 121, rep: 63}},
- {c: 'z', h: 0.12, w: 0.45},
- {c: '{', h: 0.12, w: 0.45},
- {c: '|', h: 0.12, w: 0.45},
- {c: '}', h: 0.12, w: 0.45},
- {c: '~', d: 0.6, w: 0.778, delim: {top: 126, rep: 119}},
- {c: 'Ä', d: 0.6, w: 0.778, delim: {bot: 127, rep: 119}}
- ],
-
- cmti10: [
- // 00 - 0F
- {c: '¡', h: 0.683, w: 0.627, ic: 0.133},
- {c: '¢', h: 0.683, w: 0.818},
- {c: '£', h: 0.683, w: 0.767, ic: 0.094},
- {c: '¤', h: 0.683, w: 0.692},
- {c: '¥', h: 0.683, w: 0.664, ic: 0.153},
- {c: '¦', h: 0.683, w: 0.743, ic: 0.164},
- {c: '§', h: 0.683, w: 0.716, ic: 0.12},
- {c: '¨', h: 0.683, w: 0.767, ic: 0.111},
- {c: '©', h: 0.683, w: 0.716, ic: 0.0599},
- {c: 'ª', h: 0.683, w: 0.767, ic: 0.111},
- {c: '­', h: 0.683, w: 0.716, ic: 0.103},
- {c: '®', h: 0.694, d: 0.194, w: 0.613, ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}},
- {c: '¯', h: 0.694, d: 0.194, w: 0.562, ic: 0.103},
- {c: '°', h: 0.694, d: 0.194, w: 0.588, ic: 0.103},
- {c: '±', h: 0.694, d: 0.194, w: 0.882, ic: 0.103},
- {c: '²', h: 0.694, d: 0.194, w: 0.894, ic: 0.103},
- // 10 - 1F
- {c: '³', h: 0.431, w: 0.307, ic: 0.0767},
- {c: '´', h: 0.431, d: 0.194, w: 0.332, ic: 0.0374},
- {c: 'µ', h: 0.694, w: 0.511},
- {c: '¶', h: 0.694, w: 0.511, ic: 0.0969},
- {c: '∙', h: 0.628, w: 0.511, ic: 0.083},
- {c: '¸', h: 0.694, w: 0.511, ic: 0.108},
- {c: '¹', h: 0.562, w: 0.511, ic: 0.103},
- {c: 'º', h: 0.694, w: 0.831},
- {c: '»', d: 0.17, w: 0.46},
- {c: '¼', h: 0.694, d: 0.194, w: 0.537, ic: 0.105},
- {c: '½', h: 0.431, w: 0.716, ic: 0.0751},
- {c: '¾', h: 0.431, w: 0.716, ic: 0.0751},
- {c: '¿', h: 0.528, d: 0.0972, w: 0.511, ic: 0.0919},
- {c: 'À', h: 0.683, w: 0.883, ic: 0.12},
- {c: 'Á', h: 0.683, w: 0.985, ic: 0.12},
- {c: 'Â', h: 0.732, d: 0.0486, w: 0.767, ic: 0.094},
- // 20 - 2F
- {c: 'Ã', h: 0.431, w: 0.256, krn: {'108': -0.256, '76': -0.321}},
- {c: '!', h: 0.694, w: 0.307, ic: 0.124, lig: {'96': 60}},
- {c: '"', h: 0.694, w: 0.514, ic: 0.0696},
- {c: '#', h: 0.694, d: 0.194, w: 0.818, ic: 0.0662},
- {c: '$', h: 0.694, w: 0.769},
- {c: '%', h: 0.75, d: 0.0556, w: 0.818, ic: 0.136},
- {c: '&', h: 0.694, w: 0.767, ic: 0.0969},
- {c: '\'', h: 0.694, w: 0.307, ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}},
- {c: '(', h: 0.75, d: 0.25, w: 0.409, ic: 0.162},
- {c: ')', h: 0.75, d: 0.25, w: 0.409, ic: 0.0369},
- {c: '*', h: 0.75, w: 0.511, ic: 0.149},
- {c: '+', h: 0.562, d: 0.0567, w: 0.767, ic: 0.0369},
- {c: ',', h: 0.106, d: 0.194, w: 0.307},
- {c: '-', h: 0.431, w: 0.358, ic: 0.0283, lig: {'45': 123}},
- {c: '.', h: 0.106, w: 0.307},
- {c: '/', h: 0.75, d: 0.25, w: 0.511, ic: 0.162},
- // 30 - 3F
- {c: '0', h: 0.644, w: 0.511, ic: 0.136},
- {c: '1', h: 0.644, w: 0.511, ic: 0.136},
- {c: '2', h: 0.644, w: 0.511, ic: 0.136},
- {c: '3', h: 0.644, w: 0.511, ic: 0.136},
- {c: '4', h: 0.644, d: 0.194, w: 0.511, ic: 0.136},
- {c: '5', h: 0.644, w: 0.511, ic: 0.136},
- {c: '6', h: 0.644, w: 0.511, ic: 0.136},
- {c: '7', h: 0.644, d: 0.194, w: 0.511, ic: 0.136},
- {c: '8', h: 0.644, w: 0.511, ic: 0.136},
- {c: '9', h: 0.644, w: 0.511, ic: 0.136},
- {c: ':', h: 0.431, w: 0.307, ic: 0.0582},
- {c: ';', h: 0.431, d: 0.194, w: 0.307, ic: 0.0582},
- {c: '<', h: 0.5, d: 0.194, w: 0.307, ic: 0.0756},
- {c: '=', h: 0.367, d: -0.133, w: 0.767, ic: 0.0662},
- {c: '>', h: 0.5, d: 0.194, w: 0.511},
- {c: '?', h: 0.694, w: 0.511, ic: 0.122, lig: {'96': 62}},
- // 40 - 4F
- {c: '@', h: 0.694, w: 0.767, ic: 0.096},
- {c: 'A', h: 0.683, w: 0.743, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'B', h: 0.683, w: 0.704, ic: 0.103},
- {c: 'C', h: 0.683, w: 0.716, ic: 0.145},
- {c: 'D', h: 0.683, w: 0.755, ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
- {c: 'E', h: 0.683, w: 0.678, ic: 0.12},
- {c: 'F', h: 0.683, w: 0.653, ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- {c: 'G', h: 0.683, w: 0.774, ic: 0.0872},
- {c: 'H', h: 0.683, w: 0.743, ic: 0.164},
- {c: 'I', h: 0.683, w: 0.386, ic: 0.158},
- {c: 'J', h: 0.683, w: 0.525, ic: 0.14},
- {c: 'K', h: 0.683, w: 0.769, ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- {c: 'L', h: 0.683, w: 0.627, krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'M', h: 0.683, w: 0.897, ic: 0.164},
- {c: 'N', h: 0.683, w: 0.743, ic: 0.164},
- {c: 'O', h: 0.683, w: 0.767, ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
- // 50 - 5F
- {c: 'P', h: 0.683, w: 0.678, ic: 0.103, krn: {'65': -0.0767}},
- {c: 'Q', h: 0.683, d: 0.194, w: 0.767, ic: 0.094},
- {c: 'R', h: 0.683, w: 0.729, ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'S', h: 0.683, w: 0.562, ic: 0.12},
- {c: 'T', h: 0.683, w: 0.716, ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
- {c: 'U', h: 0.683, w: 0.743, ic: 0.164},
- {c: 'V', h: 0.683, w: 0.743, ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- {c: 'W', h: 0.683, w: 0.999, ic: 0.184, krn: {'65': -0.0767}},
- {c: 'X', h: 0.683, w: 0.743, ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
- {c: 'Y', h: 0.683, w: 0.743, ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
- {c: 'Z', h: 0.683, w: 0.613, ic: 0.145},
- {c: '[', h: 0.75, d: 0.25, w: 0.307, ic: 0.188},
- {c: '\\', h: 0.694, w: 0.514, ic: 0.169},
- {c: ']', h: 0.75, d: 0.25, w: 0.307, ic: 0.105},
- {c: '^', h: 0.694, w: 0.511, ic: 0.0665},
- {c: '_', h: 0.668, w: 0.307, ic: 0.118},
- // 60 - 6F
- {c: '`', h: 0.694, w: 0.307, ic: 0.124, lig: {'96': 92}},
- {c: 'a', h: 0.431, w: 0.511, ic: 0.0767},
- {c: 'b', h: 0.694, w: 0.46, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'c', h: 0.431, w: 0.46, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'd', h: 0.694, w: 0.511, ic: 0.103, krn: {'108': 0.0511}},
- {c: 'e', h: 0.431, w: 0.46, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'f', h: 0.694, d: 0.194, w: 0.307, ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}},
- {c: 'g', h: 0.431, d: 0.194, w: 0.46, ic: 0.0885},
- {c: 'h', h: 0.694, w: 0.511, ic: 0.0767},
- {c: 'i', h: 0.655, w: 0.307, ic: 0.102},
- {c: 'j', h: 0.655, d: 0.194, w: 0.307, ic: 0.145},
- {c: 'k', h: 0.694, w: 0.46, ic: 0.108},
- {c: 'l', h: 0.694, w: 0.256, ic: 0.103, krn: {'108': 0.0511}},
- {c: 'm', h: 0.431, w: 0.818, ic: 0.0767},
- {c: 'n', h: 0.431, w: 0.562, ic: 0.0767, krn: {'39': -0.102}},
- {c: 'o', h: 0.431, w: 0.511, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- // 70 - 7F
- {c: 'p', h: 0.431, d: 0.194, w: 0.511, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 'q', h: 0.431, d: 0.194, w: 0.46, ic: 0.0885},
- {c: 'r', h: 0.431, w: 0.422, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
- {c: 's', h: 0.431, w: 0.409, ic: 0.0821},
- {c: 't', h: 0.615, w: 0.332, ic: 0.0949},
- {c: 'u', h: 0.431, w: 0.537, ic: 0.0767},
- {c: 'v', h: 0.431, w: 0.46, ic: 0.108},
- {c: 'w', h: 0.431, w: 0.664, ic: 0.108, krn: {'108': 0.0511}},
- {c: 'x', h: 0.431, w: 0.464, ic: 0.12},
- {c: 'y', h: 0.431, d: 0.194, w: 0.486, ic: 0.0885},
- {c: 'z', h: 0.431, w: 0.409, ic: 0.123},
- {c: '{', h: 0.431, w: 0.511, ic: 0.0921, lig: {'45': 124}},
- {c: '|', h: 0.431, w: 1.02, ic: 0.0921},
- {c: '}', h: 0.694, w: 0.511, ic: 0.122},
- {c: '~', h: 0.668, w: 0.511, ic: 0.116},
- {c: 'Ä', h: 0.668, w: 0.511, ic: 0.105}
- ],
-
- cmbx10: [
- // 00 - 0F
- {c: '¡', h: 0.686, w: 0.692},
- {c: '¢', h: 0.686, w: 0.958},
- {c: '£', h: 0.686, w: 0.894},
- {c: '¤', h: 0.686, w: 0.806},
- {c: '¥', h: 0.686, w: 0.767},
- {c: '¦', h: 0.686, w: 0.9},
- {c: '§', h: 0.686, w: 0.831},
- {c: '¨', h: 0.686, w: 0.894},
- {c: '©', h: 0.686, w: 0.831},
- {c: 'ª', h: 0.686, w: 0.894},
- {c: '­', h: 0.686, w: 0.831},
- {c: '®', h: 0.694, w: 0.671, ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 14, '108': 15}},
- {c: '¯', h: 0.694, w: 0.639},
- {c: '°', h: 0.694, w: 0.639},
- {c: '±', h: 0.694, w: 0.958},
- {c: '²', h: 0.694, w: 0.958},
- // 10 - 1F
- {c: '³', h: 0.444, w: 0.319},
- {c: '´', h: 0.444, d: 0.194, w: 0.351},
- {c: 'µ', h: 0.694, w: 0.575},
- {c: '¶', h: 0.694, w: 0.575},
- {c: '∙', h: 0.632, w: 0.575},
- {c: '¸', h: 0.694, w: 0.575},
- {c: '¹', h: 0.596, w: 0.575},
- {c: 'º', h: 0.694, w: 0.869},
- {c: '»', d: 0.17, w: 0.511},
- {c: '¼', h: 0.694, w: 0.597},
- {c: '½', h: 0.444, w: 0.831},
- {c: '¾', h: 0.444, w: 0.894},
- {c: '¿', h: 0.542, d: 0.0972, w: 0.575},
- {c: 'À', h: 0.686, w: 1.04},
- {c: 'Á', h: 0.686, w: 1.17},
- {c: 'Â', h: 0.735, d: 0.0486, w: 0.894},
- // 20 - 2F
- {c: 'Ã', h: 0.444, w: 0.319, krn: {'108': -0.319, '76': -0.378}},
- {c: '!', h: 0.694, w: 0.35, lig: {'96': 60}},
- {c: '"', h: 0.694, w: 0.603},
- {c: '#', h: 0.694, d: 0.194, w: 0.958},
- {c: '$', h: 0.75, d: 0.0556, w: 0.575},
- {c: '%', h: 0.75, d: 0.0556, w: 0.958},
- {c: '&', h: 0.694, w: 0.894},
- {c: '\'', h: 0.694, w: 0.319, krn: {'63': 0.128, '33': 0.128}, lig: {'39': 34}},
- {c: '(', h: 0.75, d: 0.25, w: 0.447},
- {c: ')', h: 0.75, d: 0.25, w: 0.447},
- {c: '*', h: 0.75, w: 0.575},
- {c: '+', h: 0.633, d: 0.133, w: 0.894},
- {c: ',', h: 0.156, d: 0.194, w: 0.319},
- {c: '-', h: 0.444, w: 0.383, lig: {'45': 123}},
- {c: '.', h: 0.156, w: 0.319},
- {c: '/', h: 0.75, d: 0.25, w: 0.575},
- // 30 - 3F
- {c: '0', h: 0.644, w: 0.575},
- {c: '1', h: 0.644, w: 0.575},
- {c: '2', h: 0.644, w: 0.575},
- {c: '3', h: 0.644, w: 0.575},
- {c: '4', h: 0.644, w: 0.575},
- {c: '5', h: 0.644, w: 0.575},
- {c: '6', h: 0.644, w: 0.575},
- {c: '7', h: 0.644, w: 0.575},
- {c: '8', h: 0.644, w: 0.575},
- {c: '9', h: 0.644, w: 0.575},
- {c: ':', h: 0.444, w: 0.319},
- {c: ';', h: 0.444, d: 0.194, w: 0.319},
- {c: '<', h: 0.5, d: 0.194, w: 0.35},
- {c: '=', h: 0.391, d: -0.109, w: 0.894},
- {c: '>', h: 0.5, d: 0.194, w: 0.543},
- {c: '?', h: 0.694, w: 0.543, lig: {'96': 62}},
- // 40 - 4F
- {c: '@', h: 0.694, w: 0.894},
- {c: 'A', h: 0.686, w: 0.869, krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}},
- {c: 'B', h: 0.686, w: 0.818},
- {c: 'C', h: 0.686, w: 0.831},
- {c: 'D', h: 0.686, w: 0.882, krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}},
- {c: 'E', h: 0.686, w: 0.756},
- {c: 'F', h: 0.686, w: 0.724, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
- {c: 'G', h: 0.686, w: 0.904},
- {c: 'H', h: 0.686, w: 0.9},
- {c: 'I', h: 0.686, w: 0.436, krn: {'73': 0.0319}},
- {c: 'J', h: 0.686, w: 0.594},
- {c: 'K', h: 0.686, w: 0.901, krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
- {c: 'L', h: 0.686, w: 0.692, krn: {'84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}},
- {c: 'M', h: 0.686, w: 1.09},
- {c: 'N', h: 0.686, w: 0.9},
- {c: 'O', h: 0.686, w: 0.864, krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}},
- // 50 - 5F
- {c: 'P', h: 0.686, w: 0.786, krn: {'65': -0.0958, '111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}},
- {c: 'Q', h: 0.686, d: 0.194, w: 0.864},
- {c: 'R', h: 0.686, w: 0.862, krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}},
- {c: 'S', h: 0.686, w: 0.639},
- {c: 'T', h: 0.686, w: 0.8, krn: {'121': -0.0319, '101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}},
- {c: 'U', h: 0.686, w: 0.885},
- {c: 'V', h: 0.686, w: 0.869, ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
- {c: 'W', h: 0.686, w: 1.19, ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
- {c: 'X', h: 0.686, w: 0.869, krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
- {c: 'Y', h: 0.686, w: 0.869, ic: 0.0287, krn: {'101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}},
- {c: 'Z', h: 0.686, w: 0.703},
- {c: '[', h: 0.75, d: 0.25, w: 0.319},
- {c: '\\', h: 0.694, w: 0.603},
- {c: ']', h: 0.75, d: 0.25, w: 0.319},
- {c: '^', h: 0.694, w: 0.575},
- {c: '_', h: 0.694, w: 0.319},
- // 60 - 6F
- {c: '`', h: 0.694, w: 0.319, lig: {'96': 92}},
- {c: 'a', h: 0.444, w: 0.559, krn: {'118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
- {c: 'b', h: 0.694, w: 0.639, krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
- {c: 'c', h: 0.444, w: 0.511, krn: {'104': -0.0319, '107': -0.0319}},
- {c: 'd', h: 0.694, w: 0.639},
- {c: 'e', h: 0.444, w: 0.527},
- {c: 'f', h: 0.694, w: 0.351, ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 12, '102': 11, '108': 13}},
- {c: 'g', h: 0.444, d: 0.194, w: 0.575, ic: 0.016, krn: {'106': 0.0319}},
- {c: 'h', h: 0.694, w: 0.639, krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}},
- {c: 'i', h: 0.694, w: 0.319},
- {c: 'j', h: 0.694, d: 0.194, w: 0.351},
- {c: 'k', h: 0.694, w: 0.607, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}},
- {c: 'l', h: 0.694, w: 0.319},
- {c: 'm', h: 0.444, w: 0.958, krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}},
- {c: 'n', h: 0.444, w: 0.639, krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}},
- {c: 'o', h: 0.444, w: 0.575, krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
- // 70 - 7F
- {c: 'p', h: 0.444, d: 0.194, w: 0.639, krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
- {c: 'q', h: 0.444, d: 0.194, w: 0.607},
- {c: 'r', h: 0.444, w: 0.474},
- {c: 's', h: 0.444, w: 0.454},
- {c: 't', h: 0.635, w: 0.447, krn: {'121': -0.0319, '119': -0.0319}},
- {c: 'u', h: 0.444, w: 0.639, krn: {'119': -0.0319}},
- {c: 'v', h: 0.444, w: 0.607, ic: 0.016, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}},
- {c: 'w', h: 0.444, w: 0.831, ic: 0.016, krn: {'101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}},
- {c: 'x', h: 0.444, w: 0.607},
- {c: 'y', h: 0.444, d: 0.194, w: 0.607, ic: 0.016, krn: {'111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}},
- {c: 'z', h: 0.444, w: 0.511},
- {c: '{', h: 0.444, w: 0.575, ic: 0.0319, lig: {'45': 124}},
- {c: '|', h: 0.444, w: 1.15, ic: 0.0319},
- {c: '}', h: 0.694, w: 0.575},
- {c: '~', h: 0.694, w: 0.575},
- {c: 'Ä', h: 0.694, w: 0.575}
- ]
-};
-
-/***************************************************************************/
-
-/*
- * Implement image-based fonts for fallback method
- */
-jsMath.Img = {
-
- // font sizes available
- fonts: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249, 298, 358, 430],
-
- // em widths for the various font size directories
- w: {'50': 6.9, '60': 8.3, '70': 9.7, '85': 11.8, '100': 13.9,
- '120': 16.7, '144': 20.0, '173': 24.0, '207': 28.8, '249': 34.6,
- '298': 41.4, '358': 49.8, '430': 59.8},
-
- // index of best font size in the fonts list
- best: 4,
-
- // fonts to update (see UpdateFonts below)
- update: {},
-
- // factor by which to shrink images (for better printing)
- factor: 1,
-
- // image fonts are loaded
- loaded: 0,
-
- // add characters to be drawn using images
- SetFont: function (change) {
- for (var font in change) {
- if (!this.update[font]) {this.update[font] = []}
- this.update[font] = this.update[font].concat(change[font]);
- }
- },
-
- /*
- * Called by the exta-font definition files to add an image font
- * into the mix
- */
- AddFont: function (size,def) {
- if (!jsMath.Img[size]) {jsMath.Img[size] = {}};
- jsMath.Add(jsMath.Img[size],def);
- },
-
- /*
- * Update font(s) to use image data rather than native fonts
- * It looks in the jsMath.Img.update array to find the names
- * of the fonts to udpate, and the arrays of character codes
- * to set (or 'all' to change every character);
- */
- UpdateFonts: function () {
- var change = this.update; if (!this.loaded) return;
- var best = this[jsMath.Img.fonts[this.best]];
- for (var font in change) {
- for (var i = 0; i < change[font].length; i++) {
- var c = change[font][i];
- if (c == 'all') {for (c in jsMath.TeX[font]) {jsMath.TeX[font][c].img = {}}}
- else {jsMath.TeX[font][c].img = {}}
- }
- }
- this.update = {};
- },
-
- /*
- * Find the font size that best fits our current font
- * (this is the directory name for the img files used
- * in some fallback modes).
- */
- BestSize: function () {
- var w = jsMath.em * this.factor;
- var m = this.w[this.fonts[0]];
- for (var i = 1; i < this.fonts.length; i++) {
- if (w < (this.w[this.fonts[i]] + 2*m) / 3) {return i-1}
- m = this.w[this.fonts[i]];
- }
- return i-1;
- },
-
- /*
- * Get the scaling factor for the image fonts
- */
- Scale: function () {
- if (!this.loaded) return;
- this.best = this.BestSize();
- this.em = jsMath.Img.w[this.fonts[this.best]];
- this.scale = (jsMath.em/this.em);
- if (Math.abs(this.scale - 1) < .12) {this.scale = 1}
- },
-
- /*
- * Get URL to directory for given font and size, based on the
- * user's alpha/plain setting
- */
- URL: function (name,size,C) {
- var type = (jsMath.Controls.cookie.alpha) ? '/alpha/': '/plain/';
- if (C == null) {C = "def.js"} else {C = 'char'+C+'.png'}
- if (size != "") {size += '/'}
- return this.root+name+type+size+C;
- },
-
- /*
- * Laod the data for an image font
- */
- LoadFont: function (name) {
- if (jsMath.Controls.cookie.print) {
- jsMath.Controls.cookie.print = 0;
- var button = jsMath.Element("jsMath");
- if (button) {button.style.display = "none"}
- this.factor *= 3;
- if (window.location.protocol != 'file:') {jsMath.Controls.SetCookie(0)}
- if (jsMath.Browser.alphaPrintBug) {jsMath.Controls.cookie.alpha = 0}
- }
- document.writeln('<SCRIPT SRC="'+this.URL(name,"")+'"></SCRIPT>');
- this.loaded = 1;
- }
-
-};
-
-/***************************************************************************/
-
-/*
- * jsMath.HTML handles creation of most of the HTML needed for
- * presenting mathematics in HTML pages.
- */
-
-jsMath.HTML = {
-
- /*
- * produce a string version of a measurement in ems,
- * showing only a limited number of digits, and
- * using 0 when the value is near zero.
- */
- Em: function (m) {
- var n = 5; if (m < 0) {n++}
- if (Math.abs(m) < .000001) {m = 0}
- var s = String(m); s = s.replace(/(\.\d\d\d).+/,'$1');
- return s+'em'
- },
-
- /*
- * Create a horizontal space of width w
- */
- Spacer: function (w) {
- if (w == 0) {return ''};
- return jsMath.Browser.msieSpaceFix
- + '<SPAN STYLE="margin-left: '
- + this.Em(w-jsMath.Browser.spaceWidth)+'">'
- + jsMath.Browser.hiddenSpace + '</SPAN>';
- },
-
- /*
- * Create a colored frame (for debugging use)
- */
- Frame: function (x,y,w,h,c,pos) {
-
- h -= 2/jsMath.em; // use 2 pixels to compensate for border size
- w -= 2/jsMath.em;
- y -= 1/jsMath.em;
- if (!c) {c = 'black'};
- if (pos) {pos = 'absolute;'} else
- {pos = 'relative; margin-right: '+this.Em(-(w+2/jsMath.em))+'; '}
- return '<IMG SRC="'+jsMath.blank+'" STYLE="position:' + pos
- + 'vertical-align: '+this.Em(y)+'; left: '+this.Em(x)+'; '
- + 'width:' +this.Em(w*jsMath.Browser.imgScale)+'; '
- + 'height:'+this.Em(h*jsMath.Browser.imgScale)+'; '
- + 'border: 1px solid '+c+';">';
- },
-
- /*
- * Create a rule line for fractions, etc.
- * Height is converted to pixels (with a minimum of 1), so that
- * the line will not disappear at small font sizes. This means that
- * the thickness will not change if you change the font size, or
- * may not be correct within a header or other enlarged text.
- */
- Rule: function (w,h) {
- if (h == null) {h = jsMath.TeX.default_rule_thickness}
- if (w == 0 || h == 0) return; // should make an invisible box?
- w *= jsMath.Browser.imgScale;
- h = Math.round(h*jsMath.em*jsMath.Browser.imgScale+.25);
- if (h < 1) {h = 1};
- return '<IMG SRC="'+jsMath.blank+'" HSPACE="0" VSPACE="0" '
- + 'STYLE="width:'+this.Em(w)+'; height:1px; '
- + 'vertical-align:-1px; '
- + 'border:0px none; border-top:'+h+'px solid">';
- },
-
- /*
- * Add a <SPAN> tag to activate a specific CSS class
- */
- Class: function (tclass,html) {
- return '<SPAN CLASS="'+tclass+'">'+html+'</SPAN>';
- },
-
- /*
- * Use a <SPAN> to place some HTML at a specific position.
- * (This can be replaced by the ones below to overcome
- * some browser-specific bugs.)
- */
- Place: function (html,x,y) {
- if (Math.abs(x) < .0001) {x = 0}
- if (Math.abs(y) < .0001) {y = 0}
- if (x || y) {
- var span = '<SPAN STYLE="position: relative;';
- if (x) {span += ' margin-left:'+this.Em(x)+';'}
- if (y) {span += ' top:'+this.Em(-y)+';'}
- html = span + '">' + html + '</SPAN>';
- }
- return html;
- },
-
- /*
- * For MSIE on Windows, backspacing must be done in a separate
- * <SPAN>, otherwise the contents will be clipped. Netscape
- * also doesn't combine vertical and horizontal spacing well.
- * Here the x and y positioning are done in separate <SPAN> tags
- */
- PlaceSeparateSkips: function (html,x,y) {
- if (Math.abs(x) < .0001) {x = 0}
- if (Math.abs(y) < .0001) {y = 0}
- if (y) {html = '<SPAN STYLE="position: relative; top:'+this.Em(-y)+';'
- + '">' + html + '</SPAN>'}
- if (x) {html = jsMath.Browser.msieSpaceFix
- + '<SPAN STYLE="margin-left:'
- + this.Em(x-jsMath.Browser.spaceWidth)+';">'
- + jsMath.Browser.hiddenSpace + '</SPAN>' + html}
- return html;
- },
-
- /*
- * Place a SPAN with absolute coordinates
- */
- PlaceAbsolute: function (html,x,y) {
- if (Math.abs(x) < .0001) {x = 0}
- if (Math.abs(y) < .0001) {y = 0}
- html = '<SPAN STYLE="position: absolute; left:'+this.Em(x)+'; '
- + 'top:'+this.Em(y)+';">' + html + ' </SPAN>';
- // space normalizes line height
- return html;
- },
-
- Absolute: function(html,w,h,d,y,H) {
- var align = "";
- if (d && d != "none") {align = ' vertical-align: '+jsMath.HTML.Em(-d)+';'}
- if (y != "none") {
- if (Math.abs(y) < .0001) {y = 0}
- html = '<SPAN STYLE="position: absolute; '
- + 'top:'+jsMath.HTML.Em(y)+'; left: 0em;">'
- + html + ' ' // space normalizes line height in script styles
- + '</SPAN>';
- }
- html += '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'width:' +jsMath.HTML.Em(w*jsMath.Browser.imgScale)+'; '
- + 'height:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'+align+'">';
- if (jsMath.Browser.msieAbsoluteBug) { // for MSIE (Mac)
- html = '<SPAN STYLE="position: relative;">' + html + '</SPAN>';
- }
- html = '<SPAN STYLE="position: relative;'
- + ' width: '+jsMath.HTML.Em(w)+';' // for MSIE
- + ' height: '+jsMath.HTML.Em(H)+';' // for MSIE
- + jsMath.Browser.msieInlineBlockFix // for MSIE
- + '">'
- + html
- + '</SPAN>';
- return html;
- }
-
-};
-
-
-/***************************************************************************/
-
-/*
- * jsMath.Box handles TeX's math boxes and jsMath's equivalent of hboxes.
- */
-
-jsMath.Box = function (format,text,w,h,d) {
- if (d == null) {d = jsMath.d}
- this.type = 'typeset';
- this.w = w; this.h = h; this.d = d; this.bh = h; this.bd = d;
- this.x = 0; this.y = 0;
- this.html = text; this.format = format;
-};
-
-
-jsMath.Add(jsMath.Box,{
-
- /*
- * An empty box
- */
- Null: new jsMath.Box('null','',0,0,0),
-
- /*
- * A box containing only text whose class and style haven't been added
- * yet (so that we can combine ones with the same styles). It gets
- * the text dimensions, if needed. (In general, this has been
- * replaced by TeX() below, but is still used in fallback mode.)
- */
- Text: function (text,tclass,style,size,a,d) {
- var html = jsMath.Typeset.AddClass(tclass,text);
- html = jsMath.Typeset.AddStyle(style,size,html);
- var BB = jsMath.EmBoxFor(html); var TeX = jsMath.Typeset.TeX(style,size);
- var bd = ((tclass == 'cmsy10' || tclass == 'cmex10')? BB.h-TeX.h: TeX.d*BB.h/TeX.hd);
- var box = new jsMath.Box('text',text,BB.w,BB.h-bd,bd);
- box.style = style; box.size = size; box.tclass = tclass;
- if (d != null) {if (d != 1) {box.d = d}} else {box.d = 0}
- if (a == null || a == 1) {box.h = .9*TeX.M_height}
- else {box.h = 1.1*TeX.x_height + 1*a}; // sometimes a is a string?
- return box;
- },
-
- /*
- * Produce a box containing a given TeX character from a given font.
- * The box is a text box (like the ones above), so that characters from
- * the same font can be combined.
- */
- TeX: function (C,font,style,size) {
- var c = jsMath.TeX[font][C];
- if (c.d == null) {c.d = 0}; if (c.h == null) {c.h = 0}
- if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
- var scale = jsMath.Typeset.TeX(style,size).scale;
- var h = c.h + jsMath.TeX[font].dh
- var box = new jsMath.Box('text',c.c,c.w*scale,h*scale,c.d*scale);
- box.style = style; box.size = size;
- if (c.tclass) {
- box.tclass = c.tclass;
- box.bh = scale*jsMath.h;
- box.bd = scale*jsMath.d;
- } else {
- box.tclass = font;
- box.bh = scale*jsMath.TeX[font].h;
- box.bd = scale*jsMath.TeX[font].d;
- if (jsMath.Browser.msieFontBug) {
- // hack to avoid Font changing back to the default
- // font when a unicode reference is not followed
- // by a letter or number
- box.html += '<SPAN STYLE="display: none">x</SPAN>'
- }
- }
- if (c.img != null) {
- box.bh = c.img.bh; box.bd = c.img.bd;
- box.tclass = "normal";
- }
- return box;
- },
-
- /*
- * Set the character's string to the appropriate image file
- */
- TeXIMG: function (font,C,size) {
- var c = jsMath.TeX[font][C];
- if (c.img.size != null && c.img.size == size &&
- c.img.best != null && c.img.best == jsMath.Img.best) return;
- var mustScale = (jsMath.Img.scale != 1);
- var id = jsMath.Img.best + size - 4;
- if (id < 0) {id = 0; mustScale = 1} else
- if (id >= jsMath.Img.fonts.length) {id = jsMath.Img.fonts.length-1; mustScale = 1}
- var imgFont = jsMath.Img[jsMath.Img.fonts[id]];
- var img = imgFont[font][C];
- var scale = 1/jsMath.Img.w[jsMath.Img.fonts[id]];
- if (id != jsMath.Img.best + size - 4) {
- if (c.w != null) {scale = c.w/img[0]} else {
- scale *= jsMath.Img.fonts[size]/jsMath.Img.fonts[4]
- * jsMath.Img.fonts[jsMath.Img.best]/jsMath.Img.fonts[id];
- }
- }
- var w = img[0]*scale; var h = img[1]*scale; var d = -img[2]*scale; var v;
- var wadjust = (c.w == null || Math.abs(c.w-w) < .01)? "" : " margin-right:"+jsMath.HTML.Em(c.w-w)+';';
- var resize = ""; C = this.HexCode(C);
- if (!mustScale && !jsMath.Controls.cookie.scaleImg) {
- if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
- {resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
- resize += " width:"+(img[0]*jsMath.Browser.imgScale)+'px;'
- v = -img[2]+'px';
- } else {
- if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
- {resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
- resize += " width:"+jsMath.HTML.Em(w*jsMath.Browser.imgScale)+';'
- v = jsMath.HTML.Em(d);
- }
- var vadjust = (Math.abs(d) < .01 && !jsMath.Browser.valignBug)?
- "": " vertical-align:"+v+';';
- var URL = jsMath.Img.URL(font,jsMath.Img.fonts[id],C);
- if (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha) {
- c.c = '<IMG SRC="'+jsMath.blank+'" '
- + 'STYLE="'+jsMath.Browser.msieCenterBugFix
- + resize + vadjust + wadjust
- + ' filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + "'"
- + URL + "', sizingMethod='scale'" + ');">';
- } else {
- c.c = '<IMG SRC="'+URL+'" STYLE="'+jsMath.Browser.msieCenterBugFix
- + resize + vadjust + wadjust + '">';
- }
- c.tclass = "normal";
- c.img.bh = h+d; c.img.bd = -d;
- c.img.size = size; c.img.best = jsMath.Img.best;
- },
-
- /*
- * Get a two-character hex code (some browsers don't know toString(16))
- */
- HexCode: function (C) {
- var codes = '0123456789ABCDEF';
- var h = Math.floor(C/16); var l = C - 16*h;
- return codes.charAt(h)+codes.charAt(l);
- },
-
- /*
- * A box containing a spacer of a specific width
- */
- Space: function (w) {
- return new jsMath.Box('html',jsMath.HTML.Spacer(w),w,0,0);
- },
-
- /*
- * A box containing a horizontal rule
- */
- Rule: function (w,h) {
- if (h == null) {h = jsMath.TeX.default_rule_thickness}
- html = jsMath.HTML.Rule(w,h);
- return new jsMath.Box('html',html,w,h,0);
- },
-
- /*
- * Get a character from a TeX font, and make sure that it has
- * its metrics specified.
- */
- GetChar: function (code,font) {
- var c = jsMath.TeX[font][code];
- if (c.img != null) {this.TeXIMG(font,code,4)}
- if (c.tclass == null) {c.tclass = font}
- if (!c.computedW) {
- c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w;
- if (c.h == null) {c.h = jsMath.defaultH}; if (c.d == null) {c.d = 0}
- c.computedW = 1;
- }
- return c;
- },
-
- /*
- * Locate the TeX delimiter character that matches a given height.
- * Return the character, font, style and actual height used.
- */
- DelimBestFit: function (H,c,font,style) {
- if (c == 0 && font == 0) return;
- var C; var h; font = jsMath.TeX.fam[font];
- var isSS = (style.charAt(1) == 'S');
- var isS = (style.charAt(0) == 'S');
- while (c != null) {
- C = jsMath.TeX[font][c];
- if (C.h == null) {C.h = jsMath.defaultH}; if (C.d == null) {C.d = 0}
- h = C.h+C.d;
- if (C.delim) {return [c,font,'',H]}
- if (isSS && .5*h >= H) {return [c,font,'SS',.5*h]}
- if (isS && .7*h >= H) {return [c,font,'S',.7*h]}
- if (h >= H || C.n == null) {return [c,font,'T',h]}
- c = C.n
- }
- },
-
- /*
- * Create the HTML needed for a stretchable delimiter of a given height,
- * either centered or not. This version uses relative placement (i.e.,
- * backspaces, not line-breaks). This works with more browsers, but
- * if the font size changes, the backspacing may not be right, so the
- * delimiters may become jagged.
- */
- DelimExtendRelative: function (H,c,font,a,nocenter) {
- var C = jsMath.TeX[font][c];
- var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
- var rep = this.GetChar(C.delim.rep,font);
- var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
- var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
- var w = rep.w; var h = rep.h+rep.d
- var y; var dx;
- if (C.delim.mid) {// braces
- var mid = this.GetChar(C.delim.mid,font);
- var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d)-(bot.h+bot.d))/(2*(rep.h+rep.d)));
- H = 2*n*(rep.h+rep.d) + (top.h+top.d) + (mid.h+mid.d) + (bot.h+bot.d);
- if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
- var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
- + jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(top.w+bot.w)/2,y-(H-bot.d))
- + jsMath.HTML.Place(jsMath.Typeset.AddClass(mid.tclass,mid.c),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);
- dx = (w-mid.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
- if (dx) {html += jsMath.HTML.Spacer(dx)}
- y -= top.h+top.d + rep.h;
- for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
- y -= H/2 - rep.h/2;
- for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
- } else {// everything else
- var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d))/(rep.h+rep.d));
- // make sure two-headed arrows have an extender
- if (top.h+top.d < .9*(rep.h+rep.d)) {n = Math.max(1,n)}
- H = n*(rep.h+rep.d) + (top.h+top.d) + (bot.h+bot.d);
- if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
- var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
- dx = (w-top.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
- if (dx) {html += jsMath.HTML.Spacer(dx)}
- y -= top.h+top.d + rep.h;
- for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
- html += jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(w+bot.w)/2,Y-(H-bot.d));
- }
- if (nocenter) {h = top.h} else {h = H/2+a}
- var box = new jsMath.Box('html',html,rep.w,h,H-h);
- box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
- return box;
- },
-
- /*
- * Create the HTML needed for a stretchable delimiter of a given height,
- * either centered or not. This version uses absolute placement (i.e.,
- * line-breaks, not backspacing). This gives more reliable results,
- * but doesn't work with all browsers.
- */
- DelimExtendAbsolute: function (H,c,font,a,nocenter) {
- var Font = jsMath.TeX[font];
- var C = Font[c];
- var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
- var rep = this.GetChar(C.delim.rep,font);
- var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
-
- if (C.delim.mid) {// braces
- var mid = this.GetChar(C.delim.mid,font);
- var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d-.05)-(bot.h+bot.d-.05))/(2*(rep.h+rep.d-.05)));
- H = 2*n*(rep.h+rep.d-.05) + (top.h+top.d) + (mid.h+mid.d-.05) + (bot.h+bot.d-.05);
-
- html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
- var h = rep.h+rep.d - .05; var y = top.d-.05 + rep.h;
- var ext = jsMath.Typeset.AddClass(font,rep.c)
- for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
- html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(mid.tclass,mid.c),0,y+n*h-rep.h+mid.h);
- y += n*h + mid.h+mid.d - .05;
- for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
- html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
- } else {// all others
- var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d-.05))/(rep.h+rep.d-.05));
- H = n*(rep.h+rep.d-.05) + (top.h+top.d) + (bot.h+bot.d-.05);
-
- html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
- var h = rep.h+rep.d-.05; var y = top.d-.05 + rep.h;
- var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
- for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
- html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
- }
-
- var w = top.w;
- if (nocenter) {h = top.h; y = 0} else {h = H/2 + a; y = h - top.h}
- html = jsMath.HTML.Absolute(html,w,Font.h,"none",-y,top.h);
- var box = new jsMath.Box('html',html,rep.w,h,H-h);
- box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
- return box;
- },
-
- /*
- * Get the HTML for a given delimiter of a given height.
- * It will return either a single character, if one exists, or the
- * more complex HTML needed for a stretchable delimiter.
- */
- Delimiter: function (H,delim,style,nocenter) {
- var size = 4; //### pass this?
- var TeX = jsMath.Typeset.TeX(style,size);
- if (!delim) {return this.Space(TeX.nulldelimiterspace)}
- var CFSH = this.DelimBestFit(H,delim[2],delim[1],style);
- if (CFSH == null || CFSH[3] < H)
- {CFSH = this.DelimBestFit(H,delim[4],delim[3],style)}
- if (CFSH == null) {return this.Space(TeX.nulldelimiterspace)}
- if (CFSH[2] == '')
- {return this.DelimExtend(H,CFSH[0],CFSH[1],TeX.axis_height,nocenter)}
- box = jsMath.Box.TeX(CFSH[0],CFSH[1],CFSH[2],size).Styled();
- if (nocenter) {box.y = -jsMath.TeX[CFSH[1]].dh*TeX.scale}
- else {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
- if (Math.abs(box.y) < .0001) {box.y = 0}
- if (box.y) {box = jsMath.Box.SetList([box],CFSH[2],size)}
- return box;
- },
-
- /*
- * Get a character by its TeX charcode, and make sure its width
- * is specified.
- */
- GetCharCode: function (code) {
- var font = jsMath.TeX.fam[code[0]];
- var Font = jsMath.TeX[font];
- var c = Font[code[1]];
- if (c.img != null) {this.TeXIMG(font,code[1],4)}
- if (c.w == null) {c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w}
- if (c.font == null) {c.font = font}
- return c;
- },
-
- /*
- * Add the class to the html, and use the font if there isn't one
- * specified already
- */
-
- AddClass: function (tclass,html,font) {
- if (tclass == null) {tclass = font}
- return jsMath.Typeset.AddClass(tclass,html);
- },
-
- /*
- * Create a horizontally stretchable "delimiter" (like over- and
- * underbraces).
- */
-//### Add size?
- Leaders: function (W,leader) {
- var h; var d; var w; var html; var font;
- if (leader.lmid) {// braces
- font = jsMath.TeX.fam[leader.left[0]];
- var left = this.GetCharCode(leader.left);
- var right = this.GetCharCode(leader.right);
- var lmid = this.GetCharCode(leader.lmid);
- var rmid = this.GetCharCode(leader.rmid);
- w = (W - left.w - right.w - lmid.w - rmid.w)/2 - .1; h = .4; d = .3;
- if (w < 0) {w = 0}
- html = this.AddClass(left.tclass,left.c,left.font)
- + jsMath.HTML.Rule(w,left.h)
- + this.AddClass(lmid.tclass,lmid.c+rmid.c,lmid.font)
- + jsMath.HTML.Rule(w,right.h)
- + this.AddClass(right.tclass,right.c,right.font);
- } else { //arrows
- font = jsMath.TeX.fam[leader.rep[0]];
- var left = this.GetCharCode(leader.left? leader.left: leader.rep);
- var rep = this.GetCharCode(leader.rep);
- var right = this.GetCharCode(leader.right? leader.right: leader.rep);
- var n = Math.ceil((W - left.w - right.w + .4)/(rep.w - .3));
- w = (W - left.w - right.w + .4 - n*(rep.w - .3));
- if (leader.left) {h = left.h; d = left.d} else {h = right.h; d = right.d}
- if (d == null) {d = 0}; if (h == null) {h = 0}
- var html = this.AddClass(left.tclass,left.c,left.font); var m = Math.floor(n/2);
- var ext = jsMath.HTML.Place(rep.c,-.3,0);
- var ehtml = ''; for (var i = 0; i < m; i++) {ehtml += ext};
- html += this.AddClass(rep.tclass,ehtml,rep.font) + jsMath.HTML.Spacer(w);
- ehtml = ''; for (var i = m; i < n; i++) {ehtml += ext};
- html += this.AddClass(rep.tclass,ehtml,rep.font);
- if (jsMath.Browser.msieFontBug) {html += '<SPAN STYLE="display: none">x</SPAN>'}
- html += jsMath.HTML.Place(this.AddClass(right.tclass,right.c,right.font),-.4,0);
- }
- w = jsMath.EmBoxFor(html).w;
- if (w != W) {
- w = jsMath.HTML.Spacer((W-w)/2);
- html = w + html + w;
- }
- var box = new jsMath.Box('html',html,W,h,d);
- box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
- return box;
- },
-
- /*
- * Create the HTML for an alignment (e.g., array or matrix)
- * Since the widths are not really accurate (they are based on pixel
- * widths not the sub-pixel widths of the actual characters), there
- * is some drift involved. We lay out the table column by column
- * to help reduce the problem.
- *
- * ### still need to allow users to specify row and column attributes,
- * and do things like \span and \multispan ###
- */
- LayoutRelative: function (size,table,align,cspacing) {
- if (align == null) {align = []}
- if (cspacing == null) {cspacing = []}
-
- // get row and column maximum dimensions
- var scale = jsMath.sizes[size]/100;
- var W = []; var H = []; var D = [];
- var unset = -1000; var bh = unset; var bd = unset;
- var i; var j; var row;
- for (i = 0; i < table.length; i++) {
- row = table[i]; H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
- for (j = 0; j < row.length; j++) {
- row[j] = row[j].Remeasured();
- if (row[j].h > H[i]) {H[i] = row[j].h}
- if (row[j].d > D[i]) {D[i] = row[j].d}
- if (j >= W.length) {W[j] = row[j].w}
- else if (row[j].w > W[j]) {W[j] = row[j].w}
- if (row[j].bh > bh) {bh = row[j].bh}
- if (row[j].bd > bd) {bd = row[j].bd}
- }
- }
- if (bh == unset) {bh = 0}; if (bd == unset) {bd = 0}
-
- // lay out the columns
- var HD = (jsMath.hd-.01)*scale;
- var html = ''; var pW = 0; var cW = 0;
- var w; var h; var y;
- var box; var mlist; var entry;
- for (j = 0; j < W.length; j++) {
- mlist = []; y = -H[0]; pW = 0;
- for (i = 0; i < table.length; i++) {
- entry = table[i][j];
- if (entry && entry.format != 'null') {
- if (align[j] == 'l') {w = 0} else
- if (align[j] == 'r') {w = W[j] - entry.w} else
- {w = (W[j] - entry.w)/2}
- entry.x = w - pW; pW = entry.w + w; entry.y = y;
- mlist[mlist.length] = entry;
- }
- if (i == table.length-1) {y -= D[i]}
- else {y -= Math.max(HD,D[i]+H[i+1]) + scale/10}
- }
- if (cspacing[j] == null) cspacing[j] = scale;
- if (mlist.length > 0) {
- box = jsMath.Box.SetList(mlist,'T',size);
- html += jsMath.HTML.Place(box.html,cW,0);
- cW = W[j] - box.w + cspacing[j];
- } else {cW += cspacing[j]}
- }
-
- // get the full width and height
- w = -cspacing[W.length-1]; y = (H.length-1)*scale/10;
- for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
- for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
- h = y/2 + jsMath.TeX.axis_height; var d = y-h;
-
- // adjust the final row width, and vcenter the table
- // (add 1/6em at each side for the \,)
- html += jsMath.HTML.Spacer(cW-cspacing[W.length-1] + scale/6);
- html = jsMath.HTML.Place(html,scale/6,h);
- box = new jsMath.Box('html',html,w+scale/3,h,d);
- box.bh = bh; box.bd = bd;
- return box;
- },
-
- /*
- * Create the HTML for an alignment (e.g., array or matrix)
- * Use absolute position for elements in the array.
- *
- * ### still need to allow users to specify row and column attributes,
- * and do things like \span and \multispan ###
- */
- LayoutAbsolute: function (size,table,align,cspacing) {
- if (align == null) {align = []}
- if (cspacing == null) {cspacing = []}
-
- // get row and column maximum dimensions
- var scale = jsMath.sizes[size]/100;
- var HD = (jsMath.hd-.01)*scale;
- var W = []; var H = []; var D = [];
- var w = 0; var h; var x; var y;
- var i; var j; var row;
- for (i = 0; i < table.length; i++) {
- row = table[i];
- H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
- for (j = 0; j < row.length; j++) {
- row[j] = row[j].Remeasured();
- if (row[j].h > H[i]) {H[i] = row[j].h}
- if (row[j].d > D[i]) {D[i] = row[j].d}
- if (j >= W.length) {W[j] = row[j].w}
- else if (row[j].w > W[j]) {W[j] = row[j].w}
- }
- }
-
- // get the height and depth of the centered table
- y = (H.length-1)*scale/6;
- for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
- h = y/2 + jsMath.TeX.axis_height; var d = y - h;
-
- // lay out the columns
- var html = ''; var entry; w = scale/6;
- for (j = 0; j < W.length; j++) {
- y = H[0]-h;
- for (i = 0; i < table.length; i++) {
- entry = table[i][j];
- if (entry && entry.format != 'null') {
- if (align[j] == 'l') {x = 0} else
- if (align[j] == 'r') {x = W[j] - entry.w} else
- {x = (W[j] - entry.w)/2}
- html += jsMath.HTML.PlaceAbsolute(entry.html,w+x,
- y-Math.max(0,entry.bh-jsMath.h*scale));
- }
- if (i == table.length-1) {y += D[i]}
- else {y += Math.max(HD,D[i]+H[i+1]) + scale/6}
- }
- if (cspacing[j] == null) cspacing[j] = scale;
- w += W[j] + cspacing[j];
- }
-
- // get the full width
- w = -cspacing[W.length-1]+scale/3;
- for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
-
- html = jsMath.HTML.Spacer(scale/6)+html+jsMath.HTML.Spacer(scale/6);
- if (jsMath.Browser.spanHeightVaries) {y = h-jsMath.h} else {y = 0}
- html = jsMath.HTML.Absolute(html,w,h+d,d,y,H[0]);
- var box = new jsMath.Box('html',html,w+scale/3,h,d);
- return box;
- },
-
- /*
- * Look for math within \hbox and other non-math text
- */
- InternalMath: function (text,size) {
- if (!text.match(/\$|\\\(/)) {return this.Text(text,'normal','T',size).Styled()}
-
- var i = 0; var k = 0; var c; var match = '';
- var mlist = []; var parse; var html; var box;
- while (i < text.length) {
- c = text.charAt(i++);
- if (c == '$') {
- if (match == '$') {
- parse = jsMath.Parse(text.slice(k,i-1),null,size);
- if (parse.error) {
- mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,1);
- } else {
- parse.Atomize();
- mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
- }
- match = ''; k = i;
- } else {
- mlist[mlist.length] = this.Text(text.slice(k,i-1),'normal','T',size,1,1);
- match = '$'; k = i;
- }
- } else if (c == '\\') {
- c = text.charAt(i++);
- if (c == '(' && match == '') {
- mlist[mlist.length] = this.Text(text.slice(k,i-2),'normal','T',size,1,1);
- match = ')'; k = i;
- } else if (c == ')' && match == ')') {
- parse = jsMath.Parse(text.slice(k,i-2),null,size);
- if (parse.error) {
- mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,1);
- } else {
- parse.Atomize();
- mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
- }
- match = ''; k = i;
- }
- }
- }
- mlist[mlist.length] = this.Text(text.slice(k),'normal','T',size,1,1);
- return this.SetList(mlist,'T',size);
- },
-
- /*
- * Convert an abitrary box to a typeset box. I.e., make an
- * HTML version of the contents of the box, at its desired (x,y)
- * position.
- */
- Set: function (box,style,size,addstyle) {
- if (box) {
- if (box.type == 'typeset') {return box}
- if (box.type == 'mlist') {
- box.mlist.Atomize(style,size);
- return box.mlist.Typeset(style,size);
- }
- if (box.type == 'text') {
- box = this.Text(box.text,box.tclass,style,size,box.ascend,box.descend);
- if (addstyle != 0) {box.Styled()}
- return box;
- }
- box = this.TeX(box.c,box.font,style,size);
- if (addstyle != 0) {box.Styled()}
- return box;
- }
- return jsMath.Box.Null;
- },
-
- /*
- * Convert a list of boxes to a single typeset box. I.e., finalize
- * the HTML for the list of boxes, properly spaced and positioned.
- */
- SetList: function (boxes,style,size) {
- var mlist = []; var box;
- for (var i = 0; i < boxes.length; i++) {
- box = boxes[i];
- if (box.type == 'typeset') {box = jsMath.mItem.Typeset(box)}
- mlist[mlist.length] = box;
- }
- var typeset = new jsMath.Typeset(mlist);
- return typeset.Typeset(style,size);
- }
-
-});
-
-
-jsMath.Package(jsMath.Box,{
-
- /*
- * Add the class and style to a text box (i.e., finalize the
- * unpositioned HTML for the box).
- */
- Styled: function () {
- if (this.format == 'text') {
- this.html = jsMath.Typeset.AddClass(this.tclass,this.html);
- this.html = jsMath.Typeset.AddStyle(this.style,this.size,this.html);
- delete this.tclass; delete this.style;
- this.format = 'html';
- }
- return this;
- },
-
- /*
- * Recompute the box width to make it more accurate.
- */
- Remeasured: function () {
- if (this.w > 0 && !this.html.match(/position: ?absolute/))
- {this.w = jsMath.EmBoxFor(this.html).w}
- return this;
- }
-
-});
-
-
-/***************************************************************************/
-
-/*
- * mItems are the building blocks of mLists (math lists) used to
- * store the information about a mathematical expression. These are
- * basically the items listed in the TeXbook in Appendix G (plus some
- * minor extensions).
- */
-jsMath.mItem = function (type,def) {
- this.type = type;
- jsMath.Add(this,def);
-}
-
-jsMath.Add(jsMath.mItem,{
-
- /*
- * a general atom (given a nucleus for the atom)
- */
- Atom: function (type,nucleus) {
- return new jsMath.mItem(type,{atom: 1, nuc: nucleus});
- },
-
- /*
- * An atom whose nucleus is a piece of text, in a given
- * class, with a given additional height and depth
- */
- TextAtom: function (type,text,tclass,a,d) {
- var atom = new jsMath.mItem(type,{
- atom: 1,
- nuc: {
- type: 'text',
- text: text,
- tclass: tclass
- }
- });
- if (a != null) {atom.nuc.ascend = a}
- if (d != null) {atom.nuc.descend = d}
- return atom;
- },
-
- /*
- * An atom whose nucleus is a TeX character in a specific font
- */
- TeXAtom: function (type,c,font) {
- return new jsMath.mItem(type,{
- atom: 1,
- nuc: {
- type: 'TeX',
- c: c,
- font: font
- }
- });
- },
-
- /*
- * A generalized fraction atom, with given delimiters, rule
- * thickness, and a numerator and denominator.
- */
- Fraction: function (name,num,den,thickness,left,right) {
- return new jsMath.mItem('fraction',{
- from: name, num: num, den: den,
- thickness: thickness, left: left, right: right
- });
- },
-
- /*
- * An atom that inserts some glue
- */
- Space: function (w) {return new jsMath.mItem('space',{w: w})},
-
- /*
- * An atom that contains a typeset box (like an hbox or vbox)
- */
- Typeset: function (box) {return new jsMath.mItem('box',{nuc: box})},
-
- /*
- * An atom that contains some finished HTML (acts like a typeset box)
- */
- HTML: function (html) {return new jsMath.mItem('html',{html: html})}
-
-});
-
-/***************************************************************************/
-
-/*
- * mLists are lists of mItems, and encode the contents of
- * mathematical expressions and sub-expressions. They act as
- * the expression "stack" as the mathematics is parsed, and
- * contain some state information, like the position of the
- * most recent open paren and \over command, and the current font.
- */
-jsMath.mList = function (list,font,size,style) {
- if (list) {this.mlist = list} else {this.mlist = []}
- if (style == null) {style = 'T'}; if (size == null) {size = 4}
- this.data = {openI: null, overI: null, overF: null,
- font: font, size: size, style: style};
- this.init = {size: size, style: style};
-}
-
-jsMath.Package(jsMath.mList,{
-
- /*
- * Add an mItem to the list
- */
- Add: function (box) {return (this.mlist[this.mlist.length] = box)},
-
- /*
- * Get the i-th mItem from the list
- */
- Get: function (i) {return this.mlist[i]},
-
- /*
- * Get the length of the list
- */
- Length: function() {return this.mlist.length},
-
- /*
- * Get the tail mItem of the list
- */
- Last: function () {
- if (this.mlist.length == 0) {return null}
- return this.mlist[this.mlist.length-1]
- },
-
- /*
- * Get a sublist of an mList
- */
- Range: function (i,j) {
- if (j == null) {j = this.mlist.length}
- return new jsMath.mList(this.mlist.slice(i,j+1));
- },
-
- /*
- * Remove a range of mItems from the list.
- */
- Delete: function (i,j) {
- if (j == null) {j = i}
- if (this.mlist.splice) {this.mlist.splice(i,j-i+1)} else {
- var mlist = [];
- for (var k = 0; k < this.mlist.length; k++)
- {if (k < i || k > j) {mlist[mlist.length] = this.mlist[k]}}
- this.mlist = mlist;
- }
- },
-
- /*
- * Add an open brace and maintain the stack information
- * about the previous open brace so we can recover it
- * when this one os closed.
- */
- Open: function (left) {
- var box = this.Add(new jsMath.mItem('boundary',{data: this.data}));
- var olddata = this.data;
- this.data = {}; for (var i in olddata) {this.data[i] = olddata[i]}
- delete this.data.overI; delete this.data.overF;
- this.data.openI = this.mlist.length-1;
- if (left != null) {box.left = left}
- return box;
- },
-
- /*
- * Attempt to close a brace. Recover the stack information
- * about previous open braces and \over commands. If there was an
- * \over (or \above, etc) in this set of braces, create a fraction
- * atom from the two halves, otherwise create an inner or ord
- * from the contents of the braces.
- * Remove the braced material from the list and add the newly
- * created atom (the fraction, inner or ord).
- */
- Close: function (right) {
- if (right != null) {right = new jsMath.mItem('boundary',{right: right})}
- var atom; var open = this.data.openI;
- var over = this.data.overI; var from = this.data.overF;
- this.data = this.mlist[open].data;
- if (over) {
- atom = jsMath.mItem.Fraction(from.name,
- {type: 'mlist', mlist: this.Range(open+1,over-1)},
- {type: 'mlist', mlist: this.Range(over)},
- from.thickness,from.left,from.right);
- if (right) {
- var mlist = new jsMath.mList([this.mlist[open],atom,right]);
- atom = jsMath.mItem.Atom('inner',{type: 'mlist', mlist: mlist});
- }
- } else {
- var openI = open+1; if (right) {this.Add(right); openI--}
- atom = jsMath.mItem.Atom((right)?'inner':'ord',
- {type: 'mlist', mlist: this.Range(openI)});
- }
- this.Delete(open,this.Length());
- return this.Add(atom);
- },
-
- /*
- * Create a generalized fraction from an mlist that
- * contains an \over (or \above, etc).
- */
- Over: function () {
- var over = this.data.overI; var from = this.data.overF
- var atom = jsMath.mItem.Fraction(from.name,
- {type: 'mlist', mlist: this.Range(open+1,over-1)},
- {type: 'mlist', mlist: this.Range(over)},
- from.thickness,from.left,from.right);
- this.mlist = [atom];
- },
-
- /*
- * Take a raw mList (that has been produced by parsing some TeX
- * expression), and perform the modifications outlined in
- * Appendix G of the TeXbook.
- */
- Atomize: function (style,size) {
- var mitem; var prev = '';
- this.style = style; this.size = size;
- for (var i = 0; i < this.mlist.length; i++) {
- mitem = this.mlist[i]; mitem.delta = 0;
- if (mitem.type == 'choice')
- {this.mlist = this.Atomize.choice(this.style,mitem,i,this.mlist); i--}
- else if (this.Atomize[mitem.type]) {
- var f = this.Atomize[mitem.type]; // Opera needs separate name
- f(this.style,this.size,mitem,prev,this,i);
- }
- prev = mitem;
- }
- if (mitem && mitem.type == 'bin') {mitem.type = 'ord'}
- if (this.mlist.length >= 2 && mitem.type == 'boundary' &&
- this.mlist[0].type == 'boundary') {this.AddDelimiters(style,size)}
- },
-
- /*
- * For a list that has boundary delimiters as its first and last
- * entries, we replace the boundary atoms by open and close
- * atoms whose nuclii are the specified delimiters properly sized
- * for the contents of the list. (Rule 19)
- */
- AddDelimiters: function(style,size) {
- var unset = -10000; var h = unset; var d = unset;
- for (var i = 0; i < this.mlist.length; i++) {
- mitem = this.mlist[i];
- if (mitem.atom || mitem.type == 'box') {
- h = Math.max(h,mitem.nuc.h+mitem.nuc.y);
- d = Math.max(d,mitem.nuc.d-mitem.nuc.y);
- }
- }
- var TeX = jsMath.TeX; var a = jsMath.Typeset.TeX(style,size).axis_height;
- var delta = Math.max(h-a,d+a);
- var H = Math.max(Math.floor(TeX.integer*delta/500)*TeX.delimiterfactor,
- TeX.integer*(2*delta-TeX.delimitershortfall))/TeX.integer;
- var left = this.mlist[0]; var right = this.mlist[this.mlist.length-1];
- left.nuc = jsMath.Box.Delimiter(H,left.left,style);
- right.nuc = jsMath.Box.Delimiter(H,right.right,style);
- left.type = 'open'; left.atom = 1; delete left.left;
- right.type = 'close'; right.atom = 1; delete right.right;
- },
-
- /*
- * Typeset a math list to produce final HTML for the list.
- */
- Typeset: function (style,size) {
- var typeset = new jsMath.Typeset(this.mlist);
- return typeset.Typeset(style,size);
- }
-
-});
-
-
-/*
- * These routines implement the main rules given in Appendix G of the
- * TeXbook
- */
-
-jsMath.Add(jsMath.mList.prototype.Atomize,{
-
- /*
- * Handle a 4-way choice atom. (Rule 4)
- */
- choice: function (style,mitem,i,mlist) {
- if (style.charAt(style.length-1) == "'") {style = style.slice(0,style.length-1)}
- var nlist = []; var M = mitem[style]; if (!M) {M = {type: 'mlist', mlist: []}}
- if (M.type == 'mlist') {
- M = M.mlist.mlist;
- for (var k = 0; k < i; k++) {nlist[k] = mlist[k]}
- for (k = 0; k < M.length; k++) {nlist[i+k] = M[k]}
- for (k = i+1; k < mlist.length; k++) {nlist[nlist.length] = mlist[k]}
- return nlist;
- } else {
- mlist[i] = jsMath.mItem.Atom('ord',M);
- return mlist;
- }
- },
-
- /*
- * Handle \displaystyle, \textstyle, etc.
- */
- style: function (style,size,mitem,prev,mlist) {
- mlist.style = mitem.style;
- },
-
- /*
- * Handle \tiny, \small, etc.
- */
- size: function (style,size,mitem,prev,mlist) {
- mlist.size = mitem.size;
- },
-
- /*
- * Create empty boxes of the proper sizes for the various
- * phantom-type commands
- */
- phantom: function (style,size,mitem) {
- var box = mitem.nuc = jsMath.Box.Set(mitem.phantom,style,size);
- if (mitem.h) {box.Remeasured(); box.html = jsMath.HTML.Spacer(box.w)}
- else {box.html = '', box.w = 0}
- if (!mitem.v) {box.h = box.d = 0}
- box.bd = box.bh = 0;
- delete mitem.phantom;
- mitem.type = 'box';
- },
-
- /*
- * Create a box of zero height and depth containing the
- * contents of the atom
- */
- smash: function (style,size,mitem) {
- var box = mitem.nuc = jsMath.Box.Set(mitem.smash,style,size).Remeasured();
- box.h = box.d = box.bd = box.bh = 0;
- delete mitem.smash;
- mitem.type = 'box';
- },
-
- /*
- * Move a box up or down vertically
- */
- raise: function (style,size,mitem) {
- mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size);
- var y = mitem.raise;
- mitem.nuc.html = jsMath.HTML.Place(mitem.nuc.html,0,y);
- mitem.nuc.h += y; mitem.nuc.d -= y;
- mitem.type = 'ord'; mitem.atom = 1;
- },
-
- /*
- * Hide the size of a box so that it laps to the left or right, or
- * up or down.
- */
- lap: function (style,size,mitem) {
- var box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured();
- var mlist = [box];
- if (mitem.lap == 'llap') {box.x = -box.w} else
- if (mitem.lap == 'rlap') {mlist[1] = jsMath.mItem.Space(-box.w)} else
- if (mitem.lap == 'ulap') {box.y = box.d; box.h = box.d = 0} else
- if (mitem.lap == 'dlap') {box.y = -box.h; box.h = box.d = 0}
- mitem.nuc = jsMath.Box.SetList(mlist,style,size);
- if (mitem.lap == 'ulap' || mitem.lap == 'dlap') {mitem.nuc.h = mitem.nuc.d = 0}
- mitem.type = 'box'; delete mitem.atom;
- },
-
- /*
- * Handle a Bin atom. (Rule 5)
- */
- bin: function (style,size,mitem,prev) {
- if (prev) {
- var type = prev.type;
- if (type == 'bin' || type == 'op' || type == 'rel' ||
- type == 'open' || type == 'punct' || type == '' ||
- (type == 'boundary' && prev.left != '')) {mitem.type = 'ord'}
- } else {mitem.type = 'ord'}
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle a Rel atom. (Rule 6)
- */
- rel: function (style,size,mitem,prev) {
- if (prev.type == 'bin') {prev.type = 'ord'}
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle a Close atom. (Rule 6)
- */
- close: function (style,size,mitem,prev) {
- if (prev.type == 'bin') {prev.type = 'ord'}
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle a Punct atom. (Rule 6)
- */
- punct: function (style,size,mitem,prev) {
- if (prev.type == 'bin') {prev.type = 'ord'}
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle an Open atom. (Rule 7)
- */
- open: function (style,size,mitem) {
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle an Inner atom. (Rule 7)
- */
- inner: function (style,size,mitem) {
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle a Vcent atom. (Rule 8)
- */
- vcenter: function (style,size,mitem) {
- var box = jsMath.Box.Set(mitem.nuc,style,size);
- var TeX = jsMath.Typeset.TeX(style,size);
- box.y = TeX.axis_height - (box.h-box.d)/2;
- mitem.nuc = box; mitem.type = 'ord';
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle an Over atom. (Rule 9)
- */
- overline: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size);
- var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
- var t = TeX.default_rule_thickness;
- var rule = jsMath.Box.Rule(box.w,t);
- rule.x = -rule.w; rule.y = box.h + 3*t;
- mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
- mitem.nuc.h += t;
- mitem.type = 'ord';
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle an Under atom. (Rule 10)
- */
- underline: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size);
- var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
- var t = TeX.default_rule_thickness;
- var rule = jsMath.Box.Rule(box.w,t);
- rule.x = -rule.w; rule.y = -box.d - 3*t - t;
- mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
- mitem.nuc.d += t;
- mitem.type = 'ord';
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle a Rad atom. (Rule 11 plus stuff for \root..\of)
- */
- radical: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size);
- var Cp = jsMath.Typeset.PrimeStyle(style);
- var box = jsMath.Box.Set(mitem.nuc,Cp,size).Remeasured();
- var t = TeX.default_rule_thickness;
- var p = t; if (style == 'D' || style == "D'") {p = TeX.x_height}
- var r = t + p/4;
- var surd = jsMath.Box.Delimiter(box.h+box.d+r+t,[0,2,0x70,3,0x70],style,1);
- t = surd.h; // thickness of rule is height of surd character
- if (surd.d > box.h+box.d+r) {r = (r+surd.d-box.h-box.d)/2}
- surd.y = box.h+r;
- var rule = jsMath.Box.Rule(box.w,t);
- rule.y = surd.y-t/2; rule.h += 3*t/2; box.x = -box.w;
- var Cr = jsMath.Typeset.UpStyle(jsMath.Typeset.UpStyle(style));
- var root = jsMath.Box.Set(mitem.root,Cr,size).Remeasured();
- if (mitem.root) {
- root.y = .55*(box.h+box.d+3*t+r)-box.d;
- surd.x = Math.max(root.w-(11/18)*surd.w,0);
- rule.x = (7/18)*surd.w;
- root.x = -(root.w+rule.x);
- }
- mitem.nuc = jsMath.Box.SetList([surd,root,rule,box],style,size);
- mitem.type = 'ord';
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle an Acc atom. (Rule 12)
- */
- accent: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size);
- var Cp = jsMath.Typeset.PrimeStyle(style);
- var box = jsMath.Box.Set(mitem.nuc,Cp,size);
- var u = box.w; var s; var Font;
- if (mitem.nuc.type == 'TeX') {
- Font = jsMath.TeX[mitem.nuc.font];
- if (Font[mitem.nuc.c].krn && Font.skewchar)
- {s = Font[mitem.nuc.c].krn[Font.skewchar]}
- }
- if (s == null) {s = 0}
-
- var c = mitem.accent[2];
- var font = jsMath.TeX.fam[mitem.accent[1]]; Font = jsMath.TeX[font];
- while (Font[c].n && Font[Font[c].n].w <= u) {c = Font[c].n}
-
- var delta = Math.min(box.h,TeX.x_height);
- if (mitem.nuc.type == 'TeX') {
- var nitem = jsMath.mItem.Atom('ord',mitem.nuc);
- nitem.sup = mitem.sup; nitem.sub = mitem.sub; nitem.delta = 0;
- jsMath.mList.prototype.Atomize.SupSub(style,size,nitem);
- delta += (nitem.nuc.h - box.h);
- box = mitem.nuc = nitem.nuc;
- delete mitem.sup; delete mitem.sub;
- }
- var acc = jsMath.Box.TeX(c,font,style,size);
- acc.y = box.h - delta; acc.x = -box.w + s + (u-acc.w)/2;
- if (Font[c].ic) {acc.x -= Font[c].ic * TeX.scale}
-
- mitem.nuc = jsMath.Box.SetList([box,acc],style,size);
- if (mitem.nuc.w != box.w) {
- var space = jsMath.mItem.Space(box.w-mitem.nuc.w);
- mitem.nuc = jsMath.Box.SetList([mitem.nuc,space],style,size);
- }
- mitem.type = 'ord';
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle an Op atom. (Rules 13 and 13a)
- */
- op: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size); var box;
- mitem.delta = 0; var isD = (style.charAt(0) == 'D');
- if (mitem.limits == null && isD) {mitem.limits = 1}
-
- if (mitem.nuc.type == 'TeX') {
- var C = jsMath.TeX[mitem.nuc.font][mitem.nuc.c];
- if (isD && C.n) {mitem.nuc.c = C.n; C = jsMath.TeX[mitem.nuc.font][C.n]}
- box = jsMath.Box.Set(mitem.nuc,style,size);
- if (C.ic) {
- mitem.delta = C.ic * TeX.scale;
- if (mitem.limits || !mitem.sub || jsMath.Browser.msieIntegralBug)
- {box = jsMath.Box.SetList([box,jsMath.mItem.Space(mitem.delta)],style,size)}
- }
- box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height);
- if (Math.abs(box.y) < .0001) {box.y = 0}
- }
-
- if (!box) {box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured()}
- if (mitem.limits) {
- var W = box.w; var x = box.w;
- var mlist = [box]; var dh = 0; var dd = 0;
- if (mitem.sup) {
- var sup = jsMath.Box.Set(mitem.sup,jsMath.Typeset.UpStyle(style),size).Remeasured();
- sup.x = ((box.w-sup.w)/2 + mitem.delta/2) - x; dh = TeX.big_op_spacing5;
- W = Math.max(W,sup.w); x += sup.x + sup.w;
- sup.y = box.h+sup.d + box.y +
- Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);
- mlist[mlist.length] = sup; delete mitem.sup;
- }
- if (mitem.sub) {
- var sub = jsMath.Box.Set(mitem.sub,jsMath.Typeset.DownStyle(style),size).Remeasured();
- sub.x = ((box.w-sub.w)/2 - mitem.delta/2) - x; dd = TeX.big_op_spacing5;
- W = Math.max(W,sub.w); x += sub.x + sub.w;
- sub.y = -box.d-sub.h + box.y -
- Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);
- mlist[mlist.length] = sub; delete mitem.sub;
- }
- if (W > box.w) {box.x = (W-box.w)/2; x += box.x}
- if (x < W) {mlist[mlist.length] = jsMath.mItem.Space(W-x)}
- mitem.nuc = jsMath.Box.SetList(mlist,style,size);
- mitem.nuc.h += dh; mitem.nuc.d += dd;
- } else {
- if (jsMath.Browser.msieIntegralBug && mitem.sub && C && C.ic)
- {mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(-C.ic*TeX.scale)],style,size)}
- else if (box.y) {mitem.nuc = jsMath.Box.SetList([box],style,size)}
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- }
- },
-
- /*
- * Handle an Ord atom. (Rule 14)
- */
- ord: function (style,size,mitem,prev,mList,i) {
- if (mitem.nuc.type == 'TeX' && !mitem.sup && !mitem.sub) {
- var nitem = mList.mlist[i+1];
- if (nitem && nitem.atom && nitem.type &&
- (nitem.type == 'ord' || nitem.type == 'op' || nitem.type == 'bin' ||
- nitem.type == 'rel' || nitem.type == 'open' ||
- nitem.type == 'close' || nitem.type == 'punct')) {
- if (nitem.nuc.type == 'TeX' && nitem.nuc.font == mitem.nuc.font) {
- mitem.textsymbol = 1;
- var krn = jsMath.TeX[mitem.nuc.font][mitem.nuc.c].krn;
- krn *= jsMath.Typeset.TeX(style,size).scale;
- if (krn && krn[nitem.nuc.c]) {
- for (var k = mList.mlist.length-1; k > i; k--)
- {mList.mlist[k+1] = mList.mlist[k]}
- mList.mlist[i+1] = jsMath.mItem.Space(krn[nitem.nuc.c]);
- }
- }
- }
- }
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Handle a generalized fraction. (Rules 15 to 15e)
- */
- fraction: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size); var t = 0;
- if (mitem.thickness != null) {t = mitem.thickness}
- else if (mitem.from.match(/over/)) {t = TeX.default_rule_thickness}
- var isD = (style.charAt(0) == 'D');
- var Cn = (style == 'D')? 'T': (style == "D'")? "T'": jsMath.Typeset.UpStyle(style);
- var Cd = (isD)? "T'": jsMath.Typeset.DownStyle(style);
- var num = jsMath.Box.Set(mitem.num,Cn,size).Remeasured();
- var den = jsMath.Box.Set(mitem.den,Cd,size).Remeasured();
-
- var u; var v; var w;
- var H = (isD)? TeX.delim1 : TeX.delim2;
- var mlist = [jsMath.Box.Delimiter(H,mitem.left,style)]
- var right = jsMath.Box.Delimiter(H,mitem.right,style);
-
- if (num.w < den.w) {
- num.x = (den.w-num.w)/2;
- den.x = -(num.w + num.x);
- w = den.w; mlist[1] = num; mlist[2] = den;
- } else {
- den.x = (num.w-den.w)/2;
- num.x = -(den.w + den.x);
- w = num.w; mlist[1] = den; mlist[2] = num;
- }
- if (isD) {u = TeX.num1; v = TeX.denom1} else {
- u = (t != 0)? TeX.num2: TeX.num3;
- v = TeX.denom2;
- }
- if (t == 0) {// atop
- var p = (isD)? 7*TeX.default_rule_thickness: 3*TeX.default_rule_thickness;
- var r = (u - num.d) - (den.h - v);
- if (r < p) {u += (p-r)/2; v += (p-r)/2}
- } else {// over
- var p = (isD)? 3*t: t; var a = TeX.axis_height;
- var r = (u-num.d)-(a+t/2); if (r < p) {u += p-r}
- r = (a-t/2)-(den.h-v); if (r < p) {v += p-r}
- var rule = jsMath.Box.Rule(w,t); rule.x = -w; rule.y = a - t/2;
- mlist[mlist.length] = rule;
- }
- num.y = u; den.y = -v;
-
- mlist[mlist.length] = right;
- mitem.nuc = jsMath.Box.SetList(mlist,style,size);
- mitem.type = 'ord'; mitem.atom = 1;
- delete mitem.num; delete mitem.den;
- jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
- },
-
- /*
- * Add subscripts and superscripts. (Rules 17-18f)
- */
- SupSub: function (style,size,mitem) {
- var TeX = jsMath.Typeset.TeX(style,size);
- var nuc = mitem.nuc;
- var box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size,0);
- if (box.format == 'null')
- {box = mitem.nuc = jsMath.Box.Text('','normal',style,size)}
-
- if (nuc.type == 'TeX') {
- if (!mitem.textsymbol) {
- var C = jsMath.TeX[nuc.font][nuc.c];
- if (C.ic) {
- mitem.delta = C.ic * TeX.scale;
- if (!mitem.sub) {
- box = mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(mitem.delta)],style,size);
- mitem.delta = 0;
- }
- }
- } else {mitem.delta = 0}
- }
-
- if (!mitem.sup && !mitem.sub) return;
- mitem.nuc.Styled();
-
- var Cd = jsMath.Typeset.DownStyle(style);
- var Cu = jsMath.Typeset.UpStyle(style);
- var q = jsMath.Typeset.TeX(Cu,size).sup_drop;
- var r = jsMath.Typeset.TeX(Cd,size).sub_drop;
- var u = 0; var v = 0; var p;
- if (nuc.type != 'text' && nuc.type != 'TeX' && nuc.type != 'null')
- {u = box.h - q; v = box.d + r}
-
- if (mitem.sub) {
- var sub = jsMath.Box.Set(mitem.sub,Cd,size);
- sub = jsMath.Box.SetList([sub,jsMath.mItem.Space(TeX.scriptspace)],style,size);
- }
-
- if (!mitem.sup) {
- sub.y = -Math.max(v,TeX.sub1,sub.h-(4/5)*jsMath.Typeset.TeX(Cd,size).x_height);
- mitem.nuc = jsMath.Box.SetList([box,sub],style,size).Styled(); delete mitem.sub;
- return;
- }
-
- var sup = jsMath.Box.Set(mitem.sup,Cu,size);
- sup = jsMath.Box.SetList([sup,jsMath.mItem.Space(TeX.scriptspace)],style,size);
- if (style == 'D') {p = TeX.sup1}
- else if (style.charAt(style.length-1) == "'") {p = TeX.sup3}
- else {p = TeX.sup2}
- u = Math.max(u,p,sup.d+jsMath.Typeset.TeX(Cu,size).x_height/4);
-
- if (!mitem.sub) {
- sup.y = u;
- mitem.nuc = jsMath.Box.SetList([box,sup],style,size); delete mitem.sup;
- return;
- }
-
- v = Math.max(v,jsMath.Typeset.TeX(Cd,size).sub2);
- var t = TeX.default_rule_thickness;
- if ((u-sup.d) - (sub.h -v) < 4*t) {
- v = 4*t + sub.h - (u-sup.d);
- p = (4/5)*TeX.x_height - (u-sup.d);
- if (p > 0) {u += p; v -= p}
- }
- sup.Remeasured(); sub.Remeasured();
- sup.y = u; sub.y = -v; sup.x = mitem.delta;
- if (sup.w+sup.x > sub.w)
- {sup.x -= sub.w; mitem.nuc = jsMath.Box.SetList([box,sub,sup],style,size)} else
- {sub.x -= (sup.w+sup.x); mitem.nuc = jsMath.Box.SetList([box,sup,sub],style,size)}
-
- delete mitem.sup; delete mitem.sub;
- }
-
-});
-
-
-/***************************************************************************/
-
-/*
- * The Typeset object handles most of the TeX-specific processing
- */
-
-jsMath.Typeset = function (mlist) {
- this.type = 'typeset';
- this.mlist = mlist;
-}
-
-jsMath.Add(jsMath.Typeset,{
-
- /*
- * The "C-uparrow" style table (TeXbook, p. 441)
- */
- upStyle: {
- D: "S", T: "S", "D'": "S'", "T'": "S'",
- S: "SS", SS: "SS", "S'": "SS'", "SS'": "SS'"
- },
-
- /*
- * The "C-downarrow" style table (TeXbook, p. 441)
- */
- downStyle: {
- D: "S'", T: "S'", "D'": "S'", "T'": "S'",
- S: "SS'", SS: "SS'", "S'": "SS'", "SS'": "SS'"
- },
-
- /*
- * Get the various styles given the current style
- * (see TeXbook, p. 441)
- */
- UpStyle: function (style) {return this.upStyle[style]},
- DownStyle: function (style) {return this.downStyle[style]},
- PrimeStyle: function (style) {
- if (style.charAt(style.length-1) == "'") {return style}
- return style + "'"
- },
-
- /*
- * A value scaled to the appropriate size for scripts
- */
- StyleValue: function (style,v) {
- if (style == "S" || style == "S'") {return .7*v}
- if (style == "SS" || style == "SS'") {return .5*v}
- return v;
- },
-
- /*
- * Return the size associated with a given style and size
- */
- StyleSize: function (style,size) {
- if (style == "S" || style == "S'") {size = Math.max(0,size-2)}
- else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
- return size;
- },
-
- /*
- * Return the font parameter table for the given style
- */
- TeX: function (style,size) {
- if (style == "S" || style == "S'") {size = Math.max(0,size-2)}
- else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
- return jsMath.TeXparams[size];
- },
-
-
- /*
- * Add the CSS class for the given TeX style
- */
- AddStyle: function (style,size,html) {
- if (style == "S" || style == "S'") {size = Math.max(0,size-2)}
- else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
- if (size != 4) {html = '<SPAN CLASS="size'+size+'">' + html + '</SPAN>'}
- return html;
- },
-
- /*
- * Add the font class, if needed
- */
- AddClass: function (tclass,html) {
- if (tclass != '' && tclass != 'normal') {html = jsMath.HTML.Class(tclass,html)}
- return html;
- }
-
-});
-
-
-jsMath.Package(jsMath.Typeset,{
-
- /*
- * The spacing tables for inter-atom spacing
- * (See rule 20, and Chapter 18, p 170)
- */
- DTsep: {
- ord: {op: 1, bin: 2, rel: 3, inner: 1},
- op: {ord: 1, op: 1, rel: 3, inner: 1},
- bin: {ord: 2, op: 2, open: 2, inner: 2},
- rel: {ord: 3, op: 3, open: 3, inner: 3},
- open: {},
- close: {op: 1, bin:2, rel: 3, inner: 1},
- punct: {ord: 1, op: 1, rel: 1, open: 1, close: 1, punct: 1, inner: 1},
- inner: {ord: 1, op: 1, bin: 2, rel: 3, open: 1, punct: 1, inner: 1}
- },
-
- SSsep: {
- ord: {op: 1},
- op: {ord: 1, op: 1},
- bin: {},
- rel: {},
- open: {},
- close: {op: 1},
- punct: {},
- inner: {op: 1}
- },
-
- /*
- * The sizes used in the tables above
- */
- sepW: ['','thinmuskip','medmuskip','thickmuskip'],
-
-
- /*
- * Find the amount of separation to use between two adjacent
- * atoms in the given style
- */
- GetSeparation: function (l,r,style) {
- if (l && l.atom && r.atom) {
- var table = this.DTsep; if (style.charAt(0) == "S") {table = this.SSsep}
- var row = table[l.type];
- if (row && row[r.type] != null) {return jsMath.TeX[this.sepW[row[r.type]]]}
- }
- return 0;
- },
-
- /*
- * Typeset an mlist (i.e., turn it into HTML).
- * Here, text items of the same class and style are combined
- * to reduce the number of <SPAN> tags used (though it is still
- * huge). Spaces are combined, when possible.
- * ### More needs to be done with that. ###
- * The width of the final box is recomputed at the end, since
- * the final width is not necessarily the sum of the widths of
- * the individual parts (widths are in pixels, but the browsers
- * puts pieces together using sub-pixel accuracy).
- */
- Typeset: function (style,size) {
- this.style = style; this.size = size; var unset = -10000
- this.w = 0; this.h = unset; this.d = unset;
- this.bh = this.h; this.bd = this.d;
- this.tbuf = ''; this.tx = 0; this.tclass = '';
- this.cbuf = ''; this.hbuf = ''; this.hx = 0;
- var mitem = null; var prev; this.x = 0; this.dx = 0;
-
- for (var i = 0; i < this.mlist.length; i++) {
- prev = mitem; mitem = this.mlist[i];
- switch (mitem.type) {
-
- case 'size':
- this.FlushClassed();
- this.size = mitem.size;
- mitem = prev; // hide this from TeX
- break;
-
- case 'style':
- this.FlushClassed();
- if (this.style.charAt(this.style.length-1) == "'")
- {this.style = mitem.style + "'"} else {this.style = mitem.style}
- mitem = prev; // hide this from TeX
- break;
-
- case 'space':
- if (typeof(mitem.w) == 'object') {
- if (this.style.charAt(1) == 'S') {mitem.w = .5*mitem.w[0]/18}
- else if (this.style.charAt(0) == 'S') {mitem.w = .7*mitem.w[0]/18}
- else {mitem.w = mitem.w[0]/18}
- }
- this.dx += mitem.w-0; // mitem.w is sometimes a string?
- mitem = prev; // hide this from TeX
- break;
-
- case 'html':
- this.FlushClassed();
- if (this.hbuf == '') {this.hx = this.x}
- this.hbuf += mitem.html;
- mitem = prev; // hide this from TeX
- break;
-
- default: // atom
- if (!mitem.atom && mitem.type != 'box') break;
- mitem.nuc.x += this.dx + this.GetSeparation(prev,mitem,this.style);
- if (mitem.nuc.y || mitem.nuc.x) mitem.nuc.Styled();
- this.dx = 0; this.x = this.x + this.w;
- this.w += mitem.nuc.w + mitem.nuc.x;
- if (mitem.nuc.format == 'text') {
- if (this.tclass != mitem.nuc.tclass && this.tclass != '') this.FlushText();
- if (this.tbuf == '' && this.cbuf == '') {this.tx = this.x}
- this.tbuf += mitem.nuc.html; this.tclass = mitem.nuc.tclass;
- } else {
- this.FlushClassed();
- if (mitem.nuc.x || mitem.nuc.y) this.Place(mitem.nuc);
- if (this.hbuf == '') {this.hx = this.x}
- this.hbuf += mitem.nuc.html;
- }
- this.h = Math.max(this.h,mitem.nuc.h+mitem.nuc.y); this.bh = Math.max(this.bh,mitem.nuc.bh);
- this.d = Math.max(this.d,mitem.nuc.d-mitem.nuc.y); this.bd = Math.max(this.bd,mitem.nuc.bd);
- break;
- }
- }
-
- this.FlushClassed(); // make sure scaling is included
- if (this.dx) {this.hbuf += jsMath.HTML.Spacer(this.dx); this.w += this.dx}
- if (this.hbuf == '') {return jsMath.Box.Null}
- if (this.h == unset) {this.h = 0}
- if (this.d == unset) {this.d = 0}
- var box = new jsMath.Box('html',this.hbuf,this.w,this.h,this.d);
- box.bh = this.bh; box.bd = this.bd;
- return box;
- },
-
- /*
- * Add the font to the buffered text and move it to the
- * classed-text buffer.
- */
- FlushText: function () {
- if (this.tbuf == '') return;
- this.cbuf += jsMath.Typeset.AddClass(this.tclass,this.tbuf);
- this.tbuf = ''; this.tclass = '';
- },
-
- /*
- * Add the script or scriptscript style to the text and
- * move it to the HTML buffer
- */
- FlushClassed: function () {
- this.FlushText();
- if (this.cbuf == '') return;
- if (this.hbuf == '') {this.hx = this.tx}
- this.hbuf += jsMath.Typeset.AddStyle(this.style,this.size,this.cbuf);
- this.cbuf = '';
- },
-
- /*
- * Add a <SPAN> to position an item's HTML, and
- * adjust the item's height and depth.
- * (This may be replaced buy one of the following browser-specific
- * versions by Browser.Init().)
- */
- Place: function (item) {
- var html = '<SPAN STYLE="position: relative;';
- if (item.x) {html += ' margin-left:'+jsMath.HTML.Em(item.x)+';'}
- if (item.y) {html += ' top:'+jsMath.HTML.Em(-item.y)+';'}
- item.html = html + '">' + item.html + '</SPAN>';
- item.h += item.y; item.d -= item.y;
- item.x = 0; item.y = 0;
- },
-
- /*
- * For MSIE on Windows, backspacing must be done in a separate
- * <SPAN>, otherwise the contents will be clipped. Netscape
- * also doesn't combine vertical and horizontal spacing well.
- * Here, the horizontal and vertical spacing are done separately.
- */
- PlaceSeparateSkips: function (item) {
- if (item.y) {
- if (item.html.match(/^<IMG[^>]*>(<SPAN STYLE="margin-left: [-0-9.]*em"><\/SPAN>)?$/i) && !item.html.match(/top:/)) {
- item.html = item.html.replace(/STYLE="/,
- 'STYLE="position:relative; top:'+jsMath.HTML.Em(-item.y)+';');
- } else {
- item.html = '<SPAN STYLE="position: relative; '
- + 'top:'+jsMath.HTML.Em(-item.y)+';'
- + '">' + item.html + '</SPAN>'
- }
- }
- if (item.x)
- {item.html = jsMath.Browser.msieSpaceFix
- + '<SPAN STYLE="margin-left:'
- + jsMath.HTML.Em(item.x-jsMath.Browser.spaceWidth)+';">'
- + jsMath.Browser.hiddenSpace + '</SPAN>' + item.html}
- item.h += item.y; item.d -= item.y;
- item.x = 0; item.y = 0;
- }
-
-});
-
-
-
-/***************************************************************************/
-
-/*
- * The Parse object handles the parsing of the TeX input string, and creates
- * the mList to be typeset by the Typeset object above.
- */
-
-jsMath.Parse = function (s,font,size,style) {
- var parse = new jsMath.Parser(s,font,size,style);
- parse.Parse();
- return parse;
-}
-
-jsMath.Parser = function (s,font,size,style) {
- this.string = s; this.i = 0;
- this.mlist = new jsMath.mList(null,font,size,style);
-}
-
-jsMath.Package(jsMath.Parser,{
-
- // special characters
- cmd: '\\',
- open: '{',
- close: '}',
-
- // patterns for letters and numbers
- letter: /[a-z]/i,
- number: /[0-9]/,
-
- // the \mathchar definitions (see Appendix B of the TeXbook).
- mathchar: {
- '!': [5,0,0x21],
- '(': [4,0,0x28],
- ')': [5,0,0x29],
- '*': [2,2,0x03], // \ast
- '+': [2,0,0x2B],
- ',': [6,1,0x3B],
- '-': [2,2,0x00],
- '.': [0,1,0x3A],
- '/': [0,1,0x3D],
- ':': [3,0,0x3A],
- ';': [6,0,0x3B],
- '<': [3,1,0x3C],
- '=': [3,0,0x3D],
- '>': [3,1,0x3E],
- '?': [5,0,0x3F],
- '[': [4,0,0x5B],
- ']': [5,0,0x5D],
-// '{': [4,2,0x66],
-// '}': [5,2,0x67],
- '|': [0,2,0x6A]
- },
-
- // handle special \catcode characters
- special: {
- '^': 'HandleSuperscript',
- '_': 'HandleSubscript',
- ' ': 'Space',
- "\t": 'Space',
- "\r": 'Space',
- "\n": 'Space',
- "'": 'Prime',
- '%': 'HandleComment',
- '&': 'HandleEntry'
- },
-
- // the \mathchardef table (see Appendix B of the TeXbook).
- mathchardef: {
- // brace parts
- braceld: [0,3,0x7A],
- bracerd: [0,3,0x7B],
- bracelu: [0,3,0x7C],
- braceru: [0,3,0x7D],
-
- // Greek letters
- alpha: [0,1,0x0B],
- beta: [0,1,0x0C],
- gamma: [0,1,0x0D],
- delta: [0,1,0x0E],
- epsilon: [0,1,0x0F],
- zeta: [0,1,0x10],
- eta: [0,1,0x11],
- theta: [0,1,0x12],
- iota: [0,1,0x13],
- kappa: [0,1,0x14],
- lambda: [0,1,0x15],
- mu: [0,1,0x16],
- nu: [0,1,0x17],
- xi: [0,1,0x18],
- pi: [0,1,0x19],
- rho: [0,1,0x1A],
- sigma: [0,1,0x1B],
- tau: [0,1,0x1C],
- upsilon: [0,1,0x1D],
- phi: [0,1,0x1E],
- chi: [0,1,0x1F],
- psi: [0,1,0x20],
- omega: [0,1,0x21],
- varepsilon: [0,1,0x22],
- vartheta: [0,1,0x23],
- varpi: [0,1,0x24],
- varrho: [0,1,0x25],
- varsigma: [0,1,0x26],
- varphi: [0,1,0x27],
-
- Gamma: [7,0,0x00],
- Delta: [7,0,0x01],
- Theta: [7,0,0x02],
- Lambda: [7,0,0x03],
- Xi: [7,0,0x04],
- Pi: [7,0,0x05],
- Sigma: [7,0,0x06],
- Upsilon: [7,0,0x07],
- Phi: [7,0,0x08],
- Psi: [7,0,0x09],
- Omega: [7,0,0x0A],
-
- // Ord symbols
- aleph: [0,2,0x40],
- imath: [0,1,0x7B],
- jmath: [0,1,0x7C],
- ell: [0,1,0x60],
- wp: [0,1,0x7D],
- Re: [0,2,0x3C],
- Im: [0,2,0x3D],
- partial: [0,1,0x40],
- infty: [0,2,0x31],
- prime: [0,2,0x30],
- emptyset: [0,2,0x3B],
- nabla: [0,2,0x72],
- surd: [1,2,0x70],
- top: [0,2,0x3E],
- bot: [0,2,0x3F],
- triangle: [0,2,0x34],
- forall: [0,2,0x38],
- exists: [0,2,0x39],
- neg: [0,2,0x3A],
- lnot: [0,2,0x3A],
- flat: [0,1,0x5B],
- natural: [0,1,0x5C],
- sharp: [0,1,0x5D],
- clubsuit: [0,2,0x7C],
- diamondsuit: [0,2,0x7D],
- heartsuit: [0,2,0x7E],
- spadesuit: [0,2,0x7F],
-
- // big ops
- coprod: [1,3,0x60],
- bigvee: [1,3,0x57],
- bigwedge: [1,3,0x56],
- biguplus: [1,3,0x55],
- bigcap: [1,3,0x54],
- bigcup: [1,3,0x53],
- intop: [1,3,0x52],
- prod: [1,3,0x51],
- sum: [1,3,0x50],
- bigotimes: [1,3,0x4E],
- bigoplus: [1,3,0x4C],
- bigodot: [1,3,0x4A],
- ointop: [1,3,0x48],
- bigsqcup: [1,3,0x46],
- smallint: [1,2,0x73],
-
- // binary operations
- triangleleft: [2,1,0x2F],
- triangleright: [2,1,0x2E],
- bigtriangleup: [2,2,0x34],
- bigtriangledown: [2,2,0x35],
- wedge: [2,2,0x5E],
- land: [2,2,0x5E],
- vee: [2,2,0x5F],
- lor: [2,2,0x5F],
- cap: [2,2,0x5C],
- cup: [2,2,0x5B],
- ddagger: [2,2,0x7A],
- dagger: [2,2,0x79],
- sqcap: [2,2,0x75],
- sqcup: [2,2,0x74],
- uplus: [2,2,0x5D],
- amalg: [2,2,0x71],
- diamond: [2,2,0x05],
- bullet: [2,2,0x0F],
- wr: [2,2,0x6F],
- div: [2,2,0x04],
- odot: [2,2,0x0C],
- oslash: [2,2,0x0B],
- otimes: [2,2,0x0A],
- ominus: [2,2,0x09],
- oplus: [2,2,0x08],
- mp: [2,2,0x07],
- pm: [2,2,0x06],
- circ: [2,2,0x0E],
- bigcirc: [2,2,0x0D],
- setminus: [2,2,0x6E], // for set difference A\setminus B
- cdot: [2,2,0x01],
- ast: [2,2,0x03],
- times: [2,2,0x02],
- star: [2,1,0x3F],
-
- // Relations
- propto: [3,2,0x2F],
- sqsubseteq: [3,2,0x76],
- sqsupseteq: [3,2,0x77],
- parallel: [3,2,0x6B],
- mid: [3,2,0x6A],
- dashv: [3,2,0x61],
- vdash: [3,2,0x60],
- leq: [3,2,0x14],
- le: [3,2,0x14],
- geq: [3,2,0x15],
- ge: [3,2,0x15],
- succ: [3,2,0x1F],
- prec: [3,2,0x1E],
- approx: [3,2,0x19],
- succeq: [3,2,0x17],
- preceq: [3,2,0x16],
- supset: [3,2,0x1B],
- subset: [3,2,0x1A],
- supseteq: [3,2,0x13],
- subseteq: [3,2,0x12],
- 'in': [3,2,0x32],
- ni: [3,2,0x33],
- owns: [3,2,0x33],
- gg: [3,2,0x1D],
- ll: [3,2,0x1C],
- not: [3,2,0x36],
- sim: [3,2,0x18],
- simeq: [3,2,0x27],
- perp: [3,2,0x3F],
- equiv: [3,2,0x11],
- asymp: [3,2,0x10],
- smile: [3,1,0x5E],
- frown: [3,1,0x5F],
-
- // Arrows
- Leftrightarrow: [3,2,0x2C],
- Leftarrow: [3,2,0x28],
- Rightarrow: [3,2,0x29],
- leftrightarrow: [3,2,0x24],
- leftarrow: [3,2,0x20],
- gets: [3,2,0x20],
- rightarrow: [3,2,0x21],
- to: [3,2,0x21],
- mapstochar: [3,2,0x37],
- leftharpoonup: [3,1,0x28],
- leftharpoondown: [3,1,0x29],
- rightharpoonup: [3,1,0x2A],
- rightharpoondown: [3,1,0x2B],
- nearrow: [3,2,0x25],
- searrow: [3,2,0x26],
- nwarrow: [3,2,0x2D],
- swarrow: [3,2,0x2E],
-
- hbarchar: [0,0,0x16], // for \hbar
- lhook: [3,1,0x2C],
- rhook: [3,1,0x2D],
-
- ldotp: [6,1,0x3A], // ldot as a punctuation mark
- cdotp: [6,2,0x01], // cdot as a punctuation mark
- colon: [6,0,0x3A], // colon as a punctuation mark
-
- '#': [7,0,0x23],
- '$': [7,0,0x24],
- '%': [7,0,0x25],
- '&': [7,0,0x26]
- },
-
- // The delimiter table (see Appendix B of the TeXbook)
- delimiter: {
- '(': [0,0,0x28,3,0x00],
- ')': [0,0,0x29,3,0x01],
- '[': [0,0,0x5B,3,0x02],
- ']': [0,0,0x5D,3,0x03],
- '<': [0,2,0x68,3,0x0A],
- '>': [0,2,0x69,3,0x0B],
- '/': [0,0,0x2F,3,0x0E],
- '|': [0,2,0x6A,3,0x0C],
- '.': [0,0,0x00,0,0x00],
- '\\': [0,2,0x6E,3,0x0F],
- '\\lmoustache': [4,3,0x7A,3,0x40], // top from (, bottom from )
- '\\rmoustache': [5,3,0x7B,3,0x41], // top from ), bottom from (
- '\\lgroup': [4,6,0x28,3,0x3A], // extensible ( with sharper tips
- '\\rgroup': [5,6,0x29,3,0x3B], // extensible ) with sharper tips
- '\\arrowvert': [0,2,0x6A,3,0x3C], // arrow without arrowheads
- '\\Arrowvert': [0,2,0x6B,3,0x3D], // double arrow without arrowheads
-// '\\bracevert': [0,7,0x7C,3,0x3E], // the vertical bar that extends braces
- '\\bracevert': [0,2,0x6A,3,0x3E], // we don't load tt, so use | instead
- '\\Vert': [0,2,0x6B,3,0x0D],
- '\\|': [0,2,0x6B,3,0x0D],
- '\\vert': [0,2,0x6A,3,0x0C],
- '\\uparrow': [3,2,0x22,3,0x78],
- '\\downarrow': [3,2,0x23,3,0x79],
- '\\updownarrow': [3,2,0x6C,3,0x3F],
- '\\Uparrow': [3,2,0x2A,3,0x7E],
- '\\Downarrow': [3,2,0x2B,3,0x7F],
- '\\Updownarrow': [3,2,0x6D,3,0x77],
- '\\backslash': [0,2,0x6E,3,0x0F], // for double coset G\backslash H
- '\\rangle': [5,2,0x69,3,0x0B],
- '\\langle': [4,2,0x68,3,0x0A],
- '\\rbrace': [5,2,0x67,3,0x09],
- '\\lbrace': [4,2,0x66,3,0x08],
- '\\}': [5,2,0x67,3,0x09],
- '\\{': [4,2,0x66,3,0x08],
- '\\rceil': [5,2,0x65,3,0x07],
- '\\lceil': [4,2,0x64,3,0x06],
- '\\rfloor': [5,2,0x63,3,0x05],
- '\\lfloor': [4,2,0x62,3,0x04]
- },
-
- /*
- * The basic macros for plain TeX.
- *
- * When the control sequence on the left is called, the JavaScript
- * funtion on the right is called, with the name of the control sequence
- * as its first parameter (this way, the same function can be called by
- * several different control sequences to do similar actions, and the
- * function can still tell which TeX command was issued). If the right
- * is an array, the first entry is the routine to call, and the
- * remaining entries in the array are parameters to pass to the function
- * as the second parameter (they are in an array reference).
- *
- * Note: TeX macros as defined by the user are discussed below.
- */
- macros: {
- displaystyle: ['HandleStyle','D'],
- textstyle: ['HandleStyle','T'],
- scriptstyle: ['HandleStyle','S'],
- scriptscriptstyle: ['HandleStyle','SS'],
-
- rm: ['HandleFont',0],
- mit: ['HandleFont',1],
- oldstyle: ['HandleFont',1],
- cal: ['HandleFont',2],
- it: ['HandleFont',4],
- bf: ['HandleFont',6],
-
- left: 'HandleLeft',
- right: 'HandleRight',
-
- arcsin: ['NamedOp',0],
- arccos: ['NamedOp',0],
- arctan: ['NamedOp',0],
- arg: ['NamedOp',0],
- cos: ['NamedOp',0],
- cosh: ['NamedOp',0],
- cot: ['NamedOp',0],
- coth: ['NamedOp',0],
- csc: ['NamedOp',0],
- deg: ['NamedOp',0],
- det: 'NamedOp',
- dim: ['NamedOp',0],
- exp: ['NamedOp',0],
- gcd: 'NamedOp',
- hom: ['NamedOp',0],
- inf: 'NamedOp',
- ker: ['NamedOp',0],
- lg: ['NamedOp',0],
- lim: 'NamedOp',
- liminf: ['NamedOp',null,'lim<SPAN STYLE="margin-left: '+1/6+'em"></SPAN>inf'],
- limsup: ['NamedOp',null,'lim<SPAN STYLE="margin-left: '+1/6+'em"></SPAN>sup'],
- ln: ['NamedOp',0],
- log: ['NamedOp',0],
- max: 'NamedOp',
- min: 'NamedOp',
- Pr: 'NamedOp',
- sec: ['NamedOp',0],
- sin: ['NamedOp',0],
- sinh: ['NamedOp',0],
- sup: 'NamedOp',
- tan: ['NamedOp',0],
- tanh: ['NamedOp',0],
-
- vcenter: ['HandleAtom','vcenter'],
- overline: ['HandleAtom','overline'],
- underline: ['HandleAtom','underline'],
- over: 'HandleOver',
- overwithdelims: 'HandleOver',
- atop: 'HandleOver',
- atopwithdelims: 'HandleOver',
- above: 'HandleOver',
- abovewithdelims: 'HandleOver',
- brace: ['HandleOver','\\{','\\}'],
- brack: ['HandleOver','[',']'],
- choose: ['HandleOver','(',')'],
-
- overbrace: ['HandleLeaders','downbrace',1],
- underbrace: ['HandleLeaders','upbrace',1,1],
- overrightarrow: ['HandleLeaders','rightarrow'],
- overleftarrow: ['HandleLeaders','leftarrow'],
-
- llap: 'HandleLap',
- rlap: 'HandleLap',
- ulap: 'HandleLap',
- dlap: 'HandleLap',
- raise: 'RaiseLower',
- lower: 'RaiseLower',
- moveleft: 'MoveLeftRight',
- moveright: 'MoveLeftRight',
-
- frac: 'Frac',
- root: 'Root',
- sqrt: 'Sqrt',
-
- // TeX substitution macros
- hbar: ['Macro','\\hbarchar\\kern-.5em h'],
- ne: ['Macro','\\not='],
- neq: ['Macro','\\not='],
- notin: ['Macro','\\mathrel{\\rlap{\\kern2mu/}}\\in'],
- cong: ['Macro','\\mathrel{\\lower2mu{\\mathrel{{\\rlap{=}\\raise6mu\\sim}}}}'],
- bmod: ['Macro','\\mathbin{\\rm mod}'],
- pmod: ['Macro','\\kern 18mu ({\\rm mod}\\,\\,#1)',1],
- 'int': ['Macro','\\intop\\nolimits'],
- oint: ['Macro','\\ointop\\nolimits'],
- doteq: ['Macro','\\buildrel\\textstyle.\\over='],
- ldots: ['Macro','\\mathinner{\\ldotp\\ldotp\\ldotp}'],
- cdots: ['Macro','\\mathinner{\\cdotp\\cdotp\\cdotp}'],
- vdots: ['Macro','\\mathinner{\\rlap{\\raise8pt{.\\rule 0pt 6pt 0pt}}\\rlap{\\raise4pt{.}}.}'],
- ddots: ['Macro','\\mathinner{\\kern1mu\\raise7pt{\\rule 0pt 7pt 0pt .}\\kern2mu\\raise4pt{.}\\kern2mu\\raise1pt{.}\\kern1mu}'],
- joinrel: ['Macro','\\mathrel{\\kern-4mu}'],
- relbar: ['Macro','\\mathrel{\\smash-}'], // \smash, because - has the same height as +
- Relbar: ['Macro','\\mathrel='],
- bowtie: ['Macro','\\mathrel\\triangleright\\joinrel\\mathrel\\triangleleft'],
- models: ['Macro','\\mathrel|\\joinrel='],
- mapsto: ['Macro','\\mapstochar\\rightarrow'],
- rightleftharpoons: ['Macro','\\vcenter{\\mathrel{\\rlap{\\raise3mu{\\rightharpoonup}}}\\leftharpoondown}'],
- hookrightarrow: ['Macro','\\lhook\\joinrel\\rightarrow'],
- hookleftarrow: ['Macro','\\leftarrow\\joinrel\\rhook'],
- Longrightarrow: ['Macro','\\Relbar\\joinrel\\Rightarrow'],
- longrightarrow: ['Macro','\\relbar\\joinrel\\rightarrow'],
- longleftarrow: ['Macro','\\leftarrow\\joinrel\\relbar'],
- Longleftarrow: ['Macro','\\Leftarrow\\joinrel\\Relbar'],
- longmapsto: ['Macro','\\mapstochar\\char{cmsy10}{0}\\joinrel\\rightarrow'],
- longleftrightarrow: ['Macro','\\leftarrow\\joinrel\\rightarrow'],
- Longleftrightarrow: ['Macro','\\Leftarrow\\joinrel\\Rightarrow'],
- iff: ['Macro','\\;\\Longleftrightarrow\\;'],
- mathrm: ['Macro','{\\rm #1}',1],
- mathbf: ['Macro','{\\bf #1}',1],
- mathbb: ['Macro','{\\bf #1}',1],
- mathit: ['Macro','{\\it #1}',1],
-
- TeX: ['Macro','T\\kern-.1667em\\lower.5ex{E}\\kern-.125em X'],
-
- limits: ['Limits',1],
- nolimits: ['Limits',0],
-
- ',': ['Spacer',1/6],
- ':': ['Spacer',1/6], // for LaTeX
- '>': ['Spacer',2/9],
- ';': ['Spacer',5/18],
- '!': ['Spacer',-1/6],
- enspace: ['Spacer',1/2],
- quad: ['Spacer',1],
- qquad: ['Spacer',2],
- thinspace: ['Spacer',1/6],
- negthinspace: ['Spacer',-1/6],
-
- hskip: 'Hskip',
- kern: 'Hskip',
- rule: ['Rule','colored'],
- space: ['Rule','blank'],
-
- big: ['MakeBig','ord',0.85],
- Big: ['MakeBig','ord',1.15],
- bigg: ['MakeBig','ord',1.45],
- Bigg: ['MakeBig','ord',1.75],
- bigl: ['MakeBig','open',0.85],
- Bigl: ['MakeBig','open',1.15],
- biggl: ['MakeBig','open',1.45],
- Biggl: ['MakeBig','open',1.75],
- bigr: ['MakeBig','close',0.85],
- Bigr: ['MakeBig','close',1.15],
- biggr: ['MakeBig','close',1.45],
- Biggr: ['MakeBig','close',1.75],
- bigm: ['MakeBig','rel',0.85],
- Bigm: ['MakeBig','rel',1.15],
- biggm: ['MakeBig','rel',1.45],
- Biggm: ['MakeBig','rel',1.75],
-
- mathord: ['HandleAtom','ord'],
- mathop: ['HandleAtom','op'],
- mathopen: ['HandleAtom','open'],
- mathclose: ['HandleAtom','close'],
- mathbin: ['HandleAtom','bin'],
- mathrel: ['HandleAtom','rel'],
- mathpunct: ['HandleAtom','punct'],
- mathinner: ['HandleAtom','inner'],
-
- mathchoice: 'MathChoice',
- buildrel: 'BuildRel',
-
- hbox: 'HBox',
- text: 'HBox',
- mbox: 'HBox',
- fbox: 'FBox',
-
- strut: 'Strut',
- mathstrut: ['Macro','\\vphantom{(}'],
- phantom: ['Phantom',1,1],
- vphantom: ['Phantom',1,0],
- hphantom: ['Phantom',0,1],
- smash: 'Smash',
-
- acute: ['MathAccent', [7,0,0x13]],
- grave: ['MathAccent', [7,0,0x12]],
- ddot: ['MathAccent', [7,0,0x7F]],
- tilde: ['MathAccent', [7,0,0x7E]],
- bar: ['MathAccent', [7,0,0x16]],
- breve: ['MathAccent', [7,0,0x15]],
- check: ['MathAccent', [7,0,0x14]],
- hat: ['MathAccent', [7,0,0x5E]],
- vec: ['MathAccent', [0,1,0x7E]],
- dot: ['MathAccent', [7,0,0x5F]],
- widetilde: ['MathAccent', [0,3,0x65]],
- widehat: ['MathAccent', [0,3,0x62]],
-
- '_': ['Replace','ord','_','normal',-.4,.1],
- ' ': ['Replace','ord',' ','normal'],
- angle: ['Replace','ord','∠','normal'],
-
- matrix: 'Matrix',
- array: 'Matrix', // ### still need to do alignment options ###
- pmatrix: ['Matrix','(',')','c'],
- cases: ['Matrix','\\{','.',['l','l']],
- cr: 'HandleRow',
- '\\': 'HandleRow',
-
- // LaTeX
- begin: 'Begin',
- end: 'End',
- tiny: ['HandleSize',0],
- Tiny: ['HandleSize',1], // non-standard
- scriptsize: ['HandleSize',2],
- small: ['HandleSize',3],
- normalsize: ['HandleSize',4],
- large: ['HandleSize',5],
- Large: ['HandleSize',6],
- LARGE: ['HandleSize',7],
- huge: ['HandleSize',8],
- Huge: ['HandleSize',9],
- dots: ['Macro','\\ldots'],
-
- // Extensions to TeX
- color: 'Color',
- href: 'Href',
- 'class': 'Class',
- style: 'Style',
- unicode: 'Unicode',
-
- // debugging and test routines
- 'char': 'Char'
- },
-
- /*
- * LaTeX environments
- */
- environments: {
- array: 'Array',
- matrix: ['Array',null,null,'c'],
- pmatrix: ['Array','(',')','c'],
- bmatrix: ['Array','[',']','c'],
- Bmatrix: ['Array','\\{','\\}','c'],
- vmatrix: ['Array','\\vert','\\vert','c'],
- Vmatrix: ['Array','\\Vert','\\Vert','c'],
- cases: ['Array','\\{','.','ll'],
- eqnarray: ['Array',null,null,'rcl',[5/18,5/18]]
- },
-
- /*
- * The horizontally stretchable delimiters
- */
- leaders: {
- downbrace: {left: [3,0x7A], lmid: [3,0x7D], rmid: [3,0x7C], right: [3,0x7B]},
- upbrace: {left: [3,0x7C], lmid: [3,0x7B], rmid: [3,0x7A], right: [3,0x7D]},
- leftarrow: {left: [2,0x20], rep: [2,0x00]},
- rightarrow: {rep: [2,0x00], right: [2,0x21]}
- },
-
-
- /***************************************************************************/
-
- /*
- * Add special characters to list above. (This makes it possible
- * to define them in a variable that the user can change.)
- */
- AddSpecial: function (obj) {
- for (var id in obj) {
- jsMath.Parser.prototype.special[jsMath.Parser.prototype[id]] = obj[id];
- }
- },
-
- /*
- * Throw an error
- */
- Error: function (s) {
- this.i = this.string.length;
- if (s.error) {this.error = s.error} else {
- if (!this.error) {this.error = s}
- }
- },
-
- /***************************************************************************/
-
- /*
- * Check if the next character is a space
- */
- nextIsSpace: function () {
- return this.string.charAt(this.i) == ' ';
- },
-
- /*
- * Parse a substring to get its mList, and return it.
- * Check that no errors occured
- */
- Process: function (arg) {
- var data = this.mlist.data;
- arg = jsMath.Parse(arg,data.font,data.size,data.style);
- if (arg.error) {this.Error(arg); return}
- if (arg.mlist.Length() == 0) {return null}
- if (arg.mlist.Length() == 1) {
- var atom = arg.mlist.Last();
- if (atom.atom && atom.type == 'ord' && atom.nuc &&
- !atom.sub && !atom.sup && (atom.nuc.type == 'text' || atom.nuc.type == 'TeX'))
- {return atom.nuc}
- }
- return {type: 'mlist', mlist: arg.mlist};
- },
-
- /*
- * Get and return a control-sequence name from the TeX string
- */
- GetCommand: function () {
- var letter = /^([a-z]+|.) ?/i;
- var cmd = letter.exec(this.string.slice(this.i));
- if (cmd) {this.i += cmd[1].length; return cmd[1]}
- this.Error("Missing control sequnece name at end of string or argument"); return
- },
-
- /*
- * Get and return a TeX argument (either a single character or control sequence,
- * or the contents of the next set of braces).
- */
- GetArgument: function (name,noneOK) {
- while (this.nextIsSpace()) {this.i++}
- if (this.i >= this.string.length) {if (!noneOK) this.Error("Missing argument for "+name); return}
- if (this.string.charAt(this.i) == this.close) {if (!noneOK) this.Error("Extra close brace"); return}
- if (this.string.charAt(this.i) == this.cmd) {this.i++; return this.cmd+this.GetCommand()}
- if (this.string.charAt(this.i) != this.open) {return this.string.charAt(this.i++)}
- var j = ++this.i; var pcount = 1; var c = '';
- while (this.i < this.string.length) {
- c = this.string.charAt(this.i++);
- if (c == this.cmd) {this.i++}
- else if (c == this.open) {pcount++}
- else if (c == this.close) {
- if (pcount == 0) {this.Error("Extra close brace"); return}
- if (--pcount == 0) {return this.string.slice(j,this.i-1)}
- }
- }
- this.Error("Missing close brace");
- },
-
- /*
- * Get an argument and process it into an mList
- */
- ProcessArg: function (name) {
- var arg = this.GetArgument(name); if (this.error) return;
- return this.Process(arg);
- },
-
- /*
- * Get the name of a delimiter (check it in the delimiter list).
- */
- GetDelimiter: function (name) {
- while (this.nextIsSpace()) {this.i++}
- var c = this.string.charAt(this.i);
- if (this.i < this.string.length) {
- this.i++;
- if (c == this.cmd) {c = '\\'+this.GetCommand(name); if (this.error) return}
- if (this.delimiter[c] != null) {return this.delimiter[c]}
- }
- this.Error("Missing or unrecognized delimiter for "+name);
- },
-
- /*
- * Get a dimension (including its units).
- * Convert the dimen to em's, except for mu's, which must be
- * converted when typeset.
- */
- GetDimen: function (name,nomu) {
- var rest; var advance = 0;
- if (this.nextIsSpace()) {this.i++}
- if (this.string.charAt(this.i) == '{') {
- rest = this.GetArgument(name);
- } else {
- rest = this.string.slice(this.i);
- advance = 1;
- }
- var match = rest.match(/^\s*([-+]?(\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|px)/);
- if (!match) {this.Error("Missing dimension or its units for "+name); return}
- if (advance) {
- this.i += match[0].length;
- if (this.nextIsSpace()) {this.i++}
- }
- var d = match[1]-0;
- if (match[4] == 'px') {d /= jsMath.em}
- else if (match[4] == 'pt') {d /= 10}
- else if (match[4] == 'ex') {d *= jsMath.TeX.x_height}
- else if (match[4] == 'mu') {if (nomu) {d = d/18} else {d = [d,'mu']}}
- return d;
- },
-
- /*
- * Get the next non-space character
- */
- GetNext: function () {
- while (this.nextIsSpace()) {this.i++}
- return this.string.charAt(this.i);
- },
-
- /*
- * Get an optional LaTeX argument in brackets
- */
- GetBrackets: function (name) {
- var c = this.GetNext(); if (c != '[') return '';
- var start = ++this.i; var pcount = 0;
- while (this.i < this.string.length) {
- var c = this.string.charAt(this.i++);
- if (c == '{') {pcount++}
- else if (c == '}') {
- if (pcount == 0)
- {this.Error("Extra close brace while looking for ']'"); return}
- pcount --;
- } else if (c == this.cmd) {
- this.i++;
- } else if (c == ']') {
- if (pcount == 0) {return this.string.slice(start,this.i-1)}
- }
- }
- this.Error("Couldn't find closing ']' for argument to "+this.cmd+name);
- },
-
- /*
- * Get everything up to the given control sequence name (token)
- */
- GetUpto: function (name,token) {
- while (this.nextIsSpace()) {this.i++}
- var start = this.i; var pcount = 0;
- while (this.i < this.string.length) {
- var c = this.string.charAt(this.i++);
- if (c == '{') {pcount++}
- else if (c == '}') {
- if (pcount == 0)
- {this.Error("Extra close brace while looking for "+this.cmd+token); return}
- pcount --;
- } else if (c == this.cmd) {
- // really need separate counter for begin/end
- // and it should really be a stack (new pcount for each begin)
- if (this.string.slice(this.i,this.i+5) == "begin") {pcount++; this.i+=4}
- else if (this.string.slice(this.i,this.i+3) == "end") {
- if (pcount > 0) {pcount--; this.i += 2}
- }
- if (pcount == 0) {
- if (this.string.slice(this.i,this.i+token.length) == token) {
- c = this.string.charAt(this.i+token.length);
- if (c.match(/[^a-z]/i) || !token.match(/[a-z]/i)) {
- var arg = this.string.slice(start,this.i-1);
- this.i += token.length;
- return arg;
- }
- }
- }
- this.i++;
- }
- }
- this.Error("Couldn't find "+this.cmd+token+" for "+name);
- },
-
- /*
- * Get a parameter delimited by a control sequence, and
- * process it to get its mlist
- */
- ProcessUpto: function (name,token) {
- var arg = this.GetUpto(name,token); if (this.error) return;
- return this.Process(arg);
- },
-
- /*
- * Get everything up to \end{env}
- */
- GetEnd: function (env) {
- var body = ''; var name = '';
- while (name != env) {
- body += this.GetUpto('begin{'+env+'}','end'); if (this.error) return;
- name = this.GetArgument(this.cmd+'end'); if (this.error) return;
- }
- return body;
- },
-
-
- /***************************************************************************/
-
-
- /*
- * Ignore spaces
- */
- Space: function () {},
-
- /*
- * Collect together any primes and convert them to a superscript
- */
- Prime: function (c) {
- var base = this.mlist.Last();
- if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
- {base = this.mlist.Add(jsMath.mItem.Atom('ord',null))}
- if (base.sup) {this.Error("Prime causes double exponent: use braces to clarify"); return}
- var sup = '';
- while (c == "'") {sup += '\\prime'; c = this.GetNext(); if (c == "'") {this.i++}}
- base.sup = this.Process(sup);
- },
-
- /*
- * Raise or lower its parameter by a given amount
- * @@@ Note that this is different from TeX, which requires an \hbox @@@
- * ### make this work with mu's ###
- */
- RaiseLower: function (name) {
- var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
- var box = this.ProcessArg(this.cmd+name); if (this.error) return;
- if (name == 'lower') {h = -h}
- this.mlist.Add(new jsMath.mItem('raise',{nuc: box, raise: h}));
- },
-
- /*
- * Shift an expression to the right or left
- * @@@ Note that this is different from TeX, which requires a \vbox @@@
- * ### make this work with mu's ###
- */
- MoveLeftRight: function (name) {
- var x = this.GetDimen(this.cmd+name,1); if (this.error) return;
- var box = this.ProcessArg(this.cmd+name); if (this.error) return;
- if (name == 'moveleft') {x = -x}
- this.mlist.Add(jsMath.mItem.Space(x));
- this.mlist.Add(jsMath.mItem.Atom('ord',box));
- this.mlist.Add(jsMath.mItem.Space(-x));
- },
-
- /*
- * Show the argument in a particular color
- * ### doesn't affect horizontal rules; can we fix that? ###
- */
- Color: function (name) {
- var color = this.GetArgument(this.cmd+name); if (this.error) return;
- // check that it looks like a color?
- this.AddHTML(name,['<SPAN STYLE="color: '+color+'">','</SPAN>']);
- },
-
- /*
- * Make the argument be a link
- */
- Href: function (name) {
- var href = this.GetArgument(this.cmd+name); if (this.error) return;
- this.AddHTML(name,['<A CLASS="mathlink" HREF="'+href+'">','</A>']);
- },
-
- /*
- * Apply a CSS class to the argument
- */
- Class: function (name) {
- var clss = this.GetArgument(this.cmd+name); if (this.error) return;
- this.AddHTML(name,['<SPAN CLASS="'+clss+'">','</SPAN>']);
- },
-
- /*
- * Apply a CSS style to the argument
- */
- Style: function (name) {
- var style = this.GetArgument(this.cmd+name); if (this.error) return;
- this.AddHTML(name,['<SPAN STYLE="'+style+'">','</SPAN>']);
- },
-
- /*
- * Insert some raw HTML around the argument (this will not affect
- * the spacing or other TeX features)
- */
- AddHTML: function (name,params) {
- var data = this.mlist.data;
- var arg = this.GetArgument(this.cmd+name); if (this.error) return;
- arg = jsMath.Parse(arg,data.font,data.size,data.style);
- if (arg.error) {this.Error(arg); return}
- this.mlist.Add(jsMath.mItem.HTML(params[0]));
- for (var i = 0; i < arg.mlist.Length(); i++) {this.mlist.Add(arg.mlist.Get(i))}
- this.mlist.Add(jsMath.mItem.HTML(params[1]));
- },
-
- /*
- * Insert a unicode reference as an Ord atom. Its argument should
- * be the unicode code point, e.g. \unicode{8211}, or \unicode{x203F}.
- * You can also specify the height and depth in ems, e.g.,
- * \unicode{8211,.6,-.3}
- */
- Unicode: function (name) {
- var arg = this.GetArgument(this.cmd+name); if (this.error) return;
- arg = arg.split(','); arg[0] = '&#'+arg[0]+';';
- if (!arg[1]) {arg[1] = 'normal'}
- this.mlist.Add(jsMath.mItem.TextAtom('ord',arg[0],arg[1],arg[2],arg[3]));
- },
-
- /*
- * Implements \frac{num}{den}
- */
- Frac: function (name) {
- var num = this.ProcessArg(this.cmd+name); if (this.error) return;
- var den = this.ProcessArg(this.cmd+name); if (this.error) return;
- this.mlist.Add(jsMath.mItem.Fraction('over',num,den));
- },
-
- /*
- * Implements \sqrt[n]{...}
- */
- Sqrt: function (name) {
- var n = this.GetBrackets(this.cmd+name); if (this.error) return;
- var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
- box = jsMath.mItem.Atom('radical',arg);
- if (this.n != '') {box.root = this.Process(n); if (this.error) return}
- this.mlist.Add(box);
- },
-
- /*
- * Implements \root...\of{...}
- */
- Root: function (name) {
- var n = this.ProcessUpto(this.cmd+name,'of'); if (this.error) return;
- var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
- box = jsMath.mItem.Atom('radical',arg);
- box.root = n; this.mlist.Add(box);
- },
-
-
- /*
- * Implements \mathchoice{}{}{}{}
- */
- MathChoice: function (name) {
- var D = this.ProcessArg(this.cmd+name); if (this.error) return;
- var T = this.ProcessArg(this.cmd+name); if (this.error) return;
- var S = this.ProcessArg(this.cmd+name); if (this.error) return;
- var SS = this.ProcessArg(this.cmd+name); if (this.error) return;
- var box = new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS});
- this.mlist.Add(new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS}));
- },
-
- /*
- * Implements \buildrel...\over{...}
- */
- BuildRel: function (name) {
- var top = this.ProcessUpto(this.cmd+name,'over'); if (this.error) return;
- var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
- var op = jsMath.mItem.Atom('op',bot);
- op.limits = 1; op.sup = top;
- this.mlist.Add(op);
- },
-
- /*
- * Create a delimiter of the type and size specified in the parameters
- */
- MakeBig: function (name,data) {
- var type = data[0]; var h = data[1] * jsMath.p_height;
- var delim = this.GetDelimiter(this.cmd+name); if (this.error) return;
- this.mlist.Add(jsMath.mItem.Atom(type,jsMath.Box.Delimiter(h,delim,'T')));
- },
-
- /*
- * Insert the specified character in the given font.
- */
- Char: function (name) {
- var font = this.GetArgument(this.cmd+name); if (this.error) return;
- var n = this.GetArgument(this.cmd+name); if (this.error) return;
- this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,'T',this.mlist.data.size)));
- return;
- },
-
- /*
- * Create an array or matrix.
- */
- Matrix: function (name,delim) {
- var data = this.mlist.data;
- var arg = this.GetArgument(this.cmd+name); if (this.error) return;
- var parse = new jsMath.Parser(arg+'\\\\',null,data.size);
- parse.matrix = name; parse.row = []; parse.table = [];
- parse.Parse(); if (parse.error) {this.Error(parse); return}
- parse.HandleRow(name,1); // be sure the last row is recorded
- var box = jsMath.Box.Layout(data.size,parse.table,delim[2]);
- // Add parentheses, if needed
- if (delim[0] && delim[1]) {
- var left = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
- var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
- box = jsMath.Box.SetList([left,box,right],data.style,data.size);
- }
- this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
- },
-
- /*
- * When we see an '&', try to add a matrix entry to the row data.
- * (Use all the data in the current mList, and then clear it)
- */
- HandleEntry: function (name) {
- if (!this.matrix)
- {this.Error(name+" can only appear in a matrix or array"); return}
- if (this.mlist.data.openI != null) {
- var open = this.mlist.Get(this.mlist.data.openI);
- if (open.left) {this.Error("Missing "+this.cmd+"right")}
- else {this.Error("Missing close brace")}
- }
- if (this.mlist.data.overI != null) {this.mlist.Over()}
- var data = this.mlist.data;
- this.mlist.Atomize('T',data.size); var box = this.mlist.Typeset('T',data.size);
- this.row[this.row.length] = box;
- this.mlist = new jsMath.mList(null,null,data.size);
- },
-
- /*
- * When we see a \cr or \\, try to add a row to the table
- */
- HandleRow: function (name,last) {
- if (!this.matrix)
- {this.Error(this.cmd+name+" can only appear in a matrix or array"); return}
- this.HandleEntry(name);
- if (!last || this.row.length > 1 || this.row[0].format != 'null')
- {this.table[this.table.length] = this.row}
- this.row = [];
- },
-
- /*
- * LaTeX array environment
- */
- Array: function (name,delim) {
- var columns = delim[2]; var cspacing = delim[3];
- if (!columns) {
- columns = this.GetArgument(this.cmd+'begin{'+name+'}');
- if (this.error) return;
- }
- columns = columns.replace(/[^clr]/g,'');
- columns = columns.split('');
- var data = this.mlist.data;
- var arg = this.GetEnd(name); if (this.error) return;
- var parse = new jsMath.Parser(arg+'\\\\',null,data.size);
- parse.matrix = name; parse.row = []; parse.table = [];
- parse.Parse(); if (parse.error) {this.Error(parse); return}
- parse.HandleRow(name,1); // be sure the last row is recorded
- var box = jsMath.Box.Layout(data.size,parse.table,columns,cspacing);
- // Add parentheses, if needed
- if (delim[0] && delim[1]) {
- var left = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
- var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
- box = jsMath.Box.SetList([left,box,right],data.style,data.size);
- }
- this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
- },
-
- /*
- * LaTeX \begin{env}
- */
- Begin: function (name) {
- var env = this.GetArgument(this.cmd+name); if (this.error) return;
- if (env.match(/[^a-z*]/i)) {this.Error('Invalid environment name "'+env+'"'); return}
- if (!this.environments[env]) {this.Error('Unknown environment "'+env+'"'); return}
- var cmd = this.environments[env];
- if (typeof(cmd) == "string") {cmd = [cmd]}
- this[cmd[0]](env,cmd.slice(1));
- },
-
- /*
- * LaTeX \end{env}
- */
- End: function (name) {
- var env = this.GetArgument(this.cmd+name); if (this.error) return;
- this.Error(this.cmd+name+'{'+env+'} without matching '+this.cmd+'begin');
- },
-
- /*
- * Add a fixed amount of horizontal space
- */
- Spacer: function (name,w) {
- this.mlist.Add(jsMath.mItem.Space(w-0));
- },
-
- /*
- * Add horizontal space given by the argument
- */
- Hskip: function (name) {
- var w = this.GetDimen(this.cmd+name); if (this.error) return;
- this.mlist.Add(jsMath.mItem.Space(w));
- },
-
- /*
- * Typeset the argument as plain text rather than math.
- */
- HBox: function (name) {
- var text = this.GetArgument(this.cmd+name); if (this.error) return;
- var box = jsMath.Box.InternalMath(text,this.mlist.data.size);
- this.mlist.Add(jsMath.mItem.Typeset(box));
- },
-
- /*
- * Implement \fbox{...}
- */
- FBox: function (name) {
- var text = this.GetArgument(this.cmd+name); if (this.error) return;
- var arg = jsMath.Box.InternalMath(text,this.mlist.data.size);
- var f = 0.25 * jsMath.sizes[this.mlist.data.size]/100;
- var box = jsMath.Box.Set(arg,this.mlist.data.style,this.mlist.data.size,1).Remeasured();
- var frame = jsMath.HTML.Frame(-f,-box.d-f,box.w+2*f,box.h+box.d+2*f);
- box.html = frame + box.html + jsMath.HTML.Spacer(f);
- box.h += f; box.d += f; box.w +=2*f; box.x += f;
- box.bh = Math.max(box.bh,box.h); box.bd = Math.max(box.bd,box.d);
- this.mlist.Add(jsMath.mItem.Atom('ord',box));
- },
-
- /*
- * Insert a rule of a particular width, height and depth
- * This replaces \hrule and \vrule
- * @@@ not a standard TeX command, and all three parameters must be given @@@
- */
- Rule: function (name,style) {
- var w = this.GetDimen(this.cmd+name,1); if (this.error) return;
- var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
- var d = this.GetDimen(this.cmd+name,1); if (this.error) return;
- h += d; var html;
- if (h != 0) {h = Math.max(1.05/jsMath.em,h)}
- if (h == 0 || w == 0) {style = "blank"}
- if (w == 0) {
- html = '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'border:0px none; width:1px; margin-right:-1px; '
- + 'height:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+'">';
- } else if (style == "blank") {
- html = '<IMG SRC="'+jsMath.blank+'" STYLE="border:0px none; '
- + 'height:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+'; '
- + 'width:' +jsMath.HTML.Em(w*jsMath.Browser.imgScale)+'">';
- } else {
- html = '<IMG SRC="'+jsMath.blank+'" STYLE="'
- + 'position: relative; top:1px; height:1px; border:0px none; '
- + 'border-top:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+' solid; '
- + 'width:' +jsMath.HTML.Em(w*jsMath.Browser.imgScale)+'">';
- }
- if (d) {
- html = '<SPAN STYLE="vertical-align:'+jsMath.HTML.Em(-d)+'">'
- + html + '</SPAN>';
- }
- this.mlist.Add(jsMath.mItem.Typeset(new jsMath.Box('html',html,w,h-d,d)));
- },
-
- /*
- * Inserts an empty box of a specific height and depth
- */
- Strut: function () {
- var size = this.mlist.data.size;
- var box = jsMath.Box.Text('','normal','T',size).Styled();
- box.bh = box.bd = 0; box.h = .8; box.d = .3; box.w = 0;
- this.mlist.Add(jsMath.mItem.Typeset(box));
- },
-
- /*
- * Handles \phantom, \vphantom and \hphantom
- */
- Phantom: function (name,data) {
- var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
- this.mlist.Add(new jsMath.mItem('phantom',{phantom: arg, v: data[0], h: data[1]}));
- },
-
- /*
- * Implements \smash
- */
- Smash: function (name,data) {
- var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
- this.mlist.Add(new jsMath.mItem('smash',{smash: arg}));
- },
-
- /*
- * Puts an accent on the following argument
- */
- MathAccent: function (name,accent) {
- var c = this.ProcessArg(this.cmd+name); if (this.error) return;
- var atom = jsMath.mItem.Atom('accent',c); atom.accent = accent[0];
- this.mlist.Add(atom);
- },
-
- /*
- * Handles functions and operators like sin, cos, sum, etc.
- */
- NamedOp: function (name,data) {
- var a = (name.match(/[^acegm-su-z]/)) ? 1: 0;
- var d = (name.match(/[gjpqy]/)) ? 1: 0;
- if (data[1]) {name = data[1]}
- var box = jsMath.mItem.TextAtom('op',name,'cmr10',a,d);
- if (data[0] != null) {box.limits = data[0]}
- this.mlist.Add(box);
- },
-
- /*
- * Implements \limits
- */
- Limits: function (name,data) {
- var atom = this.mlist.Last();
- if (!atom || atom.type != 'op')
- {this.Error(this.cmd+name+" is allowed only on operators"); return}
- atom.limits = data[0];
- },
-
- /*
- * Implements macros like those created by \def. The named control
- * sequence is replaced by the string given as the first data value.
- * If there is a second data value, this specifies how many arguments
- * the macro uses, and in this case, those arguments are substituted
- * for #1, #2, etc. within the replacement string.
- *
- * See the jsMath.Macro() command below for more details.
- */
- Macro: function (name,data) {
- var text = data[0]
- if (data[1]) {
- var args = [];
- for (var i = 0; i < data[1]; i++)
- {args[args.length] = this.GetArgument(this.cmd+name); if (this.error) return}
- text = ''; var c; var i = 0;
- while (i < data[0].length) {
- c = data[0].charAt(i++);
- if (c == '\\') {text += c + data[0].charAt(i++)}
- else if (c == '#') {
- c = data[0].charAt(i++);
- if (c == "#") {text += c} else {
- if (!c.match(/[1-9]/) || c > args.length)
- {this.Error("Illegal macro argument reference"); return}
- text += args[c-1];
- }
- } else {text += c}
- }
- }
- this.string = text + this.string.slice(this.i);
- this.i = 0;
- },
-
- /*
- * Replace the control sequence with the given text
- */
- Replace: function (name,data) {
- this.mlist.Add(jsMath.mItem.TextAtom(data[0],data[1],data[2],data[3]));
- },
-
- /*
- * Implements \overbrace, \underbrace, etc.
- */
- HandleLeaders: function (name,data) {
- var box = this.ProcessArg(this.cmd+name); if (this.error) return;
- box = jsMath.Box.Set(box,'D',this.mlist.data.size).Remeasured();
- var leader = jsMath.Box.Leaders(box.w,this.leaders[data[0]]);
- if (data[2]) {leader.y = -leader.h - box.d} else {leader.y = box.h + leader.d}
- leader.x = -(leader.w + box.w)/2;
- box = jsMath.mItem.Atom(data[1]? 'op': 'inner',
- jsMath.Box.SetList([box,leader],'T',this.mlist.data.size));
- box.limits = (data[1]? 1: 0);
- this.mlist.Add(box);
- },
-
- /*
- * Implements \llap, \rlap, etc.
- */
- HandleLap: function (name) {
- var box = this.ProcessArg(); if (this.error) return;
- box = this.mlist.Add(new jsMath.mItem('lap',{nuc: box, lap: name}));
- },
-
- /*
- * Adds the argument as a specific type of atom (for commands like
- * \overline, etc.)
- */
- HandleAtom: function (name,data) {
- var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
- this.mlist.Add(jsMath.mItem.Atom(data,arg));
- },
-
-
- /*
- * Process the character associated with a specific \mathcharcode
- */
- HandleMathCode: function (name,code) {
- this.HandleTeXchar(code[0],code[1],code[2]);
- },
-
- /*
- * Add a specific character from a TeX font (use the current
- * font if the type is 7 (variable) or the font is not specified)
- */
- HandleTeXchar: function (type,font,code) {
- if (type == 7 && this.mlist.data.font != null) {font = this.mlist.data.font}
- font = jsMath.TeX.fam[font];
- this.mlist.Add(jsMath.mItem.TeXAtom(jsMath.TeX.atom[type],code,font));
- },
-
- /*
- * Add a TeX variable character or number
- */
- HandleVariable: function (c) {this.HandleTeXchar(7,1,c.charCodeAt(0))},
- HandleNumber: function (c) {this.HandleTeXchar(7,0,c.charCodeAt(0))},
-
- /*
- * For unmapped characters, just add them in as normal
- * (non-TeX) characters
- */
- HandleOther: function (c) {
- this.mlist.Add(jsMath.mItem.TextAtom('ord',c,'normal'));
- },
-
- /*
- * Ignore comments in TeX data
- * ### Some browsers remove the newlines, so this might cause
- * extra stuff to be ignored; look into this ###
- */
- HandleComment: function () {
- var c;
- while (this.i < this.string.length) {
- c = this.string.charAt(this.i++);
- if (c == "\r" || c == "\n") return;
- }
- },
-
- /*
- * Add a style change (e.g., \displaystyle, etc)
- */
- HandleStyle: function (name,style) {
- this.mlist.data.style = style[0];
- this.mlist.Add(new jsMath.mItem('style',{style: style[0]}));
- },
-
- /*
- * Implements \small, \large, etc.
- */
- HandleSize: function (name,size) {
- this.mlist.data.size = size[0];
- this.mlist.Add(new jsMath.mItem('size',{size: size[0]}));
- },
-
- /*
- * Set the current font (e.g., \rm, etc)
- */
- HandleFont: function (name,font) {
- this.mlist.data.font = font[0];
- },
-
- /*
- * Look for and process a control sequence
- */
- HandleCS: function () {
- var cmd = this.GetCommand(); if (this.error) return;
- if (this.macros[cmd]) {
- var macro = this.macros[cmd];
- if (typeof(macro) == "string") {macro = [macro]}
- this[macro[0]](cmd,macro.slice(1)); return;
- }
- if (this.mathchardef[cmd]) {
- this.HandleMathCode(cmd,this.mathchardef[cmd]);
- return;
- }
- if (this.delimiter[this.cmd+cmd]) {
- this.HandleMathCode(cmd,this.delimiter[this.cmd+cmd].slice(0,3))
- return;
- }
- this.Error("Unknown control sequence '"+this.cmd+cmd+"'");
- },
-
- /*
- * Process open and close braces
- */
- HandleOpen: function () {this.mlist.Open()},
- HandleClose: function () {
- if (this.mlist.data.openI == null) {this.Error("Extra close brace"); return}
- var open = this.mlist.Get(this.mlist.data.openI);
- if (!open || open.left == null) {this.mlist.Close()}
- else {this.Error("Extra close brace or missing "+this.cmd+"right"); return}
- },
-
- /*
- * Implements \left
- */
- HandleLeft: function (name) {
- var left = this.GetDelimiter(this.cmd+name); if (this.error) return;
- this.mlist.Open(left);
- },
-
- /*
- * Implements \right
- */
- HandleRight: function (name) {
- var right = this.GetDelimiter(this.cmd+name); if (this.error) return;
- var open = this.mlist.Get(this.mlist.data.openI);
- if (open && open.left != null) {this.mlist.Close(right)}
- else {this.Error("Extra open brace or missing "+this.cmd+"left");}
- },
-
- /*
- * Implements generalized fractions (\over, \above, etc.)
- */
- HandleOver: function (name,data) {
- if (this.mlist.data.overI != null)
- {this.Error('Ambiguous use of '+this.cmd+name); return}
- this.mlist.data.overI = this.mlist.Length();
- this.mlist.data.overF = {name: name};
- if (data.length > 0) {
- this.mlist.data.overF.left = this.delimiter[data[0]];
- this.mlist.data.overF.right = this.delimiter[data[1]];
- } else if (name.match(/withdelims$/)) {
- this.mlist.data.overF.left = this.GetDelimiter(this.cmd+name); if (this.error) return;
- this.mlist.data.overF.right = this.GetDelimiter(this.cmd+name); if (this.error) return;
- }
- if (name.match(/^above/))
- {
- this.mlist.data.overF.thickness = this.GetDimen(this.cmd.name,1);
- if (this.error) return;
- }
- },
-
- /*
- * Add a superscript to the preceeding atom
- */
- HandleSuperscript: function () {
- var base = this.mlist.Last();
- if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
- {base = this.mlist.Add(jsMath.mItem.Atom('ord',null))}
- if (base.sup) {this.Error("Double exponent: use braces to clarify"); return}
- base.sup = this.ProcessArg('superscript'); if (this.error) return;
- },
-
- /*
- * Adda subscript to the preceeding atom
- */
- HandleSubscript: function () {
- var base = this.mlist.Last();
- if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
- {base = this.mlist.Add(jsMath.mItem.Atom('ord',null))}
- if (base.sub) {this.Error("Double subscripts: use braces to clarify"); return}
- base.sub = this.ProcessArg('subscript'); if (this.error) return;
- },
-
- /*
- * Parse a TeX math string, handling macros, etc.
- */
- Parse: function () {
- var c;
- while (this.i < this.string.length) {
- c = this.string.charAt(this.i++);
- if (this.mathchar[c]) {this.HandleMathCode(c,this.mathchar[c])}
- else if (this.special[c]) {this[this.special[c]](c)}
- else if (this.letter.test(c)) {this.HandleVariable(c)}
- else if (this.number.test(c)) {this.HandleNumber(c)}
- else {this.HandleOther(c)}
- }
- if (this.mlist.data.openI != null) {
- var open = this.mlist.Get(this.mlist.data.openI);
- if (open.left) {this.Error("Missing "+this.cmd+"right")}
- else {this.Error("Missing close brace")}
- }
- if (this.mlist.data.overI != null) {this.mlist.Over()}
- },
-
- /*
- * Perform the processing of Appendix G
- */
- Atomize: function () {
- var data = this.mlist.init;
- if (!this.error) this.mlist.Atomize(data.style,data.size)
- },
-
- /*
- * Produce the final HTML.
- *
- * We have to wrap the HTML it appropriate <SPAN> tags to hide its
- * actual dimensions when these don't match the TeX dimensions of the
- * results. We also include an image to force the results to take up
- * the right amount of space. The results may need to be vertically
- * adjusted to make the baseline appear in the correct place.
- */
- Typeset: function () {
- var data = this.mlist.init;
- var box = this.typeset = this.mlist.Typeset(data.style,data.size);
- if (this.error) {return '<SPAN CLASS="error">'+this.error+'</SPAN>'}
- if (box.format == 'null') {return ''};
-
- box.Styled().Remeasured(); var isSmall = 0; var isBig = 0;
- if (box.bh > box.h && box.bh > jsMath.h+.001) {isSmall = 1}
- if (box.bd > box.d && box.bd > jsMath.d+.001) {isSmall = 1}
- if (box.h > jsMath.h || box.d > jsMath.d) {isBig = 1}
-
- var html = box.html;
- if (isSmall) {// hide the extra size
- if (jsMath.Browser.allowAbsolute) {
- var y = 0;
- if (box.bh > jsMath.h+.001) {y = jsMath.h - box.bh}
- html = jsMath.HTML.Absolute(html,box.w,jsMath.h,0,y,jsMath.h);
- } else if (!jsMath.Browser.valignBug) {
- // remove line height and try to hide the depth
- var dy = jsMath.HTML.Em(Math.max(0,box.bd-jsMath.hd)/3);
- html = '<SPAN STYLE="line-height: 0;'
- + ' position:relative; top:'+dy+'; vertical-align:'+dy
- + '">' + html + '</SPAN>';
- }
- isBig = 1;
- }
- if (isBig) {// add height and depth to the line (force a little
- // extra to separate lines if needed)
- html += '<IMG SRC="'+jsMath.blank+'" CLASS="mathHD" STYLE="'
- + 'height:'+jsMath.HTML.Em((box.h+box.d+.1)*jsMath.Browser.imgScale)+'; '
- + 'vertical-align:'+jsMath.HTML.Em(-box.d-.05)+';">'
- }
- return '<NOBR><SPAN CLASS="jsM_scale">'+html+'</SPAN></NOBR>';
- }
-
-});
-
-/*
- * Make these characters special (and call the given routines)
- */
-jsMath.Parser.prototype.AddSpecial({
- cmd: 'HandleCS',
- open: 'HandleOpen',
- close: 'HandleClose'
-});
-
-
-/*
- * The web-page author can call jsMath.Macro to create additional
- * TeX macros for use within his or her mathematics. jsMath.Macro
- * has two required and one optional parameter. The first parameter
- * is the control sequence name that will trigger the macro, and the
- * second is the replacement string for that control sequence.
- * NOTE: since the backslash (\) has special meaning in JavaScript,
- * you must double the backslash in order to include control sequences
- * within your replacement string. E.g.,
- *
- * <SCRIPT> jsMath.Macro('R','{\\rm R}') </SCRIPT>
+ * Copyright 2004-2006 by Davide P. Cervone
*
- * would make \R produce a bold-faced R.
- *
- * The optional parameter tells how many arguments the macro
- * requires. These are substituted for #1, #2, etc. within the
- * replacement string of the macro. For example
- *
- * <SCRIPT> jsMath.Macro('x','{\\vec x}_{#1}',1) </SCRIPT>
- *
- * would make \x1 produce {\vec x}_{1} and \x{i+1} produce {\vec x}_{i+1}.
- *
- * You can put several jsMath.Macro calls together into one .js file, and
- * then include that into your web page using a command of the form
- *
- * <SCRIPT SRC="..."></SCRIPT>
- *
- * in your main HTML page. This way you can include the same macros
- * into several web pages, for example.
- */
-
-jsMath.Add(jsMath,{
- Macro: function (name) {
- var macro = jsMath.Parser.prototype.macros;
- macro[name] = ['Macro'];
- for (var i = 1; i < arguments.length; i++)
- {macro[name][macro[name].length] = arguments[i]}
- }
-});
-
-
-/***************************************************************************/
-
-/*
- * These routines look through the web page for math elements to process.
- * There are two main entry points you can call:
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*
- * <SCRIPT> jsMath.Process() </SCRIPT>
- * or
- * <SCRIPT> jsMath.ProcessBeforeShowing() </SCRIPT>
- *
- * The first will process the page asynchronously (so the user can start
- * reading the top of the file while jsMath is still processing the bottom)
- * while the second does not update until all the mathematics is typeset.
- */
-
-jsMath.Add(jsMath,{
-
- /*
- * Typeset a string in \textstyle and return the HTML for it
- */
- TextMode: function (s) {
- var parse = jsMath.Parse(s,null,null,'T');
- parse.Atomize();
- var html = parse.Typeset();
- return html;
- },
-
- /*
- * Typeset a string in \displaystyle and return the HTML for it
- */
- DisplayMode: function (s) {
- var parse = jsMath.Parse(s,null,null,'D');
- parse.Atomize();
- var html = parse.Typeset();
- return html;
- },
-
- /*
- * Return the text of a given DOM element
- */
- GetElementText: function (element) {
- var text = element.innerText;
- if (text == null || text == "") {
- try {text = element.textContent} catch (err) {}
- if (text == null || text == "") {text = element.innerHTML}
- }
- if (text.search('&') >= 0) {
- text = text.replace(/</g,'<');
- text = text.replace(/>/g,'>');
- text = text.replace(/"/g,'"');
- text = text.replace(/&/g,'&');
- }
- return text;
- },
-
- /*
- * Move hidden to the location of the math element to be
- * processed and reinitialize sizes for that location.
- */
- ResetHidden: function (element) {
- element.innerHTML =
- '<SPAN CLASS="normal" STYLE="position:absolute; top:0px;left:0px;"></SPAN>'
- + jsMath.Browser.operaHiddenFix; // needed by Opera in tables
- element.className='';
- jsMath.hidden = element.firstChild;
- jsMath.ReInit();
- },
-
-
- /*
- * Typeset the contents of an element in \textstyle
- */
- ConvertText: function (element) {
- var text = this.GetElementText(element);
- this.ResetHidden(element);
- element.innerHTML = this.TextMode(text);
- element.className = 'typeset';
- element.alt = text;
- },
-
- /*
- * Typeset the contents of an element in \displaystyle
- */
- ConvertDisplay: function (element) {
- var text = this.GetElementText(element);
- this.ResetHidden(element);
- element.innerHTML = this.DisplayMode(text);
- element.className = 'typeset';
- element.alt = text;
- },
-
- /*
- * Process a math element
- */
- ProcessElement: function (element) {
- try {
- if (element.tagName == 'DIV') {
- this.ConvertDisplay(element);
- } else if (element.tagName == 'SPAN') {
- this.ConvertText(element);
- //
- // Overcome a bug in MSIE where were tex2math can't insert DIV's inside
- // some elements, so fake it with SPANs, but can't fake the centering,
- // so do that here.
- //
- if (element.parentNode.className == 'jsMath.recenter') {
- element.parentNode.style.marginLeft =
- Math.floor((element.parentNode.offsetWidth - element.offsetWidth)/2)+"px";
- }
- }
- element.onclick = jsMath.Click.CheckClick;
- element.ondblclick = jsMath.Click.CheckDblClick;
- } catch (err) {}
- },
-
- /*
- * Asynchronously process all the math elements starting with
- * the k-th one
- */
- ProcessElements: function (k) {
- if (k >= this.element.length) {
- this.ProcessComplete();
- } else {
- this.ProcessElement(this.element[k])
- setTimeout('jsMath.ProcessElements('+(k+1)+')',jsMath.Browser.delay);
- }
- },
-
- /*
- * Call this at the bottom of your HTML page to have the
- * mathematics typeset asynchronously. This lets the user
- * start reading the mathematics while the rest of the page
- * is being processed.
- */
- Process: function (obj) {
- if (!jsMath.initialized) {jsMath.Init()}
- this.element = this.GetMathElements(obj);
- window.status = 'Processing Math...';
- setTimeout('jsMath.ProcessElements(0)',jsMath.Browser.delay);
- },
-
- /*
- * Call this at the bottom of your HTML page to have the
- * mathematics typeset before the page is displayed.
- * This can take a long time, so the user could cancel the
- * page before it is complete; use it with caution, and only
- * when there is a relatively small amount of math on the page.
- */
- ProcessBeforeShowing: function (obj) {
- if (!jsMath.initialized) {jsMath.Init()}
- var element = jsMath.GetMathElements(obj);
- window.status = 'Processing Math...';
- for (var i = 0; i < element.length; i++)
- {jsMath.ProcessElement(element[i])}
- jsMath.ProcessComplete();
- },
-
- element: [], // the list of math elements on the page
-
- /*
- * Look up all the math elements on the page and
- * put them in a list sorted from top to bottom of the page
- */
- GetMathElements: function (obj) {
- var element = [];
- if (!obj) {obj = document}
- if (typeof(obj) == 'string') {obj = document.getElementById(obj)}
- if (!obj.getElementsByTagName) return
- var math = obj.getElementsByTagName('DIV');
- for (var k = 0; k < math.length; k++) {
- if (math[k].className == 'math') {
- if (jsMath.Browser.renameOK && obj.getElementsByName)
- {math[k].setAttribute('NAME','_jsMath_')}
- else {element[element.length] = math[k]}
- }
- }
- math = obj.getElementsByTagName('SPAN');
- for (var k = 0; k < math.length; k++) {
- if (math[k].className == 'math') {
- if (jsMath.Browser.renameOK && obj.getElementsByName)
- {math[k].setAttribute('NAME','_jsMath_')}
- else {element[element.length] = math[k]}
- }
- }
- // this gets the SPAN and DIV elements interleaved in order
- if (jsMath.Browser.renameOK && obj.getElementsByName) {
- element = obj.getElementsByName('_jsMath_');
- } else if (jsMath.hidden.sourceIndex) {
- element.sort(function (a,b) {return a.sourceIndex - b.sourceIndex});
- }
- return element;
- },
-
- /*
- * Remove the window message about processing math
- * and clean up any marked <SPAN> or <DIV> tags
- */
- ProcessComplete: function () {
- if (jsMath.Browser.renameOK) {
- var element = document.getElementsByName('_jsMath_');
- for (var i = element.length-1; i >= 0; i--) {
- element[i].removeAttribute('NAME');
- }
- }
- jsMath.hidden = jsMath.hiddenTop;
- jsMath.element = [];
- window.status = 'Done';
- if (jsMath.Browser.safariImgBug &&
- (jsMath.Controls.cookie.font == 'symbol' ||
- jsMath.Controls.cookie.font == 'image')) {
- //
- // For Safari, the images don't always finish
- // updating, so nudge the window to cause a
- // redraw. (Hack!)
- //
- setTimeout("window.resizeBy(-1,0); window.resizeBy(1,0);",2000);
- }
- },
-
- Element: function (name) {return document.getElementById('jsMath.'+name)}
-
-});
-
-
-/***************************************************************************/
+ *****************************************************************************/
-/*
- * Initialize everything
- */
-jsMath.Loaded();
-jsMath.Controls.GetCookie();
-if (document.body) {jsMath.Setup.Body()}
+if (!window.jsMath) {jsMath = {}}
+if (!jsMath.Script) {jsMath.Script = {}}
-}}
+jsMath.Script.Uncompress = function (data) {
+ for (var k = 0; k < data.length; k++) {
+ var d = data[k]; var n = d.length;
+ for (var i = 0; i < n; i++) {if (typeof(d[i]) == 'number') {d[i] = d[d[i]]}}
+ data[k] = d.join('');
+ }
+ eval(data.join(''));
+}
+
+//start = new Date().getTime();
+jsMath.Script.Uncompress([
+ ['if(!','window.','jsMath','||!',1,'jsMath.','loaded','){if(',1,'parent','&&',1,9,'.',2,'){',2,'=',1,9,'.',2,';}var ','jsMath_old','=',1,2,';',0,'document.','getElementById','||!',29,'childNodes||!',29,'createElement','){','alert("','The',' mathematics ','on this page requires W3C DOM support in its JavaScript. "+"Unfortunately, your ','browser',' doesn\'t seem to have this.");}','else{',2,'={version:"3.2",document:document,window:window,','sizes',':[50,60,70,85,100,120,144,173,207,249],styles:{".math','":"font-family: serif; font-style: normal; font-weight: normal','",".typeset',48,'","div.typeset','":"text-align: ','center; margin: 1em 0px;","span.typeset',52,'left',49,' span',52,'left','; border:0px','; margin:0px; padding:0px','",".typeset .','normal',48,62,'size0','":"font-size: ','50','%",".typeset .','size1',67,'60',69,'size2',67,'70',69,'size3',67,'85',69,'size4',67,'100',69,'size5',67,'120',69,'size6',67,'144',69,'size7',67,'173',69,'size8',67,'207',69,'size9',67,'249',69,'cmr10','":"font-family: jsMath-',106,', serif',62,'cmbx10',107,111,', ',2,'-cmr10',62,'cmti10',107,118,', ',2,116,62,'cmmi10',107,125,62,'cmsy10',107,129,62,'cmex10',107,133,62,'textit','":"font-family: serif; font-','style:italic',62,'textbf',138,'weight:bold',62,'link":"','text-decoration',': none',62,'error',67,'10pt; font-style: italic; "+"','background-color',': #FFFFCC','; padding: ','1px; "+"','border: ','1px solid',' #CC0000',62,'blank":"','display:inline-block','; ','overflow:hidden',60,' none; width:0px; height:0px;",".typeset .','spacer','":"',161,'","#jsMath_message','":"position:fixed; bottom:','1px; left:2px; ',152,':#E6E6E6','; "+"border: solid 1px #959595; margin:0px; padding: ','1px 8px','; "+"z-index:102; color',': black','; font-size:small; width:auto;","#','jsMath_panel',170,'1.5em; right:1.5em',154,'10px 20px','; "+"',152,':#DDDDDD; border: outset ','2px; "+"z-index:103; width:auto;","#','jsMath_button',170,'1px; right:2px; ',152,':white',174,'0px 3px 1px 3px',176,':black; ',146,':none','; font-size',':x-small;
"+"','width:auto; cursor:pointer; cursor:hand',';","#jsMath_float','":"','position:absolute','; top:0px; left:0px; max-width:80%; "+"z-index:101; ','width:auto; height:auto',202,' .drag":"',152,186,'1px; height:12px',199,': 1px',202,' .close":"',152,173,'; border: ','inset 1px; width:8px; height:8px; margin: 1px 2px',202,' .source":"',152,':#E2E2E2',218,'outset ',155,206,154,'8px 15px; "+"','font-family',': courier, fixed',199,': 90%","#','jsMath_noFont',52,'center',154,183,218,'3px solid #DD0000; "+"',152,': #FFF8F8; color: #AA0000',178,234,' .link":"padding: 0px 5px 2px 5px',218,'2px outset; ',152,':#E8E8E8; "+"color:black',199,':80%; ',201,';","@media print":"#',188,' {','display:none','}"},Element',':function(','_1){return ',5,29,30,'("jsMath_"+_1);},','BBoxFor',258,'s','){this.','hidden.innerHTML','="<nobr><span class=\\"typeset\\"><span class=\\"scale\\">"+s+"</span></span></nobr>";var _3={w:this.','hidden','.offsetWidth',',h:this.',270,'.offsetHeight','};this.',268,'="";return _3;},EmBoxFor',258,'s){var _5','=this.BBoxFor','(s);return {w:_5.w/this.em,h:_5','.h/this.em};},','EmBoxForItalics',258,'s){var _7',280,'(s);if(s.match(/<i>|class=\\"(icm|italic|igreek|iaccent)/i)){_7.w',280,'(s+',5,'Browser.','italicString',').w-',5,291,'italicCorrection',';}return {w:_7.w/this.em,h:_7',282,'Init',':function(){','if(',5,'Setup.inited','!=1',7,5,303,'){',37,'It looks like ',2,' failed to set up properly (error code "+',5,303,'+"). "+"I\'ll will try to keep going, but it could get ugly.");',5,303,'=1;}',43,37,'You must call ',5,'Setup.','Body() explicitly when ',2,' is"+"',6,' as part of the <HEAD> section");}',5,323,'Body();}this.em',280,'("<span style=\\""+',5,291,'block+";','width:10em;height:1em','\\"></span>").','w/10;if(this.em==0',267,'em',280,'("<img src=\\""+',5,'blank+"\\" style=\\"',337,'\\"/>").w/10;}if(',5,291,292,'){',5,291,296,'=',5,264,'(',5,291,292,').w;}var bb',280,'("x");var h=bb.h;var d',280,'("x"+',5,'HTML.Rule(1,','h/',5,'em)).h-h;this.h=(h-d)/this.em;this.d=d/this.em;this.hd=this.h+this.d;thi
s.xWidth=bb.w;this.',323,'TeXfonts','();var _b=this.','EmBoxFor("<span class','=\\"',106,'\\">M</span>").w/2;this.TeX.M_height=_b*(26/14);this.TeX.h=this.h;this.TeX.d=this.d;this.TeX.hd=this.hd;this.Img.Scale();',0,'this.initialized',267,323,'Sizes','();this.','Img.UpdateFonts();}this.p_height=(this.','TeX.cmex10[','0].h+this.',386,'0].d)/0.85;',380,'=1;},ReInit',300,'var w',280,'("x").w;if(w!=this.xWidth',267,'Init();}},Loaded',300,'if(',23,'){var _d=["Process","ProcessBeforeShowing","ConvertTeX","ConvertTeX2","ConvertLaTeX","ConvertCustom","CustomSearch","Synchronize","Macro","document"];','for(var i=0;i<','_d','.length;','i++){if(',23,'[_d[i]]){',23,'[_d[i]]=null;}}}if(',23,267,'Insert(',2,',',23,');}',23,'=null;',5,6,'=1;},Add',258,'_f,src){','for(var id in ','src){_f[id]=src[id];}},Insert',258,'dst,src){',424,'src',7,'dst[id]&&typeof (src[id])=="object"&&(','typeof (dst[id])=="','object"||',432,'function")){this.',412,'dst[id],src[id]);}',43,'dst[id]=src[id];}}},Package',258,'obj,def',267,412,'obj.prototype,def);}};',5,'Script={request:null,Init',300,'if(!(',5,'Controls.cookie','.asynch&&',5,450,'.progress',')){if(',1,'XMLHttpRequest','){','this.request','=new ',457,';}',43,'if(',1,'ActiveXObject','){try{',459,'=new ',466,'("Microsoft.XMLHTTP");}catch(err){}}}}',0,459,'||',5,323,'domainChanged',267,'Load=this.delayedLoad;this.needsBody=1;}},Load',258,'url,_18',7,'_18){',5,'Message.Set("Loading "+url);',5,'Script.','Delay(1);',5,'Script.Push(','this,"xmlRequest",url',');',5,490,5,'Message',',"Clear");}',43,5,490,491,');}},','xmlRequest',258,'url){','this.debug("',503,': "+url);','try{',459,'.open("GET",url,false);',459,'.send(null);}catch(err','){throw "jsMath can\'t load the file \'"+url+"\'\\n"+"',496,': "+err.message;}if(',459,'.status','&&',459,518,'>=400',514,'Error status: "+',459,518,';}this.','Start();','this.blocking','=1;',5,1,'eval(',459,'.responseText);this.End();',529,'=0;this.Process','();},cancelTimeout:30*1000,iframe:null,blocking:0,cancelTimer:null,needsBody:0,queue:[],queueAt:0,Synchronize'
,258,'_1a,_1b){','if(typeof (','_1a)!="string"){',5,490,'null,_1a,_1b);}',43,5,490,5,'window,"eval",_1a);}},Push',258,'_1c,_1d,_1e){',506,'Pushing: "+_1d+" at "+','this.queueAt',');this.queue=[].concat(','this.queue.slice(','0,',555,'),[[_1c,_1d,_1e]],',557,555,'));',555,'++;if(!(',529,'||(this.needsBody&&!',5,29,'body))){this.Process();}},Process',300,'while(','this.queue.length','&&!',529,267,528,'var _1f=this.queue[0];this.queue=',557,'1);var _20=_1f[0];var _21=_1f[1];var _22=_1f[2];',506,'Calling: "+_21);if(_20){_20[_21](_22);}',43,'if(_21){_21(_22);}}',506,'Done: "+_21);}this.End();},Start',300,555,'=0;},End',300,555,'=',573,';},delayedLoad',258,'url){',506,'Loading',508,'this.Push(this,"startLoad",url);},startLoad',258,'url){','this.iframe','=',5,29,35,'("iframe");','this.iframe.style.','visibility="',270,'";',609,'position="absolute";',609,'width="0px";',609,'height="0px";if(',5,29,'body.firstChild','){',5,29,'body.insertBefore(',603,',',5,29,621,');}',43,5,29,'body','.appendChild(',603,');}',529,'=1;this.','url=url;',0,'url.match(/\\.js$/)){',603,'.src=url;}',43,603,'.src=',5,'root+"',2,'-loader.html";}if(url.substr(0,',5,'root.length',')==',5,'root){url=url.substr(',5,654,');}',5,485,506,'Starting',508,'this.cancelTimer','=setTimeout("',5,487,'cancelLoad','()",this.cancelTimeout);},endLoad',258,'_25){',506,'Ending: "+this.url);if(',666,'){clearTimeout(',666,');',666,'=null;}',5,496,'.Clear();if(_25!="cancel"){',529,537,'();}},',670,300,666,'=null;',5,496,'.Set("Can\'t load file");this.endLoad("cancel");},Delay',258,'_26){',529,'=1;setTimeout("',5,487,'endDelay','()",_26);},',701,300,506,701,'");',529,537,'();},','WaitForImage',258,'_27){',529,'=1;if(this.img==null',267,'img=[];}var img=new Image',384,'img[this.img.length]=img;img.onload=function(){',5,487,701,'();};img.onerror','=img.onload;img.','onabort',724,'src=_27;},Uncompress',258,'_29){','for(var k=0;k<','_29',404,'k++){var d=_29[k];var n=d',404,402,'n;',405,'typeof (d[i])=="number"){d[i]=d[d[i]];}}_29[k]=d.join("");}',1,'eval(_29.join(""));},
debug',258,'_2e){}};',5,496,'={blank:null,message:null,text:null,clear:null,Init',300,0,5,29,'body||!',5,450,454,'){return;}','if(',5,323,'stylesReady){','this.message','=',5,'Setup.DIV("message",{visibility:"hidden','"});}',43,759,'=',5,762,'",position:"absolute",','bottom:"1px",left:"2px",','backgroundColor',':"#E6E6E6",border:"solid 1px #959595",margin:"0px",padding:"1px 8px",zIndex:102,color:"black",fontSize:"small",width:"auto"});}','this.text','=',5,29,'createTextNode','("");',759,636,773,');',759,'.onmousedown=',5,'Translate.Cancel;},Set',258,'_2f,_30){','if(this.clear){clearTimeout(this.clear',');','this.clear',681,'if(',5,450,454,'){',0,773,267,'Init();',0,773,'){return;}}if(',5,291,'textNodeBug','){',759,'.innerHTML','=_2f;}',43,773,'.nodeValue',811,759,'.style.visibility="','visible";if(_30){',759,'.style.cursor','="pointer";',0,759,820,'){',759,820,'="hand";}',759,'.title=" Cancel Processing of Math ";}',43,759,820,';',759,'.title="";}}',43,'if(_2f.substr(0,8)!="Loading "){',5,1,'status=_2f;}}},Clear',300,789,');}',791,'=setTimeout("',5,496,'.doClear()",1000);},doClear',300,'if(',791,267,'clear=null;',5,1,'status="";if(',773,'){',773,814,'="";}if(',759,'){',759,817,270,'";}}},Blank',300,'if(','this.blank','||!',5,29,'body',754,871,'=',5,323,'DIV("blank",{position:(',5,291,'msiePositionFixedBug','?"absolute":"fixed"),top:"0px",left:"0px",bottom:"0px",right:"0px",zIndex:101,',771,':"white"});if(',5,291,'msieBlankBug','){',871,810,'=" ";',871,'.style.width="110%";',871,'.style.height="110%";}},UnBlank',300,'if(',871,'){',5,29,'body.removeChild(',871,');}',871,'=null;}};',5,'Setup={',6,':[],DIV',258,'id,_32){var div=',5,29,35,'("div");div.id="jsMath_"+id;','for(var i in ','_32){div.style[i]=_32[i];}',0,5,29,'body.hasChildNodes){',5,29,'body',636,'div);}',43,5,29,625,'div,',5,29,621,');}return div;},Script',258,'_35,_36',7,'this.loaded[_35',']){','return;}',43,943,']=1;}',0,'_35.match("^([a-zA-Z]+:/)?/")){_35=',5,'root+_35;}',5,487,'Load(_35,_36);},Hidden',300,5,270,'=this.DIV("Hidden",{visibility:"'
,270,769,'top:0,left:0,border:0,padding:0,margin:0});',5,'hiddenTop=',5,270,';return;},Source',300,'if(',5,'Autoload&&',5,'Autoload.root','){',5,'root=',5,973,';}',43,5,'root="";var _37=',5,29,'getElementsByTagName("','script");if(_37){',402,'_37',404,'i++){var ','src=_37[i].src;if(src&&src.match("(^|/)',5,'js$")){',5,'root=src.replace','(/',5,'js$/,"");if(',5,'root.charAt(0)=="/"){',5,976,5,29,'location','.protocol+"//"+',5,29,1005,'.host+',5,'root;}',43,0,5,'root.match','(/^[a-z]+:/i)){src','=new String(',5,29,1005,');',5,995,'(new RegExp("[^/]*$"),"")+',5,'root;',572,5,1016,'("/[^/]*/\\\\.\\\\./")){',5,976,5,'root.replace(new RegExp("/[^/]*/\\\\.\\\\./"),"/");}}}i=_37.length;}}}}',5,'Img.',976,5,650,'fonts/";',5,'blank=',5,650,'blank.gif";this.Domain();},Domain',300,'var _3a="";var _3b=',5,29,'domain;if(',5,1016,'("://([^/]*)/")){_3a=RegExp.$1;}_3a=_3a.replace(/:\\d+$/,"");if(_3a==""||_3a==_3b',754,'if(navigator.','appName=="Microsoft Internet Explorer"&&','navigator.','platform=="','MacPPC"&&',1058,'onLine&&',1058,'userProfile&&',5,29,'all',754,'_3a=_3a.split(/\\./);_3b=_3b.split(/\\./);if(_3a.length<2||_3b.length<2||','_3a[_3a.length-','1',']!=_3b[_3b.length-','1]||',1070,'2',1072,'2]){this.','DomainWarning','();',945,'var _3c=',1070,'2]+"."+',1070,'1];for(var i=3;i<=_3a.length&&i<=_3b',404,405,1070,'i',1072,'i]){break;}_3c=',1070,'i]+"."+_3c;}',5,29,'domain=_3c;this.',477,'=1;},',1078,300,37,'In order for ',2,' to be able to load the additional "+"components that it may need, the ',5,'js file must be "+"',6,' from a server in the same domain as the page that "+"contains it. Because that is not the case for this page, "+"the',39,'displayed here may not appear correctly.");},','EncodeFont',258,'_3e){var _3f=',5,'TeX[_3e];if(_3f[0].c!=null',754,730,'128;k++){var _41=_3f[k];_3f[k]=_41[3];if(_3f[k]==null){_3f[k]={};}_3f[k].w=_41[0];_3f[k].h=_41[1];if(_41[2]!=null){_3f[k].d=_41[2];}_3f[k].c=',5,'TeX.encoding[k];}},Fonts',300,402,5,'TeX.fam.length;',990,'_43=',5,'TeX.fam[i','];if(_43',267,1111,'(_43);}}},TeXfont
',258,'_44){var _45=',5,'TeX[_44];if(_45==null',754,'var WH=',5,375,'=\\""+_44+"\\">"+_45[65','].c+"</span>");','_45.hd=WH.h;_45.dh=0.05;_45.d=',5,375,'=\\""+_44+"\\">"+_45[65].c+',5,368,'_45.hd)+"</span>").h-_45.hd;_45.h=_45.hd-_45.d;','if(_44=="',125,'"){_45.skewchar=','127;}',43,1150,129,1152,'48;}}},',373,300,402,5,1124,405,5,1128,']){this.TeXfont(',5,1128,']);}}},Sizes',300,5,'TeXparams','=[];for(var j=0;j<',5,46,404,'j++){',5,1173,'[j]={};}',920,5,'TeX){',541,5,'TeX[i])!="object"){for(var j=0;j<',5,46,404,'j++){',5,1173,'[j][i]=',5,46,'[j]*',5,'TeX[i]/100;}}}},Styles',258,'_4b){',0,'_4b){_4b=',5,'styles;_4b[".typeset .scale"]="font-size:"+',5,450,'.scale+"%";this.stylesReady=1;}',5,490,'this,"','AddStyleSheet','",_4b);if(',5,291,'styleChangeDelay','){',5,490,5,'Script,"','Delay",1);}},',1212,258,'_4c){var _4d=',5,29,985,'head")[0];var _4e="";',424,'_4c){_4e+=id+" {"+_4c[id]+"}\\n";}if(',5,29,'createStyleSheet){_4d.insertAdjacentHTML("beforeEnd","<','span style=\\"',256,'\\">x</span','><style type=\\"text/css\\">"+_4e+"</style>");}',43,'var _50=',5,29,35,'("style");_50.type="text/css";_50',636,5,29,777,'(_4e));_4d',636,'_50);}},Body',300,'if(this.inited',754,'this.inited=-','1;',5,323,'Hidden();',1255,'2;',5,291,801,1255,'3;if(',5,450,'.blank){',5,496,'.Blank();}',1255,'4;',5,323,'Styles();',1255,'5;',5,'Controls.',801,1255,'6;',5,490,5,'Setup,"User","pre-font");',1255,'7;',5,490,5,'Font,"Check");this.inited=1;},User',258,'_51){}};',5,'Update={',373,258,'_52){for(var ','_53 in ',1301,'_54 in _52[_53]){',424,'_52[_53][_54',']){',5,'TeX[_53][_54][id]=',1306,'][id];}}}},TeXfontCodes',258,'_56){for(var _57 in _56){',402,'_56[_57].length;i++){',5,'TeX[_57][i].c=_56[_57][i];}}}};',5,'Browser={allowAbsolute:1,allowAbsoluteDelim:0,separateSkips:0,valignBug:0,operaHiddenFix:"",','msieCenterBugFix',':"",','msieInlineBlockFix',':"",imgScale:1,renameOK:1,',1216,':0,delay:1,version:0,','TestSpanHeight',300,5,268,'="<span><','span style=\\""+this.block+";','height:2em;width:','1px\\"></','span></span>";var ','_59=',5,'hi
dden.firstChild;','var img=_59.firstChild;','this.spanHeightVaries','=(_59',274,'>=img',274,'&&_59',274,'>0);','this.spanHeightTooBig','=(_59',274,'>img',274,');',5,268,'="";},','TestInlineBlock',300,'this.block','="',161,'";','this.hasInlineBlock','=',5,'BBoxFor("<span style=\\""+this.block+";','width:10px;height:5px\\"></span>").w>0;if(!this.hasInlineBlock){',1358,'="display:-moz-inline-box";',1362,'=',5,1365,1366,945,5,'styles[".typeset .','blank"]=',5,1376,'blank','"].replace(/',161,'/,',1358,');}',1358,'+=";',163,'";var h=',5,264,'("x").h;this.mozInlineBlockBug=',5,1365,'height:"+h+"px;width:1px','\\"></span>x','"+"<',1331,1395,';vertical-align:-"+h+"px',338,'h>2*h;this.widthAddsBorder=',5,1365,163,';height:1px;width:10px',';border-left:','10px solid',338,'w>10;','this.msieBorderBug','=',5,1365,1395,1396,'").h!=',5,1365,1395,1407,157,1396,'").h;this.blankWidthBug=',1411,'||',5,1365,1332,'0px',338,'h==0;},','TestRenameOK',300,5,268,'="<',1334,'_5c=',5,1337,'_5c.setAttribute("name","','jsMath_test','");this.renameOK=(',5,29,'getElementsByName("',1443,'").length>0);',5,268,1355,'TestStyleChange',300,5,268,'="<span ID=\\"',1443,1237,'>";var _5d=',5,1337,'var w=_5d',271,';',5,323,1212,'({"#',1443,'":"font-size:200%"});this.',1216,'=(_5d',271,'==w);',5,268,1355,'VersionAtLeast',258,'v){var bv',1018,'this.version).split(".");v',1018,'v).split(".");if(v[1]==null){v[1]="0";}return bv[0]>v[0]||(bv[0]==v[0]&&bv[1]>=v[1]);},Init',300,5,41,'="unknown";this.',1356,384,1326,384,1433,384,1453,384,'MSIE',384,'Mozilla',384,'Opera',384,'OmniWeb',384,'Safari',384,'Konqueror','();if(','this.allowAbsoluteDelim','){',5,'Box.DelimExtend=',5,'Box.DelimExtendAbsolute;',5,'Box.Layout=',5,'Box.LayoutAbsolute;}',43,5,'Box.DelimExtend=',5,'Box.DelimExtendRelative;',5,'Box.Layout=',5,'Box.LayoutRelative;}if(','this.separateSkips','){',5,'HTML.Place=',5,'HTML.','PlaceSeparateSkips',';',5,'Typeset.prototype.','Place=',5,1538,1535,';}},MSIE',300,'if(',1339,'&&!',1347,'){',5,41,'="MSIE";',1056,1059,'Win32"){',1510,'=1;',1529,'=1',';this.butt
onCheck=1;this.',890,'=1;this.msieDivWidthBug=1;this.',884,640,'msieIntegralBug',640,'waitForImages',640,'msieAlphaBug=1;','this.alphaPrintBug=1',';this.',1320,'="position:relative; ";this.',1322,'=" ',161,';";',5,'Macro("joinrel","\\\\mathrel{\\\\kern-5mu}"),',5,1376,'arial"]="',230,': \'Arial unicode MS\'";',5,'styles["#jsMath_message','"]=',5,1586,1381,'position:fixed','/,"',204,'").','replace(/width:auto','/,"");',5,'styles["#jsMath_panel','"]=',5,1598,1381,1591,'/,"',204,'").',1595,1596,5,'styles["#jsMath_button','"]="width:','1px; "+',5,1610,1381,1591,'/,"',204,'").',1595,1596,5,1,'onscroll=',5,1281,'MoveButton;',5,1376,166,'"]=',5,1376,166,1381,161,1596,'if(','screen.deviceXDPI','&&','screen.logicalXDPI','&&',1639,'!=',1641,267,'imgScale*=',1641,'/',1639,';',5,450,'.alpha=0',527,292,'="<i>x</i>";',5,'EmBoxFor=',5,283,';}',43,1056,1059,'MacPPC"){this.msieAbsoluteBug',640,'msieButtonBug',1562,890,'=1;',5,'Setup.Script("jsMath-','msie-mac.js");',5,'Parser.prototype.macros.angle=["Replace","ord","<font face=\\"Symbol\\">‹</font>","normal"];',5,1598,1611,'25em; "+',5,1598,'"].',1595,1596,5,1610,1611,1612,5,1610,'"].',1595,'/,"");}}',5,'Macro("not","\\\\mathrel{\\\\rlap{\\\\kern3mu','/}}");}},Mozilla',300,'if(',5,270,'.ATTRIBUTE_NODE){',5,41,'="Mozilla";',1056,1059,'Win32"){',1570,';}',1510,'=1;',5,1696,'/}}");',1056,'vendor=="Firefox"){',5,291,'version=',1058,'vendorSub;}',43,1056,'userAgent.match','(" Firefox/([0-9.]+)( |$)")){',5,291,1720,'RegExp.$1;}}}},',1504,300,1056,'accentColorName){',5,41,'="',1504,'";','this.allowAbsolute','=',1362,';',1510,'=',1740,';this.valignBug=',1740,1560,807,'=1;',0,1362,'){',5,1673,'old-browsers.js','");}}},Opera',300,'if(',1347,'){',5,41,'="Opera";var _61=',1058,1725,'("Opera 7");',1740,'=0;this.delay=10;this.operaHiddenFix="[Processing]";if(_61){',5,1673,1757,'");}}},Safari',300,1056,'appVersion.match(/Safari\\//)){',5,41,'="Safari";var _62=',1058,1725,'("Safari/([0-9]+)");_62=(_62)?_62[1]:400;',402,5,1124,405,5,1128,']){',5,'TeX[',5,1128,']].dh=0.1;}}',5,'TeX.axis_heig
ht+=0.05;',1510,'=_62>=125;this.safariIFRAMEbug=_62>=312&&_62<412;this.safariImgBug',640,807,'=1',1560,1216,'=1;}},',1508,300,1056,'product&&',1058,'product.match("',1508,'")){',5,41,'="',1508,'";',1740,'=0;',1510,'=0;',1056,1725,'(/',1508,'\\/(\\d+)\\.(\\d+)/)){if(RegExp.$1<3||(RegExp.$1==3&&RegExp.$2<3)){',1529,'=1',1747,'1;',5,1673,1757,'");}}}}};',5,'Font={fallback:"symbol",message:"<b>No ',2,' TeX fonts found</b> -- using',' image fonts instead','.<br/>\\n"+"These',' may be slow and might not print well.<br/>\\n"+"Use the jsMath control panel to get additional information.",','extra_message:"Extra TeX fonts not found: <b><span id=\\"jsMath_ExtraFonts\\"></span></b><br/>"+"Using',1840,'. This',1842,'Test1',258,'_64,n,_66,_67','){if(n==null){n=124;}if(','_66==null){_66=2;}if(_67==null){_67="";}var wh1=',5,'BBoxFor("<span style=\\"font-family',': "+_67+_64+", serif\\">"+',5,'TeX[_64][n',1142,'var wh2=',5,1853,': serif\\">"+',5,'TeX[_64][n',1142,'return (wh1.w>_66*wh2','.w&&wh1.h!=0);},','Test2',258,'_6a,n,_6c,_6d',1850,'_6c==null){_6c=2;}if(_6d==null){_6d="";}var wh1=',5,1853,': "+_6d+_6a+", serif\\">"+',5,'TeX[_6a][n',1142,'var wh2=',5,1853,': serif\\">"+',5,'TeX[_6a][n',1142,'return (wh2.w>_6c*wh1',1866,'CheckTeX',300,'var wh=',5,1853,': ',2,'-',133,109,'\\">"+',5,386,'1',1142,5,'nofonts=((wh.w*3>wh.h||wh.h==0)&&!this.Test1("cmr10','",null,null,"',2,'-"));if(',5,'nofonts&&(',1058,'platform!="MacPPC"||',5,41,'!="Mozilla"||!',5,291,1479,'(1.5))){wh=',5,1853,': ',133,109,'\\">"+',5,386,'1',1142,5,1903,'"));',0,5,'nofonts){',5,1673,'BaKoMa-fonts.js");}}},Check',300,'var _71=',5,450,';this.CheckTeX();if(',5,1933,'if(_71.autofont','||_71.font=="tex"){_71.font=this.fallback;if(_71.warn){',5,'nofontMessage=1;_71.warn=0;',5,1281,'SetCookie(0);if(',5,1,'NoFontMessage','){',5,1,1953,'();}',43,'this.',496,'(',759,');}}}}',43,1944,'){_71.font="','tex";}','if(_71.font=="','tex"){return;}}if(',5,'noImgFonts',1967,'unicode";}',1969,'unicode"){var _72=({Win32:"pc",MacPPC:"mac"})[',1058,'platform]||"unix";',5,1673,'fallback-
"+_72+".js");',5,'Box.TeXnonfallback=',5,'Box.TeX',';',5,1985,'=',5,'Box.TeXfallback;return;}','if(',5,291,1567,'){',5,490,5,1221,711,'",',5,'blank);}',1969,'symbol"){',5,1673,'fallback-symbols.js");',5,'Box.TeXnonfallback=',5,1985,';',5,1985,'=',5,1991,5,'Img.SetFont({',106,':["all"],',125,2023,129,2023,133,2023,111,2023,118,':["all"]});',5,'Img.LoadFont("cm-fonts");},',496,258,'_73',7,5,'Element("Warning','")){',945,'var div=',5,323,'DIV("Warning",{});div',810,'="<center><table><tr><td>"+"<div id=\\"',234,'\\">"+_73+"<','div style=\\"','text-align:left\\"><',1235,'float:left; ','margin: 8px ','0px 0px 20px\\">"+"<span onclick=\\"',5,1281,'Panel()\\" title=\\" Open the ',2,' Control Panel',' \\" class=\\"link\\">',2,2062,'</span>"+"</span','><',1235,2056,'20px 0px 0px; float:right\\">"+"<span onclick=\\"',5,'Font.HideMessage()\\" title=\\" Remove this font warning message',2063,'Hide this ',496,2066,'></div><',2052,'height:6px\\"></div><br clear=\\"all\\"/></div>"+"<',2052,'width:22em; height:1px\\"></div>"+"</td></tr></table></center><hr/>";},HideMessage',300,'var _75=',5,2041,'");if(_75){_75.style.display="none";}},Register',258,'_76){',5,487,528,541,'_76)=="string"){_76={name:_76};}var _77=_76.name;var _78=_77.replace(/10$/,"");var _79=',5,1124,'if(_76.prefix==null){_76.prefix="";}',0,'_76.style){_76.style="',230,': "+_76.prefix+_77+", serif";}',0,'_76.styl'],
+ ['es){','_76.styles','={};}','if(!','_76.macros','){',4,2,'jsMath.','TeX.fam[_79]=_77;',8,'TeX.famName[_77]=_79;',4,'[_78]=["HandleFont",_79];',8,'Add(',8,'Parser.prototype.macros,',4,');',1,'[".typeset ."+_77]=_76.style;',8,'Setup.','Styles(',1,');','jsMath.Script.Push(jsMath.','Setup,"TeXfont",_77);var _7a=!',8,'nofonts&&_76.test(_77,_76.testChar,_76.testFactor,_76.prefix);if(_7a&&','jsMath.Controls','.cookie.font=="','tex"){if(_76.tex){_76.tex','(_77,_79,_76);}jsMath.Script.End();return;}',3,'_7a&&',31,'.cookie.warn&&',31,32,'tex"&&!',8,'nofonts){',3,8,'Element("','Warning")){this.Message(this.extra_message);}var _7b=',8,46,'ExtraFonts");if(_7b){if(','_7b.innerHTML','!=""){',51,'+=",";}',51,'+=" "+_76.prefix+_77;}}if(',31,32,'unicode"){if(','_76.fallback','){',60,34,'var _7c={};_7c[_77]=["all"];',8,'Img.SetFont(_7c);',8,'Img.LoadFont(_77);',27,'Img,"Scale");',27,'Img,"UpdateFonts");',8,'Script','.End();},Load',':function(','_7d){',8,23,74,'(this.URL(_7d));},URL',76,'_7e){return ',8,'Img.root+_7e+"/def.js";}};',31,'={cookie:{scale:100,font:"tex",autofont:1,scaleImg:0,alpha:1,warn:1,button:1,progress:1,asynch:0,blank:0,print:0,keep:"0D"},cookiePath:"/",Init',':function(){','this.panel=',8,23,'DIV("panel",{display:"none"});',3,8,'Browser.msieButtonBug){this.Button();}else{setTimeout("',31,'.Button()",500);}},Panel',88,8,'Translate.Cancel();if(this.loaded){this.Main();}else{',8,74,'.delayedLoad(',8,'root+"jsMath-controls.html");}},Button',88,'var _7f=',8,23,'DIV("button",{});_7f.title=" Open jsMath Control Panel ";_7f.innerHTML="jsMath";if(_7f.offsetWidth<2*',8,'em){_7f.style.width="auto";}_7f.onclick=new Function("',31,'.Panel()");',3,'this.cookie','.button){_7f.style.display="none";}},MoveButton',88,3,'this.button','){',120,'=',8,46,'button");}','this.button.style.visibility="','hidden";',127,'visible";},GetCookie',88,'var _80=',8,'document.cookie',';if(','jsMath.window.location.','protocol=="file:"){','_80=unescape(',136,'search.substr(1));}if(_80','.match(/jsMath','=([^;]*)/)){var _81=RegExp.$1.split(/,/);
for(var i=0;i<_81.length;i++){var x=_81[i].match(/(.*):(.*)/);if(x[2].match(/^\\d+$/)){x[2]=1*x[2];}',116,'[x[1]]=x[2];}}},SetCookie',76,'_84){var _85=[];','for(var id in ',116,'){_85[_85.length]=id+":"+',116,'[id];}_85=_85.join(",");if(',136,137,3,'_84){return;}this.loaded=0;var _87=',136,'href;_87=_87.replace(/\\?.*/,"")+"?jsMath="+escape(_85);if(_87!=',136,'href){',136,'replace(_87);}}else{if(','this.cookiePath','){_85+="; ','path="+',162,';}if(','this.cookieDomain',163,'domain="+',167,166,116,'.keep!="0D"){var ms={D',':1000*60*60*24',',W',174,'*7,M',174,'*30,Y',174,'*365};var exp=new Date;exp.setTime(exp.getTime()+',116,'.keep.substr(','0,1)*ms[',116,183,'1,1)]);_85+="; expires="+exp.toGMTString();}',8,134,'="jsMath="+_85;var _8a=',8,134,';if(_84&&!_8a',141,'=/)){alert("Cookies must be enabled in order to save jsMath options");}}}};',8,'Click={CheckClick',76,'_8b){',3,'_8b){_8b=',8,'window.event',166,'_8b.altKey){',31,'.Panel();}},CheckDblClick',76,'_8c){',3,'_8c){_8c=',8,'window.event;}',3,8,'Click.DblClick){',8,'Extension.Require("double-click",1);var _8d=_8c;_8c={};',147,'_8d){_8c[id]=_8d[id];}}',27,'Click,"DblClick",[_8c,this.alt]);}};',8,'TeX={thinmuskip:3/18,medmuskip:4/18,thickmuskip:5/18,x_height:0.430554,quad:1,num1:0.676508,num2:0.393732,num3:0.44373,denom1:0.685951,denom2:0.344841,sup1:0.412892,sup2:0.362892,sup3:0.288888,sub1:0.15,sub2:0.247217,sup_drop:0.386108,sub_drop:0.05,delim1:2.39,delim2:1,axis_height:0.25,default_rule_thickness:0.04,big_op_spacing1:0.111111,big_op_spacing2:0.166666,big_op_spacing3:0.2,big_op_spacing4:0.6,big_op_spacing5:0.1,integer:6553.6,scriptspace:0.05,nulldelimiterspace:0.12,delimiterfactor:901,delimitershortfall:0.5,scale:1,atom:["ord","op","bin","rel","open","close","punct","ord"],fam:["cmr10","cmmi10","cmsy10","cmex10","cmti10","","cmbx10",""],famName:{cmr10:0,cmmi10:1,cmsy10:2,cmex10:3,cmti10:4,cmbx10:6},encoding:["À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","°"
,"Ñ","Ò","Ó","Ô","Õ","Ö","·","Ø","Ù","Ú","Û","Ü","µ","¶","ß","ï","!",""","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","ÿ"],cmr10:[[0.625',',0.683],[0.','833',225,'778',225,'694',225,'667',225,'75',225,'722',225,'778',225,'722',225,'778',225,'722',225,'583',',0.694,0,{ic:0.','0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15}}],[0.','556',',0.694],[0.','556',251,'833',251,'833',251,'278',',0.431],[0.','306',',0.431,0.194','],[0.5',251,'5',251,'5,0.628],[0.5',251,'5,0.568],[0.75',251,'444,0,0.17],[0.5',251,'722',259,'778',259,'5,0.528,0.0972],[0.903,0.683],[1.01',225,'778,0.732,0.0486],[0.278',',0.431,0,{krn:{"','108":-0.278,"76":-0.319}}],[0.278',',0.694,0,{lig:{"96":','60}}],[0.','5',251,'833',',0.694,0.194],[','0.5',',0.75,0.0556],[0.','833',288,'778',251,'278',',0.694,0,{krn:{"','63":0.111,"33":0.111','},lig:{"39":34}}],[0.','389',',0.75,0.25],[0.','389',298,'5,0.75],[','0.778,0.583,0.0833],[','0.278,0.106',',0.194],[0.','333',',0.431,0,{','lig:{"45":','123}}],[',303,'],[0.5',298,'5',',0.644','],[0.5,0.644],[0.','5',313,314,'5',313,314,'5',313,314,'5',313,314,'278',259,'278',261,'],[0.278,0.5',304,'778',',0.367,-0.133],[','0.472,0.5',304,'472',281,'62}}],[0.778',251,'75',',0.683,0,{krn:{"','116','":-0.0278,"','67',344,'79',344,'71',344,'85',344,'81',344,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}}],[0.','708',225,'722',225,'764',342,'88',344,'87',344,'65',344,'86',344,'89":-','0.0278}}],[0.','681',225,'653',',0.683,0,{','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67"
:-0.0278,"71":-0.0278,"81":-0.0278}}],[','0.785',225,'75',225,'361',342,'73":',371,'514',225,'778',342,'79',344,'67',344,'71',344,'81":-',371,'625',342,355,'917',225,'75',225,'778',342,'88',344,'87',344,'65',344,'86',344,'89":-',371,'681',342,'65','":-0.0833,"','111',344,'101',344,'97',344,'46',419,'44":-0.','0833}}],[0.','778,0.683',304,'736',342,'116',344,'67',344,'79',344,'71',344,'85',344,'81',344,355,'556',225,'722',342,'121',344,'101',419,'111',419,'114',419,'97',419,'65',419,'117":-0.',429,'75',225,'75',',0.683,0,{ic:0.','0139,',376,'1.03',468,'0139,',376,'0.75',342,'79',344,'67',344,'71',344,'81":-',371,'75',468,'025,','krn:{"101',419,'111',419,'114',419,'97',419,'65',419,463,429,'611',225,'278',298,'5',251,'278',298,'5',251,'278,0.668],[0.','278',281,'92}}],[0.','5',279,'118',344,'106":0.0556,"121',344,'119":-',371,'556',',0.694',',0',',{krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}}],[0.','444',279,'104',344,'107":-',371,'556',251,'444',259,'306',247,248,'12,"102":11,"108":13}}],[0.','5,0.431',',0.194,{ic:0.','0139,krn:{"','106":',371,'556',294,'116',344,'117',344,'98',344,'121',344,'118',344,'119":-',371,510,'306,0.668',304,'528',294,'97','":-0.0556,"','101',344,'97',344,'111',344,'99":-',371,'278',251,'833',279,'116',344,'117',344,'98',344,'121',344,'118',344,'119":-',371,'556',279,'116',344,'117',344,'98',344,'121',344,'118',344,'119":-',371,540,',0',525,'556',261,525,'528',261,'],[0.392',259,'394',259,'389,0.615,0,{krn:{"121',344,'119":-',371,'556',279,'119":-',371,'528',',0.431,0,{ic:0.',542,'97',565,'101',344,'97',344,'111',344,'99":-',371,'722',625,542,'101',344,'97',344,'111',344,'99":-',371,'528',259,'528',',0.431',541,542,'111',344,'101',344,'97',344,'46',419,'44":-0.',429,'444',259,'5',625,'0278,',307,'124}}],[1',625,'0278}],[0.','5',251,'5,0.668],[0.5,0.668]],cmmi10:[[0.615',468,'139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',429,'833',342,'127":0.167}}],[0.','763',468,668,'krn:{"127":0.
0833}}],[0.','694',342,682,'742',468,'0757,',686,'831',468,'0812,krn:{"61',565,'59":-0.0556,"58":-0.0556,"127":0.','0556}}],[0.','78',468,'0576,',686,'583',468,'139',678,699,'667',375,686,'612',468,'11,krn:{"61',565,698,699,'772',468,'0502,',686,'64',625,'0037,','krn:{"127":',371,'566',523,541,'0528,',686,'518',651,541,'0556}],[0.444',247,'0378,krn:{"',698,699,'406',306,'krn:{"127":0.0556}}],[0.','438',523,541,'0738,',686,'497',651,541,'0359,',742,'469',247,668,686,'354',306,742,'576',259,'583',251,'603',261,',{',725,371,'494',625,'0637,krn:{"',698,'0278}}],[0.','438',523,541,'046,','krn:{"127":0.111}}],[0.','57',625,'0359}],[0.','517',261,',{',686,'571',625,'0359,krn:{"59',565,'58":-0.',699,'437',625,'113,krn:{"',698,773,'54',625,'0359,',725,371,'596',523,',0.194,{',686,'626',261,',{',742,'651',523,541,'0359,',778,'622',625,781,'466',306,686,'591',',0.694,0,{',686,'828',625,672,'517',261,',{',686,'363',651,',0.0972,{ic:0.','0799,',686,'654',261,',{',725,'0.0833}}],[1',334,'1',334,'1',334,'1',334,'0.278',',0.464,-0.0363],[','0.278',849,'0.5,0.465,-0.0347],[',852,'0.5',259,'5',259,'5',259,'5',261,'],[0.5',261,'],[0.5',261,314,'5',261,314,'5',261,'],[',303,'],[',303,304,'778',',0.539,0.0391],[','0.5,0.75,0.25,{krn:{"1',565,'65',565,'77',565,'78',565,'89":0.0556,"90":-0.',699,'778',878,852,'0.531',247,'0556,',686,'75',342,'127":','0.','139}}],[0.','759',468,'0502,',686,'715',468,'0715,krn:{"61',344,698,429,'828',468,668,742,'738',468,'0576,',686,'643',468,'139',678,429,'786',375,686,'831',468,'0812,krn:{"61',565,698,699,'44',468,'0785,',778,'555',468,'0962',678,'167}}],[0.','849',468,'0715,krn:{"61',565,698,699,'681',342,898,371,'97',468,'109,krn:{"','61',565,698,429,'803',468,954,'61',419,'61',344,698,429,'763',468,668,686,'642',468,'139',678,429,'791,0.683',804,686,'759',468,'00773,',686,'613',468,'0576,krn:{"61',565,698,429,'584',468,'139,krn:{"61',344,698,429,'683',468,954,'59":-0.111,"',790,'111,"61',565,898,371,'583',468,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}}],[0.','944',468,'139',1008,'828',468,'
0785,krn:{"61',419,'61',344,698,429,'581',468,'222',1008,'683',468,'0715,krn:{"61',565,698,429,'389,0.75],[0.389',286,'0.389',286,'1,0.358,-0.142],[',1035,'0.417',822,778,'529',259,'429',251,'433',306,742,'52',294,'89":0.0556,"90',565,'106":-0.111,"102":-0.167,"',682,'466',306,742,'49',523,541,'108,krn:{"',698,941,'477',651,541,'0359,',725,371,'576',294,'127":-',371,'345,0.66],[0.412,0.66',541,'0572,krn:{"59',565,790,699,'521',247,'0315}],[0.298',247,'0197,',686,'878',259,'6',259,'485',306,742,'503',261,',{',686,'446',651,541,'0359,',686,'451',625,668,'krn:{"',698,699,'469',306,742,'361,0.615,0,{',686,'572',279,898,371,'485',625,'0359,',725,371,'716',625,'0269,',686,'572',279,898,371,'49',651,541,'0359,',742,'465',625,'044,',742,'322',279,898,371,'384',261,',{',686,'636',261,',{',778,'5,0.714',',0,{ic:0.','154}],[0.278',247,'399}]],cmsy10:[[',302,'0.278,0.444,-0.0556],[',302,852,302,'0.5,0.444,-0.0556],[',302,302,302,302,302,302,302,'1',286,1159,1159,'0.778',849,'0.778,0.464,-0.0363','],[0.778,0.636,0.136',1174,1174,1174,1174,1174,'],[0.778',334,'0.778,0.483,-0.0169],[0.778',878,'0.778',878,'1',878,'1',878,'0.778',878,'0.778',878,'1',334,'1',334,'0.5',286,'0.5',286,'1',334,'1',286,'1',286,'0.778',849,'1',334,'1',334,'0.611',286,'0.611',286,'1',334,'1',286,'1',286,'0.778',259,'275,0.556],[1',259,'667',878,'0.667',878,'0.889',286,'0.889',286,'0',286,'0',334,'0.556',251,'556',251,'667',259,'5',288,'722',251,'722',251,'778',251,'778',251,'611',251,'798',342,'48":0.','194}}],[0.657',468,'0304',',krn:{"48":0.',900,'527',468,'0583',1264,900,'771',468,'0278',1264,429,'528',468,'0894',1264,'111}}],[0.','719',468,'0993',1264,1280,'595',',0.683,0.0972,{ic:0.','0593',1264,1280,'845',468,'00965',1264,1280,'545',468,'0738,krn:{"48":',371,'678',1287,'185',1264,941,'762',468,'0144',1264,699,'69',342,1260,'139}}],[1.2',342,1260,900,'82',468,'147',1264,429,'796',468,1273,1264,1280,'696',468,'0822',1264,429,'817,0.683,0.0972,{krn:{"',1260,1280,'848',342,1260,429,'606',468,'075',1264,900,'545',468,'254,krn:{"48":',371,'626',468,'09
93',1264,429,'613',468,'0822,krn:{"48":',371,'988',468,'0822',1264,429,'713',468,'146',1264,900,'668',1287,'0822',1264,429,'725',468,'0794',1264,900,'667,0.556],[0.',1377,1377,1377,1377,'611',251,'611',251,'444',298,'444',298,'444',298,'444',298,'5',298,'5',298,'389',298,'389',298,'278',298,'5',298,'5',298,'611',298,'5',298,'278',286,'0.833,0.04,0.96],[0.75',225,'833',225,'417',523,541,'111}],[0.',1377,'667,0.556',1174,1174,'],[0.444',286,'0.444',286,'0.444',286,'0.611',286,'0.778,0.694,0.13','],[',1434,'],[',1434,'],[',1434,']],cmex10:[[0.458',',0.04,1.16,{n:','16}],[0.458',1442,'17}],[0.417',1442,'104}],[0.417',1442,'105}],[0.','472',1442,'106}],[0.472',1442,'107}],[0.472',1442,'108}],[0.','472',1442,'109}],[0.583',1442,'110}],[0.583',1442,1421,'472',1442,'68}],[0.472',1442,'69}],[0.333',',0,0.6,{delim:{','rep:12}}],[0.556',1469,'rep:13}}],[0.578',1442,'46}],[0.578',1442,'47}],[0.597',',0.04,1.76,{','n:18}],[0.597',1477,'n:19}],[0.736',',0.04,2.36,{n:','32}],[0.736',1481,'33}],[0.528',1481,'34}],[0.528',1481,'35}],[0.583',1481,'36}],[0.583',1481,'37}],[0.583',1481,'38}],[0.583',1481,'39}],[0.75',1481,'40}],[0.75',1481,'41}],[0.75',1481,'42}],[0.75',1481,'43}],[1.04',1481,'44}],[1.04',1481,'45}],[0.792',',0.04,2.96,{n:','48}],[0.792',1509,'49}],[0.583',1509,'50}],[0.583',1509,'51}],[0.639',1509,'52}],[0.639',1509,'53}],[0.639',1509,'54}],[0.639',1509,'55}],[0.806',1509,'56}],[0.806',1509,'57}],[0.806',',0.04,2.96],[','0.806',1529,'1.28',1529,'1.28',1529,'0.811',1477,'n:30}],[0.811',1477,'n:31}],[0.875',1477,'delim:{top:','48,bot:64,rep:66}}],[0.875',1477,1542,'49,bot:65,','rep:67}}],[0.','667',1477,1542,'50,bot:52,rep:54}}],[0.667',1477,1542,'51,bot:53,rep:55}}],[0.667',1477,'delim:{bot:','52,rep:54}}],[0.667',1477,1556,'53,rep:55}}],[0.667',1469,'top:50,rep:54}}],[0.667',1469,'top:51,rep:55','}}],[0.889,0,0.9,{delim:{top:','56,mid:60,bot:58,rep:62',1565,'57,mid:61,bot:59,rep:62',1565,'56,bot:58,rep:62',1565,'57,bot:59,rep:62','}}],[0.889,0,1.8,{delim:{rep:','63',1573,'119}}],[0.889,0,0.3,{delim:{','rep:62}}],[
0.','667',1469,'top:120,','bot:121,rep:63}}],[0.','875',1477,1542,'56,bot:59,',1577,'875',1477,1542,'57,bot:58,',1577,'875',1469,'rep:66}}],[0.875',1469,1547,'611',1477,'n:28}],[0.611',1477,'n:29','}],[0.833,0,1,{n:','71}],[1.','11,0.1,1.5],[','0.472,0,1.11,{ic:0.194,n:','73}],[0.556,0,2.22,{ic:0.444}],[1.','11,0,1,{n:','75}],[1.51',',0.1,1.5],[1.',1607,'77}],[1.51',1609,1607,'79}],[1.51',1609,'06,0,1,{n:88}],[','0.944,0,1,{n:','89}],[',1605,'90',1602,'91',1602,'92',1602,'93',1602,'94',1602,'95}],[1.44',1609,'28,0.1,1.5],[0.556,0',',2.22,{ic:0.444}],[1.11',1609,'11',1609,'11',1609,'11',1609,1604,1617,'97}],[1.',1632,'.722,0,{n:99','}],[1,0.75,0,{n:','100','}],[1.44,0.75],[0.','556,0.722,0,{n:102',1646,'103',1648,'472',1477,'n:20}],[0.472',1477,'n:21}],[0.528',1477,'n:22}],[0.528',1477,'n:23}],[0.528',1477,'n:24}],[0.528',1477,'n:25}],[0.667',1477,'n:26}],[0.667',1477,'n:27}],[1',1442,'113}],[1',1477,'n:114}],[1',1481,'115}],[1',1509,'116}],[1.06,0,1.8,{',1542,'118,bot:116,rep:117}}],[1.06,0,0.6],[1.06,0.04,0.56],[0.778',1469,'top:126,','bot:127,rep:119','}}],[0.667',1469,1580,'rep:63}}],[0.667',1469,1581,'45,0.12],[0.',1689,1689,1689,'778',1469,1681,'rep:119}}],[0.778',1469,1682,'}}]],cmti10:[[0.627',468,'133}],[0.818',225,'767',468,'094}],[0.692',225,'664',468,'153}],[0.743',468,'164}],[0.','716',468,'12}],[0.','767',468,1421,'716',468,'0599}],[0.767',468,1421,'716',468,'103}],[0.','613',523,541,'212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":',249,'562',523,541,1725,'588',523,541,1725,'882',523,541,1725,'894',523,541,1725,'307',625,'0767}],[0.','332',651,541,'0374}],[0.511',251,'511',247,'0969','}],[0.511,0.','628',1150,'083}],[0.511',247,'108',1758,'562',1150,1725,'831',251,'46,0,0.17],[0.537',523,541,1449,'716',625,'0751}],[0.716',625,'0751',1758,'528',833,'0919}],[0.883',468,1714,'985',468,1714,'767,0.732,0.0486,{ic:0.094}],[0.256',279,'108":-0.256,"76":-0.321}}],[0.307',247,'124,lig:{"96":',282,'514',247,'0696}],[0.818',523,541,'0662}],[0.769',251,'818,0.75,0.0556,{ic:0.136}],[
0.767',247,'0969}],[0.307',247,'124,krn:{"63":0.102,"33":0.102',296,'409',',0.75,0.25,{ic:0.','162}],[0.409',1808,'0369',1758,'75',1150,'149}],[0.767,0.562,0.0567,{ic:0.0369','}],[0.307,0.','106',304,'358',625,'0283,',307,'123}}],[0.307,0.106],[0.511',1808,'162}],[','0.511,0.644,0,{ic:0.136}],[',1826,1826,1826,'0.511',313,541,'136}],[',1826,1826,'0.511',313,541,'136}],[',1826,1826,'0.307',625,'0582',1816,'431',541,'0582',1816,'5',541,'0756}],[0.767,0.367,-0.133,{ic:0.0662',1758,'5',304,'511',247,'122,lig:{"96":62}}],[0.767',247,'096}],[0.743',375,'krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',1864,'86','":-0.102,"','87',1868,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','704',468,1725,'716',468,'145}],[0.','755',468,'094,krn:{"88','":-0.0256,"','87',1881,'65',1881,'86',1881,'89','":-0.0256}}],[0.','678',468,1714,'653',468,'133,krn:{"','111','":-0.0767,"101":-0.0767,"','117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',1868,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.0256}}],[0.','774',468,'0872}],[0.743',468,1711,'386',468,'158}],[0.525',468,'14}],[0.769',468,'145,krn:{"',1902,'627',342,'84',1864,'89',1864,'86',1868,'87',1868,1871,'897',468,1711,'743',468,1711,'767',468,'094,krn:{"88',1881,'87',1881,'65',1881,'86',1881,'89',1889,'678',468,'103',',krn:{"65":-0.0767}}],[0.','767,0.683',541,'094}],[0.729',468,'0387,',1862,'0.0256,"84',1864,'89',1864,'86',1868,'87',1868,1871,'562',468,1714,'716',468,1895,'121',1897,'111',1899,'117":-0.0767,"65":-0.0767}}],[0.','743',468,1711,'743',468,'184,krn:{"111',1897,'117',1899,'65',1868,1902,'999',468,'184',1948,'743',468,'158,krn:{"',1902,'743',468,'194,',488,1864,'111',1899,1974,'613',468,1877,'307',1808,'188}],[0.514',247,'169}],[0.307',1808,1449,'511',247,'0665',1816,'668',1150,'118}],[0.307',247,1
792,513,'511',625,1749,'46',247,'0631,krn:{"',1871,'46',625,'0565,krn:{"',1871,'511',247,'103,krn:{"108":0.0511}}],[0.46',625,'0751,krn:{"',1871,'307',523,541,1729,539,'46',651,541,'0885}],[0.511',247,'0767',1816,'655',1150,'102',1816,'655',541,1877,'46',247,1456,'256',822,'i'],
+ ['c:0.103',',krn:{"108":0.0511}}],[0.','818',',0.431,0,{ic:0.','0767}],[0.','562',3,'0767,krn:{"39":-0.102','}}],[0.','511',3,'0631',',krn:{"101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','511',',0.431,0.194,{ic:0.','0631',12,'46',14,'0885}],[0.','422',3,'108',12,'409',3,'0821}],[0.332,0.615,0,{ic:0.0949}],[0.537',3,4,'46',3,'108}],[0.664',3,'108',1,'464',3,'12}],[0.486',14,19,'409',3,'123}],[0.511',3,'0921',',lig:{"45":124}}],[1.','02',3,'0921}],[0.511,0.694,0,{ic:0.122','}],[0.511,0.668,0,{ic:0.','116',49,'105}]],cmbx10:[[0.692',',0.686],[0.','958',53,'894',53,'806',53,'767',53,'9',53,'831',53,'894',53,'831',53,'894',53,'831',53,'671',',0.694,0,{ic:0.109,krn:{"39":0.109,"63":0.109,"33":0.109,"41":0.109,"93":0.109},lig:{"105":','14,"108":15',8,'639',',0.694],[0.','639',79,'958',79,'958',79,'319',',0.444],[0.','351',',0.444,0.194','],[0.575,0.','694',90,'694',90,'632',90,'694',90,'596],[0.869',79,'511,0,0.17],[0.597',79,'831',87,'894,0.444',90,'542,0.0972],[1.04,0.686],[1.17',53,'894,0.735,0.0486],[0.319',',0.444,0,{krn:{"','108":-0.319,"76":-0.378',8,'35',',0.694,0,{lig:{"96":','60',8,'603',79,'958,0.','694,0.194',90,'75,0.0556],[0.',119,122,'894',79,'319',',0.694,0,{krn:{"','63":0.128,"33":0.128},lig:{"39":34',8,'447',',0.75,0.25],[0.','447,0.75,0.25',90,'75],[0.894,0.633,0.133],[','0.319,0.156',',0.194],[0.','383',',0.444,0',',{lig:{"45":123}}],[',136,90,'75,0.25',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644],[0.319',87,'319',89,'],[0.35,0.5',137,'894,0.391,-0.109],[0.543,0.5',137,'543',114,'62',8,'894',79,'869',',0.686,0,{krn:{"','116','":-0.0319,"','67',180,'79',180,'71',180,'85',180,'81',180,'84":-0.0958,"89":-0.0958,"86":-0.128,"87":-0.128}}],[','0.818',53,'831',53,'882',178,'88',180,'87',180,'65',180,'86',180,'89','":-0.0319}}],[0.','756',53,'724,0.686,0,{','krn:{"111":-0.0958,"101":-0.0958,"117":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.128,"79":-0.0319,"67":-0.0319,"71":-0.0319,"81":-0.0319}}],[','0.
904',53,'9',53,'436',178,'73":0.0319',8,'594',53,'901',178,'79',180,'67',180,'71',180,'81',207,'692',178,191,'1.09',53,'9',53,'864',178,'88',180,'87',180,'65',180,'86',180,'89',207,'786',178,'65":-0.0958,"111',180,'101',180,'97',180,'46":-0.0958,"44":-0.0958}}],[0.','864,0.686',137,'862',178,'116',180,'67',180,'79',180,'71',180,'85',180,'81',180,191,'0.639',53,'8',178,'121',180,'101":-0.0958,"111":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.0958,"117":-0.0958}}],[0.','885',53,'869,0.686,0,{ic:0.','016,',211,'1.19,0.686,0,{ic:0.016,',211,'0.869',178,'79',180,'67',180,'71',180,'81',207,286,'0287,krn:{"',283,'703',53,'319',132,'603',79,'319,0.75,0.25',90,'694],[0.319',79,'319',114,'92',8,'559',110,'118',180,'106":0.0639,"121',180,'119',207,'639,0.694,0',',{krn:{"101":0.0319,"111":0.0319,"120":-0.0319,"100":0.0319,"99":0.0319,"113":0.0319,"118":-0.0319,"106":0.0639,"121":-0.0319,"119":-0.0319}}],[0.','511',110,'104',180,'107',207,'639',79,'527',87,'351',75,'12,"102":11,"108":13',8,'575',89,',{ic:0.016,krn:{"','106":0.0319',8,'639',128,'116',180,'117',180,'98',180,'121',180,'118',180,'119',207,'319',79,'351,0.694',137,'607',128,'97":-0.0639,"101',180,'97',180,'111',180,'99',207,'319',79,'958',110,'116',180,'117',180,'98',180,'121',180,'118',180,'119',207,'639',110,'116',180,'117',180,'98',180,'121',180,'118',180,'119',207,'575',139,327,'639',89,327,'607',89,'],[0.474',87,'454',87,'447,0.635,0,{krn:{"121',180,'119',207,'639',110,'119',207,'607',139,344,'97":-0.0639,"101',180,'97',180,'111',180,'99',207,'831',139,344,'101',180,'97',180,'111',180,'99',207,'607',87,'607',89,344,'111',180,'101',180,'97',180,259,'511,0.444',90,'444,0,{ic:0.0319',45,'15,0.',461,'}],[0.575,0.694',90,'694',90,'694]]};','jsMath.Img','={fonts:[50,60,70,85,100,120,144,173,207,249,298,358,430],w:{"50":6.9,"60":8.3,"70":9.7,"85":11.8,"100":13.9,"120":16.7,"144":20,"173":24,"207":28.8,"249":34.6,"298":41.4,"358":49.8,"430":59.8},best:4,update:{},factor:1,loaded:0,SetFont',':function(','_8f){for(var _90 in _8f){if(!','this.update[_90',']){',474,']=[]
;}',474,']=',474,'].concat(_8f[_90]);}},AddFont',472,'_91,def){if(!',470,'[_91]){',470,'[_91]={};}','jsMath.Add(',470,'[_91],def);},UpdateFonts',':function(){','var _93=this.update;','if(!this.loaded){','return;}var ','_94=this[','jsMath.Img.fonts','[this.best]];','for(var _95 in _93){','for(var i=0;i<','_93[_95].length;i++){var c=_93[_95][i];if(c=="all"){for(c in ','jsMath.TeX[','_95]){',501,'_95][c].img','={};}}else{',501,504,'={};}}}this.update={};},BestSize',491,'var w=jsMath.em*this.factor;var m=','this.w[this.fonts[','0]];for(var i=1;i<','this.fonts','.length;i++){','if(w<(',511,'i]]+2*m)/3){','return ','i-1;}m=',511,'i]];}',518,'i-1;},Scale',491,493,'return;}this.best=this.BestSize();this.em=',470,'.w[',513,497,'this.scale','=(jsMath.em/this.em);','if(Math.abs(',531,'-1)<0.12){',531,'=1;}},URL',472,'_9b,_9c,C){var _9e=(','jsMath.Controls.cookie.','alpha)?"/alpha/":"/plain/";if(C==null){C="def.js";}else{C="char"+C+".png";}if(_9c!=""){_9c+="/";}','return this.','root+_9b+_9e+_9c+C;},LoadFont',472,'_9f){',493,'this.Init();}jsMath.Setup.Script(this.URL(_9f,""));},Init',491,'if(',540,'print){',540,'print=0;this.factor*=3;if(jsMath.window.location.protocol!="file:"){jsMath.Controls.SetCookie(0);}if(','jsMath.Browser.','alphaPrintBug){',540,'alpha=0;}}var _a0="0123456789ABCDEF";this.HexCode=[];',499,'128;i++){var h=Math.floor(i/16);var l=i-16*h;this.HexCode[i]=_a0.charAt(h)+_a0.charAt(l);}this.loaded=1;}};jsMath.HTML={Em',472,'m){var n=5;if(m<0){n++;}',533,'m)<0.000001){m=0;}var s=String(m);s=s.replace(/(\\.\\d\\d\\d).+/,"$1");',518,'s+"em";},Spacer',472,'w){if(w==0){return "";}return "<','span class=\\"spacer\\" style=\\"margin-','left:"+this.Em(','w)+"\\"></span>";},Blank',472,'w,h,d,_ab){var _ac="";var _ad="";if(_ab){_ad+="border-',569,'w)+" solid;";if(',554,'widthAddsBorder){w=0;}}if(w==0){if(',554,'blankWidthBug){_ad+="width:1px;";_ac="<',568,'right:-1px\\"></span>";}}else{_ad+="width:"+this.Em(w)+";";}if(d==null){d=0;}if(h){var H=this.Em(h+d);if(_ab&&h>0&&h*jsMath.em<1.5){H="1px";h=1/jsMath.em;}_ad+="heigh
t:"+H+";";}if(',554,'mozInlineBlockBug){d=-h;}if(',554,'msieBorderBug&&!_ab){d-=jsMath.d;}if(d){_ad+="','vertical-align:"+','this.Em(-d);}',518,'_ac+"<span class=\\"blank\\" ','style=\\""+','_ad+"\\"></span>";},Rule',472,'w,h){if(h==null){h=jsMath.TeX.default_rule_thickness;}',542,'Blank(w,h,0,1);},Class',472,'_b1,_b2){return "<span class=\\""+_b1+"\\">"+_b2+"</span>";},Place',472,'_b3',',x,y){if(Math.abs(x)<0.0001){x=0;}if(Math.abs(y)<0.0001){y=0;}','if(x||y){var _b6','="<span style=\\"position',': relative',';";if(x){_b6+=" margin-',569,'x)+";";}if(y){_b6+=" ','top:"+this.Em','(-y)+";";}_b3=_b6+"\\">"+_b3','+"</span>";}',518,'_b3;},PlaceSeparateSkips',472,'_b7',599,'if(y){_b7',601,602,'; ',606,'(-y)+";"+"\\">"+_b7',608,'if(x){_b7=this.Spacer(x)+_b7',';}return ','_b7;},PlaceAbsolute',472,'_ba',599,'_ba',601,':absolute','; ',569,'x)+"; "+"',606,'(y)+";\\">"+_ba+" </span>";',518,'_ba;},Absolute',472,'_bd,w,h,d,y,H){if(y!="none"){',533,'y)<0.0001){y=0;}_bd',601,629,'; "+"top:"+','jsMath.HTML.','Em(y)+"; left:0em',';\\">"+_bd','+" "+"</span>";}if(d=="none"){d=0;}_bd+=this.Blank(w,h-d,d);if(',554,'msieAbsoluteBug){_bd',601,':relative',646,608,'_bd',601,651,';"+" width: "+',644,'Em(w)+";"+" height: "+',644,'Em(H)+";"+',554,'msieInlineBlockFix+"\\">"+_bd+"</span>";',518,'_bd;}};','jsMath.Box','=function(','_c3,_c4,w,h,d){if(d==null){d=jsMath.d;}this.type="typeset";this.w=w;this.h=h;this.d=d;this.bh=h;this.bd=d;this.x=0;this.y=0;','this.html=','_c4;this.format=_c3;};',488,666,',{defaultH:0,Null:','new jsMath.Box("','null","",0,0,0),Text',472,'_c8,_c9,_ca,_cb,a,d){var _ce=','jsMath.Typeset.AddClass(','_c9,_c8);_ce=','jsMath.Typeset.','AddStyle(','_ca,_cb,_ce);var BB','=jsMath.EmBoxFor(','_ce);var TeX=',680,'TeX(_ca,_cb);var bd=((_c9=="cmsy10"||_c9=="cmex10")?BB.h-TeX.h:TeX.d*BB.h/TeX.hd);','var box=',674,'text",_c8,BB.w,BB.h-bd,bd);box.style=_ca;box.size=_cb;','box.tclass','=_c9;if(d','!=null){box.','d=d','*TeX.scale;}else{box.','d=0;}if(a==null||a==1){box.h=0.9*TeX.M_height;}else{box.h=1.1*TeX.x_height+TeX.sc
ale*a;}','return box;},','TeX',472,'C,_d4,_d5,_d6){var c=',501,'_d4][C];if(','c.d==null){c.d=0;}','if(c.h','==null){c.','h=0',';}if(c.img!=null','&&c.c!=""){this.TeXIMG(_d4,C,',680,'StyleSize(_d5,_d6));}var _d8=',680,'TeX(_d5,_d6).scale;var h=c.h+',501,'_d4].dh;',687,674,'text",c.c,c.w*_d8,h*_d8,c.d*_d8);box.style=_d5;box.size=_d6;if(c.tclass){',690,'=c.tclass;if(c.img){box.bh=c.img.bh;box.bd=c.img.bd;}else{box.bh=_d8*jsMath.h;box.bd=_d8*jsMath.d;}}else{',690,'=_d4;box.bh=_d8*',501,'_d4].h;box.bd=_d8*',501,'_d4].d;if(',554,'msieFontBug&&box.html.match(/&#/)){box.html+="<span style=\\"display',': none\\">x</span>";}}',696,'TeXfallback',472,'C,_dc,_dd,_de','){c=',501,'_dc][C];if(!c.tclass){c.tclass=_dc',706,'){',542,'TeXnonfallback(',731,');}if(c.h!=null&&c.a',704,'a=c.h-1.1*jsMath.TeX.x_height;}',687,'this.Text(c.c,c.tclass,_dd,_de,c.a,c.d);var _e0=',680,'TeX(_dd,_de).scale;if(c.bh',692,'bh=c.bh*_e0;box.bd=c.bd*_e0;}else{var h=box.bd+box.bh;var _e2=',678,690,',box.html);_e2=',680,681,'_dd,_de,_e2);box.bd',683,'_e2+',644,'Blank(1,h)).h-h;box.bh=h-box.bd;if(_e0==1){c.bh=box.bh;c.bd=box.bd;}}if(jsMath.',726,':none\\">x</span>";}',696,'TeXIMG',472,'_e3,C,_e5){var c=',501,'_e3][C];if(c.img.size!=null&&c.img.size==_e5&&c.img.best!=null&&c.img.best==','jsMath.Img.best','){',494,'_e7=(',470,'.scale!=1);var id=',767,'+_e5-4;if(id<0){id=0;_e7=1;}else{if(id>=',496,'.length){','id=',496,'.length-1',';_e7=1;}}var _e9=',470,'[',496,'[id]];var img=_e9[_e3][C];var _eb=1/',470,'.w[',496,'[id]];if(id!=',767,'+_e5-4){if(c.w!=null){_eb=c.w/img[0];}else{_eb*=',496,'[_e5]/',496,'[4]*',496,'[',767,']/',496,'[id];}}var w=img[0]*_eb;var h=img[1]*_eb;var d=-img[2]*_eb;var v;var _f0=(c.w==null||Math.abs(c.w-w)<0.01)?"":" margin-right:"+',644,'Em(c.w-w)+";";var _f1="";C=',470,'.HexCode[C];if(!_e7&&!',540,'scaleImg){if(2*w<h||(',554,'msieAlphaBug&&',540,'alpha)){_f1="height',':"+(img[1]*',554,'imgScale',')+"px;";}_f1+=" width:"+(img[0]*',554,813,')+"px;";v=-img[2]+"px";}else{if(2*w<h||(',554,'msieAlphaBug&&',540,810,':"+',644,'Em(h*',554,813
,')+";";}_f1+=" width:"+',644,'Em(w*',554,813,')+";";v=',644,'Em(d);}var _f2=(Math.abs(d)<0.01&&!',554,'valignBug)?"":" ',585,'v+";";var URL=',470,'.URL(_e3,',496,'[id],C);if(',554,'msieAlphaBug&&',540,'alpha){','c.c="<img src=\\""+','jsMath.blank+"\\" "+"',589,554,'msieCenterBugFix+_f1+_f2+_f0','+" filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+"\'"+URL+"\', sizingMethod=\'scale\'"+");\\" />";}else{',847,'URL+"\\" ',589,554,851,'+"\\" />";}c.tclass="normal";c.img.bh=h+d;c.img.bd=-d;c.img.size=_e5;c.img.best=',767,';},Space',472,'w){',518,674,'html",',644,'Spacer(w),w,0,0);},Rule',472,592,'var _f7=',644,'Rule(w,h);',518,674,865,'_f7,w,h,0);},GetChar',472,'_f8,_f9){var c=',501,'_f9][_f8];','if(c.img!=null){this.TeXIMG(','_f9,_f8,4);}if(c.tclass',704,'tclass=_f9;}if(!c.computedW){c.w',683,678,'c.tclass,c.c)).w',';if(c.h==null){c','.h=jsMath.Box.defaultH;}if(',702,'c.computedW=1',622,'c;},DelimBestFit',472,'H,c,_fd,_fe){if(c==0&&_fd','==0){return null;}','var C;var h;_fd','=jsMath.TeX.fam[','_fd];var isSS=(_fe.charAt(1)=="S");var isS=(_fe.charAt(0)=="S");while(c!=null){C=',501,'_fd][c];if(C.h==null){C',889,'C.d==null){C.d=0;}h=C.h+C.d;if(C.delim','){return [c,_fd',',"",H];}if(isSS&&0.5*h>=H',904,',"SS",0.5*h];}if(isS&&0.7*h>=H',904,',"S",0.7*h];}if(h>=H||C.n==null',904,',"T",h];}c=C.n',622,'null;},DelimExtendRelative',472,'H,c,font,a,','_107){var C=',501,'font][','c];var top=this.GetChar(C.delim.top?C.delim.top:C.delim.rep,font);var rep=this.GetChar(C.delim.rep,font);var bot=this.GetChar(C.delim.bot?C.delim.bot:C.delim.rep,font);','var ext=',678,'rep.tclass,rep.c);','var w=rep.w;var h=','rep.h+rep.d',';var y;var dx;','if(C.delim.mid){var mid=this.GetChar(C.delim.mid,font);var n=Math.ceil((H-(top.h+top.d)-(mid.h+mid.d',')-(','bot.h+bot.d','))/(2*(',924,')));H=2*n*(',924,')+(top.h+top.d)+(','mid.h+mid.d',')+(',928,');if(_107){y=0;}else{y=H/2+a;}var Y=y',';var html=',644,'Place(',678,'top.tclass,top.c),0,','y-top.h)+',644,940,678,'bot.tclass,bot.c),-(','top.w+bot.w)/2,y-(H-bot.d))+',644,940,678,'mid.t
class,mid.c','),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);dx=(w-mid','.w)/2;if(Math.abs(dx)<0.0001){dx=0;}if(dx){html+=jsMath.HTML.Spacer(dx);}y-=top.h+top.d+rep.h;for(var i=0;i<n;i++){html+=jsMath.HTML.Place(ext,-w,y-i*h);}','y-=H/2-rep.h/2;',499,'n;i++){','html+=',644,940,'ext,-w,y-i*h);}}','else{var n=Math.ceil((H-(top.h+top.d)-(bot.h+bot.d','))/(',924,'));if(top.h+top.d<0.9*(',924,')){n=Math.max(1,n);}H=n*(',924,933,928,');if(_107){y=0;}else{y=H/2+a;}var Y=y',938,644,940,678,942,'y-top.h);dx=(w-top',954,958,644,940,678,947,'w+bot.w)/2,Y-(H-bot.d));}if(_107){h=top.h;}else{h=H/2+a;}','var box=new jsMath.Box("html",html,rep.w,h,H-h);box.bh=jsMath.TeX[font].h;box.bd=jsMath.TeX[font].d;return box;},','DelimExtendAbsolute',472,915,'_120){var Font=',501,'font];var ','C=Font[',919,926,'-0.05)-(',928,'-0.05))/(','2*(','rep.h+rep.d-0.05',')));H=2*n*(',999,933,934,'-0.05)+(',928,'-0.05);html=','jsMath.HTML.PlaceAbsolute(',678,942,'0);var h=',999,';var y=top.d-0.05+rep.h;var ext=',678,'font,rep.c);',499,'n;i++){',958,1007,'ext,0,y+i*h);}',958,1007,678,952,'),0,y+n*h-rep.h+mid.h);y+=n*h+',934,'-0.05;',499,'n;i++){',958,1007,'ext,0,y+i*h);}',958,1007,678,'bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);}',962,997,999,'));H=n*(',999,933,928,'-0.05);html=',1007,678,942,'0);var h=',999,';var y=top.d-0.05+rep.h;var ext=',678,922,499,'n;i++){',958,1007,'ext,0,y+i*h);}',958,1007,678,1035,'var w=top.w;if(_120){h=top.h;y=0;}else{h=H/2+a;y=h-top.h;}html=',644,'Absolute(html,w,','Font.h,"none",-y,top.h);',985,'Delimiter',472,'H,_135,_136,_137){var size=4;var TeX=',680,'TeX(_136,size);if(!_135){',542,'Space(TeX.nulldelimiterspace);}','var ','CFSH=this.DelimBestFit(H,_135[','2],_135[1],_136);if(CFSH==null||CFSH[3]<H){',1074,'4],_135[3],_136);}if(CFSH==null){',542,1072,'if(CFSH[2]==""){',542,'DelimExtend(H,','CFSH[0],CFSH[1],','TeX.axis_height',',_137);}box=',666,'.TeX(',1083,'CFSH[2],size',').Styled();if(_137){box.y=-',501,'CFSH[1]].dh',694,'y=-((box.h+box.d)/2-box.d-',1084,');}',533,'box.y)<0.0001){box.y=0;}if(box.y','){box=jsMath.Box.SetList','
([box],',1089,');}',696,'GetCharCode',472,'code){var font',898,'code[0]];var Font=',501,991,'c=Font[code[1]];',881,'font,code[1],4);}if(c.w',704,'w',683,678,887,';}if(c.font',704,'font=font',622,'c;},AddClass',472,'_13f,html',',font){if(_13f==null){_13f=font',622,678,1125,');},LayoutRelative',472,'size,_143,_144,_145){if(_144==null){_144=[];}if(_145==null){_145=[];}var _146=jsMath.sizes[size]/100',';var W=[];var H=[];var D=[];var ','_14a=-1000;var bh=_14a;var bd=_14a',';var i;var j;var row;for(i=0;i<','_143',514,'row=_143','[i];H[i]=jsMath.h*','_146',';D[i]=jsMath.d*','_146',';for(j=0;j<','row.length;j++){row[j]=row[j].Remeasured();if(row[j].h>H[i]){H[i]=row[j].h;}if(row[j].d>D[i]){D[i]=row[j].d;}if(j>=W.length){W[j]=row[j].w;}else{if(row[j].w>W[j]){W[j]=row[j].','w;}}if(row[j].bh>bh){bh=row[j].bh;}if(row[j].bd>bd){bd=row[j].bd;}}}if(bh==_14a){bh=0;}if(bd==_14a){bd=0;}','var HD=(jsMath.hd-0.01)*','_146;','var html="";var ','pW=0;var cW=0;var w;var h;var y;var box;var _158;var _159',';for(j=0;j<W.length;j++){','_158=[];y=-H[0];pW=0',';for(i=0;i<','_143',514,'_159=_143[i][j];if(_159&&_159','.format!="null"){if(','_144[j]=="l"){w=0;}else{if(_144[j]=="r"){w=W[j]-_159.w;}else{w=(W[j]-_159.w)/2;}}_159.x=w-pW;pW=_159.w+w;_159.y=y;_158[_158.length]=_159;}if(i==_143',779,'){y-=D[i];}else{y-=','Math.max(HD,D[i]+H[i+1])+','_146/10;}}if(_145[j]==null){_145[j]=_146;}if(_158.length>0',1099,'(_158,"T",size);',958,644,940,'box.html,cW,0);cW=W[j]-box.w+_145[j];}else{cW+=_145[j];}}w=-_145[W',779,'];y=(H',779,')*_146/10',1152,'W',514,'w+=W[i]+_145[i];}','for(i=0;i<H.length;i++){y+=Math.max(HD,H[i]+D[i]);}h=y/2+jsMath.TeX.axis_height;var d=y-h;',958,644,'Spacer(cW-_145[W',779,']+_146/6);html=',644,940,'html,_146/6,h);box=',674,'html",html,w+','_146/3,h,d);box.bh=bh;box.bd=bd;',696,'LayoutAbsolute',472,'size,_15c,_15d,_15e){if(_15d==null){_15d=[];}if(_15e==null){_15e=[];}var _15f=jsMath.sizes[size]/100;',1146,'_15f',1133,'w=0;var h;var x;var y',1135,'_15c',514,'row=_15c',1139,'_15f',1141,'_15f',1143,1144,'w;}}}}y=(H',779,')*_15f/6;'
,1176,1148,'_16d;w=_15f/6',1150,'y=H[0]-h',1152,'_15c',514,'_16d=_15c[i][j];if(_16d&&_16d',1156,'_15d[j]=="l"){x=0;}else{if(_15d[j]=="r"){x=W[j]-_16d.w;}else{x=(W[j]-_16d.w)/2;}}',958,1007,'_16d.html,w+x,y-Math.max(0,_16d.bh-jsMath.h*_15f));}if(i==_15c',779,'){y+=D[i];}else{y+=',1160,'_15f/6;}}if(_15e[j]==null){_15e[j]=_15f;}w+=W[j]+_15e[j];}w=-_15e[W',779,']+_15f/3',1152,'W',514,'w+=W[i]+_15e[i];}html=',644,'Spacer(_15f/6',')+html+',644,1234,');if(',554,'spanHeightVaries){y=h-jsMath.h;}else{y=0;}html=',644,1063,'h+d,d,y,H[0]);',687,674,1186,'_15f/3,h,d);',696,'InternalMath',472,'text,size){if(!text.match(/\\$|\\\\\\(/)){',542,'Text(text,"normal","T",size).Styled();}var i=0;var k=0;var c;var _174="";var _175=[];var _176;var html;var box;while(i<text',776,'c=text.charAt(i++);if(c','=="$"){if(_174=="$"){','_176=jsMath.Parse(text.slice(k,i-','1','),null,size);if(_176.error){_175[_175.length]=this.Text(_176.error,"error","T",size,1,0.2);}else{_176.Atomize();_175[_175.length]=_176.mlist.Typeset("T",size).Styled();}_174="";k=i',';}else{','_175[_175.length]=this.Text(text.slice(k',',i-1','),"normal","T",size,1,0.2);','_174="$";k=i;}}else{if(c=="\\\\"){',1255,'=="("&&_174==""){',1261,',i-2',1263,'_174=")";k=i;}else{if(c==")"&&_174==")"){',1257,'2',1259,';}}}}}',1261,1263,542,'SetList(_175,"T",size);},Set',472,'box',',_17a,size',',_17c){if(box&&box.type){','if(box.type=="typeset"){',518,'box;}if(box.type=="mlist"){box.mlist.Atomize(_17a,size);',518,'box.mlist.Typeset(_17a,size);}if(box.type=="text"){box=this.Text(box.text,',690,1281,',box.ascend,box.descend',');if(_17c!=0){box.Styled();}return box;}','box=this.TeX(box.c,box.font',1281,1291,518,666,'.Null;},SetList',472,'_17d,_17e,size){var _180=[];var box;',499,'_17d',514,'box=_17d[i];',1283,'box=','jsMath.mItem','.Typeset(box);}_180[_180.length]=box;}var _183=new jsMath.Typeset(_180);',518,'_183.Typeset(_17e,size);}});','jsMath.Package(jsMath.','Box,{Styled',491,'if(this.format=="text"){',669,678,'this.tclass',',this.html);',669,680,681,'this.style,this.size',1317,'dele
te this.','tclass;',1323,'style;this.format="html";}',518,'this;},Remeasured',491,'if(this.w>0&&!this.html.match(/position: ?absolute/)){this.w',683,'this.html).w',622,'this;}});',1306,667,'type,def){this.type=type;',488,'this,def);};',488,1306,',{Atom',472,'type,_187','){return new jsMath.mItem','(type,{atom:1,nuc',':_187});},TextAtom',472,'type,text,_18a,a,d){var atom=new ',1306,1346,':{type:"text",text:text,tclass:_18a}});if(a','!=null){atom.nuc.','ascend=a;}if(d',1353,'descend=d',622,'atom;},TeXAtom',472,'type,c,font',1345,1346,':{type:"TeX",c:c,font:font}});},Fraction',472,'name,num,den,_194,left,_196',1345,'("fraction",{from:name,num:num,den:den,thickness:_194,left:left,right:_196});},Space',472,'w',1345,'("space",{w:w});},Typeset',472,'box',1345,'("ord",{atom:1,nuc:box});},HTML',472,'html',1345,'("html",{html:html});}});jsMath.mList',667,'list,font,size,_19d){if(list){','this.mlist','=list;}else{',1382,'=[];}if(_19d==null){_19d="T";}if(size==null){size=4;}this.data={openI:null,overI:null,overF:null,font:font,','size:size,style:_19d','};this.init={',1386,'};};',1310,'mList,{Add',472,'box){return (',1382,'[','this.mlist.length',']=box);},Get',472,'i){',542,'mlist[i];},Length',491,518,1396,';},Last',491,'if(',1396,896,542,'mlist[',1396,'-1];},Range',472,'i,j){if(j==null){j=',1396,622,'new jsMath.mList','(',1382,'.slice(i,j+1));},Delete',472,1415,'i;}if(',1382,'.splice){',1382,'.splice(i,j-i+1);}else{var _1a4=[];for(var k=0;k<',1396,';k++){if(k<i||k>j){_1a4[_1a4.length]=',1382,'[k];}}',1382,'=_1a4;}},Open',472,'left){',687,'this.Add(new ',1306,'("boundary",{','data:this.data}));var _1a8=this.data;this.data={};for(var i in _1a8){this.data[i]=_1a8[i];}',1323,'data.overI;',1323,'data.overF;this.data.openI=',1396,'-1;if(left',692,'left=left;}',696,'Close',472,'_1aa){if(_1aa!=null){_1aa=new ',1306,1440,'right:_1aa});}var atom;var open=this.data.openI;','var over=this.data.overI;var from=this.data.overF;','this.data=',1382,'[open].data;if(over){','atom=jsMath.mItem.Fraction(from.name,{type:"mlist",mlist:this.Range(
open+1,over-1)},{type:"mlist",mlist:this.Range(over)},from.thickness,from.left,from.right);','if(_1aa){var _1af=',1418,'([',1382,'[open],atom,_1aa]);atom=',1306,'.Atom("inner','",{type:"mlist",mlist:','_1af});}}else{var _1b0=open+1;if(_1aa){this.Add(_1aa);_1b0--;}atom=',1306,'.Atom((_1aa)?"inner":"ord',1469,'this.Range(_1b0)});}this.Delete(open,this.Length());',542,'Add(atom);},Over',491,1457,'var ',1461,1382,'=[atom];},Atomize',472,'_1b4,size){var _1b6;var prev="";this.style=_1b4;this.size=size;',499,1396,';i++){_1b6=this.mlist['],
+ ['i];','_1b6','.delta=0',';if(',1,'.type=="','choice"){','this.mlist','=this.Atomize.choice(','this.style',',',1,',i,',7,');i--;}','else{if(','this.Atomize[_1b6.type',']){var f=',16,'];f(',9,',','this.size',',',1,',prev,this,i);}}prev=',1,';}if(',1,'&&',1,5,'bin"){',1,'.type="ord','";}if(',7,'.length>=2&&',1,5,'boundary"&&',7,'[0].type=="boundary"){this.','AddDelimiters','(_1b4,size);}},',43,':function(','_1ba,size){var _1bc=-10000;var h=_1bc;var d=_1bc;for(var i=0;i<',7,'.length;i++){','mitem=',7,'[i];if(mitem.atom||mitem',5,'box"){h','=Math.max(','h,','mitem.nuc.','h+',57,'y);d',55,'d,',57,'d-',57,'y);}}var TeX','=jsMath.TeX',';var a=','jsMath.Typeset.','TeX(_1ba,size).axis_height;var _1c2',55,'h-a,d+a);var H',55,'Math.floor(','TeX.integer','*_1c2/500)*TeX.delimiterfactor,',75,'*(2*_1c2-TeX.delimitershortfall))/',75,';var left=',7,'[0];var _1c5=',7,'[',7,'.length-1];left.nuc','=jsMath.Box.','Delimiter(H,','left.left',',_1ba);_1c5.nuc',87,88,'_1c5.right',',_1ba);left.type="open";left','.atom=1;delete ',89,';_1c5.type="close";_1c5',95,93,';},Typeset',46,'_1c6,size){var _1c8=new ','jsMath.Typeset','(',7,');return _1c8.Typeset(_1c6,size);}});jsMath.Add(jsMath.mList.prototype.Atomize,{style',46,'_1c9,size,_1cb,prev,_1cd){_1cd.style=_1cb.style;},size',46,'_1ce,size,_1d0,prev,_1d2){_1d2.size=_1d0.size;},phantom',46,'_1d3,size,_1d5){','var box','=_1d5.nuc',87,'Set(','_1d5.phantom',',_1d3',',size);','if(_1d5.h){box','.Remeasured();','box','.html=','jsMath.HTML.','Spacer(','box.w);}else{','box.html="",box.w=0;}if(!_1d5.v){','box.h=box.d=','0;}','box.bd=box.bh=0;delete ',117,';_1d5','.type="box";},','smash',46,'_1d7,size,_1d9){',113,'=_1d9.nuc',87,116,'_1d9.smash',',_1d7,','size).Remeasured();',128,130,141,';_1d9',133,'raise',46,'_1db,size,_1dd){','_1dd.nuc',87,116,152,',_1db',',size);var ','y=_1dd.raise;',152,123,124,'Place(',152,'.html,0,y);',152,'.h+=y;',152,'.d-=y;_1dd',34,'";_1dd.atom=1;},lap',46,'_1df,size,_1e1){',113,87,116,'_1e1.nuc',',_1df,',143,'var _1e3=[box];','if(_1e1.lap=="','llap"){','box.x=-box.w',';}e
lse{',180,'rlap"){_1e3[1]=','jsMath.mItem.Space','(-',126,180,'ulap"){box.y=box.d;',128,'0',183,180,'dlap"){box.y=-box.h;',128,'0;}}}}',176,87,'SetList','(_1e3,_1df',119,180,'ulap"||_1e1.lap=="dlap"){',176,'.h=',176,'.d=0;}_1e1.type="box";delete _1e1.atom;},bin',46,'_1e4,size,_1e6',',prev){if(prev','){var type=prev.type;if(type=="bin','"||type=="','op',213,'rel',213,'open',213,'punct','"||type==""||(type=="',40,'prev.left!="")){_1e6',34,'";}}else{_1e6',34,'";}','jsMath.mList.prototype.Atomize.SupSub(',210,');},rel',46,'_1e9,size,_1eb',211,5,32,'prev',34,'";}',228,232,');},close',46,'_1ed,size,_1ef',211,5,32,'prev',34,'";}',228,243,');},',220,46,'_1f1,size,_1f3',211,5,32,'prev',34,'";}',228,255,');},open',46,'_1f5,size,_1f7','){',228,266,');},inner',46,'_1f8,size,_1fa','){',228,272,');},','vcenter',46,'_1fb,size,_1fd','){',113,87,116,'_1fd.nuc,_1fb',157,'TeX=',69,'TeX(_1fb',119,'box.y=','TeX.axis_height','-(box.h-box.d)/2;_1fd.nuc=box;_1fd',34,'";',228,279,');},','overline',46,'_200,size,_202','){var TeX=',69,'TeX(_200',157,'box',87,116,'_202.nuc',',',69,'PrimeStyle','(_200),',143,'var t=','TeX.default_rule_thickness',';var rule',87,'Rule(box.w,t);rule.x=-rule.w;rule.y','=box.h+3*t;',308,87,'SetList([box,','rule],_200',119,308,'.h+=t;_202',34,'";',228,300,');},','underline',46,'_207,size,_209','){var TeX=',69,'TeX(_207',157,'box',87,116,'_209.nuc',',',69,311,'(_207),',143,314,315,';var rule',87,318,'=-box.d-3*t-t;',342,87,322,'rule],_207',119,342,'.d+=t;_209',34,'";',228,334,');},radical',46,'_20e,size,_210','){var TeX=',69,'TeX(_20e',157,'Cp=',69,311,'(_20e);',113,87,116,'_210.nuc,Cp,',143,314,315,';var p=t;if(_20e=="D"||_20e=="D\'"){p=TeX.x_height;}var r=t+p/4;var surd',87,'Delimiter(','box.h+box.d','+r+t,[0,2,112,3,112],_20e,1);t=surd.h;if(surd.d>',386,'+r){r=(r+surd.d-box.h-box.d)/2;}surd.y=box.h+r;var rule',87,'Rule(box.w,t);rule.y=surd.y-t/2;rule.h+=3*t/2;',182,';var Cr=',69,'UpStyle(',69,395,'_20e));var root',87,116,'_210.root,Cr,',143,'if(_210.root){root.y=0.55*(',386,'+3*t+r)-box.d;surd.x',55,'root.w-(11
/18)*surd.w,0);rule.x=(7/18)*surd.w;root.x=-(root.w+rule.x);}_210.nuc',87,200,'([surd,root,rule,box],_20e',119,'_210',34,'";',228,367,');},accent',46,'_21b,size',',_21d){var TeX=',69,'TeX(_21b',157,'Cp=',69,311,'(_21b);',113,87,116,'_21d.nuc',',Cp',157,'u=box.w;var s;var Font;if(',431,5,'TeX"){Font',67,'[',431,'.font];if(Font[',431,'.c].krn&&Font.skewchar){s=Font[',431,'.c].krn[Font.skewchar];}}if(s==null){s=0;}var c=_21d.accent[2];var font',67,'.fam[_21d.accent[1]];Font',67,'[font];while(Font[c].n&&Font[Font[c].n].w<=u){c=Font[c].n;}var _226=Math.min(box.h,TeX.','x_height);','if(',431,5,'TeX"){var ','_227=jsMath.mItem.Atom("ord",',431,');_227.sup=_21d.sup;_227.sub=_21d.sub;_227',2,';',228,419,',_227);_226+=(_227.nuc.h-box.h);box=',431,'=_227.nuc;delete _21d.sup;delete _21d.sub;}var acc',87,'TeX(c,font,',419,');acc.y=box.h-_226;acc.x=-box.w+s+(u-acc.w)/2;if(Font[c].ic){acc.x-=Font[c].ic*TeX.scale;}',431,87,322,'acc],',419,');if(',431,'.w!=box.w){var _229=',186,'(box.w-',431,'.w);',431,87,200,'([',431,',_229],',419,');}_21d',34,'";',228,419,',_21d);},op',46,'_22a,size,_22c','){var TeX=',69,'TeX(_22a',157,'box;_22c',2,';var isD=(_22a','.charAt(0)=="','D");if','(_22c.limits','==null&&isD){_22c.limits=1;}if(','_22c.nuc',5,454,'C',67,'[_22c.nuc.font][',507,'.c];if(isD&&C.n){',507,'.c=C.n;C',67,512,'C.n];}box',87,'Set(_22c.nuc,_22a,size',');if(C.ic){_22c','.delta=C.ic*TeX.scale;if',505,'||!_22c.sub||','jsMath.Browser.msieIntegralBug','){box',87,322,186,'(_22c.delta)],','_22a,size);}}','box.y=-((',386,')/2-box.d-',291,');if(Math.abs(box.y)<0.0001){box.y=0;}}if(!box){box',87,521,').Remeasured();}if',505,'){var W=box.w;var x=box.w;var _233=[box];var dh=0;var dd=0;if(_22c.sup){var sup',87,116,'_22c.sup,',69,395,'_22a),',143,'sup.x=((box.w-sup.w)/2+','_22c.delta/2)-x;','dh=TeX.big_op_spacing5;W',55,'W,sup.w);x+=sup.x+sup.w;sup.y=box.h+sup.d+box.y+Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);','_233[_233.length]=','sup;delete _22c.sup;}if(_22c.sub){var sub',87,116,'_22c.sub,',69,'DownStyle','(_22a),',143,'sub.x=(
(box.w-sub.w)/2-',551,'dd=TeX.big_op_spacing5;W',55,'W,sub.w);x+=sub.x+sub.w;sub.y=-box.d-sub.h+box.y-Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);',555,'sub;delete _22c.sub;}if(W>box.w){box.x=(W-box.w)/2;x+=box.x;}if(x<W){',555,186,'(W-x);}',507,87,200,'(_233,_22a',119,507,'.h+=dh;',507,'.d+=dd;}',15,526,'&&_22c.sub&&C&&C.ic){',507,87,322,'jsMath.Box.','Space(-C.ic*TeX.scale)],_22a,size);}',15,'box.y){',507,87,200,'([box],',532,228,495,');}},ord',46,'_238,size,_23a',',prev,_23c,i){if(_23a.nuc',5,'TeX"&&!_23a.sup&&!_23a.sub){var _23e=','_23c.mlist[','i+1];if(_23e&&_23e.atom&&_23e.type&&(_23e',5,'ord"||_23e',5,'op"||_23e',5,'bin"||_23e',5,'rel"||_23e',5,'open"||_23e',5,'close"||_23e',5,220,'")){if(_23e.nuc',5,'TeX"&&_23e.nuc.font==_23a.nuc.font){_23a.textsymbol=1;var krn',67,'[_23a.nuc.font][_23a.nuc.c].krn;krn*=',69,'TeX(_238,size).scale;if(krn&&krn[_23e.nuc.c]){for(var k=_23c.mlist.length-1;k>i;k--){',606,'k+1]=',606,'k];}',606,'i+1]=',186,'(krn[_23e.nuc.c]);}}}}',228,602,');},fraction',46,'_241,size,_243','){var TeX=',69,'TeX(_241',157,'t=0;if(_243.thickness!=null){t=_243.thickness;}',15,'_243.from.match(/over/)){t=',315,';}}var isD=(_241',503,'D");var Cn=(_241=="D")?"T":(_241=="D\'")?"T\'":',69,395,'_241);var Cd=(isD)?"T\'":',69,561,'(_241);var num',87,116,'_243.num,Cn,',143,'var den',87,116,'_243.den,Cd,',143,'var u;var v;var w;var H=(isD)?TeX.delim1:TeX.delim2;var _24f=[',589,88,'_243.left,_241)];var _250',87,88,'_243.right,_241);if(num.w<den.w){num.x=(den.w-num.w)/2;den.x=-(num.w+num.x);w=den.w;_24f[1]=num;_24f[2]=den',183,'den.x=(num.w-den.w)/2;num.x=-(den.w+den.x);w=num.w;_24f[1]=den;_24f[2]=num;}if(isD){u=TeX.num1;v=TeX.denom1',183,'u=(t!=0)?TeX.num2:TeX.num3;v=TeX.denom2;}if(t==0){var p=(isD)?7*',315,':3*',315,';var r=(u-num.d)-(','den.h-v);if(r<p){','u+=(p-r)/2;v+=(p-r)/2;}}else{var p=(isD)?3*t:t',68,291,682,'a+t/2);if(r<p){u+=p-r;}r=(a-t/2)-(',683,'v+=p-r;}var rule',87,'Rule(w,t);rule.x=-w;rule.y=a-t/2',';_24f[_24f.length]=','rule;}num.y=u;den.y=-v',693,'_250;_243.nuc',87,200,'(_24f,_241',
119,'_243',34,'";_243',95,'_243.num;delete _243.den;',228,641,');},SupSub',46,'_257,size,_259){var TeX=',69,'TeX(_257',157,'nuc=','_259.nuc',';',113,'=',715,87,116,715,',_257,size,0);if(box.format=="null"){box=',715,87,'Text("","normal",','_257,size);}','if(nuc',5,'TeX"){if(!_259.textsymbol){var C',67,'[nuc.font][nuc.c];if(C.ic){_259',523,'(!_259.sub){','box=',715,87,322,589,'Space(_259.delta)],_257',119,'_259',2,';}}}else{_259',2,';}}if(!_259.sup&&!_259.sub){return;}',715,'.Styled();var Cd=',69,561,'(_257);var Cu=',69,395,'_257);var q=',69,'TeX(Cu,size).','sup_drop;var r=',69,'TeX(Cd,size).','sub_drop;var u=0;var v=0;var p;if(nuc.type&&nuc.type!="text"&&nuc.type!="TeX"&&nuc.type!="null"){u=box.h-q;v=box.d+r;}if(_259.sub){var sub',87,116,'_259.sub,Cd',119,'sub',87,200,'([sub,',186,'(TeX.scriptspace)],_257,size',');}if(!_259.sup){sub.y=-Math.max(v,TeX.sub1,sub.h-(4/5)*',69,759,450,715,87,322,'sub],_257,size).Styled();','delete _259.','sub;return;}var sup',87,116,'_259.sup,Cu',119,'sup',87,200,'([sup,',186,770,');if(_257=="D"){p=TeX.sup1;}',15,'_257','.charAt(','_257','.length-1)=="\'"){','p=TeX.sup3',183,'p=TeX.sup2;}}u',55,'u,p,sup.d+',69,756,'x_height/4);if',734,'sup.y=u;',715,87,322,'sup],_257',119,779,'sup;return;}v',55,'v,',69,759,'sub2);',314,315,';if((u-sup.d)-(sub.h-v)<4*t){v=4*t+sub.h-(u-sup.d);p=(4/5)*TeX.x_height-(u-sup.d);if(p>0){u+=p;v-=p;}}sup',121,'sub',121,806,'sub.y=-v;sup.x=_259.delta;if(sup.w+sup.x>sub.w){sup.x-=sub.w;',715,87,322,'sub,sup],',727,'else{sub.x-=(sup.w+sup.x);',715,87,322,'sup,sub],',727,779,'sup;',779,'sub;}});',103,'=function(_268){this.type="typeset";',7,'=_268;};jsMath.Add(',103,',{upStyle:{D:"S",T:"S","','D\'":"S\'","T\'":"S\'",S:"SS','",SS:"SS","','S\'":"SS\'","SS\'":"SS\'"},','downStyle:{D:"S\'",T:"S\'","',848,'\'",SS:"SS\'","',850,'UpStyle',46,'_269){return this.upStyle[_269];},',561,46,'_26a){return this.downStyle[_26a];},',311,46,'_26b){if(_26b',794,'_26b',796,'return _26b;}return _26b+"\'";},StyleValue',46,'_26c,v){if(_26c=="S"||_26c=="S\'"){return 0.7*v;}if(_26c=="SS"|
|_26c=="SS\'"){return 0.5*v;}return v;},StyleSize',46,'_26e,size){if(_26e=="S"||_26e=="S','\'"){size=Math.max(0,size-','2);}',15,'_26e=="SS','"||',875,872,'4);}}return ','size;},TeX',46,'_270,size){if(_270=="S"||_270=="S',872,'2);}',15,'_270=="SS','"||',886,872,879,'jsMath.TeXparams[size];},AddStyle',46,'_272,size,html){if(_272=="S"||_272=="S',872,'2);}',15,'_272=="SS','"||',897,872,'4);}}if(size!=4){html="<span class=\\"size"+size+"\\">"+html+"</span>";}return html;},AddClass',46,'_275,html){if(_275!=""&&_275!="normal"){html=',124,'Class(_275,html);}return html',';}});jsMath.','Package(',103,',{DTsep:{ord',':{op:1,bin:2,rel:3,inner:1},','op',':{ord:1,op:1',',rel:3,inner:1},bin:{ord:2,op:2,open:2,inner:2},rel:{ord:3,op:3,open:3,inner:3},open:{},close',910,220,912,',rel:1,open:1,close',':1,punct:1,inner:1','},inner',912,',bin:2,rel:3,open',918,'}},SSsep:{ord:{op:1},op',912,'},bin:{},rel:{},open:{},close:{op:1},',220,':{},inner:{op:1}},sepW:["","thinmuskip","medmuskip","thickmuskip"],','GetSeparation',46,'l,r,_279){if(l&&l.atom&&r.atom){var _27a=this.DTsep;if(_279',503,'S"){_27a=this.SSsep;}var row=_27a[l.type];if(row&&row[r.type]!=null){return jsMath.TeX[this.sepW[row[r.type]]];}}return 0;},Typeset',46,'_27c,size){',9,'=_27c;',22,'=size;var _27e=-10000;this.w=0;this.h=_27e;this.d=_27e;this.bh=this.h;this.bd=this.d;','this.tbuf','="";this.','tx=0;','this.tclass','="";','this.cbuf',940,'hbuf',940,'hx=0;var _27f=null;var prev;this.x=0;this.dx=0;for(var i=0;i<',7,49,'prev=_27f;_27f=',7,'[i];switch(_27f.type){case "size":','this.FlushClassed();',22,'=_27f.size;','_27f=prev;break;case "','style":',954,'if(',9,794,9,796,9,'=_27f.style','+"\'";}else{',9,966,';}',957,'space":if(typeof (_27f.w)=="object"){if(',9,794,'1)=="','S"){_27f.w=0.','5*','_27f.w[0]/18',';}',15,9,503,976,'7*',978,183,'_27f.w=',978,';}}}this.dx+=_27f.w-0;',957,'html":',954,'if(this.hbuf==""){this.hx=this.','x;}','this.hbuf+=','_27f.html;_27f=prev;break;default:if(!_27f.atom&&_27f.type!="box"){break;}','_27f.nuc.','x+=this.dx+this.',928,'(prev,_27f,',9
,');if(',997,'y||',997,'x){',997,'Styled();}this.dx=0;this.x=this.x+this.w;this.w+=',997,'w+',997,'x;if(',997,'format=="text"){if(',942,'!=',997,'tclass','&&',942,'!=""){this.FlushText();}if(',939,'==""&&',944,'==""){this.tx=this.x;}',939,'+=',997,'html;',942,'=',997,1018,183,954,'if(',997,'x||',997,'y){this.Place(_27f.nuc);}',993,'x;}',995,997,'html;}this.h',55,'this.h,',997,'h+',997,'y);this.bh',55,'this.bh,',997,'bh);this.d',55,'this.d,',997,'d-',997,'y);this.bd',55,'this.bd,',997,'bd);break;}}',954,'if(this.dx){',995,124,125,'this.dx);this.w+=this.dx;}if(this.hbuf==""){return ',589,'Null;}if(this.h==_27e){this.h=0;}if(this.d==_27e){this.d=0;}',113,'=new jsMath.','Box("html",this.hbuf,this.w,this.h,this.d);box.bh=this.bh;box.bd=this.bd;return box;},FlushText:function(){if(',939,'==""){return;}',944,'+=',69,'AddClass(',942,',',939,');',939,'="";',942,'="";},FlushClassed:function(){this.FlushText();if(',944,1078,993,'tx;}',995,69,'AddStyle(',9,',',22,',',944,');',944,'="";},Place',46,'item){var ','html="<span style=\\"position: relative',';";if(item.x){html+=" margin-left:"+',124,'Em(item.x)+";";}if(item.y){html+=" top:"+',124,'Em(-item.y',')+";";}item',123,'html+"\\">"+','item.html+"</span','>";','item.h+=item.y;item.d-=item.y;item.x=0;item.y=0',';},PlaceSeparateSkips',46,'item){if(item.y){item.',1108,'; "+"top:"+',124,1113,')+";"+"\\">"+',1117,'>";}if(item.x){item',123,124,125,'item.x)+item.html;}',1119,906,'Parse','=function(s,font,size,','_289){var _28a=new ','jsMath.Parser','(s,font,size,_289);_28a.Parse();return _28a;};',1139,1137,'_28e){this.string=s;this.i=0;',7,1075,'mList(null,font,size,_28e);};jsMath.Package(',1139,',{cmd:"\\\\",open:"{",close:"}",letter:/[a-z]/i,number:/[0-9]/,scriptargs:/^((math|text)..|mathcal)$/,mathchar:{"!":[5,0,33],"(":[4,0,40],")":[5,0,41],"*":[2,2,3],"+":[2,0,43],",":[6,1,59],"-":[2,2,0],".":[0,1,58],"/":[0,1,61],":":[3,0,58],";":[6,0,59],"<":[3,1,60],"=":[3,0,61],">":[3,1,62],"?":[5,0,63],"[":[4,0,91],"]":[5,0,93],"|":[0,2,106]},special:{"~":"Tilde","^":"HandleSuperscript",
"_":"HandleSubscript"," ":"Space","\\x01','":"Space","\\','t',1149,'r',1149,'n":"Space","\'":"Prime","%":"HandleComment","&":"HandleEntry"},mathchardef:{braceld:[0,3,122],bracerd:[0,3,123],bracelu:[0,3,124],braceru:[0,3,125],alpha:[0,1,11],beta:[0,1,12],gamma:[0,1,13],delta:[0,1,14],epsilon:[0,1,15],zeta:[0,1,16],eta:[0,1,17],theta:[0,1,18],iota:[0,1,19],kappa:[0,1,20],lambda:[0,1,21],mu:[0,1,22],nu:[0,1,23],xi:[0,1,24],pi:[0,1,25],rho:[0,1,26],sigma:[0,1,27],tau:[0,1,28],upsilon:[0,1,29],phi:[0,1,30],chi:[0,1,31],psi:[0,1,32],omega:[0,1,33],varepsilon:[0,1,34],vartheta:[0,1,35],varpi:[0,1,36],varrho:[0,1,37],varsigma:[0,1,38],varphi:[0,1,39],Gamma:[7,0,0],Delta:[7,0,1],Theta:[7,0,2],Lambda:[7,0,3],Xi:[7,0,4],Pi:[7,0,5],Sigma:[7,0,6],Upsilon:[7,0,7],Phi:[7,0,8],Psi:[7,0,9],Omega:[7,0,10],aleph:[0,2,64],imath:[0,1,123],jmath:[0,1,124],ell:[0,1,96],wp:[0,1,125],Re:[0,2,60],Im:[0,2,61],partial:[0,1,64],infty:[0,2,49],prime:[0,2,48],emptyset:[0,2,59],nabla:[0,2,114],surd:[1,2,112],top:[0,2,62],bot:[0,2,63],triangle:[0,2,52],forall:[0,2,56],exists:[0,2,57],neg:[0,2,58],lnot:[0,2,58],flat:[0,1,91],natural:[0,1,92],sharp:[0,1,93],clubsuit:[0,2,124],diamondsuit:[0,2,125],heartsuit:[0,2,126],spadesuit:[0,2,127],coprod:[1,3,96],bigvee:[1,3,87],bigwedge:[1,3,86],biguplus:[1,3,85],bigcap:[1,3,84],bigcup:[1,3,83],intop:[1,3,82],prod:[1,3,81],sum:[1,3,80],bigotimes:[1,3,78],bigoplus:[1,3,76],bigodot:[1,3,74],ointop:[1,3,72],bigsqcup:[1,3,70],smallint:[1,2,115],triangleleft:[2,1,47],','triangleright',':[2,1,46],bigtriangleup:[2,2,52],bigtriangledown:[2,2,53],wedge:[2,2,94],land:[2,2,94],vee:[2,2,95],lor:[2,2,95],cap:[2,2,92],cup:[2,2,91],ddagger:[2,2,122],dagger:[2,2,121],sqcap:[2,2,117],sqcup:[2,2,116],uplus:[2,2,93],amalg:[2,2,113],diamond:[2,2,5],bullet:[2,2,15],wr:[2,2,111],div:[2,2,4],odot:[2,2,12],oslash:[2,2,11],otimes:[2,2,10],ominus:[2,2,9],oplus:[2,2,8],mp:[2,2,7],pm:[2,2,6],circ:[2,2,14],bigcirc:[2,2,13],setminus:[2,2,110],cdot:[2,2,1],ast:[2,2,3],times:[2,2,2],star:[2,1,63],propto:[3,2,47],sqsubseteq:[3,2,118],sqsu
pseteq:[3,2,119],parallel:[3,2,107],mid:[3,2,106],dashv:[3,2,97],vdash:[3,2,96],leq:[3,2,20],le:[3,2,20],geq:[3,2,21],ge:[3,2,21],succ:[3,2,31],prec:[3,2,30],approx:[3,2,25],succeq:[3,2,23],preceq:[3,2,22],supset:[3,2,27],subset:[3,2,26],supseteq:[3,2,19],subseteq:[3,2,18],"in":[3,2,50],ni:[3,2,51],owns:[3,2,51],gg:[3,2,29],ll:[3,2,28],not:[3,2,54],sim:[3,2,24],simeq:[3,2,39],perp:[3,2,63],equiv:[3,2,17],asymp:[3,2,16],smile:[3,1,94],frown:[3,1,95],Leftrightarrow:[3,2,44],Leftarrow:[3,2,40],Rightarrow:[3,2,41],leftrightarrow:[3,2,36],leftarrow:[3,2,32],gets:[3,2,32],rightarrow:[3,2,33],to:[3,2,33],mapstochar:[3,2,55],leftharpoonup:[3,1,40],','leftharpoondown',':[3,1,41],rightharpoonup:[3,1,42],rightharpoondown:[3,1,43],nearrow:[3,2,37],searrow:[3,2,38],nwarrow:[3,2,45],swarrow:[3,2,46],hbarchar:[0,0,22],lhook:[3,1,44],rhook:[3,1,45],ldotp:[6,1,58],cdotp:[6,2,1],colon:[6,0,58],"#":[7,0,35],"$":[7,0,36],"%":[7,0,37],"&":[7,0,38]},delimiter:{"(":[0,0,40,3,0],")":[0,0,41,3,1],"[":[0,0,91,3,2],"]":[0,0,93,3,3],"<":[0,2,104,3,10],">":[0,2,105,3,11],"/":[0,0,47,3,14],"|":[0,2,106,3,12],".":[0,0,0,0,0],"\\\\":[','0,2,110,3,15],"\\\\','lmoustache":[4,3,122,3,64],"\\\\rmoustache":[5,3,123,3,65],"\\\\lgroup":[4,6,40,3,58],"\\\\rgroup":[5,6,41,3,59],"\\\\arrowvert','":[0,2,106,3,','60],"\\\\Arrowvert":[0,2,107,3,61],"\\\\bracevert',1161,'62],"\\\\Vert":[0,2,107,3,13],"\\\\|":[0,2,107,3,13],"\\\\vert',1161,'12],"\\\\uparrow":[3,2,34,3,120],"\\\\downarrow":[3,2,35,3,121],"\\\\updownarrow":[3,2,108,3,63],"\\\\Uparrow":[3,2,42,3,126],"\\\\Downarrow":[3,2,43,3,127],"\\\\Updownarrow":[3,2,109,3,119],"\\\\backslash":[',1159,'rangle":[5,2,105,3,11],"\\\\langle":[4,2,104,3,10],"\\\\rbrace":[5,2,103,3,9],"\\\\lbrace":[4,2,102,3,8],"\\\\}":[5,2,103,3,9],"\\\\{":[4,2,102,3,8],"\\\\rceil":[5,2,101,3,7],"\\\\lceil":[4,2,100,3,6],"\\\\rfloor":[5,2,99,3,5],"\\\\lfloor":[4,2,98,3,4],"\\\\lbrack":[0,0,91,3,2],"\\\\rbrack":[0,0,93,3,3]},macros:{displaystyle',':["HandleStyle","','D"],textstyle',1169,'T"],scriptstyle',1169,'S"],scriptscriptstyl
e',1169,'SS"],rm',':["HandleFont",','0],mit',1177,'1],oldstyle',1177,'1],cal',1177,'2],it',1177,'4],bf',1177,'6],left:"HandleLeft",right:"HandleRight",arcsin',':["NamedOp",0],','arccos',1189,'arctan',1189,'arg',1189,'cos',1189,'cosh',1189,'cot',1189,'coth',1189,'csc',1189,'deg',1189,'det',':"NamedOp",','dim',1189,'exp',1189,'gcd',1209,'hom',1189,'inf',1209,'ker',1189,'lg',1189,'lim',1209,'liminf',':["NamedOp",null,"lim<span style=\\"margin-left: "+1/6+"em\\"></span>','inf"],limsup',1227,'sup"],ln',1189,'log',1189,'max',1209,'min',1209,'Pr',1209,'sec',1189,'sin',1189,'sinh',1189,'sup',1209,'tan',1189,'tanh',1189,277,':["HandleAtom","',277,'"],',298,1253,298,'"],',332,1253,332,'"],over',':"HandleOver",','overwithdelims',1264,'atop',1264,'atopwithdelims',1264,'above',1264,'abovewithdelims',1264,'brace',':["HandleOver','","\\\\{","\\\\}"],brack',1276,'","[","]"],choose',1276,'","(",")"],overbrace',':["Extension","leaders"],','underbrace',1282,'overrightarrow',1282,'overleftarrow',1282,'overset',':["Extension","underset-overset"],','underset',1290,'llap',':"HandleLap",','rlap',1294,'ulap',1294,'dlap',1294,'raise:"RaiseLower",lower:"RaiseLower",moveleft',':"MoveLeftRight",','moveright',1302,'frac:"Frac",root:"Root",sqrt:"Sqrt",hbar',':["Macro","\\\\','hbarchar\\\\kern-.5em h"],ne',1306,'not="],neq',1306,'not="],notin',1306,'mathrel{\\\\','rlap{\\\\kern2mu/}}\\\\in"],cong',1306,1313,'lower2mu{\\\\','mathrel','{{\\\\rlap{=}\\\\raise6mu\\\\sim}}}}"],bmod',1306,'mathbin{\\\\rm mod}"],pmod',1306,'kern 18mu ({\\\\rm mod}\\\\,\\\\,#1)",1],"int":["Macro","\\\\intop\\\\nolimits"],oint',1306,'ointop\\\\nolimits"],doteq',1306,'buildrel\\\\textstyle.\\\\over="],ldots',1306,'mathinner{\\\\','ldotp\\\\ldotp\\\\ldotp}"],cdots',1306,1329,'cdotp\\\\cdotp\\\\cdotp}"],vdots',1306,1329,'rlap{\\\\raise8pt{.\\\\rule 0pt 6pt 0pt}}\\\\rlap{\\\\raise4pt{.}}.}"],ddots',1306,1329,'kern1mu\\\\raise7pt{\\\\rule 0pt 7pt 0pt .}\\\\kern2mu\\\\raise4pt{.}\\\\kern2mu\\\\raise1pt{.}\\\\kern1mu}"],joinrel',1306,1313,'kern-4mu}"],relbar',1306,1313,'smash
-}"],','Relbar',1306,1318,'="],bowtie',1306,1318,'\\\\',1155,'\\\\joinrel\\\\',1318,'\\\\triangleleft"],models',1306,1318,'|\\\\joinrel="],mapsto',1306,'mapstochar\\\\','rightarrow"],rightleftharpoons',1306,277,'{\\\\',1313,'rlap{\\\\raise3mu{\\\\rightharpoonup}}}\\\\',1157,'}"],hookrightarrow',1306,'lhook\\\\','joinrel\\\\rightarrow"],','hookleftarrow',1306,'leftarrow\\\\joinrel\\\\','rhook"],Longrightarrow',1306,1346,1354,'Rightarrow"],','longrightarrow',1306,'relbar\\\\',1372,'longleftarrow',1306,1375,'relbar"],Longleftarrow',1306,'Leftarrow\\\\joinrel\\\\',1346,'"],longmapsto',1306,1361,'char{cmsy10}{0}\\\\',1372,'longleftrightarrow',1306,'leftarrow\\\\',1372,'Longleftrightarrow',1306,1390,1380,'iff:["Macro","\\\\;\\\\',1401,'\\\\;"],mathcal',':["Macro","{\\\\','cal #1}",1],mathrm',1408,'rm #1}",1],mathbf',1408,'bf #1}",1],','mathbb',1408,1413,'mathit',1408,'it #1}",1],textrm',1306,'mathord{\\\\hbox{#1}}",1],','textit',1306,'mathord{\\\\class{',1422,'}{\\\\hbox{#1}}}",1],','textbf',1306,1424,1427,1426,'TeX:["Macro","T\\\\kern-.1667em\\\\lower.5ex{E}\\\\kern-.125em X"],limits:["Limits",1],nolimits:["Limits",0],",":["Spacer",1/6],":":["Spacer",1/6],">":["Spacer",2/9],";":["Spacer",5/18],"!":["Spacer",-1/6],enspace',':["Spacer",','1/2],quad',1433,'1],qquad',1433,'2],thinspace',1433,'1/6],negthinspace:["Spacer",-1/6],hskip:"Hskip",kern:"Hskip",rule:["Rule","colored"],space:["Rule","blank"],big',':["MakeBig","','ord",0.85],Big',1441,'ord",1.','15],bigg',1441,1444,'45],Bigg',1441,1444,'75],bigl',1441,'open",0.85],Bigl',1441,'open",1.','15],biggl',1441,1455,'45],Biggl',1441,1455,'75],bigr',1441,'close",0.85],Bigr',1441,'close",1.','15],biggr',1441,1466,'45],Biggr',1441,1466,'75],bigm',1441,'rel",0.85],Bigm',1441,'rel",1.','15],biggm',1441,1477,'45],Biggm',1441,1477,'75],mathord',1253,'ord"],mathop',1253,'op"],mathopen',1253,'open"],mathclose',1253,'close"],mathbin',1253,'bin"],',1318,1253,'rel"],mathpunct',1253,220,'"],mathinner',1253,'inner"],','mathchoice',':["Extension","',1503,'"],buildrel:"BuildRel",hbox:"HBox
",text:"HBox",mbox:"HBox",fbox',1504,'fbox"],strut:"Strut",mathstrut',1306,'vphantom{(}"],phantom',':["Phantom",','1,1],vphantom',1511,'1,0],hphantom',1511,'0,1],smash:"Smash",acute',':["MathAccent",[7,0,','19]],grave',1517,'18]],ddot',1517,'127]],tilde',1517,'126]],bar',1517,'22]],breve',1517,'21]],check',1517,'20]],hat',1517,'94]],vec',':["MathAccent",[0,','1,126]],dot',1517,'95]],widetilde',1533,'3,101]],widehat',1533,'3,98]],"_":["','Replace","ord','","_","normal",-0.4,0.1]," ":["',1541,'"," ","normal"],angle:["',1541,'","∠","normal"],matrix:"Matrix",array:"Matrix",pmatrix:["Matrix","(",")","c"],cases:["Matrix","\\\\{",".",["l","l"]],cr:"HandleRow","\\\\":"HandleRow",begin:"Begin",end:"End",tiny',':["HandleSize",','0],Tiny',1547,'1],scriptsize',1547,'2],small',1547,'3],normalsize',1547,'4],large',1547,'5],Large:["HandleSize"'],
+ [',6],LARGE',':["HandleSize",','7],huge',1,'8],Huge',1,'9],dots:["','Macro','","\\\\ldots"],','newcommand',':["Extension","',9,'"],def',10,9,'"],color',10,'HTML"],','href',10,'HTML"],"class":["','Extension','","',17,'style',10,17,'cssId',10,17,'unicode',10,17,'require:"','Require','","char":"Char"},','environments',':{array:"Array",','matrix',':["Array",null,null,"','c"],pmatrix:["Array","(",")","c"],bmatrix:["Array","[","]","c"],Bmatrix:["Array","\\\\{","\\\\}","c"],vmatrix:["Array","\\\\vert","\\\\vert","c"],Vmatrix:["Array","\\\\Vert","\\\\Vert","c"],cases:["Array","\\\\{",".","ll"],eqnarray',39,'rcl",[5/18,5/18],"D"]},AddSpecial',':function','(obj){','for(var id in obj){','jsMath.Parser.prototype','.special[',46,'[id]]=obj[id];}},Error',43,'(s){this.i=','this.string','.length;','if(s','.error){','this.error','=s.error;}','else{if(!','this',55,56,'=s;}}},nextIsSpace',43,'(){','return ','this.string.charAt(this.i',')==" ";},trimSpaces',43,'(text){','if(typeof (','text)!="string"){',65,'text;}',65,'text','.replace(/^\\s+|\\s','+/g,"");},','Process',43,'(arg','){var ','data=','this.mlist.','data;','arg=','jsMath.','Parse(arg,','data.font',',','data.size',',data.style',');if(arg',55,'this.Error(','arg);','return null',';}if(arg.mlist.Length()==','0){',96,97,'1',81,'atom=','arg.mlist.','Last();if','(atom','.atom&&','atom.type=="ord"&&atom.nuc&&!atom.sub&&!atom.sup&&(','atom.nuc.type=="','text"||',109,'TeX")){',65,'atom.nuc;}}return {type:"mlist",mlist:arg.mlist};},GetCommand',43,'(){var ','_296=/^([a-z]+|.) ?/i;var cmd=_296.exec(','this.string.slice(','this.i));','if(cmd){this.i+=cmd[1].length;',65,'cmd[1];}','this.Error("','Missing',' control sequnece name at end of string or',' argument','");',96,';},GetArgument',':function(name',',','_299){','while','(this.nextIsSpace()){this.i','++;}','if(this.','i>=',52,'.length){','if(!',132,123,124,126,' for "+','name);}',96,';}if(',66,')==','this.close){if','(!',132,123,'Extra close brace','");}',96,148,66,')==','this.cmd','){','this.i++;',65,161,'+','this.GetCommand','
();}if(',66,')!=this.open','){return ',66,'++);}var j=++','this.i;var ','_29b=1;var c="";',133,'(this.i<this.string.length){','c=',66,'++);','if(c==this.cmd){','this.i','++;}else{if(c','==this.open){_29b',183,'==',151,'(_29b==0){',123,155,'");',96,';}if(--_29b==0',171,118,'j,this.i-1);}}}}}',123,'Missing close brace','");',96,';},ProcessArg',130,81,85,'this.GetArgument(','name);','if(this.error){return',' null;}','return this.Process(arg);},','ProcessScriptArg',130,81,85,205,206,207,208,'if(arg.charAt(0)==',161,'){','csname','=arg.substr(1);if(',221,'=="frac"){arg+="{"+',205,221,')+"}";',207,208,'arg+="{"+',205,221,')+"}";',207,' null;}}else{if(csname','=="sqrt"){arg+="["+','this.GetBrackets(',221,')+"]";',207,208,'arg+="{"+',205,221,')+"}";',207,235,'.match(this.scriptargs)){arg+="{"+',205,221,')+"}";',207,' null;}}}}}',209,'GetDelimiter',130,'){',133,134,'++;}var c=',66,');if',177,163,181,'c="\\\\"+',167,'(',206,207,' null;}}','if(','this.delimiter[','c]!=null',171,273,'c];}}',123,124,' or unrecognized delimiter',145,206,96,';},GetDimen',130,',nomu',81,'rest;var _2a6=0;if',134,'++;}if(',66,')=="{"){rest=',205,146,'else{rest=',118,'this.i);_2a6=1',';}var ','_2a7=rest.match(/^\\s*([-+]?(\\.\\d+|\\d+(\\.\\d*)?))(pt|em|ex|mu|px)/);if(!_2a7){',123,124,' dimension or its units',145,206,96,148,'_2a6){this.i+=_2a7[0].length;if',134,'++;}}var d=_2a7[1]-0;if(_2a7[4]=="px"){d/=',86,'em',';}else{if(_2a7[4]=="','pt"){d/=10',312,'ex"){d*=','jsMath.TeX.','x_height',312,'mu"){if(nomu){d=d/18;}else{d=[d,"mu"];}}}}}',65,'d;},GetNext',43,'(){',133,134,'++;}',65,66,');},GetBrackets',130,81,'c=this.GetNext();if(c','!="["){return "";}var _2ab=++',174,'_2ac=0;',133,177,'var c=',66,'++);if(c=="{"){','_2ac',183,'=="}"){if(','_2ac==0){',123,155,' while looking for',' \']\'");',96,';}_2ac--;}else{',181,'this.i',183,'=="]"){if(_2ac==0',171,118,'_2ab,this.i-1);}}}}}}',123,'Couldn\'t find',' closing \']\' for',126,' to "+','this.cmd+name);',96,';},GetUpto',130,',_2af){',133,134,'++;}var _2b0=',174,'_2b1=0;',133,177,'var c=',66,340,'_2b1',1
83,343,'_2b1==0){',123,155,347,' "+',161,'+_2af);',96,';}_2b1--;}else{',181,'if(',118,'this.i,this.i+','5)=="begin"){_2b1++;this.i+=4;}else{if(',118,393,'3)=="end"){if(_2b1>0){_2b1--;this.i+=2;}}}if(',381,'if(',118,393,'_2af.length)==_2af){c=',66,'+_2af.length);if(c.match(/[^a-z]/i)||!_2af.match(/[a-z]/i)){var ',85,118,'_2b0,this.i-1);this.i+=_2af',53,65,'arg;}}}this.i++;}}}}',123,359,' "+',161,'+_2af+" for "+',206,96,';},','ProcessUpto',130,',_2b5',81,85,'this.GetUpto','(name,_2b5);',207,208,209,'GetEnd',43,'(env',81,'body="";var name="";',133,'(name!=env){body+=',424,'("begin{"+env+"}","end");',207,208,'name=',205,161,'+"end");',207,271,65,'body;},Space',43,'(){},','Prime',43,'(c',81,'base=',83,105,'(base==null||(!base',107,'base.type!="','box"&&',459,'frac")){',454,'this.mlist.Add(jsMath.mItem.','Atom("ord",{type:null}));}','if(base.sup){',123,'Prime causes double exponent',': use braces to clarify");return',298,'sup="";',133,'(c=="\'"){sup+=',161,'+"prime";',332,'=="\'"){this.i++;}}','base.sup=this.',78,'(sup);','base.sup.isPrime','=1;},RaiseLower',130,81,'h','=this.GetDimen(this.cmd+name',',1);',207,298,'box','=this.ProcessArg(',363,207,148,'name=="lower"){h=-h;}',83,'Add(new jsMath.mItem("','raise",{nuc:box,raise:h}));},MoveLeftRight',130,81,'x',486,487,207,298,'box',491,363,207,148,'name=="moveleft"){x=-x;}',464,'Space(x));',464,'Atom("ord",box));',464,'Space(-x));},',34,130,81,'file=',205,363,207,';}file=',86,21,'.URL(file);if(','jsMath.Setup.','loaded[file',']){','return;}','this.',21,'(null,[','file]);},',21,130,',data){','jsMath.Translate','.restart=1;if(name','!=null){','delete ',46,'[data[1]||"macros"][name];}','jsMath.Script.','Start();',86,21,'.',34,'(data[0],',540,'.asynchronous',');throw "restart";},Frac',130,81,'num',491,363,207,298,'den',491,363,207,';}',464,'Fraction("over",num,den));},Sqrt',130,81,'n=',237,363,207,298,'arg',491,363,207,';}box=jsMath.mItem.Atom("radical",arg);',136,'n!=""){box.root=this.',78,'(n);',207,';}}',83,'Add(box);},','Root',130,81,'n=this.',419,'(',161,'+name,"of");',
207,298,'arg',491,363,207,581,'box.root=n;',83,589,'BuildRel',130,81,'top=this.',419,'(',161,'+name,"over");',207,298,'bot',491,363,207,298,'op=',86,'mItem.Atom("','op",bot);op.limits=1;op.sup=top;',83,'Add(op);},MakeBig',130,',data){var ','type=data[0];var h=data[1]*',86,'p_height;var _2d8=this.',255,'(',363,207,';}',464,'Atom(type,',86,'Box.Delimiter(h,_2d8,"T")));},Char',130,81,'font=',205,363,207,298,'n=',205,363,207,';}if(!','jsMath.TeX[font',']){',655,']=[];this.',21,535,'jsMath.Font.URL(font',')]);}else{',464,'Typeset(',86,'Box.TeX(n-0,font,"T",',83,90,')));}},Matrix',130,',_2dd',81,'data=',83,84,'var ',85,205,363,207,298,'_2e0','=new jsMath.Parser(arg','+"\\\\\\\\",null,',90,');_2e0.',38,'=name;_2e0.row=[];_2e0.table=[];_2e0.Parse();if(_2e0',55,94,'_2e0);',532,'_2e0','.HandleRow(name,1);var box=jsMath.Box.Layout(data.size,','_2e0.table,_2dd[2]);if(_2dd[0]&&_2dd[1]){var left','=jsMath.Box.Delimiter(box.h+box.d,this.delimiter[','_2dd[0]],"T");var _2e3',696,'_2dd','[1]],"T");box=jsMath.Box.SetList([left,box,','_2e3],','data.style,data.size',');}',464,'Atom((_2dd','[0]?"inner":"ord"),box));},','HandleEntry',130,'){','if(!this.',38,'){',94,'name+" can only appear in a matrix or array");return;}','if(',83,'data.openI',542,'var open=',83,'Get(',83,717,');if(open','.left){',123,124,' "+',161,'+"right','");}else{',123,198,'");}}if(',83,'data.overI',542,83,'Over();}var data=',83,84,83,'Atomize(',702,');var box=',83,664,702,');this.row[','this.row.length',']=box;this.mlist=new ',86,'mList(null,null,',90,91,');},HandleRow',130,',last){',710,38,'){',94,161,'+',714,'this.',707,'(',206,'if(!last||',750,'>1||this.row[0].format!="null"){this.table[this.table.length]=this.row;}this.row=[];},Array',130,',_2eb',81,'_2ec=_2eb[2];var _2ed=_2eb[3];if(!_2ec){_2ec=',205,161,'+"begin{"+name+"}");',207,';}}_2ec=_2ec.replace(/[^clr]/g,"");_2ec=_2ec.split("");var data=',83,84,'var _2ef=_2eb[4]||"T";var ',85,'this.GetEnd(',206,207,298,'_2f1',683,'+',161,'+"\\\\",null,',90,',_2ef);_2f1.',38,'=name;_2f1.row=[];_2f1.table=[];_2f1.Parse(
);if(_2f1',55,94,'_2f1);',532,'_2f1',694,'_2f1.table,_2ec,_2ed);if(_2eb[0]&&_2eb[1]){var left',696,'_2eb[0]],"T");var _2f4',696,'_2eb',700,'_2f4],',702,');}',464,'Atom((_2eb',706,'Begin',130,81,'env=',205,363,207,148,'env.match(/[^a-z*]/i)){',123,'Invalid',' environment',' name',' \\""+env+"\\"");return;}',710,36,'[env]){',123,'Unknown',828,830,'var cmd=this.',36,'[env];',70,'cmd',')=="string"){','cmd=[cmd];}this[cmd[0]](env,cmd.slice(1));},End',130,81,'env=',205,363,207,';}',94,161,'+name+"{"+env+"} without matching "+',161,'+"begin");},Spacer',130,',w){',464,'Space(w-0));},Hskip',130,81,'w=this.GetDimen(',363,207,';}',464,'Space(w));},HBox',130,81,'text=',205,363,207,';}','var box=jsMath.','Box.InternalMath(text,',83,90,');',464,664,'box));},Rule',130,',_302',81,'w',486,487,207,298,'h',486,487,207,298,'d',486,487,207,';}h+=d;var html;if(h!=0){h=Math.max(1.05/',86,'em,h);}if(h==0||w==0||_302=="blank"){html=','jsMath.HTML.','Blank(w,h);}else{html=',904,'Rule(w,h);}if(d){html','="<span style=\\"','vertical-align:"+',904,'Em(-d)+"\\">"+html','+"</span>";}',464,664,'new ',86,'Box("html",html,w,h-d,d)));},Strut',43,116,'size=',83,90,';',876,'Box.Text("","normal","T",size).Styled();box.bh=box.bd=0;box.h=0.8;box.d=0.3;box.w=0;',464,664,'box));},Phantom',130,630,'arg',491,363,207,';}',83,497,'phantom",{phantom:arg,v:data[0],h:data[1]}));},Smash',130,630,'arg',491,363,207,';}',83,497,'smash",{smash:arg}));},MathAccent',130,',_310',81,'c',491,363,207,298,103,86,625,'accent",c);atom.accent=_310[0];',83,'Add(atom);},NamedOp',130,630,'a=(name.match(/[^acegm-su-z]/))?1:0;var d=(name.match(/[gjpqy]/))?0.2:0;if(data[1]){name=data[1];}',876,'mItem.TextAtom("op",name,"cmr10",a,d);if(data[0]!=null){box.limits=data[0];}',83,589,'Limits',130,630,103,83,105,'(!atom||atom.type!="op"){',94,161,'+name+" is allowed only on operators");',532,'atom.limits=data[0];},',7,130,630,'text=data[0];if(data[1]){var args=[];','for(var i=0;i<','data[1];i++){args[args.length]=',205,363,207,';}}','text=this.','SubstituteArgs','(args,text);}',52,'=','t
his.AddArgs(','text,',118,119,'this.i=0;},',993,43,'(args,_321',81,'text="";var _323="";var c;var i','=0;while(i<','_321',139,'c=','_321.charAt(i','++);',181,'text+=c+',1011,'++);}else{if(c=="#"){c=',1011,'++);if(c=="#"){text+=c;}',58,'c.match(/[1-9]/)||c>args',139,123,'Illegal macro parameter reference");',532,'_323=',997,997,'_323,text','),args[c-1]);text="";}}else{text+=c;}}}',65,997,1028,');},AddArgs',43,'(s1,s2){if(s2.match(/^[a-z]/i)&&s1.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)){s1+=" ";}',65,'s1+s2;},Replace',130,539,464,'TextAtom',552,'data[1],data[2],data[3]));},Tilde',130,'){',464,'TextAtom("ord','"," ","normal"));},HandleLap',130,81,'box=this.ProcessArg();',207,';}box=',83,497,'lap",{nuc:box,lap:name}));},HandleAtom',130,630,'arg',491,363,207,';}',464,'Atom(data,arg));},HandleMathCode',130,',code','){this.HandleTeXchar(','code[0],code[1],code[2]);},HandleTeXchar',43,'(type,font,code){if(type==7&&',83,88,542,645,83,88,';}',645,316,'fam[font];if(!',655,']){',655,']=[];this.',21,535,661,')]);}else{',464,'TeXAtom(',316,'atom[type],code,font));}},','HandleVariable',43,'(c',1068,'7,1',',c.charCodeAt(0));},','HandleNumber',43,'(c',1068,'7,0',1099,'HandleOther',43,'(c){',464,1047,'",c,"normal"));},HandleComment',43,116,'c;',133,177,'c=',66,'++);if(c=="\\r"||c=="\\n"){return;}}},HandleStyle',130,',_33a){',83,'data.style=_33a[0];',83,497,'style",{style:_33a[0]}));},HandleSize',130,',size){',83,90,'=size[0];',83,497,'size",{size:size[0]}));},HandleFont',130,',font){',83,88,'=font[0];},HandleCS',43,116,'cmd=',167,'();',207,';}',136,'macros[cmd]){var _340=this.macros[cmd];',70,'_340',843,'_340=[_340];}this[_340[0]](cmd,_340.slice(1));',532,136,'mathchardef[cmd',']){this.HandleMathCode(','cmd,this.',1155,']);',532,'if(',273,161,'+cmd',1156,'cmd,',273,161,'+cmd].slice(0,3));',532,123,'Unknown control sequence \'"+',161,'+cmd+"\'");},HandleOpen',43,'(){',83,'Open();},HandleClose',43,'(){if(',83,717,'==null){',123,155,'");',532,'var open=',83,'Get(',83,717,');if(!open||','open.left',1183,83,'Close();}else{',12
3,155,' or missing "+',161,730,'");return;}},HandleLeft',130,81,'left=this.',255,'(',363,207,';}',83,'Open(left);},HandleRight',130,81,'_345=this.',255,'(',363,207,298,'open=',83,'Get(',83,717,724,'&&',1194,542,83,'Close(_345);}else{',123,'Extra open brace or missing "+',161,'+"left");}},HandleOver',130,539,'if(',83,736,542,123,'Ambiguous use of "+',363,532,83,736,'=',83,'Length();',83,'data.overF={name:name};if(data.length>0){',83,'data.overF.','left=',273,'data[0]];',83,1255,'right=',273,'data[1]];}else{if(name.match(/withdelims$/)){',83,1255,1206,255,'(',363,207,';}',83,1255,1261,'this.',255,'(',363,207,';}}else{',83,1255,'left=null;',83,1255,1261,'null;}}if(name.match(/^above/)){',83,1255,'thickness=','this.GetDimen(',161,'.name',487,207,1280,83,1255,1290,'null;}},HandleSuperscript',43,116,454,83,105,'(base==null||(!base',107,459,'box"&&',459,'frac")){',454,464,465,466,'if(',481,'){',454,464,465,'else{',123,'Double exponent',469,';}}',478,210,'("superscript");',207,';}},HandleSubscript',43,116,454,83,105,'(base==null||(!base',107,459,'box"&&',459,'frac")){',454,464,465,'if(base.sub){',123,'Double subscripts',469,';}base.sub=this.',210,'("subscript");',207,';}},Parse',43,116,'c;',133,177,'c=',66,'++);',136,'mathchar[c',1156,'c,this.',1364,']);}else{',136,'special[c]){this[this',47,'c]](c);}else{',136,'letter','.test(c)){this.',1094,'(c);}else{',136,'number',1375,1100,1377,'this.',1106,'(c);}}}}}if(',83,717,542,'var open=',83,'Get(',83,717,724,'.left){',123,124,' "+',161,730,731,123,198,'");}}if(',83,736,542,83,'Over();}},Atomize',43,116,'data=',83,'init;if(!this',55,83,743,702,');}},Typeset',43,116,'data=',83,'init;var box=this.typeset=',83,664,702,');',207,' "<span class=\\"error\\">"+',56,912,'if(box.format=="null"){return "";}box.Styled().Remeasured();var _350=0;var _351','=0;if(box.bh>','box.h&&box.bh>',86,'h','+0.001){_350=1;}if(box.','bd>box.d&&box.bd>',86,'d',1438,'h>',86,'h||box.d>',86,'d){_351=1',298,'html=box.html;if(_350){if(','jsMath.Browser.','allowAbsolute',81,'y',1434,86,'h+0.001){y=',86,'h-box
.bh;}html=',904,'Absolute(html,box.w,',86,'h,0,y,',86,'h);}',58,1450,'valignBug',81,'dy=',904,'Em(Math.max(0,box.bd-',86,'hd)/3);html',908,'line-height: 0px;"+" position:relative; top:"+dy+"; ',909,'dy+"\\">"+html+"</span>";}}_351=1',148,'_351){html+=',904,'Blank(0,box.h+0.05,box.d+0.05);}return "<nobr><span class=\\"scale\\">"+html+"</span></nobr>";}});',46,'.AddSpecial({cmd:"HandleCS",open:"HandleOpen",close:"HandleClose"});','jsMath.Add(jsMath,{',7,130,81,'_356=',46,'.macros;','_356','[name]=["',7,'"];for(var i=1;i<arguments',53,'i++){_356[name][_356[name].length]=arguments[i];}}});',86,21,'={safeRequire:1,',7,130,',file',81,'_35a=',46,1490,'if(file',1183,'file=name;}_35a',1492,21,'",file];},LaTeX',43,'(env,file',81,'_35d=',46,'.',36,';_35d[env]=["',21,'",file,"',36,'"];},Font',130,1136,'if(font',1183,645,'name+"10";}var _360=',46,1490,'_360',1492,21,'",',661,')];},MathChar',43,'(font,defs',81,'fam=',316,'famName[font','];if(fam',1183,1542,316,'fam',53,316,'fam[fam]=font;',316,1544,']=fam',298,'_364=',46,'.mathchardef;for(var c in defs){_364[c]=[defs[c][0],fam,defs[c][1]];}},',34,43,'(file,show){',136,'safeRequire&&(file.match(/\\.\\.\\/|[^-a-z0-9.\\/:_+=%~]/i)||(file.match(/:/)&&file.substr(0,',86,'root.length)!=',86,'root))){',529,530,']=1;',532,529,'Script(this.URL(file),show);},URL',43,'(file){file=file',76,'+$/g,"");if(!file.match(/^([a-z]+:|\\/|fonts|extensions\\/)/i)){file="extensions/"+file;}if(!file.match(/\\.js$/)){file+=".js";}',65,'file;}};',1484,78,43,44,529,'Body();',546,'Push(',540,',"','Asynchronous','",obj);},ProcessBeforeShowing',43,44,529,1586,'var _36b=(','jsMath.Controls.cookie.','asynch?"',1591,'":"','Synchronous','");',546,1588,540,',_36b,obj);}});',540,'={element:[],cancel:0,TextMode',43,'(s',81,'_36d','=jsMath.Parse(s,null,null,"','T");',1613,'.Atomize();var html=',1613,'.Typeset();return html;},','DisplayMode',43,'(s',81,'_370',1614,'D");',1624,1617,1624,1619,'GetElementText',43,'(_372',81,992,'recursiveElementText','(_372);_372.alt=text;if(text.search("&")>=0){','text=text.replace(/
&','lt;/g,"<");',1638,'gt;/g,">");',1638,'quot;/g,"\\"");',1638,'amp;/g,"&");}',65,'text;},',1636,43,'(_374){if(','_374.nodeValue','!=null',171,1651,148,'_374.childNodes','.length==0){return " ";}var text="";',986,1656,53,'i++){text+=this.',1636,'(',1656,'[i]);}',65,1647,'ResetHidden',43,'(_377){_377.innerHTML',908,'visibility: hidden; position:absolute; top:0px;left:0px;\\"></span>"+',1450,'operaHiddenFix;_377.className="";',86,'hidden=_377.firstChild;if(!',86,'BBoxFor("x").w){','jsMath.hidden=jsMath.hiddenTop',';}',86,'ReInit();},','ConvertText',43,'(_378','){var text=this.GetElementText(','_378',');this.ResetHidden(','_378);',992,'TextMode(text);_378','.className="typeset";','_378','.innerHTML=text;},','ConvertDisplay',43,'(_37a',1686,'_37a',1688,'_37a);',992,1620,'(text);_37a',1692,'_37a',1694,'ProcessElement',43,'(_37c){this.restart=0;try','{if(_37c.tagName.toLowerCase()=="','div"){this.',1695,'(_37c);_37c.onclick=jsMath.Click.CheckClick;_37c.ondblclick=jsMath.Click.CheckDblClick',';}else',1711,'span"){this.',1683,1714,';}}}catch(err){if(_37c.alt',81,'tex=_37c.alt;','tex=tex.replace','(/&/g,"&");',1723,'(/</g,"<");',1723,'(/>/g,">");_37c.innerHTML=tex;}',1679,';}},','ProcessElements',43,'(k){',546,'blocking=','1;if(k>=','this.element.length','||this.cancel){this.','ProcessComplete','();',136,'cancel){','jsMath.Message.','Set("',78,' Math: Canceled");',1743,'Clear();}',546,1735,'0;',546,78,'();}else{','this.ProcessElement(this.element[','k]);',136,'restart){',546,1588,'this,"',1731,'",k);',546,1735,'0;setTimeout("',546,78,'()",',1450,'delay);}else{k++;var p=Math.floor(100*k/',1737,');','jsMath.Message.Set("Processing Math',': "+p+"%");setTimeout("',540,'.',1731,'("+k+")",',1450,'delay);}}},',1591,43,'(obj','){if(!jsMath.initialized){jsMath.Init();}this.element=this.GetMathElements(obj);','this.cancel=0;this',554,'=1;',546,1735,'1;',1774,': 0%",1);setTimeout("',540,'.',1731,'(0)",',1450,'delay);},',1602,43,'(obj,i){if(i==null',1785,'i=0;}this',554,1007,1737,'){',1755,'i]);',136,'restart){',86,'Synch
ronize','("',540,'.',1602,'(null,"+i+")");',546,78,'();',532,'i++;}this.',1739,'(1);},GetMathElements',43,'(obj',81,'_384=[];if(!obj){obj=','jsMath.document',148,'typeof (obj',843,'obj=',1831,'.getElementById(obj);}if(!','obj.getElementsByTagName','){',96,298,'math=',1838,'("div','");for(var k=0;k<math.length;k++){if(math[k].className=="math"){if(jsMath.Browser.renameOK&&obj.getElementsByName){math[k].setAttribute("name","_jsMath_");}else{_384[_384.length]=math[k];}}}','math=',1838,'("span',1845,'if(',1450,'renameOK','&&obj','.getElementsByName','){_384=obj',1854,'("_jsMath_',731,'if(',86,'hidden','.sourceIndex','){_384.sort(function(a,b',171,'a',1862,'-b',1862,';});}}',65,'_384;},',1739,43,'(_38a){if(',1450,1852,81,'_38b=',1831,1854,1857,'");for(var i=_38b.length-1;i>=0;i--){_38b[i].removeAttribute("name");}}',1679,';this.element=[];if(!_38a){',1774,': Done");',1743,'Clear();}',1743,'UnBlank();if(',1450,'safariImgBug&&(',1598,'font=="symbol"||',1598,'font=="image")){',136,'timeout){clearTimeout(this.timeout);}this.timeout=setTimeout("','jsMath.window.resizeBy','(-1,0); "+"',1899,'(1,0); "+"',540,'.timeout = null",2000);}},Cancel',43,'(){',540,'.cancel=1;if(',546,'cancelTimer){',546,'cancelLoad();}}};',1484,'ConvertTeX',43,'(_38d){',546,'Push(jsMath.tex2math,"',1914,'",_38d);},','ConvertTeX2',43,'(_38e){',546,1918,1921,'",_38e);},','ConvertLaTeX',43,'(_38f){',546,1918,1928,'",_38f);},','ConvertCustom',43,'(_390){',546,1918,1935,'",_390);},','CustomSearch',43,'(om,cm,od,cd','){',546,1588,'null,function(){',86,'tex2math.',1942,1944,');});},tex2math:{',1914,43,449,1921,43,449,1928,43,449,1935,43,449,1942,43,'(){}}});',86,1814,'=',546,1814,';if(','window.parent','!=window){',1975,'.jsMath=jsMath;',1831,'=',1975,'.document;',86,'window=',1975,';}',86,'Loaded();',86,'Controls.GetCookie();',529,'Source();',546,'Init();',529,'Fonts();if(',1831,'.body){jsMath.Setup.Body();}}}']
+]);
+//end = new Date().getTime();
+//alert(end-start);
Index: loncom/html/adm/jsMath/plugins/autoload.js
diff -u loncom/html/adm/jsMath/plugins/autoload.js:1.1 loncom/html/adm/jsMath/plugins/autoload.js:1.2
--- loncom/html/adm/jsMath/plugins/autoload.js:1.1 Wed Dec 7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/autoload.js Mon Mar 27 14:32:29 2006
@@ -12,17 +12,30 @@
* jsMath.Autoload.findMathElements
* jsMath.Autoload.findTeXstrings
* jsMath.Autoload.findLaTeXstrings
+ * jsMath.Autoload.findCustomStrings
+ * jsMath.Autoload.findCustomSettings
*
* which control whether to look for SPAN and DIV elements of class
* "math", TeX strings that will be converted by jsMath.ConvertTeX(), or
* LaTeX strings that will be converted by jsMath.ConvertLaTeX(). By
- * default, the first is true and the last two are false.
+ * default, the first is true and the second and third are false. The
+ * findCustomStrings can be used to specify your own delimiters for
+ * in-line and display mathematics, e.g
+ *
+ * jsMath.Autoload.findCustomStrings = [
+ * '[math],'[/math]', // start and end in-line math
+ * '[display]','[/display]' // start and end display math
+ * ];
+ *
+ * Finally, findCustomSettings can be set to an object reference whose
+ * name:value pairs control the individual search settings for tex2math.
+ * (See the plugins/tex2math.js file for more details).
*
* If any math strings are found, jsMath.js will be loaded automatically,
- * but not loaded otherwise. If any of the last two are true and TeX math
+ * but not loaded otherwise. If any of the last four are set and TeX math
* strings are found, then plugins/tex2ath.js will be loaded
* automatically. jsMath.Autoload.needsJsMath will be set to true or
- * false depending on whether jsMath needs to be loaded.
+ * false depending on whether jsMath needed to be loaded.
*
* The value of jsMath.Autoload.element controls the element to be
* searched by the autoload plug-in. If unset, the complete document will
@@ -41,21 +54,31 @@
* will be run. Relative URL's are loaded based from the URL containing
* jsMath.js.
*
- * ---------------------------------------------------------------------
+ * The autoload plugin can be loaded in the document HEAD or in the BODY.
+ * If it is loaded in the HEAD, you will need to call jsMath.Autoload.Check()
+ * at the end of the BODY (say in the window.onload handler) in order to
+ * get it to check the page for math that needs to be tagged, otherwise load
+ * the file at the bottom of the BODY and it will run the check automatically.
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 can call jsMath.Autoload.Run() after the check has been performed
+ * in order to call the appropriate tex2math routines for the given Autoload
+ * settings. You can call jsMath.Autoload.Run() even when jsMath isn't loaded.
+ *
+ * ---------------------------------------------------------------------
*
- * You should have received a copy of the GNU General Public License
- * along with jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
/*************************************************************************/
@@ -63,146 +86,278 @@
/*
* Make sure jsMath.Autoload is available
*/
-if (jsMath == null) {var jsMath = {}}
+if (jsMath == null) {jsMath = {}}
if (jsMath.Autoload == null) {jsMath.Autoload = {}}
+jsMath.Add = function (dst,src) {for (var id in src) {dst[id] = src[id]}},
+jsMath.document = document; // tex2math needs this
-/*
- * Look to see if there are SPAN or DIV elements of class "math".
- */
-jsMath.Autoload.areMathElements = function (obj) {
- if (!obj) {obj = document}
- if (typeof(obj) == 'string') {obj = document.getElementById(obj)}
- if (!obj.getElementsByTagName) {return false}
- var math = obj.getElementsByTagName('DIV');
- for (var k = 0; k < math.length; k++)
- {if (math[k].className == 'math') {return true}}
- math = obj.getElementsByTagName('SPAN');
- for (var k = 0; k < math.length; k++)
- {if (math[k].className == 'math') {return true}}
- return false;
-};
+jsMath.Add(jsMath.Autoload,{
+
+ Script: {
+
+ iframe: null, // the hidden iframe
+
+ /*
+ * Load an external JavaScript file asynchronously
+ */
+ Load: function (url) {
+ this.iframe = document.createElement('iframe');
+ this.iframe.style.visibility = 'hidden';
+ this.iframe.style.position = 'absolute';
+ this.iframe.style.width = '0px';
+ this.iframe.style.height = '0px';
+ if (document.body.firstChild) {
+ document.body.insertBefore(this.iframe,document.body.firstChild);
+ } else {
+ document.body.appendChild(this.iframe);
+ }
+ this.url = url; setTimeout('jsMath.Autoload.Script.setURL()',100);
+ },
+ endLoad: function () {setTimeout('jsMath.Autoload.Script.AfterLoad()',1)},
+
+ /*
+ * Use location.replace() to avoid browsers placing the file in
+ * the history (and messing up the BACK button action). Not
+ * completely effective in Firefox 1.0.x. Safari won't handle
+ * replace() if the document is local (not sure if that's really
+ * the issue, but that's the only time I see it).
+ */
+ setURL: function () {
+ var url = jsMath.Autoload.root+"jsMath-autoload.html";
+ var doc = this.iframe.contentDocument;
+ if (!doc && this.iframe.contentWindow) {doc = this.iframe.contentWindow.document}
+ if (navigator.vendor == "Apple Computer, Inc." &&
+ document.location.protocol == 'file:') {doc = null}
+ if (doc) {doc.location.replace(url)} else {this.iframe.src = url}
+ },
+
+ /*
+ * Queue items that need to be postponed until jsMath has run
+ */
+ queue: [],
+ Push: function (name,data) {this.queue[this.queue.length] = [name,data]},
+ RunStack: function () {
+ if (this.tex2math) {jsMath.Autoload.Check2(); return}
+ for (var i = 0; i < this.queue.length; i++) {
+ var name = this.queue[i][0];
+ var data = this.queue[i][1];
+ if (data.length == 1) {jsMath[name](data[0])}
+ else {jsMath[name](data[0],data[1],data[2],data[3])}
+ }
+ },
+
+ AfterLoad: function () {jsMath.Autoload.Script.RunStack()},
+
+ /*
+ * Look up the jsMath root directory, if it is not already supplied
+ */
+ Root: function () {
+ if (jsMath.Autoload.root) return;
+ var script = document.getElementsByTagName('script');
+ if (script) {
+ for (var i = 0; i < script.length; i++) {
+ var src = script[i].src;
+ if (src && src.match('(^|/)plugins/autoload.js$')) {
+ jsMath.Autoload.root = src.replace(/plugins\/autoload.js$/,'');
+ break;
+ }
+ }
+ }
+ }
-/*
- * The patterns used for searching for TeX and LaTeX math strings
- * (taken from plugins/tex2math.js).
- */
-jsMath.Autoload.pattern = {
- tex: /((^|[^\\])(\\[^\[\(])*)(\\\((([^\\]|\\[^\)])*)\\\)|\\\[(([^\\]|\\[^\]])*)\\\]|(\$\$?)(([^$\\]|\\.)*)\9)/,
- latex: /((^|[^\\])(\\[^\[\(])*)(\\\((([^\\]|\\[^\)])*)\\\)|\\\[(([^\\]|\\[^\]])*)\\\])/
-};
+ },
+
+ /**************************************************************/
+
+ /*
+ * Load tex2math first (so we can call its search functions
+ * to look to see if anything needs to be turned into math)
+ * if it is needed, otherwise go on to the second check.
+ */
+ Check: function () {
+ if (this.checked) return; this.checked = 1;
+ if (this.findTeXstrings || this.findLaTeXstrings ||
+ this.findCustomStrings || this.findCustomSettings) {
+ this.Script.tex2math = 1;
+ this.Script.Load('plugins/tex2math.js');
+ } else {
+ if (!jsMath.tex2math) {jsMath.tex2math = {}}
+ this.Check2();
+ }
+ },
-/*
- * Recursively search for text elements, and check them for
- * TeX or LaTeX strings that would be recognized by tex2math.
- */
-jsMath.Autoload.FindPattern = function (method,element,recurse) {
- if (!element) {
- if (recurse) {return false};
- element = document.body;
- }
- if (typeof(element) == 'string') {element = document.getElementById(element)}
-
- var pattern = jsMath.Autoload.pattern[method];
- while (element) {
- if (element.nodeName == '#text') {
- if (pattern.exec(element.nodeValue.replace(/\n/g,' '))) {return true}
- } else if (!element.tagName ||
- !element.tagName.match(/^(SCRIPT|NOSCRIPT|STYLE|TEXTAREA|PRE)$/i)) {
- if (this.FindPattern(method,element.firstChild,1)) {return true};
+ /*
+ * Once tex2math is loaded, use it to check for math that
+ * needs to be tagged for jsMath, and load jsMath if it is needed
+ */
+ Check2: function () {
+ this.Script.tex2math = 0;
+ this.needsJsMath = 0;
+ if (this.findMathElements) {
+ this.needsJsMath = this.areMathElements(this.checkElement);
}
- element = element.nextSibling;
- }
- return false;
-};
+ jsMath.tex2math.callback = this.tex2mathCallback;
+ if (this.findTeXstrings && !this.needsJsMath) {
+ jsMath.tex2math.ConvertTeX(this.checkElement);
+ }
+ if (this.findLaTeXstrings && !this.needsJsMath) {
+ jsMath.tex2math.ConvertLaTeX(this.checkElement);
+ }
+ if (this.findCustomSettings && !this.needsJsMath) {
+ jsMath.tex2math.Convert(this.checkElement,this.findCustomSettings);
+ }
+ if (this.findCustomStrings && !this.needsJsMath) {
+ var s = this.findCustomStrings;
+ jsMath.tex2math.CustomSearch(s[0],s[1],s[2],s[3]);
+ jsMath.tex2math.ConvertCustom(this.checkElement);
+ }
+ jsMath.tex2math.callback = null;
-jsMath.Autoload.areTeXstrings = function (obj) {return this.FindPattern('tex',obj,0)}
-jsMath.Autoload.areLaTeXstrings = function (obj) {return this.FindPattern('latex',obj,0)}
+ if (this.needsJsMath) {
+ this.LoadJsMath();
+ } else {
+ jsMath.Autoload.Script = null;
+ jsMath.Process = function () {};
+ jsMath.ProcessBeforeShowing = function () {};
+ jsMath.Synchronize = function () {};
+ jsMath.ConvertTeX = function () {};
+ jsMath.ConvertTeX2 = function () {};
+ jsMath.ConvertLaTeX = function () {};
+ jsMath.ConvertCustom = function () {};
+ jsMath.CustomSearch = function () {};
+ jsMath.Macro = function () {};
+ jsMath.Autoload.Run = function () {};
+ }
+ },
-/*
- * When math tags are found, load the jsMath.js file. If we looked
- * for TeX and LaTeX strings, load the tex2math as well.
- */
-jsMath.Autoload.LoadJsMath = function () {
- if (!jsMath.Autoload.root) {
- var script = document.getElementsByTagName('SCRIPT');
- if (script) {
- for (var i = 0; i < script.length; i++) {
- var src = script[i].src;
- if (src && src.match('(^|/)plugins/autoload.js$')) {
- jsMath.Autoload.root = src.replace(/plugins\/autoload.js$/,'');
- break;
- }
- }
+ /*
+ * A callback used in the tex2math searches to signal that
+ * some math has been found.
+ */
+ tex2mathCallback: function () {
+ jsMath.Autoload.needsJsMath = 1;
+ return false;
+ },
+
+ /*
+ * jsMath.Autoload.Run() can be called to perform the
+ * tex2math calls given by the Autoload parameters.
+ */
+ Run: function (data) {this.Script.Push('Autorun',[data])},
+
+ Autorun: function () {
+ if (this.findTeXstrings) {jsMath.ConvertTeX(this.checkElement)}
+ if (this.findLaTeXstrings) {jsMath.ConvertLaTeX(this.checkElement)}
+ if (this.findCustomSettings) {
+ jsMath.Synchronize(function () {
+ jsMath.tex2math.Convert(jsMath.Autoload.checkElement,
+ jsMath.Autoload.findCustomSettings);
+ });
}
- }
- if (jsMath.Autoload.root) {
- document.write('<SCRIPT SRC="'+jsMath.Autoload.root+'jsMath.js"></'+'SCRIPT>');
- if (jsMath.Autoload.findTeXstrings || jsMath.Autoload.findLaTeXstrings)
- {document.write('<SCRIPT SRC="'+jsMath.Autoload.root+'plugins/tex2math.js"></'+'SCRIPT>')}
- } else {
- alert("Can't determine URL for jsMath.js");
- }
-}
+ if (this.findCustomStrings) {
+ var s = this.findCustomStrings;
+ jsMath.CustomSearch(s[0],s[1],s[2],s[3]);
+ jsMath.ConvertCustom(this.checkElement);
+ }
+ },
-/*
- * Load any specified fonts
- */
-jsMath.Autoload.LoadExtraFonts = function () {
- var fonts = jsMath.Autoload.loadFonts;
- if (typeof(fonts) != 'object') {fonts = [fonts]}
- for (var i in fonts) {
- document.writeln('<SCRIPT>jsMath.Font.Load("'+fonts[i]+'")</'+'SCRIPT>');
+ /*
+ * Look to see if there are SPAN or DIV elements of class "math".
+ */
+ areMathElements: function (obj) {
+ if (!obj) {obj = document}
+ if (typeof(obj) == 'string') {obj = document.getElementById(obj)}
+ if (!obj.getElementsByTagName) {return false}
+ var math = obj.getElementsByTagName('div');
+ for (var k = 0; k < math.length; k++)
+ {if (math[k].className == 'math') {return true}}
+ math = obj.getElementsByTagName('span');
+ for (var k = 0; k < math.length; k++)
+ {if (math[k].className == 'math') {return true}}
+ return false;
+ },
+
+ /*
+ * When math tags are found, load the jsMath.js file,
+ * and afterward, load any auxiliary files or fonts,
+ * and then do any pending commands.
+ */
+ LoadJsMath: function () {
+ if (this.root) {
+ this.setMessage('Loading jsMath...');
+ this.Script.AfterLoad = this.afterLoad;
+ this.Script.Load('jsMath.js');
+ } else {
+ alert("Can't determine URL for jsMath.js");
+ }
+ },
+ afterLoad: function () {
+ if (jsMath.tex2math.window) {jsMath.tex2math.window.jsMath = jsMath}
+ //
+ // Handle MSIE bug where jsMath.window both is and is not the actual window
+ //
+ if (jsMath.browser == 'MSIE') {window.onscroll = jsMath.window.onscroll};
+ var fonts = jsMath.Autoload.loadFonts;
+ if (fonts) {
+ if (typeof(fonts) != 'object') {fonts = [fonts]}
+ for (var i in fonts) {jsMath.Font.Load(fonts[i])}
+ }
+ var files = jsMath.Autoload.loadFiles;
+ if (files) {
+ if (typeof(files) != 'object') {files = [files]}
+ for (var i in files) {jsMath.Setup.Script(files[i])}
+ }
+ jsMath.Synchronize(function () {jsMath.Autoload.Script.RunStack()});
+ jsMath.Autoload.setMessage();
+ },
+
+ /*
+ * Display a message in a small box at the bottom of the screen
+ */
+ setMessage: function (message) {
+ if (message) {
+ this.div = document.createElement('div');
+ if (!document.body.hasChildNodes) {document.body.appendChild(this.div)}
+ else {document.body.insertBefore(this.div,document.body.firstChild)}
+ var style = {
+ position:'absolute', bottom:'1px', left:'2px',
+ backgroundColor:'#E6E6E6', border:'solid 1px #959595',
+ margin:'0px', padding:'1px 8px', zIndex:102,
+ color:'black', fontSize:'75%', width:'auto'
+ };
+ for (var id in style) {this.div.style[id] = style[id]}
+ this.div.appendChild(jsMath.document.createTextNode(message));
+ } else {
+ this.div.firstChild.nodeValue = "";
+ this.div.style.visibility = 'hidden';
+ }
}
-}
+
+});
/*
- * Load any specified files
+ * Queue these so we can do them after jsMath has been loaded
*/
-jsMath.Autoload.LoadExtraFiles = function () {
- var files = jsMath.Autoload.loadFiles;
- if (typeof(files) != 'object') {files = [files]}
- for (var i in files) {
- document.writeln('<SCRIPT>jsMath.Setup.Script("'+files[i]+'")<'+'/SCRIPT>');
- }
-}
+jsMath.Add(jsMath,{
+ Process: function (data) {jsMath.Autoload.Script.Push('Process',[data])},
+ ProcessBeforeShowing: function (data) {jsMath.Autoload.Script.Push('ProcessBeforeShowing',[data])},
+ ConvertTeX: function (data) {jsMath.Autoload.Script.Push('ConvertTeX',[data])},
+ ConvertTeX2: function (data) {jsMath.Autoload.Script.Push('ConvertTeX2',[data])},
+ ConvertLaTeX: function (data) {jsMath.Autoload.Script.Push('ConvertLaTeX',[data])},
+ ConvertCustom: function (data) {jsMath.Autoload.Script.Push('ConvertCustom',[data])},
+ CustomSearch: function (d1,d2,d3,d4) {jsMath.Autoload.Script.Push('CustomSearch',[d1,d2,d3,d4])},
+ Synchronize: function (data) {jsMath.Autoload.Script.Push('Synchronize',[data])},
+ Macro: function (cs,def,params) {jsMath.Autoload.Script.Push('Macro',[cs,def,params])},
+ Autorun: function () {jsMath.Autoload.Autorun()}
+});
/*
- * The default settings
+ * Initialize
*/
+
if (jsMath.Autoload.findMathElements == null) {jsMath.Autoload.findMathElements = 1}
if (jsMath.Autoload.findTeXstrings == null) {jsMath.Autoload.findTeXstrings = 0}
if (jsMath.Autoload.findLaTeXstrings == null) {jsMath.Autoload.findLaTeXstrings = 0}
-/*
- * Look for the requested math strings (stop after the first is found)
- */
-jsMath.Autoload.needsJsMath = 0;
-if (jsMath.Autoload.findMathElements) {
- jsMath.Autoload.needsJsMath =
- jsMath.Autoload.areMathElements(jsMath.Autoload.checkElement);
-}
-if (jsMath.Autoload.findTeXstrings && !jsMath.Autoload.needsJsMath) {
- jsMath.Autoload.needsJsMath =
- jsMath.Autoload.areTeXstrings(jsMath.Autoload.checkElement);
-}
-if (jsMath.Autoload.findLaTeXstrings && !jsMath.Autoload.needsJsMath) {
- jsMath.Autoload.needsJsMath =
- jsMath.Autoload.areLaTeXstrings(jsMath.Autoload.checkElement);
-}
-
-/*
- * If math was found, load jsMath.js and tex2math.js (if needed).
- * Otherwise, define the routines that are normally called
- * to process the page, so the author doesn't have to do a
- * check before calling these.
- */
-if (jsMath.Autoload.needsJsMath) {
- jsMath.Autoload.LoadJsMath();
- jsMath.Autoload.LoadExtraFonts();
- jsMath.Autoload.LoadExtraFiles();
-} else {
- jsMath.Process = function () {};
- jsMath.ProcessBeforeShowing = function () {};
- jsMath.ConvertTeX = function () {};
- jsMath.ConvertLaTeX = function () {};
-}
+jsMath.Autoload.Script.Root();
+if (document.body) {jsMath.Autoload.Check()}
Index: loncom/html/adm/jsMath/plugins/mimeTeX.js
diff -u loncom/html/adm/jsMath/plugins/mimeTeX.js:1.1 loncom/html/adm/jsMath/plugins/mimeTeX.js:1.2
--- loncom/html/adm/jsMath/plugins/mimeTeX.js:1.1 Wed Dec 7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/mimeTeX.js Mon Mar 27 14:32:29 2006
@@ -1,4 +1,32 @@
/*
+ * mimeTeX.js
+ *
+ * Part of the jsMath package for mathematics on the web.
+ *
+ * This file makes jsMath more compatible with the mimeTeX program.
+ * It does not make everything work, but it goes a long way.
+ *
+ * ---------------------------------------------------------------------
+ *
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+jsMath.Script.Start();
+
+/*
* Treat ~ as space
*/
jsMath.Parser.prototype.nextIsSpace = function () {
@@ -192,4 +220,6 @@
}
this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
}
-});
\ No newline at end of file
+});
+
+jsMath.Script.End();
\ No newline at end of file
Index: loncom/html/adm/jsMath/plugins/noImageFonts.js
diff -u loncom/html/adm/jsMath/plugins/noImageFonts.js:1.1 loncom/html/adm/jsMath/plugins/noImageFonts.js:1.2
--- loncom/html/adm/jsMath/plugins/noImageFonts.js:1.1 Wed Dec 7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/noImageFonts.js Mon Mar 27 14:32:29 2006
@@ -8,19 +8,19 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
if (!jsMath) {var jsMath = {}}
Index: loncom/html/adm/jsMath/plugins/tex2math.js
diff -u loncom/html/adm/jsMath/plugins/tex2math.js:1.1 loncom/html/adm/jsMath/plugins/tex2math.js:1.2
--- loncom/html/adm/jsMath/plugins/tex2math.js:1.1 Wed Dec 7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/tex2math.js Mon Mar 27 14:32:29 2006
@@ -10,30 +10,38 @@
*
* ---------------------------------------------------------------------
*
- * jsMath is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * jsMath is distributed in the hope that it will be useful,
- * but WITHOUT 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 jsMath; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Copyright 2004-2006 by Davide P. Cervone
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-jsMath.Insert(jsMath,{
+if (!jsMath.tex2math) {jsMath.tex2math = {}} // make sure jsMath.tex2math is defined
+if (!jsMath.tex2math.loaded) { // only load it once
+
+if (!jsMath.Controls) {jsMath.Controls = {}}
+if (!jsMath.Controls.cookie) {jsMath.Controls.cookie = {}}
+
+jsMath.Add(jsMath.tex2math,{
+ loaded: 1,
+ window: window,
+
/*
- * Call the main conversion routine with
- * appropriate flags
+ * Call the main conversion routine with appropriate flags
*/
-
+
ConvertTeX: function (element) {
- jsMath.tex2math.Convert(element,{
+ this.Convert(element,{
processSingleDollars: 1, processDoubleDollars: 1,
processSlashParens: 1, processSlashBrackets: 1,
custom: 0, fixEscapedDollars: 1
@@ -41,7 +49,7 @@
},
ConvertTeX2: function (element) {
- jsMath.tex2math.Convert(element,{
+ this.Convert(element,{
processSingleDollars: 0, processDoubleDollars: 1,
processSlashParens: 1, processSlashBrackets: 1,
custom: 0, fixEscapedDollars: 0
@@ -49,7 +57,7 @@
},
ConvertLaTeX: function (element) {
- jsMath.tex2math.Convert(element,{
+ this.Convert(element,{
processSingleDollars: 0, processDoubleDollars: 0,
processSlashParens: 1, processSlashBrackets: 1,
custom: 0, fixEscapedDollars: 0
@@ -57,208 +65,237 @@
},
ConvertCustom: function (element) {
- jsMath.tex2math.Convert(element,{custom: 1, fixEscapedDollars: 0});
+ this.Convert(element,{custom: 1, fixEscapedDollars: 0});
},
+
+ /*******************************************************************/
/*
- * The main tex2math code
+ * Define a custom search by indicating the
+ * strings to use for starting and ending
+ * in-line and display mathematics
*/
- tex2math: {
-
- /*
- * Define a custom search by indicating the
- * strings to use for starting and ending
- * in-line and display mathematics
- */
- CustomSearch: function (iOpen,iClose,dOpen,dClose) {
- this.inLineOpen = iOpen; this.inLineClose = iClose;
- this.displayOpen = dOpen; this.displayClose = dClose;
- this.createPattern('customPattern',new RegExp(
- '('+this.patternQuote(dOpen)+'|'
- +this.patternQuote(iOpen)+'|'
- +this.patternQuote(dClose)+'|'
- +this.patternQuote(iClose)+'|\\\\.)','g'
- ));
- },
-
- patternQuote: function (s) {
- s = s.replace(/([\^(){}+*?\-|\[\]\:\\])/g,'\\$1');
- return s;
- },
+ CustomSearch: function (iOpen,iClose,dOpen,dClose) {
+ this.inLineOpen = iOpen; this.inLineClose = iClose;
+ this.displayOpen = dOpen; this.displayClose = dClose;
+ this.createPattern('customPattern',new RegExp(
+ '('+this.patternQuote(dOpen)+'|'
+ +this.patternQuote(iOpen)+'|'
+ +this.patternQuote(dClose)+'|'
+ +this.patternQuote(iClose)+'|\\\\.)','g'
+ ));
+ },
+
+ patternQuote: function (s) {
+ s = s.replace(/([\^(){}+*?\-|\[\]\:\\])/g,'\\$1');
+ return s;
+ },
+ /*
+ * MSIE on the Mac doesn't handle lastIndex correctly, so
+ * override it and implement it correctly.
+ */
+ createPattern: function (name,pattern) {
+ jsMath.tex2math[name] = pattern;
+ if (this.fixPatterns) {
+ pattern.oldExec = pattern.exec;
+ pattern.exec = this.msiePatternExec;
+ }
+ },
+ msiePatternExec: function (string) {
+ if (this.lastIndex == null) (this.lastIndex = 0);
+ var match = this.oldExec(string.substr(this.lastIndex));
+ if (match) {this.lastIndex += match.lastIndex}
+ else {this.lastIndex = null}
+ return match;
+ },
- /*
- * Set up for the correct type of search, and recursively
- * convert the mathematics. Disable tex2math if the cookie
- * isn't set, or of there is an element with ID of 'tex2math_off'.
- */
- Convert: function (element,flags) {
- if (!element) {element = document.body}
- if (typeof(element) == 'string') {element = document.getElementById(element)}
- if (jsMath.Controls.cookie.tex2math &&
- (!jsMath.tex2math.allowDisableTag || !document.getElementById('tex2math_off'))) {
- this.custom = 0; for (var i in flags) {this[i] = flags[i]}
- if (this.custom) {
- this.pattern = this.customPattern;
- this.ProcessMatch = this.customProcessMatch;
- } else {
- this.pattern = this.stdPattern;
- this.ProcessMatch = this.stdProcessMatch;
- }
- if (this.processDoubleDollars || this.processSingleDollars ||
- this.processSlashParens || this.processSlashBrackets ||
- this.custom) jsMath.tex2math.ScanElement(element);
+ /*******************************************************************/
+
+ /*
+ * Set up for the correct type of search, and recursively
+ * convert the mathematics. Disable tex2math if the cookie
+ * isn't set, or of there is an element with ID of 'tex2math_off'.
+ */
+ Convert: function (element,flags) {
+ this.Init();
+ if (!element) {element = jsMath.document.body}
+ if (typeof(element) == 'string') {element = jsMath.document.getElementById(element)}
+ if (jsMath.Controls.cookie.tex2math &&
+ (!jsMath.tex2math.allowDisableTag || !jsMath.document.getElementById('tex2math_off'))) {
+ this.custom = 0; for (var i in flags) {this[i] = flags[i]}
+ if (this.custom) {
+ this.pattern = this.customPattern;
+ this.ProcessMatch = this.customProcessMatch;
+ } else {
+ this.pattern = this.stdPattern;
+ this.ProcessMatch = this.stdProcessMatch;
}
- },
+ if (this.processDoubleDollars || this.processSingleDollars ||
+ this.processSlashParens || this.processSlashBrackets ||
+ this.custom) this.ScanElement(element);
+ }
+ },
- /*
- * Recursively look through a document for text nodes that could
- * contain mathematics.
- */
- ScanElement: function (element,ignore) {
- if (!element) {element = document.body}
- if (typeof(element) == 'string') {element = document.getElementById(element)}
- while (element) {
- if (element.nodeName == '#text') {
- if (!ignore) {element = this.ScanText(element)}
- } else if (element.firstChild && element.className != 'math') {
- var off = ignore || element.className == 'tex2math_ignore' ||
- (element.tagName && element.tagName.match(/^(script|noscript|style|textarea|pre)$/i));
- off = off && element.className != 'tex2math_process';
- this.ScanElement(element.firstChild,off);
- }
- if (element) {element = element.nextSibling}
+ /*
+ * Recursively look through a document for text nodes that could
+ * contain mathematics.
+ */
+ ScanElement: function (element,ignore) {
+ if (!element) {element = jsMath.document.body}
+ if (typeof(element) == 'string') {element = jsMath.document.getElementById(element)}
+ while (element) {
+ if (element.nodeName == '#text') {
+ if (!ignore) {element = this.ScanText(element)}
+ } else if (element.firstChild && element.className != 'math') {
+ var off = ignore || element.className == 'tex2math_ignore' ||
+ (element.tagName && element.tagName.match(/^(script|noscript|style|textarea|pre)$/i));
+ off = off && element.className != 'tex2math_process';
+ this.ScanElement(element.firstChild,off);
}
- },
-
- /*
- * Looks through a text element for math delimiters and
- * process them. If <BR> tags are found in the middle, they
- * are ignored (this is for BBS systems that have editors
- * that insert these automatically).
- */
- ScanText: function (element) {
- if (element.nodeValue.replace(/\s+/,'') == '') {return element}
- var match; var prev; this.search = {};
- while (element) {
- this.pattern.lastIndex = 0;
- while (element.nodeName == '#text' &&
- (match = this.pattern.exec(element.nodeValue))) {
- element = this.ProcessMatch(match[0],match.index,element);
- }
- if (this.search.matched) {element = this.EncloseMath(element)}
- prev = element; element = element.nextSibling;
- while (element && element.nodeName.toLowerCase() == 'br')
- {prev = element; element = element.nextSibling}
- if (!element || element.nodeName != '#text') {return prev}
+ if (element) {element = element.nextSibling}
+ }
+ },
+
+ /*
+ * Looks through a text element for math delimiters and
+ * process them. If <BR> tags are found in the middle, they
+ * are ignored (this is for BBS systems that have editors
+ * that insert these automatically).
+ */
+ ScanText: function (element) {
+ if (element.nodeValue.replace(/\s+/,'') == '') {return element}
+ var match; var prev; this.search = {};
+ while (element) {
+ this.pattern.lastIndex = 0;
+ while (element && element.nodeName == '#text' &&
+ (match = this.pattern.exec(element.nodeValue))) {
+ element = this.ProcessMatch(match[0],match.index,element);
}
- return element;
- },
-
- /*
- * If a matching end tag has been found, process the mathematics.
- * Otherwise, update the search data for the given delimiter,
- * or ignore it, as the item dictates.
- */
- stdProcessMatch: function (match,index,element) {
- if (match == this.search.end) {
- this.search.close = element;
- this.search.clength = match.length;
- this.search.cpos = this.pattern.lastIndex;
- element = this.EncloseMath(element);
- } else {
- switch (match) {
- case '\\(':
- if (this.search.end != '$' && this.search.end != '$$' &&
- this.processSlashParens) {
- this.ScanMark('span',element,'\\)');
- }
- break;
-
- case '\\[':
- if (this.search.end != '$' && this.search.end != '$$' &&
- this.processSlashBrackets) {
- this.ScanMark('div',element,'\\]');
- }
- break;
-
- case '$$':
- if (this.processDoubleDollars) {
- var type = (this.doubleDollarsAreInLine? 'span': 'div');
- this.ScanMark(type,element,'$$');
- }
- break;
-
- case '$':
- if (this.search.end == null && this.processSingleDollars) {
- this.ScanMark('span',element,'$');
- }
- break;
-
- case '\\$':
- if (this.search.end == null && this.fixEscapedDollars) {
- element.nodeValue = element.nodeValue.substr(0,index)
- + element.nodeValue.substr(index+1);
- }
- break;
- }
+ if (this.search.matched) {element = this.EncloseMath(element)}
+ if (!element) {return null}
+ prev = element; element = element.nextSibling;
+ while (element && element.nodeName.toLowerCase() == 'br')
+ {prev = element; element = element.nextSibling}
+ if (!element || element.nodeName != '#text') {return prev}
+ }
+ return element;
+ },
+
+ /*
+ * If a matching end tag has been found, process the mathematics.
+ * Otherwise, update the search data for the given delimiter,
+ * or ignore it, as the item dictates.
+ */
+ stdProcessMatch: function (match,index,element) {
+ if (match == this.search.end) {
+ this.search.close = element;
+ this.search.clength = match.length;
+ this.search.cpos = this.pattern.lastIndex;
+ element = this.EncloseMath(element);
+ } else {
+ switch (match) {
+ case '\\(':
+ if (this.search.end != '$' && this.search.end != '$$' &&
+ this.processSlashParens) {
+ this.ScanMark('span',element,'\\)');
+ }
+ break;
+
+ case '\\[':
+ if (this.search.end != '$' && this.search.end != '$$' &&
+ this.processSlashBrackets) {
+ this.ScanMark('div',element,'\\]');
+ }
+ break;
+
+ case '$$':
+ if (this.processDoubleDollars) {
+ var type = (this.doubleDollarsAreInLine? 'span': 'div');
+ this.ScanMark(type,element,'$$');
+ }
+ break;
+
+ case '$':
+ if (this.search.end == null && this.processSingleDollars) {
+ this.ScanMark('span',element,'$');
+ }
+ break;
+
+ case '\\$':
+ if (this.search.end == null && this.fixEscapedDollars) {
+ element.nodeValue = element.nodeValue.substr(0,index)
+ + element.nodeValue.substr(index+1);
+ }
+ break;
}
- return element;
- },
+ }
+ return element;
+ },
- /*
- * If a matching end tag has been found, process the mathematics.
- * Otherwise, update the search data for the given delimiter,
- * or ignore it, as the item dictates.
- */
- customProcessMatch: function (match,index,element) {
- if (match == this.search.end) {
- this.search.close = element;
- this.search.clength = match.length;
- this.search.cpos = this.pattern.lastIndex;
- this.search.matched = 1;
- } else if (match == this.inLineOpen) {
- if (this.search.matched) {element = this.EncloseMath(element)}
- this.ScanMark('span',element,this.inLineClose);
- } else if (match == this.displayOpen) {
- if (this.search.matched) {element = this.EncloseMath(element)}
- this.ScanMark('div',element,this.displayClose);
- }
- return element;
- },
+ /*
+ * If a matching end tag has been found, process the mathematics.
+ * Otherwise, update the search data for the given delimiter,
+ * or ignore it, as the item dictates.
+ */
+ customProcessMatch: function (match,index,element) {
+ if (match == this.search.end) {
+ this.search.close = element;
+ this.search.clength = match.length;
+ this.search.cpos = this.pattern.lastIndex;
+ this.search.matched = 1;
+ } else if (match == this.inLineOpen) {
+ if (this.search.matched) {element = this.EncloseMath(element)}
+ this.ScanMark('span',element,this.inLineClose);
+ } else if (match == this.displayOpen) {
+ if (this.search.matched) {element = this.EncloseMath(element)}
+ this.ScanMark('div',element,this.displayClose);
+ }
+ return element;
+ },
- /*
- * Return a structure that records the starting location
- * for the math element, and the end delimiter we want to find.
- */
- ScanMark: function (type,element,end) {
- var len = RegExp.$1.length;
- this.search = {
- type: type, end: end, open: element, olength: len,
- pos: this.pattern.lastIndex - len
- };
- },
-
- /*
- * Surround the mathematics by an appropriate
- * SPAN or DIV element marked as CLASS="math".
- */
- EncloseMath: function (element) {
- var search = this.search;
- var close = search.close;
- if (search.cpos == close.length) {close = close.nextSibling}
- else {close = close.splitText(search.cpos)}
- if (!close) {close = document.createTextNode("")}
- if (element == search.close) {element = close}
- var math = search.open.splitText(search.pos);
- while (math.nextSibling && math.nextSibling != close) {
- if (math.nextSibling.nodeValue) {math.nodeValue += math.nextSibling.nodeValue}
- math.parentNode.removeChild(math.nextSibling);
- }
- var TeX = math.nodeValue.substr(search.olength,
- math.nodeValue.length-search.olength-search.clength);
- math.parentNode.removeChild(math);
- math = this.createMathTag(search.type,TeX);
+ /*
+ * Return a structure that records the starting location
+ * for the math element, and the end delimiter we want to find.
+ */
+ ScanMark: function (type,element,end) {
+ var len = RegExp.$1.length;
+ this.search = {
+ type: type, end: end, open: element, olength: len,
+ pos: this.pattern.lastIndex - len
+ };
+ },
+
+ /*******************************************************************/
+
+ /*
+ * Surround the mathematics by an appropriate
+ * SPAN or DIV element marked as CLASS="math".
+ */
+ EncloseMath: function (element) {
+ if (this.callback) {if (!this.callback()) {return null}}
+ var search = this.search;
+ var close = search.close;
+ if (search.cpos == close.length) {close = close.nextSibling}
+ else {close = close.splitText(search.cpos)}
+ if (!close) {close = jsMath.document.createTextNode("")}
+ if (element == search.close) {element = close}
+ var math = search.open.splitText(search.pos);
+ while (math.nextSibling && math.nextSibling != close) {
+ if (math.nextSibling.nodeValue) {math.nodeValue += math.nextSibling.nodeValue}
+ else {math.nodeValue += ' '}
+ math.parentNode.removeChild(math.nextSibling);
+ }
+ var TeX = math.nodeValue.substr(search.olength,
+ math.nodeValue.length-search.olength-search.clength);
+ math.parentNode.removeChild(math);
+ math = this.createMathTag(search.type,TeX);
+ //
+ // This is where older, buggy browsers can fail under unpredicatble
+ // circumstances, so we trap errors and at least get to continue
+ // with the rest of the math. (## should add error message ##)
+ //
+ try {
if (close && close.parentNode) {
close.parentNode.insertBefore(math,close);
} else if (search.open.nextSibling) {
@@ -266,98 +303,93 @@
} else {
search.open.parentNode.appendChild(math);
}
- this.search = {}; this.pattern.lastIndex = 0;
- return element;
- },
+ } catch (err) {}
+ this.search = {}; this.pattern.lastIndex = 0;
+ return math;
+ },
+ /*
+ * Create an element for the mathematics
+ */
+ createMathTag: function (type,text) {
+ var tag = jsMath.document.createElement(type); tag.className = "math";
+ var math = jsMath.document.createTextNode(text);
+ tag.appendChild(math);
+ return tag;
+ },
+
+ //
+ // MSIE won't let you insert a DIV within tags that are supposed to
+ // contain in-line data (like <P> or <SPAN>), so we have to fake it
+ // using SPAN tags that force the formatting to work like DIV. We
+ // use a separate SPAN that is the full width of the containing
+ // item, and that has the margins and centering from the div.typeset
+ // style.
+ //
+ MSIEcreateMathTag: function (type,text) {
+ var tag = jsMath.document.createElement("span");
+ tag.className = "math";
+ text = text.replace(/</g,'<').replace(/>/g,'>');
+ if (type == 'div') {
+ tag.className = "";
+ tag.style.width = "100%"; tag.style.margin = jsMath.tex2math.margin;
+ tag.style.display = "inline-block";
+ text = '<span class="math">\\displaystyle{'+text+'}</span>';
+ if (jsMath.tex2math.center) {
+ tag.style.textAlign = "center";
+ text = '<span style="text-align:left">'+text+'</span>'
+ }
+ }
+ tag.innerHTML = text;
+ return tag;
+ },
+
+ /*******************************************************************/
+
+ Init: function () {
+
+ if (this.inited || !jsMath.browser) return
/*
- * Create an element for the mathematics
+ * MSIE can't handle the DIV's properly, so we need to do it by
+ * hand. Look up the style for typeset math to see if the user
+ * has changed it, and get whether it is centered or indented
+ * so we can mirror that using a SPAN
*/
- createMathTag: function (type,text) {
- var tag = document.createElement(type); tag.className = "math";
- var math = document.createTextNode(text);
- tag.appendChild(math);
- return tag;
- },
-
- //
- // MSIE won't let you insert a DIV within tags that are supposed to
- // contain in-line data (like <P> or <SPAN>), so we have to fake it
- // using SPAN tags that force the formatting to work like DIV. We
- // use a separate SPAN that is the full width of the containing
- // item, and that has the margins from the div.typeset style
- // and we name is jsMath.recenter to get jsMath to recenter it when
- // it is typeset (HACK!!!)
- //
- MSIEcreateMathTag: function (type,text) {
- var tag = document.createElement("span");
- tag.className = "math";
- text = text.replace(/</g,'<').replace(/>/g,'>');
- if (type == 'div') {
- tag.className = (jsMath.tex2math.center)? "jsMath.recenter": "";
- tag.style.width = "100%"; tag.style.margin = jsMath.tex2math.margin;
- tag.style.display = "inline-block";
- text = '<span class="math">\\displaystyle{'+text+'}</span>';
+ if (jsMath.browser == 'MSIE' && navigator.platform == 'Win32') {
+ this.createMathTag = this.MSIEcreateMathTag;
+ this.margin = ""; this.center = 0;
+ for (var i = 0; i < jsMath.document.styleSheets.length; i++) {
+ var rules = jsMath.document.styleSheets[i].cssRules;
+ if (!rules) {rules = jsMath.document.styleSheets[i].rules}
+ for (var j = 0; j < rules.length; j++) {
+ if (rules[j].selectorText.toLowerCase() == 'div.typeset') {
+ if (rules[j].style.margin != "") {this.margin = rules[j].style.margin}
+ this.center = (rules[j].style.textAlign == 'center');
+ }
+ }
}
- tag.innerHTML = text;
- return tag;
}
-
+ this.inited = 1;
+ },
+
+ /*
+ * Test to see if we need to override the pattern exec() call
+ * (for MSIE on the Mac).
+ */
+ TestPatterns: function () {
+ var pattern = /a/g;
+ var match = pattern.exec("xax");
+ this.fixPatterns = (pattern.lastIndex != 2 && match.lastIndex == 2);
}
+
});
/*
- * Set the defaults
+ * Initialize
*/
if (jsMath.Controls.cookie.tex2math == null) {jsMath.Controls.cookie.tex2math = 1}
if (jsMath.tex2math.allowDisableTag == null) {jsMath.tex2math.allowDisableTag = 1}
+jsMath.tex2math.TestPatterns();
+jsMath.tex2math.createPattern('stdPattern',/(\\[\(\)\[\]$]|\$\$|\$)/g);
-/*
- * MSIE can't handle the DIV's properly, so we need to do it by
- * hand. Look up the style for typeset math to see if the user
- * has changed it, and get whether it is centered or indented
- * so we can mirror that using a SPAN
- */
-if (jsMath.browser == 'MSIE' && navigator.platform == 'Win32') {
- jsMath.tex2math.createMathTag = jsMath.tex2math.MSIEcreateMathTag;
- jsMath.Add(jsMath.tex2math,{margin: "", center: 0});
- for (var i = 0; i < document.styleSheets.length; i++) {
- var rules = document.styleSheets[i].cssRules;
- if (!rules) {rules = document.styleSheets[i].rules}
- for (var j = 0; j < rules.length; j++) {
- if (rules[j].selectorText.toLowerCase() == 'div.typeset') {
- if (rules[j].style.margin != "")
- {jsMath.tex2math.margin = rules[j].style.margin}
- jsMath.tex2math.center =
- (rules[j].style.textAlign == 'center')? 1: 0;
- }
- }
- }
-}
-
-/*
- * MSIE on the mac doesn't handle lastIndex correctly, so
- * override it and implement it correctly.
- */
-if (jsMath.browser == 'MSIE' && navigator.platform == 'MacPPC') {
- jsMath.tex2math.createPattern = function (name,pattern) {
- jsMath.tex2math[name] = pattern;
- pattern.oldExec = pattern.exec;
- pattern.exec = function (string) {
- var pattern = jsMath.tex2math[name];
- if (pattern.lastIndex == null) (pattern.lastIndex = 0);
- var match = pattern.oldExec(string.substr(pattern.lastIndex));
- if (match) {pattern.lastIndex += match.lastIndex}
- else {pattern.lastIndex = null}
- return match;
- }
- }
-} else {
- jsMath.tex2math.createPattern =
- function (name,pattern) {jsMath.tex2math[name] = pattern}
}
-
-/*
- * The standard pattern for TeX and LaTeX strings
- */
-jsMath.tex2math.createPattern('stdPattern',/(\\[\(\)\[\]$]|\$\$|\$)/g);
Index: loncom/html/adm/jsMath/jsMath-BaKoMa-fonts.js
+++ loncom/html/adm/jsMath/jsMath-BaKoMa-fonts.js
/*
* jsMath-BaKoMa-fonts.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file makes changes needed to use the BaKoMa fonts and
* their encoding.
*
* ---------------------------------------------------------------------
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************
*
* The BaKoMa fonts have a different encoding, so change the characters
* to correspond to the their encoding.
*/
jsMath.Script.Start();
if (jsMath.browser == "Mozilla" && navigator.platform != "MacPPC") {
/*
* Mozilla/PC
*/
jsMath.Update.TeXfontCodes({
cmr10: [
'Γ', 'Δ', 'Θ', 'Λ',
'Ξ', 'Π', 'Σ', 'Υ',
'Φ', 'Ψ', 'Ω', 'ff',
'fi', 'fl', 'ffi', 'ffl',
'ı', '', '̀', '́',
'̌', '̆', '̅', '̊',
'̧', 'ß', 'æ', 'œ',
'ø', 'Æ', 'Œ', 'Ø',
'̷', '!', '”', '#',
'$', '%', '&', ''',
'(', ')', '*', '+',
',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '¡', '=', '¿', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '[', '“', ']', '̂', '̇',
'‘', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '–', '—', '̋', '̃', '̈'
],
cmmi10: [
'Γ', 'Δ', 'Θ', 'Λ',
'Ξ', 'Π', 'Σ', 'Υ',
'Φ', 'Ψ', 'Ω', 'α',
'β', 'γ', 'δ', 'ε',
'ζ', 'η', 'θ', 'ι',
'κ', 'λ', 'μ', 'ν',
'ξ', 'π', 'ρ', 'σ',
'τ', 'υ', 'φ', 'χ',
'ψ', 'ω', 'ɛ', 'ϑ',
'ϖ', 'ϱ', 'ς', 'ϕ',
'↼', '↽', '⇀', '⇁',
'', '', '▹', '◃',
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '.', ',', '<', '/', '>', '⋆',
'∂', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '♭', '♮', '♯', '⌣', '⌢',
'ℓ', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', 'ı', '', '℘', '⃗', '̑'
],
cmsy10: [
'−', '·', '×', '⋆',
'÷', '⋄', '±', '∓',
'⊕', '⊖', '⊗', '⊘',
'⊙', '○', '∘', '∙',
'≃', '≍', '⊆', '⊇',
'≤', '≥', '≼', '≽',
'∼', '≅', '⊂', '⊃',
'≪', '≫', '≺', '≻',
'←', '→', '↑', '↓',
'↔', '↗', '↘', '≂',
'⇐', '⇒', '⇑', '⇓',
'⇔', '↖', '↙', '∝',
'′', '∞', '∈', '∋',
'△', '▽', '̸', '',
'∀', '∃', '¬', '∅',
'ℜ', 'ℑ', '⊤', '⊥',
'ℵ', '', 'ℬ', '',
'', 'ℰ', 'ℱ', '',
'ℋ', 'ℐ', '', '',
'ℒ', 'ℳ', '', '',
'', '', 'ℛ', '',
'', '', '', '',
'', '', '', '∪',
'∩', '⊎', '∧', '∨',
'⊢', '⊣', '⌊', '⌋',
'⌈', '⌉', '{', '}',
'〈', '〉', '∣', '∥',
'↕', '⇕', '∖', '≀',
'√', '∐', '∇', '∫',
'⊔', '⊓', '⊑', '⊒',
'§', '†', '‡', '¶',
'♣', '♢', '♡', '♠'
],
cmex10: [
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', '',
'', '', '', ''
]
});
/*
* Adjust a few other characters as well
*/
jsMath.Update.TeXfonts({
cmr10: {'20': {c: 'ˇ', tclass: 'normal', w: .3}},
cmmi10: {
'20': {c: '<i>&kappa</i>', tclass: 'normal'},
'58': {c: '.', tclass: 'normal'},
'59': {c: ',', tclass: 'normal'},
'61': {c: '/', tclass: 'cmr10'}
},
cmsy10: {
'3': {c: '*', tclass: 'normal'},
'16': {c: '≍'},
'17': {c: '≡', tclass: 'normal'},
'25': {c: '≈', tclass: 'normal'},
'39': {c: '≃'},
'20': {c: '≤', tclass: 'normal'}
},
cmex10: {'20': {c: '<span style="font-size: 80%"></span>'}},
cmti10: {'10': {c: '<i>Ω</i>', tclass: 'normal'}},
cmbx10: {'10': {c: '<b>Ω</b>', tclass: 'normal'}}
});
} else {
jsMath.Font.BaKoMa = [
'¡', '¢', '£', '¤', '¥', '¦', '§', '¨',
'©', 'ª', '­', '®', '¯', '°', '±', '²',
'³', '´', 'µ', '¶', '∙', '¸', '¹', 'º',
'»', '¼', '½', '¾', '¿', 'À', 'Á', 'Â',
'Ã', '!', '"', '#', '$', '%', '&', '\'',
'(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '{', '|', '}', '~', 'Ä'
];
jsMath.Update.TeXfontCodes({
cmr10: jsMath.Font.BaKoMa,
cmmi10: jsMath.Font.BaKoMa,
cmsy10: jsMath.Font.BaKoMa,
cmex10: jsMath.Font.BaKoMa,
cmti10: jsMath.Font.BaKoMa,
cmbx10: jsMath.Font.BaKoMa
});
/*
* MSIE corrections
*/
switch (jsMath.browser) {
case "MSIE":
if (navigator.platform == "Win32") {
/*
* MSIE/PC
*/
jsMath.Browser.msieFontBug = 1;
jsMath.Update.TeXfonts({
cmr10: {'10': {c: 'Ω', tclass: 'normal'}},
cmmi10: {
'10': {c: '<i>Ω</i>', tclass: 'normal'},
'126': {c: '~<span style="margin-left:.1em"></span>'}
},
cmsy10: {
'10': {c: '⊗', tclass: 'arial'},
'55': {c: '<span style="margin-right:-.54em">7</span>'}
},
cmex10: {'10': {c: '<span style="font-size: 67%">D</span>'}},
cmti10: {'10': {c: '<i>Ω</i>', tclass: 'normal'}},
cmbx10: {'10': {c: '<b>Ω</b>', tclass: 'normal'}}
});
} else {
/*
* MSIE/Mac
*/
jsMath.Update.TeXfonts({
cmr10: {
'3': {c: '<font face="Symbol">L</font>', tclass: 'normal'},
'5': {c: '<font face="Symbol">P</font>', tclass: 'normal'},
'10': {c: '<font face="Symbol">W</font>', tclass: 'normal'},
'15': {c: 'ffl', tclass: 'normal'},
'16': {c: 'ı', tclass: 'normal'},
'20': {c: 'ˇ', tclass: 'normal'},
'22': {c: '¯', tclass: 'normal', w: .3},
'25': {c: 'ß', tclass: 'normal'},
'26': {c: 'æ', tclass: 'normal'},
'27': {c: 'œ', tclass: 'normal'}
},
cmmi10: {
'3': {c: '<font face="Symbol">L</font>', tclass: 'italic'},
'5': {c: '<font face="Symbol">P</font>', tclass: 'italic'},
'10': {c: '<font face="Symbol">W</font>', tclass: 'italic'},
'15': {c: '<font face="Symbol">e</font>', tclass: 'italic'},
'16': {c: '<font face="Symbol">z</font>', tclass: 'italic'},
'20': {c: '<font face="Symbol">k</font>', tclass: 'italic'},
'22': {c: '<font face="Symbol">m</font>', tclass: 'italic'},
'25': {c: '<font face="Symbol">p</font>', tclass: 'italic'},
'26': {c: '<font face="Symbol">r</font>', tclass: 'italic'},
'27': {c: '<font face="Symbol">s</font>', tclass: 'italic'}
},
cmsy10: {
'3': {c: '<span style="vertical-align:-.3em">*</span>', tclass: 'normal'},
'5': {c: 'Ή', tclass: 'normal'},
'10': {c: '⊗', tclass: 'normal'},
'15': {c: '•', tclass: 'normal'},
'16': {c: '≍', tclass: 'normal'},
'20': {c: '≤', tclass: 'normal'},
'22': {c: '≤', tclass: 'normal'},
'25': {c: '≈', tclass: 'normal'},
'26': {c: '<font face="Symbol">Ì</font>', tclass: 'normal'},
'27': {c: '<font face="Symbol">É</font>', tclass: 'normal'}
},
cmex10: {
'3': {c: '<span style="font-size: 67%">i</span>'},
'5': {c: '<span style="font-size: 67%">k</span>'},
'10': {c: '<span style="font-size: 67%">D</span>'},
'15': {c: '<span style="font-size: 55%">Â</span>'},
'16': {c: '<span style="font-size: 83%">µ</span>'},
'20': {c: '<span style="font-size: 83%">"</span>'},
'22': {c: '<span style="font-size: 83%">$</span>'},
'25': {c: '<span style="font-size: 83%">\'</span>'},
'26': {c: '<span style="font-size: 83%">(</span>'},
'27': {c: '<span style="font-size: 83%">)</span>'}
},
cmti10: {
'3': {c: '<font face="Symbol">L</font>', tclass: 'italic'},
'5': {c: '<font face="Symbol">P</font>', tclass: 'italic'},
'10': {c: '<font face="Symbol">W</font>', tclass: 'italic'},
'16': {c: 'ı', tclass: 'italic'},
'20': {c: '­', tclass: 'italic'},
'22': {c: '¯', tclass: 'italic', w: .3},
'25': {c: 'ß', tclass: 'italic'},
'26': {c: 'æ', tclass: 'italic'},
'27': {c: 'œ', tclass: 'italic'}
},
cmbx10: {
'3': {c: '<font face="Symbol">L</font>', tclass: 'bold'},
'5': {c: '<font face="Symbol">P</font>', tclass: 'bold'},
'10': {c: '<font face="Symbol">W</font>', tclass: 'bold'},
'16': {c: 'ı', tclass: 'bold'},
'20': {c: '­', tclass: 'bold'},
'22': {c: '¯', tclass: 'bold', w: .3},
'25': {c: 'ß', tclass: 'bold'},
'26': {c: 'æ', tclass: 'bold'},
'27': {c: 'œ', tclass: 'bold'}
}
});
}
break;
case "Mozilla":
if (navigator.platform == "MacPPC") {
/*
* Mozilla/Mac
*/
jsMath.Update.TeXfonts({
cmr10: {'10': {c: 'Ω', tclass: 'normal'}},
cmmi10: {'10': {c: '<i>Ω</i>', tclass: 'normal'}},
cmsy10: {'10': {c: '⊗', tclass: 'normal'}},
cmex10: {'10': {c: '<span style="font-size: 67%">D</span>'}},
cmti10: {'10': {c: '<i>Ω</i>', tclass: 'normal'}},
cmbx10: {'10': {c: '<b>Ω</b>', tclass: 'normal'}}
});
}
break;
case "Opera":
jsMath.Update.TeXfonts({
cmr10: {
'10': {c: 'Ω', tclass: 'normal'},
'20': {c: 'ˇ', tclass: 'normal'}
},
cmmi10: {
'10': {c: '<i>Ω</i>', tclass: 'normal'},
'20': {c: 'κ', tclass: 'normal'}
},
cmsy10: {
'10': {c: '⊗', tclass: 'normal'},
'20': {c: '≤', tclass: 'normal'}
},
cmex10: {
'10': {c: '<span style="font-size: 67%">D</span>'},
'20': {c: '<span style="font-size: 82%">"</span>'}
},
cmti10: {
'10': {c: '<i>Ω</i>', tclass: 'normal'},
'20': {c: '<i>ˇ</i>', tclass: 'normal'}
},
cmbx10: {
'10': {c: '<b>Ω</b>', tclass: 'normal'},
'20': {c: '<b>ˇ</b>', tclass: 'normal'}
}
});
break;
case "Konqueror":
jsMath.Update.TeXfonts({
cmr10: {'20': {c: 'ˇ', tclass: 'normal'}},
cmmi10: {'20': {c: 'κ', tclass: 'normal'}},
cmsy10: {'20': {c: '≤', tclass: 'normal'}},
cmex10: {'20': {c: '<span style="font-size: 84%">"</span>'}},
cmti10: {'20': {c: '<i>ˇ</i>', tclass: 'normal'}},
cmbx10: {'20': {c: '<b>ˇ</b>', tclass: 'normal'}}
});
break;
}
}
jsMath.Setup.Styles({
'.typeset .cmr10': 'font-family: cmr10, serif',
'.typeset .cmbx10': 'font-family: cmbx10, cmr10',
'.typeset .cmti10': 'font-family: cmti10, cmr10',
'.typeset .cmmi10': 'font-family: cmmi10',
'.typeset .cmsy10': 'font-family: cmsy10',
'.typeset .cmex10': 'font-family: cmex10',
'.typeset .arial': "font-family: 'Arial unicode MS'"
});
jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath-autoload.html
+++ loncom/html/adm/jsMath/jsMath-autoload.html
<html>
<head>
<!--
| jsMath-autoload.html
|
| Part of the jsMath package for mathematics on the web.
|
| This file is used for loading jsMath.js and other components
| when the "autoload" plugin is used.
|
| ---------------------------------------------------------------------
|
| Copyright 2004-2006 by Davide P. Cervone
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
-->
</head>
<body>
<script>
window.jsMath = window.parent.jsMath;
document.write('<script src="'+jsMath.Autoload.Script.url+'"><'+'/script>');
</script>
<script>
if (window.jsMath) {
if (document.readyState == 'loading') {
// work around bug in OmniWeb 4.5 that would otherwise run this twice.
setTimeout("jsMath.Autoload.Script.endLoad();",1)
} else {
jsMath.Autoload.Script.endLoad();
}
}
</script>
</body>
</html>
Index: loncom/html/adm/jsMath/jsMath-controls.html
+++ loncom/html/adm/jsMath/jsMath-controls.html
<html>
<head>
<!--
| jsMath-controls.html
|
| Part of the jsMath package for mathematics on the web.
|
| This file handles the details of the jsMath control panels
|
| ---------------------------------------------------------------------
|
| Copyright 2004-2006 by Davide P. Cervone
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
-->
</head>
<body>
<script>
var showWarning = 0;
while (!window.jsMath && !showWarning) {
try {
window.jsMath = window.parent.jsMath;
if (!window.jsMath) {throw "no jsMath";}
} catch (err) {
showWarning = 1;
//
// MSIE on Mac can't change document.domain, and 'try' won't
// catch the error (Grrr!) so don't even try for it
//
if (document.domain.match(/\..*\./) &&
(navigator.appName != 'Microsoft Internet Explorer' ||
navigator.platform != 'MacPPC' || !navigator.userProfile || !document.all)) {
try {
document.domain = document.domain.replace(/^[^.]*\./,'');
showWarning = 0;
} catch(err) {}
}
}
}
function Warning () {
alert(
"jsMath can't open the control panel, since jsMath was not " +
"obtained from a server that is in the same domain as the " +
"page that loaded it."
);
}
if (showWarning) {setTimeout("Warning()",1)} else {
debug = window.parent.debug; show = window.parent.show;
jsMath.Add(jsMath.Controls,{
loaded: 1,
Close: function () {
this.panel.style.display = "none";
jsMath.Element("button").style.display = (this.cookie.button ? "block" : "none");
if (jsMath.document.location.protocol == 'file:') return;
for (var id in {scale:1, scaleImg:1, font:1, print:1, autofont:1, alpha:1, tex2math:1}) {
if (this.cookie[id] != this.oldCookie[id] && this.oldCookie[id] != null) {
this.loaded = 0;
jsMath.document.location.reload();
return;
}
}
},
Main: function () {
this.oldCookie = {}; jsMath.Add(this.oldCookie,this.cookie);
this.panel.innerHTML = ""; // for MSIE on the Mac
if (jsMath.browser == 'Mozilla') {
this.panel.appendChild(document.getElementById("jsMath_panel").cloneNode(true));
} else {
this.panel.innerHTML = document.getElementById("jsMath_panel").innerHTML;
}
jsMath.Element("_version").innerHTML = jsMath.version;
jsMath.Element("_fontType").innerHTML =
({tex:"TeX",
image:"Image",
symbol:"Image symbol",
unicode:"Unicode"})[this.cookie.font];
jsMath.Element("_mailto").href =
"mailto:dpvc@union.edu?subject=Bug Report for jsMath "
+ jsMath.version + " (using " + jsMath.browser
+ " in " + this.cookie.font + " mode)";
if (this.cookie.print ||
(this.cookie.font != 'image' && this.cookie.font != 'symbol'))
{jsMath.Element("_resolution").disabled = true}
/*
* Seems to be a bug in Safari that messes up the button names
* when the page is reloaded after an option change
*/
if (jsMath.browser == 'Safari') {
jsMath.Element("_resolution").value = "Hi-Res Fonts for Printing";
jsMath.Element("_opts").value = "Options";
jsMath.Element("_done").value = "Done";
}
this.panel.style.display = "block";
this.openMain = 0;
},
Options: function () {
this.panel.innerHTML = ""; // for MSIE on the Mac
if (jsMath.browser == 'Mozilla') {
this.panel.appendChild(document.getElementById("jsMath_options").cloneNode(true));
} else {
this.panel.innerHTML = document.getElementById("jsMath_options").innerHTML;
}
jsMath.Element("_scale").value = this.cookie.scale;
jsMath.Element("_keep").value = this.cookie.keep;
for (var id in {autofont:1, scaleImg:1, alpha:1, warn:1, button:1,
progress:1, asynch:1, blank:1, tex2math:1}) {
if (this.cookie[id]) {jsMath.Element('_'+id).checked = true}
}
var font = jsMath.document.getElementsByName("jsMath__font");
for (var i = 0; i < font.length; i++) {
if ((font[i].value == 'tex' && jsMath.nofonts) ||
((font[i].value == 'symbol' || font[i].value == 'image') &&
jsMath.noImgFonts)) {
jsMath.Element('_'+font[i].value+"Text").style.color = "#888888";
font[i].disabled = true;
}
else if (this.cookie.font == font[i].value) {font[i].checked = true}
}
if (jsMath.noImgFonts) {
jsMath.Element("_alphaText").style.color = "#888888";
jsMath.Element("_alpha").disabled = true;
jsMath.Element("_scaleImg").disabled = true;
} else if (jsMath.Browser.imgScale != 1) {
jsMath.Element("_alphaText").style.color = "#888888";
jsMath.Element("_alpha").disabled = true;
}
if (jsMath.tex2math.Convert) {
jsMath.Element("_tex2mathRow").style.display = '';
}
/*
* Seems to be a bug in Safari that messes up the button names
* when the page is reloaded after an option change
*/
if (jsMath.isSafari) {
jsMath.Element("_back").value = "Back";
jsMath.Element("_done").value = "Done";
}
this.panel.style.display = "block";
},
SaveOptions: function (close) {
this.cookie.scale = jsMath.Element("_scale").value;
var font = jsMath.document.getElementsByName("jsMath__font");
for (var i = 0; i < font.length; i++)
{if (font[i].checked) {this.cookie.font = font[i].value}}
for (var id in {autofont:1, scaleImg:1, alpha:1, warn:1, button:1,
progress:1, asynch:1, blank:1, tex2math:1}) {
if (this.cookie[id] != null) {
this.cookie[id] = jsMath.Element('_'+id).checked ? 1: 0;
}
}
this.cookie.keep = jsMath.Element("_keep").value;
this.SetCookie(1);
if (close) {this.Close()} else {this.Main()}
},
PrintResolution: function () {
this.cookie.print = 1;
this.SetCookie(1);
this.Close();
},
CheckVersion: function () {
jsMath.Script.delayedLoad('http://www.math.union.edu/locate/jsMath/jsMath/jsMath-version-check.js');
},
NoAuto: function () {jsMath.Element("_autofont").checked = false}
});
}
</script>
<!------------------------------------------------------------>
<div id="jsMath_panel">
<div style="text-align:center; margin:1em 2em">
<b style="font-size:large">jsMath v<span ID="jsMath__version"></span></b><br/>
<small>(<span id="jsMath__fontType">type</span> fonts)</small>
<p>
<table border="0" cellspacing="0" cellpadding="0" style="margin:0px">
<tr><td align="center"><table border="0" cellspacing="0" cellpadding="0">
<tr><td align="center" colspan="3">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/quickstart.html">Quick Start</a></td></tr>
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/printing.html">Printing Issues</a></td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath">Home Page</a></td></tr>
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/">Documentation</a></td></tr>
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath/download/jsMath-fonts.html">Download Fonts</a></td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath/bugs.html">Known Bugs</a></td></tr>
<tr><td align="left">• <a id="jsMath__mailto" href="mailto:dpvc@union.edu?subject=jsMath Bug Report">Report a Bug</a></td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">• <a target="_blank" href="http://www.math.union.edu/locate/jsMath/jsMath/COPYING.txt">License</a></td></tr>
</table>
</td></tr>
<tr><td style="height:1em"></td></tr>
<tr><td align="center" colspan="3">
<input type="button" id="jsMath__resolution" value="Hi-Res Fonts for Printing"
style="width:17em" onclick="jsMath.Controls.PrintResolution()" />
</td></tr>
<tr><td height="1"></td></tr>
<tr><td align="center" colspan="3">
<input type="button" value="Check for jsMath Updates"
style="width:17em" onclick="jsMath.Controls.CheckVersion()" />
</td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">
<input type="button" value="Options" id="jsMath__opts" style="width:8em" onclick="jsMath.Controls.Options()" />
</td><td>
</td><td align="right">
<input type="button" value="Done" id="jsMath__done" style="width:8em" onclick="jsMath.Controls.Close()" />
</td></tr>
</table></td></tr>
<tr><td height="7"></td></tr>
<tr><td align="center" colspan="3" style="width:20em; font-size:x-small">
<i>Click on the jsMath floating button or <nobr>ALT-click</nobr> on a
mathematical expression to get this dialog at any time.</i>
</td></tr>
</table></p>
</div>
</div>
<!------------------------------------------------------------>
<div id="jsMath_options">
<div style="text-align:center; padding:.75em 1.4em;">
<b style="font-size:large">jsMath Options</b> <small>[<a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/help.html">help</a>]</small>
<p>
<form action="javascript:" style="margin:0px;">
<table border="0" cellspacing="0" cellpadding="0" style="text-align:left">
<tr><td>Scale all mathematics to <input type="text" id="jsMath__scale" value="100" size="3" />%</td></tr>
<tr><td height="5"></td></tr>
<tr><td><input type="radio" name="jsMath__font" value="tex" onclick="jsMath.Controls.NoAuto()" />
<span id="jsMath__texText">Use native TeX fonts</span>
<small>(<a target="_blank" href="http://www.math.union.edu/locate/jsMath/download/jsMath-fonts.html">download</a>)</small>
</td></tr>
<tr><td><input type="radio" name="jsMath__font" value="image" onclick="jsMath.Controls.NoAuto()" />
<span id="jsMath__imageText">Use image fonts
(<input type="checkbox" id="jsMath__scaleImg" value="1" /> scalable)</span></td></tr>
<tr><td><input type="radio" name="jsMath__font" value="symbol" onclick="jsMath.Controls.NoAuto()" />
<span id="jsMath__symbolText">Use images for symbols only</span></td></tr>
<tr><td height="2"></td></tr>
<tr><td><input type="radio" name="jsMath__font" value="unicode" onclick="jsMath.Controls.NoAuto()" />
Use native Unicode fonts</td></tr>
<tr><td height="8"></td></tr>
<tr><td><input type="checkbox" id="jsMath__autofont" value="1" /> Autoselect best font</td></tr>
<tr><td><input type="checkbox" id="jsMath__alpha" value="1" /> <span id="jsMath__alphaText">Use image alpha channels</span></td></tr>
<tr><td><input type="checkbox" id="jsMath__warn" value="1" /> Show font warnings</td></tr>
<tr><td height="8"></td></tr>
<tr><td><input type="checkbox" id="jsMath__progress" value="1" /> Show progress messages</td></tr>
<tr><td><input type="checkbox" id="jsMath__asynch" value="1" /> Force asynchronous processing</td></tr>
<tr><td><input type="checkbox" id="jsMath__blank" value="1" /> Don't show page until complete</td></tr>
<tr><td><input type="checkbox" id="jsMath__button" value="1" /> Show jsMath button</td></tr>
<tr><td height="8"></td></tr>
<tr id="jsMath__tex2mathRow" STYLE="display:none"><td><input type="checkbox" id="jsMath__tex2math" value="1" /> Enable <code>tex2math</code> plug-in</td></tr>
<tr><td height="8"></td></tr>
<tr><td>Save settings for
<select id="jsMath__keep">
<option value="0D">this session only
<option value="1D">1 day
<option value="2D">2 days
<option value="3D">3 days
<option value="1W">1 week
<option value="2W">2 weeks
<option value="1M">1 month
<option value="2M">2 months
<option value="3M">3 months
<option value="6M">6 months
<option value="1Y">1 year
<option value="5Y">5 years
</select>
</td></tr>
<tr><td height="13"></td></tr>
<tr><td align="center">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left">
<input type="button" value="Back" id="jsMath__back" style="width:8em" onclick="jsMath.Controls.SaveOptions(0)" />
</td>
<td align="right">
<input type="button" value="Done" id="jsMath__done" style="width:8em" onclick="jsMath.Controls.SaveOptions(1)" />
</td>
</tr>
</table>
</td></tr>
</table>
</form>
</div>
</div>
</p>
<!------------------------------------------------------------>
<script>
if (!showWarning) {jsMath.Controls.Main()}
</script>
<script>
if (window.jsMath) {
jsMath.Script.endLoad();
jsMath.Message.doClear();
}
</script>
</body>
</html>
Index: loncom/html/adm/jsMath/jsMath-loader.html
+++ loncom/html/adm/jsMath/jsMath-loader.html
<html>
<head>
<!--
| jsMath-loader.html
|
| Part of the jsMath package for mathematics on the web.
|
| This file is used for jsMath components when the browser doesn't
| handle the XmlHttpRequest function, or when they must be obtained
| from a server other than the one server the page that is using jsMath.
|
| ---------------------------------------------------------------------
|
| Copyright 2004-2006 by Davide P. Cervone
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
-->
</head>
<body>
<script>
var showWarning = 0;
while (!window.jsMath && !showWarning) {
try {
window.jsMath = window.parent.jsMath;
if (!window.jsMath) {throw "no jsMath";}
} catch (err) {
showWarning = 1;
//
// MSIE on Mac can't change document.domain, and 'try' won't
// catch the error (Grrr!) so don't even try for it
//
if (document.domain.match(/\..*\./) &&
(navigator.appName != 'Microsoft Internet Explorer' ||
navigator.platform != 'MacPPC' || !navigator.userProfile || !document.all)) {
try {
document.domain = document.domain.replace(/^[^.]*\./,'');
showWarning = 0;
} catch(err) {}
}
}
}
function Warning () {
alert(
"jsMath can't load one of its required components, because jsMath " +
"was not obtained from a server that is in the same domain as the " +
"page that loaded it."
);
}
if (showWarning) {setTimeout("Warning()",1)} else {
debug = window.parent.debug; show = window.parent.show;
jsMath.Script.window = window; url = jsMath.Script.url;
document.write('<script src="'+url+'"><'+'/script>');
}
</script>
<script>
if (window.jsMath) {
if (document.readyState == 'loading') {
// work around bug in OmniWeb 4.5 that would otherwise run this twice.
setTimeout("jsMath.Script.endLoad();",1)
} else {
jsMath.Script.endLoad();
}
}
</script>
</body>
</html>
Index: loncom/html/adm/jsMath/jsMath-old-browsers.js
+++ loncom/html/adm/jsMath/jsMath-old-browsers.js
/*
* jsMath-old-browsers.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file makes changes needed by older versions of some browsers
*
* ---------------------------------------------------------------------
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
jsMath.Script.Start();
jsMath.Add(jsMath.HTML,{
/*
* Use the blank GIF image for spacing and rules
*/
Blank: function (w,h,d,isRule) {
var style = '';
if (isRule) {
if (h*jsMath.em < 1.5) {h = '1px'} else {h = jsMath.HTML.Em(h)}
style = 'border-top:'+h+' solid;'; h = 0;
}
if (d == null) {d = 0}
style += 'width:'+this.Em(w)+'; height:'+this.Em(h+d)+';';
if (d) {style += 'vertical-align:'+this.Em(-d)}
return '<img src="'+jsMath.blank+'" style="'+style+'" />';
}
});
if (jsMath.browser == 'Konqueror') {
jsMath.Package(jsMath.Box,{Remeasured: function() {return this}});
jsMath.Add(jsMath.HTML,{
Spacer: function (w) {
if (w == 0) {return ''};
return '<span style="margin-left:'+this.Em(w-jsMath.Browser.spaceWidth)+'">'
+ ' </span>';
}
});
jsMath.Browser.spaceWidth = this.EmBoxFor(' ').w/5;
}
jsMath.styles['.typeset .spacer'] = '';
jsMath.Script.End();
Index: loncom/html/adm/jsMath/extensions/AMSsymbols.js
+++ loncom/html/adm/jsMath/extensions/AMSsymbols.js
/*
* extensions/AMSsymbol.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file defines the macros needed to access the AMS symbol fonts
* available in msam10 and msbm10. You can activate it by calling
*
* jsMath.Extension.Require('AMSsymbols');
*
* once jsMath.js has been loaded.
*
* Note that you will need to install the msam10 and msbm10 fonts
* that are available from the jsMath extra font page at
*
* http://www.math.union.edu/locate/jsMath/download/extra-fonts/
*
* in order to make this work in image mode. Note that there is no
* unicode fallback mode for these fonts at this time.
*
* ---------------------------------------------------------------------
*
* Copyright 2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
delete jsMath.Parser.prototype.macros['hbar'];
delete jsMath.Parser.prototype.macros['angle'];
delete jsMath.Parser.prototype.macros['rightleftharpoons'];
jsMath.Extension.MathChar("msam10",{
// Miscellaneous symbols
vartriangle: [3,0x4D],
triangledown: [0,0x4F],
square: [0,0x03],
lozenge: [0,0x06],
circledS: [0,0x73],
angle: [0,0x5C],
measuredangle: [0,0x5D],
backprime: [0,0x38],
blacktriangle: [0,0x4E],
blacktriangledown: [0,0x48],
blacksquare: [0,0x04],
blacklozenge: [0,0x07],
bigstar: [0,0x46],
sphericalangle: [0,0x5E],
complement: [0,0x7B],
// Binary operators
dotplus: [2,0x75],
Cap: [2,0x65],
doublecap: [2,0x65],
Cup: [2,0x64],
doublecup: [2,0x64],
barwedge: [2,0x5A],
veebar: [2,0x59],
doublebarwedge: [2,0x5B],
boxminus: [2,0x0C],
boxtimes: [2,0x02],
boxdot: [2,0x00],
boxplus: [2,0x01],
leftthreetimes: [2,0x68],
rightthreetimes: [2,0x69],
curlywedge: [2,0x66],
curlyvee: [2,0x67],
circleddash: [2,0x7F],
circledast: [2,0x7E],
circledcirc: [2,0x7D],
centerdot: [2,0x05],
intercal: [2,0x7C],
// Binary relations
leqq: [3,0x35],
leqslant: [3,0x36],
eqslantless: [3,0x30],
lesssim: [3,0x2E],
lessapprox: [3,0x2F],
lll: [3,0x6E],
llless: [3,0x6E],
lessgtr: [3,0x37],
lesseqgtr: [3,0x51],
lesseqqgtr: [3,0x53],
doteqdot: [3,0x2B],
Doteq: [3,0x2B],
risingdotseq: [3,0x3A],
fallingdotseq: [3,0x3B],
backsim: [3,0x76],
backsimeq: [3,0x77],
subseteqq: [3,0x6A],
Subset: [3,0x62],
sqsubset: [3,0x40],
preccurlyeq: [3,0x34],
curlyeqprec: [3,0x32],
precsim: [3,0x2D],
vartriangleleft: [3,0x43],
trianglelefteq: [3,0x45],
vDash: [3,0x0F],
Vvdash: [3,0x0E],
smallsmile: [3,0x60],
smallfrown: [3,0x61],
bumpeq: [3,0x6C],
Bumpeq: [3,0x6D],
varpropto: [3,0x5F],
blacktriangleleft: [3,0x4A],
therefore: [3,0x29],
geqq: [3,0x3D],
geqslant: [3,0x3E],
eqslantgtr: [3,0x31],
gtrsim: [3,0x26],
gtrapprox: [3,0x27],
ggg: [3,0x6F],
gggtr: [3,0x6F],
gtrless: [3,0x3F],
gtreqless: [3,0x52],
gtreqqless: [3,0x54],
eqcirc: [3,0x50],
circeq: [3,0x24],
triangleq: [3,0x2C],
supseteqq: [3,0x6B],
Supset: [3,0x63],
sqsupset: [3,0x41],
succcurlyeq: [3,0x3C],
curlyeqsucc: [3,0x33],
succsim: [3,0x25],
vartriangleright: [3,0x42],
trianglerighteq: [3,0x44],
Vdash: [3,0x0D],
between: [3,0x47],
pitchfork: [3,0x74],
blacktriangleright: [3,0x49],
because: [3,0x2A],
// Arrows
leftleftarrows: [3,0x12],
leftrightarrows: [3,0x1C],
Lleftarrow: [3,0x57],
twoheadleftarrow: [3,0x11],
leftarrowtail: [3,0x1B],
looparrowleft: [3,0x22],
leftrightharpoons: [3,0x0B],
circlearrowleft: [3,0x09],
Lsh: [3,0x1E],
upuparrows: [3,0x14],
upharpoonleft: [3,0x18],
downharpoonleft: [3,0x19],
multimap: [3,0x28],
leftrightsquigarrow:[3,0x21],
rightrightarrows: [3,0x13],
rightleftarrows: [3,0x1D],
Rrightarrow: [3,0x56],
twoheadrightarrow: [3,0x10],
rightarrowtail: [3,0x1A],
looparrowright: [3,0x23],
rightleftharpoons: [3,0x0A],
circlearrowright: [3,0x08],
Rsh: [3,0x1F],
downdownarrows: [3,0x15],
upharpoonright: [3,0x16],
downharpoonright: [3,0x17],
rightsquigarrow: [3,0x20]
});
jsMath.Extension.MathChar("msbm10",{
// Lowercase Greek letters
digamma: [0,0x7A],
varkappa: [0,0x7B],
// Hebrew letters
beth: [0,0x69],
daleth: [0,0x6B],
gimel: [0,0x6A],
// Miscellaneous symbols
hbar: [0,0x7E],
hslash: [0,0x7D],
nexists: [0,0x40],
mho: [0,0x66],
Finv: [0,0x60],
Game: [0,0x61],
Bbbk: [0,0x7C],
varnothing: [0,0x3F],
eth: [0,0x67],
diagup: [0,0x1E],
diagdown: [0,0x1F],
// Binary operators
smallsetminus: [2,0x72],
divideontimes: [2,0x3E],
ltimes: [2,0x6E],
rtimes: [2,0x6F],
// Binary relations
approxeq: [3,0x75],
lessdot: [3,0x6C],
precapprox: [3,0x77],
gtrdot: [3,0x6D],
thicksim: [3,0x73],
thickapprox: [3,0x74],
succapprox: [3,0x76],
shortmid: [3,0x70],
shortparallel: [3,0x71],
backepsilon: [3,0x7F],
// Negated relations
nless: [3,0x04],
nleq: [3,0x02],
nleqslant: [3,0x0A],
nleqq: [3,0x14],
lneq: [3,0x0C],
lneqq: [3,0x08],
lvertneqq: [3,0x00],
lnsim: [3,0x12],
lnapprox: [3,0x1A],
nprec: [3,0x06],
npreceq: [3,0x0E],
precneqq: [3,0x16],
precnsim: [3,0x10],
precnapprox: [3,0x18],
nsim: [3,0x1C],
nshortmid: [3,0x2E],
nmid: [3,0x2D],
nvdash: [3,0x30],
nVdash: [3,0x31],
ntriangleleft: [3,0x36],
ntrianglelefteq: [3,0x35],
nsubseteq: [3,0x2A],
nsubseteqq: [3,0x22],
subsetneq: [3,0x28],
varsubsetneq: [3,0x20],
subsetneqq: [3,0x24],
varsubsetneqq: [3,0x26],
ngtr: [3,0x05],
ngeq: [3,0x03],
ngeqslant: [3,0x0B],
ngeqq: [3,0x15],
gneq: [3,0x0D],
gneqq: [3,0x09],
gvertneqq: [3,0x01],
gnsim: [3,0x13],
gnapprox: [3,0x1B],
nsucc: [3,0x07],
nsucceq: [3,0x0F],
succneqq: [3,0x17],
succnsim: [3,0x11],
succnapprox: [3,0x19],
ncong: [3,0x1D],
nshortparallel: [3,0x2F],
nparallel: [3,0x2C],
nvDash: [3,0x32],
nVDash: [3,0x33],
ntriangleright: [3,0x37],
ntrianglerighteq: [3,0x34],
nsupseteq: [3,0x2B],
nsupseteqq: [3,0x23],
supsetneq: [3,0x29],
varsupsetneq: [3,0x21],
supsetneqq: [3,0x25],
varsupsetneqq: [3,0x27],
// Arrows
curvearrowleft: [3,0x78],
curvearrowright: [3,0x79],
// Negated arrows
nleftarrow: [3,0x38],
nLeftarrow: [3,0x3A],
nleftrightarrow: [3,0x3D],
nrightarrow: [3,0x39],
nRightarrow: [3,0x3B],
nLeftrightarrow: [3,0x3C]
});
jsMath.Macro('Bbb','{\\msbm #1}',1);
jsMath.Extension.Font('msbm');
jsMath.Extension.Font('msam');
Index: loncom/html/adm/jsMath/extensions/HTML.js
+++ loncom/html/adm/jsMath/extensions/HTML.js
/*
* extensions/HTML.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements a number of HTML-specific extensions to TeX,
* including \color, \style, \class, \unicode, etc. It will be loaded
* automatically when needed, or can be loaded by
*
* jsMath.Extension.Require('HTML');
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Package(jsMath.Parser,{
macros: {
color: 'Color',
href: 'Href',
'class': 'Class',
style: 'Style',
cssId: 'CSSId',
unicode: 'Unicode'
},
/*
* Show the argument in a particular color
*/
Color: function (name) {
var color = this.GetArgument(this.cmd+name); if (this.error) return;
// check that it looks like a color?
this.AddHTML(name,['<span style="color: '+color+'">','</span>']);
},
/*
* Make the argument be a link
*/
Href: function (name) {
var href = this.GetArgument(this.cmd+name); if (this.error) return;
this.AddHTML(name,['<a class="link" href="'+href+'">','</a>']);
},
/*
* Apply a CSS class to the argument
*/
Class: function (name) {
var clss = this.GetArgument(this.cmd+name); if (this.error) return;
this.AddHTML(name,['<span class="'+clss+'">','</span>']);
},
/*
* Apply a CSS style to the argument
*/
Style: function (name) {
var style = this.GetArgument(this.cmd+name); if (this.error) return;
this.AddHTML(name,['<span style="'+style+'">','</span>']);
},
/*
* Add a CSS element ID to the argument
*/
CSSId: function (name) {
var id = this.GetArgument(this.cmd+name); if (this.error) return;
this.AddHTML(name,['<span id="'+id+'">','</span>']);
},
/*
* Insert some raw HTML around the argument (this will not affect
* the spacing or other TeX features)
*/
AddHTML: function (name,params) {
var data = this.mlist.data;
var arg = this.GetArgument(this.cmd+name); if (this.error) return;
arg = jsMath.Parse(arg,data.font,data.size,data.style);
if (arg.error) {this.Error(arg); return}
this.mlist.Add(jsMath.mItem.HTML(params[0]));
for (var i = 0; i < arg.mlist.Length(); i++) {this.mlist.Add(arg.mlist.Get(i))}
this.mlist.Add(jsMath.mItem.HTML(params[1]));
},
/*
* Insert a unicode reference as an Ord atom. Its argument should
* be the unicode code point, e.g. \unicode{8211}, or \unicode{x203F}.
* You can also specify the height and depth in ems, e.g.,
* \unicode{8211,.6,-.3}
*/
Unicode: function (name) {
var arg = this.GetArgument(this.cmd+name); if (this.error) return;
arg = arg.split(','); arg[0] = '&#'+arg[0]+';';
if (!arg[1]) {arg[1] = 'normal'}
this.mlist.Add(jsMath.mItem.TextAtom('ord',arg[0],arg[1],arg[2],arg[3]));
}
});
Index: loncom/html/adm/jsMath/extensions/boldsymbol.js
+++ loncom/html/adm/jsMath/extensions/boldsymbol.js
/*
* extensions/boldsymbol.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements the \boldsymbol macro. You can activate it
* by calling
*
* jsMath.Extension.Macro('boldsymbol');
*
* which will cause the extension to be loaded only when it is
* needed, or you can force it to be loaded via
*
* jsMath.Extension.Require('boldsymbol');
*
* once jsMath.js has been loaded.
*
* Note that you will need to install the cmmib10 and cmbsy10 fonts
* that are available from the jsMath extra font page at
*
* http://www.math.union.edu/locate/jsMath/download/extra-fonts/
*
* to make this work in image mode. Note that there is no unicode
* fallback for these fonts at the moment.
*
* ---------------------------------------------------------------------
*
* Copyright 2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Package(jsMath.Parser,{
macros: {boldsymbol: 'BoldSymbol'},
/*
* Implement \boldsymbol{...}
*/
BoldSymbol: function (name) {
var fam = jsMath.TeX.fam
var oldfam = [fam[0],fam[1],fam[2]];
fam[0] = "cmbx10"; fam[1] = "cmmib10"; fam[2] = "cmbsy10";
var box = this.ProcessArg(this.cmd+name);
fam[0] = oldfam[0]; fam[1] = oldfam[1]; fam[2] = oldfam[2];
if (this.error) return;
this.mlist.Add(jsMath.mItem.Atom('ord',box));
}
});
Index: loncom/html/adm/jsMath/extensions/double-click.js
+++ loncom/html/adm/jsMath/extensions/double-click.js
/*
* extensions/double-click.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file allows users to double click on typeset mathematics
* to view the TeX source for the given expression. It will be loaded
* automatically when needed, or can be loaded by
*
* jsMath.Extension.Require('double-click');
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Add(jsMath.Click,{
dragging: 0,
/*
* Create the hidden DIV used for the tex source window
*/
Init: function () {
this.source = jsMath.Setup.DIV("float",{display:'none'});
this.source.innerHTML =
'<div class="drag"><div class="close"></div></div>'
+ '<div class="source"><span></span></div>';
this.drag = this.source.firstChild;
this.tex = this.drag.nextSibling.firstChild;
this.drag.firstChild.onclick = jsMath.Click.CloseSource;
this.drag.onmousedown = jsMath.Click.StartDragging;
this.drag.ondragstart = jsMath.Click.False;
this.drag.onselectstart = jsMath.Click.False;
this.source.onclick = jsMath.Click.CheckClose;
},
False: function () {return false},
/*
* Handle a double-click on an equation
*/
DblClick: function (data) {
var event = data[0]; var TeX = data[1];
var event = jsMath.Click.Event(event);
var source = jsMath.Click.source
var tex = jsMath.Click.tex;
source.style.visibility = 'hidden';
source.style.display = ''; source.style.width = '';
source.style.left = ''; source.style.top = '';
tex.innerHTML = '';
TeX = TeX.replace(/^\s+|\s+$/g,'');
TeX = TeX.replace(/&/g,'&');
TeX = TeX.replace(/</g,'<');
TeX = TeX.replace(/>/g,'>');
TeX = TeX.replace(/\n/g,'<br/>');
tex.innerHTML = TeX;
var h = source.offsetHeight; var w;
if (jsMath.Browser.msieDivWidthBug) {
tex.className = 'source'; // Work around MSIE bug where
w = tex.offsetWidth + 5; // DIV's don't collapse to
tex.className = ''; // their natural widths
} else {
w = source.offsetWidth;
}
w = Math.max(50,Math.min(w,.8*event.W,event.W-40));
var x = Math.floor(event.x-w/2); var y = Math.floor(event.y-h/2);
x = event.X + Math.max(Math.min(x,event.W-w-20),20);
y = event.Y + Math.max(Math.min(y,event.H-h-5),5);
source.style.left = x+'px'; source.style.top = y+'px';
source.style.width = w+'px';
source.style.visibility = '';
jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
jsMath.Click.w = w; jsMath.Click.h = source.offsetHeight;
jsMath.Click.DeselectText(x,y);
return false;
},
/*
* Get window width, height, and offsets plus
* position of pointer relative to the window
*/
Event: function (event) {
var W = jsMath.window.innerWidth || jsMath.document.body.clientWidth;
var H = jsMath.window.innerHeight || jsMath.document.body.clientHeight;
var X = jsMath.window.pageXOffset; var Y = jsMath.window.pageYOffset;
if (X == null) {
X = jsMath.document.body.clientLeft;
Y = jsMath.document.body.clientTop;
}
var x = event.pageX; var y = event.pageY;
if (x == null) {
x = event.clientX; y = event.clientY;
if (jsMath.browser == 'MSIE' && jsMath.document.compatMode == 'CSS1Compat') {
X = jsMath.document.documentElement.scrollLeft;
Y = jsMath.document.documentElement.scrollTop;
W = jsMath.document.documentElement.clientWidth;
H = jsMath.document.documentElement.clientHeight;
} else {
X = jsMath.document.body.scrollLeft;
Y = jsMath.document.body.scrollTop;
}
} else {x -= X; y -= Y}
return {x: x, y: y, W: W, H: H, X: X, Y: Y};
},
/*
* Unselect whatever text is selected (since double-clicking
* usually selects something)
*/
DeselectText: function (x,y) {
if (jsMath.window.getSelection && jsMath.window.getSelection().removeAllRanges)
{jsMath.window.getSelection().removeAllRanges()}
else if (jsMath.document.getSelection && jsMath.document.getSelection().removeAllRanges)
{jsMath.document.getSelection().removeAllRanges()}
else if (jsMath.document.selection && jsMath.document.selection.empty)
{jsMath.document.selection.empty()}
else {
/* Hack to deselect the text in Opera and Safari */
if (jsMath.browser == 'MSIE') return; // don't try it if MISE on Mac
jsMath.hiddenTop.innerHTML =
'<textarea style="visibility:hidden" rows="1" cols="1">a</textarea>';
jsMath.hiddenTop.firstChild.style.position = 'absolute';
jsMath.hiddenTop.firstChild.style.left = x+'px';
jsMath.hiddenTop.firstChild.style.top = y+'px';
setTimeout(jsMath.Click.SelectHidden,1);
}
},
SelectHidden: function () {
jsMath.hiddenTop.firstChild.focus();
jsMath.hiddenTop.firstChild.select();
jsMath.hiddenTop.innerHTML = '';
},
/*
* Close the TeX source window
*/
CloseSource: function () {
jsMath.Click.tex.innerHTML = '';
jsMath.Click.source.style.display = 'none';
jsMath.Click.source.style.visibility = 'hidden';
jsMath.Click.StopDragging();
return false;
},
CheckClose: function (event) {
if (!event) {event = jsMath.window.event}
if (event.altKey) {jsMath.Click.CloseSource(); return false}
},
/*
* Set up for dragging the source panel
*/
StartDragging: function (event) {
if (!event) {event = jsMath.window.event}
if (jsMath.Click.dragging) {jsMath.Click.StopDragging(event)}
var event = jsMath.Click.Event(event);
jsMath.Click.dragging = 1;
jsMath.Click.x = event.x + 2*event.X - jsMath.Click.left;
jsMath.Click.y = event.y + 2*event.Y - jsMath.Click.top;
jsMath.Click.oldonmousemove = jsMath.document.body.onmousemove;
jsMath.Click.oldonmouseup = jsMath.document.body.onmouseup;
jsMath.document.body.onmousemove = jsMath.Click.DragSource;
jsMath.document.body.onmouseup = jsMath.Click.StopDragging;
return false;
},
/*
* Stop dragging the source window
*/
StopDragging: function (event) {
if (jsMath.Click.dragging) {
jsMath.document.body.onmousemove = jsMath.Click.oldonmousemove;
jsMath.document.body.onmouseup = jsMath.Click.oldonmouseup;
jsMath.Click.oldonmousemove = null;
jsMath.Click.oldonmouseup = null;
jsMath.Click.dragging = 0;
}
return false;
},
/*
* Move the source window (but stay within the browser window)
*/
DragSource: function (event) {
if (!event) {event = jsMath.window.event}
if (jsMath.Browser.buttonCheck && !event.button) {return jsMath.Click.StopDragging(event)}
event = jsMath.Click.Event(event);
var x = event.x + event.X - jsMath.Click.x;
var y = event.y + event.Y - jsMath.Click.y;
x = Math.max(event.X,Math.min(event.W+event.X-jsMath.Click.w,x));
y = Math.max(event.Y,Math.min(event.H+event.Y-jsMath.Click.h,y));
jsMath.Click.source.style.left = x + 'px';
jsMath.Click.source.style.top = y + 'px';
jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
return false;
}
});
jsMath.Click.Init();
Index: loncom/html/adm/jsMath/extensions/fbox.js
+++ loncom/html/adm/jsMath/extensions/fbox.js
/*
* extensions/fbox.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements the \fbox macro. It will be loaded
* automatically when needed, or can be loaded by
*
* jsMath.Extension.Require('fbox');
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Add(jsMath.HTML,{
/*
* Create a colored frame
*/
Frame: function (x,y,w,h,c,pos) {
h -= 2/jsMath.em; // use 2 pixels to compensate for border size
w -= 2/jsMath.em;
y -= 1/jsMath.em;
if (!c) {c = 'black'};
if (pos) {pos = 'absolute;'} else
{pos = 'relative; margin-right: '+this.Em(-(w+2/jsMath.em))+'; '}
return '<img src="'+jsMath.blank+'" style="position:' + pos
+ 'vertical-align: '+this.Em(y)+'; left: '+this.Em(x)+'; '
+ 'width:' +this.Em(w*jsMath.Browser.imgScale)+'; '
+ 'height:'+this.Em(h*jsMath.Browser.imgScale)+'; '
+ 'border: 1px solid '+c+';" />';
}
});
jsMath.Package(jsMath.Parser,{
macros: {fbox: 'FBox'},
/*
* Implement \fbox{...}
*/
FBox: function (name) {
var text = this.GetArgument(this.cmd+name); if (this.error) return;
var arg = jsMath.Box.InternalMath(text,this.mlist.data.size);
var f = 0.25 * jsMath.sizes[this.mlist.data.size]/100;
var box = jsMath.Box.Set(arg,this.mlist.data.style,this.mlist.data.size,1).Remeasured();
var frame = jsMath.HTML.Frame(-f,-box.d-f,box.w+2*f,box.h+box.d+2*f);
box.html = frame + box.html + jsMath.HTML.Spacer(f);
box.h += f; box.d += f; box.w +=2*f; box.x += f;
box.bh = Math.max(box.bh,box.h); box.bd = Math.max(box.bd,box.d);
this.mlist.Add(jsMath.mItem.Atom('ord',box));
}
});
Index: loncom/html/adm/jsMath/extensions/leaders.js
+++ loncom/html/adm/jsMath/extensions/leaders.js
/*
* extensions/leaders.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements the \overbrace, \underbrace, \overrightarrow
* and \overleftarrow macros. It will be loaded automatically when needed,
* or can be loaded by
*
* jsMath.Extension.Require('leaders');
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Add(jsMath.Box,{
/*
* Create a horizontally stretchable "delimiter" (like over- and
* underbraces).
*/
//### Add size?
Leaders: function (W,leader) {
var h; var d; var w; var html; var font;
if (leader.lmid) {// braces
font = jsMath.TeX.fam[leader.left[0]];
var left = this.GetCharCode(leader.left);
var right = this.GetCharCode(leader.right);
var lmid = this.GetCharCode(leader.lmid);
var rmid = this.GetCharCode(leader.rmid);
w = (W - left.w - right.w - lmid.w - rmid.w)/2 - .1; h = .4; d = .3;
if (w < 0) {w = 0}
html = this.AddClass(left.tclass,left.c,left.font)
+ jsMath.HTML.Rule(w,left.h)
+ this.AddClass(lmid.tclass,lmid.c+rmid.c,lmid.font)
+ jsMath.HTML.Rule(w,right.h)
+ this.AddClass(right.tclass,right.c,right.font);
} else { //arrows
font = jsMath.TeX.fam[leader.rep[0]];
var left = this.GetCharCode(leader.left? leader.left: leader.rep);
var rep = this.GetCharCode(leader.rep);
var right = this.GetCharCode(leader.right? leader.right: leader.rep);
var n = Math.ceil((W - left.w - right.w + .4)/(rep.w - .3));
w = (W - left.w - right.w + .4 - n*(rep.w - .3));
if (leader.left) {h = left.h; d = left.d} else {h = right.h; d = right.d}
if (d == null) {d = 0}; if (h == null) {h = 0}
var html = this.AddClass(left.tclass,left.c,left.font); var m = Math.floor(n/2);
var ext = jsMath.HTML.Place(rep.c,-.3,0);
var ehtml = ''; for (var i = 0; i < m; i++) {ehtml += ext};
html += this.AddClass(rep.tclass,ehtml,rep.font) + jsMath.HTML.Spacer(w);
ehtml = ''; for (var i = m; i < n; i++) {ehtml += ext};
html += this.AddClass(rep.tclass,ehtml,rep.font);
if (jsMath.Browser.msieFontBug) {html += '<span style="display: none">x</span>'}
html += jsMath.HTML.Place(this.AddClass(right.tclass,right.c,right.font),-.4,0);
}
w = jsMath.EmBoxFor(html).w;
if (w != W) {
w = jsMath.HTML.Spacer((W-w)/2);
html = w + html + w;
}
var box = new jsMath.Box('html',html,W,h,d);
box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
return box;
}
});
jsMath.Package(jsMath.Parser,{
macros: {
overbrace: ['HandleLeaders','downbrace',1],
underbrace: ['HandleLeaders','upbrace',1,1],
overrightarrow: ['HandleLeaders','rightarrow'],
overleftarrow: ['HandleLeaders','leftarrow']
},
/*
* The horizontally stretchable delimiters
*/
leaders: {
downbrace: {left: [3,0x7A], lmid: [3,0x7D], rmid: [3,0x7C], right: [3,0x7B]},
upbrace: {left: [3,0x7C], lmid: [3,0x7B], rmid: [3,0x7A], right: [3,0x7D]},
leftarrow: {left: [2,0x20], rep: [2,0x00]},
rightarrow: {rep: [2,0x00], right: [2,0x21]}
},
/*
* Implements \overbrace, \underbrace, etc.
*/
HandleLeaders: function (name,data) {
var box = this.ProcessArg(this.cmd+name); if (this.error) return;
box = jsMath.Box.Set(box,'D',this.mlist.data.size).Remeasured();
var leader = jsMath.Box.Leaders(box.w,this.leaders[data[0]]);
if (data[2]) {leader.y = -leader.h - box.d}
else {leader.y = box.h + Math.max(0,leader.d)}
box.x = -(leader.w + box.w)/2;
var space = jsMath.Box.Space((leader.w-box.w)/2);
box = jsMath.mItem.Atom(data[1]? 'op': 'inner',
jsMath.Box.SetList([leader,box,space],'T',this.mlist.data.size));
box.limits = (data[1]? 1: 0);
this.mlist.Add(box);
}
});
Index: loncom/html/adm/jsMath/extensions/mathchoice.js
+++ loncom/html/adm/jsMath/extensions/mathchoice.js
/*
* extensions/mathchoice.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements the 4-way math choice. It will be loaded
* automatically when needed, or can be loaded by
*
* jsMath.Extension.Require('mathchoice');
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Add(jsMath.mList.prototype.Atomize,{
/*
* Handle a 4-way choice atom. (Rule 4)
*/
choice: function (style,mitem,i,mlist) {
if (style.charAt(style.length-1) == "'") {style = style.slice(0,style.length-1)}
var nlist = []; var M = mitem[style]; if (!M) {M = {type: 'mlist', mlist: []}}
if (M.type == 'mlist') {
M = M.mlist.mlist;
for (var k = 0; k < i; k++) {nlist[k] = mlist[k]}
for (k = 0; k < M.length; k++) {nlist[i+k] = M[k]}
for (k = i+1; k < mlist.length; k++) {nlist[nlist.length] = mlist[k]}
return nlist;
} else {
mlist[i] = jsMath.mItem.Atom('ord',M);
return mlist;
}
}
});
jsMath.Package(jsMath.Parser,{
macros: {mathchoice: 'MathChoice'},
/*
* Implements \mathchoice{}{}{}{}
*/
MathChoice: function (name) {
var D = this.ProcessArg(this.cmd+name); if (this.error) return;
var T = this.ProcessArg(this.cmd+name); if (this.error) return;
var S = this.ProcessArg(this.cmd+name); if (this.error) return;
var SS = this.ProcessArg(this.cmd+name); if (this.error) return;
var box = new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS});
this.mlist.Add(new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS}));
}
});
Index: loncom/html/adm/jsMath/extensions/mimeTeX.js
+++ loncom/html/adm/jsMath/extensions/mimeTeX.js
/*
* extensions/mimeTeX.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file loads the mimeTeX plugin, and can be called either
* by
*
* jsMath.Extension.Require('mimeTeX');
*
* or by using
*
* \require{mimeTeX}
*
* within a typeset equation.
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Script.Start();
jsMath.Setup.Script('plugins/mimeTeX.js');
jsMath.Script.End();
Index: loncom/html/adm/jsMath/extensions/moreArrows.js
+++ loncom/html/adm/jsMath/extensions/moreArrows.js
/*
* extensions/moreArrows.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements additional arrow macros with under- and
* overset labels. It can be loaded by
*
* jsMath.Extension.Require('moreArrows');
*
* or using \require{moreArrows} within a math formula.
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Script.Start();
jsMath.Extension.Require('leaders');
jsMath.Package(jsMath.Parser,{
macros: {
xrightarrow: ['HandleArrows','rightarrow'],
xleftarrow: ['HandleArrows','leftarrow'],
xuprightharpoon: ['HandleArrows','uprightharpoon'],
xupleftharpoon: ['HandleArrows','upleftharpoon'],
xdownrightharpoon: ['HandleArrows','downrightharpoon'],
xdownleftharpoon: ['HandleArrows','downleftharpoon']
},
leaders: {
upleftharpoon: {left: [1,0x28], rep: [2,0x00]},
uprightharpoon: {rep: [2,0x00], right: [1,0x2A]},
downleftharpoon: {left: [1,0x29], rep: [2,0x00]},
downrightharpoon: {rep: [2,0x00], right: [1,0x2B]}
},
HandleArrows: function (name,data) {
var bot = this.GetBrackets(this.cmd+name); if (this.error) return;
var top = this.ProcessArg(this.cmd+name); if (this.error) return;
var box = jsMath.Box.Set(top,'S',this.mlist.data.size).Remeasured();
var w = box.w;
if (bot) {
bot = this.Process(bot); if (this.error) return;
var box = jsMath.Box.Set(bot,'S',this.mlist.data.size).Remeasured();
w = Math.max(w,box.w);
}
var leader = jsMath.Box.Leaders(w+.75,this.leaders[data[0]]);
box = jsMath.mItem.Atom('op',jsMath.Box.SetList([leader],'T',this.mlist.data.size));
box.limits = 1; box.sup = top; box.sub = bot;
this.mlist.Add(box);
}
});
jsMath.Script.End();
Index: loncom/html/adm/jsMath/extensions/newcommand.js
+++ loncom/html/adm/jsMath/extensions/newcommand.js
/*
* extensions/newcommand.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements the \newcommand and \def macros. It will be
* loaded automatically when needed, or can be loaded by
*
* jsMath.Extension.Require('newcommand');
*
* ---------------------------------------------------------------------
*
* Copyright 2005-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Package(jsMath.Parser,{
macros: {
newcommand: 'NewCommand',
def: 'MacroDef'
},
/*
* Implement \newcommand[n]{\name}{...}
*/
NewCommand: function (name) {
var n = this.trimSpaces(this.GetBrackets(this.cmd+name)); if (this.error) return;
var cs = this.trimSpaces(this.GetArgument(this.cmd+name)); if (this.error) return;
var def = this.GetArgument(this.cmd+name); if (this.error) return;
if (n == '') {n = null}
if (cs.charAt(0) == this.cmd) {cs = cs.substr(1)}
if (!cs.match(/^(.|[a-z]+)$/)) {this.Error("Illegal control sequence name for "+this.cmd+name); return}
if (n != null && !n.match(/^[0-9]+$/)) {this.Error("Illegal number of parameters specified in "+this.cmd+name); return}
jsMath.Parser.prototype.macros[cs] = ['Macro',def,n];
},
/*
* Implement \def command
*/
MacroDef: function (name) {
var cs = this.GetCSname(this.cmd+name); if (this.error) return;
var params = this.GetTemplate(this.cmd+name); if (this.error) return;
var def = this.GetArgument(this.cmd+name); if (this.error) return;
if (typeof(params) == 'number') {
jsMath.Parser.prototype.macros[cs] = ['Macro',def,params];
} else {
jsMath.Parser.prototype.macros[cs] = ['MacroWithTemplate',def,params[0],params[1]];
}
},
/*
* Get a CS name or give an error
*/
GetCSname: function (cmd) {
var c = this.GetNext();
if (c != this.cmd) {this.Error(cmd+" must be followed by a control sequence"); return null}
var cs = this.trimSpaces(this.GetArgument(cmd)); if (this.error) {return null};
return cs.substr(1);
},
/*
* Get a \def parameter template
*/
GetTemplate: function (cmd) {
var c; var params = []; var n = 0;
c = this.GetNext(); var i = this.i;
while (this.i < this.string.length) {
c = this.GetNext();
if (c == '#') {
if (i != this.i) {params[n] = this.string.substr(i,this.i-i)}
c = this.string.charAt(++this.i);
if (!c.match(/[1-9]/)) {this.Error("Illegal use of # in "+cmd); return null}
if (1*c != ++n) {this.Error("Parameters must be numbered sequentially"); return null}
i = this.i+1;
} else if (c == '{') {
if (i != this.i) {params[n] = this.string.substr(i,this.i-i)}
if (params.length > 0) {return [n,params]} else {return n}
}
this.i++;
}
this.Error("Missing replacement string for definition of "+cmd);
return null;
},
/*
* Process a macro with a parameter template
*/
MacroWithTemplate: function (name,data) {
var text = data[0];
var n = data[1]; var params = data[2];
if (n) {
var args = []; var c = this.GetNext();
if (params[0] && !this.MatchParam(params[0]))
{this.Error("Use of "+this.cmd+name+" doesn't match its definition"); return}
for (var i = 0; i < n; i++) {
args[args.length] = this.GetParameter(this.cmd+name,params[i+1]);
if (this.error) return;
}
text = this.SubstituteArgs(args,text);
}
this.string = this.AddArgs(text,this.string.slice(this.i));
this.i = 0;
},
/*
* Find a single parameter delimited by a trailing template
*/
GetParameter: function (name,param) {
if (param == null) {return this.GetArgument(name)}
var i = this.i; var j = 0; var hasBraces = 0;
while (this.i < this.string.length) {
if (this.string.charAt(this.i) == '{') {
if (this.i == i) {hasBraces = 1}
this.GetArgument(name); j = this.i - i;
} else if (this.MatchParam(param)) {
if (hasBraces) {i++; j -= 2}
return this.string.substr(i,j);
} else {
this.i++; j++; hasBraces = 0;
}
}
this.Error("Runaway argument for "+name+"?");
return null;
},
/*
* Check if a template is at the current location.
* (The match must be exact, with no spacing differences. TeX is
* a little more forgiving about spaces after macro names)
*/
MatchParam: function (param) {
if (this.string.substr(this.i,param.length) != param) {return 0}
this.i += param.length;
return 1;
}
});
Index: loncom/html/adm/jsMath/extensions/underset-overset.js
+++ loncom/html/adm/jsMath/extensions/underset-overset.js
/*
* extensions/underset-overset.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file implements \underset and \overset macros. It will be loaded
* automatically when needed, or can be loaded by
*
* jsMath.Extension.Require('underset-overset');
*
* ---------------------------------------------------------------------
*
* Copyright 200-20065 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************/
jsMath.Package(jsMath.Parser,{
macros: {
overset: 'Overset',
underset: 'Underset'
},
Overset: function (name) {
var top = this.ProcessArg(this.cmd+name); if (this.error) return;
var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
var op = jsMath.mItem.Atom('op',bot);
op.limits = 1; op.sup = top;
this.mlist.Add(op);
},
Underset: function (name) {
var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
var top = this.ProcessArg(this.cmd+name); if (this.error) return;
var op = jsMath.mItem.Atom('op',top);
op.limits = 1; op.sub = bot;
this.mlist.Add(op);
}
});
Index: loncom/html/adm/jsMath/uncompressed/def.js
+++ loncom/html/adm/jsMath/uncompressed/def.js
jsMath.Img.AddFont(50,{
cmr10: [
[5,5,0], [6,6,0], [6,6,1], [5,6,0], [5,5,0], [6,5,0], [5,5,0], [6,5,0],
[5,5,0], [6,5,0], [5,5,0], [5,5,0], [4,5,0], [4,5,0], [6,5,0], [6,5,0],
[2,4,0], [3,6,2], [3,2,-3], [3,2,-3], [3,2,-3], [3,2,-3], [4,2,-3], [4,3,-3],
[3,3,2], [4,6,1], [5,5,1], [6,5,1], [4,5,1], [7,5,0], [7,6,1], [6,7,1],
[2,2,-1], [2,6,0], [3,3,-2], [6,7,2], [4,7,1], [6,7,1], [6,7,1], [2,3,-2],
[3,8,2], [3,8,2], [4,4,-2], [6,6,1], [2,3,2], [2,1,-1], [2,1,0], [4,8,2],
[4,6,1], [3,5,0], [4,5,0], [4,6,1], [4,5,0], [4,6,1], [4,6,1], [4,6,1],
[4,6,1], [4,6,1], [2,4,0], [2,6,2], [2,6,2], [6,3,0], [3,6,2], [3,5,0],
[6,6,1], [6,6,0], [5,5,0], [5,6,1], [5,5,0], [5,5,0], [5,5,0], [6,6,1],
[6,5,0], [3,5,0], [4,6,1], [6,5,0], [5,5,0], [7,5,0], [6,5,0], [6,6,1],
[5,5,0], [6,7,2], [6,6,1], [4,6,1], [5,5,0], [6,6,1], [6,6,1], [8,6,1],
[6,5,0], [6,5,0], [4,5,0], [2,8,2], [4,3,-2], [2,8,2], [3,2,-3], [2,2,-3],
[2,3,-2], [4,5,1], [4,6,1], [3,5,1], [4,6,1], [3,5,1], [3,5,0], [4,6,2],
[4,5,0], [2,5,0], [3,7,2], [4,5,0], [2,5,0], [6,4,0], [4,4,0], [4,5,1],
[4,6,2], [4,6,2], [3,4,0], [3,5,1], [3,6,1], [4,5,1], [4,5,1], [5,5,1],
[4,4,0], [4,6,2], [3,4,0], [4,1,-1], [7,1,-1], [3,2,-3], [3,1,-4], [3,2,-3]
],
cmmi10: [
[6,5,0], [6,6,0], [6,6,1], [5,6,0], [6,5,0], [7,5,0], [6,5,0], [5,5,0],
[5,5,0], [5,5,0], [6,5,0], [5,5,1], [5,7,2], [4,6,2], [4,6,1], [3,5,1],
[4,7,2], [4,6,2], [4,6,1], [3,5,1], [4,5,1], [4,6,1], [4,6,2], [4,4,0],
[4,7,2], [4,5,1], [4,6,2], [4,5,1], [4,5,1], [4,5,1], [5,7,2], [5,6,2],
[5,7,2], [5,5,1], [3,5,1], [4,6,1], [6,5,1], [4,6,2], [3,5,1], [5,6,2],
[7,3,-1], [7,3,1], [7,3,-1], [7,3,1], [2,3,-1], [2,3,-1], [4,5,1], [4,5,1],
[4,5,1], [3,4,0], [4,4,0], [4,6,2], [4,6,2], [4,6,2], [4,6,1], [4,6,2],
[4,6,1], [4,6,2], [2,1,0], [2,3,2], [5,5,1], [4,8,2], [5,5,1], [4,4,0],
[4,7,1], [6,6,0], [6,5,0], [6,6,1], [6,5,0], [6,5,0], [6,5,0], [6,6,1],
[7,5,0], [4,5,0], [5,6,1], [7,5,0], [5,5,0], [8,5,0], [7,5,0], [6,6,1],
[6,5,0], [6,7,2], [6,6,1], [5,6,1], [5,5,0], [6,6,1], [6,6,1], [8,6,1],
[6,5,0], [6,5,0], [6,5,0], [3,7,1], [3,8,2], [3,8,2], [7,3,0], [7,3,0],
[3,6,1], [4,5,1], [3,6,1], [4,5,1], [4,6,1], [4,5,1], [4,7,2], [4,6,2],
[4,6,1], [3,6,1], [4,7,2], [4,6,1], [2,6,1], [6,5,1], [4,5,1], [4,5,1],
[5,6,2], [4,6,2], [4,5,1], [3,5,1], [3,6,1], [4,5,1], [4,5,1], [5,5,1],
[4,5,1], [4,6,2], [4,5,1], [3,5,1], [4,6,2], [5,6,2], [5,2,-3], [5,2,-3]
],
cmsy10: [
[5,1,-1], [2,2,-1], [5,4,0], [4,4,0], [6,5,1], [4,4,0], [6,5,0], [6,6,2],
[6,6,1], [6,6,1], [6,6,1], [6,6,1], [6,6,1], [7,8,2], [4,4,0], [4,4,0],
[6,4,0], [6,4,0], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1],
[6,3,0], [6,4,0], [5,5,1], [5,5,1], [7,5,1], [7,5,1], [5,5,1], [5,5,1],
[7,3,0], [7,3,0], [3,7,2], [3,7,2], [7,3,0], [7,7,2], [7,7,2], [6,4,0],
[7,5,1], [7,5,1], [5,7,2], [5,7,2], [7,5,1], [7,7,2], [7,7,2], [6,5,1],
[2,4,0], [7,5,1], [5,5,1], [5,5,1], [6,6,0], [6,6,2], [5,8,2], [1,4,0],
[4,6,1], [4,5,0], [5,3,0], [4,7,1], [5,7,1], [5,6,1], [6,5,0], [6,5,0],
[4,5,0], [6,7,1], [5,6,1], [4,6,1], [6,5,0], [4,6,1], [6,6,1], [5,6,1],
[6,6,1], [6,5,0], [6,6,1], [6,6,1], [5,6,1], [8,6,1], [8,7,1], [6,6,1],
[6,6,1], [6,6,1], [6,6,1], [5,6,1], [6,6,0], [6,6,1], [5,6,1], [8,6,1],
[6,5,0], [6,6,1], [6,5,0], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1],
[4,5,0], [4,5,0], [3,8,2], [2,8,2], [3,8,2], [2,8,2], [3,8,2], [3,8,2],
[3,8,2], [2,8,2], [2,8,2], [3,8,2], [3,8,2], [5,8,2], [4,8,2], [2,6,1],
[6,8,7], [5,5,0], [6,6,1], [4,8,2], [5,5,0], [5,5,0], [5,6,1], [5,6,1],
[3,7,2], [3,7,2], [3,7,2], [5,7,2], [6,7,1], [6,8,2], [6,7,1], [6,7,1]
],
cmex10: [
[3,10,9], [3,10,9], [3,10,9], [2,10,9], [4,10,9], [2,10,9], [4,10,9], [2,10,9],
[4,10,9], [4,10,9], [3,10,9], [3,10,9], [2,6,5], [3,6,5], [4,10,9], [4,10,9],
[4,14,13], [3,14,13], [5,18,17], [4,18,17], [4,18,17], [2,18,17], [4,18,17], [3,18,17],
[4,18,17], [3,18,17], [5,18,17], [5,18,17], [5,18,17], [5,18,17], [7,18,17], [7,18,17],
[6,22,21], [4,22,21], [4,22,21], [3,22,21], [5,22,21], [3,22,21], [5,22,21], [3,22,21],
[5,22,21], [5,22,21], [5,22,21], [5,22,21], [9,22,21], [9,22,21], [6,14,13], [6,14,13],
[6,14,13], [5,14,13], [5,14,13], [3,14,13], [5,14,13], [3,14,13], [3,6,5], [3,6,5],
[6,8,7], [4,8,7], [6,8,7], [4,8,7], [4,14,13], [6,14,13], [4,4,3], [3,6,5],
[6,14,13], [5,14,13], [3,6,5], [5,6,5], [4,14,13], [4,14,13], [6,8,7], [8,11,10],
[5,9,8], [7,17,16], [8,8,7], [11,11,10], [8,8,7], [11,11,10], [8,8,7], [11,11,10],
[7,8,7], [7,8,7], [5,9,8], [6,8,7], [6,8,7], [6,8,7], [6,8,7], [6,8,7],
[10,11,10], [9,11,10], [7,17,16], [8,11,10], [8,11,10], [8,11,10], [8,11,10], [8,11,10],
[7,8,7], [9,11,10], [5,3,-3], [9,2,-4], [12,2,-4], [4,2,-4], [7,2,-4], [11,2,-4],
[4,14,13], [2,14,13], [4,14,13], [3,14,13], [4,14,13], [3,14,13], [4,14,13], [4,14,13],
[8,10,9], [8,14,13], [8,18,17], [8,22,21], [6,14,13], [6,6,5], [8,6,5], [4,6,5],
[4,6,5], [4,6,5], [5,3,2], [5,3,2], [5,3,0], [5,3,0], [6,6,5], [6,6,5]
],
cmbx10: [
[5,5,0], [7,5,0], [6,6,1], [6,5,0], [6,5,0], [7,5,0], [6,5,0], [6,5,0],
[6,5,0], [6,5,0], [6,5,0], [6,5,0], [5,5,0], [5,5,0], [7,5,0], [7,5,0],
[2,4,0], [3,6,2], [3,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3],
[4,3,2], [4,6,1], [6,5,1], [7,5,1], [4,5,1], [8,5,0], [8,6,1], [6,7,1],
[3,2,-1], [2,5,0], [4,3,-2], [7,7,2], [4,7,1], [7,7,1], [6,6,1], [2,3,-2],
[3,8,2], [3,8,2], [4,4,-2], [6,6,1], [2,4,2], [3,1,-1], [2,2,0], [4,8,2],
[4,6,1], [4,5,0], [4,5,0], [4,6,1], [4,5,0], [4,6,1], [4,6,1], [4,6,1],
[4,6,1], [4,6,1], [2,4,0], [2,6,2], [2,6,2], [6,3,0], [4,6,2], [4,5,0],
[6,6,1], [6,5,0], [6,5,0], [6,6,1], [6,5,0], [6,5,0], [5,5,0], [6,6,1],
[7,5,0], [3,5,0], [4,6,1], [6,5,0], [5,5,0], [8,5,0], [7,5,0], [6,6,1],
[6,5,0], [6,7,2], [6,6,1], [5,6,1], [6,5,0], [6,6,1], [6,6,1], [9,6,1],
[6,5,0], [6,5,0], [5,5,0], [3,8,2], [4,3,-2], [2,8,2], [4,2,-3], [2,2,-3],
[2,3,-2], [4,5,1], [5,6,1], [4,5,1], [5,6,1], [4,5,1], [4,5,0], [4,6,2],
[5,5,0], [2,5,0], [3,7,2], [5,5,0], [3,5,0], [7,4,0], [5,4,0], [4,5,1],
[5,6,2], [5,6,2], [4,4,0], [3,5,1], [3,6,1], [5,5,1], [5,5,1], [6,5,1],
[5,4,0], [5,6,2], [4,4,0], [5,2,-1], [9,2,-1], [4,2,-3], [4,1,-4], [4,2,-3]
],
cmti10: [
[5,5,0], [6,6,0], [6,6,1], [5,6,0], [6,5,0], [6,5,0], [6,5,0], [6,5,0],
[6,5,0], [6,5,0], [6,5,0], [7,7,2], [6,7,2], [6,7,2], [8,7,2], [8,7,2],
[3,5,1], [4,6,2], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [5,3,-3],
[3,3,2], [6,7,2], [6,5,1], [6,5,1], [4,5,1], [7,5,0], [8,6,1], [6,7,1],
[3,2,-1], [3,6,0], [4,3,-2], [6,7,2], [5,6,1], [6,7,1], [6,7,1], [3,3,-2],
[4,8,2], [3,8,2], [5,4,-2], [6,5,1], [2,3,2], [3,1,-1], [2,1,0], [5,8,2],
[4,6,1], [4,5,0], [4,6,1], [4,6,1], [4,7,2], [4,6,1], [4,6,1], [5,6,1],
[4,6,1], [4,6,1], [3,4,0], [3,6,2], [3,6,2], [6,3,0], [4,6,2], [4,6,0],
[6,6,1], [5,6,0], [6,5,0], [6,6,1], [6,5,0], [6,5,0], [6,5,0], [6,6,1],
[6,5,0], [4,5,0], [5,6,1], [7,5,0], [5,5,0], [8,5,0], [6,5,0], [6,6,1],
[6,5,0], [6,7,2], [6,6,1], [5,6,1], [6,5,0], [6,6,1], [7,6,1], [8,6,1],
[6,5,0], [7,5,0], [5,5,0], [4,8,2], [5,3,-2], [4,8,2], [4,2,-3], [3,2,-3],
[3,3,-2], [4,5,1], [4,6,1], [4,5,1], [4,6,1], [4,5,1], [5,7,2], [4,6,2],
[4,6,1], [3,6,1], [4,7,2], [4,6,1], [3,6,1], [6,5,1], [5,5,1], [4,5,1],
[4,6,2], [4,6,2], [4,5,1], [3,5,1], [3,6,1], [4,5,1], [4,5,1], [5,5,1],
[4,5,1], [4,6,2], [4,5,1], [4,1,-1], [8,1,-1], [5,2,-3], [4,2,-3], [4,2,-3]
]
});
jsMath.Img.AddFont(60,{
cmr10: [
[5,6,0], [7,6,0], [6,7,1], [6,6,0], [5,6,0], [6,6,0], [6,6,0], [6,6,0],
[6,6,0], [6,6,0], [6,6,0], [6,6,0], [5,6,0], [5,6,0], [7,6,0], [7,6,0],
[2,4,0], [3,6,2], [3,2,-4], [4,2,-4], [4,2,-4], [4,2,-4], [4,1,-4], [4,2,-4],
[3,3,2], [4,7,1], [6,5,1], [6,5,1], [4,6,1], [7,6,0], [8,7,1], [6,7,1],
[3,2,-2], [2,6,0], [3,3,-3], [7,8,2], [4,7,1], [7,7,1], [6,7,1], [2,3,-3],
[3,8,2], [3,8,2], [4,4,-2], [6,6,1], [2,3,2], [3,1,-1], [2,1,0], [4,8,2],
[4,7,1], [4,6,0], [4,6,0], [4,7,1], [4,6,0], [4,7,1], [4,7,1], [4,7,1],
[4,7,1], [4,7,1], [2,4,0], [2,6,2], [2,6,2], [6,2,-1], [4,6,2], [4,6,0],
[6,7,1], [6,6,0], [6,6,0], [6,7,1], [6,6,0], [6,6,0], [5,6,0], [6,7,1],
[6,6,0], [3,6,0], [4,7,1], [6,6,0], [5,6,0], [8,6,0], [6,6,0], [6,7,1],
[5,6,0], [6,8,2], [6,7,1], [4,7,1], [6,6,0], [6,7,1], [6,7,1], [9,7,1],
[6,6,0], [6,6,0], [5,6,0], [3,8,2], [4,3,-3], [2,8,2], [4,2,-4], [2,2,-4],
[2,3,-3], [4,5,1], [5,7,1], [4,5,1], [5,7,1], [4,5,1], [3,6,0], [4,6,2],
[5,6,0], [2,6,0], [3,8,2], [5,6,0], [3,6,0], [7,4,0], [5,4,0], [4,5,1],
[5,6,2], [5,6,2], [3,4,0], [3,5,1], [3,6,1], [5,5,1], [5,5,1], [6,5,1],
[5,4,0], [5,6,2], [4,4,0], [4,1,-2], [8,1,-2], [4,2,-4], [4,2,-4], [4,2,-4]
],
cmmi10: [
[6,6,0], [7,6,0], [6,7,1], [6,6,0], [7,6,0], [8,6,0], [7,6,0], [6,6,0],
[6,6,0], [6,6,0], [7,6,0], [5,5,1], [5,8,2], [5,6,2], [4,7,1], [4,5,1],
[4,8,2], [4,6,2], [4,7,1], [3,5,1], [5,5,1], [5,7,1], [5,6,2], [5,4,0],
[4,8,2], [5,5,1], [5,6,2], [5,5,1], [5,5,1], [5,5,1], [5,8,2], [5,6,2],
[6,8,2], [5,5,1], [4,5,1], [5,7,1], [7,5,1], [5,6,2], [4,5,1], [5,6,2],
[8,4,-1], [8,4,1], [8,4,-1], [8,4,1], [2,3,-1], [2,3,-1], [4,6,1], [4,6,1],
[4,5,1], [4,4,0], [4,4,0], [4,6,2], [4,6,2], [4,6,2], [4,7,1], [4,6,2],
[4,7,1], [4,6,2], [2,1,0], [2,3,2], [6,6,1], [4,8,2], [6,6,1], [4,4,0],
[5,7,1], [6,6,0], [7,6,0], [7,7,1], [7,6,0], [7,6,0], [7,6,0], [7,7,1],
[8,6,0], [4,6,0], [6,7,1], [8,6,0], [6,6,0], [9,6,0], [8,6,0], [6,7,1],
[7,6,0], [6,8,2], [7,7,1], [6,7,1], [6,6,0], [7,7,1], [7,7,1], [9,7,1],
[7,6,0], [7,6,0], [6,6,0], [3,7,1], [3,8,2], [3,8,2], [8,2,-1], [8,3,-1],
[4,7,1], [4,5,1], [4,7,1], [4,5,1], [5,7,1], [4,5,1], [5,8,2], [4,6,2],
[5,7,1], [3,7,1], [5,8,2], [5,7,1], [3,7,1], [7,5,1], [5,5,1], [4,5,1],
[5,6,2], [4,6,2], [4,5,1], [4,5,1], [3,7,1], [5,5,1], [4,5,1], [6,5,1],
[5,5,1], [4,6,2], [4,5,1], [3,5,1], [4,6,2], [5,6,2], [5,2,-4], [6,2,-4]
],
cmsy10: [
[6,2,-1], [2,2,-1], [6,4,0], [4,4,0], [6,6,1], [4,4,0], [6,6,0], [6,6,2],
[6,6,1], [6,6,1], [6,6,1], [6,6,1], [6,6,1], [8,8,2], [4,4,0], [4,4,0],
[6,4,0], [6,4,0], [6,8,2], [6,8,2], [6,8,2], [6,8,2], [6,8,2], [6,8,2],
[6,2,-1], [6,4,0], [6,6,1], [6,6,1], [8,6,1], [8,6,1], [6,6,1], [6,6,1],
[8,4,0], [8,4,0], [4,8,2], [4,8,2], [8,4,0], [8,8,2], [8,8,2], [6,4,0],
[8,6,1], [8,6,1], [5,8,2], [5,8,2], [8,6,1], [8,8,2], [8,8,2], [6,5,1],
[3,5,0], [8,5,1], [5,6,1], [5,6,1], [7,6,0], [7,6,2], [6,8,2], [1,4,0],
[5,7,1], [4,6,0], [5,3,0], [4,8,1], [6,7,1], [6,7,1], [6,6,0], [6,6,0],
[5,6,0], [7,7,1], [6,7,1], [5,7,1], [7,6,0], [5,7,1], [7,7,1], [5,7,1],
[7,7,1], [7,6,0], [7,7,1], [6,7,1], [6,7,1], [9,7,1], [9,8,1], [7,7,1],
[6,7,1], [7,7,1], [7,7,1], [6,7,1], [7,6,0], [7,7,1], [6,7,1], [9,7,1],
[7,6,0], [6,8,2], [7,6,0], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1],
[5,6,0], [5,6,0], [4,8,2], [3,8,2], [4,8,2], [3,8,2], [4,8,2], [4,8,2],
[3,8,2], [3,8,2], [2,8,2], [3,8,2], [4,10,3], [5,10,3], [4,8,2], [2,6,1],
[7,9,8], [6,6,0], [7,7,1], [4,8,2], [5,5,0], [5,5,0], [6,8,2], [6,8,2],
[3,8,2], [4,8,2], [4,8,2], [5,8,2], [6,8,2], [6,8,2], [6,7,1], [6,8,2]
],
cmex10: [
[4,11,10], [3,11,10], [4,11,10], [2,11,10], [4,11,10], [3,11,10], [4,11,10], [3,11,10],
[4,11,10], [4,11,10], [4,11,10], [3,11,10], [2,6,5], [4,6,5], [5,11,10], [5,11,10],
[5,16,15], [4,16,15], [6,20,19], [5,20,19], [5,20,19], [3,20,19], [5,20,19], [3,20,19],
[5,20,19], [3,20,19], [5,20,19], [5,20,19], [6,20,19], [5,20,19], [8,20,19], [8,20,19],
[7,25,24], [5,25,24], [5,25,24], [3,25,24], [6,25,24], [3,25,24], [6,25,24], [3,25,24],
[6,25,24], [6,25,24], [6,25,24], [6,25,24], [10,25,24], [10,25,24], [7,16,15], [7,16,15],
[7,16,15], [5,16,15], [6,16,15], [3,16,15], [6,16,15], [3,16,15], [4,6,5], [3,6,5],
[6,9,8], [5,9,8], [6,9,8], [5,9,8], [5,16,15], [6,16,15], [5,4,3], [3,6,5],
[7,16,15], [5,16,15], [4,6,5], [5,6,5], [5,16,15], [4,16,15], [7,9,8], [9,13,12],
[5,10,9], [8,19,18], [9,9,8], [12,13,12], [9,9,8], [12,13,12], [9,9,8], [12,13,12],
[8,9,8], [8,9,8], [5,10,9], [7,9,8], [7,9,8], [7,9,8], [7,9,8], [7,9,8],
[12,13,12], [10,13,12], [8,19,18], [9,13,12], [9,13,12], [9,13,12], [9,13,12], [9,13,12],
[8,9,8], [10,13,12], [6,2,-4], [10,3,-4], [13,3,-4], [5,2,-4], [8,2,-4], [12,2,-4],
[4,16,15], [2,16,15], [5,16,15], [3,16,15], [5,16,15], [3,16,15], [5,16,15], [5,16,15],
[9,11,10], [9,16,15], [9,20,19], [9,25,24], [6,16,15], [6,6,5], [9,6,5], [5,6,5],
[5,6,5], [5,6,5], [5,3,2], [5,3,2], [5,3,0], [5,3,0], [6,6,5], [6,6,5]
],
cmbx10: [
[6,6,0], [8,6,0], [7,7,1], [7,6,0], [6,6,0], [7,6,0], [7,6,0], [7,6,0],
[7,6,0], [7,6,0], [7,6,0], [6,6,0], [5,6,0], [5,6,0], [8,6,0], [8,6,0],
[3,4,0], [4,6,2], [3,2,-4], [4,2,-4], [4,2,-4], [4,2,-4], [4,1,-4], [5,2,-4],
[4,3,2], [5,7,1], [7,5,1], [7,5,1], [5,6,1], [9,6,0], [10,7,1], [7,7,1],
[3,2,-2], [3,6,0], [4,4,-2], [8,8,2], [5,7,1], [8,7,1], [7,7,1], [3,4,-2],
[4,8,2], [3,8,2], [4,4,-2], [7,8,2], [2,4,2], [3,2,-1], [2,2,0], [5,8,2],
[5,7,1], [4,6,0], [5,6,0], [5,7,1], [5,6,0], [5,7,1], [5,7,1], [5,7,1],
[5,7,1], [5,7,1], [2,4,0], [2,6,2], [3,6,2], [7,4,0], [4,6,2], [4,6,0],
[7,7,1], [7,6,0], [7,6,0], [7,7,1], [7,6,0], [6,6,0], [6,6,0], [7,7,1],
[7,6,0], [4,6,0], [5,7,1], [7,6,0], [6,6,0], [9,6,0], [7,6,0], [7,7,1],
[6,6,0], [7,8,2], [7,7,1], [5,7,1], [7,6,0], [7,7,1], [7,7,1], [10,7,1],
[7,6,0], [7,6,0], [6,6,0], [3,8,2], [5,4,-2], [2,8,2], [4,2,-4], [2,2,-4],
[2,4,-2], [5,5,1], [5,7,1], [4,5,1], [5,7,1], [4,5,1], [4,6,0], [5,6,2],
[5,6,0], [3,6,0], [4,8,2], [5,6,0], [3,6,0], [8,4,0], [5,4,0], [5,5,1],
[5,6,2], [5,6,2], [4,4,0], [4,5,1], [4,7,1], [5,5,1], [5,5,1], [7,5,1],
[5,4,0], [5,6,2], [4,4,0], [5,1,-2], [10,1,-2], [4,2,-4], [4,2,-4], [4,2,-4]
],
cmti10: [
[6,6,0], [7,6,0], [7,7,1], [6,6,0], [7,6,0], [7,6,0], [7,6,0], [7,6,0],
[6,6,0], [7,6,0], [7,6,0], [8,8,2], [6,8,2], [7,8,2], [9,8,2], [9,8,2],
[3,5,1], [4,6,2], [4,2,-4], [5,2,-4], [5,2,-4], [5,2,-4], [5,1,-4], [6,2,-4],
[3,3,2], [6,8,2], [6,5,1], [6,5,1], [5,6,1], [8,6,0], [9,7,1], [7,7,1],
[3,2,-2], [3,6,0], [5,3,-3], [7,8,2], [6,7,1], [7,7,1], [7,7,1], [3,3,-3],
[5,8,2], [4,8,2], [5,4,-2], [7,6,1], [2,3,2], [3,1,-1], [2,1,0], [5,8,2],
[5,7,1], [4,6,0], [5,7,1], [5,7,1], [4,8,2], [5,7,1], [5,7,1], [5,7,1],
[5,7,1], [5,7,1], [3,4,0], [3,6,2], [3,6,2], [7,2,-1], [4,6,2], [5,6,0],
[7,7,1], [6,6,0], [6,6,0], [7,7,1], [7,6,0], [6,6,0], [6,6,0], [7,7,1],
[7,6,0], [5,6,0], [5,7,1], [7,6,0], [5,6,0], [9,6,0], [7,6,0], [7,7,1],
[6,6,0], [7,8,2], [6,7,1], [6,7,1], [7,6,0], [7,7,1], [7,7,1], [9,7,1],
[7,6,0], [7,6,0], [6,6,0], [4,8,2], [5,3,-3], [4,8,2], [5,2,-4], [3,2,-4],
[3,3,-3], [5,5,1], [4,7,1], [4,5,1], [5,7,1], [4,5,1], [5,8,2], [4,6,2],
[5,7,1], [3,7,1], [4,8,2], [5,7,1], [3,7,1], [7,5,1], [5,5,1], [5,5,1],
[5,6,2], [4,6,2], [4,5,1], [4,5,1], [3,7,1], [5,5,1], [4,5,1], [6,5,1],
[5,5,1], [5,6,2], [4,5,1], [5,1,-2], [9,1,-2], [5,2,-4], [5,2,-4], [5,2,-4]
]
});
jsMath.Img.AddFont(70,{
cmr10: [
[6,7,0], [8,8,0], [8,9,1], [7,8,0], [7,7,0], [8,7,0], [7,7,0], [8,8,0],
[7,7,0], [8,7,0], [7,8,0], [7,8,0], [6,8,0], [6,8,0], [9,8,0], [9,8,0],
[3,5,0], [4,8,3], [3,2,-5], [4,2,-5], [4,2,-5], [4,2,-5], [5,1,-5], [5,3,-5],
[4,4,3], [5,9,1], [7,6,1], [8,6,1], [5,8,2], [9,7,0], [10,9,1], [8,9,1],
[3,2,-2], [2,8,0], [4,4,-3], [8,9,2], [5,9,1], [8,9,1], [8,9,1], [3,4,-3],
[4,11,3], [3,11,3], [5,5,-3], [8,7,1], [3,4,2], [3,2,-1], [2,2,0], [5,11,3],
[5,8,1], [5,7,0], [5,7,0], [5,8,1], [5,7,0], [5,8,1], [5,8,1], [5,8,1],
[5,8,1], [5,8,1], [2,5,0], [2,7,2], [2,8,3], [8,3,-1], [5,8,3], [5,8,0],
[8,9,1], [8,8,0], [7,7,0], [7,9,1], [8,7,0], [7,7,0], [7,7,0], [8,9,1],
[8,7,0], [4,7,0], [5,8,1], [8,7,0], [6,7,0], [9,7,0], [8,7,0], [8,9,1],
[7,7,0], [8,10,2], [8,8,1], [5,9,1], [7,7,0], [8,8,1], [8,8,1], [11,8,1],
[8,7,0], [8,7,0], [6,7,0], [3,11,3], [5,4,-3], [2,11,3], [4,2,-5], [2,2,-5],
[2,4,-3], [5,6,1], [6,8,1], [5,6,1], [6,8,1], [5,6,1], [4,8,0], [5,8,3],
[6,7,0], [3,7,0], [4,10,3], [6,7,0], [3,7,0], [9,5,0], [6,5,0], [5,6,1],
[6,7,2], [6,7,2], [4,5,0], [4,6,1], [4,8,1], [6,6,1], [6,6,1], [8,6,1],
[6,5,0], [6,8,3], [5,5,0], [5,1,-2], [10,1,-2], [5,2,-5], [5,2,-5], [4,2,-5]
],
cmmi10: [
[8,7,0], [8,8,0], [8,9,1], [7,8,0], [8,7,0], [9,7,0], [9,7,0], [8,8,0],
[7,7,0], [7,7,0], [8,8,0], [7,6,1], [6,10,2], [6,8,3], [5,9,1], [4,6,1],
[5,10,3], [5,8,3], [5,9,1], [4,6,1], [6,6,1], [6,8,1], [6,8,3], [6,5,0],
[5,10,3], [6,6,1], [6,8,3], [6,6,1], [6,6,1], [6,6,1], [6,10,3], [6,8,3],
[7,10,3], [7,6,1], [5,6,1], [6,9,1], [9,6,1], [6,7,2], [5,7,2], [7,8,3],
[10,4,-2], [10,4,1], [10,4,-2], [10,4,1], [3,3,-2], [3,3,-2], [5,7,1], [5,7,1],
[5,6,1], [5,5,0], [5,5,0], [5,8,3], [5,7,2], [5,8,3], [5,8,1], [5,8,3],
[5,8,1], [5,8,3], [2,2,0], [3,4,2], [7,7,1], [5,11,3], [7,7,1], [5,5,0],
[6,9,1], [8,8,0], [8,7,0], [8,9,1], [9,7,0], [8,7,0], [8,7,0], [8,9,1],
[9,7,0], [5,7,0], [7,8,1], [9,7,0], [7,7,0], [11,7,0], [9,7,0], [8,9,1],
[8,7,0], [8,10,2], [8,8,1], [7,9,1], [8,7,0], [8,8,1], [8,8,1], [11,8,1],
[9,7,0], [8,7,0], [8,7,0], [4,9,1], [4,11,3], [4,11,3], [10,3,-1], [10,3,-1],
[4,9,1], [5,6,1], [5,8,1], [5,6,1], [6,8,1], [5,6,1], [6,11,3], [5,8,3],
[6,8,1], [3,8,1], [5,10,3], [6,8,1], [3,8,1], [9,6,1], [6,6,1], [5,6,1],
[6,7,2], [5,7,2], [5,6,1], [5,6,1], [4,8,1], [6,6,1], [5,6,1], [7,6,1],
[6,6,1], [5,8,3], [5,6,1], [3,6,1], [5,8,3], [7,8,3], [7,3,-5], [7,2,-5]
],
cmsy10: [
[7,1,-2], [2,3,-1], [7,5,0], [5,5,0], [8,7,1], [5,5,0], [8,7,0], [8,7,2],
[8,7,1], [8,7,1], [8,7,1], [8,7,1], [8,7,1], [10,11,3], [5,5,0], [5,5,0],
[8,5,0], [8,5,0], [7,9,2], [7,9,2], [7,9,2], [7,9,2], [7,9,2], [7,9,2],
[8,3,-1], [8,5,0], [7,7,1], [7,7,1], [10,7,1], [10,7,1], [7,7,1], [7,7,1],
[10,5,0], [10,5,0], [5,9,2], [5,9,2], [10,5,0], [10,9,2], [10,9,2], [8,5,0],
[10,7,1], [10,7,1], [6,9,2], [6,9,2], [10,7,1], [10,9,2], [10,9,2], [8,6,1],
[3,6,0], [10,6,1], [6,7,1], [6,7,1], [9,8,0], [9,8,3], [7,11,3], [2,5,0],
[6,8,1], [5,7,0], [7,4,0], [5,9,1], [8,9,1], [7,9,1], [8,7,0], [8,7,0],
[6,7,0], [8,9,1], [7,9,1], [6,9,1], [8,7,0], [6,9,1], [9,8,1], [7,10,2],
[9,8,1], [8,7,0], [9,9,2], [8,9,1], [7,9,1], [12,9,1], [11,9,1], [8,9,1],
[8,8,1], [8,10,2], [9,8,1], [7,9,1], [8,8,0], [8,8,1], [7,8,1], [11,8,1],
[9,7,0], [8,9,2], [8,7,0], [7,7,1], [7,7,1], [7,7,1], [7,7,1], [7,7,1],
[6,7,0], [6,7,0], [5,11,3], [3,11,3], [5,11,3], [3,11,3], [5,11,3], [5,11,3],
[4,11,3], [3,11,3], [2,11,3], [4,11,3], [5,11,3], [6,11,3], [5,11,3], [3,7,1],
[9,11,10], [8,7,0], [8,8,1], [5,11,3], [7,6,0], [7,6,0], [8,9,2], [7,9,2],
[4,11,3], [4,11,3], [4,11,3], [6,9,2], [8,10,2], [8,10,2], [8,9,1], [8,10,2]
],
cmex10: [
[5,13,12], [4,13,12], [4,13,12], [3,13,12], [5,13,12], [3,13,12], [5,13,12], [3,13,12],
[5,13,12], [5,13,12], [4,13,12], [4,13,12], [2,8,7], [5,8,7], [6,13,12], [6,13,12],
[6,19,18], [5,19,18], [7,25,24], [6,25,24], [6,25,24], [3,25,24], [6,25,24], [4,25,24],
[6,25,24], [4,25,24], [7,25,24], [7,25,24], [7,25,24], [7,25,24], [10,25,24], [10,25,24],
[8,31,30], [6,31,30], [6,31,30], [4,31,30], [7,31,30], [4,31,30], [7,31,30], [4,31,30],
[7,31,30], [7,31,30], [7,31,30], [7,31,30], [13,31,30], [13,31,30], [8,19,18], [8,19,18],
[9,19,18], [6,19,18], [7,19,18], [4,19,18], [7,19,18], [4,19,18], [4,8,7], [4,8,7],
[8,11,10], [6,11,10], [8,10,9], [6,10,9], [6,20,19], [8,20,19], [6,5,4], [4,8,7],
[9,19,18], [6,19,18], [5,8,7], [6,8,7], [6,19,18], [5,19,18], [8,11,10], [11,15,14],
[7,13,12], [10,24,23], [11,11,10], [15,15,14], [11,11,10], [15,15,14], [11,11,10], [15,15,14],
[10,11,10], [9,11,10], [7,13,12], [8,11,10], [8,11,10], [8,11,10], [8,11,10], [8,11,10],
[14,15,14], [13,15,14], [10,24,23], [11,15,14], [11,15,14], [11,15,14], [11,15,14], [11,15,14],
[9,11,10], [13,15,14], [7,3,-5], [12,3,-5], [16,3,-5], [6,2,-6], [10,2,-6], [15,2,-6],
[5,19,18], [3,19,18], [6,19,18], [4,19,18], [6,19,18], [4,19,18], [6,19,18], [6,19,18],
[11,13,12], [11,19,18], [11,25,24], [11,31,30], [8,19,18], [8,8,7], [11,7,6], [6,8,7],
[6,7,6], [6,7,6], [6,5,3], [6,5,3], [6,4,0], [6,4,0], [8,7,6], [8,7,6]
],
cmbx10: [
[7,7,0], [9,7,0], [9,8,1], [8,7,0], [8,7,0], [9,7,0], [8,7,0], [9,7,0],
[8,7,0], [9,7,0], [8,7,0], [8,7,0], [7,7,0], [7,7,0], [10,7,0], [10,7,0],
[3,5,0], [4,7,2], [4,3,-5], [5,3,-5], [5,2,-5], [5,2,-5], [5,2,-5], [6,3,-5],
[5,3,2], [6,8,1], [8,6,1], [9,6,1], [6,8,2], [11,7,0], [12,8,1], [9,9,1],
[4,3,-2], [3,8,0], [5,4,-3], [9,9,2], [6,9,1], [9,9,1], [9,9,1], [3,4,-3],
[4,11,3], [4,11,3], [5,5,-3], [9,9,2], [3,4,2], [4,2,-1], [3,2,0], [6,11,3],
[6,8,1], [5,7,0], [6,7,0], [6,8,1], [6,7,0], [6,8,1], [6,8,1], [6,8,1],
[6,8,1], [6,8,1], [3,5,0], [3,7,2], [3,8,3], [9,3,-1], [5,7,2], [5,7,0],
[9,8,1], [9,7,0], [8,7,0], [8,8,1], [9,7,0], [8,7,0], [7,7,0], [9,8,1],
[9,7,0], [5,7,0], [6,8,1], [9,7,0], [7,7,0], [11,7,0], [9,7,0], [8,8,1],
[8,7,0], [9,9,2], [9,8,1], [6,8,1], [8,7,0], [9,8,1], [9,8,1], [12,8,1],
[9,7,0], [9,7,0], [7,7,0], [3,11,3], [6,4,-3], [2,11,3], [5,2,-5], [3,2,-5],
[3,4,-3], [6,6,1], [6,8,1], [5,6,1], [7,8,1], [5,6,1], [5,7,0], [6,8,3],
[7,7,0], [3,7,0], [4,9,2], [6,7,0], [3,7,0], [10,5,0], [7,5,0], [6,6,1],
[6,7,2], [7,7,2], [5,5,0], [5,6,1], [4,8,1], [7,6,1], [6,6,1], [9,6,1],
[6,5,0], [6,7,2], [5,5,0], [6,1,-2], [12,1,-2], [5,3,-5], [5,2,-5], [5,2,-5]
],
cmti10: [
[8,7,0], [8,8,0], [8,9,1], [7,8,0], [8,7,0], [9,7,0], [8,7,0], [9,8,0],
[8,7,0], [9,7,0], [8,8,0], [9,11,3], [7,11,3], [8,11,3], [11,11,3], [11,11,3],
[4,6,1], [5,8,3], [5,2,-5], [6,2,-5], [6,2,-5], [6,2,-5], [6,1,-5], [7,3,-5],
[4,3,2], [7,11,3], [8,6,1], [8,6,1], [6,8,2], [10,7,0], [11,9,1], [9,9,1],
[4,2,-2], [4,8,0], [6,4,-3], [9,9,2], [7,9,1], [9,9,1], [9,9,1], [4,4,-3],
[6,11,3], [4,11,3], [6,5,-3], [8,7,1], [3,4,2], [4,2,-1], [3,2,0], [7,11,3],
[6,8,1], [5,7,0], [6,8,1], [6,8,1], [5,9,2], [6,8,1], [6,8,1], [7,8,1],
[6,8,1], [6,8,1], [4,5,0], [4,7,2], [4,8,3], [8,3,-1], [5,8,3], [6,8,0],
[8,9,1], [7,8,0], [8,7,0], [9,9,1], [8,7,0], [8,7,0], [8,7,0], [9,9,1],
[9,7,0], [6,7,0], [7,8,1], [9,7,0], [7,7,0], [11,7,0], [9,7,0], [8,9,1],
[8,7,0], [8,10,2], [8,8,1], [7,9,1], [9,7,0], [9,8,1], [9,8,1], [12,8,1],
[9,7,0], [9,7,0], [8,7,0], [5,11,3], [7,4,-3], [5,11,3], [6,2,-5], [4,2,-5],
[4,4,-3], [6,6,1], [5,8,1], [5,6,1], [6,8,1], [5,6,1], [6,11,3], [5,8,3],
[6,8,1], [4,8,1], [5,10,3], [6,8,1], [4,8,1], [9,6,1], [6,6,1], [6,6,1],
[6,7,2], [5,7,2], [5,6,1], [5,6,1], [4,8,1], [6,6,1], [5,6,1], [7,6,1],
[6,6,1], [6,8,3], [5,6,1], [6,1,-2], [11,1,-2], [6,2,-5], [6,2,-5], [6,2,-5]
]
});
jsMath.Img.AddFont(85,{
cmr10: [
[7,9,0], [10,9,0], [9,10,1], [8,9,0], [8,9,0], [9,9,0], [8,9,0], [9,9,0],
[8,9,0], [9,9,0], [9,9,0], [8,9,0], [7,9,0], [7,9,0], [10,9,0], [10,9,0],
[3,6,0], [4,9,3], [4,3,-6], [5,3,-6], [5,2,-6], [5,3,-6], [6,2,-6], [6,3,-6],
[5,4,3], [6,10,1], [9,7,1], [9,7,1], [6,9,2], [11,9,0], [12,10,1], [9,10,1],
[4,2,-3], [3,9,0], [5,5,-4], [10,12,3], [6,10,1], [10,10,1], [9,10,1], [3,5,-4],
[4,12,3], [4,12,3], [6,6,-3], [9,8,1], [3,5,3], [4,1,-2], [3,2,0], [6,12,3],
[6,9,1], [6,8,0], [6,8,0], [6,9,1], [6,9,0], [6,9,1], [6,9,1], [6,10,1],
[6,9,1], [6,9,1], [3,6,0], [3,9,3], [3,9,3], [9,4,-1], [5,9,3], [5,9,0],
[9,10,1], [9,9,0], [8,9,0], [8,10,1], [9,9,0], [8,9,0], [8,9,0], [9,10,1],
[9,9,0], [4,9,0], [6,10,1], [9,9,0], [7,9,0], [11,9,0], [9,9,0], [9,10,1],
[8,9,0], [9,12,3], [9,10,1], [6,10,1], [9,9,0], [9,10,1], [9,10,1], [13,10,1],
[9,9,0], [9,9,0], [7,9,0], [4,12,3], [6,5,-4], [2,12,3], [5,3,-6], [3,3,-6],
[3,5,-4], [6,7,1], [7,10,1], [5,7,1], [7,10,1], [5,7,1], [5,9,0], [6,9,3],
[7,9,0], [3,9,0], [4,12,3], [7,9,0], [4,9,0], [10,6,0], [7,6,0], [6,7,1],
[7,9,3], [7,9,3], [5,6,0], [5,7,1], [4,9,1], [7,7,1], [7,7,1], [9,7,1],
[7,6,0], [7,9,3], [5,6,0], [6,1,-3], [12,1,-3], [6,3,-6], [5,3,-6], [5,3,-6]
],
cmmi10: [
[9,9,0], [10,9,0], [9,10,1], [8,9,0], [10,9,0], [11,9,0], [10,9,0], [9,9,0],
[8,9,0], [9,9,0], [10,9,0], [8,7,1], [8,12,3], [7,9,3], [6,10,1], [5,7,1],
[6,12,3], [6,9,3], [6,10,1], [4,7,1], [7,7,1], [7,10,1], [7,9,3], [7,6,0],
[6,12,3], [7,7,1], [7,9,3], [7,7,1], [7,7,1], [7,7,1], [7,12,3], [8,9,3],
[8,12,3], [8,7,1], [6,7,1], [7,10,1], [10,7,1], [7,9,3], [5,8,2], [8,9,3],
[12,5,-2], [12,5,1], [12,5,-2], [12,5,1], [3,4,-2], [3,4,-2], [6,8,1], [6,8,1],
[6,7,1], [6,6,0], [6,6,0], [6,9,3], [6,9,3], [6,9,3], [6,9,1], [6,9,3],
[6,9,1], [6,9,3], [3,2,0], [3,5,3], [9,8,1], [6,12,3], [9,8,1], [6,6,0],
[7,10,1], [9,9,0], [10,9,0], [10,10,1], [10,9,0], [10,9,0], [10,9,0], [10,10,1],
[11,9,0], [6,9,0], [8,10,1], [11,9,0], [8,9,0], [13,9,0], [11,9,0], [9,10,1],
[10,9,0], [9,12,3], [10,10,1], [8,10,1], [9,9,0], [10,10,1], [10,10,1], [13,10,1],
[11,9,0], [10,9,0], [9,9,0], [4,10,1], [4,12,3], [4,12,3], [12,4,-1], [12,4,-1],
[5,10,1], [6,7,1], [5,10,1], [6,7,1], [7,10,1], [6,7,1], [7,12,3], [6,9,3],
[7,10,1], [4,9,1], [6,11,3], [7,10,1], [4,10,1], [11,7,1], [7,7,1], [6,7,1],
[7,9,3], [6,9,3], [6,7,1], [6,7,1], [4,9,1], [7,7,1], [6,7,1], [9,7,1],
[7,7,1], [6,9,3], [6,7,1], [4,7,1], [6,9,3], [8,9,3], [8,3,-6], [8,2,-6]
],
cmsy10: [
[9,2,-2], [3,2,-2], [8,6,0], [6,6,0], [9,8,1], [6,6,0], [9,8,0], [9,8,2],
[9,8,1], [9,8,1], [9,8,1], [9,8,1], [9,8,1], [12,12,3], [6,6,0], [6,6,0],
[9,6,0], [9,6,0], [9,10,2], [9,10,2], [9,10,2], [9,10,2], [9,10,2], [9,10,2],
[9,4,-1], [9,6,0], [9,8,1], [9,8,1], [12,8,1], [12,8,1], [9,8,1], [9,8,1],
[12,6,0], [12,6,0], [6,12,3], [6,12,3], [12,6,0], [12,12,3], [12,12,3], [9,6,0],
[12,8,1], [12,8,1], [7,12,3], [7,12,3], [12,8,1], [12,12,3], [12,12,3], [9,7,1],
[4,7,0], [12,7,1], [7,8,1], [7,8,1], [10,9,0], [10,9,3], [8,12,3], [2,6,0],
[7,10,1], [6,9,0], [8,4,-1], [6,11,1], [9,10,1], [9,10,1], [9,8,0], [9,8,0],
[7,9,0], [10,10,1], [8,10,1], [7,10,1], [10,9,0], [7,10,1], [10,10,1], [8,11,2],
[10,10,1], [9,9,0], [11,11,2], [9,10,1], [8,10,1], [14,10,1], [13,11,1], [10,10,1],
[9,10,1], [10,11,2], [11,10,1], [8,10,1], [10,9,0], [10,10,1], [8,10,1], [13,10,1],
[10,9,0], [9,11,2], [10,9,0], [8,9,1], [8,9,1], [8,9,1], [8,9,1], [8,9,1],
[7,9,0], [7,9,0], [6,12,3], [4,12,3], [6,12,3], [4,12,3], [6,12,3], [6,12,3],
[4,12,3], [4,12,3], [2,12,3], [5,12,3], [6,14,4], [7,14,4], [6,12,3], [3,8,1],
[11,13,12], [9,9,0], [10,10,1], [6,12,3], [8,8,0], [8,8,0], [9,10,2], [9,10,2],
[5,12,3], [5,12,3], [5,12,3], [7,12,3], [9,11,2], [9,11,2], [9,10,1], [9,11,2]
],
cmex10: [
[5,15,14], [4,15,14], [5,15,14], [3,15,14], [6,15,14], [4,15,14], [6,15,14], [4,15,14],
[6,15,14], [6,15,14], [5,15,14], [5,15,14], [3,9,8], [5,9,8], [7,15,14], [7,15,14],
[7,23,22], [5,23,22], [9,30,29], [7,30,29], [7,30,29], [4,30,29], [7,30,29], [4,30,29],
[7,30,29], [4,30,29], [8,30,29], [8,30,29], [8,30,29], [8,30,29], [12,30,29], [12,30,29],
[10,37,36], [7,37,36], [7,37,36], [4,37,36], [8,37,36], [5,37,36], [8,37,36], [5,37,36],
[8,37,36], [8,37,36], [9,37,36], [8,37,36], [15,37,36], [15,37,36], [10,23,22], [10,23,22],
[11,23,22], [7,23,22], [8,23,22], [5,23,22], [8,23,22], [5,23,22], [5,9,8], [5,9,8],
[9,12,11], [7,12,11], [9,12,11], [7,12,11], [7,23,22], [9,23,22], [7,5,4], [5,9,8],
[11,23,22], [7,23,22], [5,9,8], [7,9,8], [7,23,22], [6,23,22], [10,13,12], [13,18,17],
[8,15,14], [12,28,27], [13,13,12], [18,18,17], [13,13,12], [18,18,17], [13,13,12], [18,18,17],
[12,13,12], [11,13,12], [8,15,14], [10,13,12], [10,13,12], [10,13,12], [10,13,12], [10,13,12],
[17,18,17], [15,18,17], [12,28,27], [13,18,17], [13,18,17], [13,18,17], [13,18,17], [13,18,17],
[11,13,12], [15,18,17], [8,3,-6], [14,4,-6], [19,4,-6], [7,2,-7], [12,2,-7], [18,2,-7],
[6,23,22], [3,23,22], [7,23,22], [4,23,22], [7,23,22], [4,23,22], [7,23,22], [7,23,22],
[13,15,14], [13,23,22], [13,30,29], [13,37,36], [9,23,22], [9,9,8], [13,8,7], [7,9,8],
[7,9,8], [7,9,8], [7,5,3], [7,5,3], [7,5,0], [7,5,0], [9,9,8], [9,9,8]
],
cmbx10: [
[8,9,0], [11,9,0], [10,10,1], [10,9,0], [9,9,0], [11,9,0], [10,9,0], [10,9,0],
[10,9,0], [10,9,0], [10,9,0], [9,9,0], [8,9,0], [8,9,0], [12,9,0], [12,9,0],
[4,6,0], [5,9,3], [5,3,-6], [6,3,-6], [6,2,-6], [6,3,-6], [6,2,-6], [7,3,-6],
[6,4,3], [7,10,1], [10,7,1], [11,7,1], [7,9,2], [13,9,0], [14,10,1], [10,10,1],
[4,2,-3], [4,9,0], [6,5,-4], [11,12,3], [7,10,1], [11,10,1], [11,10,1], [4,5,-4],
[5,12,3], [5,12,3], [6,6,-3], [10,10,2], [3,5,3], [4,2,-2], [3,2,0], [7,12,3],
[7,9,1], [6,8,0], [7,8,0], [7,9,1], [7,8,0], [7,9,1], [7,9,1], [7,10,1],
[7,9,1], [7,9,1], [3,6,0], [3,9,3], [4,9,3], [10,4,-1], [6,9,3], [6,9,0],
[10,10,1], [10,9,0], [10,9,0], [10,10,1], [10,9,0], [9,9,0], [9,9,0], [11,10,1],
[11,9,0], [5,9,0], [7,10,1], [11,9,0], [8,9,0], [13,9,0], [11,9,0], [10,10,1],
[9,9,0], [10,12,3], [11,10,1], [7,10,1], [10,9,0], [11,10,1], [11,10,1], [14,10,1],
[11,9,0], [11,9,0], [8,9,0], [4,12,3], [7,5,-4], [3,12,3], [6,3,-6], [3,3,-6],
[3,5,-4], [7,7,1], [8,10,1], [6,7,1], [8,10,1], [6,7,1], [6,9,0], [7,9,3],
[8,9,0], [4,9,0], [5,12,3], [8,9,0], [4,9,0], [12,6,0], [8,6,0], [7,7,1],
[8,9,3], [8,9,3], [6,6,0], [5,7,1], [5,9,1], [8,7,1], [7,7,1], [10,7,1],
[8,6,0], [7,9,3], [6,6,0], [7,1,-3], [14,1,-3], [6,3,-6], [6,2,-7], [6,3,-6]
],
cmti10: [
[9,9,0], [10,9,0], [10,10,1], [8,9,0], [10,9,0], [11,9,0], [10,9,0], [10,9,0],
[9,9,0], [10,9,0], [10,9,0], [11,12,3], [9,12,3], [9,12,3], [12,12,3], [13,12,3],
[4,7,1], [5,9,3], [6,3,-6], [7,3,-6], [7,2,-6], [7,3,-6], [7,2,-6], [9,3,-6],
[5,4,3], [8,12,3], [9,7,1], [9,7,1], [7,9,2], [12,9,0], [13,10,1], [10,10,1],
[5,2,-3], [5,9,0], [7,5,-4], [10,12,3], [9,10,1], [11,10,1], [10,10,1], [5,5,-4],
[7,12,3], [5,12,3], [7,6,-3], [10,8,1], [3,5,3], [5,1,-2], [3,2,0], [8,12,3],
[7,9,1], [6,8,0], [7,9,1], [7,9,1], [6,11,3], [7,9,1], [7,9,1], [8,9,1],
[7,9,1], [7,9,1], [4,6,0], [4,9,3], [4,9,3], [10,4,-1], [6,9,3], [7,9,0],
[10,10,1], [9,9,0], [9,9,0], [10,10,1], [10,9,0], [9,9,0], [9,9,0], [10,10,1],
[11,9,0], [7,9,0], [8,10,1], [11,9,0], [8,9,0], [13,9,0], [11,9,0], [10,10,1],
[9,9,0], [10,12,3], [9,10,1], [8,10,1], [10,9,0], [11,10,1], [11,10,1], [14,10,1],
[10,9,0], [11,9,0], [9,9,0], [6,12,3], [8,5,-4], [6,12,3], [7,3,-6], [5,3,-6],
[5,5,-4], [7,7,1], [6,10,1], [6,7,1], [7,10,1], [6,7,1], [7,12,3], [6,9,3],
[7,10,1], [4,9,1], [6,11,3], [7,10,1], [4,10,1], [11,7,1], [8,7,1], [7,7,1],
[7,9,3], [6,9,3], [6,7,1], [6,7,1], [5,9,1], [7,7,1], [6,7,1], [9,7,1],
[7,7,1], [7,9,3], [6,7,1], [7,1,-3], [13,1,-3], [7,3,-6], [7,3,-6], [7,3,-6]
]
});
jsMath.Img.AddFont(100,{
cmr10: [
[9,10,0], [11,11,0], [11,11,1], [10,11,0], [9,10,0], [11,10,0], [10,10,0], [11,10,0],
[10,10,0], [11,10,0], [10,10,0], [9,10,0], [8,10,0], [8,10,0], [12,10,0], [12,10,0],
[4,7,0], [4,10,3], [5,3,-7], [6,3,-7], [6,2,-7], [6,3,-7], [7,2,-7], [7,4,-7],
[6,4,3], [7,11,1], [10,8,1], [11,8,1], [7,10,2], [13,10,0], [14,11,1], [11,12,1],
[4,3,-3], [3,11,0], [5,5,-5], [11,13,3], [7,12,1], [11,12,1], [11,12,1], [3,5,-5],
[5,15,4], [5,15,4], [7,7,-4], [11,11,2], [3,5,3], [4,2,-2], [3,2,0], [7,15,4],
[7,11,1], [6,10,0], [7,10,0], [7,11,1], [7,10,0], [7,11,1], [7,11,1], [7,11,1],
[7,11,1], [7,11,1], [3,7,0], [3,10,3], [3,11,4], [11,5,-1], [6,10,3], [6,10,0],
[11,11,1], [11,11,0], [10,10,0], [10,11,1], [10,10,0], [10,10,0], [9,10,0], [11,11,1],
[11,10,0], [5,10,0], [7,11,1], [11,10,0], [9,10,0], [13,10,0], [11,10,0], [11,11,1],
[9,10,0], [11,13,3], [11,11,1], [7,11,1], [10,10,0], [11,11,1], [11,11,1], [15,11,1],
[11,10,0], [11,10,0], [8,10,0], [4,15,4], [7,5,-5], [3,15,4], [6,3,-7], [3,3,-7],
[3,5,-5], [7,8,1], [8,11,1], [6,8,1], [8,11,1], [6,8,1], [5,10,0], [7,10,3],
[8,10,0], [4,10,0], [4,13,3], [8,10,0], [4,10,0], [12,7,0], [8,7,0], [7,8,1],
[8,10,3], [8,10,3], [6,7,0], [6,8,1], [5,10,1], [8,8,1], [8,8,1], [10,8,1],
[8,7,0], [8,10,3], [6,7,0], [7,1,-3], [14,1,-3], [6,3,-7], [6,2,-8], [6,3,-7]
],
cmmi10: [
[11,10,0], [12,11,0], [11,11,1], [10,11,0], [11,10,0], [13,10,0], [12,10,0], [10,10,0],
[9,10,0], [10,10,0], [11,10,0], [9,8,1], [9,13,3], [8,11,4], [7,11,1], [6,8,1],
[7,13,3], [7,11,4], [7,11,1], [5,8,1], [8,8,1], [8,11,1], [9,11,4], [8,7,0],
[7,13,3], [8,8,1], [8,11,4], [8,8,1], [8,8,1], [8,8,1], [9,13,3], [9,10,3],
[9,13,3], [9,8,1], [6,8,1], [8,11,1], [12,8,1], [8,10,3], [6,9,2], [9,11,4],
[14,5,-3], [14,5,1], [14,5,-3], [14,5,1], [4,4,-3], [4,4,-3], [7,9,1], [7,9,1],
[7,8,1], [6,7,0], [7,7,0], [7,11,4], [7,10,3], [7,11,4], [7,11,1], [7,11,4],
[7,11,1], [7,11,4], [3,2,0], [3,5,3], [10,9,1], [7,15,4], [10,9,1], [7,7,0],
[8,12,1], [11,11,0], [11,10,0], [11,11,1], [12,10,0], [11,10,0], [11,10,0], [11,11,1],
[13,10,0], [7,10,0], [9,11,1], [13,10,0], [9,10,0], [15,10,0], [13,10,0], [11,11,1],
[11,10,0], [11,13,3], [11,11,1], [10,11,1], [10,10,0], [11,11,1], [11,11,1], [15,11,1],
[12,10,0], [11,10,0], [11,10,0], [5,12,1], [5,15,4], [5,15,4], [14,5,-1], [14,5,-1],
[6,11,1], [7,8,1], [6,11,1], [7,8,1], [8,11,1], [7,8,1], [8,13,3], [7,10,3],
[8,11,1], [5,11,1], [7,13,3], [8,11,1], [4,11,1], [12,8,1], [8,8,1], [7,8,1],
[8,10,3], [7,10,3], [7,8,1], [6,8,1], [5,10,1], [8,8,1], [7,8,1], [10,8,1],
[8,8,1], [7,10,3], [7,8,1], [5,8,1], [7,10,3], [9,11,4], [9,3,-7], [10,3,-7]
],
cmsy10: [
[10,1,-3], [3,3,-2], [9,7,0], [7,7,0], [11,9,1], [7,7,0], [11,10,0], [11,10,3],
[11,11,2], [11,11,2], [11,11,2], [11,11,2], [11,11,2], [14,15,4], [7,7,0], [7,7,0],
[11,7,0], [11,7,0], [10,11,2], [10,11,2], [10,11,2], [10,11,2], [10,11,2], [10,11,2],
[11,5,-1], [11,7,0], [10,9,1], [10,9,1], [14,9,1], [14,9,1], [10,9,1], [10,9,1],
[14,5,-1], [14,5,-1], [6,13,3], [6,13,3], [14,5,-1], [14,13,3], [14,13,3], [11,7,0],
[14,9,1], [14,9,1], [9,13,3], [9,13,3], [14,9,1], [14,13,3], [14,13,3], [11,8,1],
[4,8,0], [14,8,1], [9,9,1], [9,9,1], [12,11,0], [12,11,4], [9,15,4], [2,7,0],
[8,11,1], [7,10,0], [9,4,-1], [7,13,2], [10,12,1], [10,11,1], [11,10,0], [11,10,0],
[8,10,0], [12,12,1], [10,11,1], [8,11,1], [11,10,0], [8,11,1], [12,11,1], [9,12,2],
[12,11,1], [10,10,0], [12,12,2], [11,11,1], [10,11,1], [16,11,1], [15,12,1], [11,11,1],
[11,11,1], [12,12,2], [12,11,1], [9,11,1], [12,11,0], [11,11,1], [10,11,1], [15,11,1],
[12,10,0], [11,12,2], [11,10,0], [9,10,1], [9,10,1], [9,10,1], [9,10,1], [9,10,1],
[8,10,0], [8,10,0], [6,15,4], [4,15,4], [6,15,4], [4,15,4], [6,15,4], [6,15,4],
[5,15,4], [4,15,4], [3,15,4], [6,15,4], [6,15,4], [9,15,4], [7,15,4], [4,11,2],
[12,15,14], [10,10,0], [11,11,1], [7,15,4], [9,9,0], [9,9,0], [10,11,2], [10,11,2],
[6,13,3], [6,14,4], [6,13,3], [9,13,3], [11,13,2], [11,14,3], [11,12,1], [11,13,2]
],
cmex10: [
[6,18,17], [5,18,17], [6,18,17], [3,18,17], [7,18,17], [4,18,17], [7,18,17], [4,18,17],
[7,18,17], [7,18,17], [6,18,17], [6,18,17], [3,10,9], [6,10,9], [8,18,17], [8,18,17],
[8,26,25], [6,26,25], [10,35,34], [8,35,34], [8,35,34], [4,35,34], [8,35,34], [5,35,34],
[8,35,34], [5,35,34], [9,35,34], [9,35,34], [10,35,34], [9,35,34], [14,35,34], [14,35,34],
[11,43,42], [8,43,42], [8,43,42], [5,43,42], [9,43,42], [6,43,42], [9,43,42], [6,43,42],
[10,43,42], [10,43,42], [10,43,42], [10,43,42], [18,43,42], [18,43,42], [11,26,25], [11,26,25],
[12,26,25], [9,26,25], [10,26,25], [5,26,25], [10,26,25], [5,26,25], [6,10,9], [5,10,9],
[11,14,13], [8,14,13], [11,14,13], [8,14,13], [8,27,26], [11,27,26], [8,6,5], [5,10,9],
[12,26,25], [9,26,25], [6,10,9], [9,10,9], [8,26,25], [7,26,25], [11,15,14], [15,21,20],
[9,17,16], [14,33,32], [15,15,14], [21,21,20], [15,15,14], [21,21,20], [15,15,14], [21,21,20],
[14,15,14], [13,15,14], [9,17,16], [11,15,14], [11,15,14], [11,15,14], [11,15,14], [11,15,14],
[20,21,20], [18,21,20], [14,33,32], [15,21,20], [15,21,20], [15,21,20], [15,21,20], [15,21,20],
[13,15,14], [18,21,20], [9,4,-7], [16,3,-8], [22,3,-8], [8,3,-8], [14,3,-8], [21,3,-8],
[7,26,25], [4,26,25], [8,26,25], [5,26,25], [8,26,25], [5,26,25], [8,26,25], [8,26,25],
[15,18,17], [15,26,25], [15,35,34], [15,43,42], [11,27,26], [11,10,9], [16,10,9], [8,10,9],
[8,10,9], [8,10,9], [8,5,3], [8,5,3], [8,5,0], [8,5,0], [11,10,9], [11,10,9]
],
cmbx10: [
[9,10,0], [13,10,0], [12,11,1], [11,10,0], [11,10,0], [13,10,0], [11,10,0], [12,10,0],
[11,10,0], [12,10,0], [11,10,0], [11,10,0], [9,10,0], [9,10,0], [13,10,0], [13,10,0],
[4,7,0], [5,10,3], [5,3,-7], [7,3,-7], [7,3,-7], [7,3,-7], [7,2,-7], [8,3,-7],
[7,4,3], [8,11,1], [12,8,1], [13,8,1], [8,10,2], [15,10,0], [16,11,1], [12,12,1],
[5,3,-3], [4,10,0], [7,6,-4], [13,13,3], [8,12,1], [13,12,1], [12,11,1], [4,6,-4],
[6,15,4], [5,15,4], [7,7,-4], [12,11,2], [4,6,3], [5,2,-2], [4,3,0], [8,15,4],
[8,11,1], [7,10,0], [8,10,0], [8,11,1], [8,10,0], [8,11,1], [8,11,1], [8,11,1],
[8,11,1], [8,11,1], [4,7,0], [4,10,3], [4,10,3], [12,5,-1], [7,10,3], [7,10,0],
[12,11,1], [12,10,0], [11,10,0], [11,11,1], [12,10,0], [11,10,0], [10,10,0], [12,11,1],
[13,10,0], [6,10,0], [8,11,1], [12,10,0], [9,10,0], [15,10,0], [13,10,0], [12,11,1],
[11,10,0], [12,13,3], [13,11,1], [9,11,1], [11,10,0], [12,11,1], [12,11,1], [17,11,1],
[12,10,0], [12,10,0], [10,10,0], [5,15,4], [8,6,-4], [3,15,4], [7,3,-7], [4,3,-7],
[4,6,-4], [8,8,1], [9,11,1], [7,8,1], [9,11,1], [7,8,1], [7,10,0], [8,10,3],
[9,10,0], [4,10,0], [5,13,3], [9,10,0], [5,10,0], [14,7,0], [9,7,0], [8,8,1],
[9,10,3], [9,10,3], [7,7,0], [6,8,1], [6,10,1], [9,8,1], [9,8,1], [12,8,1],
[9,7,0], [9,10,3], [7,7,0], [9,2,-3], [17,2,-3], [7,3,-7], [7,2,-8], [7,3,-7]
],
cmti10: [
[10,10,0], [11,11,0], [12,11,1], [9,11,0], [11,10,0], [12,10,0], [11,10,0], [12,10,0],
[11,10,0], [12,10,0], [11,10,0], [12,13,3], [10,13,3], [10,13,3], [14,13,3], [15,13,3],
[5,8,1], [6,10,3], [7,3,-7], [8,3,-7], [8,2,-7], [8,3,-7], [8,2,-7], [10,4,-7],
[5,4,3], [10,13,3], [11,8,1], [11,8,1], [8,10,2], [14,10,0], [15,11,1], [12,12,1],
[5,3,-3], [6,11,0], [8,5,-5], [12,13,3], [10,11,1], [12,12,1], [12,12,1], [6,5,-5],
[8,15,4], [6,15,4], [9,7,-4], [11,9,1], [4,5,3], [5,2,-2], [4,2,0], [9,15,4],
[8,11,1], [7,10,0], [8,11,1], [8,11,1], [7,13,3], [8,11,1], [8,11,1], [9,11,1],
[8,11,1], [8,11,1], [5,7,0], [5,10,3], [5,11,4], [11,5,-1], [7,11,4], [8,11,0],
[12,11,1], [10,11,0], [11,10,0], [12,11,1], [11,10,0], [11,10,0], [11,10,0], [12,11,1],
[12,10,0], [8,10,0], [9,11,1], [13,10,0], [9,10,0], [15,10,0], [12,10,0], [12,11,1],
[11,10,0], [12,13,3], [11,11,1], [9,11,1], [12,10,0], [12,11,1], [13,11,1], [16,11,1],
[12,10,0], [13,10,0], [10,10,0], [7,15,4], [9,5,-5], [7,15,4], [8,3,-7], [6,3,-7],
[6,5,-5], [8,8,1], [7,11,1], [7,8,1], [8,11,1], [7,8,1], [8,13,3], [7,10,3],
[8,11,1], [5,11,1], [6,13,3], [8,11,1], [5,11,1], [12,8,1], [9,8,1], [8,8,1],
[8,10,3], [7,10,3], [7,8,1], [6,8,1], [6,10,1], [8,8,1], [7,8,1], [10,8,1],
[8,8,1], [8,10,3], [7,8,1], [8,1,-3], [15,1,-3], [9,3,-7], [9,3,-7], [8,3,-7]
]
});
jsMath.Img.AddFont(120,{
cmr10: [
[10,12,0], [14,13,0], [13,13,1], [12,13,0], [11,12,0], [13,12,0], [12,12,0], [13,12,0],
[12,12,0], [13,12,0], [12,12,0], [11,12,0], [9,12,0], [9,12,0], [14,12,0], [14,12,0],
[5,8,0], [5,12,4], [5,4,-8], [7,4,-8], [7,3,-8], [7,4,-8], [8,2,-9], [8,4,-9],
[7,5,4], [8,13,1], [12,9,1], [13,9,1], [8,12,2], [15,12,0], [17,13,1], [13,14,1],
[5,3,-4], [4,13,0], [6,6,-6], [14,16,4], [8,14,1], [14,14,1], [13,14,1], [4,6,-6],
[6,18,5], [5,18,5], [8,8,-5], [13,12,2], [4,6,4], [5,2,-3], [4,2,0], [8,18,5],
[8,13,1], [8,12,0], [8,12,0], [8,13,1], [8,12,0], [8,13,1], [8,13,1], [9,13,1],
[8,13,1], [8,13,1], [4,8,0], [4,12,4], [4,13,4], [13,5,-2], [8,13,4], [8,12,0],
[13,13,1], [13,13,0], [12,12,0], [12,13,1], [13,12,0], [12,12,0], [11,12,0], [13,13,1],
[13,12,0], [6,12,0], [8,13,1], [13,12,0], [10,12,0], [15,12,0], [13,12,0], [13,13,1],
[11,12,0], [13,16,4], [13,13,1], [9,13,1], [12,12,0], [13,13,1], [13,13,1], [18,13,1],
[13,12,0], [13,12,0], [10,12,0], [5,18,5], [8,6,-6], [3,18,5], [7,3,-9], [4,3,-9],
[4,6,-6], [9,9,1], [9,13,1], [8,9,1], [9,13,1], [8,9,1], [7,12,0], [9,12,4],
[10,12,0], [5,12,0], [5,16,4], [9,12,0], [5,12,0], [14,8,0], [10,8,0], [8,9,1],
[9,12,4], [9,12,4], [7,8,0], [7,9,1], [6,12,1], [10,9,1], [9,9,1], [12,9,1],
[9,8,0], [9,12,4], [7,8,0], [9,1,-4], [17,1,-4], [8,4,-8], [8,3,-9], [7,3,-9]
],
cmmi10: [
[13,12,0], [14,13,0], [13,13,1], [12,13,0], [14,12,0], [15,12,0], [14,12,0], [12,12,0],
[11,12,0], [12,12,0], [14,12,0], [11,9,1], [11,16,4], [10,12,4], [8,14,1], [7,9,1],
[9,16,4], [9,12,4], [8,13,1], [6,9,1], [10,9,1], [10,13,1], [10,12,4], [9,8,0],
[8,16,4], [10,9,1], [9,12,4], [10,9,1], [9,9,1], [9,9,1], [10,16,4], [11,12,4],
[11,16,4], [11,9,1], [8,9,1], [10,13,1], [14,9,1], [9,12,4], [7,10,2], [11,12,4],
[17,6,-3], [17,6,1], [17,6,-3], [17,6,1], [4,5,-3], [4,5,-3], [9,10,1], [9,10,1],
[8,9,1], [8,8,0], [8,8,0], [8,12,4], [8,12,4], [8,12,4], [8,13,1], [9,12,4],
[8,13,1], [8,12,4], [4,2,0], [4,6,4], [12,11,1], [8,18,5], [12,11,1], [9,9,0],
[10,14,1], [13,13,0], [13,12,0], [13,13,1], [14,12,0], [14,12,0], [13,12,0], [13,13,1],
[15,12,0], [9,12,0], [11,13,1], [16,12,0], [11,12,0], [18,12,0], [15,12,0], [13,13,1],
[13,12,0], [13,16,4], [13,13,1], [11,13,1], [12,12,0], [13,13,1], [14,13,1], [18,13,1],
[15,12,0], [13,12,0], [13,12,0], [6,14,1], [6,17,4], [6,17,4], [17,5,-2], [17,5,-2],
[7,13,1], [9,9,1], [8,13,1], [8,9,1], [9,13,1], [8,9,1], [10,16,4], [9,12,4],
[10,13,1], [5,13,1], [8,16,4], [9,13,1], [5,13,1], [15,9,1], [10,9,1], [8,9,1],
[10,12,4], [8,12,4], [8,9,1], [8,9,1], [6,12,1], [10,9,1], [8,9,1], [12,9,1],
[9,9,1], [9,12,4], [8,9,1], [5,9,1], [8,12,4], [11,12,4], [11,5,-8], [12,3,-9]
],
cmsy10: [
[12,2,-3], [4,3,-3], [11,9,0], [8,8,0], [13,11,1], [9,9,0], [13,12,0], [13,12,3],
[13,12,2], [13,12,2], [13,12,2], [13,12,2], [13,12,2], [17,17,4], [8,8,0], [8,8,0],
[13,9,0], [13,8,0], [12,14,3], [12,14,3], [12,14,3], [12,14,3], [12,14,3], [12,14,3],
[13,5,-2], [13,9,0], [12,11,1], [12,11,1], [17,12,2], [17,12,2], [12,11,1], [12,11,1],
[17,7,-1], [17,7,-1], [8,16,4], [8,16,4], [17,7,-1], [17,16,4], [17,16,4], [13,8,0],
[17,10,1], [17,10,1], [10,16,4], [10,16,4], [17,10,1], [17,16,4], [17,16,4], [13,9,1],
[5,10,0], [17,9,1], [10,11,1], [10,11,1], [15,13,0], [15,13,4], [11,17,4], [3,7,-1],
[10,13,1], [9,12,0], [11,6,-1], [8,16,2], [13,14,1], [12,13,1], [13,12,0], [13,12,0],
[10,12,0], [14,14,1], [12,13,1], [10,13,1], [14,12,0], [10,13,1], [15,13,1], [11,15,3],
[14,13,1], [12,12,0], [15,15,3], [13,13,1], [12,13,1], [19,13,1], [18,15,1], [14,13,1],
[13,13,1], [14,15,3], [15,13,1], [11,13,1], [14,13,0], [13,13,1], [12,13,1], [18,13,1],
[14,12,0], [13,15,3], [14,12,0], [11,12,1], [11,12,1], [11,12,1], [11,12,1], [11,12,1],
[10,12,0], [10,12,0], [8,18,5], [5,18,5], [8,18,5], [5,18,5], [8,18,5], [8,18,5],
[6,18,5], [5,18,5], [3,18,5], [7,18,5], [8,19,5], [10,19,5], [8,18,5], [4,12,2],
[15,18,17], [13,12,0], [14,13,1], [8,17,4], [11,11,0], [11,11,0], [13,14,3], [12,14,3],
[7,16,4], [7,16,4], [7,16,4], [10,16,4], [13,16,3], [13,16,3], [13,14,1], [13,16,3]
],
cmex10: [
[8,21,20], [6,21,20], [7,21,20], [4,21,20], [8,21,20], [5,21,20], [8,21,20], [5,21,20],
[8,21,20], [8,21,20], [7,21,20], [7,21,20], [4,12,11], [7,12,11], [9,21,20], [9,21,20],
[10,31,30], [8,31,30], [12,42,41], [9,42,41], [9,42,41], [5,42,41], [10,42,41], [6,42,41],
[10,42,41], [6,42,41], [11,42,41], [11,42,41], [12,42,41], [11,42,41], [17,42,41], [17,42,41],
[13,52,51], [10,52,51], [10,52,51], [6,52,51], [11,52,51], [7,52,51], [11,52,51], [7,52,51],
[12,52,51], [12,52,51], [12,52,51], [12,52,51], [21,52,51], [21,52,51], [13,31,30], [13,31,30],
[15,32,31], [10,32,31], [12,31,30], [6,31,30], [12,31,30], [6,31,30], [7,12,11], [6,12,11],
[13,17,16], [9,17,16], [13,17,16], [9,17,16], [9,32,31], [13,32,31], [9,7,6], [7,12,11],
[15,31,30], [10,31,30], [7,12,11], [10,12,11], [9,31,30], [9,31,30], [14,18,17], [18,25,24],
[11,20,19], [17,39,38], [18,18,17], [25,25,24], [18,18,17], [25,25,24], [18,18,17], [25,25,24],
[17,18,17], [16,18,17], [11,20,19], [14,18,17], [14,18,17], [14,18,17], [14,18,17], [14,18,17],
[24,25,24], [21,25,24], [17,39,38], [18,25,24], [18,25,24], [18,25,24], [18,25,24], [18,25,24],
[16,18,17], [21,25,24], [11,4,-9], [19,5,-9], [26,5,-9], [10,3,-10], [17,3,-10], [25,3,-10],
[8,31,30], [5,31,30], [9,31,30], [6,31,30], [9,31,30], [6,31,30], [10,31,30], [10,31,30],
[18,21,20], [18,31,30], [18,42,41], [18,52,51], [13,32,31], [13,12,11], [19,11,10], [9,12,11],
[10,12,11], [10,12,11], [9,7,4], [10,7,4], [9,6,0], [10,6,0], [13,12,11], [13,12,11]
],
cmbx10: [
[11,12,0], [16,12,0], [15,13,1], [13,12,0], [13,12,0], [15,12,0], [14,12,0], [15,12,0],
[14,12,0], [15,12,0], [14,12,0], [13,12,0], [11,12,0], [11,12,0], [16,12,0], [16,12,0],
[5,8,0], [6,12,4], [6,4,-8], [8,4,-8], [8,4,-8], [8,4,-8], [9,2,-9], [10,3,-9],
[8,5,4], [10,13,1], [14,9,1], [15,9,1], [10,12,2], [18,12,0], [20,13,1], [15,15,2],
[6,3,-4], [5,12,0], [8,7,-5], [16,16,4], [9,14,1], [16,14,1], [15,13,1], [5,7,-5],
[7,18,5], [6,18,5], [9,8,-5], [15,14,3], [5,7,4], [6,3,-2], [5,3,0], [9,18,5],
[9,13,1], [9,12,0], [9,12,0], [9,13,1], [10,12,0], [9,13,1], [9,13,1], [10,13,1],
[9,13,1], [9,13,1], [5,8,0], [5,12,4], [5,13,4], [15,6,-1], [9,13,4], [9,12,0],
[15,13,1], [15,12,0], [13,12,0], [14,13,1], [14,12,0], [13,12,0], [12,12,0], [15,13,1],
[15,12,0], [7,12,0], [9,13,1], [15,12,0], [11,12,0], [18,12,0], [15,12,0], [14,13,1],
[13,12,0], [14,16,4], [15,13,1], [10,13,1], [13,12,0], [15,13,1], [15,13,1], [20,13,1],
[15,12,0], [15,12,0], [11,12,0], [5,18,5], [10,7,-5], [4,18,5], [8,3,-9], [5,3,-9],
[5,7,-5], [10,9,1], [11,13,1], [9,9,1], [11,13,1], [9,9,1], [8,12,0], [10,12,4],
[11,12,0], [5,12,0], [6,16,4], [10,12,0], [5,12,0], [16,8,0], [11,8,0], [10,9,1],
[11,12,4], [11,12,4], [8,8,0], [8,9,1], [7,12,1], [11,9,1], [10,9,1], [14,9,1],
[10,8,0], [10,12,4], [8,8,0], [10,1,-4], [20,1,-4], [9,5,-8], [9,3,-9], [8,3,-9]
],
cmti10: [
[13,12,0], [13,13,0], [14,13,1], [11,13,0], [13,12,0], [15,12,0], [14,12,0], [15,12,0],
[13,12,0], [15,12,0], [13,12,0], [14,16,4], [12,16,4], [12,16,4], [17,16,4], [18,16,4],
[6,9,1], [7,12,4], [8,4,-8], [10,4,-8], [10,3,-8], [10,4,-8], [10,2,-9], [12,4,-9],
[6,5,4], [11,16,4], [13,9,1], [13,9,1], [10,12,2], [17,12,0], [18,13,1], [14,15,2],
[6,3,-4], [7,13,0], [9,6,-6], [15,16,4], [12,13,1], [15,14,1], [14,14,1], [7,6,-6],
[9,18,5], [7,18,5], [10,8,-5], [13,11,1], [4,6,4], [6,2,-3], [4,2,0], [11,18,5],
[10,13,1], [8,12,0], [10,13,1], [10,13,1], [9,16,4], [10,13,1], [10,13,1], [11,13,1],
[10,13,1], [10,13,1], [6,8,0], [6,12,4], [6,13,4], [14,5,-2], [8,13,4], [10,13,0],
[14,13,1], [12,13,0], [13,12,0], [14,13,1], [14,12,0], [13,12,0], [13,12,0], [14,13,1],
[15,12,0], [9,12,0], [11,13,1], [15,12,0], [11,12,0], [18,12,0], [15,12,0], [14,13,1],
[13,12,0], [14,16,4], [13,13,1], [11,13,1], [14,12,0], [15,13,1], [15,13,1], [20,13,1],
[15,12,0], [15,12,0], [12,12,0], [8,18,5], [11,6,-6], [8,18,5], [9,3,-9], [7,3,-9],
[7,6,-6], [10,9,1], [8,13,1], [8,9,1], [10,13,1], [8,9,1], [9,16,4], [9,12,4],
[10,13,1], [6,13,1], [8,16,4], [9,13,1], [6,13,1], [15,9,1], [10,9,1], [9,9,1],
[9,12,4], [9,12,4], [9,9,1], [8,9,1], [7,12,1], [10,9,1], [9,9,1], [12,9,1],
[9,9,1], [9,12,4], [8,9,1], [10,1,-4], [18,1,-4], [10,4,-8], [10,3,-9], [10,3,-9]
]
});
jsMath.Img.AddFont(144,{
cmr10: [
[12,14,0], [16,15,0], [15,16,1], [14,15,0], [13,14,0], [15,14,0], [14,14,0], [15,15,0],
[14,14,0], [15,14,0], [14,15,0], [13,15,0], [11,15,0], [11,15,0], [17,15,0], [17,15,0],
[5,9,0], [6,14,5], [6,4,-10], [8,4,-10], [8,3,-10], [8,4,-10], [9,1,-11], [10,5,-10],
[8,6,5], [10,16,1], [14,10,1], [15,10,1], [10,14,3], [18,14,0], [20,16,1], [15,17,2],
[6,3,-5], [4,15,0], [7,7,-7], [16,18,4], [9,17,2], [16,17,2], [15,16,1], [5,7,-7],
[7,20,5], [6,20,5], [9,9,-6], [15,14,2], [5,7,4], [6,2,-3], [4,3,0], [9,20,5],
[10,15,1], [9,14,0], [9,14,0], [10,15,1], [10,14,0], [9,15,1], [10,15,1], [10,15,1],
[10,15,1], [10,15,1], [4,9,0], [4,13,4], [4,15,5], [15,6,-2], [9,15,5], [9,15,0],
[15,16,1], [15,15,0], [14,14,0], [14,16,1], [15,14,0], [14,14,0], [13,14,0], [15,16,1],
[15,14,0], [7,14,0], [10,15,1], [15,14,0], [12,14,0], [18,14,0], [15,14,0], [15,16,1],
[13,14,0], [15,19,4], [15,15,1], [10,16,1], [14,14,0], [15,15,1], [15,15,1], [21,15,1],
[15,14,0], [15,14,0], [12,14,0], [6,20,5], [10,7,-7], [4,20,5], [8,4,-10], [4,3,-11],
[4,7,-7], [10,10,1], [11,15,1], [9,10,1], [11,15,1], [9,10,1], [8,15,0], [10,15,5],
[11,14,0], [5,14,0], [6,19,5], [11,14,0], [6,14,0], [17,9,0], [11,9,0], [10,10,1],
[11,13,4], [11,13,4], [8,9,0], [8,10,1], [7,14,1], [11,10,1], [11,10,1], [15,10,1],
[11,9,0], [11,14,5], [9,9,0], [10,1,-5], [20,1,-5], [9,4,-10], [9,3,-11], [8,3,-11]
],
cmmi10: [
[15,14,0], [16,15,0], [15,16,1], [14,15,0], [16,14,0], [18,14,0], [17,14,0], [15,15,0],
[13,14,0], [14,14,0], [16,15,0], [13,10,1], [12,19,4], [11,14,5], [10,16,1], [8,10,1],
[10,19,5], [10,14,5], [10,16,1], [7,10,1], [11,10,1], [11,15,1], [12,14,5], [11,9,0],
[9,19,5], [12,10,1], [11,14,5], [12,10,1], [11,10,1], [11,10,1], [12,19,5], [12,14,5],
[13,19,5], [13,10,1], [9,11,1], [12,16,1], [17,10,1], [11,13,4], [9,12,3], [13,14,5],
[19,7,-4], [19,7,1], [19,7,-4], [19,7,1], [5,6,-4], [5,6,-4], [10,12,1], [10,12,1],
[10,11,1], [9,10,0], [9,10,0], [10,15,5], [10,14,4], [9,15,5], [10,15,1], [10,15,5],
[10,15,1], [10,15,5], [4,3,0], [5,7,4], [14,12,1], [9,20,5], [14,12,1], [10,10,0],
[12,16,1], [15,15,0], [16,14,0], [16,16,1], [17,14,0], [16,14,0], [16,14,0], [16,16,1],
[18,14,0], [10,14,0], [13,15,1], [18,14,0], [13,14,0], [21,14,0], [18,14,0], [15,16,1],
[16,14,0], [15,19,4], [16,15,1], [13,16,1], [15,14,0], [16,15,1], [16,15,1], [21,15,1],
[18,14,0], [16,14,0], [15,14,0], [7,16,1], [7,20,5], [7,20,5], [19,6,-2], [19,6,-2],
[8,16,1], [10,10,1], [9,15,1], [9,10,1], [11,15,1], [9,10,1], [12,20,5], [10,14,5],
[11,15,1], [6,15,1], [9,19,5], [11,15,1], [6,15,1], [17,10,1], [12,10,1], [10,10,1],
[11,13,4], [10,13,4], [9,10,1], [9,10,1], [7,14,1], [11,10,1], [10,10,1], [14,10,1],
[11,10,1], [10,14,5], [10,10,1], [6,10,1], [9,14,5], [13,15,5], [13,5,-10], [13,4,-10]
],
cmsy10: [
[14,2,-4], [4,4,-3], [13,10,0], [9,10,0], [15,12,1], [10,10,0], [15,14,0], [15,14,4],
[15,14,2], [15,14,2], [15,14,2], [15,14,2], [15,14,2], [19,20,5], [9,8,-1], [9,8,-1],
[15,10,0], [15,10,0], [14,16,3], [14,16,3], [14,16,3], [14,16,3], [14,16,3], [14,16,3],
[15,6,-2], [15,9,-1], [14,12,1], [14,12,1], [19,14,2], [19,14,2], [14,12,1], [14,12,1],
[19,8,-1], [19,8,-1], [9,18,4], [9,18,4], [19,8,-1], [19,18,4], [19,18,4], [15,10,0],
[19,12,1], [19,12,1], [12,18,4], [12,18,4], [20,12,1], [19,18,4], [19,18,4], [15,10,1],
[6,12,0], [19,10,1], [12,12,1], [12,12,1], [17,15,0], [17,15,5], [13,20,5], [3,8,-1],
[12,15,1], [10,14,0], [13,7,-1], [10,18,2], [15,16,1], [14,16,1], [15,14,0], [15,14,0],
[12,14,0], [16,16,1], [14,16,1], [11,16,1], [16,14,0], [12,16,1], [17,15,1], [13,18,3],
[17,15,1], [14,14,0], [17,17,3], [15,16,1], [14,16,1], [23,16,1], [21,17,1], [16,16,1],
[15,15,1], [16,18,3], [17,15,1], [13,16,1], [16,15,0], [15,15,1], [14,15,1], [21,15,1],
[17,14,0], [15,17,3], [16,14,0], [13,13,1], [13,13,1], [13,13,1], [13,13,1], [13,13,1],
[12,14,0], [12,14,0], [9,20,5], [6,20,5], [9,20,5], [6,20,5], [9,20,5], [9,20,5],
[7,20,5], [6,20,5], [4,20,5], [8,20,5], [9,22,6], [12,22,6], [9,20,5], [5,14,2],
[18,21,20], [15,14,0], [16,15,1], [10,20,5], [13,12,0], [13,12,0], [15,16,3], [14,16,3],
[8,20,5], [8,20,5], [8,20,5], [12,18,4], [15,18,3], [15,19,4], [15,16,1], [15,18,3]
],
cmex10: [
[9,25,24], [7,25,24], [8,25,24], [5,25,24], [9,25,24], [6,25,24], [9,25,24], [6,25,24],
[10,25,24], [10,25,24], [8,25,24], [8,25,24], [4,14,13], [9,14,13], [11,25,24], [11,25,24],
[12,37,36], [9,37,36], [14,49,48], [11,49,48], [11,49,48], [6,49,48], [12,49,48], [7,49,48],
[12,49,48], [7,49,48], [13,49,48], [13,49,48], [14,49,48], [13,49,48], [20,49,48], [20,49,48],
[16,61,60], [12,61,60], [12,61,60], [7,61,60], [13,61,60], [8,61,60], [13,61,60], [8,61,60],
[14,61,60], [14,61,60], [14,61,60], [14,61,60], [25,61,60], [25,61,60], [16,37,36], [16,37,36],
[17,37,36], [12,37,36], [14,37,36], [7,37,36], [14,37,36], [7,37,36], [8,14,13], [7,14,13],
[15,20,19], [11,20,19], [15,19,18], [11,19,18], [11,38,37], [15,38,37], [11,8,7], [8,14,13],
[17,37,36], [12,37,36], [9,14,13], [12,14,13], [11,37,36], [10,37,36], [16,21,20], [22,29,28],
[13,24,23], [19,46,45], [22,21,20], [30,29,28], [22,21,20], [30,29,28], [22,21,20], [30,29,28],
[20,21,20], [18,21,20], [13,24,23], [16,21,20], [16,21,20], [16,21,20], [16,21,20], [16,21,20],
[28,29,28], [25,29,28], [19,46,45], [22,29,28], [22,29,28], [22,29,28], [22,29,28], [22,29,28],
[18,21,20], [25,29,28], [13,4,-11], [22,5,-11], [30,5,-11], [12,3,-12], [20,3,-12], [29,3,-12],
[10,37,36], [5,37,36], [11,37,36], [7,37,36], [11,37,36], [7,37,36], [11,37,36], [11,37,36],
[21,25,24], [21,37,36], [21,49,48], [21,61,60], [15,37,36], [15,14,13], [22,13,12], [11,14,13],
[12,13,12], [12,13,12], [11,8,5], [11,8,5], [11,7,0], [11,7,0], [15,13,12], [15,13,12]
],
cmbx10: [
[13,14,0], [18,14,0], [17,15,1], [16,14,0], [15,14,0], [18,14,0], [16,14,0], [17,14,0],
[16,14,0], [17,14,0], [16,14,0], [15,14,0], [13,14,0], [13,14,0], [19,14,0], [19,14,0],
[6,9,0], [8,13,4], [7,5,-10], [10,5,-10], [9,4,-10], [10,4,-10], [10,2,-11], [12,5,-10],
[9,5,4], [12,15,1], [16,11,1], [18,11,1], [11,15,3], [21,14,0], [23,15,1], [17,17,2],
[7,4,-5], [6,15,0], [10,8,-6], [18,18,4], [11,17,2], [18,17,2], [17,16,1], [6,8,-6],
[8,20,5], [7,20,5], [10,9,-6], [17,16,3], [5,8,4], [7,3,-3], [5,4,0], [11,20,5],
[11,15,1], [10,14,0], [11,14,0], [11,15,1], [11,14,0], [11,15,1], [11,15,1], [12,15,1],
[11,15,1], [11,15,1], [5,9,0], [5,13,4], [6,15,5], [17,6,-2], [10,14,4], [10,14,0],
[17,15,1], [17,14,0], [16,14,0], [16,15,1], [17,14,0], [15,14,0], [14,14,0], [17,15,1],
[18,14,0], [9,14,0], [11,15,1], [18,14,0], [13,14,0], [22,14,0], [18,14,0], [16,15,1],
[15,14,0], [17,18,4], [18,15,1], [12,15,1], [16,14,0], [17,15,1], [17,15,1], [24,15,1],
[17,14,0], [17,14,0], [13,14,0], [6,20,5], [12,8,-6], [4,20,5], [9,4,-10], [5,4,-10],
[5,8,-6], [12,11,1], [12,15,1], [10,11,1], [13,15,1], [10,11,1], [9,14,0], [12,15,5],
[13,14,0], [6,14,0], [8,18,4], [12,14,0], [6,14,0], [19,9,0], [13,9,0], [11,11,1],
[12,13,4], [13,13,4], [9,9,0], [9,11,1], [8,14,1], [13,10,1], [12,10,1], [17,10,1],
[12,9,0], [12,13,4], [10,9,0], [12,1,-5], [23,1,-5], [10,5,-10], [10,3,-11], [10,3,-11]
],
cmti10: [
[15,14,0], [16,15,0], [16,16,1], [13,15,0], [16,14,0], [18,14,0], [16,14,0], [17,15,0],
[15,14,0], [17,14,0], [16,15,0], [17,20,5], [13,20,5], [14,20,5], [20,20,5], [20,20,5],
[7,10,1], [8,14,5], [9,4,-10], [12,4,-10], [11,3,-10], [12,4,-10], [12,1,-11], [14,5,-10],
[7,5,4], [13,20,5], [15,10,1], [15,10,1], [11,14,3], [20,14,0], [22,16,1], [17,17,2],
[7,3,-5], [8,15,0], [11,7,-7], [17,18,4], [14,16,1], [17,17,2], [17,16,1], [8,7,-7],
[11,20,5], [8,20,5], [12,9,-6], [16,14,2], [5,7,4], [7,2,-3], [5,3,0], [13,20,5],
[12,15,1], [10,14,0], [12,15,1], [12,15,1], [10,18,4], [12,15,1], [12,15,1], [13,15,1],
[12,15,1], [12,15,1], [7,9,0], [7,13,4], [7,15,5], [16,6,-2], [9,15,5], [12,15,0],
[16,16,1], [14,15,0], [15,14,0], [17,16,1], [16,14,0], [15,14,0], [15,14,0], [17,16,1],
[18,14,0], [11,14,0], [13,15,1], [18,14,0], [13,14,0], [21,14,0], [18,14,0], [16,16,1],
[15,14,0], [16,19,4], [15,15,1], [13,16,1], [17,14,0], [18,15,1], [18,15,1], [23,15,1],
[17,14,0], [18,14,0], [15,14,0], [9,20,5], [13,7,-7], [9,20,5], [11,4,-10], [8,3,-11],
[8,7,-7], [11,10,1], [10,15,1], [10,10,1], [12,15,1], [10,10,1], [11,20,5], [10,14,5],
[11,15,1], [7,15,1], [9,19,5], [11,15,1], [7,15,1], [17,10,1], [12,10,1], [11,10,1],
[11,13,4], [10,13,4], [10,10,1], [9,10,1], [8,14,1], [12,10,1], [10,10,1], [14,10,1],
[11,10,1], [11,14,5], [10,10,1], [12,1,-5], [21,1,-5], [12,4,-10], [12,3,-11], [11,3,-11]
]
});
jsMath.Img.AddFont(173,{
cmr10: [
[14,17,0], [19,18,0], [18,18,1], [16,18,0], [15,17,0], [18,17,0], [16,17,0], [18,17,0],
[16,17,0], [18,17,0], [17,17,0], [16,17,0], [13,17,0], [13,17,0], [20,17,0], [20,17,0],
[6,11,0], [7,16,5], [8,5,-12], [10,5,-12], [10,4,-12], [10,5,-12], [11,2,-13], [12,6,-12],
[9,6,5], [12,18,1], [17,12,1], [18,12,1], [12,16,3], [21,17,0], [24,18,1], [18,20,2],
[7,4,-6], [5,18,0], [9,8,-9], [19,22,5], [11,20,2], [19,20,2], [18,19,1], [5,8,-9],
[8,24,6], [7,24,6], [11,11,-7], [18,16,2], [5,8,5], [7,2,-4], [5,3,0], [11,24,6],
[12,17,1], [11,16,0], [11,16,0], [11,17,1], [12,17,0], [11,17,1], [11,17,1], [12,18,1],
[11,17,1], [11,17,1], [5,11,0], [5,16,5], [5,18,6], [18,6,-3], [10,17,5], [10,17,0],
[18,18,1], [18,18,0], [16,17,0], [16,18,1], [17,17,0], [16,17,0], [15,17,0], [18,18,1],
[18,17,0], [8,17,0], [12,18,1], [18,17,0], [14,17,0], [22,17,0], [18,17,0], [18,18,1],
[15,17,0], [18,22,5], [18,18,1], [12,18,1], [17,17,0], [18,18,1], [18,18,1], [25,18,1],
[18,17,0], [18,17,0], [14,17,0], [7,24,6], [12,8,-9], [4,24,6], [10,5,-12], [5,4,-13],
[5,8,-9], [12,12,1], [13,18,1], [10,12,1], [13,18,1], [10,12,1], [9,17,0], [12,16,5],
[13,17,0], [6,17,0], [7,22,5], [13,17,0], [7,17,0], [20,11,0], [13,11,0], [12,12,1],
[13,16,5], [13,16,5], [9,11,0], [9,12,1], [8,16,1], [13,12,1], [13,12,1], [17,12,1],
[13,11,0], [13,16,5], [10,11,0], [12,1,-6], [24,1,-6], [11,5,-12], [10,4,-13], [10,4,-13]
],
cmmi10: [
[18,17,0], [19,18,0], [18,18,1], [16,18,0], [19,17,0], [22,17,0], [20,17,0], [17,17,0],
[16,17,0], [17,17,0], [19,17,0], [15,12,1], [15,22,5], [14,17,6], [11,19,1], [10,12,1],
[12,22,5], [12,17,6], [11,18,1], [8,12,1], [14,12,1], [14,18,1], [14,17,6], [13,11,0],
[11,22,5], [14,12,1], [13,17,6], [14,12,1], [13,12,1], [13,12,1], [14,22,5], [15,16,5],
[16,22,5], [15,12,1], [11,12,1], [14,18,1], [20,12,1], [13,16,5], [10,14,3], [15,17,6],
[23,8,-5], [23,8,1], [23,8,-5], [23,8,1], [6,7,-5], [6,7,-5], [12,14,1], [12,14,1],
[12,12,1], [11,11,0], [11,11,0], [11,17,6], [12,17,5], [11,17,6], [11,17,1], [12,18,6],
[11,17,1], [11,17,6], [5,3,0], [5,8,5], [17,14,1], [11,24,6], [17,14,1], [12,12,0],
[14,19,1], [18,18,0], [19,17,0], [19,18,1], [20,17,0], [19,17,0], [19,17,0], [19,18,1],
[22,17,0], [12,17,0], [16,18,1], [22,17,0], [16,17,0], [26,17,0], [22,17,0], [18,18,1],
[19,17,0], [18,22,5], [19,18,1], [16,18,1], [17,17,0], [19,18,1], [19,18,1], [26,18,1],
[21,17,0], [19,17,0], [18,17,0], [8,19,1], [8,24,6], [8,24,6], [23,6,-3], [23,7,-3],
[10,18,1], [12,12,1], [10,18,1], [11,12,1], [13,18,1], [11,12,1], [14,22,5], [12,16,5],
[14,18,1], [8,17,1], [11,21,5], [13,18,1], [7,18,1], [21,12,1], [14,12,1], [12,12,1],
[13,16,5], [11,16,5], [11,12,1], [11,12,1], [8,17,1], [14,12,1], [12,12,1], [17,12,1],
[13,12,1], [12,16,5], [12,12,1], [8,12,1], [10,16,5], [15,17,6], [15,6,-12], [16,4,-12]
],
cmsy10: [
[17,2,-5], [5,4,-4], [16,12,0], [11,12,0], [18,14,1], [12,12,0], [18,16,0], [18,16,4],
[18,16,2], [18,16,2], [18,16,2], [18,16,2], [18,16,2], [23,24,6], [11,10,-1], [11,10,-1],
[18,12,0], [18,12,0], [17,20,4], [17,20,4], [17,20,4], [17,20,4], [17,20,4], [17,20,4],
[18,6,-3], [18,11,-1], [17,14,1], [17,14,1], [23,16,2], [23,16,2], [17,14,1], [17,14,1],
[23,10,-1], [23,10,-1], [11,22,5], [11,22,5], [23,10,-1], [23,22,5], [23,22,5], [18,12,0],
[23,14,1], [23,14,1], [14,22,5], [14,22,5], [24,14,1], [23,22,5], [23,22,5], [18,12,1],
[7,13,-1], [23,12,1], [14,14,1], [14,14,1], [20,18,0], [20,18,6], [16,24,6], [3,10,-1],
[14,18,1], [12,17,0], [15,7,-2], [11,21,2], [18,19,1], [17,18,1], [18,16,0], [18,16,0],
[14,17,0], [20,20,2], [16,18,1], [13,18,1], [19,17,0], [14,18,1], [20,18,1], [15,20,3],
[20,19,2], [17,17,0], [21,20,3], [18,18,1], [16,18,1], [27,19,2], [25,21,2], [19,18,1],
[18,19,2], [19,20,3], [21,18,1], [16,18,1], [20,18,0], [18,18,1], [16,19,2], [25,19,2],
[20,17,0], [18,21,4], [19,17,0], [15,16,1], [15,16,1], [15,16,1], [15,16,1], [15,16,1],
[14,17,0], [14,17,0], [11,24,6], [7,24,6], [11,24,6], [7,24,6], [11,24,6], [11,24,6],
[8,24,6], [7,24,6], [4,24,6], [9,24,6], [11,26,7], [14,26,7], [11,24,6], [6,16,2],
[21,25,24], [18,17,0], [19,18,1], [12,24,6], [15,15,0], [15,15,0], [18,20,4], [17,20,4],
[9,22,5], [10,23,6], [10,22,5], [14,22,5], [18,22,4], [18,22,4], [18,19,1], [18,22,4]
],
cmex10: [
[10,29,28], [8,29,28], [10,29,28], [6,29,28], [11,29,28], [7,29,28], [11,29,28], [7,29,28],
[12,29,28], [12,29,28], [10,29,28], [9,29,28], [5,16,15], [10,16,15], [13,29,28], [13,29,28],
[14,44,43], [10,44,43], [17,58,57], [13,58,57], [13,58,57], [7,58,57], [14,58,57], [8,58,57],
[14,58,57], [8,58,57], [15,58,57], [15,58,57], [16,58,57], [15,58,57], [24,58,57], [24,58,57],
[19,73,72], [14,73,72], [14,73,72], [8,73,72], [16,73,72], [9,73,72], [16,73,72], [9,73,72],
[16,73,72], [16,73,72], [17,73,72], [16,73,72], [30,73,72], [30,73,72], [19,44,43], [19,44,43],
[21,44,43], [14,44,43], [16,44,43], [9,44,43], [16,44,43], [9,44,43], [10,16,15], [9,16,15],
[18,23,22], [13,23,22], [18,23,22], [13,23,22], [13,45,44], [18,45,44], [13,9,8], [9,16,15],
[21,45,43], [14,45,43], [10,16,15], [14,16,15], [13,44,43], [12,44,43], [19,25,24], [26,35,34],
[15,28,27], [23,55,54], [26,25,24], [35,35,34], [26,25,24], [35,35,34], [26,25,24], [35,35,34],
[24,25,24], [22,25,24], [15,28,27], [19,25,24], [19,25,24], [19,25,24], [19,25,24], [19,25,24],
[34,35,34], [30,35,34], [23,55,54], [26,35,34], [26,35,34], [26,35,34], [26,35,34], [26,35,34],
[22,25,24], [30,35,34], [15,5,-13], [26,6,-13], [36,6,-13], [14,4,-14], [24,4,-14], [35,4,-14],
[11,44,43], [6,44,43], [13,44,43], [8,44,43], [13,44,43], [8,44,43], [14,44,43], [14,44,43],
[25,29,28], [25,44,43], [25,58,57], [25,73,72], [18,45,44], [18,16,15], [26,15,14], [13,16,15],
[14,16,15], [14,16,15], [13,9,6], [13,9,6], [13,9,0], [13,9,0], [18,16,15], [18,16,15]
],
cmbx10: [
[16,17,0], [22,17,0], [20,18,1], [19,17,0], [18,17,0], [21,17,0], [19,17,0], [20,17,0],
[19,17,0], [20,17,0], [19,17,0], [18,17,0], [15,17,0], [15,17,0], [23,17,0], [23,17,0],
[7,11,0], [9,16,5], [9,5,-12], [11,5,-12], [11,4,-12], [12,5,-12], [12,2,-13], [14,5,-12],
[11,6,5], [14,18,1], [20,12,1], [21,12,1], [14,17,3], [25,17,0], [28,18,1], [20,20,2],
[8,4,-6], [7,17,0], [12,9,-8], [22,22,5], [13,20,2], [22,20,2], [21,18,1], [7,9,-8],
[10,24,6], [9,24,6], [12,11,-7], [20,20,4], [6,9,5], [8,3,-4], [6,4,0], [13,24,6],
[13,17,1], [12,16,0], [13,16,0], [13,17,1], [14,16,0], [13,17,1], [13,17,1], [14,18,1],
[13,17,1], [13,17,1], [6,11,0], [6,16,5], [7,17,5], [20,8,-2], [12,17,5], [12,17,0],
[20,18,1], [20,17,0], [19,17,0], [19,18,1], [20,17,0], [18,17,0], [17,17,0], [21,18,1],
[21,17,0], [10,17,0], [13,18,1], [21,17,0], [16,17,0], [26,17,0], [21,17,0], [20,18,1],
[18,17,0], [20,22,5], [21,18,1], [14,18,1], [19,17,0], [21,18,1], [21,18,1], [28,18,1],
[21,17,0], [21,17,0], [16,17,0], [8,24,6], [14,9,-8], [5,24,6], [11,5,-12], [6,5,-12],
[6,9,-8], [14,12,1], [15,18,1], [12,12,1], [15,18,1], [12,12,1], [11,17,0], [14,16,5],
[15,17,0], [7,17,0], [9,22,5], [15,17,0], [8,17,0], [23,11,0], [15,11,0], [14,12,1],
[15,16,5], [15,16,5], [11,11,0], [10,12,1], [10,17,1], [15,12,1], [14,12,1], [20,12,1],
[15,11,0], [14,16,5], [12,11,0], [14,2,-6], [28,2,-6], [12,6,-12], [12,3,-14], [12,4,-13]
],
cmti10: [
[17,17,0], [19,18,0], [19,18,1], [16,18,0], [19,17,0], [21,17,0], [19,17,0], [20,17,0],
[18,17,0], [20,17,0], [19,17,0], [20,22,5], [16,22,5], [17,22,5], [23,22,5], [24,22,5],
[8,12,1], [9,16,5], [11,5,-12], [14,5,-12], [13,4,-12], [14,5,-12], [14,2,-13], [17,6,-12],
[9,6,5], [15,22,5], [18,12,1], [18,12,1], [14,16,3], [23,17,0], [26,18,1], [20,20,2],
[9,4,-6], [9,18,0], [13,8,-9], [20,22,5], [17,18,1], [21,20,2], [20,19,1], [9,8,-9],
[13,24,6], [10,24,6], [14,11,-7], [19,16,2], [6,8,5], [9,2,-4], [6,3,0], [15,24,6],
[14,17,1], [12,16,0], [14,17,1], [14,17,1], [12,21,5], [14,17,1], [14,17,1], [15,17,1],
[14,17,1], [14,17,1], [8,11,0], [8,16,5], [8,18,6], [19,6,-3], [11,18,6], [14,18,0],
[19,18,1], [17,18,0], [18,17,0], [20,18,1], [19,17,0], [18,17,0], [18,17,0], [20,18,1],
[21,17,0], [13,17,0], [15,18,1], [21,17,0], [15,17,0], [25,17,0], [21,17,0], [19,18,1],
[18,17,0], [19,22,5], [18,18,1], [16,18,1], [20,17,0], [21,18,1], [21,18,1], [27,18,1],
[20,17,0], [21,17,0], [17,17,0], [11,24,6], [15,8,-9], [10,24,6], [13,5,-12], [9,4,-13],
[9,8,-9], [13,12,1], [12,18,1], [12,12,1], [14,18,1], [12,12,1], [12,22,5], [12,16,5],
[13,18,1], [8,17,1], [10,21,5], [13,18,1], [8,18,1], [21,12,1], [15,12,1], [13,12,1],
[13,16,5], [12,16,5], [12,12,1], [11,12,1], [9,17,1], [14,12,1], [12,12,1], [17,12,1],
[13,12,1], [13,16,5], [12,12,1], [14,1,-6], [25,1,-6], [14,5,-12], [14,4,-13], [14,4,-13]
]
});
jsMath.Img.AddFont(207,{
cmr10: [
[17,20,0], [23,21,0], [21,22,1], [20,21,0], [19,20,0], [21,20,0], [20,20,0], [21,21,0],
[20,20,0], [21,20,0], [20,21,0], [19,21,0], [16,21,0], [16,21,0], [24,21,0], [24,21,0],
[8,13,0], [9,19,6], [9,7,-14], [12,7,-14], [12,5,-14], [12,6,-15], [13,2,-16], [14,6,-15],
[11,7,6], [14,22,1], [21,14,1], [22,14,1], [14,19,3], [26,20,0], [29,22,1], [21,24,2],
[8,4,-8], [6,21,0], [11,10,-11], [23,27,6], [13,24,2], [23,24,2], [22,22,1], [6,10,-11],
[10,30,8], [9,30,8], [13,13,-9], [21,20,3], [6,10,6], [8,3,-5], [6,4,0], [13,30,8],
[14,21,1], [13,20,0], [14,20,0], [14,21,1], [14,20,0], [14,21,1], [14,21,1], [15,21,1],
[14,21,1], [14,21,1], [6,13,0], [6,19,6], [6,22,7], [21,8,-3], [13,21,6], [13,21,0],
[21,22,1], [21,21,0], [19,20,0], [20,22,1], [21,20,0], [19,20,0], [18,20,0], [22,22,1],
[21,20,0], [10,20,0], [14,21,1], [22,20,0], [17,20,0], [26,20,0], [21,20,0], [21,22,1],
[19,20,0], [22,27,6], [22,21,1], [15,22,1], [20,20,0], [21,21,1], [22,21,1], [30,21,1],
[22,20,0], [22,20,0], [17,20,0], [8,30,8], [14,10,-11], [5,30,8], [12,6,-15], [6,4,-16],
[6,10,-11], [15,14,1], [16,22,1], [13,14,1], [16,22,1], [13,14,1], [11,21,0], [15,20,6],
[16,21,0], [8,20,0], [9,26,6], [15,21,0], [8,21,0], [24,13,0], [16,13,0], [14,14,1],
[16,19,6], [16,19,6], [11,13,0], [11,14,1], [10,19,1], [16,14,1], [15,14,1], [21,14,1],
[15,13,0], [15,19,6], [12,13,0], [15,2,-7], [29,2,-7], [13,7,-14], [13,4,-16], [12,4,-16]
],
cmmi10: [
[21,20,0], [23,21,0], [22,22,1], [20,21,0], [23,20,0], [26,20,0], [24,20,0], [21,21,0],
[19,20,0], [21,20,0], [23,21,0], [18,14,1], [18,27,6], [16,20,7], [14,22,1], [11,14,1],
[14,27,6], [15,20,7], [14,22,1], [10,14,1], [16,14,1], [16,22,1], [17,20,7], [16,13,0],
[13,27,6], [17,14,1], [15,20,7], [17,14,1], [15,14,1], [16,14,1], [17,27,6], [18,19,6],
[19,27,6], [18,14,1], [13,15,1], [17,22,1], [24,14,1], [15,19,6], [12,17,4], [18,20,7],
[28,9,-6], [28,9,1], [28,9,-6], [28,9,1], [7,8,-6], [7,8,-6], [14,16,1], [14,16,1],
[14,15,1], [13,14,0], [14,14,0], [14,21,7], [14,20,6], [14,21,7], [14,21,1], [15,21,7],
[14,21,1], [14,21,7], [6,4,0], [6,10,6], [21,18,2], [13,30,8], [21,18,2], [15,15,0],
[17,22,1], [21,21,0], [22,20,0], [23,22,1], [24,20,0], [23,20,0], [22,20,0], [23,22,1],
[26,20,0], [15,20,0], [19,21,1], [26,20,0], [19,20,0], [31,20,0], [26,20,0], [22,22,1],
[22,20,0], [22,27,6], [22,21,1], [19,22,1], [21,20,0], [23,21,1], [23,21,1], [31,21,1],
[25,20,0], [23,20,0], [21,20,0], [10,23,1], [9,29,7], [10,28,7], [28,8,-3], [28,9,-3],
[12,22,1], [15,14,1], [13,22,1], [13,14,1], [15,22,1], [13,14,1], [17,27,6], [14,19,6],
[16,22,1], [9,21,1], [13,26,6], [15,22,1], [8,22,1], [25,14,1], [17,14,1], [14,14,1],
[16,19,6], [14,19,6], [13,14,1], [13,14,1], [10,20,1], [16,14,1], [14,14,1], [21,14,1],
[16,14,1], [15,19,6], [14,14,1], [9,14,1], [12,19,6], [18,21,7], [19,7,-14], [19,5,-15]
],
cmsy10: [
[21,2,-6], [6,4,-5], [19,15,0], [13,14,0], [21,17,1], [15,15,0], [21,20,0], [21,20,5],
[21,20,3], [21,20,3], [21,20,3], [21,20,3], [21,20,3], [28,28,7], [13,12,-1], [13,12,-1],
[21,15,0], [21,13,-1], [21,23,4], [21,23,4], [21,23,4], [21,23,4], [21,23,4], [21,23,4],
[21,8,-3], [21,13,-1], [21,18,2], [21,18,2], [28,19,2], [28,19,2], [21,18,2], [21,18,2],
[28,11,-2], [28,11,-2], [13,27,6], [13,27,6], [28,11,-2], [28,27,6], [28,27,6], [21,13,-1],
[28,17,1], [28,17,1], [17,27,6], [17,27,6], [28,17,1], [28,27,6], [28,27,6], [21,14,1],
[8,16,-1], [28,14,1], [17,18,2], [17,18,2], [25,21,0], [25,22,7], [19,28,7], [4,12,-1],
[17,22,1], [15,21,0], [18,9,-2], [14,26,3], [21,22,1], [21,22,1], [21,20,0], [21,20,0],
[17,21,0], [24,23,2], [20,22,1], [16,22,1], [23,20,0], [17,22,1], [25,21,1], [18,25,4],
[24,22,2], [20,20,0], [25,24,4], [22,22,1], [20,22,1], [33,23,2], [30,25,2], [23,22,1],
[22,22,2], [23,25,4], [25,21,1], [19,22,1], [24,21,0], [21,21,1], [20,22,2], [31,22,2],
[24,20,0], [21,24,4], [23,20,0], [18,19,1], [18,19,1], [18,19,1], [18,19,1], [18,19,1],
[17,21,0], [17,21,0], [13,30,8], [8,30,8], [13,30,8], [8,30,8], [13,30,8], [13,30,8],
[10,30,8], [9,30,8], [5,30,8], [11,30,8], [13,31,8], [17,31,8], [13,30,8], [7,20,3],
[25,30,28], [21,20,0], [23,21,1], [14,28,7], [18,18,0], [18,18,0], [21,23,4], [21,23,4],
[11,27,6], [12,28,7], [12,27,6], [17,27,6], [22,26,4], [21,27,5], [21,22,1], [21,26,4]
],
cmex10: [
[12,36,34], [9,36,34], [12,36,34], [7,36,34], [14,36,34], [8,36,34], [14,36,34], [8,36,34],
[14,36,34], [14,36,34], [12,36,34], [11,36,34], [6,20,19], [12,20,19], [16,36,34], [16,36,34],
[17,54,52], [13,54,52], [21,71,69], [16,71,69], [15,71,69], [9,71,69], [17,71,69], [10,71,69],
[17,71,69], [10,71,69], [18,71,69], [18,71,69], [19,71,69], [19,71,69], [29,71,69], [29,71,69],
[22,88,86], [17,88,86], [17,88,86], [9,88,86], [19,88,86], [11,88,86], [19,88,86], [11,88,86],
[20,88,86], [20,88,86], [21,88,86], [20,88,86], [36,88,86], [36,88,86], [22,54,52], [22,54,52],
[25,54,52], [17,54,52], [20,54,52], [10,54,52], [20,54,52], [10,54,52], [12,19,18], [10,19,18],
[21,28,27], [15,28,27], [21,28,27], [15,28,27], [15,54,53], [21,54,53], [15,10,9], [11,19,18],
[25,54,52], [17,54,52], [12,19,18], [17,19,18], [16,54,52], [15,54,52], [23,30,29], [31,42,41],
[18,34,33], [28,66,65], [31,30,29], [43,42,41], [31,30,29], [43,42,41], [31,30,29], [43,42,41],
[29,30,29], [26,30,29], [18,34,33], [23,30,29], [23,30,29], [23,30,29], [23,30,29], [23,30,29],
[41,42,41], [36,42,41], [28,66,65], [31,42,41], [31,42,41], [31,42,41], [31,42,41], [31,42,41],
[26,30,29], [36,42,41], [18,6,-16], [31,7,-16], [43,7,-16], [17,4,-17], [29,4,-18], [42,4,-18],
[14,54,52], [8,54,52], [15,54,52], [9,54,52], [15,54,52], [9,54,52], [16,54,52], [16,54,52],
[30,36,34], [30,54,52], [30,71,69], [30,88,86], [22,54,53], [22,19,18], [32,19,17], [16,19,18],
[17,19,18], [17,19,18], [15,11,7], [15,11,7], [15,10,0], [15,10,0], [21,19,18], [21,19,18]
],
cmbx10: [
[19,20,0], [27,21,0], [25,22,1], [23,21,0], [21,20,0], [25,20,0], [23,20,0], [25,21,0],
[23,20,0], [25,20,0], [23,21,0], [22,21,0], [18,21,0], [18,21,0], [27,21,0], [27,21,0],
[9,14,0], [10,20,6], [10,7,-14], [14,7,-14], [13,4,-15], [14,7,-14], [15,2,-16], [17,6,-15],
[13,7,6], [17,22,1], [24,15,1], [25,15,1], [16,21,4], [30,20,0], [33,22,1], [25,24,2],
[10,4,-8], [8,21,0], [14,12,-9], [26,27,6], [15,24,2], [26,24,2], [25,22,1], [8,12,-9],
[12,30,8], [10,30,8], [15,14,-8], [25,23,4], [8,11,6], [10,3,-5], [7,5,0], [15,30,8],
[16,20,1], [15,19,0], [15,19,0], [16,20,1], [16,20,0], [15,20,1], [16,20,1], [17,21,1],
[16,20,1], [16,20,1], [7,13,0], [7,19,6], [8,21,6], [25,9,-3], [14,21,6], [14,21,0],
[25,22,1], [24,21,0], [22,20,0], [23,22,1], [24,20,0], [21,20,0], [20,20,0], [25,22,1],
[25,20,0], [12,20,0], [16,21,1], [25,20,0], [19,20,0], [31,20,0], [25,20,0], [24,22,1],
[21,20,0], [24,27,6], [25,21,1], [17,22,1], [22,20,0], [25,21,1], [25,21,1], [34,21,1],
[25,20,0], [25,20,0], [19,20,0], [9,30,8], [17,12,-9], [6,30,8], [13,6,-15], [7,6,-15],
[7,12,-9], [17,15,1], [18,22,1], [14,15,1], [18,22,1], [15,15,1], [13,21,0], [17,20,6],
[18,21,0], [9,21,0], [10,27,6], [18,21,0], [9,21,0], [28,14,0], [18,14,0], [16,15,1],
[18,20,6], [18,20,6], [13,14,0], [13,15,1], [12,20,1], [18,15,1], [17,14,1], [24,14,1],
[17,13,0], [17,19,6], [14,13,0], [17,2,-7], [34,2,-7], [15,7,-14], [14,4,-17], [14,6,-15]
],
cmti10: [
[21,20,0], [22,21,0], [23,22,1], [19,21,0], [22,20,0], [25,20,0], [23,20,0], [25,21,0],
[22,20,0], [24,20,0], [23,21,0], [23,27,6], [19,27,6], [20,27,6], [28,27,6], [29,27,6],
[10,14,1], [12,19,6], [13,7,-14], [16,7,-14], [16,5,-14], [17,6,-15], [17,2,-16], [20,6,-15],
[10,7,6], [18,27,6], [21,14,1], [21,14,1], [16,20,4], [28,20,0], [31,22,1], [24,24,2],
[10,4,-8], [11,21,0], [15,10,-11], [25,27,6], [21,22,1], [25,24,2], [24,22,1], [11,10,-11],
[15,30,8], [12,30,8], [17,13,-9], [22,19,2], [7,10,6], [10,3,-5], [7,4,0], [18,30,8],
[17,21,1], [14,20,0], [16,21,1], [17,21,1], [14,26,6], [17,21,1], [17,21,1], [19,21,1],
[17,21,1], [17,21,1], [9,13,0], [9,19,6], [10,22,7], [23,8,-3], [13,22,7], [16,21,0],
[23,22,1], [21,21,0], [22,20,0], [24,22,1], [23,20,0], [22,20,0], [22,20,0], [24,22,1],
[25,20,0], [15,20,0], [19,21,1], [25,20,0], [19,20,0], [30,20,0], [25,20,0], [23,22,1],
[22,20,0], [23,27,6], [21,21,1], [19,22,1], [24,20,0], [25,21,1], [26,21,1], [33,21,1],
[24,20,0], [26,20,0], [21,20,0], [13,30,8], [18,10,-11], [12,30,8], [16,6,-15], [11,4,-16],
[11,10,-11], [16,14,1], [14,22,1], [14,14,1], [17,22,1], [14,14,1], [15,27,6], [15,19,6],
[16,22,1], [10,21,1], [13,26,6], [15,22,1], [9,22,1], [25,14,1], [17,14,1], [15,14,1],
[15,19,6], [15,19,6], [15,14,1], [13,14,1], [11,20,1], [17,14,1], [15,14,1], [21,14,1],
[16,14,1], [15,19,6], [14,14,1], [16,2,-7], [31,2,-7], [17,7,-14], [17,4,-16], [16,4,-16]
]
});
jsMath.Img.AddFont(249,{
cmr10: [
[20,24,0], [27,25,0], [25,25,1], [23,25,0], [22,24,0], [25,24,0], [23,24,0], [25,24,0],
[23,24,0], [25,24,0], [24,24,0], [22,24,0], [18,24,0], [18,24,0], [28,24,0], [28,24,0],
[9,16,0], [10,23,7], [10,7,-17], [14,7,-17], [13,5,-17], [14,7,-17], [15,2,-19], [16,7,-18],
[13,8,7], [17,25,1], [24,17,1], [26,17,1], [16,23,4], [30,24,0], [34,25,1], [25,28,2],
[9,5,-9], [7,25,0], [12,11,-13], [27,31,7], [16,28,2], [27,28,2], [25,26,1], [7,11,-13],
[12,35,9], [10,35,9], [15,16,-10], [25,23,3], [7,11,7], [10,3,-6], [7,4,0], [16,35,9],
[16,24,1], [15,23,0], [16,23,0], [16,24,1], [17,24,0], [16,24,1], [16,24,1], [17,24,1],
[16,24,1], [16,24,1], [7,15,0], [7,22,7], [7,25,8], [25,9,-4], [15,24,7], [15,24,0],
[25,25,1], [25,25,0], [23,24,0], [23,25,1], [25,24,0], [23,24,0], [21,24,0], [25,25,1],
[25,24,0], [12,24,0], [16,25,1], [26,24,0], [20,24,0], [30,24,0], [25,24,0], [25,25,1],
[22,24,0], [25,31,7], [25,25,1], [17,25,1], [24,24,0], [25,25,1], [25,25,1], [35,25,1],
[25,24,0], [26,24,0], [20,24,0], [9,35,9], [16,11,-13], [6,35,9], [14,6,-18], [7,4,-19],
[7,11,-13], [17,17,1], [18,25,1], [15,17,1], [18,25,1], [15,17,1], [13,24,0], [17,23,7],
[19,24,0], [9,23,0], [10,30,7], [18,24,0], [9,24,0], [28,16,0], [19,16,0], [17,17,1],
[18,23,7], [18,23,7], [13,16,0], [13,17,1], [12,22,1], [19,17,1], [18,16,1], [24,16,1],
[18,15,0], [18,22,7], [14,15,0], [17,2,-8], [34,2,-8], [15,7,-17], [15,4,-19], [14,4,-19]
],
cmmi10: [
[25,24,0], [27,25,0], [26,25,1], [23,25,0], [27,24,0], [30,24,0], [28,24,0], [24,24,0],
[22,24,0], [24,24,0], [27,24,0], [21,17,1], [21,31,7], [19,24,8], [16,26,1], [13,16,1],
[17,31,7], [17,24,8], [16,25,1], [12,17,1], [19,17,1], [19,25,1], [20,24,8], [18,16,0],
[16,31,7], [20,16,1], [18,24,8], [20,16,1], [18,16,1], [18,17,1], [20,31,7], [21,23,7],
[22,31,7], [21,17,1], [15,17,1], [20,25,1], [28,16,1], [18,23,7], [14,20,4], [22,24,8],
[33,11,-7], [33,11,1], [33,11,-7], [33,11,1], [8,9,-7], [8,9,-7], [17,19,1], [17,19,1],
[16,17,1], [15,16,0], [16,16,0], [16,24,8], [17,23,7], [16,24,8], [16,24,1], [17,24,8],
[16,24,1], [16,24,8], [7,4,0], [7,11,7], [24,21,2], [16,35,9], [24,21,2], [17,17,0],
[20,26,1], [25,25,0], [26,24,0], [26,25,1], [28,24,0], [27,24,0], [26,24,0], [26,25,1],
[30,24,0], [17,24,0], [22,25,1], [31,24,0], [22,24,0], [36,24,0], [30,24,0], [26,25,1],
[26,24,0], [26,31,7], [26,25,1], [22,25,1], [24,24,0], [26,25,1], [27,25,1], [36,25,1],
[29,24,0], [26,24,0], [25,24,0], [12,27,1], [11,33,8], [12,33,8], [33,9,-4], [33,9,-4],
[14,25,1], [17,17,1], [15,25,1], [15,17,1], [18,25,1], [15,17,1], [19,31,7], [17,23,7],
[19,25,1], [10,24,1], [15,30,7], [18,25,1], [9,25,1], [29,17,1], [20,17,1], [16,17,1],
[19,23,7], [16,23,7], [15,17,1], [15,17,1], [12,23,1], [19,17,1], [16,17,1], [24,17,1],
[18,17,1], [17,23,7], [16,17,1], [10,17,1], [14,23,7], [22,24,8], [22,8,-17], [23,5,-18]
],
cmsy10: [
[24,3,-7], [7,5,-6], [22,17,0], [15,15,-1], [25,21,2], [17,17,0], [25,23,0], [25,23,6],
[25,23,3], [25,23,3], [25,23,3], [25,23,3], [25,23,3], [33,33,8], [16,15,-1], [16,15,-1],
[25,17,0], [25,15,-1], [24,27,5], [24,27,5], [24,27,5], [24,27,5], [24,27,5], [24,27,5],
[25,9,-4], [25,16,-1], [24,21,2], [24,21,2], [33,23,3], [33,23,3], [24,21,2], [24,21,2],
[33,13,-2], [33,13,-2], [15,31,7], [15,31,7], [33,13,-2], [33,31,7], [33,31,7], [25,15,-1],
[33,19,1], [33,19,1], [20,31,7], [20,31,7], [33,19,1], [33,31,7], [33,31,7], [25,17,1],
[9,18,-1], [33,17,1], [20,21,2], [20,21,2], [29,25,0], [29,25,8], [22,33,8], [5,13,-2],
[19,25,1], [17,24,0], [21,10,-3], [16,30,3], [25,26,1], [24,25,1], [25,23,0], [25,23,0],
[19,24,0], [28,27,2], [23,25,1], [19,25,1], [27,24,0], [20,25,1], [29,26,2], [21,29,5],
[28,26,2], [23,24,0], [29,29,5], [25,25,1], [23,25,1], [38,26,2], [35,29,2], [27,25,1],
[25,26,2], [27,29,5], [29,25,1], [22,25,1], [28,25,0], [25,25,1], [23,26,2], [36,26,2],
[28,24,0], [25,29,5], [27,24,0], [21,22,1], [21,22,1], [21,22,1], [21,22,1], [21,22,1],
[19,24,0], [19,24,0], [15,35,9], [10,35,9], [15,35,9], [10,35,9], [15,35,9], [15,35,9],
[12,35,9], [10,35,9], [6,35,9], [13,35,9], [15,37,10], [20,37,10], [16,35,9], [8,23,3],
[29,35,33], [25,24,0], [27,26,2], [17,33,8], [21,21,0], [21,21,0], [25,27,5], [24,27,5],
[13,31,7], [14,32,8], [14,31,7], [20,31,7], [26,30,5], [25,31,6], [25,27,2], [25,30,5]
],
cmex10: [
[15,42,40], [11,42,40], [14,42,40], [8,42,40], [16,42,40], [10,42,40], [16,42,40], [10,42,40],
[16,42,40], [16,42,40], [14,42,40], [13,42,40], [7,23,22], [14,23,22], [18,42,40], [18,42,40],
[20,62,60], [15,62,60], [24,83,81], [18,83,81], [18,83,81], [10,83,81], [20,83,81], [12,83,81],
[20,83,81], [12,83,81], [22,83,81], [22,83,81], [23,83,81], [22,83,81], [34,83,81], [34,83,81],
[26,103,101], [19,103,101], [20,103,101], [11,103,101], [22,103,101], [13,103,101], [22,103,101], [13,103,101],
[23,103,101], [23,103,101], [24,103,101], [23,103,101], [42,103,101], [42,103,101], [26,62,60], [26,62,60],
[29,63,61], [20,63,61], [23,62,60], [12,62,60], [23,62,60], [12,62,60], [14,22,21], [12,22,21],
[25,32,31], [18,32,31], [25,32,31], [18,32,31], [18,63,62], [25,63,62], [18,12,11], [13,22,21],
[29,62,60], [20,62,60], [14,22,21], [20,22,21], [18,62,60], [17,62,60], [27,35,34], [36,49,48],
[21,39,38], [33,77,76], [36,35,34], [50,49,48], [36,35,34], [50,49,48], [36,35,34], [50,49,48],
[34,35,34], [31,35,34], [21,39,38], [27,35,34], [27,35,34], [27,35,34], [27,35,34], [27,35,34],
[48,49,48], [42,49,48], [33,77,76], [36,49,48], [36,49,48], [36,49,48], [36,49,48], [36,49,48],
[31,35,34], [42,49,48], [21,7,-19], [36,8,-19], [51,8,-19], [19,5,-20], [34,5,-21], [50,5,-21],
[16,62,60], [9,62,60], [18,62,60], [11,62,60], [18,62,60], [11,62,60], [19,62,60], [19,62,60],
[35,42,40], [35,62,60], [35,83,81], [35,103,101], [26,63,62], [26,23,22], [37,22,20], [18,22,21],
[19,22,21], [19,22,21], [17,13,8], [18,13,8], [17,12,0], [18,12,0], [25,22,21], [25,22,21]
],
cmbx10: [
[22,24,0], [31,24,0], [29,25,1], [27,24,0], [25,23,0], [30,24,0], [27,24,0], [29,24,0],
[27,24,0], [29,24,0], [27,24,0], [26,24,0], [21,24,0], [21,24,0], [32,24,0], [32,24,0],
[10,16,0], [12,23,7], [12,7,-17], [16,7,-17], [15,6,-17], [16,7,-17], [17,3,-18], [19,6,-18],
[15,8,7], [20,25,1], [28,17,1], [30,17,1], [19,23,4], [35,24,0], [39,25,1], [29,29,3],
[11,5,-9], [9,24,0], [16,13,-11], [31,31,7], [18,28,2], [31,28,2], [29,25,1], [9,13,-11],
[13,35,9], [12,35,9], [17,16,-10], [29,27,5], [9,13,7], [11,5,-5], [9,6,0], [18,35,9],
[18,24,1], [17,23,0], [18,23,0], [18,24,1], [19,23,0], [18,24,1], [18,24,1], [19,24,1],
[18,24,1], [18,24,1], [9,16,0], [9,23,7], [9,24,7], [29,11,-3], [17,24,7], [17,24,0],
[29,25,1], [29,24,0], [26,24,0], [27,25,1], [28,24,0], [25,24,0], [23,24,0], [29,25,1],
[30,24,0], [14,24,0], [18,25,1], [29,24,0], [22,24,0], [36,24,0], [30,24,0], [28,25,1],
[25,24,0], [28,31,7], [30,25,1], [20,25,1], [26,23,0], [29,25,1], [29,25,1], [40,25,1],
[29,24,0], [29,24,0], [22,24,0], [10,35,9], [20,13,-11], [7,35,9], [16,7,-17], [9,6,-18],
[9,13,-11], [19,17,1], [21,25,1], [17,17,1], [21,25,1], [17,17,1], [15,24,0], [19,23,7],
[21,24,0], [10,24,0], [12,31,7], [20,24,0], [10,24,0], [32,16,0], [21,16,0], [19,17,1],
[21,23,7], [21,23,7], [16,16,0], [15,17,1], [13,23,1], [21,17,1], [20,17,1], [28,17,1],
[20,16,0], [20,23,7], [16,16,0], [20,2,-8], [40,2,-8], [17,8,-17], [17,5,-19], [17,6,-18]
],
cmti10: [
[25,24,0], [26,25,0], [27,25,1], [22,25,0], [26,24,0], [29,24,0], [27,24,0], [29,24,0],
[25,24,0], [29,24,0], [26,24,0], [27,31,7], [22,31,7], [23,31,7], [33,31,7], [34,31,7],
[12,17,1], [13,23,7], [15,7,-17], [19,7,-17], [19,5,-17], [20,7,-17], [20,2,-19], [23,7,-18],
[12,8,7], [21,31,7], [25,17,1], [25,17,1], [19,23,4], [33,24,0], [36,25,1], [28,29,3],
[12,5,-9], [13,25,0], [18,11,-13], [29,31,7], [24,25,1], [29,28,2], [28,26,1], [13,11,-13],
[18,35,9], [13,35,9], [20,16,-10], [26,21,2], [8,11,7], [12,3,-6], [8,4,0], [21,35,9],
[19,24,1], [16,23,0], [19,24,1], [20,24,1], [17,30,7], [20,24,1], [20,24,1], [22,24,1],
[19,24,1], [19,24,1], [11,15,0], [11,22,7], [11,25,8], [27,9,-4], [16,25,8], [19,25,0],
[27,25,1], [24,25,0], [25,24,0], [28,25,1], [27,24,0], [26,24,0], [25,24,0], [28,25,1],
[29,24,0], [18,24,0], [22,25,1], [30,24,0], [22,24,0], [35,24,0], [29,24,0], [27,25,1],
[25,24,0], [27,31,7], [25,25,1], [22,25,1], [28,24,0], [29,25,1], [30,25,1], [39,25,1],
[29,24,0], [30,24,0], [24,24,0], [16,35,9], [21,11,-13], [14,35,9], [18,6,-18], [13,4,-19],
[13,11,-13], [19,17,1], [16,25,1], [16,17,1], [20,25,1], [16,17,1], [17,31,7], [17,23,7],
[19,25,1], [12,24,1], [15,30,7], [18,25,1], [11,25,1], [29,17,1], [20,17,1], [18,17,1],
[18,23,7], [17,23,7], [17,17,1], [15,17,1], [13,23,1], [20,17,1], [17,17,1], [24,17,1],
[18,17,1], [18,23,7], [16,17,1], [19,2,-8], [36,2,-8], [20,7,-17], [20,4,-19], [19,4,-19]
]
});
jsMath.Img.AddFont(298,{
cmr10: [
[24,28,0], [33,30,0], [30,30,1], [28,30,0], [26,28,0], [30,28,0], [28,28,0], [30,29,0],
[28,28,0], [30,28,0], [28,29,0], [26,29,0], [22,29,0], [22,29,0], [33,29,0], [33,29,0],
[11,19,0], [11,28,9], [13,9,-20], [17,9,-20], [16,6,-21], [17,8,-21], [18,3,-22], [20,8,-22],
[16,10,9], [20,30,1], [29,20,1], [31,20,1], [20,27,5], [36,28,0], [41,30,1], [30,34,3],
[11,6,-11], [8,30,0], [15,13,-16], [32,37,8], [19,34,3], [32,34,3], [30,31,1], [9,13,-16],
[14,42,11], [12,42,11], [18,18,-13], [30,28,4], [9,13,8], [12,4,-7], [8,5,0], [19,42,11],
[19,29,1], [18,28,0], [19,28,0], [19,29,1], [20,28,0], [19,29,1], [19,29,1], [20,29,1],
[19,29,1], [19,29,1], [8,18,0], [8,26,8], [8,30,9], [30,11,-5], [18,30,9], [18,29,0],
[30,30,1], [30,30,0], [27,28,0], [28,30,1], [29,28,0], [27,28,0], [26,28,0], [31,30,1],
[30,28,0], [14,28,0], [20,29,1], [31,28,0], [24,28,0], [37,28,0], [30,28,0], [30,30,1],
[26,28,0], [30,37,8], [31,29,1], [21,30,1], [29,28,0], [30,29,1], [30,29,1], [42,29,1],
[30,28,0], [31,28,0], [23,28,0], [11,42,11], [20,13,-16], [7,42,11], [16,7,-22], [8,5,-23],
[8,13,-16], [21,20,1], [22,30,1], [18,20,1], [22,30,1], [18,20,1], [15,29,0], [20,28,9],
[22,29,0], [11,28,0], [11,37,9], [21,29,0], [11,29,0], [34,19,0], [22,19,0], [20,20,1],
[22,27,8], [22,27,8], [15,19,0], [15,20,1], [14,27,1], [22,20,1], [21,19,1], [29,19,1],
[22,18,0], [21,27,9], [17,18,0], [21,2,-10], [41,2,-10], [18,8,-21], [18,5,-23], [17,5,-23]
],
cmmi10: [
[30,28,0], [33,30,0], [31,30,1], [28,30,0], [32,28,0], [37,28,0], [34,28,0], [29,29,0],
[27,28,0], [29,28,0], [33,29,0], [25,20,1], [25,37,8], [23,28,9], [19,31,1], [16,19,1],
[20,38,9], [21,28,9], [19,30,1], [14,20,1], [23,20,1], [23,30,1], [24,28,9], [22,19,0],
[19,38,9], [24,19,1], [21,28,9], [24,19,1], [21,19,1], [22,20,1], [24,38,9], [25,28,9],
[27,38,9], [25,20,1], [18,20,1], [23,30,1], [34,19,1], [21,27,8], [17,24,5], [26,28,9],
[39,12,-9], [39,13,1], [39,12,-9], [39,13,1], [10,11,-9], [10,11,-9], [20,22,1], [20,22,1],
[19,20,1], [18,19,0], [19,19,0], [19,28,9], [20,28,8], [19,28,9], [19,29,1], [20,28,9],
[19,29,1], [19,28,9], [8,5,0], [9,13,8], [29,25,2], [19,42,11], [29,25,2], [21,20,0],
[24,31,1], [30,30,0], [31,28,0], [32,30,1], [33,28,0], [32,28,0], [31,28,0], [32,30,1],
[37,28,0], [21,28,0], [26,29,1], [37,28,0], [27,28,0], [43,28,0], [37,28,0], [31,30,1],
[31,28,0], [31,37,8], [31,29,1], [27,30,1], [29,28,0], [32,29,1], [32,29,1], [43,29,1],
[35,28,0], [32,28,0], [30,28,0], [14,32,1], [13,39,9], [14,39,9], [39,11,-5], [39,11,-5],
[17,30,1], [21,20,1], [18,30,1], [18,20,1], [22,30,1], [18,20,1], [23,38,9], [20,28,9],
[23,30,1], [13,29,1], [18,37,9], [21,30,1], [11,30,1], [35,20,1], [24,20,1], [20,20,1],
[23,27,8], [19,27,8], [18,20,1], [18,20,1], [14,27,1], [23,20,1], [20,20,1], [29,20,1],
[22,20,1], [21,28,9], [20,20,1], [13,20,1], [16,28,9], [26,28,9], [26,9,-21], [27,6,-22]
],
cmsy10: [
[29,3,-9], [8,5,-8], [26,21,0], [18,19,-1], [30,24,2], [21,21,0], [30,28,0], [30,28,7],
[30,28,4], [30,28,4], [30,28,4], [30,28,4], [30,28,4], [39,39,9], [19,17,-2], [19,17,-2],
[30,20,0], [30,19,-1], [29,33,6], [29,33,6], [29,33,6], [29,33,6], [29,33,6], [29,33,6],
[30,11,-5], [30,18,-2], [29,25,2], [29,25,2], [39,27,3], [39,27,3], [29,25,2], [29,25,2],
[39,16,-2], [39,16,-2], [18,37,8], [18,37,8], [39,16,-2], [39,37,8], [39,38,9], [30,19,-1],
[39,24,2], [39,24,2], [24,37,8], [24,37,8], [40,24,2], [39,37,8], [39,38,9], [30,20,1],
[11,22,-1], [39,20,1], [24,25,2], [24,25,2], [34,30,0], [34,30,9], [27,39,9], [6,16,-2],
[23,30,1], [21,29,0], [26,12,-3], [19,36,4], [30,31,1], [29,30,1], [30,28,0], [30,28,0],
[23,29,0], [33,33,3], [28,30,1], [22,30,1], [32,28,0], [24,30,1], [34,30,2], [25,34,5],
[34,30,2], [28,28,0], [35,33,5], [31,30,1], [27,30,1], [46,32,3], [43,35,3], [32,30,1],
[31,31,3], [33,35,6], [35,29,1], [27,30,1], [33,30,0], [30,30,2], [28,30,2], [43,30,2],
[34,28,0], [30,34,6], [32,28,0], [26,26,1], [26,26,1], [26,26,1], [26,26,1], [26,26,1],
[23,29,0], [23,29,0], [18,42,11], [12,42,11], [18,42,11], [12,42,11], [18,42,11], [18,42,11],
[14,42,11], [12,42,11], [7,42,11], [16,42,11], [18,44,12], [24,44,12], [19,42,11], [10,28,4],
[35,42,40], [30,28,0], [33,30,2], [20,39,9], [25,25,0], [25,25,0], [30,33,6], [29,33,6],
[16,38,9], [16,38,9], [16,38,9], [24,37,8], [31,36,6], [30,37,7], [30,32,2], [30,36,6]
],
cmex10: [
[17,50,48], [13,50,48], [17,50,48], [9,50,48], [19,50,48], [12,50,48], [19,50,48], [12,50,48],
[20,50,48], [20,50,48], [17,50,48], [16,50,48], [8,27,26], [17,27,26], [22,50,48], [22,50,48],
[23,75,73], [18,75,73], [29,99,97], [22,99,97], [22,99,97], [12,99,97], [24,99,97], [14,99,97],
[24,99,97], [14,99,97], [26,99,97], [26,99,97], [27,99,97], [26,99,97], [41,99,97], [41,99,97],
[32,124,122], [23,124,122], [24,124,122], [13,124,122], [26,124,122], [15,124,122], [26,124,122], [15,124,122],
[28,124,122], [28,124,122], [29,124,122], [28,124,122], [51,124,122], [51,124,122], [31,75,73], [31,75,73],
[35,75,73], [24,75,73], [28,75,73], [14,75,73], [28,75,73], [14,75,73], [17,26,25], [14,26,25],
[30,39,38], [21,39,38], [30,38,37], [21,38,37], [21,76,75], [30,76,75], [21,14,13], [15,26,25],
[35,76,73], [24,76,73], [17,27,26], [24,27,26], [22,75,73], [21,75,73], [32,42,41], [44,59,58],
[25,47,46], [39,93,92], [44,42,41], [60,59,58], [44,42,41], [60,59,58], [44,42,41], [60,59,58],
[41,42,41], [37,42,41], [25,47,46], [32,42,41], [32,42,41], [32,42,41], [32,42,41], [32,42,41],
[57,59,58], [51,59,58], [39,93,92], [44,59,58], [44,59,58], [44,59,58], [44,59,58], [44,59,58],
[37,42,41], [51,59,58], [24,8,-23], [43,9,-23], [61,9,-23], [23,6,-24], [41,6,-25], [60,6,-25],
[19,75,73], [11,75,73], [21,75,73], [13,75,73], [21,75,73], [13,75,73], [23,75,73], [23,75,73],
[42,50,48], [42,75,73], [42,99,97], [42,124,122], [31,75,74], [31,27,26], [45,26,24], [22,26,25],
[23,26,25], [23,26,25], [20,14,9], [21,14,9], [20,14,0], [21,14,0], [30,26,25], [30,26,25]
],
cmbx10: [
[27,28,0], [37,29,0], [34,30,1], [32,29,0], [30,28,0], [36,28,0], [32,29,0], [34,29,0],
[32,29,0], [34,29,0], [32,29,0], [31,29,0], [25,29,0], [25,29,0], [38,29,0], [38,29,0],
[12,19,0], [14,28,9], [14,9,-20], [19,9,-20], [19,6,-21], [20,9,-20], [21,3,-22], [23,8,-21],
[19,10,9], [24,30,1], [33,20,1], [36,20,1], [23,28,5], [42,29,0], [47,30,1], [34,34,3],
[14,6,-11], [11,29,0], [19,15,-14], [37,37,8], [21,34,3], [37,34,3], [35,30,1], [11,15,-14],
[16,42,11], [14,42,11], [21,19,-12], [34,32,6], [11,15,8], [14,5,-7], [10,7,0], [21,42,11],
[22,28,1], [21,27,0], [22,27,0], [22,28,1], [23,27,0], [22,28,1], [22,28,1], [23,29,1],
[22,28,1], [22,28,1], [10,19,0], [10,27,8], [11,30,9], [34,13,-4], [20,30,9], [20,29,0],
[34,30,1], [34,29,0], [31,29,0], [32,30,1], [34,29,0], [30,28,0], [28,28,0], [35,30,1],
[36,29,0], [17,29,0], [22,30,1], [35,29,0], [27,29,0], [44,29,0], [36,29,0], [33,30,1],
[30,29,0], [33,37,8], [36,30,1], [24,30,1], [32,28,0], [35,30,1], [35,30,1], [48,30,1],
[35,29,0], [35,29,0], [27,29,0], [13,42,11], [24,15,-14], [8,42,11], [19,8,-21], [10,7,-22],
[10,15,-14], [23,20,1], [25,30,1], [20,20,1], [25,30,1], [21,20,1], [18,29,0], [23,28,9],
[26,29,0], [12,29,0], [14,38,9], [25,29,0], [13,29,0], [39,19,0], [26,19,0], [23,20,1],
[25,27,8], [25,27,8], [19,19,0], [18,20,1], [16,28,1], [26,20,1], [24,20,1], [33,20,1],
[24,19,0], [24,28,9], [19,19,0], [24,2,-10], [48,2,-10], [21,9,-21], [20,5,-24], [20,7,-22]
],
cmti10: [
[29,28,0], [31,30,0], [33,30,1], [27,30,0], [31,28,0], [35,28,0], [33,28,0], [35,29,0],
[30,28,0], [34,28,0], [32,29,0], [34,38,9], [27,38,9], [29,38,9], [40,38,9], [41,38,9],
[14,20,1], [16,28,9], [18,9,-20], [23,9,-20], [23,6,-20], [24,8,-21], [24,3,-22], [28,8,-22],
[14,9,8], [25,38,9], [30,20,1], [30,20,1], [23,28,5], [39,28,0], [44,30,1], [34,34,3],
[15,6,-11], [16,30,0], [21,13,-16], [34,37,8], [29,30,1], [35,34,3], [33,31,1], [16,13,-16],
[22,42,11], [16,42,11], [24,18,-13], [31,26,3], [10,13,8], [14,3,-7], [10,5,0], [26,42,11],
[23,29,1], [19,28,0], [23,29,1], [24,29,1], [20,36,8], [24,29,1], [24,29,1], [26,29,1],
[23,29,1], [23,29,1], [13,18,0], [13,26,8], [14,30,9], [32,11,-5], [19,30,9], [23,30,0],
[33,30,1], [29,30,0], [31,28,0], [34,30,1], [32,28,0], [31,28,0], [31,28,0], [34,30,1],
[35,28,0], [21,28,0], [26,29,1], [36,28,0], [26,28,0], [42,28,0], [35,28,0], [33,30,1],
[30,28,0], [33,37,8], [30,29,1], [26,30,1], [34,28,0], [35,29,1], [36,29,1], [47,29,1],
[34,28,0], [36,28,0], [29,28,0], [19,42,11], [26,13,-16], [16,42,11], [22,8,-21], [15,5,-23],
[15,13,-16], [22,20,1], [19,30,1], [20,20,1], [23,30,1], [20,20,1], [21,38,9], [20,28,9],
[22,30,1], [14,28,1], [17,36,9], [21,30,1], [13,30,1], [35,20,1], [25,20,1], [21,20,1],
[21,27,8], [21,27,8], [21,20,1], [18,20,1], [16,27,1], [23,20,1], [21,20,1], [29,20,1],
[22,20,1], [22,28,9], [20,20,1], [23,2,-10], [43,2,-10], [24,9,-20], [24,5,-23], [23,5,-23]
]
});
jsMath.Img.AddFont(358,{
cmr10: [
[29,34,0], [39,36,0], [36,37,2], [33,36,0], [31,34,0], [36,34,0], [33,34,0], [36,35,0],
[33,34,0], [36,34,0], [34,35,0], [31,35,0], [26,35,0], [26,35,0], [40,35,0], [40,35,0],
[13,22,0], [13,33,11], [15,11,-24], [20,11,-24], [19,7,-25], [20,9,-25], [22,2,-27], [24,10,-26],
[18,11,10], [24,36,1], [34,23,1], [37,23,1], [23,32,5], [43,34,0], [49,37,2], [36,40,3],
[13,7,-13], [10,36,0], [17,15,-19], [39,44,10], [22,40,3], [39,40,3], [36,38,2], [11,15,-19],
[17,50,13], [15,50,13], [22,22,-15], [36,34,5], [10,16,10], [14,3,-9], [10,6,0], [22,50,13],
[23,35,2], [21,33,0], [22,33,0], [23,35,2], [24,34,0], [22,35,2], [23,35,2], [24,36,2],
[23,35,2], [23,35,2], [10,22,0], [10,32,10], [10,36,11], [36,12,-6], [21,36,11], [21,35,0],
[36,36,1], [36,36,0], [32,34,0], [33,37,2], [35,34,0], [32,34,0], [30,34,0], [37,37,2],
[36,34,0], [17,34,0], [23,36,2], [37,34,0], [29,34,0], [44,34,0], [36,34,0], [36,37,2],
[31,34,0], [36,45,10], [36,36,2], [25,37,2], [34,34,0], [36,36,2], [36,36,2], [50,36,2],
[36,34,0], [37,34,0], [28,34,0], [13,50,13], [23,15,-19], [8,50,13], [19,8,-26], [10,6,-27],
[10,15,-19], [25,23,1], [26,35,1], [21,23,1], [26,35,1], [21,23,1], [18,35,0], [24,34,11],
[27,34,0], [13,33,0], [13,44,11], [26,34,0], [13,34,0], [40,22,0], [27,22,0], [24,23,1],
[26,32,10], [26,32,10], [18,22,0], [18,23,1], [17,32,1], [27,23,1], [25,23,1], [35,23,1],
[26,22,0], [25,33,11], [20,22,0], [25,2,-12], [49,2,-12], [21,10,-25], [21,5,-28], [20,6,-27]
],
cmmi10: [
[36,34,0], [39,36,0], [37,37,2], [33,36,0], [39,34,0], [44,34,0], [40,34,0], [35,35,0],
[32,34,0], [34,34,0], [39,35,0], [30,23,1], [29,45,10], [27,33,11], [23,36,1], [19,23,1],
[24,46,11], [25,33,11], [23,36,1], [16,23,1], [27,23,1], [27,35,1], [29,33,11], [26,22,0],
[22,46,11], [28,23,1], [25,33,11], [28,23,1], [26,23,1], [26,23,1], [29,45,11], [30,33,11],
[32,45,11], [30,23,1], [22,25,2], [28,36,1], [41,23,1], [25,32,10], [21,28,6], [31,33,11],
[47,15,-11], [47,15,1], [47,15,-11], [47,15,1], [11,12,-11], [11,12,-11], [24,26,1], [24,26,1],
[23,25,2], [21,23,0], [22,23,0], [23,34,11], [24,33,10], [22,34,11], [23,35,2], [24,34,11],
[23,35,2], [23,34,11], [10,6,0], [10,16,10], [34,29,2], [22,50,13], [34,29,2], [25,24,0],
[28,38,2], [36,36,0], [38,34,0], [38,37,2], [40,34,0], [38,34,0], [37,34,0], [38,37,2],
[44,34,0], [25,34,0], [32,36,2], [44,34,0], [32,34,0], [52,34,0], [44,34,0], [37,37,2],
[37,34,0], [37,45,10], [37,36,2], [32,37,2], [35,34,0], [38,36,2], [38,36,2], [52,36,2],
[42,34,0], [38,34,0], [36,34,0], [17,39,2], [16,47,11], [17,47,11], [47,13,-6], [47,13,-6],
[20,36,1], [25,23,1], [21,35,1], [22,23,1], [26,35,1], [22,23,1], [28,46,11], [24,33,11],
[27,35,1], [15,34,1], [21,44,11], [25,35,1], [13,35,1], [42,23,1], [28,23,1], [23,23,1],
[27,32,10], [23,32,10], [22,23,1], [21,23,1], [17,32,1], [27,23,1], [23,23,1], [34,23,1],
[26,23,1], [25,33,11], [23,23,1], [15,23,1], [19,33,11], [31,34,11], [31,10,-25], [32,7,-26]
],
cmsy10: [
[34,3,-11], [10,6,-9], [31,25,0], [22,22,-1], [36,28,2], [24,24,0], [36,33,0], [36,34,9],
[36,34,5], [36,34,5], [36,34,5], [36,34,5], [36,34,5], [47,47,11], [22,20,-2], [22,20,-2],
[36,24,0], [36,22,-1], [34,39,7], [34,39,7], [34,39,7], [34,39,7], [34,39,7], [34,39,7],
[36,12,-6], [36,22,-2], [34,29,2], [34,29,2], [47,32,4], [47,32,4], [34,29,2], [34,29,2],
[47,18,-3], [47,18,-3], [21,44,10], [21,44,10], [47,18,-3], [47,45,10], [47,44,10], [36,22,-1],
[47,28,2], [47,28,2], [29,44,10], [29,44,10], [48,28,2], [47,45,10], [47,44,10], [36,23,1],
[13,26,-2], [47,23,1], [29,29,2], [29,29,2], [41,36,0], [41,36,11], [32,47,11], [7,19,-3],
[28,36,2], [25,34,0], [30,14,-4], [23,42,4], [35,38,2], [34,36,1], [36,33,0], [36,33,0],
[28,34,0], [40,39,3], [33,37,2], [27,37,2], [38,34,0], [28,37,2], [41,36,2], [30,41,6],
[41,37,3], [34,34,0], [42,40,6], [36,37,2], [33,37,2], [55,38,3], [50,41,3], [39,37,2],
[36,37,3], [39,42,7], [42,36,2], [32,37,2], [40,36,0], [35,36,2], [33,37,3], [51,37,3],
[40,34,0], [36,41,7], [38,34,0], [30,32,2], [30,32,2], [30,32,2], [30,32,2], [30,32,2],
[28,34,0], [28,34,0], [21,50,13], [14,50,13], [21,50,13], [14,50,13], [21,50,13], [21,50,13],
[17,50,13], [14,50,13], [8,50,13], [18,50,13], [21,52,14], [29,52,14], [22,50,13], [11,34,5],
[42,50,48], [35,34,0], [39,36,2], [24,47,11], [30,30,0], [30,30,0], [35,39,7], [34,39,7],
[19,46,11], [19,46,11], [19,46,11], [29,44,10], [37,43,7], [36,44,8], [36,38,2], [36,43,7]
],
cmex10: [
[21,59,57], [15,59,57], [20,59,57], [11,59,57], [22,59,57], [14,59,57], [22,59,57], [14,59,57],
[23,59,57], [23,59,57], [20,59,57], [19,59,57], [10,33,31], [21,33,31], [26,59,57], [26,59,57],
[28,89,87], [21,89,87], [35,118,116], [26,118,116], [26,118,116], [14,118,116], [28,118,116], [17,118,116],
[28,118,116], [17,118,116], [31,118,116], [31,118,116], [32,118,116], [31,118,116], [49,118,116], [49,118,116],
[38,147,145], [28,147,145], [28,147,145], [16,147,145], [31,147,145], [18,147,145], [31,147,145], [18,147,145],
[33,147,145], [33,147,145], [35,148,146], [33,148,146], [60,147,145], [60,147,145], [37,89,87], [37,89,87],
[42,89,87], [29,89,87], [33,89,87], [17,89,87], [33,89,87], [17,89,87], [20,31,30], [17,31,30],
[36,46,45], [25,46,45], [36,46,45], [25,46,45], [25,90,89], [36,90,89], [25,17,16], [18,31,30],
[42,90,87], [29,90,87], [20,31,30], [29,31,30], [26,89,87], [25,89,87], [39,50,49], [52,70,69],
[30,56,55], [47,110,109], [52,50,49], [72,70,69], [52,50,49], [72,70,69], [52,50,49], [72,70,69],
[49,50,49], [44,50,49], [30,56,55], [39,50,49], [39,50,49], [39,50,49], [39,50,49], [39,50,49],
[68,70,69], [60,70,69], [47,110,109], [52,70,69], [52,70,69], [52,70,69], [52,70,69], [52,70,69],
[44,50,49], [60,70,69], [29,10,-27], [51,10,-28], [72,10,-28], [28,7,-29], [49,7,-30], [71,7,-30],
[23,89,87], [12,89,87], [25,89,87], [15,89,87], [25,89,87], [15,89,87], [27,89,87], [27,89,87],
[50,59,57], [50,89,87], [50,118,116], [50,148,146], [37,90,89], [37,32,31], [53,31,29], [26,31,30],
[28,31,30], [28,31,30], [25,17,11], [25,17,11], [25,17,0], [25,17,0], [36,31,30], [36,31,30]
],
cmbx10: [
[32,34,0], [45,35,0], [41,36,1], [38,35,0], [36,34,0], [43,34,0], [38,34,0], [41,35,0],
[38,34,0], [41,34,0], [39,35,0], [37,35,0], [30,35,0], [30,35,0], [46,35,0], [46,35,0],
[15,23,0], [17,33,10], [17,11,-24], [23,11,-24], [22,7,-25], [23,10,-24], [25,3,-27], [28,9,-26],
[22,11,10], [28,36,1], [40,24,1], [43,24,1], [27,34,6], [50,34,0], [56,36,1], [41,40,3],
[16,7,-13], [13,35,0], [23,18,-16], [44,44,10], [25,40,3], [44,40,3], [41,36,1], [13,18,-16],
[19,50,13], [17,50,13], [25,22,-15], [41,39,7], [13,18,10], [16,6,-8], [12,8,0], [25,50,13],
[26,34,1], [25,33,0], [26,33,0], [26,34,1], [27,33,0], [26,34,1], [26,34,1], [28,35,1],
[26,34,1], [26,34,1], [12,22,0], [12,32,10], [13,36,11], [41,15,-5], [24,35,10], [24,35,0],
[41,36,1], [41,35,0], [37,34,0], [38,36,1], [41,34,0], [36,34,0], [34,34,0], [42,36,1],
[43,34,0], [20,34,0], [26,35,1], [42,34,0], [32,34,0], [52,34,0], [43,34,0], [40,36,1],
[36,34,0], [40,45,10], [43,35,1], [29,36,1], [38,34,0], [42,35,1], [42,35,1], [58,35,1],
[41,34,0], [42,34,0], [32,34,0], [15,50,13], [28,18,-16], [10,50,13], [22,9,-25], [12,9,-26],
[12,18,-16], [28,24,1], [30,35,1], [24,24,1], [30,35,1], [25,24,1], [22,35,0], [28,33,10],
[31,34,0], [15,35,0], [17,45,10], [29,34,0], [15,34,0], [46,23,0], [31,23,0], [27,24,1],
[30,33,10], [30,33,10], [22,23,0], [21,24,1], [19,33,1], [31,24,1], [29,23,1], [40,23,1],
[29,22,0], [29,32,10], [23,22,0], [29,3,-12], [57,3,-12], [25,10,-25], [24,6,-28], [24,9,-26]
],
cmti10: [
[35,34,0], [37,36,0], [39,37,2], [32,36,0], [37,34,0], [42,34,0], [39,34,0], [41,35,0],
[36,34,0], [41,34,0], [38,35,0], [40,46,11], [32,46,11], [34,46,11], [47,46,11], [49,46,11],
[17,23,1], [18,33,11], [22,11,-24], [27,11,-24], [27,7,-24], [28,9,-25], [28,2,-27], [33,10,-26],
[17,11,10], [30,46,11], [36,23,1], [36,23,1], [27,33,6], [47,34,0], [52,37,2], [41,40,3],
[17,7,-13], [19,36,0], [26,15,-19], [41,44,10], [35,36,1], [42,40,3], [40,38,2], [19,15,-19],
[26,50,13], [19,50,13], [29,22,-15], [37,31,3], [11,16,10], [17,3,-9], [11,6,0], [31,50,13],
[28,35,2], [23,33,0], [27,35,2], [28,35,2], [24,43,10], [28,35,2], [28,35,2], [31,35,2],
[28,35,2], [28,35,2], [15,22,0], [15,32,10], [16,36,11], [39,12,-6], [22,36,11], [27,36,0],
[39,36,1], [34,36,0], [36,34,0], [40,37,2], [38,34,0], [37,34,0], [36,34,0], [40,37,2],
[42,34,0], [25,34,0], [31,36,2], [43,34,0], [31,34,0], [50,34,0], [42,34,0], [39,37,2],
[36,34,0], [39,45,10], [36,36,2], [31,37,2], [40,34,0], [42,36,2], [43,36,2], [56,36,2],
[41,34,0], [43,34,0], [35,34,0], [22,50,13], [30,15,-19], [19,50,13], [26,8,-26], [18,6,-27],
[18,15,-19], [27,23,1], [23,35,1], [24,23,1], [28,35,1], [23,23,1], [25,46,11], [24,33,11],
[27,35,1], [17,34,1], [20,44,11], [25,35,1], [15,35,1], [42,23,1], [29,23,1], [25,23,1],
[25,32,10], [25,32,10], [24,23,1], [21,23,1], [19,32,1], [28,23,1], [25,23,1], [35,23,1],
[26,23,1], [26,33,11], [23,23,1], [27,2,-12], [51,2,-12], [29,11,-24], [29,6,-27], [27,6,-27]
]
});
jsMath.Img.AddFont(430,{
cmr10: [
[35,41,0], [47,43,0], [43,44,2], [39,43,0], [37,40,0], [43,41,0], [40,41,0], [43,42,0],
[40,41,0], [43,41,0], [40,42,0], [38,42,0], [32,42,0], [32,42,0], [48,42,0], [48,42,0],
[15,27,0], [16,40,13], [18,12,-30], [24,12,-30], [23,8,-30], [24,11,-30], [26,3,-32], [28,12,-31],
[22,13,12], [28,43,1], [41,28,1], [45,28,1], [28,39,7], [52,41,0], [59,44,2], [43,48,4],
[16,8,-16], [12,43,0], [21,18,-23], [46,53,12], [27,49,4], [46,49,4], [43,45,2], [13,18,-23],
[20,60,15], [18,60,15], [26,27,-18], [43,40,5], [12,19,12], [17,4,-11], [12,7,0], [27,60,15],
[28,42,2], [25,40,0], [27,40,0], [27,42,2], [28,40,0], [27,42,2], [27,42,2], [29,42,2],
[27,42,2], [27,42,2], [12,26,0], [12,38,12], [12,43,13], [43,15,-7], [25,43,13], [25,42,0],
[43,43,1], [43,43,0], [39,41,0], [40,44,2], [42,41,0], [39,41,0], [36,41,0], [44,44,2],
[43,41,0], [20,41,0], [28,43,2], [44,41,0], [35,41,0], [52,41,0], [43,41,0], [43,44,2],
[37,41,0], [43,54,12], [44,43,2], [30,44,2], [41,40,0], [43,43,2], [44,43,2], [60,43,2],
[43,41,0], [44,41,0], [34,41,0], [16,60,15], [28,18,-23], [10,60,15], [23,10,-31], [12,7,-33],
[12,18,-23], [30,28,1], [31,42,1], [25,28,1], [32,42,1], [25,28,1], [22,42,0], [29,40,13],
[32,41,0], [15,40,0], [16,53,13], [31,41,0], [16,41,0], [48,27,0], [32,27,0], [28,28,1],
[31,39,12], [32,39,12], [22,27,0], [22,28,1], [20,38,1], [32,28,1], [30,27,1], [42,27,1],
[31,26,0], [30,39,13], [24,26,0], [30,2,-15], [59,2,-15], [25,12,-30], [25,7,-33], [24,7,-33]
],
cmmi10: [
[43,41,0], [47,43,0], [44,44,2], [40,43,0], [46,40,0], [52,41,0], [48,41,0], [42,42,0],
[38,41,0], [41,41,0], [47,42,0], [36,28,1], [35,54,12], [33,40,13], [27,43,1], [23,27,1],
[28,55,13], [30,40,13], [27,43,1], [20,28,1], [33,28,1], [33,42,1], [34,40,13], [31,27,0],
[27,55,13], [34,27,1], [30,40,13], [34,27,1], [31,27,1], [31,28,1], [34,54,13], [36,40,13],
[38,54,13], [36,28,1], [26,29,2], [34,43,1], [49,27,1], [30,39,12], [25,34,7], [37,40,13],
[56,18,-13], [56,17,1], [56,18,-13], [56,17,1], [14,15,-13], [14,15,-13], [28,31,1], [28,31,1],
[28,29,2], [25,27,0], [27,27,0], [27,40,13], [28,40,12], [27,40,13], [27,42,2], [29,41,13],
[27,42,2], [27,40,13], [12,7,0], [12,19,12], [41,35,3], [27,60,15], [41,35,3], [30,29,0],
[34,45,2], [43,43,0], [45,41,0], [45,44,2], [48,41,0], [46,41,0], [45,41,0], [45,44,2],
[52,41,0], [30,41,0], [38,43,2], [53,41,0], [38,41,0], [62,41,0], [52,41,0], [44,44,2],
[45,41,0], [44,54,12], [45,43,2], [39,44,2], [42,40,0], [45,43,2], [46,43,2], [62,43,2],
[51,41,0], [45,41,0], [43,41,0], [20,47,2], [19,56,13], [20,56,13], [56,15,-7], [56,16,-7],
[24,43,1], [30,28,1], [25,42,1], [26,28,1], [31,42,1], [26,28,1], [33,55,13], [28,40,13],
[33,42,1], [18,40,1], [25,52,13], [30,42,1], [16,42,1], [51,28,1], [34,28,1], [28,28,1],
[31,39,12], [27,39,12], [26,28,1], [25,28,1], [20,38,1], [33,28,1], [28,28,1], [41,28,1],
[32,28,1], [29,40,13], [28,28,1], [18,28,1], [23,40,13], [37,40,13], [37,13,-30], [39,9,-31]
],
cmsy10: [
[41,3,-13], [12,7,-11], [38,29,0], [26,26,-2], [43,34,2], [29,29,0], [43,40,0], [43,40,10],
[43,40,5], [43,40,5], [43,40,5], [43,40,5], [43,40,5], [56,56,13], [27,24,-3], [27,24,-3],
[43,29,0], [43,26,-2], [41,47,9], [41,47,9], [41,47,9], [41,47,9], [41,47,9], [41,47,9],
[43,15,-7], [43,26,-3], [41,35,3], [41,35,3], [56,38,4], [56,38,4], [41,35,3], [41,35,3],
[56,22,-4], [56,22,-4], [26,53,12], [26,53,12], [56,22,-4], [56,54,12], [56,53,12], [43,26,-2],
[56,33,2], [56,33,2], [35,53,12], [35,53,12], [57,33,2], [56,54,12], [56,53,12], [43,28,1],
[16,31,-2], [56,28,1], [35,35,3], [35,35,3], [49,43,0], [49,43,13], [38,56,13], [8,23,-3],
[33,43,2], [30,41,0], [36,16,-5], [27,51,5], [43,45,2], [41,43,1], [43,40,0], [43,40,0],
[33,41,0], [48,46,3], [40,44,2], [32,44,2], [46,41,0], [34,44,2], [49,43,2], [36,50,8],
[49,44,3], [40,41,0], [50,49,8], [44,44,2], [39,44,2], [66,45,3], [60,49,3], [46,44,2],
[44,44,3], [47,50,8], [50,43,2], [38,44,2], [48,43,0], [42,43,2], [39,44,3], [62,44,3],
[48,41,0], [43,49,8], [46,41,0], [36,38,2], [36,38,2], [36,38,2], [36,38,2], [36,38,2],
[33,41,0], [33,41,0], [25,60,15], [16,60,15], [25,60,15], [16,60,15], [26,60,15], [26,60,15],
[20,60,15], [17,60,15], [10,60,15], [22,60,15], [26,63,17], [35,63,17], [27,60,15], [14,40,5],
[51,60,57], [43,41,0], [47,43,2], [28,56,13], [36,36,0], [36,36,0], [43,47,9], [41,47,9],
[23,55,13], [23,55,13], [23,55,13], [35,53,12], [45,51,8], [43,53,10], [43,45,2], [43,51,8]
],
cmex10: [
[25,72,69], [18,72,69], [24,72,69], [13,72,69], [27,72,69], [16,72,69], [27,72,69], [16,72,69],
[28,72,69], [28,72,69], [24,72,69], [22,72,69], [12,39,37], [25,39,37], [31,72,69], [31,72,69],
[34,107,104], [25,107,104], [42,143,140], [32,143,140], [31,143,140], [17,143,140], [34,143,140], [20,143,140],
[34,143,140], [20,143,140], [37,143,140], [37,143,140], [39,143,140], [37,143,140], [59,143,140], [59,143,140],
[45,178,175], [33,178,175], [34,178,175], [19,178,175], [37,178,175], [22,178,175], [37,178,175], [22,178,175],
[39,178,175], [39,178,175], [42,178,175], [40,178,175], [73,178,175], [73,178,175], [45,107,104], [45,107,104],
[50,108,105], [35,108,105], [39,107,104], [21,107,104], [39,107,104], [21,107,104], [24,37,36], [21,37,36],
[43,55,54], [30,55,54], [43,55,54], [30,55,54], [30,108,107], [43,108,107], [30,20,19], [21,37,36],
[50,107,104], [35,107,104], [24,37,36], [35,37,36], [31,107,104], [30,107,104], [46,60,59], [63,84,83],
[36,67,66], [56,133,132], [63,60,59], [86,84,83], [63,60,59], [86,84,83], [63,60,59], [86,84,83],
[59,60,59], [53,60,59], [36,67,66], [46,60,59], [46,60,59], [46,60,59], [46,60,59], [46,60,59],
[82,84,83], [73,84,83], [56,133,132], [63,84,83], [63,84,83], [63,84,83], [63,84,83], [63,84,83],
[53,60,59], [73,84,83], [35,11,-33], [61,13,-33], [87,13,-33], [33,8,-35], [59,9,-36], [86,9,-36],
[27,107,104], [15,107,104], [31,107,104], [18,107,104], [31,107,104], [18,107,104], [33,107,104], [33,107,104],
[61,72,69], [61,107,104], [61,143,140], [61,178,175], [44,109,107], [44,39,37], [64,38,35], [31,37,36],
[33,37,36], [33,37,36], [30,21,13], [29,21,13], [30,20,0], [29,20,0], [43,37,36], [43,37,36]
],
cmbx10: [
[38,41,0], [54,42,0], [49,43,1], [46,42,0], [43,40,0], [51,41,0], [46,41,0], [49,42,0],
[46,41,0], [49,41,0], [46,42,0], [45,42,0], [36,42,0], [36,42,0], [55,42,0], [55,42,0],
[17,27,0], [20,39,12], [20,12,-30], [27,12,-30], [27,9,-30], [28,12,-29], [30,4,-32], [33,11,-31],
[26,13,12], [34,43,1], [48,28,1], [51,28,1], [32,40,7], [60,41,0], [68,43,1], [49,49,4],
[19,8,-16], [15,42,0], [28,21,-20], [53,53,12], [31,49,4], [53,49,4], [50,43,1], [15,21,-20],
[23,60,15], [20,60,15], [30,27,-18], [49,46,8], [15,22,12], [19,6,-10], [14,10,0], [31,60,15],
[32,40,1], [30,39,0], [31,39,0], [32,40,1], [32,39,0], [31,40,1], [32,40,1], [33,41,1],
[32,40,1], [32,40,1], [14,27,0], [15,39,12], [15,43,13], [49,18,-6], [29,42,12], [29,42,0],
[49,43,1], [49,42,0], [45,41,0], [46,43,1], [49,41,0], [43,41,0], [40,41,0], [50,43,1],
[51,41,0], [24,41,0], [32,42,1], [51,41,0], [38,41,0], [63,41,0], [51,41,0], [48,43,1],
[43,41,0], [48,54,12], [51,42,1], [34,43,1], [45,40,0], [50,42,1], [50,42,1], [69,42,1],
[50,41,0], [51,41,0], [39,41,0], [18,60,15], [34,21,-20], [12,60,15], [27,10,-31], [14,10,-31],
[14,21,-20], [33,28,1], [36,42,1], [29,28,1], [36,42,1], [30,28,1], [26,42,0], [33,39,12],
[37,41,0], [17,41,0], [20,53,12], [35,41,0], [18,41,0], [56,27,0], [37,27,0], [32,28,1],
[36,39,12], [36,39,12], [27,27,0], [25,28,1], [23,39,1], [37,28,1], [35,28,1], [48,28,1],
[35,27,0], [35,39,12], [28,27,0], [34,3,-15], [68,3,-15], [29,12,-30], [29,7,-34], [28,9,-32]
],
cmti10: [
[42,41,0], [45,43,0], [47,44,2], [38,43,0], [45,40,0], [51,41,0], [47,41,0], [50,42,0],
[44,41,0], [49,41,0], [45,42,0], [47,55,13], [38,55,13], [40,55,13], [57,55,13], [58,55,13],
[20,28,1], [22,40,13], [26,13,-29], [33,13,-29], [32,9,-29], [34,11,-30], [34,3,-32], [40,12,-31],
[20,13,12], [37,55,13], [43,28,1], [43,28,1], [33,39,7], [57,41,0], [63,44,2], [49,48,4],
[21,8,-16], [23,43,0], [31,18,-23], [49,53,12], [42,43,1], [50,49,4], [48,45,2], [22,18,-23],
[31,60,15], [23,60,15], [35,27,-18], [45,37,4], [14,19,12], [20,4,-11], [14,7,0], [37,60,15],
[33,42,2], [28,40,0], [33,42,2], [34,42,2], [28,52,12], [34,42,2], [34,42,2], [37,42,2],
[33,42,2], [33,42,2], [18,26,0], [18,38,12], [19,43,13], [46,15,-7], [27,43,13], [33,43,0],
[47,43,1], [41,43,0], [44,41,0], [48,44,2], [46,41,0], [44,41,0], [44,41,0], [48,44,2],
[51,41,0], [30,41,0], [37,43,2], [51,41,0], [37,41,0], [60,41,0], [51,41,0], [47,44,2],
[44,41,0], [47,54,12], [43,43,2], [38,44,2], [48,40,0], [51,43,2], [52,43,2], [67,43,2],
[49,41,0], [52,41,0], [42,41,0], [27,60,15], [36,18,-23], [23,60,15], [31,10,-31], [22,7,-33],
[22,18,-23], [32,28,1], [28,42,1], [28,28,1], [34,42,1], [28,28,1], [29,55,13], [29,40,13],
[32,42,1], [20,40,1], [25,52,13], [30,42,1], [19,42,1], [50,28,1], [35,28,1], [31,28,1],
[31,39,12], [30,39,12], [29,28,1], [25,28,1], [22,38,1], [34,28,1], [30,28,1], [42,28,1],
[31,28,1], [31,40,13], [28,28,1], [33,2,-15], [62,2,-15], [34,13,-29], [34,7,-33], [33,7,-33]
]
});
Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-mac.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-mac.js
/*
* jsMath-fallback-mac.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file makes changes needed for when the TeX fonts are not available
* with a browser on the Mac.
*
* ---------------------------------------------------------------------
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************
*
* Here we replace the TeX character mappings by equivalent unicode
* points when possible, and adjust the character dimensions
* based on the fonts we hope we get them from (the styles are set
* to try to use the best characters available in the standard
* fonts).
*/
jsMath.Script.Start();
jsMath.Add(jsMath.TeX,{
cmr10: [
// 00 - 0F
{c: 'Γ', tclass: 'greek'},
{c: 'Δ', tclass: 'greek'},
{c: 'Θ', tclass: 'greek'},
{c: 'Λ', tclass: 'greek'},
{c: 'Ξ', tclass: 'greek'},
{c: 'Π', tclass: 'greek'},
{c: 'Σ', tclass: 'greek'},
{c: 'Υ', tclass: 'greek'},
{c: 'Φ', tclass: 'greek'},
{c: 'Ψ', tclass: 'greek'},
{c: 'Ω', tclass: 'greek'},
{c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
{c: 'fi', tclass: 'normal'},
{c: 'fl', tclass: 'normal'},
{c: 'ffi', tclass: 'normal'},
{c: 'ffl', tclass: 'normal'},
// 10 - 1F
{c: 'ı', a:0, tclass: 'normal'},
{c: 'j', d:.2, tclass: 'normal'},
{c: '`', tclass: 'accent'},
{c: '´', tclass: 'accent'},
{c: 'ˇ', tclass: 'accent'},
{c: '˘', tclass: 'accent'},
{c: '<span style="position:relative; top:.1em">ˉ</span>', tclass: 'accent'},
{c: '˚', tclass: 'accent'},
{c: '̧', tclass: 'normal'},
{c: 'ß', tclass: 'normal'},
{c: 'æ', a:0, tclass: 'normal'},
{c: 'œ', a:0, tclass: 'normal'},
{c: 'ø', tclass: 'normal'},
{c: 'Æ', tclass: 'normal'},
{c: 'Œ', tclass: 'normal'},
{c: 'Ø', tclass: 'normal'},
// 20 - 2F
{c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
{c: '!', lig: {'96': 60}, tclass: 'normal'},
{c: '”', tclass: 'normal'},
{c: '#', tclass: 'normal'},
{c: '$', tclass: 'normal'},
{c: '%', tclass: 'normal'},
{c: '&', tclass: 'normal'},
{c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
{c: '(', d:.2, tclass: 'normal'},
{c: ')', d:.2, tclass: 'normal'},
{c: '*', tclass: 'normal'},
{c: '+', a:.1, tclass: 'normal'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
{c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
{c: '.', a:-.25, tclass: 'normal'},
{c: '/', tclass: 'normal'},
// 30 - 3F
{c: '0', tclass: 'normal'},
{c: '1', tclass: 'normal'},
{c: '2', tclass: 'normal'},
{c: '3', tclass: 'normal'},
{c: '4', tclass: 'normal'},
{c: '5', tclass: 'normal'},
{c: '6', tclass: 'normal'},
{c: '7', tclass: 'normal'},
{c: '8', tclass: 'normal'},
{c: '9', tclass: 'normal'},
{c: ':', tclass: 'normal'},
{c: ';', tclass: 'normal'},
{c: '¡', tclass: 'normal'},
{c: '=', a:0, d:-.1, tclass: 'normal'},
{c: '¿', tclass: 'normal'},
{c: '?', lig: {'96': 62}, tclass: 'normal'},
// 40 - 4F
{c: '@', tclass: 'normal'},
{c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'B', tclass: 'normal'},
{c: 'C', tclass: 'normal'},
{c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
{c: 'E', tclass: 'normal'},
{c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'G', tclass: 'normal'},
{c: 'H', tclass: 'normal'},
{c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
{c: 'J', tclass: 'normal'},
{c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'M', tclass: 'normal'},
{c: 'N', tclass: 'normal'},
{c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
// 50 - 5F
{c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
{c: 'Q', d:.1, tclass: 'normal'},
{c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'S', tclass: 'normal'},
{c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
{c: 'U', tclass: 'normal'},
{c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
{c: 'Z', tclass: 'normal'},
{c: '[', d:.1, tclass: 'normal'},
{c: '“', tclass: 'normal'},
{c: ']', d:.1, tclass: 'normal'},
{c: 'ˆ', tclass: 'accent'},
{c: '˙', tclass: 'accent'},
// 60 - 6F
{c: '‘', lig: {'96': 92}, tclass: 'normal'},
{c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
{c: 'd', tclass: 'normal'},
{c: 'e', a:0, tclass: 'normal'},
{c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
{c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
{c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'i', tclass: 'normal'},
{c: 'j', d:.2, tclass: 'normal'},
{c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'l', tclass: 'normal'},
{c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'q', a:0, d:.2, tclass: 'normal'},
{c: 'r', a:0, tclass: 'normal'},
{c: 's', a:0, tclass: 'normal'},
{c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
{c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'x', a:0, tclass: 'normal'},
{c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
{c: 'z', a:0, tclass: 'normal'},
{c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
{c: '—', a:.1, ic: 0.0278, tclass: 'normal'},
{c: '˝', tclass: 'accent'},
{c: '˜', tclass: 'accent'},
{c: '¨', tclass: 'accent'}
],
cmmi10: [
// 00 - 0F
{c: 'Γ', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'igreek'},
{c: 'Δ', krn: {'127': 0.167}, tclass: 'igreek'},
{c: 'Θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Λ', krn: {'127': 0.167}, tclass: 'igreek'},
{c: 'Ξ', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Π', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
{c: 'Σ', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Υ', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'igreek'},
{c: 'Φ', krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Ψ', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
{c: 'Ω', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'α', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'β', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'γ', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
{c: 'δ', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
{c: 'ε', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
// 10 - 1F
{c: 'ζ', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'η', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
{c: 'θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'ι', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
{c: 'κ', a:0, tclass: 'greek'},
{c: 'λ', tclass: 'greek'},
{c: 'μ', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'ν', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
{c: 'ξ', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
{c: 'π', a:0, ic: 0.0359, tclass: 'greek'},
{c: 'ρ', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'σ', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
{c: 'τ', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
{c: 'υ', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'φ', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'χ', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
// 20 - 2F
{c: 'ψ', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
{c: 'ω', a:0, ic: 0.0359, tclass: 'greek'},
{c: 'ε', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'ϑ', krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'ϖ', a:0, ic: 0.0278, tclass: 'normal'},
{c: 'ϱ', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'ς', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'ϕ', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
{c: '↼', a:0, d:-.2, tclass: 'harpoon'},
{c: '↽', a:0, d:-.1, tclass: 'harpoon'},
{c: '⇀', a:0, d:-.2, tclass: 'harpoon'},
{c: '⇁', a:0, d:-.1, tclass: 'harpoon'},
{c: '<span style="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">˓</span>', a:.1, tclass: 'lucida'},
{c: '<span style="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">˒</span>', a:.1, tclass: 'lucida'},
{c: '<span style="font-size:50%">▷</span>', tclass: 'symbol'},
{c: '<span style="font-size:50%">◁</span>', tclass: 'symbol'},
// 30 - 3F
{c: '0', tclass: 'normal'},
{c: '1', tclass: 'normal'},
{c: '2', tclass: 'normal'},
{c: '3', tclass: 'normal'},
{c: '4', tclass: 'normal'},
{c: '5', tclass: 'normal'},
{c: '6', tclass: 'normal'},
{c: '7', tclass: 'normal'},
{c: '8', tclass: 'normal'},
{c: '9', tclass: 'normal'},
{c: '.', a:-.3, tclass: 'normal'},
{c: ',', a:-.3, d:.2, tclass: 'normal'},
{c: '<', a:.1, tclass: 'normal'},
{c: '<span style="font-size:133%; position:relative; top:.1em">/</span>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
{c: '>', a:.1, tclass: 'normal'},
{c: '<span style="font-size:50%">★</span>', a:0, tclass: 'symbol'},
// 40 - 4F
{c: '∂', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'A', krn: {'127': 0.139}, tclass: 'italic'},
{c: 'B', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'D', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'E', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
{c: 'G', krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 'I', ic: 0.0785, krn: {'127': 0.111}, tclass: 'italic'},
{c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'italic'},
{c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 'L', krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'O', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'italic'},
// 50 - 5F
{c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
{c: 'Q', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'R', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'italic'},
{c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: '♭', tclass: 'symbol2'},
{c: '♮', tclass: 'symbol2'},
{c: '♯', tclass: 'symbol2'},
{c: '<span style="position: relative; top:.5em">⌣</span>', a:0, d:-.1, tclass: 'normal'},
{c: '<span style="position: relative; top:-.3em">⌢</span>', a:0, d:-.1, tclass: 'normal'},
// 60 - 6F
{c: 'ℓ', krn: {'127': 0.111}, tclass: 'symbol'},
{c: 'a', a:0, tclass: 'italic'},
{c: 'b', tclass: 'italic'},
{c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'italic'},
{c: 'e', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'italic'},
{c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'h', krn: {'127': -0.0278}, tclass: 'italic'},
{c: 'i', tclass: 'italic'},
{c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'italic'},
{c: 'k', ic: 0.0315, tclass: 'italic'},
{c: 'l', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'm', a:0, tclass: 'italic'},
{c: 'n', a:0, tclass: 'italic'},
{c: 'o', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 's', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 't', krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'u', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'x', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'ı', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: '℘', a:0, d:.2, krn: {'127': 0.111}, tclass: 'normal'},
{c: '<span style="position:relative; left: .4em; top: -.8em; font-size: 50%">→</span>', ic: 0.154, tclass: 'symbol'},
{c: '̑', ic: 0.399, tclass: 'normal'}
],
cmsy10: [
// 00 - 0F
{c: '−', a:.1, tclass: 'symbol'},
{c: '·', a:0, d:-.2, tclass: 'symbol'},
{c: '×', a:0, tclass: 'symbol'},
{c: '<span style="position:relative; top:.3em">*</span>', a:0, tclass: 'symbol'},
{c: '÷', a:0, tclass: 'symbol'},
{c: '◊', tclass: 'lucida'},
{c: '±', a:.1, tclass: 'symbol'},
{c: '∓', tclass: 'symbol'},
{c: '⊕', tclass: 'symbol'},
{c: '⊖', tclass: 'symbol'},
{c: '⊗', tclass: 'symbol'},
{c: '⊘', tclass: 'symbol'},
{c: '⊙', tclass: 'symbol3'},
{c: '◯', tclass: 'symbol'},
{c: '<span style="position:relative; top:.25em;">°</span>', a:0, d:-.1, tclass: 'symbol'},
{c: '•', a:0, d:-.2, tclass: 'symbol'},
// 10 - 1F
{c: '≍', a:.1, tclass: 'symbol'},
{c: '≡', a:.1, tclass: 'symbol'},
{c: '⊆', tclass: 'symbol'},
{c: '⊇', tclass: 'symbol'},
{c: '≤', tclass: 'symbol'},
{c: '≥', tclass: 'symbol'},
{c: '≼', tclass: 'symbol'},
{c: '≽', tclass: 'symbol'},
{c: '~', a:0, d: -.2, tclass: 'normal'},
{c: '≈', a:.1, d:-.1, tclass: 'symbol'},
{c: '⊂', tclass: 'symbol'},
{c: '⊃', tclass: 'symbol'},
{c: '≪', tclass: 'symbol'},
{c: '≫', tclass: 'symbol'},
{c: '≺', tclass: 'symbol'},
{c: '≻', tclass: 'symbol'},
// 20 - 2F
{c: '←', a:0, d:-.15, tclass: 'arrow1'},
{c: '→', a:0, d:-.15, tclass: 'arrow1'},
{c: '↑', h:1, tclass: 'arrow1a'},
{c: '↓', h:1, tclass: 'arrow1a'},
{c: '↔', a:0, tclass: 'arrow1'},
{c: '↗', h:1, tclass: 'arrows'},
{c: '↘', h:1, tclass: 'arrows'},
{c: '≃', a: .1, tclass: 'symbol'},
{c: '⇐', a:.1, tclass: 'arrow2'},
{c: '⇒', a:.1, tclass: 'arrow2'},
{c: '⇑', h:.9, d:.1, tclass: 'arrow2a'},
{c: '⇓', h:.9, d:.1, tclass: 'arrow2a'},
{c: '⇔', a:.1, tclass: 'arrow2'},
{c: '↖', h:1, tclass: 'arrows'},
{c: '↙', h:1, tclass: 'arrows'},
{c: '∝', a:.1, tclass: 'symbol'},
// 30 - 3F
{c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">′</span>', a: 0, tclass: 'lucida'},
{c: '∞', a:.1, tclass: 'symbol'},
{c: '∈', tclass: 'symbol'},
{c: '∋', tclass: 'symbol'},
{c: '△', tclass: 'symbol'},
{c: '▽', tclass: 'symbol'},
{c: '/', tclass: 'symbol'},
{c: '<span style="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</span>', a:0, tclass: 'normal'},
{c: '∀', tclass: 'symbol'},
{c: '∃', tclass: 'symbol'},
{c: '¬', a:0, d:-.1, tclass: 'symbol1'},
{c: '∅', tclass: 'symbol'},
{c: 'ℜ', tclass: 'symbol'},
{c: 'ℑ', tclass: 'symbol'},
{c: '⊤', tclass: 'symbol'},
{c: '⊥', tclass: 'symbol'},
// 40 - 4F
{c: 'ℵ', tclass: 'symbol'},
{c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
{c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
{c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
{c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
{c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
{c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
// 50 - 5F
{c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
{c: '⋃', tclass: 'symbol'},
{c: '⋂', tclass: 'symbol'},
{c: '⊎', tclass: 'symbol'},
{c: '⋀', tclass: 'symbol'},
{c: '⋁', tclass: 'symbol'},
// 60 - 6F
{c: '⊢', tclass: 'symbol'},
{c: '⊣', tclass: 'symbol2'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '{', d:.2, tclass: 'normal'},
{c: '}', d:.2, tclass: 'normal'},
{c: '〈', a:.3, d:.2, tclass: 'normal'},
{c: '〉', a:.3, d:.2, tclass: 'normal'},
{c: '|', d:.1, tclass: 'vertical'},
{c: '||', d:.1, tclass: 'vertical'},
{c: '↕', h:1, d:.15, tclass: 'arrow1a'},
{c: '⇕', a:.2, d:.1, tclass: 'arrows'},
{c: '<span style="margin:-.1em">∖</span>', a:.3, d:.1, tclass: 'lucida'},
{c: '<span style="font-size: 75%; margin:-.3em">≀</span>', tclass: 'symbol'},
// 70 - 7F
{c: '<span style="position:relative; top: .86em">√</span>', h:.04, d:.9, tclass: 'lucida'},
{c: '∐', a:.4, tclass: 'symbol'},
{c: '∇', tclass: 'symbol'},
{c: '∫', h:1, d:.1, ic: 0.111, tclass: 'root'},
{c: '⊔', tclass: 'symbol'},
{c: '⊓', tclass: 'symbol'},
{c: '⊑', tclass: 'symbol'},
{c: '⊒', tclass: 'symbol'},
{c: '§', d:.1, tclass: 'normal'},
{c: '†', d:.1, tclass: 'normal'},
{c: '‡', d:.1, tclass: 'normal'},
{c: '¶', a:.3, d:.1, tclass: 'lucida'},
{c: '♣', tclass: 'symbol'},
{c: '♦', tclass: 'symbol'},
{c: '♥', tclass: 'symbol'},
{c: '♠', tclass: 'symbol'}
],
cmex10: [
// 00 - 0F
{c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
{c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
{c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
{c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
{c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
{c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
{c: '〈', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
{c: '〉', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
{c: '|', h:.7, d:.15, delim: {rep: 12}, tclass: 'vertical1'},
{c: '||', h:.7, d:.15, delim: {rep: 13}, tclass: 'vertical1'},
{c: '∕', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
{c: '∖', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
// 10 - 1F
{c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
{c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
{c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
{c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
{c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
{c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
{c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
{c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
{c: '〈', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
{c: '〉', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
{c: '∕', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
{c: '∖', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
// 20 - 2F
{c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
{c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
{c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
{c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
{c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
{c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
{c: '〈', h: 0.04, d: 2.96, tclass: 'delim4c'},
{c: '〉', h: 0.04, d: 2.96, tclass: 'delim4c'},
{c: '∕', h: 0.04, d: 2.96, tclass: 'delim4b'},
{c: '∖', h: 0.04, d: 2.96, tclass: 'delim4b'},
{c: '∕', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
{c: '∖', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
// 30 - 3F
{c: '', h: .85, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {bot: 52, rep: 54}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {bot: 53, rep: 55}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 50, rep: 54}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 51, rep: 55}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {rep: 63}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {rep: 119}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {rep: 62}, tclass: 'normal'},
{c: '|', h: .7, d: .15, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical2'},
// 40 - 4F
{c: '', h: .85, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {rep: 66}, tclass: 'normal'},
{c: '', h: .85, d: .2, delim: {rep: 67}, tclass: 'normal'},
{c: '〈', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
{c: '〉', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
{c: '⊔', h: 0, d: 1, n: 71, tclass: 'bigop1'},
{c: '⊔', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '∮', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
{c: '∮', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
{c: '⊙', h: 0, d: 1, n: 75, tclass: 'bigop1'},
{c: '⊙', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⊕', h: 0, d: 1, n: 77, tclass: 'bigop1'},
{c: '⊕', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⊗', h: 0, d: 1, n: 79, tclass: 'bigop1'},
{c: '⊗', h: 0.1, d: 1.5, tclass: 'bigop2'},
// 50 - 5F
{c: '∑', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
{c: '∏', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
{c: '∫', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
{c: '∪', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
{c: '∩', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
{c: '⊎', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
{c: '∧', h: 0, d: 1, n: 94, tclass: 'bigop1'},
{c: '∨', h: 0, d: 1, n: 95, tclass: 'bigop1'},
{c: '∑', h: 0.1, d: 1.6, tclass: 'bigop2a'},
{c: '∏', h: 0.1, d: 1.5, tclass: 'bigop2a'},
{c: '∫', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
{c: '∪', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '∩', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '⊎', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '∧', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '∨', h: 0.1, d: 1.5, tclass: 'bigop2'},
// 60 - 6F
{c: '∐', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
{c: '∐', h: 0.1, d: 1.5, tclass: 'bigop2a'},
{c: '︿', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
{c: '︿', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
{c: '︿', h: 0.99, w: 1.65, tclass: 'wide3'},
{c: '⁓', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
{c: '⁓', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
{c: '⁓', h: 0.99, w: 2, tclass: 'wide3a'},
{c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
{c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
{c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
{c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
// 70 - 7F
{c: '<span style="font-size: 125%; position:relative; top:.95em">√</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
{c: '<span style="font-size: 190%; position:relative; top:.925em">√</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
{c: '<span style="font-size: 250%; position:relative; top:.925em">√</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
{c: '<span style="font-size: 320%; position:relative; top:.92em">√</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
{c: '<span style="font-size: 400%; position:relative; top:.92em">√</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
{c: '<span style="font-size: 500%; position:relative; top:.9em">√</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
{c: '<span style="font-size: 625%; position:relative; top:.9em">√</span>', h: .14, d: 5.7, tclass: 'root'},
{c: '||', h:.65, d:.15, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical2'},
{c: '▵', h:.4, delim: {top: 120, rep: 63}, tclass: 'arrow1b'},
{c: '▿', h:.38, delim: {bot: 121, rep: 63}, tclass: 'arrow1b'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╭</span>', h:.1, tclass: 'symbol'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╮</span>', h:.1, tclass: 'symbol'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╰</span>', h:.1, tclass: 'symbol'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╯</span>', h:.1, tclass: 'symbol'},
{c: '▵', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2b'},
{c: '▿', h:.6, d:-.1, delim: {bot: 127, rep: 119}, tclass: 'arrow2b'}
],
cmti10: [
// 00 - 0F
{c: 'Γ', ic: 0.133, tclass: 'igreek'},
{c: 'Δ', tclass: 'igreek'},
{c: 'Θ', ic: 0.094, tclass: 'igreek'},
{c: 'Λ', tclass: 'igreek'},
{c: 'Ξ', ic: 0.153, tclass: 'igreek'},
{c: 'Π', ic: 0.164, tclass: 'igreek'},
{c: 'Σ', ic: 0.12, tclass: 'igreek'},
{c: 'Υ', ic: 0.111, tclass: 'igreek'},
{c: 'Φ', ic: 0.0599, tclass: 'igreek'},
{c: 'Ψ', ic: 0.111, tclass: 'igreek'},
{c: 'Ω', ic: 0.103, tclass: 'igreek'},
{c: 'ff', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'italic'},
{c: 'fi', ic: 0.103, tclass: 'italic'},
{c: 'fl', ic: 0.103, tclass: 'italic'},
{c: 'ffi', ic: 0.103, tclass: 'italic'},
{c: 'ffl', ic: 0.103, tclass: 'italic'},
// 10 - 1F
{c: 'ı', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'j', d:.2, ic: 0.0374, tclass: 'italic'},
{c: '`', tclass: 'iaccent'},
{c: '´', ic: 0.0969, tclass: 'iaccent'},
{c: 'ˇ', ic: 0.083, tclass: 'iaccent'},
{c: '˘', ic: 0.108, tclass: 'iaccent'},
{c: 'ˉ', ic: 0.103, tclass: 'iaccent'},
{c: '˚', tclass: 'iaccent'},
{c: '?', d: 0.17, w: 0.46, tclass: 'italic'},
{c: 'ß', ic: 0.105, tclass: 'italic'},
{c: 'æ', a:0, ic: 0.0751, tclass: 'italic'},
{c: 'œ', a:0, ic: 0.0751, tclass: 'italic'},
{c: 'ø', ic: 0.0919, tclass: 'italic'},
{c: 'Æ', ic: 0.12, tclass: 'italic'},
{c: 'Œ', ic: 0.12, tclass: 'italic'},
{c: 'Ø', ic: 0.094, tclass: 'italic'},
// 20 - 2F
{c: '?', krn: {'108': -0.256, '76': -0.321}, tclass: 'italic'},
{c: '!', ic: 0.124, lig: {'96': 60}, tclass: 'italic'},
{c: '”', ic: 0.0696, tclass: 'italic'},
{c: '#', ic: 0.0662, tclass: 'italic'},
{c: '$', tclass: 'italic'},
{c: '%', ic: 0.136, tclass: 'italic'},
{c: '&', ic: 0.0969, tclass: 'italic'},
{c: '’', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'italic'},
{c: '(', d:.2, ic: 0.162, tclass: 'italic'},
{c: ')', d:.2, ic: 0.0369, tclass: 'italic'},
{c: '*', ic: 0.149, tclass: 'italic'},
{c: '+', a:.1, ic: 0.0369, tclass: 'italic'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'italic'},
{c: '-', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'italic'},
{c: '.', a:-.25, tclass: 'italic'},
{c: '/', ic: 0.162, tclass: 'italic'},
// 30 - 3F
{c: '0', ic: 0.136, tclass: 'italic'},
{c: '1', ic: 0.136, tclass: 'italic'},
{c: '2', ic: 0.136, tclass: 'italic'},
{c: '3', ic: 0.136, tclass: 'italic'},
{c: '4', ic: 0.136, tclass: 'italic'},
{c: '5', ic: 0.136, tclass: 'italic'},
{c: '6', ic: 0.136, tclass: 'italic'},
{c: '7', ic: 0.136, tclass: 'italic'},
{c: '8', ic: 0.136, tclass: 'italic'},
{c: '9', ic: 0.136, tclass: 'italic'},
{c: ':', ic: 0.0582, tclass: 'italic'},
{c: ';', ic: 0.0582, tclass: 'italic'},
{c: '¡', ic: 0.0756, tclass: 'italic'},
{c: '=', a:0, d:-.1, ic: 0.0662, tclass: 'italic'},
{c: '¿', tclass: 'italic'},
{c: '?', ic: 0.122, lig: {'96': 62}, tclass: 'italic'},
// 40 - 4F
{c: '@', ic: 0.096, tclass: 'italic'},
{c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'B', ic: 0.103, tclass: 'italic'},
{c: 'C', ic: 0.145, tclass: 'italic'},
{c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
{c: 'E', ic: 0.12, tclass: 'italic'},
{c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'G', ic: 0.0872, tclass: 'italic'},
{c: 'H', ic: 0.164, tclass: 'italic'},
{c: 'I', ic: 0.158, tclass: 'italic'},
{c: 'J', ic: 0.14, tclass: 'italic'},
{c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'M', ic: 0.164, tclass: 'italic'},
{c: 'N', ic: 0.164, tclass: 'italic'},
{c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
// 50 - 5F
{c: 'P', ic: 0.103, krn: {'65': -0.0767}, tclass: 'italic'},
{c: 'Q', d:.1, ic: 0.094, tclass: 'italic'},
{c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'S', ic: 0.12, tclass: 'italic'},
{c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
{c: 'U', ic: 0.164, tclass: 'italic'},
{c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'W', ic: 0.184, krn: {'65': -0.0767}, tclass: 'italic'},
{c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
{c: 'Z', ic: 0.145, tclass: 'italic'},
{c: '[', d:.1, ic: 0.188, tclass: 'italic'},
{c: '“', ic: 0.169, tclass: 'italic'},
{c: ']', d:.1, ic: 0.105, tclass: 'italic'},
{c: 'ˆ', ic: 0.0665, tclass: 'iaccent'},
{c: '˙', ic: 0.118, tclass: 'iaccent'},
// 60 - 6F
{c: '‘', ic: 0.124, lig: {'96': 92}, tclass: 'italic'},
{c: 'a', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'd', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'italic'},
{c: 'g', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'h', ic: 0.0767, tclass: 'italic'},
{c: 'i', ic: 0.102, tclass: 'italic'},
{c: 'j', d:.2, ic: 0.145, tclass: 'italic'},
{c: 'k', ic: 0.108, tclass: 'italic'},
{c: 'l', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'm', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'italic'},
{c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
// 70 - 7F
{c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'q', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 's', a:0, ic: 0.0821, tclass: 'italic'},
{c: 't', ic: 0.0949, tclass: 'italic'},
{c: 'u', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'v', a:0, ic: 0.108, tclass: 'italic'},
{c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'x', a:0, ic: 0.12, tclass: 'italic'},
{c: 'y', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'z', a:0, ic: 0.123, tclass: 'italic'},
{c: '–', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'italic'},
{c: '—', a:.1, ic: 0.0921, tclass: 'italic'},
{c: '˝', ic: 0.122, tclass: 'iaccent'},
{c: '˜', ic: 0.116, tclass: 'iaccent'},
{c: '¨', tclass: 'iaccent'}
],
cmbx10: [
// 00 - 0F
{c: 'Γ', tclass: 'bgreek'},
{c: 'Δ', tclass: 'bgreek'},
{c: 'Θ', tclass: 'bgreek'},
{c: 'Λ', tclass: 'bgreek'},
{c: 'Ξ', tclass: 'bgreek'},
{c: 'Π', tclass: 'bgreek'},
{c: 'Σ', tclass: 'bgreek'},
{c: 'Υ', tclass: 'bgreek'},
{c: 'Φ', tclass: 'bgreek'},
{c: 'Ψ', tclass: 'bgreek'},
{c: 'Ω', tclass: 'bgreek'},
{c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'bold'},
{c: 'fi', tclass: 'bold'},
{c: 'fl', tclass: 'bold'},
{c: 'ffi', tclass: 'bold'},
{c: 'ffl', tclass: 'bold'},
// 10 - 1F
{c: 'ı', a:0, tclass: 'bold'},
{c: 'j', d:.2, tclass: 'bold'},
{c: '`', tclass: 'baccent'},
{c: '´', tclass: 'baccent'},
{c: 'ˇ', tclass: 'baccent'},
{c: '˘', tclass: 'baccent'},
{c: 'ˉ', tclass: 'baccent'},
{c: '˚', tclass: 'baccent'},
{c: '?', tclass: 'bold'},
{c: 'ß', tclass: 'bold'},
{c: 'æ', a:0, tclass: 'bold'},
{c: 'œ', a:0, tclass: 'bold'},
{c: 'ø', tclass: 'bold'},
{c: 'Æ', tclass: 'bold'},
{c: 'Œ', tclass: 'bold'},
{c: 'Ø', tclass: 'bold'},
// 20 - 2F
{c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'bold'},
{c: '!', lig: {'96': 60}, tclass: 'bold'},
{c: '”', tclass: 'bold'},
{c: '#', tclass: 'bold'},
{c: '$', tclass: 'bold'},
{c: '%', tclass: 'bold'},
{c: '&', tclass: 'bold'},
{c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'bold'},
{c: '(', d:.2, tclass: 'bold'},
{c: ')', d:.2, tclass: 'bold'},
{c: '*', tclass: 'bold'},
{c: '+', a:.1, tclass: 'bold'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'bold'},
{c: '-', a:0, lig: {'45': 123}, tclass: 'bold'},
{c: '.', a:-.25, tclass: 'bold'},
{c: '/', tclass: 'bold'},
// 30 - 3F
{c: '0', tclass: 'bold'},
{c: '1', tclass: 'bold'},
{c: '2', tclass: 'bold'},
{c: '3', tclass: 'bold'},
{c: '4', tclass: 'bold'},
{c: '5', tclass: 'bold'},
{c: '6', tclass: 'bold'},
{c: '7', tclass: 'bold'},
{c: '8', tclass: 'bold'},
{c: '9', tclass: 'bold'},
{c: ':', tclass: 'bold'},
{c: ';', tclass: 'bold'},
{c: '¡', tclass: 'bold'},
{c: '=', a:0, d:-.1, tclass: 'bold'},
{c: '¿', tclass: 'bold'},
{c: '?', lig: {'96': 62}, tclass: 'bold'},
// 40 - 4F
{c: '@', tclass: 'bold'},
{c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'B', tclass: 'bold'},
{c: 'C', tclass: 'bold'},
{c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
{c: 'E', tclass: 'bold'},
{c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'G', tclass: 'bold'},
{c: 'H', tclass: 'bold'},
{c: 'I', krn: {'73': 0.0278}, tclass: 'bold'},
{c: 'J', tclass: 'bold'},
{c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'M', tclass: 'bold'},
{c: 'N', tclass: 'bold'},
{c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
// 50 - 5F
{c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
{c: 'Q', d:.1, tclass: 'bold'},
{c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'S', tclass: 'bold'},
{c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
{c: 'U', tclass: 'bold'},
{c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
{c: 'Z', tclass: 'bold'},
{c: '[', d:.1, tclass: 'bold'},
{c: '“', tclass: 'bold'},
{c: ']', d:.1, tclass: 'bold'},
{c: 'ˆ', tclass: 'baccent'},
{c: '˙', tclass: 'baccent'},
// 60 - 6F
{c: '‘', lig: {'96': 92}, tclass: 'bold'},
{c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'bold'},
{c: 'd', tclass: 'bold'},
{c: 'e', a:0, tclass: 'bold'},
{c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'bold'},
{c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'bold'},
{c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'i', tclass: 'bold'},
{c: 'j', d:.2, tclass: 'bold'},
{c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'l', tclass: 'bold'},
{c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'q', a:0, d:.2, tclass: 'bold'},
{c: 'r', a:0, tclass: 'bold'},
{c: 's', a:0, tclass: 'bold'},
{c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'bold'},
{c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'x', a:0, tclass: 'bold'},
{c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
{c: 'z', a:0, tclass: 'bold'},
{c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'bold'},
{c: '—', a:.1, ic: 0.0278, tclass: 'bold'},
{c: '˝', tclass: 'baccent'},
{c: '˜', tclass: 'baccent'},
{c: '¨', tclass: 'baccent'}
]
});
jsMath.Setup.Styles({
'.typeset .cmr10': "font-family: serif",
'.typeset .italic': "font-style: italic",
'.typeset .bold': "font-weight: bold",
'.typeset .lucida': "font-family: 'Lucida Grande'",
'.typeset .asymbol': "font-family: 'Apple Symbols'; font-size: 115%",
'.typeset .cal': "font-family: 'Apple Chancery'",
'.typeset .arrows': "font-family: 'Hiragino Mincho Pro'",
'.typeset .arrow1': "font-family: 'Hiragino Mincho Pro'; position: relative; top: .075em; margin: -1px",
'.typeset .arrow1a': "font-family: 'Hiragino Mincho Pro'; margin:-.3em",
'.typeset .arrow1b': "font-family: AppleGothic; font-size: 50%",
'.typeset .arrow2': "font-family: Symbol; font-size: 140%; position: relative; top: .1em; margin:-1px",
'.typeset .arrow2a': "font-family: Symbol",
'.typeset .arrow2b': "font-family: AppleGothic; font-size: 67%",
'.typeset .harpoon': "font-family: AppleGothic; font-size: 90%",
'.typeset .symbol': "font-family: 'Hiragino Mincho Pro'",
'.typeset .symbol2': "font-family: 'Hiragino Mincho Pro'; margin:-.2em",
'.typeset .symbol3': "font-family: AppleGothic",
'.typeset .delim1': "font-family: Times; font-size: 133%; position:relative; top:.75em",
'.typeset .delim1b': "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position:relative; top:.8em; margin: -.1em",
'.typeset .delim1c': "font-family: Symbol; font-size: 120%; position:relative; top:.8em;",
'.typeset .delim2': "font-family: Baskerville; font-size: 180%; position:relative; top:.75em",
'.typeset .delim2b': "font-family: 'Hiragino Mincho Pro'; font-size: 190%; position:relative; top:.8em; margin: -.1em",
'.typeset .delim2c': "font-family: Symbol; font-size: 167%; position:relative; top:.8em;",
'.typeset .delim3': "font-family: Baskerville; font-size: 250%; position:relative; top:.725em",
'.typeset .delim3b': "font-family: 'Hiragino Mincho Pro'; font-size: 250%; position:relative; top:.8em; margin: -.1em",
'.typeset .delim3c': "font-family: symbol; font-size: 240%; position:relative; top:.775em;",
'.typeset .delim4': "font-family: Baskerville; font-size: 325%; position:relative; top:.7em",
'.typeset .delim4b': "font-family: 'Hiragino Mincho Pro'; font-size: 325%; position:relative; top:.8em; margin: -.1em",
'.typeset .delim4c': "font-family: Symbol; font-size: 300%; position:relative; top:.8em;",
'.typeset .vertical': "font-family: Copperplate",
'.typeset .vertical1': "font-family: Copperplate; font-size: 85%; margin: .15em;",
'.typeset .vertical2': "font-family: Copperplate; font-size: 85%; margin: .17em;",
'.typeset .greek': "font-family: serif",
'.typeset .igreek': "font-family: serif; font-style:italic",
'.typeset .bgreek': "font-family: serif; font-weight:bold",
'.typeset .bigop1': "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position: relative; top: .85em; margin:-.05em",
'.typeset .bigop1a': "font-family: Baskerville; font-size: 100%; position: relative; top: .775em;",
'.typeset .bigop1b': "font-family: 'Hiragino Mincho Pro'; font-size: 160%; position: relative; top: .7em; margin:-.1em",
'.typeset .bigop1c': "font-family: Apple Symbols; font-size: 125%; position: relative; top: .75em; margin:-.1em;",
'.typeset .bigop2': "font-family: 'Hiragino Mincho Pro'; font-size: 200%; position: relative; top: .8em; margin:-.07em",
'.typeset .bigop2a': "font-family: Baskerville; font-size: 175%; position: relative; top: .7em;",
'.typeset .bigop2b': "font-family: 'Hiragino Mincho Pro'; font-size: 270%; position: relative; top: .62em; margin:-.1em",
'.typeset .bigop2c': "font-family: 'Apple Symbols'; font-size: 250%; position: relative; top: .7em; margin:-.17em;",
'.typeset .wide1': "font-size: 67%; position: relative; top:-.8em",
'.typeset .wide2': "font-size: 110%; position: relative; top:-.5em",
'.typeset .wide3': "font-size: 175%; position: relative; top:-.32em",
'.typeset .wide1a': "font-size: 75%; position: relative; top:-.5em",
'.typeset .wide2a': "font-size: 133%; position: relative; top: -.15em",
'.typeset .wide3a': "font-size: 200%; position: relative; top: -.05em",
'.typeset .root': "font-family: Baskerville;",
'.typeset .accent': "position: relative; top: .02em",
'.typeset .iaccent': "position: relative; top: .02em; font-style:italic",
'.typeset .baccent': "position: relative; top: .02em; font-weight:bold"
});
/*
* Check for ability to access Apple Symbols font
*/
jsMath.noAppleSymbols = (jsMath.BBoxFor('∣').w ==
jsMath.BBoxFor('<span style="font-family: Apple Symbols">∣</span>').w);
if (jsMath.noAppleSymbols) {
jsMath.Update.TeXfonts({
cmsy10: {
'16': {c: '<span style="position:relative;top:.25em; font-size: 67%">⌣</span><span style="position:relative;top:-.15em;font-size:67%;margin-left:-1em">⌢</span>', tclass: 'normal'},
'22': {c: '≺<span style="position:relative;top:.3em; margin-left:-1em">—</span>', tclass: 'normal'},
'23': {c: '≻<span style="position:relative;top:.3em; margin-left:-1em">—</span>', tclass: 'normal'},
'91': {c: '∪'},
'92': {c: '∩'},
'93': {c: '∪<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'},
'94': {c: '∧'},
'95': {c: '∨'},
'96': {c: '|<span style="position:relative; top:-.15em; margin-left:-.1em">–</span>', tclass: 'normal'},
'109': {c: '⇑<span style="position:relative; top:.1em; margin-left:-.6em">⇓</span>', h:.9, d:.2, tclass: 'arrow2a'}
},
cmex10: {
'85': {c: '∪<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'},
'93': {c: '∪<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'}
}
});
jsMath.Macro('rightleftharpoons','\\unicode{x21CC}');
} else {
jsMath.Setup.Styles({
'.typeset .harpoon': 'font-family: Apple Symbols; font-size: 125%'
});
}
//
// Adjust for OmniWeb
//
if (jsMath.browser == 'OmniWeb') {
jsMath.Update.TeXfonts({
cmsy10: {
'55': {c: '<span style="font-size: 75%; position:relative; left:.3em; top:-.15em; margin-left:-.3em">˫</span>'},
'104': {c: '<span style="position:relative; top:.2em; margin-left:-.55em">〈</span>'},
'105': {c: '<span style="position:relative; top:.2em; margin-right:-.55em">〉</span>'}
}
});
jsMath.Setup.Styles({
'.typeset .arrow2': 'font-family: Symbol; font-size: 100%; position: relative; top: -.1em; margin:-1px'
});
if (jsMath.noAppleSymbols) {
jsMath.Update.TeXfonts({
cmsy10: {
'22': {c: '≺<span style="position:relative;top:.25em; margin-left:-.8em; margin-right:.2em">–</span>', tclass: 'normal'},
'23': {c: '≻<span style="position:relative;top:.25em; margin-left:-.7em; margin-right:.1em">–</span>', tclass: 'normal'},
'96': {c: '<span style="font-size:80%; position:relative; top:-.15em">|</span><span style="position:relative; top:-.1em; margin-left:-.1em">–</span>', tclass: 'normal'}
}
});
}
}
//
// Adjust for Opera
//
if (jsMath.browser == 'Opera') {
jsMath.Setup.Styles({
'.typeset .bigop1c': "margin:0pt .12em 0pt 0pt;",
'.typeset .bigop2c': "margin:0pt .12em 0pt 0pt;"
});
}
if (jsMath.browser == 'Mozilla') {jsMath.Setup.Script('jsMath-fallback-mac-mozilla.js')}
if (jsMath.browser == 'MSIE') {jsMath.Setup.Script('jsMath-fallback-mac-msie.js')}
/*
* No access to TeX "not" character, so fake this
*/
jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
jsMath.Box.defaultH = 0.8;
jsMath.Script.End();
Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-pc.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-pc.js
/*
* jsMath-fallback-pc.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file makes changes needed for when the TeX fonts are not available
* with a browser on the PC.
*
* ---------------------------------------------------------------------
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************
*
* Here we replace the TeX character mappings by equivalent unicode
* points when possible, and adjust the character dimensions
* based on the fonts we hope we get them from (the styles are set
* to try to use the best characters available in the standard
* fonts).
*/
jsMath.Script.Start();
jsMath.Add(jsMath.TeX,{
cmr10: [
// 00 - 0F
{c: 'Γ', tclass: 'greek'},
{c: 'Δ', tclass: 'greek'},
{c: 'Θ', tclass: 'greek'},
{c: 'Λ', tclass: 'greek'},
{c: 'Ξ', tclass: 'greek'},
{c: 'Π', tclass: 'greek'},
{c: 'Σ', tclass: 'greek'},
{c: 'Υ', tclass: 'greek'},
{c: 'Φ', tclass: 'greek'},
{c: 'Ψ', tclass: 'greek'},
{c: 'Ω', tclass: 'greek'},
{c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
{c: 'fi', tclass: 'normal'},
{c: 'fl', tclass: 'normal'},
{c: 'ffi', tclass: 'normal'},
{c: 'ffl', tclass: 'normal'},
// 10 - 1F
{c: 'ı', a:0, tclass: 'normal'},
{c: 'j', d:.2, tclass: 'normal'},
{c: 'ˋ', tclass: 'accent'},
{c: 'ˊ', tclass: 'accent'},
{c: 'ˇ', tclass: 'accent'},
{c: '˘', tclass: 'accent'},
{c: 'ˉ', tclass: 'accent'},
{c: '˚', tclass: 'accent'},
{c: '̧', tclass: 'normal'},
{c: 'ß', tclass: 'normal'},
{c: 'æ', a:0, tclass: 'normal'},
{c: 'œ', a:0, tclass: 'normal'},
{c: 'ø', tclass: 'normal'},
{c: 'Æ', tclass: 'normal'},
{c: 'Œ', tclass: 'normal'},
{c: 'Ø', tclass: 'normal'},
// 20 - 2F
{c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
{c: '!', lig: {'96': 60}, tclass: 'normal'},
{c: '”', tclass: 'normal'},
{c: '#', tclass: 'normal'},
{c: '$', tclass: 'normal'},
{c: '%', tclass: 'normal'},
{c: '&', tclass: 'normal'},
{c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
{c: '(', d:.2, tclass: 'normal'},
{c: ')', d:.2, tclass: 'normal'},
{c: '*', tclass: 'normal'},
{c: '+', a:.1, tclass: 'normal'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
{c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
{c: '.', a:-.25, tclass: 'normal'},
{c: '/', tclass: 'normal'},
// 30 - 3F
{c: '0', tclass: 'normal'},
{c: '1', tclass: 'normal'},
{c: '2', tclass: 'normal'},
{c: '3', tclass: 'normal'},
{c: '4', tclass: 'normal'},
{c: '5', tclass: 'normal'},
{c: '6', tclass: 'normal'},
{c: '7', tclass: 'normal'},
{c: '8', tclass: 'normal'},
{c: '9', tclass: 'normal'},
{c: ':', tclass: 'normal'},
{c: ';', tclass: 'normal'},
{c: '¡', tclass: 'normal'},
{c: '=', a:0, d:-.1, tclass: 'normal'},
{c: '¿', tclass: 'normal'},
{c: '?', lig: {'96': 62}, tclass: 'normal'},
// 40 - 4F
{c: '@', tclass: 'normal'},
{c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'B', tclass: 'normal'},
{c: 'C', tclass: 'normal'},
{c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
{c: 'E', tclass: 'normal'},
{c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'G', tclass: 'normal'},
{c: 'H', tclass: 'normal'},
{c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
{c: 'J', tclass: 'normal'},
{c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'M', tclass: 'normal'},
{c: 'N', tclass: 'normal'},
{c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
// 50 - 5F
{c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
{c: 'Q', d:.2, tclass: 'normal'},
{c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'S', tclass: 'normal'},
{c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
{c: 'U', tclass: 'normal'},
{c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
{c: 'Z', tclass: 'normal'},
{c: '[', d:.1, tclass: 'normal'},
{c: '“', tclass: 'normal'},
{c: ']', d:.1, tclass: 'normal'},
{c: 'ˆ', tclass: 'accent'},
{c: '˙', tclass: 'accent'},
// 60 - 6F
{c: '‘', lig: {'96': 92}, tclass: 'normal'},
{c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
{c: 'd', tclass: 'normal'},
{c: 'e', a:0, tclass: 'normal'},
{c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
{c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
{c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'i', tclass: 'normal'},
{c: 'j', d:.2, tclass: 'normal'},
{c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'l', tclass: 'normal'},
{c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'q', a:0, d:.2, tclass: 'normal'},
{c: 'r', a:0, tclass: 'normal'},
{c: 's', a:0, tclass: 'normal'},
{c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
{c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'x', a:0, tclass: 'normal'},
{c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
{c: 'z', a:0, tclass: 'normal'},
{c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
{c: '—', a:.1, ic: 0.0278, tclass: 'normal'},
{c: '˝', tclass: 'accent'},
{c: '˜', tclass: 'accent'},
{c: '¨', tclass: 'accent'}
],
cmmi10: [
// 00 - 0F
{c: 'Γ', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'igreek'},
{c: 'Δ', krn: {'127': 0.167}, tclass: 'igreek'},
{c: 'Θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Λ', krn: {'127': 0.167}, tclass: 'igreek'},
{c: 'Ξ', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Π', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
{c: 'Σ', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Υ', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'igreek'},
{c: 'Φ', krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Ψ', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
{c: 'Ω', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'α', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'β', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'γ', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
{c: 'δ', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
{c: 'ε', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
// 10 - 1F
{c: 'ζ', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'η', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
{c: 'θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'ι', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
{c: 'κ', a:0, tclass: 'greek'},
{c: 'λ', tclass: 'greek'},
{c: 'μ', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'ν', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
{c: 'ξ', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
{c: 'π', a:0, ic: 0.0359, tclass: 'greek'},
{c: 'ρ', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'σ', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
{c: 'τ', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
{c: 'υ', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'φ', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'χ', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
// 20 - 2F
{c: 'ψ', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
{c: 'ω', a:0, ic: 0.0359, tclass: 'greek'},
{c: 'ε', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'ϑ', krn: {'127': 0.0833}, tclass: 'lucida'},
{c: 'ϖ', a:0, ic: 0.0278, tclass: 'lucida'},
{c: 'ϱ', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'lucida'},
{c: 'ς', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'lucida'},
{c: 'ϕ', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'lucida'},
{c: '↼', a:0, d:-.2, tclass: 'arrows'},
{c: '↽', a:0, d:-.1, tclass: 'arrows'},
{c: '⇀', a:0, d:-.2, tclass: 'arrows'},
{c: '⇁', a:0, d:-.1, tclass: 'arrows'},
{c: '<span style="position:relative; top:-.1em">˓</span>', a:.1, tclass: 'symbol'},
{c: '<span style="position:relative; top:-.1em">˒</span>', a:.1, tclass: 'symbol'},
{c: '▹', tclass: 'symbol'},
{c: '◃', tclass: 'symbol'},
// 30 - 3F
{c: '0', tclass: 'normal'},
{c: '1', tclass: 'normal'},
{c: '2', tclass: 'normal'},
{c: '3', tclass: 'normal'},
{c: '4', tclass: 'normal'},
{c: '5', tclass: 'normal'},
{c: '6', tclass: 'normal'},
{c: '7', tclass: 'normal'},
{c: '8', tclass: 'normal'},
{c: '9', tclass: 'normal'},
{c: '.', a:-.3, tclass: 'normal'},
{c: ',', a:-.3, d:.2, tclass: 'normal'},
{c: '<', a:.1, tclass: 'normal'},
{c: '<span style="font-size:133%; position:relative; top:.1em">/</span>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
{c: '>', a:.1, tclass: 'normal'},
{c: '⋆', a:0, tclass: 'arial'},
// 40 - 4F
{c: '∂', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'A', krn: {'127': 0.139}, tclass: 'italic'},
{c: 'B', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'D', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'E', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
{c: 'G', krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 'I', ic: 0.0785, krn: {'127': 0.111}, tclass: 'italic'},
{c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'italic'},
{c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 'L', krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'O', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'italic'},
// 50 - 5F
{c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
{c: 'Q', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'R', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'italic'},
{c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: '♭', tclass: 'symbol'},
{c: '♮', tclass: 'symbol'},
{c: '♯', tclass: 'symbol'},
{c: '<span style="position: relative; top:-.3em; font-size:75%">‿</span>', a:0, d:-.1, tclass: 'arial'},
{c: '<span style="position: relative; top:.4em; font-size:75%">⁀</span>', a:0, d:-.1, tclass: 'arial'},
// 60 - 6F
{c: 'ℓ', krn: {'127': 0.111}, tclass: 'italic'},
{c: 'a', a:0, tclass: 'italic'},
{c: 'b', tclass: 'italic'},
{c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'italic'},
{c: 'e', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'italic'},
{c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'h', krn: {'127': -0.0278}, tclass: 'italic'},
{c: 'i', tclass: 'italic'},
{c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'italic'},
{c: 'k', ic: 0.0315, tclass: 'italic'},
{c: 'l', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'm', a:0, tclass: 'italic'},
{c: 'n', a:0, tclass: 'italic'},
{c: 'o', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 's', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 't', krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'u', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'x', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'ı', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: '℘', a:0, d:.2, krn: {'127': 0.111}, tclass: 'arial'},
{c: '<span style="position:relative; left: .3em; top: -.65em; font-size: 67%">→</span>', ic: 0.154, tclass: 'symbol'},
{c: '̑', ic: 0.399, tclass: 'normal'}
],
cmsy10: [
// 00 - 0F
{c: '<span style="position:relative; top:.1em">−</span>', a:.1, tclass: 'symbol'},
{c: '·', a:0, d:-.2, tclass: 'normal'},
{c: '×', a:0, tclass: 'normal'},
{c: '<span style="position:relative; top:.3em">*</span>', a:0, tclass: 'normal'},
{c: '÷', a:0, tclass: 'normal'},
{c: '◊', tclass: 'symbol'},
{c: '±', a:.1, tclass: 'normal'},
{c: '∓', tclass: 'symbol'},
{c: '⊕', tclass: 'symbol'},
{c: '⊖', tclass: 'symbol'},
{c: '⊗', tclass: 'symbol'},
{c: '⊘', tclass: 'symbol'},
{c: '⊙', tclass: 'symbol'},
{c: '◯', tclass: 'arial'},
{c: '∘', a:0, d:-.1, tclass: 'symbol2'},
{c: '•', a:0, d:-.2, tclass: 'symbol'},
// 10 - 1F
{c: '≍', a:.1, tclass: 'symbol2'},
{c: '≡', a:.1, tclass: 'symbol2'},
{c: '⊆', tclass: 'symbol'},
{c: '⊇', tclass: 'symbol'},
{c: '≤', tclass: 'symbol'},
{c: '≥', tclass: 'symbol'},
{c: '≼', tclass: 'symbol'},
{c: '≽', tclass: 'symbol'},
{c: '~', a:0, d: -.2, tclass: 'normal'},
{c: '≈', a:.1, d:-.1, tclass: 'symbol'},
{c: '⊂', tclass: 'symbol'},
{c: '⊃', tclass: 'symbol'},
{c: '≪', tclass: 'symbol'},
{c: '≫', tclass: 'symbol'},
{c: '≺', tclass: 'symbol'},
{c: '≻', tclass: 'symbol'},
// 20 - 2F
{c: '←', a:-.1, tclass: 'arrow1'},
{c: '→', a:-.1, tclass: 'arrow1'},
{c: '↑', a:.2, d:0, tclass: 'arrow1a'},
{c: '↓', a:.2, d:0, tclass: 'arrow1a'},
{c: '↔', a:-.1, tclass: 'arrow1'},
{c: '↗', a:.1, tclass: 'arrows'},
{c: '↘', a:.1, tclass: 'arrows'},
{c: '≃', a: .1, tclass: 'symbol2'},
{c: '⇐', a:-.1, tclass: 'arrow2'},
{c: '⇒', a:-.1, tclass: 'arrow2'},
{c: '⇑', a:.2, d:.1, tclass: 'arrow1a'},
{c: '⇓', a:.2, d:.1, tclass: 'arrow1a'},
{c: '⇔', a:-.1, tclass: 'arrow2'},
{c: '↖', a:.1, tclass: 'arrows'},
{c: '↙', a:.1, tclass: 'arrows'},
{c: '∝', a:.1, tclass: 'normal'},
// 30 - 3F
{c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">′</span>', a: 0, tclass: 'lucida'},
{c: '∞', a:.1, tclass: 'symbol'},
{c: '∈', tclass: 'symbol'},
{c: '∋', tclass: 'symbol'},
{c: '<span style="font-size: 150%; position:relative; top:.2em">△</span>', tclass: 'symbol'},
{c: '<span style="font-size: 150%; position:relative; top:.2em">▽</span>', tclass: 'symbol'},
{c: '<span style="font-size: 133%; position:relative; top:.2em">/</span>', d:.2, tclass: 'normal'},
{c: '<span style="font-size: 67%; position: relative; top:-.15em; margin-right:-.3em">⊢</span>', tclass: 'symbol'},
{c: '∀', tclass: 'symbol'},
{c: '∃', tclass: 'symbol'},
{c: '¬', a:0, d:-.1, tclass: 'symbol'},
{c: '∅', tclass: 'symbol'},
{c: 'ℜ', tclass: 'symbol'},
{c: 'ℑ', tclass: 'symbol'},
{c: '⊤', tclass: 'symbol'},
{c: '⊥', tclass: 'symbol'},
// 40 - 4F
{c: 'ℵ', tclass: 'symbol'},
{c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
{c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
{c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
{c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
{c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
{c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
// 50 - 5F
{c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
{c: '⋃', tclass: 'symbol'},
{c: '⋂', tclass: 'symbol'},
{c: '⊎', tclass: 'symbol'},
{c: '⋀', tclass: 'symbol'},
{c: '⋁', tclass: 'symbol'},
// 60 - 6F
{c: '⊢', tclass: 'symbol'},
{c: '⊣', tclass: 'symbol'},
{c: '⌈', a:.3, d:.2, tclass: 'arial'},
{c: '⌉', a:.3, d:.2, tclass: 'arial'},
{c: '⌊', a:.3, d:.2, tclass: 'arial'},
{c: '⌋', a:.3, d:.2, tclass: 'arial'},
{c: '{', d:.2, tclass: 'normal'},
{c: '}', d:.2, tclass: 'normal'},
{c: '〈', a:.3, d:.2, tclass: 'symbol'},
{c: '〉', a:.3, d:.2, tclass: 'symbol'},
{c: '∣', d:.1, tclass: 'symbol'},
{c: '∥', d:.1, tclass: 'symbol'},
{c: '↕', a:.2, d:0, tclass: 'arrow1a'},
{c: '⇕', a:.3, d:0, tclass: 'arrow1a'},
{c: '∖', a:.3, d:.1, tclass: 'symbol'},
{c: '≀', tclass: 'symbol'},
// 70 - 7F
{c: '<span style="position:relative; top: .8em">√</span>', h:.04, d:.8, tclass: 'symbol'},
{c: '∐', a:.4, tclass: 'symbol'},
{c: '∇', tclass: 'symbol'},
{c: '<span style="font-size: 85%; left:-.1em; margin-right:-.2em">∫</span>', a:.4, d:.1, ic: 0.111, tclass: 'lucida'},
{c: '⊔', tclass: 'symbol'},
{c: '⊓', tclass: 'symbol'},
{c: '⊑', tclass: 'symbol'},
{c: '⊒', tclass: 'symbol'},
{c: '§', d:.1, tclass: 'normal'},
{c: '†', d:.1, tclass: 'normal'},
{c: '‡', d:.1, tclass: 'normal'},
{c: '¶', a:.3, d:.1, tclass: 'lucida'},
{c: '♣', tclass: 'arial'},
{c: '♢', tclass: 'arial'},
{c: '♡', tclass: 'arial'},
{c: '♠', tclass: 'arial'}
],
cmex10: [
// 00 - 0F
{c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
{c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
{c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
{c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
{c: '⌈', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
{c: '⌉', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
{c: '⌊', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
{c: '⌋', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
{c: '<span style="margin-left:-.1em">{</span>', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
{c: '<span style="margin-right:-.1em">}</span>', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
{c: '〈', h: 0.04, d: 1.16, n: 68, tclass: 'delim1b'},
{c: '〉', h: 0.04, d: 1.16, n: 69, tclass: 'delim1b'},
{c: '∣', h:.7, d:.1, delim: {rep: 12}, tclass: 'symbol'},
{c: '∥', h:.7, d:.1, delim: {rep: 13}, tclass: 'symbol'},
{c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1a'},
{c: '∖', h: 0.04, d: 1.16, n: 47, tclass: 'delim1a'},
// 10 - 1F
{c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
{c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
{c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
{c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
{c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
{c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
{c: '⌈', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
{c: '⌉', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
{c: '⌊', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
{c: '⌋', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
{c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
{c: '<span style="position:relative; left:-.05em; margin-right:-.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
{c: '〈', h: 0.04, d: 2.36, n: 42, tclass: 'delim3b'},
{c: '〉', h: 0.04, d: 2.36, n: 43, tclass: 'delim3b'},
{c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3a'},
{c: '∖', h: 0.04, d: 2.36, n: 45, tclass: 'delim3a'},
// 20 - 2F
{c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
{c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
{c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
{c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
{c: '⌈', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
{c: '⌉', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
{c: '⌊', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
{c: '⌋', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
{c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
{c: '<span style="position:relative; left:-.1em; margin-right:-.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
{c: '〈', h: 0.04, d: 2.96, tclass: 'delim4b'},
{c: '〉', h: 0.04, d: 2.96, tclass: 'delim4b'},
{c: '/', h: 0.04, d: 2.96, tclass: 'delim4a'},
{c: '∖', h: 0.04, d: 2.96, tclass: 'delim4a'},
{c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2a'},
{c: '∖', h: 0.04, d: 1.76, n: 31, tclass: 'delim2a'},
// 30 - 3F
{c: 'æ', h: .8, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delimx'},
{c: 'ö', h: .8, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delimx'},
{c: 'é', h: .8, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delimx'},
{c: 'ù', h: .8, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delimx'},
{c: 'ë', h: .8, d: .2, delim: {bot: 52, rep: 54}, tclass: 'delimx'},
{c: 'û', h: .8, d: .2, delim: {bot: 53, rep: 55}, tclass: 'delimx'},
{c: 'ê', h: .8, d: .2, delim: {top: 50, rep: 54}, tclass: 'delimx'},
{c: 'ú', h: .8, d: .2, delim: {top: 51, rep: 55}, tclass: 'delimx'},
{c: 'ì', h: .8, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delimx'},
{c: 'ü', h: .8, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delimx'},
{c: 'î', h: .8, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delimx'},
{c: 'þ', h: .8, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delimx'},
{c: 'í', h: .8, d: .2, delim: {rep: 63}, tclass: 'delimx'},
{c: 'ý', h: .8, d: .2, delim: {rep: 119}, tclass: 'delimx'},
{c: 'ï', h: .8, d: .2, delim: {rep: 62}, tclass: 'delimx'},
{c: '<span style="margin:.125em">|</span>', h: .8, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'normal'},
// 40 - 4F
{c: 'è', h: .8, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delimx'},
{c: 'ø', h: .8, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delimx'},
{c: 'ç', h: .8, d: .2, delim: {rep: 66}, tclass: 'delimx'},
{c: '÷', h: .8, d: .2, delim: {rep: 67}, tclass: 'delimx'},
{c: '〈', h: 0.04, d: 1.76, n: 28, tclass: 'delim2b'},
{c: '〉', h: 0.04, d: 1.76, n: 29, tclass: 'delim2b'},
{c: '⊔', h: 0, d: 1, n: 71, tclass: 'bigop1'},
{c: '⊔', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '∮', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
{c: '∮', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
{c: '⊙', h: 0, d: 1, n: 75, tclass: 'bigop1'},
{c: '⊙', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⊕', h: 0, d: 1, n: 77, tclass: 'bigop1'},
{c: '⊕', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⊗', h: 0, d: 1, n: 79, tclass: 'bigop1'},
{c: '⊗', h: 0.1, d: 1.5, tclass: 'bigop2'},
// 50 - 5F
{c: '∑', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
{c: '∏', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
{c: '∫', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
{c: '∪', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
{c: '∩', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
{c: '⊎', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
{c: '⋀', h: 0, d: 1, n: 94, tclass: 'bigop1'},
{c: '⋁', h: 0, d: 1, n: 95, tclass: 'bigop1'},
{c: '∑', h: 0.1, d: 1.6, tclass: 'bigop2a'},
{c: '∏', h: 0.1, d: 1.5, tclass: 'bigop2a'},
{c: '∫', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
{c: '∪', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '∩', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '⊎', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '⋀', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⋁', h: 0.1, d: 1.5, tclass: 'bigop2'},
// 60 - 6F
{c: '∐', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
{c: '∐', h: 0.1, d: 1.5, tclass: 'bigop2a'},
{c: '︿', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
{c: '︿', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
{c: '︿', h: 0.99, w: 1.65, tclass: 'wide3'},
{c: '~', h: 0.722, w: .5, n: 102, tclass: 'wide1a'},
{c: '~', h: 0.8, w: .8, n: 103, tclass: 'wide2a'},
{c: '~', h: 0.99, w: 1.3, tclass: 'wide3a'},
{c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
{c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
{c: '⌈', h: 0.04, d: 1.76, n: 22, tclass: 'delim2a'},
{c: '⌉', h: 0.04, d: 1.76, n: 23, tclass: 'delim2a'},
{c: '⌊', h: 0.04, d: 1.76, n: 24, tclass: 'delim2a'},
{c: '⌋', h: 0.04, d: 1.76, n: 25, tclass: 'delim2a'},
{c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
{c: '<span style="position:relative; margin-right:-.1em; left:-.05em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
// 70 - 7F
{c: '<span style="font-size: 150%; position:relative; top:.8em">√</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
{c: '<span style="font-size: 220%; position:relative; top:.8em">√</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
{c: '<span style="font-size: 310%; position:relative; top:.8em; margin-right:-.01em">√</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
{c: '<span style="font-size: 400%; position:relative; top:.8em; margin-right:-.025em">√</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
{c: '<span style="font-size: 490%; position:relative; top:.8em; margin-right:-.03em">√</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
{c: '<span style="font-size: 580%; position:relative; top:.775em; margin-right:-.04em">√</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
{c: '<span style="font-size: 750%; position:relative; top:.775em;margin-right:-.04em">√</span>', h: .14, d: 5.7, tclass: 'root'},
{c: '<span style="margin-left:.02em">|</span><span style="margin-left:.08em; margin-right:.125em">|</span>', h:.8, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'normal'},
{c: '↑', h:.7, d:0, delim: {top: 120, rep: 63}, tclass: 'arrow1a'},
{c: '↓', h:.65, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
{c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.55em; margin-right:-.3em">◜</span>', h: 0.05, tclass: 'symbol'},
{c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.55em; margin-right:-.1em">◝</span>', h: 0.05, tclass: 'symbol'},
{c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.15em; margin-right:-.3em">◟</span>', h: 0.05, tclass: 'symbol'},
{c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.15em; margin-right:-.1em">◞</span>', h: 0.05, tclass: 'symbol'},
{c: '⇑', h: .7, d:0, delim: {top: 126, rep: 119}, tclass: 'arrow1a'},
{c: '⇓', h: .7, d:0, delim: {bot: 127, rep: 119}, tclass: 'arrow1a'}
],
cmti10: [
// 00 - 0F
{c: 'Γ', ic: 0.133, tclass: 'igreek'},
{c: 'Δ', tclass: 'igreek'},
{c: 'Θ', ic: 0.094, tclass: 'igreek'},
{c: 'Λ', tclass: 'igreek'},
{c: 'Ξ', ic: 0.153, tclass: 'igreek'},
{c: 'Π', ic: 0.164, tclass: 'igreek'},
{c: 'Σ', ic: 0.12, tclass: 'igreek'},
{c: 'Υ', ic: 0.111, tclass: 'igreek'},
{c: 'Φ', ic: 0.0599, tclass: 'igreek'},
{c: 'Ψ', ic: 0.111, tclass: 'igreek'},
{c: 'Ω', ic: 0.103, tclass: 'igreek'},
{c: 'ff', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'italic'},
{c: 'fi', ic: 0.103, tclass: 'italic'},
{c: 'fl', ic: 0.103, tclass: 'italic'},
{c: 'ffi', ic: 0.103, tclass: 'italic'},
{c: 'ffl', ic: 0.103, tclass: 'italic'},
// 10 - 1F
{c: 'ı', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'j', d:.2, ic: 0.0374, tclass: 'italic'},
{c: 'ˋ', tclass: 'iaccent'},
{c: 'ˊ', ic: 0.0969, tclass: 'iaccent'},
{c: 'ˇ', ic: 0.083, tclass: 'iaccent'},
{c: '˘', ic: 0.108, tclass: 'iaccent'},
{c: 'ˉ', ic: 0.103, tclass: 'iaccent'},
{c: '˚', tclass: 'iaccent'},
{c: '?', d: 0.17, w: 0.46, tclass: 'italic'},
{c: 'ß', ic: 0.105, tclass: 'italic'},
{c: 'æ', a:0, ic: 0.0751, tclass: 'italic'},
{c: 'œ', a:0, ic: 0.0751, tclass: 'italic'},
{c: 'ø', ic: 0.0919, tclass: 'italic'},
{c: 'Æ', ic: 0.12, tclass: 'italic'},
{c: 'Œ', ic: 0.12, tclass: 'italic'},
{c: 'Ø', ic: 0.094, tclass: 'italic'},
// 20 - 2F
{c: '?', krn: {'108': -0.256, '76': -0.321}, tclass: 'italic'},
{c: '!', ic: 0.124, lig: {'96': 60}, tclass: 'italic'},
{c: '”', ic: 0.0696, tclass: 'italic'},
{c: '#', ic: 0.0662, tclass: 'italic'},
{c: '$', tclass: 'italic'},
{c: '%', ic: 0.136, tclass: 'italic'},
{c: '&', ic: 0.0969, tclass: 'italic'},
{c: '’', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'italic'},
{c: '(', d:.2, ic: 0.162, tclass: 'italic'},
{c: ')', d:.2, ic: 0.0369, tclass: 'italic'},
{c: '*', ic: 0.149, tclass: 'italic'},
{c: '+', a:.1, ic: 0.0369, tclass: 'italic'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'italic'},
{c: '-', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'italic'},
{c: '.', a:-.25, tclass: 'italic'},
{c: '/', ic: 0.162, tclass: 'italic'},
// 30 - 3F
{c: '0', ic: 0.136, tclass: 'italic'},
{c: '1', ic: 0.136, tclass: 'italic'},
{c: '2', ic: 0.136, tclass: 'italic'},
{c: '3', ic: 0.136, tclass: 'italic'},
{c: '4', ic: 0.136, tclass: 'italic'},
{c: '5', ic: 0.136, tclass: 'italic'},
{c: '6', ic: 0.136, tclass: 'italic'},
{c: '7', ic: 0.136, tclass: 'italic'},
{c: '8', ic: 0.136, tclass: 'italic'},
{c: '9', ic: 0.136, tclass: 'italic'},
{c: ':', ic: 0.0582, tclass: 'italic'},
{c: ';', ic: 0.0582, tclass: 'italic'},
{c: '¡', ic: 0.0756, tclass: 'italic'},
{c: '=', a:0, d:-.1, ic: 0.0662, tclass: 'italic'},
{c: '¿', tclass: 'italic'},
{c: '?', ic: 0.122, lig: {'96': 62}, tclass: 'italic'},
// 40 - 4F
{c: '@', ic: 0.096, tclass: 'italic'},
{c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'B', ic: 0.103, tclass: 'italic'},
{c: 'C', ic: 0.145, tclass: 'italic'},
{c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
{c: 'E', ic: 0.12, tclass: 'italic'},
{c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'G', ic: 0.0872, tclass: 'italic'},
{c: 'H', ic: 0.164, tclass: 'italic'},
{c: 'I', ic: 0.158, tclass: 'italic'},
{c: 'J', ic: 0.14, tclass: 'italic'},
{c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'M', ic: 0.164, tclass: 'italic'},
{c: 'N', ic: 0.164, tclass: 'italic'},
{c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
// 50 - 5F
{c: 'P', ic: 0.103, krn: {'65': -0.0767}, tclass: 'italic'},
{c: 'Q', d:.2, ic: 0.094, tclass: 'italic'},
{c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'S', ic: 0.12, tclass: 'italic'},
{c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
{c: 'U', ic: 0.164, tclass: 'italic'},
{c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'W', ic: 0.184, krn: {'65': -0.0767}, tclass: 'italic'},
{c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
{c: 'Z', ic: 0.145, tclass: 'italic'},
{c: '[', d:.1, ic: 0.188, tclass: 'italic'},
{c: '“', ic: 0.169, tclass: 'italic'},
{c: ']', d:.1, ic: 0.105, tclass: 'italic'},
{c: 'ˆ', ic: 0.0665, tclass: 'iaccent'},
{c: '˙', ic: 0.118, tclass: 'iaccent'},
// 60 - 6F
{c: '‘', ic: 0.124, lig: {'96': 92}, tclass: 'italic'},
{c: 'a', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'd', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'italic'},
{c: 'g', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'h', ic: 0.0767, tclass: 'italic'},
{c: 'i', ic: 0.102, tclass: 'italic'},
{c: 'j', d:.2, ic: 0.145, tclass: 'italic'},
{c: 'k', ic: 0.108, tclass: 'italic'},
{c: 'l', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'm', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'italic'},
{c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
// 70 - 7F
{c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'q', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 's', a:0, ic: 0.0821, tclass: 'italic'},
{c: 't', ic: 0.0949, tclass: 'italic'},
{c: 'u', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'v', a:0, ic: 0.108, tclass: 'italic'},
{c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'x', a:0, ic: 0.12, tclass: 'italic'},
{c: 'y', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'z', a:0, ic: 0.123, tclass: 'italic'},
{c: '–', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'italic'},
{c: '—', a:.1, ic: 0.0921, tclass: 'italic'},
{c: '˝', ic: 0.122, tclass: 'iaccent'},
{c: '˜', ic: 0.116, tclass: 'iaccent'},
{c: '¨', tclass: 'iaccent'}
],
cmbx10: [
// 00 - 0F
{c: 'Γ', tclass: 'bgreek'},
{c: 'Δ', tclass: 'bgreek'},
{c: 'Θ', tclass: 'bgreek'},
{c: 'Λ', tclass: 'bgreek'},
{c: 'Ξ', tclass: 'bgreek'},
{c: 'Π', tclass: 'bgreek'},
{c: 'Σ', tclass: 'bgreek'},
{c: 'Υ', tclass: 'bgreek'},
{c: 'Φ', tclass: 'bgreek'},
{c: 'Ψ', tclass: 'bgreek'},
{c: 'Ω', tclass: 'bgreek'},
{c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'bold'},
{c: 'fi', tclass: 'bold'},
{c: 'fl', tclass: 'bold'},
{c: 'ffi', tclass: 'bold'},
{c: 'ffl', tclass: 'bold'},
// 10 - 1F
{c: 'ı', a:0, tclass: 'bold'},
{c: 'j', d:.2, tclass: 'bold'},
{c: 'ˋ', tclass: 'baccent'},
{c: 'ˊ', tclass: 'baccent'},
{c: 'ˇ', tclass: 'baccent'},
{c: '˘', tclass: 'baccent'},
{c: 'ˉ', tclass: 'baccent'},
{c: '˚', tclass: 'baccent'},
{c: '?', tclass: 'bold'},
{c: 'ß', tclass: 'bold'},
{c: 'æ', a:0, tclass: 'bold'},
{c: 'œ', a:0, tclass: 'bold'},
{c: 'ø', tclass: 'bold'},
{c: 'Æ', tclass: 'bold'},
{c: 'Œ', tclass: 'bold'},
{c: 'Ø', tclass: 'bold'},
// 20 - 2F
{c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'bold'},
{c: '!', lig: {'96': 60}, tclass: 'bold'},
{c: '”', tclass: 'bold'},
{c: '#', tclass: 'bold'},
{c: '$', tclass: 'bold'},
{c: '%', tclass: 'bold'},
{c: '&', tclass: 'bold'},
{c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'bold'},
{c: '(', d:.2, tclass: 'bold'},
{c: ')', d:.2, tclass: 'bold'},
{c: '*', tclass: 'bold'},
{c: '+', a:.1, tclass: 'bold'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'bold'},
{c: '-', a:0, lig: {'45': 123}, tclass: 'bold'},
{c: '.', a:-.25, tclass: 'bold'},
{c: '/', tclass: 'bold'},
// 30 - 3F
{c: '0', tclass: 'bold'},
{c: '1', tclass: 'bold'},
{c: '2', tclass: 'bold'},
{c: '3', tclass: 'bold'},
{c: '4', tclass: 'bold'},
{c: '5', tclass: 'bold'},
{c: '6', tclass: 'bold'},
{c: '7', tclass: 'bold'},
{c: '8', tclass: 'bold'},
{c: '9', tclass: 'bold'},
{c: ':', tclass: 'bold'},
{c: ';', tclass: 'bold'},
{c: '¡', tclass: 'bold'},
{c: '=', a:0, d:-.1, tclass: 'bold'},
{c: '¿', tclass: 'bold'},
{c: '?', lig: {'96': 62}, tclass: 'bold'},
// 40 - 4F
{c: '@', tclass: 'bold'},
{c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'B', tclass: 'bold'},
{c: 'C', tclass: 'bold'},
{c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
{c: 'E', tclass: 'bold'},
{c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'G', tclass: 'bold'},
{c: 'H', tclass: 'bold'},
{c: 'I', krn: {'73': 0.0278}, tclass: 'bold'},
{c: 'J', tclass: 'bold'},
{c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'M', tclass: 'bold'},
{c: 'N', tclass: 'bold'},
{c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
// 50 - 5F
{c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
{c: 'Q', d:.2, tclass: 'bold'},
{c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'S', tclass: 'bold'},
{c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
{c: 'U', tclass: 'bold'},
{c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
{c: 'Z', tclass: 'bold'},
{c: '[', d:.1, tclass: 'bold'},
{c: '“', tclass: 'bold'},
{c: ']', d:.1, tclass: 'bold'},
{c: 'ˆ', tclass: 'baccent'},
{c: '˙', tclass: 'baccent'},
// 60 - 6F
{c: '‘', lig: {'96': 92}, tclass: 'bold'},
{c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'bold'},
{c: 'd', tclass: 'bold'},
{c: 'e', a:0, tclass: 'bold'},
{c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'bold'},
{c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'bold'},
{c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'i', tclass: 'bold'},
{c: 'j', d:.2, tclass: 'bold'},
{c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'l', tclass: 'bold'},
{c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'q', a:0, d:.2, tclass: 'bold'},
{c: 'r', a:0, tclass: 'bold'},
{c: 's', a:0, tclass: 'bold'},
{c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'bold'},
{c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'x', a:0, tclass: 'bold'},
{c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
{c: 'z', a:0, tclass: 'bold'},
{c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'bold'},
{c: '—', a:.1, ic: 0.0278, tclass: 'bold'},
{c: '˝', tclass: 'baccent'},
{c: '˜', tclass: 'baccent'},
{c: '¨', tclass: 'baccent'}
]
});
jsMath.Setup.Styles({
'.typeset .cmr10': "font-family: serif",
'.typeset .italic': "font-style: italic",
'.typeset .bold': "font-weight: bold",
'.typeset .lucida': "font-family: 'lucida sans unicode'",
'.typeset .arial': "font-family: 'arial unicode MS'",
'.typeset .cal': "font-family: 'Script MT', 'Script MT Bold', cursive",
'.typeset .arrows': "font-family: 'Arial unicode MS'",
'.typeset .arrow1': "font-family: 'Arial unicode MS'",
'.typeset .arrow1a': "font-family: 'Arial unicode MS'; position:relative; top:.05em;left:-.15em; margin-right:-.15em",
'.typeset .arrow2': "font-family: 'Arial unicode MS'; position:relative; top:-.1em;",
'.typeset .arrow3': "font-family: 'Arial unicode MS'; margin:.1em",
'.typeset .symbol': "font-family: 'Arial unicode MS'",
'.typeset .symbol2': "font-family: 'Arial unicode MS'",
'.typeset .delim1': "font-family: 'Times New Roman'; font-size: 133%; position:relative; top:.7em",
'.typeset .delim1a': "font-family: 'Lucida sans unicode'; font-size: 133%; position:relative; top:.8em",
'.typeset .delim1b': "font-family: 'Arial unicode MS'; font-size: 133%; position:relative; top:.8em",
'.typeset .delim2': "font-family: 'Times New Roman'; font-size: 180%; position:relative; top:.75em",
'.typeset .delim2a': "font-family: 'Lucida sans unicode'; font-size: 180%; position:relative; top:.8em",
'.typeset .delim2b': "font-family: 'Arial unicode MS'; font-size: 180%; position:relative; top:.8em",
'.typeset .delim3': "font-family: 'Times New Roman'; font-size: 250%; position:relative; top:.725em",
'.typeset .delim3a': "font-family: 'Lucida sans unicode'; font-size: 250%; position:relative; top:.775em",
'.typeset .delim3b': "font-family: 'Arial unicode MS'; font-size: 250%; position:relative; top:.8em",
'.typeset .delim4': "font-family: 'Times New Roman'; font-size: 325%; position:relative; top:.7em",
'.typeset .delim4a': "font-family: 'Lucida sans unicode'; font-size: 325%; position:relative; top:.775em",
'.typeset .delim4b': "font-family: 'Arial unicode MS'; font-size: 325%; position:relative; top:.8em",
'.typeset .delimx': "font-family: Symbol; position:relative; top:.2em",
'.typeset .greek': "font-family: 'Times New Roman'",
'.typeset .igreek': "font-family: 'Times New Roman'; font-style:italic",
'.typeset .bgreek': "font-family: 'Times New Roman'; font-weight:bold",
'.typeset .bigop1': "font-family: 'Arial unicode MS'; font-size: 130%; position: relative; top: .7em; margin:-.05em",
'.typeset .bigop1a': "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top: .85em;",
'.typeset .bigop1b': "font-family: 'Arial unicode MS'; font-size: 180%; position: relative; top: .6em",
'.typeset .bigop1c': "font-family: 'Arial unicode MS'; font-size: 85%; position: relative; top: 1em",
'.typeset .bigop2': "font-family: 'Arial unicode MS'; font-size: 230%; position: relative; top: .6em; margin:-.05em",
'.typeset .bigop2a': "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: .75em",
'.typeset .bigop2b': "font-family: 'Arial unicode MS'; font-size: 275%; position: relative; top: .55em",
'.typeset .bigop2c': "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: 1em; margin-right:-.1em",
'.typeset .wide1': "font-size: 67%; position: relative; top:-.5em;",
'.typeset .wide2': "font-size: 110%; position: relative; top:-.2em;",
'.typeset .wide3': "font-size: 175%;",
'.typeset .wide1a': "font-family: 'Times New Roman'; font-size: 75%; position: relative; top:-.5em",
'.typeset .wide2a': "font-family: 'Times New Roman'; font-size: 133%; position: relative; top:-.2em",
'.typeset .wide3a': "font-family: 'Times New Roman'; font-size: 200%; position: relative; top:-.1em",
'.typeset .root': "font-family: 'Arial unicode MS'; margin-right:-.075em",
'.typeset .accent': "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em",
'.typeset .iaccent': "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-style:italic",
'.typeset .baccent': "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-weight:bold"
});
//
// adjust for Mozilla
//
if (jsMath.browser == 'Mozilla') {
jsMath.Update.TeXfonts({
cmex10: {
'48': {c: ''},
'49': {c: ''},
'50': {c: ''},
'51': {c: ''},
'52': {c: ''},
'53': {c: ''},
'54': {c: ''},
'55': {c: ''},
'56': {c: ''},
'57': {c: ''},
'58': {c: ''},
'59': {c: ''},
'60': {c: ''},
'61': {c: ''},
'62': {c: ''},
'64': {c: ''},
'65': {c: ''},
'66': {c: ''},
'67': {c: ''}
}
});
jsMath.Setup.Styles({
'.typeset .accent': 'font-family: Arial unicode MS; position:relative; top:.05em; left:.05em'
});
}
//
// adjust for MSIE
//
if (jsMath.browser == "MSIE") {
jsMath.Browser.msieFontBug = 1;
jsMath.Update.TeXfonts({
cmex10: {
'63': {c: '<span style="position:relative; left:.125em; margin-right:.125em">|</span>'},
'119': {c: '<span style="position:relative; left:.02em; margin-right=.08em">|</span><span style="margin-right:.125em">|</span>'}
}
});
}
/*
* No access to TeX "not" character, so fake this
* Also ajust the bowtie spacing
*/
jsMath.Macro('not','\\mathrel{\\rlap{\\kern 3mu/}}');
jsMath.Macro('bowtie','\\mathrel\\triangleright\\kern-6mu\\mathrel\\triangleleft');
jsMath.Box.defaultH = 0.8;
jsMath.Script.End();
Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-symbols.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-symbols.js
/*
* jsMath-fallback-symbols.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file makes changes needed to use image fonts for symbols
* but standard native fonts for letters and numbers.
*
* ---------------------------------------------------------------------
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
jsMath.Script.Start();
jsMath.Add(jsMath.Img,{
UpdateTeXFonts: function (change) {
for (var font in change) {
for (var code in change[font]) {
jsMath.TeX[font][code] = change[font][code];
jsMath.TeX[font][code].tclass = 'i' + font;
}
}
}
});
jsMath.Img.UpdateTeXFonts({
cmr10: {
'33': {c: '!', lig: {'96': 60}},
'35': {c: '#'},
'36': {c: '$'},
'37': {c: '%'},
'38': {c: '&'},
'40': {c: '(', d:.2},
'41': {c: ')', d:.2},
'42': {c: '*', d:-.3},
'43': {c: '+', a:.1},
'44': {c: ',', a:-.3},
'45': {c: '-', a:0, lig: {'45': 123}},
'46': {c: '.', a:-.25},
'47': {c: '/'},
'48': {c: '0'},
'49': {c: '1'},
'50': {c: '2'},
'51': {c: '3'},
'52': {c: '4'},
'53': {c: '5'},
'54': {c: '6'},
'55': {c: '7'},
'56': {c: '8'},
'57': {c: '9'},
'58': {c: ':'},
'59': {c: ';'},
'61': {c: '=', a:0, d:-.1},
'63': {c: '?', lig: {'96': 62}},
'64': {c: '@'},
'65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
'66': {c: 'B'},
'67': {c: 'C'},
'68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
'69': {c: 'E'},
'70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'71': {c: 'G'},
'72': {c: 'H'},
'73': {c: 'I', krn: {'73': 0.0278}},
'74': {c: 'J'},
'75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
'77': {c: 'M'},
'78': {c: 'N'},
'79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
'80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
'81': {c: 'Q', d: 1},
'82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
'83': {c: 'S'},
'84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
'85': {c: 'U'},
'86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
'90': {c: 'Z'},
'91': {c: '[', d:.1},
'93': {c: ']', d:.1},
'97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
'100': {c: 'd'},
'101': {c: 'e', a:0},
'102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
'103': {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}},
'104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
'105': {c: 'i'},
'106': {c: 'j', d:1},
'107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
'108': {c: 'l'},
'109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
'110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
'111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'112': {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'113': {c: 'q', a:0, d:1},
'114': {c: 'r', a:0},
'115': {c: 's', a:0},
'116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
'117': {c: 'u', a:0, krn: {'119': -0.0278}},
'118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
'119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
'120': {c: 'x', a:0},
'121': {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
'122': {c: 'z', a:0}
},
cmmi10: {
'65': {c: 'A', krn: {'127': 0.139}},
'66': {c: 'B', ic: 0.0502, krn: {'127': 0.0833}},
'67': {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'68': {c: 'D', ic: 0.0278, krn: {'127': 0.0556}},
'69': {c: 'E', ic: 0.0576, krn: {'127': 0.0833}},
'70': {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
'71': {c: 'G', krn: {'127': 0.0833}},
'72': {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
'73': {c: 'I', ic: 0.0785, krn: {'127': 0.111}},
'74': {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}},
'75': {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
'76': {c: 'L', krn: {'127': 0.0278}},
'77': {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'78': {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'79': {c: 'O', ic: 0.0278, krn: {'127': 0.0833}},
'80': {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
'81': {c: 'Q', d:.2, krn: {'127': 0.0833}},
'82': {c: 'R', ic: 0.00773, krn: {'127': 0.0833}},
'83': {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'84': {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'85': {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}},
'86': {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
'87': {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
'88': {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'89': {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
'90': {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
'97': {c: 'a', a:0},
'98': {c: 'b'},
'99': {c: 'c', a:0, krn: {'127': 0.0556}},
'100': {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}},
'101': {c: 'e', a:0, krn: {'127': 0.0556}},
'102': {c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}},
'103': {c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}},
'104': {c: 'h', krn: {'127': -0.0278}},
'105': {c: 'i'},
'106': {c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}},
'107': {c: 'k', ic: 0.0315},
'108': {c: 'l', ic: 0.0197, krn: {'127': 0.0833}},
'109': {c: 'm', a:0},
'110': {c: 'n', a:0},
'111': {c: 'o', a:0, krn: {'127': 0.0556}},
'112': {c: 'p', a:0, d:.2, krn: {'127': 0.0833}},
'113': {c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}},
'114': {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
'115': {c: 's', a:0, krn: {'127': 0.0556}},
'116': {c: 't', krn: {'127': 0.0833}},
'117': {c: 'u', a:0, krn: {'127': 0.0278}},
'118': {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}},
'119': {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}},
'120': {c: 'x', a:0, krn: {'127': 0.0278}},
'121': {c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}},
'122': {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}}
},
cmsy10: {
'0': {c:'–', a:.1}
},
cmti10: {
'33': {c: '!', lig: {'96': 60}},
'35': {c: '#', ic: 0.0662},
'37': {c: '%', ic: 0.136},
'38': {c: '&', ic: 0.0969},
'40': {c: '(', d:.2, ic: 0.162},
'41': {c: ')', d:.2, ic: 0.0369},
'42': {c: '*', ic: 0.149},
'43': {c: '+', a:.1, ic: 0.0369},
'44': {c: ',', a:-.3, d:.2, w: 0.278},
'45': {c: '-', a:0, ic: 0.0283, lig: {'45': 123}},
'46': {c: '.', a:-.25},
'47': {c: '/', ic: 0.162},
'48': {c: '0', ic: 0.136},
'49': {c: '1', ic: 0.136},
'50': {c: '2', ic: 0.136},
'51': {c: '3', ic: 0.136},
'52': {c: '4', ic: 0.136},
'53': {c: '5', ic: 0.136},
'54': {c: '6', ic: 0.136},
'55': {c: '7', ic: 0.136},
'56': {c: '8', ic: 0.136},
'57': {c: '9', ic: 0.136},
'58': {c: ':', ic: 0.0582},
'59': {c: ';', ic: 0.0582},
'61': {c: '=', a:0, d:-.1, ic: 0.0662},
'63': {c: '?', ic: 0.122, lig: {'96': 62}},
'64': {c: '@', ic: 0.096},
'65': {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'66': {c: 'B', ic: 0.103},
'67': {c: 'C', ic: 0.145},
'68': {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
'69': {c: 'E', ic: 0.12},
'70': {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
'71': {c: 'G', ic: 0.0872},
'72': {c: 'H', ic: 0.164},
'73': {c: 'I', ic: 0.158},
'74': {c: 'J', ic: 0.14},
'75': {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
'76': {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'77': {c: 'M', ic: 0.164},
'78': {c: 'N', ic: 0.164},
'79': {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
'80': {c: 'P', ic: 0.103, krn: {'65': -0.0767}},
'81': {c: 'Q', d:.2, ic: 0.094},
'82': {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'83': {c: 'S', ic: 0.12},
'84': {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
'85': {c: 'U', ic: 0.164},
'86': {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
'87': {c: 'W', ic: 0.184, krn: {'65': -0.0767}},
'88': {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
'89': {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
'90': {c: 'Z', ic: 0.145},
'91': {c: '[', d:.1, ic: 0.188},
'93': {c: ']', d:.1, ic: 0.105},
'97': {c: 'a', a:0, ic: 0.0767},
'98': {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'99': {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'100': {c: 'd', ic: 0.103, krn: {'108': 0.0511}},
'101': {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'102': {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}},
'103': {c: 'g', a:0, d:.2, ic: 0.0885},
'104': {c: 'h', ic: 0.0767},
'105': {c: 'i', ic: 0.102},
'106': {c: 'j', d:.2, ic: 0.145},
'107': {c: 'k', ic: 0.108},
'108': {c: 'l', ic: 0.103, krn: {'108': 0.0511}},
'109': {c: 'm', a:0, ic: 0.0767},
'110': {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}},
'111': {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'112': {c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'113': {c: 'q', a:0, d:.2, ic: 0.0885},
'114': {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
'115': {c: 's', a:0, ic: 0.0821},
'116': {c: 't', ic: 0.0949},
'117': {c: 'u', a:0, ic: 0.0767},
'118': {c: 'v', a:0, ic: 0.108},
'119': {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}},
'120': {c: 'x', a:0, ic: 0.12},
'121': {c: 'y', a:0, d:.2, ic: 0.0885},
'122': {c: 'z', a:0, ic: 0.123}
},
cmbx10: {
'33': {c: '!', lig: {'96': 60}},
'35': {c: '#'},
'36': {c: '$'},
'37': {c: '%'},
'38': {c: '&'},
'40': {c: '(', d:.2},
'41': {c: ')', d:.2},
'42': {c: '*'},
'43': {c: '+', a:.1},
'44': {c: ',', a:-.3, d:.2, w: 0.278},
'45': {c: '-', a:0, lig: {'45': 123}},
'46': {c: '.', a:-.25},
'47': {c: '/'},
'48': {c: '0'},
'49': {c: '1'},
'50': {c: '2'},
'51': {c: '3'},
'52': {c: '4'},
'53': {c: '5'},
'54': {c: '6'},
'55': {c: '7'},
'56': {c: '8'},
'57': {c: '9'},
'58': {c: ':'},
'59': {c: ';'},
'61': {c: '=', a:0, d:-.1},
'63': {c: '?', lig: {'96': 62}},
'64': {c: '@'},
'65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
'66': {c: 'B'},
'67': {c: 'C'},
'68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
'69': {c: 'E'},
'70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'71': {c: 'G'},
'72': {c: 'H'},
'73': {c: 'I', krn: {'73': 0.0278}},
'74': {c: 'J'},
'75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
'77': {c: 'M'},
'78': {c: 'N'},
'79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
'80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
'81': {c: 'Q', d: 1},
'82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
'83': {c: 'S'},
'84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
'85': {c: 'U'},
'86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
'89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
'90': {c: 'Z'},
'91': {c: '[', d:.1},
'93': {c: ']', d:.1},
'97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
'100': {c: 'd'},
'101': {c: 'e', a:0},
'102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
'103': {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}},
'104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
'105': {c: 'i'},
'106': {c: 'j', d:1},
'107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
'108': {c: 'l'},
'109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
'110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
'111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'112': {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
'113': {c: 'q', a:0, d:1},
'114': {c: 'r', a:0},
'115': {c: 's', a:0},
'116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
'117': {c: 'u', a:0, krn: {'119': -0.0278}},
'118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
'119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
'120': {c: 'x', a:0},
'121': {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
'122': {c: 'z', a:0}
}
});
if (jsMath.browser == 'MSIE' && navigator.platform == 'MacPPC') {
jsMath.Setup.Styles({
'.typeset .math': 'font-style: normal',
'.typeset .typeset': 'font-style: normal',
'.typeset .icmr10': 'font-family: Times',
'.typeset .icmmi10': 'font-family: Times; font-style: italic',
'.typeset .icmbx10': 'font-family: Times; font-weight: bold',
'.typeset .icmti10': 'font-family: Times; font-style: italic'
});
} else {
jsMath.Setup.Styles({
'.typeset .math': 'font-style: normal',
'.typeset .typeset': 'font-style: normal',
'.typeset .icmr10': 'font-family: serif',
'.typeset .icmmi10': 'font-family: serif; font-style: italic',
'.typeset .icmbx10': 'font-family: serif; font-weight: bold',
'.typeset .icmti10': 'font-family: serif; font-style: italic'
});
}
jsMath.Add(jsMath.Img,{
symbols: [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 34, 39,
60, 62,
92, 94, 95,
96,
123,124,125,126,127
]
});
/*
* for now, use images for everything
*/
jsMath.Img.SetFont({
cmr10: jsMath.Img.symbols,
cmmi10: [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64,
91, 92, 93, 94, 95,
96,
123,124,125,126,127
],
cmsy10: [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103, 104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119, 120,121,122,123,124,125,126,127
],
cmex10: ['all'],
cmti10: jsMath.Img.symbols.concat(36),
cmbx10: jsMath.Img.symbols
});
jsMath.Img.LoadFont('cm-fonts');
jsMath.Script.End();
Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-unix.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-unix.js
/*
* jsMath-fallback-mac.js
*
* Part of the jsMath package for mathematics on the web.
*
* This file makes changes needed for when the TeX fonts are not available
* with a browser on the Mac.
*
* ---------------------------------------------------------------------
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/********************************************************************
*
* Here we replace the TeX character mappings by equivalent unicode
* points when possible, and adjust the character dimensions
* based on the fonts we hope we get them from (the styles are set
* to try to use the best characters available in the standard
* fonts).
*/
jsMath.Script.Start();
jsMath.Add(jsMath.TeX,{
cmr10: [
// 00 - 0F
{c: 'Γ', tclass: 'greek'},
{c: 'Δ', tclass: 'greek'},
{c: 'Θ', tclass: 'greek'},
{c: 'Λ', tclass: 'greek'},
{c: 'Ξ', tclass: 'greek'},
{c: 'Π', tclass: 'greek'},
{c: 'Σ', tclass: 'greek'},
{c: 'Υ', tclass: 'greek'},
{c: 'Φ', tclass: 'greek'},
{c: 'Ψ', tclass: 'greek'},
{c: 'Ω', tclass: 'greek'},
{c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
{c: 'fi', tclass: 'normal'},
{c: 'fl', tclass: 'normal'},
{c: 'ffi', tclass: 'normal'},
{c: 'ffl', tclass: 'normal'},
// 10 - 1F
{c: 'ı', a:0, tclass: 'normal'},
{c: 'j', d:.2, tclass: 'normal'},
{c: '`', tclass: 'accent'},
{c: '´', tclass: 'accent'},
{c: 'ˇ', tclass: 'accent'},
{c: '˘', tclass: 'accent'},
{c: '<span style="position:relative; top:.1em">ˉ</span>', tclass: 'accent'},
{c: '˚', tclass: 'accent'},
{c: '̧', tclass: 'normal'},
{c: 'ß', tclass: 'normal'},
{c: 'æ', a:0, tclass: 'normal'},
{c: 'œ', a:0, tclass: 'normal'},
{c: 'ø', tclass: 'normal'},
{c: 'Æ', tclass: 'normal'},
{c: 'Œ', tclass: 'normal'},
{c: 'Ø', tclass: 'normal'},
// 20 - 2F
{c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
{c: '!', lig: {'96': 60}, tclass: 'normal'},
{c: '”', tclass: 'normal'},
{c: '#', tclass: 'normal'},
{c: '$', tclass: 'normal'},
{c: '%', tclass: 'normal'},
{c: '&', tclass: 'normal'},
{c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
{c: '(', d:.2, tclass: 'normal'},
{c: ')', d:.2, tclass: 'normal'},
{c: '*', tclass: 'normal'},
{c: '+', a:.1, tclass: 'normal'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
{c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
{c: '.', a:-.25, tclass: 'normal'},
{c: '/', tclass: 'normal'},
// 30 - 3F
{c: '0', tclass: 'normal'},
{c: '1', tclass: 'normal'},
{c: '2', tclass: 'normal'},
{c: '3', tclass: 'normal'},
{c: '4', tclass: 'normal'},
{c: '5', tclass: 'normal'},
{c: '6', tclass: 'normal'},
{c: '7', tclass: 'normal'},
{c: '8', tclass: 'normal'},
{c: '9', tclass: 'normal'},
{c: ':', tclass: 'normal'},
{c: ';', tclass: 'normal'},
{c: '¡', tclass: 'normal'},
{c: '=', a:0, d:-.1, tclass: 'normal'},
{c: '¿', tclass: 'normal'},
{c: '?', lig: {'96': 62}, tclass: 'normal'},
// 40 - 4F
{c: '@', tclass: 'normal'},
{c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'B', tclass: 'normal'},
{c: 'C', tclass: 'normal'},
{c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
{c: 'E', tclass: 'normal'},
{c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'G', tclass: 'normal'},
{c: 'H', tclass: 'normal'},
{c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
{c: 'J', tclass: 'normal'},
{c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'M', tclass: 'normal'},
{c: 'N', tclass: 'normal'},
{c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
// 50 - 5F
{c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
{c: 'Q', d: 1, tclass: 'normal'},
{c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
{c: 'S', tclass: 'normal'},
{c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
{c: 'U', tclass: 'normal'},
{c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
{c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
{c: 'Z', tclass: 'normal'},
{c: '[', d:.1, tclass: 'normal'},
{c: '“', tclass: 'normal'},
{c: ']', d:.1, tclass: 'normal'},
{c: 'ˆ', tclass: 'accent'},
{c: '˙', tclass: 'accent'},
// 60 - 6F
{c: '‘', lig: {'96': 92}, tclass: 'normal'},
{c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
{c: 'd', tclass: 'normal'},
{c: 'e', a:0, tclass: 'normal'},
{c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
{c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
{c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'i', tclass: 'normal'},
{c: 'j', d:.2, tclass: 'normal'},
{c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'l', tclass: 'normal'},
{c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'q', a:0, d:.2, tclass: 'normal'},
{c: 'r', a:0, tclass: 'normal'},
{c: 's', a:0, tclass: 'normal'},
{c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
{c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
{c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
{c: 'x', a:0, tclass: 'normal'},
{c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
{c: 'z', a:0, tclass: 'normal'},
{c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
{c: '—', a:.1, ic: 0.0278, tclass: 'normal'},
{c: '˝', tclass: 'accent'},
{c: '˜', tclass: 'accent'},
{c: '¨', tclass: 'accent'}
],
cmmi10: [
// 00 - 0F
{c: 'Γ', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'igreek'},
{c: 'Δ', krn: {'127': 0.167}, tclass: 'igreek'},
{c: 'Θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Λ', krn: {'127': 0.167}, tclass: 'igreek'},
{c: 'Ξ', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Π', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
{c: 'Σ', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Υ', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'igreek'},
{c: 'Φ', krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'Ψ', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
{c: 'Ω', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
{c: 'α', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'β', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'γ', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
{c: 'δ', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
{c: 'ε', a:0, krn: {'127': 0.0556}, tclass: 'symbol'},
// 10 - 1F
{c: 'ζ', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'η', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
{c: 'θ', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'ι', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
{c: 'κ', a:0, tclass: 'greek'},
{c: 'λ', tclass: 'greek'},
{c: 'μ', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'ν', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
{c: 'ξ', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
{c: 'π', a:0, ic: 0.0359, tclass: 'greek'},
{c: 'ρ', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'σ', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
{c: 'τ', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
{c: 'υ', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
{c: 'φ', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'χ', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
// 20 - 2F
{c: 'ψ', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
{c: 'ω', a:0, ic: 0.0359, tclass: 'greek'},
{c: 'ε', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
{c: 'ϑ', krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'ϖ', a:0, ic: 0.0278, tclass: 'normal'},
{c: 'ϱ', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'ς', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'ϕ', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
{c: '↼', a:0, d:-.2, tclass: 'harpoon'},
{c: '↽', a:0, d:-.1, tclass: 'harpoon'},
{c: '⇀', a:0, d:-.2, tclass: 'harpoon'},
{c: '⇁', a:0, d:-.1, tclass: 'harpoon'},
{c: '<span style="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">˓</span>', a:.1, tclass: 'symbol'},
{c: '<span style="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">˒</span>', a:.1, tclass: 'symbol'},
{c: '<span style="font-size:50%">▷</span>', tclass: 'symbol'},
{c: '<span style="font-size:50%">◁</span>', tclass: 'symbol'},
// 30 - 3F
{c: '0', tclass: 'normal'},
{c: '1', tclass: 'normal'},
{c: '2', tclass: 'normal'},
{c: '3', tclass: 'normal'},
{c: '4', tclass: 'normal'},
{c: '5', tclass: 'normal'},
{c: '6', tclass: 'normal'},
{c: '7', tclass: 'normal'},
{c: '8', tclass: 'normal'},
{c: '9', tclass: 'normal'},
{c: '.', a:-.3, tclass: 'normal'},
{c: ',', a:-.3, d:.2, tclass: 'normal'},
{c: '<', a:.1, tclass: 'normal'},
{c: '/', krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
{c: '>', a:.1, tclass: 'normal'},
{c: '<span style="font-size:50%">★</span>', a:0, tclass: 'symbol'},
// 40 - 4F
{c: '∂', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
{c: 'A', krn: {'127': 0.139}, tclass: 'italic'},
{c: 'B', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'D', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'E', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
{c: 'G', krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 'I', ic: 0.0785, krn: {'127': 0.111}, tclass: 'italic'},
{c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'italic'},
{c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 'L', krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'O', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'italic'},
// 50 - 5F
{c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
{c: 'Q', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'R', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'italic'},
{c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
{c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
{c: '♭', tclass: 'symbol2'},
{c: '♮', tclass: 'symbol2'},
{c: '♯', tclass: 'symbol2'},
{c: '⌣', a:0, d:-.1, tclass: 'normal'},
{c: '⌢', a:0, d:-.1, tclass: 'normal'},
// 60 - 6F
{c: 'ℓ', krn: {'127': 0.111}, tclass: 'symbol'},
{c: 'a', a:0, tclass: 'italic'},
{c: 'b', tclass: 'italic'},
{c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'italic'},
{c: 'e', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'italic'},
{c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'h', krn: {'127': -0.0278}, tclass: 'italic'},
{c: 'i', tclass: 'italic'},
{c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'italic'},
{c: 'k', ic: 0.0315, tclass: 'italic'},
{c: 'l', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'm', a:0, tclass: 'italic'},
{c: 'n', a:0, tclass: 'italic'},
{c: 'o', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
{c: 's', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 't', krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'u', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'italic'},
{c: 'x', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
{c: 'ı', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
{c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
{c: '℘', a:0, d:.2, krn: {'127': 0.111}, tclass: 'normal'},
{c: '<span style="position:relative; left: .4em; top: -.8em; font-size: 50%">→</span>', ic: 0.154, tclass: 'symbol'},
{c: '̑', ic: 0.399, tclass: 'normal'}
],
cmsy10: [
// 00 - 0F
{c: '−', a:.1, tclass: 'symbol'},
{c: '·', a:0, d:-.2, tclass: 'symbol'},
{c: '×', a:0, tclass: 'symbol'},
{c: '<span style="position:relative; top:.2em">*</span>', a:0, tclass: 'symbol'},
{c: '÷', a:0, tclass: 'symbol'},
{c: '◊', tclass: 'symbol'},
{c: '±', a:.1, tclass: 'symbol'},
{c: '∓', tclass: 'symbol'},
{c: '⊕', tclass: 'symbol'},
{c: '⊖', tclass: 'symbol'},
{c: '⊗', tclass: 'symbol'},
{c: '⊘', tclass: 'symbol'},
{c: '⊙', tclass: 'symbol'},
{c: '◯', tclass: 'symbol'},
{c: '<span style="position:relative; top:.25em;">°</span>', a:0, d:-.1, tclass: 'symbol'},
{c: '•', a:0, d:-.2, tclass: 'symbol'},
// 10 - 1F
{c: '≍', a:.1, tclass: 'symbol'},
{c: '≡', a:.1, tclass: 'symbol'},
{c: '⊆', tclass: 'symbol'},
{c: '⊇', tclass: 'symbol'},
{c: '≤', tclass: 'symbol'},
{c: '≥', tclass: 'symbol'},
{c: '≼', tclass: 'symbol'},
{c: '≽', tclass: 'symbol'},
{c: '~', a:0, d: -.2, tclass: 'normal'},
{c: '≈', a:.1, d:-.1, tclass: 'symbol'},
{c: '⊂', tclass: 'symbol'},
{c: '⊃', tclass: 'symbol'},
{c: '≪', tclass: 'symbol'},
{c: '≫', tclass: 'symbol'},
{c: '≺', tclass: 'symbol'},
{c: '≻', tclass: 'symbol'},
// 20 - 2F
{c: '←', a:0, d:-.15, tclass: 'arrows'},
{c: '→', a:0, d:-.15, tclass: 'arrows'},
{c: '↑', h:1, tclass: 'arrows'},
{c: '↓', h:1, tclass: 'arrows'},
{c: '↔', a:0, tclass: 'arrows'},
{c: '↗', h:1, tclass: 'arrows'},
{c: '↘', h:1, tclass: 'arrows'},
{c: '≃', a: .1, tclass: 'symbol'},
{c: '⇐', a:.1, tclass: 'arrows'},
{c: '⇒', a:.1, tclass: 'arrows'},
{c: '⇑', h:.9, d:.1, tclass: 'arrows'},
{c: '⇓', h:.9, d:.1, tclass: 'arrows'},
{c: '⇔', a:.1, tclass: 'arrows'},
{c: '↖', h:1, tclass: 'arrows'},
{c: '↙', h:1, tclass: 'arrows'},
{c: '∝', a:.1, tclass: 'symbol'},
// 30 - 3F
{c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">′</span>', a: 0, tclass: 'symbol'},
{c: '∞', a:.1, tclass: 'symbol'},
{c: '∈', tclass: 'symbol'},
{c: '∋', tclass: 'symbol'},
{c: '△', tclass: 'symbol'},
{c: '▽', tclass: 'symbol'},
{c: '/', tclass: 'symbol'},
{c: '<span style="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</span>', a:0, tclass: 'normal'},
{c: '∀', tclass: 'symbol'},
{c: '∃', tclass: 'symbol'},
{c: '¬', a:0, d:-.1, tclass: 'symbol1'},
{c: '∅', tclass: 'symbol'},
{c: 'ℜ', tclass: 'symbol'},
{c: 'ℑ', tclass: 'symbol'},
{c: '⊤', tclass: 'symbol'},
{c: '⊥', tclass: 'symbol'},
// 40 - 4F
{c: 'ℵ', tclass: 'symbol'},
{c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
{c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
{c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
{c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
{c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
{c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
// 50 - 5F
{c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
{c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
{c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
{c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
{c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
{c: '⋃', tclass: 'symbol'},
{c: '⋂', tclass: 'symbol'},
{c: '⊎', tclass: 'symbol'},
{c: '⋀', tclass: 'symbol'},
{c: '⋁', tclass: 'symbol'},
// 60 - 6F
{c: '⊢', tclass: 'symbol'},
{c: '⊣', tclass: 'symbol2'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '', a:.3, d:.2, tclass: 'normal'},
{c: '{', d:.2, tclass: 'normal'},
{c: '}', d:.2, tclass: 'normal'},
{c: '〈', a:.3, d:.2, tclass: 'normal'},
{c: '〉', a:.3, d:.2, tclass: 'normal'},
{c: '|', d:.1, tclass: 'vertical'},
{c: '||', d:0, tclass: 'vertical'},
{c: '↕', h:1, d:.15, tclass: 'arrows'},
{c: '⇕', a:.2, d:.1, tclass: 'arrows'},
{c: '∖', a:.3, d:.1, tclass: 'normal'},
{c: '≀', tclass: 'symbol'},
// 70 - 7F
{c: '<span style="position:relative; top: .8em">√</span>', h:.04, d:.9, tclass: 'normal'},
{c: '∐', a:.4, tclass: 'symbol'},
{c: '∇', tclass: 'symbol'},
{c: '∫', h:1, d:.1, ic: 0.111, tclass: 'root'},
{c: '⊔', tclass: 'symbol'},
{c: '⊓', tclass: 'symbol'},
{c: '⊑', tclass: 'symbol'},
{c: '⊒', tclass: 'symbol'},
{c: '§', d:.1, tclass: 'normal'},
{c: '†', d:.1, tclass: 'normal'},
{c: '‡', d:.1, tclass: 'normal'},
{c: '¶', a:.3, d:.1, tclass: 'normal'},
{c: '♣', tclass: 'symbol'},
{c: '♦', tclass: 'symbol'},
{c: '♥', tclass: 'symbol'},
{c: '♠', tclass: 'symbol'}
],
cmex10: [
// 00 - 0F
{c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
{c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
{c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
{c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
{c: '', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
{c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
{c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
{c: '〈', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
{c: '〉', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
{c: '|', h:.7, d:0, delim: {rep: 12}, tclass: 'vertical'},
{c: '||', h:.7, d:0, delim: {rep: 13}, tclass: 'vertical'},
{c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
{c: '∖', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
// 10 - 1F
{c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
{c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
{c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
{c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
{c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
{c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
{c: '', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
{c: '{', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
{c: '}', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
{c: '〈', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
{c: '〉', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
{c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
{c: '∖', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
// 20 - 2F
{c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
{c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
{c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
{c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
{c: '', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
{c: '{', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
{c: '}', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
{c: '〈', h: 0.04, d: 2.96, tclass: 'delim4c'},
{c: '〉', h: 0.04, d: 2.96, tclass: 'delim4c'},
{c: '/', h: 0.04, d: 2.96, tclass: 'delim4b'},
{c: '∖', h: 0.04, d: 2.96, tclass: 'delim4b'},
{c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
{c: '∖', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
// 30 - 3F
{c: '', h: .8, d: .15, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {bot: 52, rep: 54}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {bot: 53, rep: 55}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 50, rep: 54}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 51, rep: 55}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {rep: 63}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {rep: 119}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {rep: 62}, tclass: 'delim'},
{c: '|', h: .65, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical'},
// 40 - 4F
{c: '', h: .8, d: .15, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {rep: 66}, tclass: 'delim'},
{c: '', h: .8, d: .15, delim: {rep: 67}, tclass: 'delim'},
{c: '〈', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
{c: '〉', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
{c: '⊔', h: 0, d: 1, n: 71, tclass: 'bigop1'},
{c: '⊔', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '∮', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
{c: '∮', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
{c: '⊙', h: 0, d: 1, n: 75, tclass: 'bigop1'},
{c: '⊙', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⊕', h: 0, d: 1, n: 77, tclass: 'bigop1'},
{c: '⊕', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '⊗', h: 0, d: 1, n: 79, tclass: 'bigop1'},
{c: '⊗', h: 0.1, d: 1.5, tclass: 'bigop2'},
// 50 - 5F
{c: '∑', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
{c: '∏', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
{c: '∫', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
{c: '∪', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
{c: '∩', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
{c: '⊎', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
{c: '∧', h: 0, d: 1, n: 94, tclass: 'bigop1'},
{c: '∨', h: 0, d: 1, n: 95, tclass: 'bigop1'},
{c: '∑', h: 0.1, d: 1.6, tclass: 'bigop2a'},
{c: '∏', h: 0.1, d: 1.5, tclass: 'bigop2a'},
{c: '∫', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
{c: '∪', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '∩', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '⊎', h: 0.1, d: 1.5, tclass: 'bigop2b'},
{c: '∧', h: 0.1, d: 1.5, tclass: 'bigop2'},
{c: '∨', h: 0.1, d: 1.5, tclass: 'bigop2'},
// 60 - 6F
{c: '∐', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
{c: '∐', h: 0.1, d: 1.5, tclass: 'bigop2a'},
{c: '︿', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
{c: '︿', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
{c: '︿', h: 0.99, w: 1.65, tclass: 'wide3'},
{c: '⁓', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
{c: '⁓', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
{c: '⁓', h: 0.99, w: 2, tclass: 'wide3a'},
{c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
{c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
{c: '', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
{c: '{', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
{c: '}', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
// 70 - 7F
{c: '<span style="font-size: 125%; position:relative; top:.95em">√</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
{c: '<span style="font-size: 190%; position:relative; top:.925em">√</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
{c: '<span style="font-size: 250%; position:relative; top:.925em">√</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
{c: '<span style="font-size: 320%; position:relative; top:.92em">√</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
{c: '<span style="font-size: 400%; position:relative; top:.92em">√</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
{c: '<span style="font-size: 500%; position:relative; top:.9em">√</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
{c: '<span style="font-size: 625%; position:relative; top:.9em">√</span>', h: .14, d: 5.7, tclass: 'root'},
{c: '<span style="margin:.001em">||</span>', h:.65, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical'},
{c: '▵', h:.45, delim: {top: 120, rep: 63}, tclass: 'arrow1'},
{c: '▿', h:.45, delim: {bot: 121, rep: 63}, tclass: 'arrow1'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╭</span>', h:.1, tclass: 'symbol'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╮</span>', h:.1, tclass: 'symbol'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">╰</span>', h:.1, tclass: 'symbol'},
{c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">╯</span>', h:.1, tclass: 'symbol'},
{c: '▵', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2'},
{c: '▿', h:.5, delim: {bot: 127, rep: 119}, tclass: 'arrow2'}
],
cmti10: [
// 00 - 0F
{c: 'Γ', ic: 0.133, tclass: 'igreek'},
{c: 'Δ', tclass: 'igreek'},
{c: 'Θ', ic: 0.094, tclass: 'igreek'},
{c: 'Λ', tclass: 'igreek'},
{c: 'Ξ', ic: 0.153, tclass: 'igreek'},
{c: 'Π', ic: 0.164, tclass: 'igreek'},
{c: 'Σ', ic: 0.12, tclass: 'igreek'},
{c: 'Υ', ic: 0.111, tclass: 'igreek'},
{c: 'Φ', ic: 0.0599, tclass: 'igreek'},
{c: 'Ψ', ic: 0.111, tclass: 'igreek'},
{c: 'Ω', ic: 0.103, tclass: 'igreek'},
{c: 'ff', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'italic'},
{c: 'fi', ic: 0.103, tclass: 'italic'},
{c: 'fl', ic: 0.103, tclass: 'italic'},
{c: 'ffi', ic: 0.103, tclass: 'italic'},
{c: 'ffl', ic: 0.103, tclass: 'italic'},
// 10 - 1F
{c: 'ı', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'j', d:.2, ic: 0.0374, tclass: 'italic'},
{c: '`', tclass: 'iaccent'},
{c: '´', ic: 0.0969, tclass: 'iaccent'},
{c: 'ˇ', ic: 0.083, tclass: 'iaccent'},
{c: '˘', ic: 0.108, tclass: 'iaccent'},
{c: 'ˉ', ic: 0.103, tclass: 'iaccent'},
{c: '˚', tclass: 'iaccent'},
{c: '?', d: 0.17, w: 0.46, tclass: 'italic'},
{c: 'ß', ic: 0.105, tclass: 'italic'},
{c: 'æ', a:0, ic: 0.0751, tclass: 'italic'},
{c: 'œ', a:0, ic: 0.0751, tclass: 'italic'},
{c: 'ø', ic: 0.0919, tclass: 'italic'},
{c: 'Æ', ic: 0.12, tclass: 'italic'},
{c: 'Œ', ic: 0.12, tclass: 'italic'},
{c: 'Ø', ic: 0.094, tclass: 'italic'},
// 20 - 2F
{c: '?', krn: {'108': -0.256, '76': -0.321}, tclass: 'italic'},
{c: '!', ic: 0.124, lig: {'96': 60}, tclass: 'italic'},
{c: '”', ic: 0.0696, tclass: 'italic'},
{c: '#', ic: 0.0662, tclass: 'italic'},
{c: '$', tclass: 'italic'},
{c: '%', ic: 0.136, tclass: 'italic'},
{c: '&', ic: 0.0969, tclass: 'italic'},
{c: '’', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'italic'},
{c: '(', d:.2, ic: 0.162, tclass: 'italic'},
{c: ')', d:.2, ic: 0.0369, tclass: 'italic'},
{c: '*', ic: 0.149, tclass: 'italic'},
{c: '+', a:.1, ic: 0.0369, tclass: 'italic'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'italic'},
{c: '-', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'italic'},
{c: '.', a:-.25, tclass: 'italic'},
{c: '/', ic: 0.162, tclass: 'italic'},
// 30 - 3F
{c: '0', ic: 0.136, tclass: 'italic'},
{c: '1', ic: 0.136, tclass: 'italic'},
{c: '2', ic: 0.136, tclass: 'italic'},
{c: '3', ic: 0.136, tclass: 'italic'},
{c: '4', ic: 0.136, tclass: 'italic'},
{c: '5', ic: 0.136, tclass: 'italic'},
{c: '6', ic: 0.136, tclass: 'italic'},
{c: '7', ic: 0.136, tclass: 'italic'},
{c: '8', ic: 0.136, tclass: 'italic'},
{c: '9', ic: 0.136, tclass: 'italic'},
{c: ':', ic: 0.0582, tclass: 'italic'},
{c: ';', ic: 0.0582, tclass: 'italic'},
{c: '¡', ic: 0.0756, tclass: 'italic'},
{c: '=', a:0, d:-.1, ic: 0.0662, tclass: 'italic'},
{c: '¿', tclass: 'italic'},
{c: '?', ic: 0.122, lig: {'96': 62}, tclass: 'italic'},
// 40 - 4F
{c: '@', ic: 0.096, tclass: 'italic'},
{c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'B', ic: 0.103, tclass: 'italic'},
{c: 'C', ic: 0.145, tclass: 'italic'},
{c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
{c: 'E', ic: 0.12, tclass: 'italic'},
{c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'G', ic: 0.0872, tclass: 'italic'},
{c: 'H', ic: 0.164, tclass: 'italic'},
{c: 'I', ic: 0.158, tclass: 'italic'},
{c: 'J', ic: 0.14, tclass: 'italic'},
{c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'M', ic: 0.164, tclass: 'italic'},
{c: 'N', ic: 0.164, tclass: 'italic'},
{c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
// 50 - 5F
{c: 'P', ic: 0.103, krn: {'65': -0.0767}, tclass: 'italic'},
{c: 'Q', d: 1, ic: 0.094, tclass: 'italic'},
{c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'S', ic: 0.12, tclass: 'italic'},
{c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
{c: 'U', ic: 0.164, tclass: 'italic'},
{c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'W', ic: 0.184, krn: {'65': -0.0767}, tclass: 'italic'},
{c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
{c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
{c: 'Z', ic: 0.145, tclass: 'italic'},
{c: '[', d:.1, ic: 0.188, tclass: 'italic'},
{c: '“', ic: 0.169, tclass: 'italic'},
{c: ']', d:.1, ic: 0.105, tclass: 'italic'},
{c: 'ˆ', ic: 0.0665, tclass: 'iaccent'},
{c: '˙', ic: 0.118, tclass: 'iaccent'},
// 60 - 6F
{c: '‘', ic: 0.124, lig: {'96': 92}, tclass: 'italic'},
{c: 'a', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'd', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'italic'},
{c: 'g', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'h', ic: 0.0767, tclass: 'italic'},
{c: 'i', ic: 0.102, tclass: 'italic'},
{c: 'j', d:.2, ic: 0.145, tclass: 'italic'},
{c: 'k', ic: 0.108, tclass: 'italic'},
{c: 'l', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'm', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'italic'},
{c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
// 70 - 7F
{c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 'q', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
{c: 's', a:0, ic: 0.0821, tclass: 'italic'},
{c: 't', ic: 0.0949, tclass: 'italic'},
{c: 'u', a:0, ic: 0.0767, tclass: 'italic'},
{c: 'v', a:0, ic: 0.108, tclass: 'italic'},
{c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'italic'},
{c: 'x', a:0, ic: 0.12, tclass: 'italic'},
{c: 'y', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
{c: 'z', a:0, ic: 0.123, tclass: 'italic'},
{c: '–', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'italic'},
{c: '—', a:.1, ic: 0.0921, tclass: 'italic'},
{c: '˝', ic: 0.122, tclass: 'iaccent'},
{c: '˜', ic: 0.116, tclass: 'iaccent'},
{c: '¨', tclass: 'iaccent'}
],
cmbx10: [
// 00 - 0F
{c: 'Γ', tclass: 'bgreek'},
{c: 'Δ', tclass: 'bgreek'},
{c: 'Θ', tclass: 'bgreek'},
{c: 'Λ', tclass: 'bgreek'},
{c: 'Ξ', tclass: 'bgreek'},
{c: 'Π', tclass: 'bgreek'},
{c: 'Σ', tclass: 'bgreek'},
{c: 'Υ', tclass: 'bgreek'},
{c: 'Φ', tclass: 'bgreek'},
{c: 'Ψ', tclass: 'bgreek'},
{c: 'Ω', tclass: 'bgreek'},
{c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'bold'},
{c: 'fi', tclass: 'bold'},
{c: 'fl', tclass: 'bold'},
{c: 'ffi', tclass: 'bold'},
{c: 'ffl', tclass: 'bold'},
// 10 - 1F
{c: 'ı', a:0, tclass: 'bold'},
{c: 'j', d:.2, tclass: 'bold'},
{c: '`', tclass: 'baccent'},
{c: '´', tclass: 'baccent'},
{c: 'ˇ', tclass: 'baccent'},
{c: '˘', tclass: 'baccent'},
{c: 'ˉ', tclass: 'baccent'},
{c: '˚', tclass: 'baccent'},
{c: '?', tclass: 'bold'},
{c: 'ß', tclass: 'bold'},
{c: 'æ', a:0, tclass: 'bold'},
{c: 'œ', a:0, tclass: 'bold'},
{c: 'ø', tclass: 'bold'},
{c: 'Æ', tclass: 'bold'},
{c: 'Œ', tclass: 'bold'},
{c: 'Ø', tclass: 'bold'},
// 20 - 2F
{c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'bold'},
{c: '!', lig: {'96': 60}, tclass: 'bold'},
{c: '”', tclass: 'bold'},
{c: '#', tclass: 'bold'},
{c: '$', tclass: 'bold'},
{c: '%', tclass: 'bold'},
{c: '&', tclass: 'bold'},
{c: '’', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'bold'},
{c: '(', d:.2, tclass: 'bold'},
{c: ')', d:.2, tclass: 'bold'},
{c: '*', tclass: 'bold'},
{c: '+', a:.1, tclass: 'bold'},
{c: ',', a:-.3, d:.2, w: 0.278, tclass: 'bold'},
{c: '-', a:0, lig: {'45': 123}, tclass: 'bold'},
{c: '.', a:-.25, tclass: 'bold'},
{c: '/', tclass: 'bold'},
// 30 - 3F
{c: '0', tclass: 'bold'},
{c: '1', tclass: 'bold'},
{c: '2', tclass: 'bold'},
{c: '3', tclass: 'bold'},
{c: '4', tclass: 'bold'},
{c: '5', tclass: 'bold'},
{c: '6', tclass: 'bold'},
{c: '7', tclass: 'bold'},
{c: '8', tclass: 'bold'},
{c: '9', tclass: 'bold'},
{c: ':', tclass: 'bold'},
{c: ';', tclass: 'bold'},
{c: '¡', tclass: 'bold'},
{c: '=', a:0, d:-.1, tclass: 'bold'},
{c: '¿', tclass: 'bold'},
{c: '?', lig: {'96': 62}, tclass: 'bold'},
// 40 - 4F
{c: '@', tclass: 'bold'},
{c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'B', tclass: 'bold'},
{c: 'C', tclass: 'bold'},
{c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
{c: 'E', tclass: 'bold'},
{c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'G', tclass: 'bold'},
{c: 'H', tclass: 'bold'},
{c: 'I', krn: {'73': 0.0278}, tclass: 'bold'},
{c: 'J', tclass: 'bold'},
{c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'M', tclass: 'bold'},
{c: 'N', tclass: 'bold'},
{c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
// 50 - 5F
{c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
{c: 'Q', d: 1, tclass: 'bold'},
{c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
{c: 'S', tclass: 'bold'},
{c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
{c: 'U', tclass: 'bold'},
{c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
{c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
{c: 'Z', tclass: 'bold'},
{c: '[', d:.1, tclass: 'bold'},
{c: '“', tclass: 'bold'},
{c: ']', d:.1, tclass: 'bold'},
{c: 'ˆ', tclass: 'baccent'},
{c: '˙', tclass: 'baccent'},
// 60 - 6F
{c: '‘', lig: {'96': 92}, tclass: 'bold'},
{c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'bold'},
{c: 'd', tclass: 'bold'},
{c: 'e', a:0, tclass: 'bold'},
{c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'bold'},
{c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'bold'},
{c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'i', tclass: 'bold'},
{c: 'j', d:.2, tclass: 'bold'},
{c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'l', tclass: 'bold'},
{c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
// 70 - 7F
{c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'q', a:0, d:.2, tclass: 'bold'},
{c: 'r', a:0, tclass: 'bold'},
{c: 's', a:0, tclass: 'bold'},
{c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'bold'},
{c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'bold'},
{c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
{c: 'x', a:0, tclass: 'bold'},
{c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
{c: 'z', a:0, tclass: 'bold'},
{c: '–', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'bold'},
{c: '—', a:.1, ic: 0.0278, tclass: 'bold'},
{c: '˝', tclass: 'baccent'},
{c: '˜', tclass: 'baccent'},
{c: '¨', tclass: 'baccent'}
]
});
jsMath.Setup.Styles({
'.typeset .math': 'font-style: normal',
'.typeset .italic': 'font-style: italic',
'.typeset .bold': 'font-weight: bold',
'.typeset .cmr10': 'font-family: serif',
'.typeset .cal': 'font-family: cursive',
'.typeset .arrows': '',
'.typeset .arrow1': '',
'.typeset .arrow2': '',
'.typeset .harpoon': 'font-size: 125%',
'.typeset .symbol': '',
'.typeset .symbol2': '',
'.typeset .delim1': 'font-size: 133%; position:relative; top:.75em',
'.typeset .delim1b': 'font-size: 133%; position:relative; top:.8em; margin: -.1em',
'.typeset .delim1c': 'font-size: 120%; position:relative; top:.8em;',
'.typeset .delim2': 'font-size: 180%; position:relative; top:.75em',
'.typeset .delim2b': 'font-size: 190%; position:relative; top:.8em; margin: -.1em',
'.typeset .delim2c': 'font-size: 167%; position:relative; top:.8em;',
'.typeset .delim3': 'font-size: 250%; position:relative; top:.725em',
'.typeset .delim3b': 'font-size: 250%; position:relative; top:.8em; margin: -.1em',
'.typeset .delim3c': 'font-size: 240%; position:relative; top:.775em;',
'.typeset .delim4': 'font-size: 325%; position:relative; top:.7em',
'.typeset .delim4b': 'font-size: 325%; position:relative; top:.8em; margin: -.1em',
'.typeset .delim4c': 'font-size: 300%; position:relative; top:.8em;',
'.typeset .delim': '',
'.typeset .vertical': '',
'.typeset .greek': '',
'.typeset .igreek': 'font-style: italic',
'.typeset .bgreek': 'font-weight: bold',
'.typeset .bigop1': 'font-size: 133%; position: relative; top: .85em; margin:-.05em',
'.typeset .bigop1a': 'font-size: 100%; position: relative; top: .775em;',
'.typeset .bigop1b': 'font-size: 160%; position: relative; top: .7em; margin:-.1em',
'.typeset .bigop1c': 'font-size: 125%; position: relative; top: .75em; margin:-.1em;',
'.typeset .bigop2': 'font-size: 200%; position: relative; top: .8em; margin:-.07em',
'.typeset .bigop2a': 'font-size: 175%; position: relative; top: .7em;',
'.typeset .bigop2b': 'font-size: 270%; position: relative; top: .62em; margin:-.1em',
'.typeset .bigop2c': 'font-size: 250%; position: relative; top: .7em; margin:-.17em;',
'.typeset .wide1': 'font-size: 67%; position: relative; top:-.8em',
'.typeset .wide2': 'font-size: 110%; position: relative; top:-.5em',
'.typeset .wide3': 'font-size: 175%; position: relative; top:-.32em',
'.typeset .wide1a': 'font-size: 75%; position: relative; top:-.5em',
'.typeset .wide2a': 'font-size: 133%; position: relative; top: -.15em',
'.typeset .wide3a': 'font-size: 200%; position: relative; top: -.05em',
'.typeset .root': '',
'.typeset .accent': 'position: relative; top: .02em',
'.typeset .iaccent': 'position: relative; top: .02em; font-style: italic',
'.typeset .baccent': 'position: relative; top: .02em; font-weight: bold'
});
jsMath.Setup.Styles();
/*
* No access to TeX "not" character, so fake this
*/
jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
jsMath.Macro('joinrel','\\mathrel{\\kern-2mu}');
jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
jsMath.Box.defaultH = 0.8;
jsMath.Script.End();
Index: loncom/html/adm/jsMath/uncompressed/jsMath.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath.js
/*****************************************************************************
*
* jsMath: Mathematics on the Web
*
* This jsMath package makes it possible to display mathematics in HTML pages
* that are viewable by a wide range of browsers on both the Mac and the IBM PC,
* including browsers that don't process MathML. See
*
* http://www.math.union.edu/locate/jsMath
*
* for the latest version, and for documentation on how to use jsMath.
*
* Copyright 2004-2006 by Davide P. Cervone
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*****************************************************************************/
/*
* Prevent running everything again if this file is loaded twice
*/
if (!window.jsMath || !window.jsMath.loaded) {
// handle bug in MSIE/Mac in autoload
if (window.parent && window.parent.jsMath) {jsMath = window.parent.jsMath}
var jsMath_old = window.jsMath; // save user customizations
//
// debugging routine
//
/*
* function ShowObject (obj,spaces) {
* var s = ''; if (!spaces) {spaces = ""}
* for (var i in obj) {
* if (obj[i] != null) {
* if (typeof(obj[i]) == "object") {
* s += spaces + i + ": {\n"
* + ShowObject(obj[i],spaces + ' ')
* + spaces + "}\n";
* } else if (typeof(obj[i]) != "function") {
* s += spaces + i + ': ' + obj[i] + "\n";
* }
* }
* }
* return s;
* }
*/
/***************************************************************************/
//
// Check for DOM support
//
if (!document.getElementById || !document.childNodes || !document.createElement) {
alert('The mathematics on this page requires W3C DOM support in its JavaScript. '
+ 'Unfortunately, your browser doesn\'t seem to have this.');
} else {
/***************************************************************************/
jsMath = {
version: "3.2", // change this if you edit the file
document: document, // the document loading jsMath
window: window, // the window of the of loading document
// Font sizes for \tiny, \small, etc. (must match styles below)
sizes: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249],
//
// The styles needed for the TeX fonts
//
styles: {
'.math': 'font-family: serif; font-style: normal; font-weight: normal',
'.typeset': 'font-family: serif; font-style: normal; font-weight: normal',
'div.typeset': 'text-align: center; margin: 1em 0px;',
'span.typeset': 'text-align: left',
'.typeset span': 'text-align: left; border:0px; margin:0px; padding:0px',
'.typeset .normal': 'font-family: serif; font-style: normal; font-weight: normal',
'.typeset .size0': 'font-size: 50%', // tiny (\scriptscriptsize)
'.typeset .size1': 'font-size: 60%', // (50% of \large for consistency)
'.typeset .size2': 'font-size: 70%', // scriptsize
'.typeset .size3': 'font-size: 85%', // small (70% of \large for consistency)
'.typeset .size4': 'font-size: 100%', // normalsize
'.typeset .size5': 'font-size: 120%', // large
'.typeset .size6': 'font-size: 144%', // Large
'.typeset .size7': 'font-size: 173%', // LARGE
'.typeset .size8': 'font-size: 207%', // huge
'.typeset .size9': 'font-size: 249%', // Huge
'.typeset .cmr10': 'font-family: jsMath-cmr10, serif',
'.typeset .cmbx10': 'font-family: jsMath-cmbx10, jsMath-cmr10',
'.typeset .cmti10': 'font-family: jsMath-cmti10, jsMath-cmr10',
'.typeset .cmmi10': 'font-family: jsMath-cmmi10',
'.typeset .cmsy10': 'font-family: jsMath-cmsy10',
'.typeset .cmex10': 'font-family: jsMath-cmex10',
'.typeset .textit': 'font-family: serif; font-style:italic',
'.typeset .textbf': 'font-family: serif; font-weight:bold',
'.typeset .link': 'text-decoration: none',
'.typeset .error': 'font-size: 10pt; font-style: italic; '
+ 'background-color: #FFFFCC; padding: 1px; '
+ 'border: 1px solid #CC0000',
'.typeset .blank': 'display:inline-block; overflow:hidden; border:0px none; width:0px; height:0px;',
'.typeset .spacer': 'display:inline-block',
'#jsMath_message': 'position:fixed; bottom:1px; left:2px; background-color:#E6E6E6; '
+ 'border: solid 1px #959595; margin:0px; padding: 1px 8px; '
+ 'z-index:102; color: black; font-size:small; width:auto;',
'#jsMath_panel': 'position:fixed; bottom:1.5em; right:1.5em; padding: 10px 20px; '
+ 'background-color:#DDDDDD; border: outset 2px; '
+ 'z-index:103; width:auto;',
'#jsMath_button': 'position:fixed; bottom:1px; right:2px; background-color:white; '
+ 'border: solid 1px #959595; margin:0px; padding: 0px 3px 1px 3px; '
+ 'z-index:102; color:black; text-decoration:none; font-size:x-small; '
+ 'width:auto; cursor:pointer; cursor:hand;',
'#jsMath_float': 'position:absolute; top:0px; left:0px; max-width:80%; '
+ 'z-index:101; width:auto; height:auto;',
'#jsMath_float .drag': 'background-color:#DDDDDD; border: outset 1px; height:12px; font-size: 1px;',
'#jsMath_float .close': 'background-color:#E6E6E6; border: inset 1px; width:8px; height:8px; margin: 1px 2px;',
'#jsMath_float .source': 'background-color:#E2E2E2; border: outset 1px; '
+ 'width:auto; height:auto; padding: 8px 15px; '
+ 'font-family: courier, fixed; font-size: 90%',
'#jsMath_noFont': 'text-align: center; padding: 10px 20px; border: 3px solid #DD0000; '
+ 'background-color: #FFF8F8; color: #AA0000; font-size:small; width:auto;',
'#jsMath_noFont .link': 'padding: 0px 5px 2px 5px; border: 2px outset; background-color:#E8E8E8; '
+ 'color:black; font-size:80%; width:auto; cursor:pointer; cursor:hand;',
'@media print': '#jsMath_button {display:none}'
},
/***************************************************************************/
/*
* Get a jsMath DOM element
*/
Element: function (name) {return jsMath.document.getElementById('jsMath_'+name)},
/*
* Get the width and height (in pixels) of an HTML string
*/
BBoxFor: function (s) {
this.hidden.innerHTML =
'<nobr><span class="typeset"><span class="scale">'+s+'</span></span></nobr>';
var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight};
this.hidden.innerHTML = '';
return bbox;
},
/*
* Get the width and height (in ems) of an HTML string
*/
EmBoxFor: function (s) {
var bbox = this.BBoxFor(s);
return {w: bbox.w/this.em, h: bbox.h/this.em};
},
/*
* For browsers that don't handle sizes of italics properly (MSIE)
*/
EmBoxForItalics: function (s) {
var bbox = this.BBoxFor(s);
if (s.match(/<i>|class=\"(icm|italic|igreek|iaccent)/i)) {
bbox.w = this.BBoxFor(s+jsMath.Browser.italicString).w
- jsMath.Browser.italicCorrection;
}
return {w: bbox.w/this.em, h: bbox.h/this.em};
},
/*
* Initialize jsMath. This determines the em size, and a variety
* of other parameters used throughout jsMath.
*/
Init: function () {
if (jsMath.Setup.inited != 1) {
if (jsMath.Setup.inited) {
alert("It looks like jsMath failed to set up properly (error code "
+ jsMath.Setup.inited + "). "
+ "I'll will try to keep going, but it could get ugly.");
jsMath.Setup.inited = 1;
} else {
alert("You must call jsMath.Setup.Body() explicitly when jsMath is" +
"loaded as part of the <HEAD> section");
}
jsMath.Setup.Body(); // may fail to load fallback files properly
}
this.em = this.BBoxFor('<span style="'+jsMath.Browser.block+';width:10em;height:1em"></span>').w/10;
if (this.em == 0) {
// handle older browsers
this.em = this.BBoxFor('<img src="'+jsMath.blank+'" style="width:10em;height:1em"/>').w/10;
}
if (jsMath.Browser.italicString)
jsMath.Browser.italicCorrection = jsMath.BBoxFor(jsMath.Browser.italicString).w;
var bb = this.BBoxFor('x'); var h = bb.h;
var d = this.BBoxFor('x'+jsMath.HTML.Rule(1,h/jsMath.em)).h - h;
this.h = (h-d)/this.em; this.d = d/this.em;
this.hd = this.h + this.d;
this.xWidth = bb.w; // used to tell if scale has changed
this.Setup.TeXfonts();
var x_height = this.EmBoxFor('<span class="cmr10">M</span>').w/2;
this.TeX.M_height = x_height*(26/14);
this.TeX.h = this.h; this.TeX.d = this.d; this.TeX.hd = this.hd;
this.Img.Scale();
if (!this.initialized) {
this.Setup.Sizes();
this.Img.UpdateFonts();
}
// factor for \big and its brethren
this.p_height = (this.TeX.cmex10[0].h + this.TeX.cmex10[0].d) / .85;
this.initialized = 1;
},
/*
* Get the xWidth size and if it has changed, reinitialize the sizes
*/
ReInit: function () {
var w = this.BBoxFor('x').w;
if (w != this.xWidth) {this.Init()}
},
/*
* Mark jsMath as loaded and copy any user-provided overrides
*/
Loaded: function () {
if (jsMath_old) {
var override = ['Process', 'ProcessBeforeShowing',
'ConvertTeX','ConvertTeX2','ConvertLaTeX','ConvertCustom',
'CustomSearch', 'Synchronize', 'Macro', 'document'];
for (var i = 0; i < override.length; i++) {
if (jsMath_old[override[i]]) {jsMath_old[override[i]] = null}
}
}
if (jsMath_old) {this.Insert(jsMath,jsMath_old)}
jsMath_old = null;
jsMath.loaded = 1;
},
/*
* Manage JavaScript objects:
*
* Add: add/replace items in an object
* Insert: add items to an object
* Package: add items to an object prototype
*/
Add: function (dst,src) {for (var id in src) {dst[id] = src[id]}},
Insert: function (dst,src) {
for (var id in src) {
if (dst[id] && typeof(src[id]) == 'object'
&& (typeof(dst[id]) == 'object'
|| typeof(dst[id]) == 'function')) {
this.Insert(dst[id],src[id]);
} else {
dst[id] = src[id];
}
}
},
Package: function (obj,def) {this.Insert(obj.prototype,def)}
}
/***************************************************************************/
/*
*
* Implement loading of remote scripts using XMLHttpRequest, if
* possible, otherwise use a hidden IFRAME and fake it. That
* method runs asynchronously, which causes lots of headaches.
* Solve these using Push command, which queues actions
* until files have loaded.
*/
jsMath.Script = {
request: null, // the XMLHttpRequest object
/*
* Create the XMLHttpRequest object, if we can.
* Otherwise, use the iframe-based fallback method.
*/
Init: function () {
if (!(jsMath.Controls.cookie.asynch && jsMath.Controls.cookie.progress)) {
if (window.XMLHttpRequest) {
this.request = new XMLHttpRequest;
} else if (window.ActiveXObject) {
try {this.request = new ActiveXObject("Microsoft.XMLHTTP")} catch (err) {}
}
}
//
// Use the delayed-script fallback for MSIE/Mac and old versions
// of several browsers (Opera 7.5, OmniWeb 4.5).
//
if (!this.request || jsMath.Setup.domainChanged)
{this.Load = this.delayedLoad; this.needsBody = 1}
},
/*
* Load a script and evaluate it in the window's context
*/
Load: function (url,show) {
if (show) {
jsMath.Message.Set("Loading "+url);
jsMath.Script.Delay(1);
jsMath.Script.Push(this,'xmlRequest',url);
jsMath.Script.Push(jsMath.Message,'Clear');
} else {
jsMath.Script.Push(this,'xmlRequest',url);
}
},
/*
* Load a URL and run the contents of the file
*/
xmlRequest: function (url) {
this.debug('xmlRequest: '+url);
try {
this.request.open("GET",url,false);
this.request.send(null);
} catch (err) {
throw "jsMath can't load the file '"+url+"'\n"
+ "Message: "+err.message;
}
if (this.request.status && this.request.status >= 400) {
// Do we need to deal with redirected links?
throw "jsMath can't load the file '"+url+"'\n"
+ "Error status: "+this.request.status;
}
this.Start(); this.blocking = 1;
jsMath.window.eval(this.request.responseText);
this.End(); this.blocking = 0;
this.Process();
},
/********************************************************************
*
* Implement asynchronous loading and execution of scripts
* (via hidden IFRAME) interleved with other JavaScript commands
* that must be synchronized with the file loading. (Basically, this
* is for MSIE/Mac and Opera 7.5, which don't have XMLHttpRequest.)
*/
cancelTimeout: 30*1000, // delay for canceling load (30 sec)
iframe: null, // the hidden iframe
blocking: 0, // true when an asynchronous action is being performed
cancelTimer: null, // timer to cancel load if it takes too long
needsBody: 0, // true if loading files requires BODY to be present
queue: [], // the stack of pending actions
queueAt: 0,
/*
* Provide mechanism for synchronizing with the asynchronous jsMath
* file-loading mechanism. 'code' can be a string or a function.
*/
Synchronize: function (code,data) {
if (typeof(code) != 'string') {jsMath.Script.Push(null,code,data)}
else {jsMath.Script.Push(jsMath.window,'eval',code)}
},
/*
* Queue a function to be processed.
* If nothing is being loaded, do the pending commands.
*/
Push: function (object,method,data) {
this.debug('Pushing: '+method+' at '+this.queueAt);
this.queue = [].concat(this.queue.slice(0,this.queueAt),[[object,method,data]],this.queue.slice(this.queueAt));
this.queueAt++;
if (!(this.blocking || (this.needsBody && !jsMath.document.body))) this.Process();
},
/*
* Do any pending functions (stopping if a file load is started)
*/
Process: function () {
while (this.queue.length && !this.blocking) {
this.Start();
var call = this.queue[0]; this.queue = this.queue.slice(1);
var object = call[0]; var method = call[1]; var data = call[2];
this.debug('Calling: '+method);
if (object) {object[method](data)} else if (method) {method(data)}
this.debug('Done: '+method);
}
this.End();
},
Start: function () {this.queueAt = 0},
End: function () {this.queueAt = this.queue.length},
/*
* Handle loading of scripts that run asynchronously
*/
delayedLoad: function (url) {
this.debug('Loading: '+url);
this.Push(this,'startLoad',url);
},
startLoad: function (url) {
this.iframe = jsMath.document.createElement('iframe');
this.iframe.style.visibility = 'hidden';
this.iframe.style.position = 'absolute';
this.iframe.style.width = '0px';
this.iframe.style.height = '0px';
if (jsMath.document.body.firstChild) {
jsMath.document.body.insertBefore(this.iframe,jsMath.document.body.firstChild);
} else {
jsMath.document.body.appendChild(this.iframe);
}
this.blocking = 1; this.url = url;
if (!url.match(/\.js$/)) {this.iframe.src = url}
else {this.iframe.src = jsMath.root+"jsMath-loader.html"}
if (url.substr(0,jsMath.root.length) == jsMath.root)
{url = url.substr(jsMath.root.length)}
jsMath.Message.Set("Loading "+url);
this.debug('Starting: '+url);
this.cancelTimer = setTimeout('jsMath.Script.cancelLoad()',this.cancelTimeout);
},
endLoad: function (action) {
this.debug('Ending: '+this.url);
if (this.cancelTimer) {clearTimeout(this.cancelTimer); this.cancelTimer = null;}
jsMath.Message.Clear();
if (action != 'cancel') {this.blocking = 0; this.Process()}
},
/*
* If the loading takes too long, cancel it and end the load.
*/
cancelLoad: function () {
this.cancelTimer = null;
jsMath.Message.Set("Can't load file");
this.endLoad("cancel");
},
/*
* Perform a delay (to let the browser catch up)
*/
Delay: function (time) {
this.blocking = 1;
setTimeout('jsMath.Script.endDelay()',time);
},
endDelay: function () {this.debug('endDelay'); this.blocking = 0; this.Process()},
/*
* Load an image and wait for it
* (so MSIE won't load extra copies of it)
*/
WaitForImage: function (file) {
this.blocking = 1; if (this.img == null) {this.img = []}
var img = new Image(); this.img[this.img.length] = img;
img.onload = function () {jsMath.Script.endDelay()}
img.onerror = img.onload; img.onabort = img.onload;
img.src = file;
},
/*
* The code uncompressor
*/
Uncompress: function (data) {
for (var k = 0; k < data.length; k++) {
var d = data[k]; var n = d.length;
for (var i = 0; i < n; i++) {if (typeof(d[i]) == 'number') {d[i] = d[d[i]]}}
data[k] = d.join('');
}
window.eval(data.join(''));
},
/*
* for debugging the event queue
*/
debug: function (message) {
// if (jsMath.document.body && jsMath.window.debug) {jsMath.window.debug(message)}
// else {alert(message)}
}
};
/***************************************************************************/
/*
* Message and screen blanking facility
*/
jsMath.Message = {
blank: null, // the div to blank out the screen
message: null, // the div for the messages
text: null, // the text node for messages
clear: null, // timer for clearing message
/*
* Create the elements needed for the message box
*/
Init: function () {
if (!jsMath.document.body || !jsMath.Controls.cookie.progress) return;
if (jsMath.Setup.stylesReady) {
this.message = jsMath.Setup.DIV('message',{visibility:'hidden'});
} else {
this.message = jsMath.Setup.DIV('message',{
visibility:'hidden', position:'absolute', bottom:'1px', left:'2px',
backgroundColor:'#E6E6E6', border:'solid 1px #959595',
margin:'0px', padding:'1px 8px', zIndex:102,
color:'black', fontSize:'small', width:'auto'
});
}
this.text = jsMath.document.createTextNode('');
this.message.appendChild(this.text);
this.message.onmousedown = jsMath.Translate.Cancel;
},
/*
* Set the contents of the message box, or use the window status line
*/
Set: function (text,canCancel) {
if (this.clear) {clearTimeout(this.clear); this.clear = null}
if (jsMath.Controls.cookie.progress) {
if (!this.text) {this.Init(); if (!this.text) return}
if (jsMath.Browser.textNodeBug) {this.message.innerHTML = text}
else {this.text.nodeValue = text}
this.message.style.visibility = 'visible';
if (canCancel) {
this.message.style.cursor = 'pointer';
if (!this.message.style.cursor) {this.message.style.cursor = 'hand'}
this.message.title = ' Cancel Processing of Math ';
} else {
this.message.style.cursor;
this.message.title = '';
}
} else {
if (text.substr(0,8) != "Loading ") {jsMath.window.status = text}
}
},
/*
* Clear the message box or status line
*/
Clear: function () {
if (this.clear) {clearTimeout(this.clear)}
this.clear = setTimeout("jsMath.Message.doClear()",1000);
},
doClear: function () {
if (this.clear) {
this.clear = null;
jsMath.window.status = '';
if (this.text) {this.text.nodeValue = ''}
if (this.message) {this.message.style.visibility = 'hidden'}
}
},
/*
* Put up a DIV that covers the window so that the
* "flicker" of processing the mathematics will not be visible
*/
Blank: function () {
if (this.blank || !jsMath.document.body) return;
this.blank = jsMath.Setup.DIV("blank",{
position:(jsMath.Browser.msiePositionFixedBug? 'absolute': 'fixed'),
top:'0px', left:'0px', bottom:'0px', right:'0px',
zIndex:101, backgroundColor:'white'
});
if (jsMath.Browser.msieBlankBug) {
this.blank.innerHTML = ' ';
this.blank.style.width = "110%";
this.blank.style.height = "110%";
}
},
UnBlank: function () {
if (this.blank) {jsMath.document.body.removeChild(this.blank)}
this.blank = null;
}
};
/***************************************************************************/
/*
* Miscellaneous setup and initialization
*/
jsMath.Setup = {
loaded: [], // array of files already loaded
/*
* Insert a DIV at the top of the page with given ID,
* attributes, and style settings
*/
DIV: function (id,styles) {
var div = jsMath.document.createElement('div');
div.id = 'jsMath_'+id;
for (var i in styles) {div.style[i]= styles[i]}
if (!jsMath.document.body.hasChildNodes) {jsMath.document.body.appendChild(div)}
else {jsMath.document.body.insertBefore(div,jsMath.document.body.firstChild)}
return div;
},
/*
* Source a jsMath JavaScript file (only load any given file once)
*/
Script: function (file,show) {
if (this.loaded[file]) {return} else {this.loaded[file] = 1}
if (!file.match('^([a-zA-Z]+:/)?/')) {file = jsMath.root + file}
jsMath.Script.Load(file,show);
},
/*
* Use a hidden <DIV> for measuring the BBoxes of things
*/
Hidden: function () {
jsMath.hidden = this.DIV("Hidden",{
visibility: 'hidden', position:"absolute",
top:0, left:0, border:0, padding:0, margin:0
});
jsMath.hiddenTop = jsMath.hidden;
return;
},
/*
* Find the root URL for the jsMath files (so we can load
* the other .js and .gif files)
*/
Source: function () {
if (jsMath.Autoload && jsMath.Autoload.root) {
jsMath.root = jsMath.Autoload.root;
} else {
jsMath.root = '';
var script = jsMath.document.getElementsByTagName('script');
if (script) {
for (var i = 0; i < script.length; i++) {
var src = script[i].src;
if (src && src.match('(^|/)jsMath.js$')) {
jsMath.root = src.replace(/jsMath.js$/,'');
if (jsMath.root.charAt(0) == '/') {
jsMath.root = jsMath.document.location.protocol + '//'
+ jsMath.document.location.host + jsMath.root;
} else if (!jsMath.root.match(/^[a-z]+:/i)) {
src = new String(jsMath.document.location);
jsMath.root = src.replace(new RegExp('[^/]*$'),'') + jsMath.root;
while (jsMath.root.match('/[^/]*/\\.\\./')) {
jsMath.root = jsMath.root.replace(new RegExp('/[^/]*/\\.\\./'),'/');
}
}
i = script.length;
}
}
}
}
jsMath.Img.root = jsMath.root + "fonts/";
jsMath.blank = jsMath.root + "blank.gif";
this.Domain();
},
/*
* Find the most restricted common domain for the main
* page and jsMath. Report an error if jsMath is outside
* the domain of the calling page.
*/
Domain: function () {
var jsDomain = ''; var pageDomain = jsMath.document.domain;
if (jsMath.root.match('://([^/]*)/')) {jsDomain = RegExp.$1}
jsDomain = jsDomain.replace(/:\d+$/,'');
if (jsDomain == "" || jsDomain == pageDomain) return;
//
// MSIE on the Mac can't change jsMath.document.domain and 'try' won't
// catch the error (Grrr!), so exit for them.
//
if (navigator.appName == 'Microsoft Internet Explorer' &&
navigator.platform == 'MacPPC' && navigator.onLine &&
navigator.userProfile && jsMath.document.all) return;
jsDomain = jsDomain.split(/\./); pageDomain = pageDomain.split(/\./);
if (jsDomain.length < 2 || pageDomain.length < 2 ||
jsDomain[jsDomain.length-1] != pageDomain[pageDomain.length-1] ||
jsDomain[jsDomain.length-2] != pageDomain[pageDomain.length-2]) {
this.DomainWarning();
return;
}
var domain = jsDomain[jsDomain.length-2] + '.' + jsDomain[jsDomain.length-1];
for (var i = 3; i <= jsDomain.length && i <= pageDomain.length; i++) {
if (jsDomain[jsDomain.length-i] != pageDomain[pageDomain.length-i]) break;
domain = jsDomain[jsDomain.length-i] + '.' + domain;
}
jsMath.document.domain = domain;
this.domainChanged = 1;
},
DomainWarning: function () {
alert("In order for jsMath to be able to load the additional "
+ "components that it may need, the jsMath.js file must be "
+ "loaded from a server in the same domain as the page that "
+ "contains it. Because that is not the case for this page, "
+ "the mathematics displayed here may not appear correctly.");
},
/*
* Initialize a font's encoding array
*/
EncodeFont: function (name) {
var font = jsMath.TeX[name];
if (font[0].c != null) return;
for (var k = 0; k < 128; k++) {
var data = font[k]; font[k] = data[3];
if (font[k] == null) {font[k] = {}};
font[k].w = data[0]; font[k].h = data[1];
if (data[2] != null) {font[k].d = data[2]}
font[k].c = jsMath.TeX.encoding[k];
}
},
/*
* Initialize the encodings for all fonts
*/
Fonts: function () {
for (var i = 0; i < jsMath.TeX.fam.length; i++) {
var name = jsMath.TeX.fam[i];
if (name) {this.EncodeFont(name)}
}
},
/*
* Look up the default height and depth for a TeX font
* and set the skewchar
*/
TeXfont: function (name) {
var font = jsMath.TeX[name]; if (font == null) return;
var WH = jsMath.EmBoxFor('<span class="'+name+'">'+font[65].c+'</span>');
font.hd = WH.h; font.dh = .05;
font.d = jsMath.EmBoxFor('<span class="'+name+'">'+ font[65].c +
jsMath.HTML.Rule(1,font.hd) + '</span>').h - font.hd;
font.h = font.hd - font.d;
if (name == 'cmmi10') {font.skewchar = 0177}
else if (name == 'cmsy10') {font.skewchar = 060}
},
/*
* Init all the TeX fonts
*/
TeXfonts: function () {
for (var i = 0; i < jsMath.TeX.fam.length; i++)
{if (jsMath.TeX.fam[i]) {this.TeXfont(jsMath.TeX.fam[i])}}
},
/*
* Compute font parameters for various sizes
*/
Sizes: function () {
jsMath.TeXparams = [];
for (var j=0; j < jsMath.sizes.length; j++) {jsMath.TeXparams[j] = {}}
for (var i in jsMath.TeX) {
if (typeof(jsMath.TeX[i]) != 'object') {
for (var j=0; j < jsMath.sizes.length; j++) {
jsMath.TeXparams[j][i] = jsMath.sizes[j]*jsMath.TeX[i]/100;
}
}
}
},
/*
* Send the style definitions to the browser (these may be adjusted
* by the browser-specific code)
*/
Styles: function (styles) {
if (!styles) {
styles = jsMath.styles;
styles['.typeset .scale'] = 'font-size:'+jsMath.Controls.cookie.scale+'%';
this.stylesReady = 1;
}
jsMath.Script.Push(this,'AddStyleSheet',styles);
if (jsMath.Browser.styleChangeDelay) {jsMath.Script.Push(jsMath.Script,'Delay',1)}
},
AddStyleSheet: function (styles) {
var head = jsMath.document.getElementsByTagName('head')[0];
var string = ''; for (var id in styles) {string += id + ' {'+styles[id]+"}\n"}
if (jsMath.document.createStyleSheet) {// check for MSIE
head.insertAdjacentHTML('beforeEnd',
'<span style="display:none">x</span><style type="text/css">'+string+'</style>');
} else {
var style = jsMath.document.createElement('style'); style.type = "text/css";
style.appendChild(jsMath.document.createTextNode(string));
head.appendChild(style);
}
},
/*
* Do the initialization that requires the <body> to be in place.
*/
Body: function () {
if (this.inited) return;
this.inited = -1;
jsMath.Setup.Hidden(); this.inited = -2;
jsMath.Browser.Init(); this.inited = -3;
// blank screen if necessary
if (jsMath.Controls.cookie.blank) {jsMath.Message.Blank()}; this.inited = -4;
jsMath.Setup.Styles(); this.inited = -5;
jsMath.Controls.Init(); this.inited = -6;
// do user-specific initialization
jsMath.Script.Push(jsMath.Setup,'User','pre-font'); this.inited = -7;
// make sure browser-specific loads are done before this
jsMath.Script.Push(jsMath.Font,'Check');
this.inited = 1;
},
/*
* Web page author can override this to do initialization
* that must be done before the font check is performed, or
* at other times (as indicated by the value of the parameter).
*/
User: function (when) {}
};
jsMath.Update = {
/*
* Update specific parameters for a limited number of font entries
*/
TeXfonts: function (change) {
for (var font in change) {
for (var code in change[font]) {
for (var id in change[font][code]) {
jsMath.TeX[font][code][id] = change[font][code][id];
}
}
}
},
/*
* Update the character code for every character in a list
* of fonts
*/
TeXfontCodes: function (change) {
for (var font in change) {
for (var i = 0; i < change[font].length; i++) {
jsMath.TeX[font][i].c = change[font][i];
}
}
}
};
/***************************************************************************/
/*
* Implement browser-specific checks
*/
jsMath.Browser = {
allowAbsolute: 1, // tells if browser can nest absolutely positioned
// SPANs inside relative SPANs
allowAbsoluteDelim: 0, // OK to use absolute placement for building delims?
separateSkips: 0, // MSIE doesn't do negative left margins, and
// Netscape doesn't combine skips well
valignBug: 0, // Konqueror doesn't nest vertical-align
operaHiddenFix: '', // for Opera to fix bug with math in tables
msieCenterBugFix: '', // for MSIE centering bug with image fonts
msieInlineBlockFix: '', // for MSIE alignment bug in non-quirks mode
imgScale: 1, // MSI scales images for 120dpi screens, so compensate
renameOK: 1, // tells if brower will find a tag whose name
// has been set via setAttributes
styleChangeDelay: 0, // true if style changes need a delay in order
// for them to be available
delay: 1, // delay for asynchronous math processing
version: 0, // browser version number (when needed)
/*
* Determine if the "top" of a <SPAN> is always at the same height
* or varies with the height of the rest of the line (MSIE).
*/
TestSpanHeight: function () {
jsMath.hidden.innerHTML = '<span><span style="'+this.block+';height:2em;width:1px"></span></span>';
var span = jsMath.hidden.firstChild;
var img = span.firstChild;
this.spanHeightVaries = (span.offsetHeight >= img.offsetHeight && span.offsetHeight > 0);
this.spanHeightTooBig = (span.offsetHeight > img.offsetHeight);
jsMath.hidden.innerHTML = '';
},
/*
* Determine if an inline-block with 0 width is OK or not
* and decide whether to use spans or images for spacing
*/
TestInlineBlock: function () {
this.block = "display:inline-block";
this.hasInlineBlock = jsMath.BBoxFor('<span style="'+this.block+';width:10px;height:5px"></span>').w > 0;
if (!this.hasInlineBlock) {
this.block = "display:-moz-inline-box";
this.hasInlineBlock = jsMath.BBoxFor('<span style="'+this.block+';width:10px;height:5px"></span>').w > 0;
if (!this.hasInlineBlock) return;
jsMath.styles['.typeset .blank'] = jsMath.styles['.typeset .blank'].replace(/display:inline-block/,this.block);
}
this.block += ';overflow:hidden';
var h = jsMath.BBoxFor('x').h;
this.mozInlineBlockBug = jsMath.BBoxFor(
'<span style="'+this.block+';height:'+h+'px;width:1px"></span>x'+
'<span style="'+this.block+';height:'+h+'px;width:1px;vertical-align:-'+h+'px"></span>').h > 2*h;
this.widthAddsBorder = jsMath.BBoxFor('<span style="'+this.block+
';overflow:hidden;height:1px;width:10px;border-left:10px solid"></span>').w > 10;
this.msieBorderBug =
jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px"></span>x').h !=
jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px;border-left:1px solid"></span>x').h;
this.blankWidthBug = this.msieBorderBug ||
jsMath.BBoxFor('<span style="'+this.block+';height:2em;width:0px"></span>').h == 0;
},
/*
* Determine if the NAME attribute of a tag can be changed
* using the setAttribute function, and then be properly
* returned by getElementByName.
*/
TestRenameOK: function () {
jsMath.hidden.innerHTML = '<span></span>';
var test = jsMath.hidden.firstChild;
test.setAttribute('name','jsMath_test');
this.renameOK = (jsMath.document.getElementsByName('jsMath_test').length > 0);
jsMath.hidden.innerHTML = '';
},
/*
* See if style changes occur immediately, or if we need to delay
* in order to let them take effect.
*/
TestStyleChange: function () {
jsMath.hidden.innerHTML = '<span ID="jsMath_test">x</span>';
var span = jsMath.hidden.firstChild;
var w = span.offsetWidth;
jsMath.Setup.AddStyleSheet({'#jsMath_test': 'font-size:200%'});
this.styleChangeDelay = (span.offsetWidth == w);
jsMath.hidden.innerHTML = '';
},
/*
* Perform a version check on a standard version string
*/
VersionAtLeast: function (v) {
var bv = new String(this.version).split('.');
v = new String(v).split('.'); if (v[1] == null) {v[1] = '0'}
return bv[0] > v[0] || (bv[0] == v[0] && bv[1] >= v[1]);
},
/*
* Test for browser characteristics, and adjust things
* to overcome specific browser bugs
*/
Init: function () {
jsMath.browser = 'unknown';
this.TestInlineBlock();
this.TestSpanHeight();
this.TestRenameOK();
this.TestStyleChange();
this.MSIE();
this.Mozilla();
this.Opera();
this.OmniWeb();
this.Safari();
this.Konqueror();
//
// Change some routines depending on the browser
//
if (this.allowAbsoluteDelim) {
jsMath.Box.DelimExtend = jsMath.Box.DelimExtendAbsolute;
jsMath.Box.Layout = jsMath.Box.LayoutAbsolute;
} else {
jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
jsMath.Box.Layout = jsMath.Box.LayoutRelative;
}
if (this.separateSkips) {
jsMath.HTML.Place = jsMath.HTML.PlaceSeparateSkips;
jsMath.Typeset.prototype.Place = jsMath.Typeset.prototype.PlaceSeparateSkips;
}
},
//
// Handle bug-filled Internet Explorer
//
MSIE: function () {
if (this.spanHeightVaries && !this.spanHeightTooBig) {
jsMath.browser = 'MSIE';
if (navigator.platform == 'Win32') {
this.allowAbsoluteDelim = 1; this.separateSkips = 1;
this.buttonCheck = 1; this.msieBlankBug = 1;
this.msieDivWidthBug = 1; this.msiePositionFixedBug = 1;
this.msieIntegralBug = 1; this.waitForImages = 1;
this.msieAlphaBug = 1; this.alphaPrintBug = 1;
this.msieCenterBugFix = 'position:relative; ';
this.msieInlineBlockFix = ' display:inline-block;';
jsMath.Macro('joinrel','\\mathrel{\\kern-5mu}'),
jsMath.styles['.typeset .arial'] = "font-family: 'Arial unicode MS'";
// MSIE doesn't implement fixed positioning, so use absolute
jsMath.styles['#jsMath_message'] =
jsMath.styles['#jsMath_message'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
jsMath.styles['#jsMath_panel'] =
jsMath.styles['#jsMath_panel'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
jsMath.styles['#jsMath_button'] = 'width:1px; '
+ jsMath.styles['#jsMath_button'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
jsMath.window.onscroll = jsMath.Controls.MoveButton;
// MSIE needs this NOT to be inline-block
jsMath.styles['.typeset .spacer'] =
jsMath.styles['.typeset .spacer'].replace(/display:inline-block/,'');
// MSIE will rescale images if the DPIs differ
if (screen.deviceXDPI && screen.logicalXDPI
&& screen.deviceXDPI != screen.logicalXDPI) {
this.imgScale *= screen.logicalXDPI/screen.deviceXDPI;
jsMath.Controls.cookie.alpha = 0;
}
// Handle bug with getting width of italic text
this.italicString = '<i>x</i>';
jsMath.EmBoxFor = jsMath.EmBoxForItalics;
} else if (navigator.platform == 'MacPPC') {
this.msieAbsoluteBug = 1; this.msieButtonBug = 1;
this.msieDivWidthBug = 1; this.msieBlankBug = 1;
jsMath.Setup.Script('jsMath-msie-mac.js');
jsMath.Parser.prototype.macros.angle = ['Replace','ord','<font face="Symbol">‹</font>','normal'];
jsMath.styles['#jsMath_panel'] = 'width:25em; ' + jsMath.styles['#jsMath_panel'].replace(/width:auto/,"");
jsMath.styles['#jsMath_button'] = 'width:1px; ' + jsMath.styles['#jsMath_button'].replace(/width:auto/,"");
}
jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
}
},
//
// Handle Netscape/Mozilla (any flavor)
//
Mozilla: function () {
if (jsMath.hidden.ATTRIBUTE_NODE) {
jsMath.browser = 'Mozilla';
if (navigator.platform == 'Win32') {this.alphaPrintBug = 1}
this.allowAbsoluteDelim = 1; // this.separateSkips = 1; // no longer needed?
jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
if (navigator.vendor == 'Firefox') {
jsMath.Browser.version = navigator.vendorSub;
} else if (navigator.userAgent.match(' Firefox/([0-9.]+)( |$)')) {
jsMath.Browser.version = RegExp.$1;
}
}
},
//
// Handle OmniWeb
//
OmniWeb: function () {
if (navigator.accentColorName) {
jsMath.browser = 'OmniWeb';
this.allowAbsolute = this.hasInlineBlock;
this.allowAbsoluteDelim = this.allowAbsolute;
this.valignBug = this.allowAbsolute;
this.buttonCheck = 1; this.textNodeBug = 1;
if (!this.hasInlineBlock) {jsMath.Setup.Script('jsMath-old-browsers.js')}
}
},
//
// Handle Opera
//
Opera: function () {
if (this.spanHeightTooBig) {
jsMath.browser = 'Opera';
var isOld = navigator.userAgent.match("Opera 7");
this.allowAbsolute = 0;
this.delay = 10;
this.operaHiddenFix = '[Processing]';
if (isOld) {jsMath.Setup.Script('jsMath-old-browsers.js')}
}
},
//
// Handle Safari
//
Safari: function () {
if (navigator.appVersion.match(/Safari\//)) {
jsMath.browser = 'Safari';
var version = navigator.userAgent.match("Safari/([0-9]+)");
version = (version)? version[1] : 400;
for (var i = 0; i < jsMath.TeX.fam.length; i++)
{if (jsMath.TeX.fam[i]) {jsMath.TeX[jsMath.TeX.fam[i]].dh = .1}}
jsMath.TeX.axis_height += .05;
this.allowAbsoluteDelim = version >= 125;
this.safariIFRAMEbug = version >= 312 && version < 412;
this.safariImgBug = 1; this.textNodeBug = 1;
this.buttonCheck = 1;
this.styleChangeDelay = 1;
}
},
//
// Handle Konqueror
//
Konqueror: function () {
if (navigator.product && navigator.product.match("Konqueror")) {
jsMath.browser = 'Konqueror';
this.allowAbsolute = 0;
this.allowAbsoluteDelim = 0;
if (navigator.userAgent.match(/Konqueror\/(\d+)\.(\d+)/)) {
if (RegExp.$1 < 3 || (RegExp.$1 == 3 && RegExp.$2 < 3)) {
this.separateSkips = 1;
this.valignBug = 1;
jsMath.Setup.Script('jsMath-old-browsers.js');
}
}
}
}
};
/***************************************************************************/
/*
* Implement font check and messages
*/
jsMath.Font = {
fallback: "symbol", // the default fallback method
// the HTML for the missing font message
message:
'<b>No jsMath TeX fonts found</b> -- using image fonts instead.<br/>\n'
+ 'These may be slow and might not print well.<br/>\n'
+ 'Use the jsMath control panel to get additional information.',
extra_message:
'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>'
+ 'Using image fonts instead. This may be slow and might not print well.<br/>\n'
+ 'Use the jsMath control panel to get additional information.',
/*
* Look to see if a font is found.
* Check the character in a given position, and see if it is
* wider than the usual one in that position.
*/
Test1: function (name,n,factor,prefix) {
if (n == null) {n = 0x7C}; if (factor == null) {factor = 2}; if (prefix == null) {prefix = ''}
var wh1 = jsMath.BBoxFor('<span style="font-family: '+prefix+name+', serif">'+jsMath.TeX[name][n].c+'</span>');
var wh2 = jsMath.BBoxFor('<span style="font-family: serif">'+jsMath.TeX[name][n].c+'</span>');
//alert([wh1.w,wh2.w,wh1.h,factor*wh2.w]);
return (wh1.w > factor*wh2.w && wh1.h != 0);
},
Test2: function (name,n,factor,prefix) {
if (n == null) {n = 0x7C}; if (factor == null) {factor = 2}; if (prefix == null) {prefix = ''}
var wh1 = jsMath.BBoxFor('<span style="font-family: '+prefix+name+', serif">'+jsMath.TeX[name][n].c+'</span>');
var wh2 = jsMath.BBoxFor('<span style="font-family: serif">'+jsMath.TeX[name][n].c+'</span>');
//alert([wh2.w,wh1.w,wh1.h,factor*wh1.w]);
return (wh2.w > factor*wh1.w && wh1.h != 0);
},
/*
* Check for the new jsMath versions of the fonts (blacker with
* different encoding) and if not found, look for old-style fonts.
* If they are found, load the BaKoMa encoding information.
*/
CheckTeX: function () {
var wh = jsMath.BBoxFor('<span style="font-family: jsMath-cmex10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10',null,null,'jsMath-'));
if (jsMath.nofonts && (navigator.platform != "MacPPC" ||
jsMath.browser != 'Mozilla' || !jsMath.Browser.VersionAtLeast(1.5))) {
wh = jsMath.BBoxFor('<span style="font-family: cmex10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
if (!jsMath.nofonts) {jsMath.Setup.Script("jsMath-BaKoMa-fonts.js")}
}
},
/*
* Check for the availability of TeX fonts. We do this by looking at
* the width and height of a character in the cmex10 font. The cmex10
* font has depth considerably greater than most characters' widths (the
* whole font has the depth of the character with greatest depth). This
* is not the case for most fonts, so if we can access cmex10, the
* height of a character should be much bigger than the width.
* Otherwise, if we don't have cmex10, we'll get a character in another
* font with normal height and width. In this case, we insert a message
* pointing the user to the jsMath site, and load one of the fallback
* definitions.
*
*/
Check: function () {
var cookie = jsMath.Controls.cookie;
this.CheckTeX();
if (jsMath.nofonts) {
if (cookie.autofont || cookie.font == 'tex') {
cookie.font = this.fallback;
if (cookie.warn) {
jsMath.nofontMessage = 1;
cookie.warn = 0; jsMath.Controls.SetCookie(0);
if (jsMath.window.NoFontMessage) {jsMath.window.NoFontMessage()}
else {this.Message(this.message)}
}
}
} else {
if (cookie.autofont) {cookie.font = 'tex'}
if (cookie.font == 'tex') return;
}
if (jsMath.noImgFonts) {cookie.font = 'unicode'}
if (cookie.font == 'unicode') {
var platform = ({Win32: 'pc', MacPPC: 'mac'})[navigator.platform] || 'unix';
jsMath.Setup.Script('jsMath-fallback-'+platform+'.js');
jsMath.Box.TeXnonfallback = jsMath.Box.TeX;
jsMath.Box.TeX = jsMath.Box.TeXfallback;
return;
}
if (jsMath.Browser.waitForImages) {
jsMath.Script.Push(jsMath.Script,"WaitForImage",jsMath.blank);
}
if (cookie.font == 'symbol') {
jsMath.Setup.Script('jsMath-fallback-symbols.js');
jsMath.Box.TeXnonfallback = jsMath.Box.TeX;
jsMath.Box.TeX = jsMath.Box.TeXfallback;
return;
}
jsMath.Img.SetFont({
cmr10: ['all'], cmmi10: ['all'], cmsy10: ['all'],
cmex10: ['all'], cmbx10: ['all'], cmti10: ['all']
});
jsMath.Img.LoadFont('cm-fonts');
},
/*
* The message for when no TeX fonts. You can eliminate this message
* by including
*
* <script>jsMath = {Font: {Message: function () {}}}</script>
*
* in your HTML file, before loading jsMath.js, if you want. But this
* means the user may not know that he or she can get a better version
* of your page.
*/
Message: function (message) {
if(jsMath.Element("Warning")) return;
var div = jsMath.Setup.DIV("Warning",{});
div.innerHTML =
'<center><table><tr><td>'
+ '<div id="jsMath_noFont">' + message
+ '<div style="text-align:left"><span style="float:left; margin: 8px 0px 0px 20px">'
+ '<span onclick="jsMath.Controls.Panel()" title=" Open the jsMath Control Panel " class="link">jsMath Control Panel</span>'
+ '</span><span style="margin: 8px 20px 0px 0px; float:right">'
+ '<span onclick="jsMath.Font.HideMessage()" title=" Remove this font warning message " class="link">Hide this Message</span>'
+ '</span></div><div style="height:6px"></div><br clear="all"/></div>'
+ '<div style="width:22em; height:1px"></div>'
+ '</td></tr></table></center><hr/>';
},
HideMessage: function () {
var message = jsMath.Element("Warning");
if (message) {message.style.display = "none"}
},
/*
* Register an extra font so jsMath knows about it
*/
Register: function (data) {
jsMath.Script.Start();
if (typeof(data) == 'string') {data = {name: data}}
var fontname = data.name; var name = fontname.replace(/10$/,'');
var fontfam = jsMath.TeX.fam.length;
if (data.prefix == null) {data.prefix = ""}
if (!data.style) {data.style = "font-family: "+data.prefix+fontname+", serif"}
if (!data.styles) {data.styles = {}}
if (!data.macros) {data.macros = {}}
/*
* Register font family
*/
jsMath.TeX.fam[fontfam] = fontname;
jsMath.TeX.famName[fontname] = fontfam;
data.macros[name] = ['HandleFont',fontfam];
jsMath.Add(jsMath.Parser.prototype.macros,data.macros);
/*
* Set up styles
*/
data.styles['.typeset .'+fontname] = data.style;
jsMath.Setup.Styles(data.styles);
jsMath.Script.Push(jsMath.Setup,'TeXfont',fontname);
/*
* Check for font and give message if missing
*/
var hasTeXfont = !jsMath.nofonts &&
data.test(fontname,data.testChar,data.testFactor,data.prefix);
if (hasTeXfont && jsMath.Controls.cookie.font == 'tex') {
if (data.tex) {data.tex(fontname,fontfam,data)}
jsMath.Script.End();
return;
}
if (!hasTeXfont && jsMath.Controls.cookie.warn &&
jsMath.Controls.cookie.font == 'tex' && !jsMath.nofonts) {
if (!jsMath.Element("Warning")) this.Message(this.extra_message);
var extra = jsMath.Element("ExtraFonts");
if (extra) {
if (extra.innerHTML != "") {extra.innerHTML += ','}
extra.innerHTML += " " + data.prefix+fontname;
}
}
if (jsMath.Controls.cookie.font == 'unicode') {
if (data.fallback) {data.fallback(fontname,fontfam,data)}
jsMath.Script.End();
return;
}
// Image fonts
var font = {}; font[fontname] = ['all'];
jsMath.Img.SetFont(font);
jsMath.Img.LoadFont(fontname);
jsMath.Script.Push(jsMath.Img,'Scale');
jsMath.Script.Push(jsMath.Img,'UpdateFonts');
jsMath.Script.End();
},
/*
* Load a font
*/
Load: function (name) {jsMath.Setup.Script(this.URL(name))},
URL: function (name) {return jsMath.Img.root+name+'/def.js'}
};
/***************************************************************************/
/*
* Implements the jsMath control panel.
* Much of the code is in jsMath-controls.html, which is
* loaded into a hidden IFRAME on demand
*/
jsMath.Controls = {
// Data stored in the jsMath cookie
cookie: {
scale: 100,
font: 'tex', autofont: 1, scaleImg: 0, alpha: 1,
warn: 1, button: 1, progress: 1, asynch: 0, blank: 0,
print: 0, keep: '0D'
},
cookiePath: '/', // can also set cookieDomain
/*
* Create the HTML needed for control panel
*/
Init: function () {
this.panel = jsMath.Setup.DIV("panel",{display:'none'});
if (!jsMath.Browser.msieButtonBug) {this.Button()}
else {setTimeout("jsMath.Controls.Button()",500)}
},
/*
* Load the control panel
*/
Panel: function () {
jsMath.Translate.Cancel();
if (this.loaded) {this.Main()}
else {jsMath.Script.delayedLoad(jsMath.root+"jsMath-controls.html")}
},
/*
* Create the control panel button
*/
Button: function () {
var button = jsMath.Setup.DIV("button",{});
button.title = ' Open jsMath Control Panel ';
button.innerHTML = 'jsMath';
if (button.offsetWidth < 2*jsMath.em) {button.style.width = "auto"}
button.onclick = new Function("jsMath.Controls.Panel()");
if (!this.cookie.button) {button.style.display = "none"}
},
/*
* MSIE doesn't implement position:fixed, so redraw the button on scrolls.
*/
MoveButton: function () {
if (!this.button) {this.button = jsMath.Element("button")}
this.button.style.visibility = "hidden";
this.button.style.visibility = "visible";
},
/*
* Get the cookie data from the browser
* (for file: references, use url '?' syntax)
*/
GetCookie: function () {
var cookies = jsMath.document.cookie;
if (jsMath.window.location.protocol == 'file:')
{cookies = unescape(jsMath.window.location.search.substr(1))}
if (cookies.match(/jsMath=([^;]*)/)) {
var data = RegExp.$1.split(/,/);
for (var i = 0; i < data.length; i++) {
var x = data[i].match(/(.*):(.*)/);
if (x[2].match(/^\d+$/)) {x[2] = 1*x[2]} // convert from string
this.cookie[x[1]] = x[2];
}
}
},
/*
* Save the cookie data in the browser
* (for file: urls, append data like CGI reference)
*/
SetCookie: function (warn) {
var cookie = [];
for (var id in this.cookie) {cookie[cookie.length] = id + ':' + this.cookie[id]}
cookie = cookie.join(',');
if (jsMath.window.location.protocol == 'file:') {
if (!warn) return;
this.loaded = 0;
var href = jsMath.window.location.href;
href = href.replace(/\?.*/,"") + '?jsMath=' + escape(cookie);
if (href != jsMath.window.location.href) {jsMath.window.location.replace(href)}
} else {
if (this.cookiePath) {cookie += '; path='+this.cookiePath}
if (this.cookieDomain) {cookie += '; domain='+this.cookieDomain}
if (this.cookie.keep != '0D') {
var ms = {
D: 1000*60*60*24,
W: 1000*60*60*24*7,
M: 1000*60*60*24*30,
Y: 1000*60*60*24*365
};
var exp = new Date;
exp.setTime(exp.getTime() +
this.cookie.keep.substr(0,1) * ms[this.cookie.keep.substr(1,1)]);
cookie += '; expires=' + exp.toGMTString();
}
jsMath.document.cookie = 'jsMath='+cookie;
var cookies = jsMath.document.cookie;
if (warn && !cookies.match(/jsMath=/))
{alert("Cookies must be enabled in order to save jsMath options")}
}
}
};
/***************************************************************************/
/*
* Implements the actions for clicking and double-clicking
* on math formulas
*/
jsMath.Click = {
/*
* Handle clicking on math to get control panel
*/
CheckClick: function (event) {
if (!event) {event = jsMath.window.event}
if (event.altKey) jsMath.Controls.Panel();
},
/*
* Handle double-click for seeing TeX code
*/
CheckDblClick: function (event) {
if (!event) {event = jsMath.window.event}
if (!jsMath.Click.DblClick) {
jsMath.Extension.Require('double-click',1);
// Firefox clears the event, so copy it
var tmpEvent = event; event = {};
for (var id in tmpEvent) {event[id] = tmpEvent[id]}
}
jsMath.Script.Push(jsMath.Click,'DblClick',[event,this.alt]);
}
};
/***************************************************************************/
/*
* The TeX font information
*/
jsMath.TeX = {
//
// The TeX font parameters
//
thinmuskip: 3/18,
medmuskip: 4/18,
thickmuskip: 5/18,
x_height: .430554,
quad: 1,
num1: .676508,
num2: .393732,
num3: .44373,
denom1: .685951,
denom2: .344841,
sup1: .412892,
sup2: .362892,
sup3: .288888,
sub1: .15,
sub2: .247217,
sup_drop: .386108,
sub_drop: .05,
delim1: 2.39,
delim2: 1.0,
axis_height: .25,
default_rule_thickness: .04,
big_op_spacing1: .111111,
big_op_spacing2: .166666,
big_op_spacing3: .2,
big_op_spacing4: .6,
big_op_spacing5: .1,
integer: 6553.6, // conversion of em's to TeX internal integer
scriptspace: .05,
nulldelimiterspace: .12,
delimiterfactor: 901,
delimitershortfall: .5,
scale: 1, // scaling factor for font dimensions
// The TeX math atom types (see Appendix G of the TeXbook)
atom: ['ord', 'op', 'bin', 'rel', 'open', 'close', 'punct', 'ord'],
// The TeX font families
fam: ['cmr10','cmmi10','cmsy10','cmex10','cmti10','','cmbx10',''],
famName: {cmr10:0, cmmi10:1, cmsy10:2, cmex10:3, cmti10:4, cmbx10:6},
// Encoding used by jsMath fonts
encoding: [
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç',
'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï',
'°', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '·',
'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'µ', '¶', 'ß',
'ï', '!', '"', '#', '$', '%', '&', ''',
'(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '[', '\', ']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '{', '|', '}', '~', 'ÿ'
],
/*
* The following are the TeX font mappings and metrics. The metric
* information comes directly from the TeX .tfm files. Browser-specific
* adjustments are made to these tables in the Browser.Init() routine
*/
cmr10: [
[0.625,0.683], [0.833,0.683], [0.778,0.683], [0.694,0.683],
[0.667,0.683], [0.75,0.683], [0.722,0.683], [0.778,0.683],
[0.722,0.683], [0.778,0.683], [0.722,0.683],
[0.583,0.694,0,{ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}}],
[0.556,0.694], [0.556,0.694], [0.833,0.694], [0.833,0.694],
[0.278,0.431], [0.306,0.431,0.194], [0.5,0.694], [0.5,0.694],
[0.5,0.628], [0.5,0.694], [0.5,0.568], [0.75,0.694],
[0.444,0,0.17], [0.5,0.694], [0.722,0.431], [0.778,0.431],
[0.5,0.528,0.0972], [0.903,0.683], [1.01,0.683], [0.778,0.732,0.0486],
[0.278,0.431,0,{krn: {'108': -0.278, '76': -0.319}}],
[0.278,0.694,0,{lig: {'96': 60}}],
[0.5,0.694], [0.833,0.694,0.194], [0.5,0.75,0.0556],
[0.833,0.75,0.0556], [0.778,0.694],
[0.278,0.694,0,{krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}}],
[0.389,0.75,0.25], [0.389,0.75,0.25], [0.5,0.75],
[0.778,0.583,0.0833], [0.278,0.106,0.194],
[0.333,0.431,0,{lig: {'45': 123}}],
[0.278,0.106], [0.5,0.75,0.25],
[0.5,0.644], [0.5,0.644], [0.5,0.644], [0.5,0.644],
[0.5,0.644], [0.5,0.644], [0.5,0.644], [0.5,0.644],
[0.5,0.644], [0.5,0.644], [0.278,0.431], [0.278,0.431,0.194],
[0.278,0.5,0.194], [0.778,0.367,-0.133], [0.472,0.5,0.194],
[0.472,0.694,0,{lig: {'96': 62}}],
[0.778,0.694],
[0.75,0.683,0,{krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
[0.708,0.683], [0.722,0.683],
[0.764,0.683,0,{krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}}],
[0.681,0.683],
[0.653,0.683,0,{krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
[0.785,0.683], [0.75,0.683], [0.361,0.683,0,{krn: {'73': 0.0278}}],
[0.514,0.683],
[0.778,0.683,0,{krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
[0.625,0.683,0,{krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
[0.917,0.683], [0.75,0.683],
[0.778,0.683,0,{krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}}],
[0.681,0.683,0,{krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}}],
[0.778,0.683,0.194],
[0.736,0.683,0,{krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
[0.556,0.683],
[0.722,0.683,0,{krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}}],
[0.75,0.683],
[0.75,0.683,0,{ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
[1.03,0.683,0,{ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
[0.75,0.683,0,{krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
[0.75,0.683,0,{ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}}],
[0.611,0.683], [0.278,0.75,0.25], [0.5,0.694],
[0.278,0.75,0.25], [0.5,0.694], [0.278,0.668],
[0.278,0.694,0,{lig: {'96': 92}}],
[0.5,0.431,0,{krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
[0.556,0.694,0,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
[0.444,0.431,0,{krn: {'104': -0.0278, '107': -0.0278}}],
[0.556,0.694], [0.444,0.431],
[0.306,0.694,0,{ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}}],
[0.5,0.431,0.194,{ic: 0.0139, krn: {'106': 0.0278}}],
[0.556,0.694,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
[0.278,0.668], [0.306,0.668,0.194],
[0.528,0.694,0,{krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
[0.278,0.694],
[0.833,0.431,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
[0.556,0.431,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
[0.5,0.431,0,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
[0.556,0.431,0.194,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
[0.528,0.431,0.194], [0.392,0.431], [0.394,0.431],
[0.389,0.615,0,{krn: {'121': -0.0278, '119': -0.0278}}],
[0.556,0.431,0,{krn: {'119': -0.0278}}],
[0.528,0.431,0,{ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
[0.722,0.431,0,{ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
[0.528,0.431],
[0.528,0.431,0.194,{ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}}],
[0.444,0.431], [0.5,0.431,0,{ic: 0.0278, lig: {'45': 124}}],
[1,0.431,0,{ic: 0.0278}], [0.5,0.694], [0.5,0.668], [0.5,0.668]
],
cmmi10: [
[0.615,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
[0.833,0.683,0,{krn: {'127': 0.167}}],
[0.763,0.683,0,{ic: 0.0278, krn: {'127': 0.0833}}],
[0.694,0.683,0,{krn: {'127': 0.167}}],
[0.742,0.683,0,{ic: 0.0757, krn: {'127': 0.0833}}],
[0.831,0.683,0,{ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
[0.78,0.683,0,{ic: 0.0576, krn: {'127': 0.0833}}],
[0.583,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}}],
[0.667,0.683,0,{krn: {'127': 0.0833}}],
[0.612,0.683,0,{ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
[0.772,0.683,0,{ic: 0.0502, krn: {'127': 0.0833}}],
[0.64,0.431,0,{ic: 0.0037, krn: {'127': 0.0278}}],
[0.566,0.694,0.194,{ic: 0.0528, krn: {'127': 0.0833}}],
[0.518,0.431,0.194,{ic: 0.0556}],
[0.444,0.694,0,{ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}}],
[0.406,0.431,0,{krn: {'127': 0.0556}}],
[0.438,0.694,0.194,{ic: 0.0738, krn: {'127': 0.0833}}],
[0.497,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0556}}],
[0.469,0.694,0,{ic: 0.0278, krn: {'127': 0.0833}}],
[0.354,0.431,0,{krn: {'127': 0.0556}}],
[0.576,0.431], [0.583,0.694],
[0.603,0.431,0.194,{krn: {'127': 0.0278}}],
[0.494,0.431,0,{ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}}],
[0.438,0.694,0.194,{ic: 0.046, krn: {'127': 0.111}}],
[0.57,0.431,0,{ic: 0.0359}],
[0.517,0.431,0.194,{krn: {'127': 0.0833}}],
[0.571,0.431,0,{ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}}],
[0.437,0.431,0,{ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}}],
[0.54,0.431,0,{ic: 0.0359, krn: {'127': 0.0278}}],
[0.596,0.694,0.194,{krn: {'127': 0.0833}}],
[0.626,0.431,0.194,{krn: {'127': 0.0556}}],
[0.651,0.694,0.194,{ic: 0.0359, krn: {'127': 0.111}}],
[0.622,0.431,0,{ic: 0.0359}],
[0.466,0.431,0,{krn: {'127': 0.0833}}],
[0.591,0.694,0,{krn: {'127': 0.0833}}],
[0.828,0.431,0,{ic: 0.0278}],
[0.517,0.431,0.194,{krn: {'127': 0.0833}}],
[0.363,0.431,0.0972,{ic: 0.0799, krn: {'127': 0.0833}}],
[0.654,0.431,0.194,{krn: {'127': 0.0833}}],
[1,0.367,-0.133], [1,0.367,-0.133], [1,0.367,-0.133], [1,0.367,-0.133],
[0.278,0.464,-0.0363], [0.278,0.464,-0.0363], [0.5,0.465,-0.0347], [0.5,0.465,-0.0347],
[0.5,0.431], [0.5,0.431], [0.5,0.431], [0.5,0.431,0.194],
[0.5,0.431,0.194], [0.5,0.431,0.194], [0.5,0.644], [0.5,0.431,0.194],
[0.5,0.644], [0.5,0.431,0.194], [0.278,0.106], [0.278,0.106,0.194],
[0.778,0.539,0.0391],
[0.5,0.75,0.25,{krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}}],
[0.778,0.539,0.0391], [0.5,0.465,-0.0347],
[0.531,0.694,0,{ic: 0.0556, krn: {'127': 0.0833}}],
[0.75,0.683,0,{krn: {'127': 0.139}}],
[0.759,0.683,0,{ic: 0.0502, krn: {'127': 0.0833}}],
[0.715,0.683,0,{ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.828,0.683,0,{ic: 0.0278, krn: {'127': 0.0556}}],
[0.738,0.683,0,{ic: 0.0576, krn: {'127': 0.0833}}],
[0.643,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
[0.786,0.683,0,{krn: {'127': 0.0833}}],
[0.831,0.683,0,{ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
[0.44,0.683,0,{ic: 0.0785, krn: {'127': 0.111}}],
[0.555,0.683,0,{ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}}],
[0.849,0.683,0,{ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
[0.681,0.683,0,{krn: {'127': 0.0278}}],
[0.97,0.683,0,{ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.803,0.683,0,{ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.763,0.683,0,{ic: 0.0278, krn: {'127': 0.0833}}],
[0.642,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
[0.791,0.683,0.194,{krn: {'127': 0.0833}}],
[0.759,0.683,0,{ic: 0.00773, krn: {'127': 0.0833}}],
[0.613,0.683,0,{ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.584,0.683,0,{ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.683,0.683,0,{ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}}],
[0.583,0.683,0,{ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
[0.944,0.683,0,{ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
[0.828,0.683,0,{ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.581,0.683,0,{ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
[0.683,0.683,0,{ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
[0.389,0.75], [0.389,0.694,0.194], [0.389,0.694,0.194],
[1,0.358,-0.142], [1,0.358,-0.142],
[0.417,0.694,0,{krn: {'127': 0.111}}],
[0.529,0.431], [0.429,0.694], [0.433,0.431,0,{krn: {'127': 0.0556}}],
[0.52,0.694,0,{krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}}],
[0.466,0.431,0,{krn: {'127': 0.0556}}],
[0.49,0.694,0.194,{ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}}],
[0.477,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0278}}],
[0.576,0.694,0,{krn: {'127': -0.0278}}], [0.345,0.66],
[0.412,0.66,0.194,{ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}}],
[0.521,0.694,0,{ic: 0.0315}], [0.298,0.694,0,{ic: 0.0197, krn: {'127': 0.0833}}],
[0.878,0.431], [0.6,0.431], [0.485,0.431,0,{krn: {'127': 0.0556}}],
[0.503,0.431,0.194,{krn: {'127': 0.0833}}],
[0.446,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0833}}],
[0.451,0.431,0,{ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}}],
[0.469,0.431,0,{krn: {'127': 0.0556}}], [0.361,0.615,0,{krn: {'127': 0.0833}}],
[0.572,0.431,0,{krn: {'127': 0.0278}}],
[0.485,0.431,0,{ic: 0.0359, krn: {'127': 0.0278}}],
[0.716,0.431,0,{ic: 0.0269, krn: {'127': 0.0833}}],
[0.572,0.431,0,{krn: {'127': 0.0278}}],
[0.49,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0556}}],
[0.465,0.431,0,{ic: 0.044, krn: {'127': 0.0556}}],
[0.322,0.431,0,{krn: {'127': 0.0278}}],
[0.384,0.431,0.194,{krn: {'127': 0.0833}}],
[0.636,0.431,0.194,{krn: {'127': 0.111}}],
[0.5,0.714,0,{ic: 0.154}], [0.278,0.694,0,{ic: 0.399}]
],
cmsy10: [
[0.778,0.583,0.0833], [0.278,0.444,-0.0556], [0.778,0.583,0.0833],
[0.5,0.465,-0.0347], [0.778,0.583,0.0833], [0.5,0.444,-0.0556],
[0.778,0.583,0.0833], [0.778,0.583,0.0833], [0.778,0.583,0.0833],
[0.778,0.583,0.0833], [0.778,0.583,0.0833], [0.778,0.583,0.0833],
[0.778,0.583,0.0833], [1,0.694,0.194], [0.5,0.444,-0.0556], [0.5,0.444,-0.0556],
[0.778,0.464,-0.0363], [0.778,0.464,-0.0363], [0.778,0.636,0.136],
[0.778,0.636,0.136], [0.778,0.636,0.136], [0.778,0.636,0.136],
[0.778,0.636,0.136], [0.778,0.636,0.136], [0.778,0.367,-0.133],
[0.778,0.483,-0.0169], [0.778,0.539,0.0391], [0.778,0.539,0.0391],
[1,0.539,0.0391], [1,0.539,0.0391], [0.778,0.539,0.0391], [0.778,0.539,0.0391],
[1,0.367,-0.133], [1,0.367,-0.133], [0.5,0.694,0.194], [0.5,0.694,0.194],
[1,0.367,-0.133], [1,0.694,0.194], [1,0.694,0.194], [0.778,0.464,-0.0363],
[1,0.367,-0.133], [1,0.367,-0.133], [0.611,0.694,0.194], [0.611,0.694,0.194],
[1,0.367,-0.133], [1,0.694,0.194], [1,0.694,0.194], [0.778,0.431],
[0.275,0.556], [1,0.431], [0.667,0.539,0.0391], [0.667,0.539,0.0391],
[0.889,0.694,0.194], [0.889,0.694,0.194], [0,0.694,0.194], [0,0.367,-0.133],
[0.556,0.694], [0.556,0.694], [0.667,0.431], [0.5,0.75,0.0556],
[0.722,0.694], [0.722,0.694], [0.778,0.694], [0.778,0.694],
[0.611,0.694], [0.798,0.683,0,{krn: {'48': 0.194}}],
[0.657,0.683,0,{ic: 0.0304, krn: {'48': 0.139}}],
[0.527,0.683,0,{ic: 0.0583, krn: {'48': 0.139}}],
[0.771,0.683,0,{ic: 0.0278, krn: {'48': 0.0833}}],
[0.528,0.683,0,{ic: 0.0894, krn: {'48': 0.111}}],
[0.719,0.683,0,{ic: 0.0993, krn: {'48': 0.111}}],
[0.595,0.683,0.0972,{ic: 0.0593, krn: {'48': 0.111}}],
[0.845,0.683,0,{ic: 0.00965, krn: {'48': 0.111}}],
[0.545,0.683,0,{ic: 0.0738, krn: {'48': 0.0278}}],
[0.678,0.683,0.0972,{ic: 0.185, krn: {'48': 0.167}}],
[0.762,0.683,0,{ic: 0.0144, krn: {'48': 0.0556}}],
[0.69,0.683,0,{krn: {'48': 0.139}}], [1.2,0.683,0,{krn: {'48': 0.139}}],
[0.82,0.683,0,{ic: 0.147, krn: {'48': 0.0833}}],
[0.796,0.683,0,{ic: 0.0278, krn: {'48': 0.111}}],
[0.696,0.683,0,{ic: 0.0822, krn: {'48': 0.0833}}],
[0.817,0.683,0.0972,{krn: {'48': 0.111}}],
[0.848,0.683,0,{krn: {'48': 0.0833}}],
[0.606,0.683,0,{ic: 0.075, krn: {'48': 0.139}}],
[0.545,0.683,0,{ic: 0.254, krn: {'48': 0.0278}}],
[0.626,0.683,0,{ic: 0.0993, krn: {'48': 0.0833}}],
[0.613,0.683,0,{ic: 0.0822, krn: {'48': 0.0278}}],
[0.988,0.683,0,{ic: 0.0822, krn: {'48': 0.0833}}],
[0.713,0.683,0,{ic: 0.146, krn: {'48': 0.139}}],
[0.668,0.683,0.0972,{ic: 0.0822, krn: {'48': 0.0833}}],
[0.725,0.683,0,{ic: 0.0794, krn: {'48': 0.139}}],
[0.667,0.556], [0.667,0.556], [0.667,0.556], [0.667,0.556], [0.667,0.556],
[0.611,0.694], [0.611,0.694], [0.444,0.75,0.25], [0.444,0.75,0.25],
[0.444,0.75,0.25], [0.444,0.75,0.25], [0.5,0.75,0.25], [0.5,0.75,0.25],
[0.389,0.75,0.25], [0.389,0.75,0.25], [0.278,0.75,0.25], [0.5,0.75,0.25],
[0.5,0.75,0.25], [0.611,0.75,0.25], [0.5,0.75,0.25], [0.278,0.694,0.194],
[0.833,0.04,0.96], [0.75,0.683], [0.833,0.683], [0.417,0.694,0.194,{ic: 0.111}],
[0.667,0.556], [0.667,0.556], [0.778,0.636,0.136], [0.778,0.636,0.136],
[0.444,0.694,0.194], [0.444,0.694,0.194], [0.444,0.694,0.194],
[0.611,0.694,0.194], [0.778,0.694,0.13], [0.778,0.694,0.13],
[0.778,0.694,0.13], [0.778,0.694,0.13]
],
cmex10: [
[0.458,0.04,1.16,{n: 16}], [0.458,0.04,1.16,{n: 17}],
[0.417,0.04,1.16,{n: 104}], [0.417,0.04,1.16,{n: 105}],
[0.472,0.04,1.16,{n: 106}], [0.472,0.04,1.16,{n: 107}],
[0.472,0.04,1.16,{n: 108}], [0.472,0.04,1.16,{n: 109}],
[0.583,0.04,1.16,{n: 110}], [0.583,0.04,1.16,{n: 111}],
[0.472,0.04,1.16,{n: 68}], [0.472,0.04,1.16,{n: 69}],
[0.333,0,0.6,{delim: {rep: 12}}], [0.556,0,0.6,{delim: {rep: 13}}],
[0.578,0.04,1.16,{n: 46}], [0.578,0.04,1.16,{n: 47}],
[0.597,0.04,1.76,{n: 18}], [0.597,0.04,1.76,{n: 19}],
[0.736,0.04,2.36,{n: 32}], [0.736,0.04,2.36,{n: 33}],
[0.528,0.04,2.36,{n: 34}], [0.528,0.04,2.36,{n: 35}],
[0.583,0.04,2.36,{n: 36}], [0.583,0.04,2.36,{n: 37}],
[0.583,0.04,2.36,{n: 38}], [0.583,0.04,2.36,{n: 39}],
[0.75,0.04,2.36,{n: 40}], [0.75,0.04,2.36,{n: 41}],
[0.75,0.04,2.36,{n: 42}], [0.75,0.04,2.36,{n: 43}],
[1.04,0.04,2.36,{n: 44}], [1.04,0.04,2.36,{n: 45}],
[0.792,0.04,2.96,{n: 48}], [0.792,0.04,2.96,{n: 49}],
[0.583,0.04,2.96,{n: 50}], [0.583,0.04,2.96,{n: 51}],
[0.639,0.04,2.96,{n: 52}], [0.639,0.04,2.96,{n: 53}],
[0.639,0.04,2.96,{n: 54}], [0.639,0.04,2.96,{n: 55}],
[0.806,0.04,2.96,{n: 56}], [0.806,0.04,2.96,{n: 57}],
[0.806,0.04,2.96], [0.806,0.04,2.96],
[1.28,0.04,2.96], [1.28,0.04,2.96],
[0.811,0.04,1.76,{n: 30}], [0.811,0.04,1.76,{n: 31}],
[0.875,0.04,1.76,{delim: {top: 48, bot: 64, rep: 66}}],
[0.875,0.04,1.76,{delim: {top: 49, bot: 65, rep: 67}}],
[0.667,0.04,1.76,{delim: {top: 50, bot: 52, rep: 54}}],
[0.667,0.04,1.76,{delim: {top: 51, bot: 53, rep: 55}}],
[0.667,0.04,1.76,{delim: {bot: 52, rep: 54}}],
[0.667,0.04,1.76,{delim: {bot: 53, rep: 55}}],
[0.667,0,0.6,{delim: {top: 50, rep: 54}}],
[0.667,0,0.6,{delim: {top: 51, rep: 55}}],
[0.889,0,0.9,{delim: {top: 56, mid: 60, bot: 58, rep: 62}}],
[0.889,0,0.9,{delim: {top: 57, mid: 61, bot: 59, rep: 62}}],
[0.889,0,0.9,{delim: {top: 56, bot: 58, rep: 62}}],
[0.889,0,0.9,{delim: {top: 57, bot: 59, rep: 62}}],
[0.889,0,1.8,{delim: {rep: 63}}],
[0.889,0,1.8,{delim: {rep: 119}}],
[0.889,0,0.3,{delim: {rep: 62}}],
[0.667,0,0.6,{delim: {top: 120, bot: 121, rep: 63}}],
[0.875,0.04,1.76,{delim: {top: 56, bot: 59, rep: 62}}],
[0.875,0.04,1.76,{delim: {top: 57, bot: 58, rep: 62}}],
[0.875,0,0.6,{delim: {rep: 66}}], [0.875,0,0.6,{delim: {rep: 67}}],
[0.611,0.04,1.76,{n: 28}], [0.611,0.04,1.76,{n: 29}],
[0.833,0,1,{n: 71}], [1.11,0.1,1.5], [0.472,0,1.11,{ic: 0.194, n: 73}],
[0.556,0,2.22,{ic: 0.444}], [1.11,0,1,{n: 75}], [1.51,0.1,1.5],
[1.11,0,1,{n: 77}], [1.51,0.1,1.5], [1.11,0,1,{n: 79}], [1.51,0.1,1.5],
[1.06,0,1,{n: 88}], [0.944,0,1,{n: 89}], [0.472,0,1.11,{ic: 0.194, n: 90}],
[0.833,0,1,{n: 91}], [0.833,0,1,{n: 92}], [0.833,0,1,{n: 93}],
[0.833,0,1,{n: 94}], [0.833,0,1,{n: 95}], [1.44,0.1,1.5],
[1.28,0.1,1.5], [0.556,0,2.22,{ic: 0.444}], [1.11,0.1,1.5],
[1.11,0.1,1.5], [1.11,0.1,1.5], [1.11,0.1,1.5], [1.11,0.1,1.5],
[0.944,0,1,{n: 97}], [1.28,0.1,1.5], [0.556,0.722,0,{n: 99}],
[1,0.75,0,{n: 100}], [1.44,0.75], [0.556,0.722,0,{n: 102}],
[1,0.75,0,{n: 103}], [1.44,0.75], [0.472,0.04,1.76,{n: 20}],
[0.472,0.04,1.76,{n: 21}], [0.528,0.04,1.76,{n: 22}],
[0.528,0.04,1.76,{n: 23}], [0.528,0.04,1.76,{n: 24}],
[0.528,0.04,1.76,{n: 25}], [0.667,0.04,1.76,{n: 26}],
[0.667,0.04,1.76,{n: 27}],
[1,0.04,1.16,{n: 113}], [1,0.04,1.76,{n: 114}], [1,0.04,2.36,{n: 115}],
[1,0.04,2.96,{n: 116}], [1.06,0,1.8,{delim: {top: 118, bot: 116, rep: 117}}],
[1.06,0,0.6], [1.06,0.04,0.56],
[0.778,0,0.6,{delim: {top: 126, bot: 127, rep: 119}}],
[0.667,0,0.6,{delim: {top: 120, rep: 63}}],
[0.667,0,0.6,{delim: {bot: 121, rep: 63}}],
[0.45,0.12], [0.45,0.12], [0.45,0.12], [0.45,0.12],
[0.778,0,0.6,{delim: {top: 126, rep: 119}}],
[0.778,0,0.6,{delim: {bot: 127, rep: 119}}]
],
cmti10: [
[0.627,0.683,0,{ic: 0.133}], [0.818,0.683], [0.767,0.683,0,{ic: 0.094}],
[0.692,0.683], [0.664,0.683,0,{ic: 0.153}], [0.743,0.683,0,{ic: 0.164}],
[0.716,0.683,0,{ic: 0.12}], [0.767,0.683,0,{ic: 0.111}],
[0.716,0.683,0,{ic: 0.0599}], [0.767,0.683,0,{ic: 0.111}],
[0.716,0.683,0,{ic: 0.103}],
[0.613,0.694,0.194,{ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}}],
[0.562,0.694,0.194,{ic: 0.103}], [0.588,0.694,0.194,{ic: 0.103}],
[0.882,0.694,0.194,{ic: 0.103}], [0.894,0.694,0.194,{ic: 0.103}],
[0.307,0.431,0,{ic: 0.0767}], [0.332,0.431,0.194,{ic: 0.0374}],
[0.511,0.694], [0.511,0.694,0,{ic: 0.0969}], [0.511,0.628,0,{ic: 0.083}],
[0.511,0.694,0,{ic: 0.108}], [0.511,0.562,0,{ic: 0.103}], [0.831,0.694],
[0.46,0,0.17], [0.537,0.694,0.194,{ic: 0.105}], [0.716,0.431,0,{ic: 0.0751}],
[0.716,0.431,0,{ic: 0.0751}], [0.511,0.528,0.0972,{ic: 0.0919}],
[0.883,0.683,0,{ic: 0.12}], [0.985,0.683,0,{ic: 0.12}],
[0.767,0.732,0.0486,{ic: 0.094}],
[0.256,0.431,0,{krn: {'108': -0.256, '76': -0.321}}],
[0.307,0.694,0,{ic: 0.124, lig: {'96': 60}}],
[0.514,0.694,0,{ic: 0.0696}], [0.818,0.694,0.194,{ic: 0.0662}],
[0.769,0.694], [0.818,0.75,0.0556,{ic: 0.136}],
[0.767,0.694,0,{ic: 0.0969}],
[0.307,0.694,0,{ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}}],
[0.409,0.75,0.25,{ic: 0.162}], [0.409,0.75,0.25,{ic: 0.0369}],
[0.511,0.75,0,{ic: 0.149}], [0.767,0.562,0.0567,{ic: 0.0369}],
[0.307,0.106,0.194], [0.358,0.431,0,{ic: 0.0283, lig: {'45': 123}}],
[0.307,0.106], [0.511,0.75,0.25,{ic: 0.162}],
[0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
[0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
[0.511,0.644,0.194,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
[0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0.194,{ic: 0.136}],
[0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
[0.307,0.431,0,{ic: 0.0582}], [0.307,0.431,0.194,{ic: 0.0582}],
[0.307,0.5,0.194,{ic: 0.0756}], [0.767,0.367,-0.133,{ic: 0.0662}],
[0.511,0.5,0.194], [0.511,0.694,0,{ic: 0.122, lig: {'96': 62}}],
[0.767,0.694,0,{ic: 0.096}],
[0.743,0.683,0,{krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.704,0.683,0,{ic: 0.103}], [0.716,0.683,0,{ic: 0.145}],
[0.755,0.683,0,{ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}],
[0.678,0.683,0,{ic: 0.12}],
[0.653,0.683,0,{ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
[0.774,0.683,0,{ic: 0.0872}], [0.743,0.683,0,{ic: 0.164}],
[0.386,0.683,0,{ic: 0.158}], [0.525,0.683,0,{ic: 0.14}],
[0.769,0.683,0,{ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
[0.627,0.683,0,{krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.897,0.683,0,{ic: 0.164}], [0.743,0.683,0,{ic: 0.164}],
[0.767,0.683,0,{ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}],
[0.678,0.683,0,{ic: 0.103, krn: {'65': -0.0767}}],
[0.767,0.683,0.194,{ic: 0.094}],
[0.729,0.683,0,{ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.562,0.683,0,{ic: 0.12}],
[0.716,0.683,0,{ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}],
[0.743,0.683,0,{ic: 0.164}],
[0.743,0.683,0,{ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
[0.999,0.683,0,{ic: 0.184, krn: {'65': -0.0767}}],
[0.743,0.683,0,{ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
[0.743,0.683,0,{ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}],
[0.613,0.683,0,{ic: 0.145}], [0.307,0.75,0.25,{ic: 0.188}],
[0.514,0.694,0,{ic: 0.169}], [0.307,0.75,0.25,{ic: 0.105}],
[0.511,0.694,0,{ic: 0.0665}], [0.307,0.668,0,{ic: 0.118}],
[0.307,0.694,0,{ic: 0.124, lig: {'96': 92}}], [0.511,0.431,0,{ic: 0.0767}],
[0.46,0.694,0,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.46,0.431,0,{ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.511,0.694,0,{ic: 0.103, krn: {'108': 0.0511}}],
[0.46,0.431,0,{ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.307,0.694,0.194,{ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}}],
[0.46,0.431,0.194,{ic: 0.0885}], [0.511,0.694,0,{ic: 0.0767}],
[0.307,0.655,0,{ic: 0.102}], [0.307,0.655,0.194,{ic: 0.145}],
[0.46,0.694,0,{ic: 0.108}], [0.256,0.694,0,{ic: 0.103, krn: {'108': 0.0511}}],
[0.818,0.431,0,{ic: 0.0767}], [0.562,0.431,0,{ic: 0.0767, krn: {'39': -0.102}}],
[0.511,0.431,0,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.511,0.431,0.194,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.46,0.431,0.194,{ic: 0.0885}],
[0.422,0.431,0,{ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
[0.409,0.431,0,{ic: 0.0821}], [0.332,0.615,0,{ic: 0.0949}],
[0.537,0.431,0,{ic: 0.0767}], [0.46,0.431,0,{ic: 0.108}],
[0.664,0.431,0,{ic: 0.108, krn: {'108': 0.0511}}],
[0.464,0.431,0,{ic: 0.12}], [0.486,0.431,0.194,{ic: 0.0885}],
[0.409,0.431,0,{ic: 0.123}], [0.511,0.431,0,{ic: 0.0921, lig: {'45': 124}}],
[1.02,0.431,0,{ic: 0.0921}], [0.511,0.694,0,{ic: 0.122}],
[0.511,0.668,0,{ic: 0.116}], [0.511,0.668,0,{ic: 0.105}]
],
cmbx10: [
[0.692,0.686], [0.958,0.686], [0.894,0.686], [0.806,0.686],
[0.767,0.686], [0.9,0.686], [0.831,0.686], [0.894,0.686],
[0.831,0.686], [0.894,0.686], [0.831,0.686],
[0.671,0.694,0,{ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 14, '108': 15}}],
[0.639,0.694], [0.639,0.694], [0.958,0.694], [0.958,0.694],
[0.319,0.444], [0.351,0.444,0.194], [0.575,0.694], [0.575,0.694],
[0.575,0.632], [0.575,0.694], [0.575,0.596], [0.869,0.694],
[0.511,0,0.17], [0.597,0.694], [0.831,0.444], [0.894,0.444],
[0.575,0.542,0.0972], [1.04,0.686], [1.17,0.686], [0.894,0.735,0.0486],
[0.319,0.444,0,{krn: {'108': -0.319, '76': -0.378}}],
[0.35,0.694,0,{lig: {'96': 60}}], [0.603,0.694], [0.958,0.694,0.194],
[0.575,0.75,0.0556], [0.958,0.75,0.0556], [0.894,0.694],
[0.319,0.694,0,{krn: {'63': 0.128, '33': 0.128}, lig: {'39': 34}}],
[0.447,0.75,0.25], [0.447,0.75,0.25], [0.575,0.75], [0.894,0.633,0.133],
[0.319,0.156,0.194], [0.383,0.444,0,{lig: {'45': 123}}],
[0.319,0.156], [0.575,0.75,0.25],
[0.575,0.644], [0.575,0.644], [0.575,0.644], [0.575,0.644],
[0.575,0.644], [0.575,0.644], [0.575,0.644], [0.575,0.644],
[0.575,0.644], [0.575,0.644], [0.319,0.444], [0.319,0.444,0.194],
[0.35,0.5,0.194], [0.894,0.391,-0.109], [0.543,0.5,0.194],
[0.543,0.694,0,{lig: {'96': 62}}],
[0.894,0.694],
[0.869,0.686,0,{krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
[0.818,0.686], [0.831,0.686],
[0.882,0.686,0,{krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}}],
[0.756,0.686],
[0.724,0.686,0,{krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
[0.904,0.686], [0.9,0.686], [0.436,0.686,0,{krn: {'73': 0.0319}}],
[0.594,0.686],
[0.901,0.686,0,{krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
[0.692,0.686,0,{krn: {'84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
[1.09,0.686], [0.9,0.686],
[0.864,0.686,0,{krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}}],
[0.786,0.686,0,{krn: {'65': -0.0958, '111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}}],
[0.864,0.686,0.194],
[0.862,0.686,0,{krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
[0.639,0.686],
[0.8,0.686,0,{krn: {'121': -0.0319, '101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}}],
[0.885,0.686],
[0.869,0.686,0,{ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
[1.19,0.686,0,{ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
[0.869,0.686,0,{krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
[0.869,0.686,0,{ic: 0.0287, krn: {'101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}}],
[0.703,0.686], [0.319,0.75,0.25], [0.603,0.694], [0.319,0.75,0.25],
[0.575,0.694], [0.319,0.694],
[0.319,0.694,0,{lig: {'96': 92}}],
[0.559,0.444,0,{krn: {'118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
[0.639,0.694,0,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
[0.511,0.444,0,{krn: {'104': -0.0319, '107': -0.0319}}],
[0.639,0.694], [0.527,0.444],
[0.351,0.694,0,{ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 12, '102': 11, '108': 13}}],
[0.575,0.444,0.194,{ic: 0.016, krn: {'106': 0.0319}}],
[0.639,0.694,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
[0.319,0.694], [0.351,0.694,0.194],
[0.607,0.694,0,{krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
[0.319,0.694],
[0.958,0.444,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
[0.639,0.444,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
[0.575,0.444,0,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
[0.639,0.444,0.194,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
[0.607,0.444,0.194], [0.474,0.444], [0.454,0.444],
[0.447,0.635,0,{krn: {'121': -0.0319, '119': -0.0319}}],
[0.639,0.444,0,{krn: {'119': -0.0319}}],
[0.607,0.444,0,{ic: 0.016, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
[0.831,0.444,0,{ic: 0.016, krn: {'101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
[0.607,0.444],
[0.607,0.444,0.194,{ic: 0.016, krn: {'111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}}],
[0.511,0.444], [0.575,0.444,0,{ic: 0.0319, lig: {'45': 124}}],
[1.15,0.444,0,{ic: 0.0319}], [0.575,0.694], [0.575,0.694], [0.575,0.694]
]
};
/***************************************************************************/
/*
* Implement image-based fonts for fallback method
*/
jsMath.Img = {
// font sizes available
fonts: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249, 298, 358, 430],
// em widths for the various font size directories
w: {'50': 6.9, '60': 8.3, '70': 9.7, '85': 11.8, '100': 13.9,
'120': 16.7, '144': 20.0, '173': 24.0, '207': 28.8, '249': 34.6,
'298': 41.4, '358': 49.8, '430': 59.8},
best: 4, // index of best font size in the fonts list
update: {}, // fonts to update (see UpdateFonts below)
factor: 1, // factor by which to shrink images (for better printing)
loaded: 0, // image fonts are loaded
// add characters to be drawn using images
SetFont: function (change) {
for (var font in change) {
if (!this.update[font]) {this.update[font] = []}
this.update[font] = this.update[font].concat(change[font]);
}
},
/*
* Called by the exta-font definition files to add an image font
* into the mix
*/
AddFont: function (size,def) {
if (!jsMath.Img[size]) {jsMath.Img[size] = {}};
jsMath.Add(jsMath.Img[size],def);
},
/*
* Update font(s) to use image data rather than native fonts
* It looks in the jsMath.Img.update array to find the names
* of the fonts to udpate, and the arrays of character codes
* to set (or 'all' to change every character);
*/
UpdateFonts: function () {
var change = this.update; if (!this.loaded) return;
var best = this[jsMath.Img.fonts[this.best]];
for (var font in change) {
for (var i = 0; i < change[font].length; i++) {
var c = change[font][i];
if (c == 'all') {for (c in jsMath.TeX[font]) {jsMath.TeX[font][c].img = {}}}
else {jsMath.TeX[font][c].img = {}}
}
}
this.update = {};
},
/*
* Find the font size that best fits our current font
* (this is the directory name for the img files used
* in some fallback modes).
*/
BestSize: function () {
var w = jsMath.em * this.factor;
var m = this.w[this.fonts[0]];
for (var i = 1; i < this.fonts.length; i++) {
if (w < (this.w[this.fonts[i]] + 2*m) / 3) {return i-1}
m = this.w[this.fonts[i]];
}
return i-1;
},
/*
* Get the scaling factor for the image fonts
*/
Scale: function () {
if (!this.loaded) return;
this.best = this.BestSize();
this.em = jsMath.Img.w[this.fonts[this.best]];
this.scale = (jsMath.em/this.em);
if (Math.abs(this.scale - 1) < .12) {this.scale = 1}
},
/*
* Get URL to directory for given font and size, based on the
* user's alpha/plain setting
*/
URL: function (name,size,C) {
var type = (jsMath.Controls.cookie.alpha) ? '/alpha/': '/plain/';
if (C == null) {C = "def.js"} else {C = 'char'+C+'.png'}
if (size != "") {size += '/'}
return this.root+name+type+size+C;
},
/*
* Laod the data for an image font
*/
LoadFont: function (name) {
if (!this.loaded) this.Init();
jsMath.Setup.Script(this.URL(name,""));
},
/*
* Setup for print mode, and create the hex code table
*/
Init: function () {
if (jsMath.Controls.cookie.print) {
jsMath.Controls.cookie.print = 0;
this.factor *= 3;
if (jsMath.window.location.protocol != 'file:') {jsMath.Controls.SetCookie(0)}
if (jsMath.Browser.alphaPrintBug) {jsMath.Controls.cookie.alpha = 0}
}
var codes = '0123456789ABCDEF';
this.HexCode = [];
for (var i = 0; i < 128; i++) {
var h = Math.floor(i/16); var l = i - 16*h;
this.HexCode[i] = codes.charAt(h)+codes.charAt(l);
}
this.loaded = 1;
}
};
/***************************************************************************/
/*
* jsMath.HTML handles creation of most of the HTML needed for
* presenting mathematics in HTML pages.
*/
jsMath.HTML = {
/*
* Produce a string version of a measurement in ems,
* showing only a limited number of digits, and
* using 0 when the value is near zero.
*/
Em: function (m) {
var n = 5; if (m < 0) {n++}
if (Math.abs(m) < .000001) {m = 0}
var s = String(m); s = s.replace(/(\.\d\d\d).+/,'$1');
return s+'em'
},
/*
* Create a horizontal space of width w
*/
Spacer: function (w) {
if (w == 0) {return ''};
return '<span class="spacer" style="margin-left:'+this.Em(w)+'"></span>';
},
/*
* Create a blank rectangle of the given size
* If the height is small, it is converted to pixels so that it
* will not disappear at small font sizes.
*/
Blank: function (w,h,d,isRule) {
var backspace = ''; var style = ''
if (isRule) {
style += 'border-left:'+this.Em(w)+' solid;';
if (jsMath.Browser.widthAddsBorder) {w = 0};
}
if (w == 0) {
if (jsMath.Browser.blankWidthBug) {
style += 'width:1px;';
backspace = '<span class="spacer" style="margin-right:-1px"></span>'
}
} else {style += 'width:'+this.Em(w)+';'}
if (d == null) {d = 0}
if (h) {
var H = this.Em(h+d);
if (isRule && h > 0 && h*jsMath.em < 1.5) {H = "1px"; h = 1/jsMath.em}
style += 'height:'+H+';';
}
if (jsMath.Browser.mozInlineBlockBug) {d = -h}
if (jsMath.Browser.msieBorderBug && !isRule) {d -= jsMath.d}
if (d) {style += 'vertical-align:'+this.Em(-d)}
return backspace+'<span class="blank" style="'+style+'"></span>';
},
/*
* Create a rule line for fractions, etc.
*/
Rule: function (w,h) {
if (h == null) {h = jsMath.TeX.default_rule_thickness}
return this.Blank(w,h,0,1);
},
/*
* Add a <SPAN> tag to activate a specific CSS class
*/
Class: function (tclass,html) {
return '<span class="'+tclass+'">'+html+'</span>';
},
/*
* Use a <SPAN> to place some HTML at a specific position.
* (This can be replaced by the ones below to overcome
* some browser-specific bugs.)
*/
Place: function (html,x,y) {
if (Math.abs(x) < .0001) {x = 0}
if (Math.abs(y) < .0001) {y = 0}
if (x || y) {
var span = '<span style="position: relative;';
if (x) {span += ' margin-left:'+this.Em(x)+';'}
if (y) {span += ' top:'+this.Em(-y)+';'}
html = span + '">' + html + '</span>';
}
return html;
},
/*
* For MSIE on Windows, backspacing must be done in a separate
* <SPAN>, otherwise the contents will be clipped. Netscape
* also doesn't combine vertical and horizontal spacing well.
* Here the x and y positioning are done in separate <SPAN> tags
*/
PlaceSeparateSkips: function (html,x,y) {
if (Math.abs(x) < .0001) {x = 0}
if (Math.abs(y) < .0001) {y = 0}
if (y) {html = '<span style="position: relative; top:'+this.Em(-y)+';'
+ '">' + html + '</span>'}
if (x) {html = this.Spacer(x) + html}
return html;
},
/*
* Place a SPAN with absolute coordinates
*/
PlaceAbsolute: function (html,x,y) {
if (Math.abs(x) < .0001) {x = 0}
if (Math.abs(y) < .0001) {y = 0}
html = '<span style="position:absolute; left:'+this.Em(x)+'; '
+ 'top:'+this.Em(y)+';">' + html + ' </span>';
// space normalizes line height in script styles
return html;
},
Absolute: function(html,w,h,d,y,H) {
if (y != "none") {
if (Math.abs(y) < .0001) {y = 0}
html = '<span style="position:absolute; '
+ 'top:'+jsMath.HTML.Em(y)+'; left:0em;">'
+ html + ' ' // space normalizes line height in script styles
+ '</span>';
}
if (d == "none") {d = 0}
html += this.Blank(w,h-d,d);
if (jsMath.Browser.msieAbsoluteBug) { // for MSIE (Mac)
html = '<span style="position:relative;">' + html + '</span>';
}
html = '<span style="position:relative;'
+ ' width: '+jsMath.HTML.Em(w)+';' // for MSIE
+ ' height: '+jsMath.HTML.Em(H)+';' // for MSIE
+ jsMath.Browser.msieInlineBlockFix // for MSIE
+ '">'
+ html
+ '</span>';
return html;
}
};
/***************************************************************************/
/*
* jsMath.Box handles TeX's math boxes and jsMath's equivalent of hboxes.
*/
jsMath.Box = function (format,text,w,h,d) {
if (d == null) {d = jsMath.d}
this.type = 'typeset';
this.w = w; this.h = h; this.d = d; this.bh = h; this.bd = d;
this.x = 0; this.y = 0;
this.html = text; this.format = format;
};
jsMath.Add(jsMath.Box,{
defaultH: 0, // default height for characters with none specified
/*
* An empty box
*/
Null: new jsMath.Box('null','',0,0,0),
/*
* A box containing only text whose class and style haven't been added
* yet (so that we can combine ones with the same styles). It gets
* the text dimensions, if needed. (In general, this has been
* replaced by TeX() below, but is still used in fallback mode.)
*/
Text: function (text,tclass,style,size,a,d) {
var html = jsMath.Typeset.AddClass(tclass,text);
html = jsMath.Typeset.AddStyle(style,size,html);
var BB = jsMath.EmBoxFor(html); var TeX = jsMath.Typeset.TeX(style,size);
var bd = ((tclass == 'cmsy10' || tclass == 'cmex10')? BB.h-TeX.h: TeX.d*BB.h/TeX.hd);
var box = new jsMath.Box('text',text,BB.w,BB.h-bd,bd);
box.style = style; box.size = size; box.tclass = tclass;
if (d != null) {box.d = d*TeX.scale} else {box.d = 0}
if (a == null || a == 1) {box.h = .9*TeX.M_height}
else {box.h = 1.1*TeX.x_height + TeX.scale*a}
return box;
},
/*
* Produce a box containing a given TeX character from a given font.
* The box is a text box (like the ones above), so that characters from
* the same font can be combined.
*/
TeX: function (C,font,style,size) {
var c = jsMath.TeX[font][C];
if (c.d == null) {c.d = 0}; if (c.h == null) {c.h = 0}
if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
var scale = jsMath.Typeset.TeX(style,size).scale;
var h = c.h + jsMath.TeX[font].dh
var box = new jsMath.Box('text',c.c,c.w*scale,h*scale,c.d*scale);
box.style = style; box.size = size;
if (c.tclass) {
box.tclass = c.tclass;
if (c.img) {box.bh = c.img.bh; box.bd = c.img.bd}
else {box.bh = scale*jsMath.h; box.bd = scale*jsMath.d}
} else {
box.tclass = font;
box.bh = scale*jsMath.TeX[font].h;
box.bd = scale*jsMath.TeX[font].d;
if (jsMath.Browser.msieFontBug && box.html.match(/&#/)) {
// hack to avoid font changing back to the default
// font when a unicode reference is not followed
// by a letter or number
box.html += '<span style="display: none">x</span>';
}
}
return box;
},
/*
* In fallback modes, handle the fact that we don't have the
* sizes of the characters precomputed
*/
TeXfallback: function (C,font,style,size) {
c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
if (c.img != null) {return this.TeXnonfallback(C,font,style,size)}
if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
var scale = jsMath.Typeset.TeX(style,size).scale;
if (c.bh != null) {
box.bh = c.bh*scale;
box.bd = c.bd*scale;
} else {
var h = box.bd+box.bh;
var html = jsMath.Typeset.AddClass(box.tclass,box.html);
html = jsMath.Typeset.AddStyle(style,size,html);
box.bd = jsMath.EmBoxFor(html+jsMath.HTML.Blank(1,h)).h - h;
box.bh = h - box.bd;
if (scale == 1) {c.bh = box.bh; c.bd = box.bd}
}
if (jsMath.msieFontBug && box.html.match(/&#/))
{box.html += '<span style="display:none">x</span>'}
return box;
},
/*
* Set the character's string to the appropriate image file
*/
TeXIMG: function (font,C,size) {
var c = jsMath.TeX[font][C];
if (c.img.size != null && c.img.size == size &&
c.img.best != null && c.img.best == jsMath.Img.best) return;
var mustScale = (jsMath.Img.scale != 1);
var id = jsMath.Img.best + size - 4;
if (id < 0) {id = 0; mustScale = 1} else
if (id >= jsMath.Img.fonts.length) {id = jsMath.Img.fonts.length-1; mustScale = 1}
var imgFont = jsMath.Img[jsMath.Img.fonts[id]];
var img = imgFont[font][C];
var scale = 1/jsMath.Img.w[jsMath.Img.fonts[id]];
if (id != jsMath.Img.best + size - 4) {
if (c.w != null) {scale = c.w/img[0]} else {
scale *= jsMath.Img.fonts[size]/jsMath.Img.fonts[4]
* jsMath.Img.fonts[jsMath.Img.best]/jsMath.Img.fonts[id];
}
}
var w = img[0]*scale; var h = img[1]*scale; var d = -img[2]*scale; var v;
var wadjust = (c.w == null || Math.abs(c.w-w) < .01)? "" : " margin-right:"+jsMath.HTML.Em(c.w-w)+';';
var resize = ""; C = jsMath.Img.HexCode[C];
if (!mustScale && !jsMath.Controls.cookie.scaleImg) {
if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
{resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
resize += " width:"+(img[0]*jsMath.Browser.imgScale)+'px;'
v = -img[2]+'px';
} else {
if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
{resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
resize += " width:"+jsMath.HTML.Em(w*jsMath.Browser.imgScale)+';'
v = jsMath.HTML.Em(d);
}
var vadjust = (Math.abs(d) < .01 && !jsMath.Browser.valignBug)?
"": " vertical-align:"+v+';';
var URL = jsMath.Img.URL(font,jsMath.Img.fonts[id],C);
if (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha) {
c.c = '<img src="'+jsMath.blank+'" '
+ 'style="'+jsMath.Browser.msieCenterBugFix
+ resize + vadjust + wadjust
+ ' filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + "'"
+ URL + "', sizingMethod='scale'" + ');" />';
} else {
c.c = '<img src="'+URL+'" style="'+jsMath.Browser.msieCenterBugFix
+ resize + vadjust + wadjust + '" />';
}
c.tclass = "normal";
c.img.bh = h+d; c.img.bd = -d;
c.img.size = size; c.img.best = jsMath.Img.best;
},
/*
* A box containing a spacer of a specific width
*/
Space: function (w) {
return new jsMath.Box('html',jsMath.HTML.Spacer(w),w,0,0);
},
/*
* A box containing a horizontal rule
*/
Rule: function (w,h) {
if (h == null) {h = jsMath.TeX.default_rule_thickness}
var html = jsMath.HTML.Rule(w,h);
return new jsMath.Box('html',html,w,h,0);
},
/*
* Get a character from a TeX font, and make sure that it has
* its metrics specified.
*/
GetChar: function (code,font) {
var c = jsMath.TeX[font][code];
if (c.img != null) {this.TeXIMG(font,code,4)}
if (c.tclass == null) {c.tclass = font}
if (!c.computedW) {
c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w;
if (c.h == null) {c.h = jsMath.Box.defaultH}; if (c.d == null) {c.d = 0}
c.computedW = 1;
}
return c;
},
/*
* Locate the TeX delimiter character that matches a given height.
* Return the character, font, style and actual height used.
*/
DelimBestFit: function (H,c,font,style) {
if (c == 0 && font == 0) return null;
var C; var h; font = jsMath.TeX.fam[font];
var isSS = (style.charAt(1) == 'S');
var isS = (style.charAt(0) == 'S');
while (c != null) {
C = jsMath.TeX[font][c];
if (C.h == null) {C.h = jsMath.Box.defaultH}; if (C.d == null) {C.d = 0}
h = C.h+C.d;
if (C.delim) {return [c,font,'',H]}
if (isSS && .5*h >= H) {return [c,font,'SS',.5*h]}
if (isS && .7*h >= H) {return [c,font,'S',.7*h]}
if (h >= H || C.n == null) {return [c,font,'T',h]}
c = C.n;
}
return null;
},
/*
* Create the HTML needed for a stretchable delimiter of a given height,
* either centered or not. This version uses relative placement (i.e.,
* backspaces, not line-breaks). This works with more browsers, but
* if the font size changes, the backspacing may not be right, so the
* delimiters may become jagged.
*/
DelimExtendRelative: function (H,c,font,a,nocenter) {
var C = jsMath.TeX[font][c];
var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
var rep = this.GetChar(C.delim.rep,font);
var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
var w = rep.w; var h = rep.h+rep.d
var y; var dx;
if (C.delim.mid) {// braces
var mid = this.GetChar(C.delim.mid,font);
var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d)-(bot.h+bot.d))/(2*(rep.h+rep.d)));
H = 2*n*(rep.h+rep.d) + (top.h+top.d) + (mid.h+mid.d) + (bot.h+bot.d);
if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
+ jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(top.w+bot.w)/2,y-(H-bot.d))
+ jsMath.HTML.Place(jsMath.Typeset.AddClass(mid.tclass,mid.c),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);
dx = (w-mid.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
if (dx) {html += jsMath.HTML.Spacer(dx)}
y -= top.h+top.d + rep.h;
for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
y -= H/2 - rep.h/2;
for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
} else {// everything else
var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d))/(rep.h+rep.d));
// make sure two-headed arrows have an extender
if (top.h+top.d < .9*(rep.h+rep.d)) {n = Math.max(1,n)}
H = n*(rep.h+rep.d) + (top.h+top.d) + (bot.h+bot.d);
if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
dx = (w-top.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
if (dx) {html += jsMath.HTML.Spacer(dx)}
y -= top.h+top.d + rep.h;
for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
html += jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(w+bot.w)/2,Y-(H-bot.d));
}
if (nocenter) {h = top.h} else {h = H/2+a}
var box = new jsMath.Box('html',html,rep.w,h,H-h);
box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
return box;
},
/*
* Create the HTML needed for a stretchable delimiter of a given height,
* either centered or not. This version uses absolute placement (i.e.,
* line-breaks, not backspacing). This gives more reliable results,
* but doesn't work with all browsers.
*/
DelimExtendAbsolute: function (H,c,font,a,nocenter) {
var Font = jsMath.TeX[font];
var C = Font[c];
var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
var rep = this.GetChar(C.delim.rep,font);
var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
if (C.delim.mid) {// braces
var mid = this.GetChar(C.delim.mid,font);
var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d-.05)-(bot.h+bot.d-.05))/(2*(rep.h+rep.d-.05)));
H = 2*n*(rep.h+rep.d-.05) + (top.h+top.d) + (mid.h+mid.d-.05) + (bot.h+bot.d-.05);
html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
var h = rep.h+rep.d - .05; var y = top.d-.05 + rep.h;
var ext = jsMath.Typeset.AddClass(font,rep.c)
for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(mid.tclass,mid.c),0,y+n*h-rep.h+mid.h);
y += n*h + mid.h+mid.d - .05;
for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
} else {// all others
var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d-.05))/(rep.h+rep.d-.05));
H = n*(rep.h+rep.d-.05) + (top.h+top.d) + (bot.h+bot.d-.05);
html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
var h = rep.h+rep.d-.05; var y = top.d-.05 + rep.h;
var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
}
var w = top.w;
if (nocenter) {h = top.h; y = 0} else {h = H/2 + a; y = h - top.h}
html = jsMath.HTML.Absolute(html,w,Font.h,"none",-y,top.h);
var box = new jsMath.Box('html',html,rep.w,h,H-h);
box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
return box;
},
/*
* Get the HTML for a given delimiter of a given height.
* It will return either a single character, if one exists, or the
* more complex HTML needed for a stretchable delimiter.
*/
Delimiter: function (H,delim,style,nocenter) {
var size = 4; //### pass this?
var TeX = jsMath.Typeset.TeX(style,size);
if (!delim) {return this.Space(TeX.nulldelimiterspace)}
var CFSH = this.DelimBestFit(H,delim[2],delim[1],style);
if (CFSH == null || CFSH[3] < H)
{CFSH = this.DelimBestFit(H,delim[4],delim[3],style)}
if (CFSH == null) {return this.Space(TeX.nulldelimiterspace)}
if (CFSH[2] == '')
{return this.DelimExtend(H,CFSH[0],CFSH[1],TeX.axis_height,nocenter)}
box = jsMath.Box.TeX(CFSH[0],CFSH[1],CFSH[2],size).Styled();
if (nocenter) {box.y = -jsMath.TeX[CFSH[1]].dh*TeX.scale}
else {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
if (Math.abs(box.y) < .0001) {box.y = 0}
if (box.y) {box = jsMath.Box.SetList([box],CFSH[2],size)}
return box;
},
/*
* Get a character by its TeX charcode, and make sure its width
* is specified.
*/
GetCharCode: function (code) {
var font = jsMath.TeX.fam[code[0]];
var Font = jsMath.TeX[font];
var c = Font[code[1]];
if (c.img != null) {this.TeXIMG(font,code[1],4)}
if (c.w == null) {c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w}
if (c.font == null) {c.font = font}
return c;
},
/*
* Add the class to the html, and use the font if there isn't one
* specified already
*/
AddClass: function (tclass,html,font) {
if (tclass == null) {tclass = font}
return jsMath.Typeset.AddClass(tclass,html);
},
/*
* Create the HTML for an alignment (e.g., array or matrix)
* Since the widths are not really accurate (they are based on pixel
* widths not the sub-pixel widths of the actual characters), there
* is some drift involved. We lay out the table column by column
* to help reduce the problem.
*
* ### still need to allow users to specify row and column attributes,
* and do things like \span and \multispan ###
*/
LayoutRelative: function (size,table,align,cspacing) {
if (align == null) {align = []}
if (cspacing == null) {cspacing = []}
// get row and column maximum dimensions
var scale = jsMath.sizes[size]/100;
var W = []; var H = []; var D = [];
var unset = -1000; var bh = unset; var bd = unset;
var i; var j; var row;
for (i = 0; i < table.length; i++) {
row = table[i]; H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
for (j = 0; j < row.length; j++) {
row[j] = row[j].Remeasured();
if (row[j].h > H[i]) {H[i] = row[j].h}
if (row[j].d > D[i]) {D[i] = row[j].d}
if (j >= W.length) {W[j] = row[j].w}
else if (row[j].w > W[j]) {W[j] = row[j].w}
if (row[j].bh > bh) {bh = row[j].bh}
if (row[j].bd > bd) {bd = row[j].bd}
}
}
if (bh == unset) {bh = 0}; if (bd == unset) {bd = 0}
// lay out the columns
var HD = (jsMath.hd-.01)*scale;
var html = ''; var pW = 0; var cW = 0;
var w; var h; var y;
var box; var mlist; var entry;
for (j = 0; j < W.length; j++) {
mlist = []; y = -H[0]; pW = 0;
for (i = 0; i < table.length; i++) {
entry = table[i][j];
if (entry && entry.format != 'null') {
if (align[j] == 'l') {w = 0} else
if (align[j] == 'r') {w = W[j] - entry.w} else
{w = (W[j] - entry.w)/2}
entry.x = w - pW; pW = entry.w + w; entry.y = y;
mlist[mlist.length] = entry;
}
if (i == table.length-1) {y -= D[i]}
else {y -= Math.max(HD,D[i]+H[i+1]) + scale/10}
}
if (cspacing[j] == null) cspacing[j] = scale;
if (mlist.length > 0) {
box = jsMath.Box.SetList(mlist,'T',size);
html += jsMath.HTML.Place(box.html,cW,0);
cW = W[j] - box.w + cspacing[j];
} else {cW += cspacing[j]}
}
// get the full width and height
w = -cspacing[W.length-1]; y = (H.length-1)*scale/10;
for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
h = y/2 + jsMath.TeX.axis_height; var d = y-h;
// adjust the final row width, and vcenter the table
// (add 1/6em at each side for the \,)
html += jsMath.HTML.Spacer(cW-cspacing[W.length-1] + scale/6);
html = jsMath.HTML.Place(html,scale/6,h);
box = new jsMath.Box('html',html,w+scale/3,h,d);
box.bh = bh; box.bd = bd;
return box;
},
/*
* Create the HTML for an alignment (e.g., array or matrix)
* Use absolute position for elements in the array.
*
* ### still need to allow users to specify row and column attributes,
* and do things like \span and \multispan ###
*/
LayoutAbsolute: function (size,table,align,cspacing) {
if (align == null) {align = []}
if (cspacing == null) {cspacing = []}
// get row and column maximum dimensions
var scale = jsMath.sizes[size]/100;
var HD = (jsMath.hd-.01)*scale;
var W = []; var H = []; var D = [];
var w = 0; var h; var x; var y;
var i; var j; var row;
for (i = 0; i < table.length; i++) {
row = table[i];
H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
for (j = 0; j < row.length; j++) {
row[j] = row[j].Remeasured();
if (row[j].h > H[i]) {H[i] = row[j].h}
if (row[j].d > D[i]) {D[i] = row[j].d}
if (j >= W.length) {W[j] = row[j].w}
else if (row[j].w > W[j]) {W[j] = row[j].w}
}
}
// get the height and depth of the centered table
y = (H.length-1)*scale/6;
for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
h = y/2 + jsMath.TeX.axis_height; var d = y - h;
// lay out the columns
var html = ''; var entry; w = scale/6;
for (j = 0; j < W.length; j++) {
y = H[0]-h;
for (i = 0; i < table.length; i++) {
entry = table[i][j];
if (entry && entry.format != 'null') {
if (align[j] == 'l') {x = 0} else
if (align[j] == 'r') {x = W[j] - entry.w} else
{x = (W[j] - entry.w)/2}
html += jsMath.HTML.PlaceAbsolute(entry.html,w+x,
y-Math.max(0,entry.bh-jsMath.h*scale));
}
if (i == table.length-1) {y += D[i]}
else {y += Math.max(HD,D[i]+H[i+1]) + scale/6}
}
if (cspacing[j] == null) cspacing[j] = scale;
w += W[j] + cspacing[j];
}
// get the full width
w = -cspacing[W.length-1]+scale/3;
for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
html = jsMath.HTML.Spacer(scale/6)+html+jsMath.HTML.Spacer(scale/6);
if (jsMath.Browser.spanHeightVaries) {y = h-jsMath.h} else {y = 0}
html = jsMath.HTML.Absolute(html,w,h+d,d,y,H[0]);
var box = new jsMath.Box('html',html,w+scale/3,h,d);
return box;
},
/*
* Look for math within \hbox and other non-math text
*/
InternalMath: function (text,size) {
if (!text.match(/\$|\\\(/)) {return this.Text(text,'normal','T',size).Styled()}
var i = 0; var k = 0; var c; var match = '';
var mlist = []; var parse; var html; var box;
while (i < text.length) {
c = text.charAt(i++);
if (c == '$') {
if (match == '$') {
parse = jsMath.Parse(text.slice(k,i-1),null,size);
if (parse.error) {
mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,.2);
} else {
parse.Atomize();
mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
}
match = ''; k = i;
} else {
mlist[mlist.length] = this.Text(text.slice(k,i-1),'normal','T',size,1,.2);
match = '$'; k = i;
}
} else if (c == '\\') {
c = text.charAt(i++);
if (c == '(' && match == '') {
mlist[mlist.length] = this.Text(text.slice(k,i-2),'normal','T',size,1,.2);
match = ')'; k = i;
} else if (c == ')' && match == ')') {
parse = jsMath.Parse(text.slice(k,i-2),null,size);
if (parse.error) {
mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,.2);
} else {
parse.Atomize();
mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
}
match = ''; k = i;
}
}
}
mlist[mlist.length] = this.Text(text.slice(k),'normal','T',size,1,.2);
return this.SetList(mlist,'T',size);
},
/*
* Convert an abitrary box to a typeset box. I.e., make an
* HTML version of the contents of the box, at its desired (x,y)
* position.
*/
Set: function (box,style,size,addstyle) {
if (box && box.type) {
if (box.type == 'typeset') {return box}
if (box.type == 'mlist') {
box.mlist.Atomize(style,size);
return box.mlist.Typeset(style,size);
}
if (box.type == 'text') {
box = this.Text(box.text,box.tclass,style,size,box.ascend,box.descend);
if (addstyle != 0) {box.Styled()}
return box;
}
box = this.TeX(box.c,box.font,style,size);
if (addstyle != 0) {box.Styled()}
return box;
}
return jsMath.Box.Null;
},
/*
* Convert a list of boxes to a single typeset box. I.e., finalize
* the HTML for the list of boxes, properly spaced and positioned.
*/
SetList: function (boxes,style,size) {
var mlist = []; var box;
for (var i = 0; i < boxes.length; i++) {
box = boxes[i];
if (box.type == 'typeset') {box = jsMath.mItem.Typeset(box)}
mlist[mlist.length] = box;
}
var typeset = new jsMath.Typeset(mlist);
return typeset.Typeset(style,size);
}
});
jsMath.Package(jsMath.Box,{
/*
* Add the class and style to a text box (i.e., finalize the
* unpositioned HTML for the box).
*/
Styled: function () {
if (this.format == 'text') {
this.html = jsMath.Typeset.AddClass(this.tclass,this.html);
this.html = jsMath.Typeset.AddStyle(this.style,this.size,this.html);
delete this.tclass; delete this.style;
this.format = 'html';
}
return this;
},
/*
* Recompute the box width to make it more accurate.
*/
Remeasured: function () {
if (this.w > 0 && !this.html.match(/position: ?absolute/))
{this.w = jsMath.EmBoxFor(this.html).w}
return this;
}
});
/***************************************************************************/
/*
* mItems are the building blocks of mLists (math lists) used to
* store the information about a mathematical expression. These are
* basically the items listed in the TeXbook in Appendix G (plus some
* minor extensions).
*/
jsMath.mItem = function (type,def) {
this.type = type;
jsMath.Add(this,def);
}
jsMath.Add(jsMath.mItem,{
/*
* A general atom (given a nucleus for the atom)
*/
Atom: function (type,nucleus) {
return new jsMath.mItem(type,{atom: 1, nuc: nucleus});
},
/*
* An atom whose nucleus is a piece of text, in a given
* class, with a given additional height and depth
*/
TextAtom: function (type,text,tclass,a,d) {
var atom = new jsMath.mItem(type,{
atom: 1,
nuc: {
type: 'text',
text: text,
tclass: tclass
}
});
if (a != null) {atom.nuc.ascend = a}
if (d != null) {atom.nuc.descend = d}
return atom;
},
/*
* An atom whose nucleus is a TeX character in a specific font
*/
TeXAtom: function (type,c,font) {
return new jsMath.mItem(type,{
atom: 1,
nuc: {
type: 'TeX',
c: c,
font: font
}
});
},
/*
* A generalized fraction atom, with given delimiters, rule
* thickness, and a numerator and denominator.
*/
Fraction: function (name,num,den,thickness,left,right) {
return new jsMath.mItem('fraction',{
from: name, num: num, den: den,
thickness: thickness, left: left, right: right
});
},
/*
* An atom that inserts some glue
*/
Space: function (w) {return new jsMath.mItem('space',{w: w})},
/*
* An atom that contains a typeset box (like an hbox or vbox)
*/
Typeset: function (box) {return new jsMath.mItem('ord',{atom:1, nuc: box})},
/*
* An atom that contains some finished HTML (acts like a typeset box)
*/
HTML: function (html) {return new jsMath.mItem('html',{html: html})}
});
/***************************************************************************/
/*
* mLists are lists of mItems, and encode the contents of
* mathematical expressions and sub-expressions. They act as
* the expression "stack" as the mathematics is parsed, and
* contain some state information, like the position of the
* most recent open paren and \over command, and the current font.
*/
jsMath.mList = function (list,font,size,style) {
if (list) {this.mlist = list} else {this.mlist = []}
if (style == null) {style = 'T'}; if (size == null) {size = 4}
this.data = {openI: null, overI: null, overF: null,
font: font, size: size, style: style};
this.init = {size: size, style: style};
}
jsMath.Package(jsMath.mList,{
/*
* Add an mItem to the list
*/
Add: function (box) {return (this.mlist[this.mlist.length] = box)},
/*
* Get the i-th mItem from the list
*/
Get: function (i) {return this.mlist[i]},
/*
* Get the length of the list
*/
Length: function() {return this.mlist.length},
/*
* Get the tail mItem of the list
*/
Last: function () {
if (this.mlist.length == 0) {return null}
return this.mlist[this.mlist.length-1]
},
/*
* Get a sublist of an mList
*/
Range: function (i,j) {
if (j == null) {j = this.mlist.length}
return new jsMath.mList(this.mlist.slice(i,j+1));
},
/*
* Remove a range of mItems from the list.
*/
Delete: function (i,j) {
if (j == null) {j = i}
if (this.mlist.splice) {this.mlist.splice(i,j-i+1)} else {
var mlist = [];
for (var k = 0; k < this.mlist.length; k++)
{if (k < i || k > j) {mlist[mlist.length] = this.mlist[k]}}
this.mlist = mlist;
}
},
/*
* Add an open brace and maintain the stack information
* about the previous open brace so we can recover it
* when this one os closed.
*/
Open: function (left) {
var box = this.Add(new jsMath.mItem('boundary',{data: this.data}));
var olddata = this.data;
this.data = {}; for (var i in olddata) {this.data[i] = olddata[i]}
delete this.data.overI; delete this.data.overF;
this.data.openI = this.mlist.length-1;
if (left != null) {box.left = left}
return box;
},
/*
* Attempt to close a brace. Recover the stack information
* about previous open braces and \over commands. If there was an
* \over (or \above, etc) in this set of braces, create a fraction
* atom from the two halves, otherwise create an inner or ord
* from the contents of the braces.
* Remove the braced material from the list and add the newly
* created atom (the fraction, inner or ord).
*/
Close: function (right) {
if (right != null) {right = new jsMath.mItem('boundary',{right: right})}
var atom; var open = this.data.openI;
var over = this.data.overI; var from = this.data.overF;
this.data = this.mlist[open].data;
if (over) {
atom = jsMath.mItem.Fraction(from.name,
{type: 'mlist', mlist: this.Range(open+1,over-1)},
{type: 'mlist', mlist: this.Range(over)},
from.thickness,from.left,from.right);
if (right) {
var mlist = new jsMath.mList([this.mlist[open],atom,right]);
atom = jsMath.mItem.Atom('inner',{type: 'mlist', mlist: mlist});
}
} else {
var openI = open+1; if (right) {this.Add(right); openI--}
atom = jsMath.mItem.Atom((right)?'inner':'ord',
{type: 'mlist', mlist: this.Range(openI)});
}
this.Delete(open,this.Length());
return this.Add(atom);
},
/*
* Create a generalized fraction from an mlist that
* contains an \over (or \above, etc).
*/
Over: function () {
var over = this.data.overI; var from = this.data.overF;
var atom = jsMath.mItem.Fraction(from.name,
{type: 'mlist', mlist: this.Range(open+1,over-1)},
{type: 'mlist', mlist: this.Range(over)},
from.thickness,from.left,from.right);
this.mlist = [atom];
},
/*
* Take a raw mList (that has been produced by parsing some TeX
* expression), and perform the modifications outlined in
* Appendix G of the TeXbook.
*/
Atomize: function (style,size) {
var mitem; var prev = '';
this.style = style; this.size = size;
for (var i = 0; i < this.mlist.length; i++) {
mitem = this.mlist[i]; mitem.delta = 0;
if (mitem.type == 'choice')
{this.mlist = this.Atomize.choice(this.style,mitem,i,this.mlist); i--}
else if (this.Atomize[mitem.type]) {
var f = this.Atomize[mitem.type]; // Opera needs separate name
f(this.style,this.size,mitem,prev,this,i);
}
prev = mitem;
}
if (mitem && mitem.type == 'bin') {mitem.type = 'ord'}
if (this.mlist.length >= 2 && mitem.type == 'boundary' &&
this.mlist[0].type == 'boundary') {this.AddDelimiters(style,size)}
},
/*
* For a list that has boundary delimiters as its first and last
* entries, we replace the boundary atoms by open and close
* atoms whose nuclii are the specified delimiters properly sized
* for the contents of the list. (Rule 19)
*/
AddDelimiters: function(style,size) {
var unset = -10000; var h = unset; var d = unset;
for (var i = 0; i < this.mlist.length; i++) {
mitem = this.mlist[i];
if (mitem.atom || mitem.type == 'box') {
h = Math.max(h,mitem.nuc.h+mitem.nuc.y);
d = Math.max(d,mitem.nuc.d-mitem.nuc.y);
}
}
var TeX = jsMath.TeX; var a = jsMath.Typeset.TeX(style,size).axis_height;
var delta = Math.max(h-a,d+a);
var H = Math.max(Math.floor(TeX.integer*delta/500)*TeX.delimiterfactor,
TeX.integer*(2*delta-TeX.delimitershortfall))/TeX.integer;
var left = this.mlist[0]; var right = this.mlist[this.mlist.length-1];
left.nuc = jsMath.Box.Delimiter(H,left.left,style);
right.nuc = jsMath.Box.Delimiter(H,right.right,style);
left.type = 'open'; left.atom = 1; delete left.left;
right.type = 'close'; right.atom = 1; delete right.right;
},
/*
* Typeset a math list to produce final HTML for the list.
*/
Typeset: function (style,size) {
var typeset = new jsMath.Typeset(this.mlist);
return typeset.Typeset(style,size);
}
});
/*
* These routines implement the main rules given in Appendix G of the
* TeXbook
*/
jsMath.Add(jsMath.mList.prototype.Atomize,{
/*
* Handle \displaystyle, \textstyle, etc.
*/
style: function (style,size,mitem,prev,mlist) {
mlist.style = mitem.style;
},
/*
* Handle \tiny, \small, etc.
*/
size: function (style,size,mitem,prev,mlist) {
mlist.size = mitem.size;
},
/*
* Create empty boxes of the proper sizes for the various
* phantom-type commands
*/
phantom: function (style,size,mitem) {
var box = mitem.nuc = jsMath.Box.Set(mitem.phantom,style,size);
if (mitem.h) {box.Remeasured(); box.html = jsMath.HTML.Spacer(box.w)}
else {box.html = '', box.w = 0}
if (!mitem.v) {box.h = box.d = 0}
box.bd = box.bh = 0;
delete mitem.phantom;
mitem.type = 'box';
},
/*
* Create a box of zero height and depth containing the
* contents of the atom
*/
smash: function (style,size,mitem) {
var box = mitem.nuc = jsMath.Box.Set(mitem.smash,style,size).Remeasured();
box.h = box.d = box.bd = box.bh = 0;
delete mitem.smash;
mitem.type = 'box';
},
/*
* Move a box up or down vertically
*/
raise: function (style,size,mitem) {
mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size);
var y = mitem.raise;
mitem.nuc.html = jsMath.HTML.Place(mitem.nuc.html,0,y);
mitem.nuc.h += y; mitem.nuc.d -= y;
mitem.type = 'ord'; mitem.atom = 1;
},
/*
* Hide the size of a box so that it laps to the left or right, or
* up or down.
*/
lap: function (style,size,mitem) {
var box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured();
var mlist = [box];
if (mitem.lap == 'llap') {box.x = -box.w} else
if (mitem.lap == 'rlap') {mlist[1] = jsMath.mItem.Space(-box.w)} else
if (mitem.lap == 'ulap') {box.y = box.d; box.h = box.d = 0} else
if (mitem.lap == 'dlap') {box.y = -box.h; box.h = box.d = 0}
mitem.nuc = jsMath.Box.SetList(mlist,style,size);
if (mitem.lap == 'ulap' || mitem.lap == 'dlap') {mitem.nuc.h = mitem.nuc.d = 0}
mitem.type = 'box'; delete mitem.atom;
},
/*
* Handle a Bin atom. (Rule 5)
*/
bin: function (style,size,mitem,prev) {
if (prev) {
var type = prev.type;
if (type == 'bin' || type == 'op' || type == 'rel' ||
type == 'open' || type == 'punct' || type == '' ||
(type == 'boundary' && prev.left != '')) {mitem.type = 'ord'}
} else {mitem.type = 'ord'}
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle a Rel atom. (Rule 6)
*/
rel: function (style,size,mitem,prev) {
if (prev.type == 'bin') {prev.type = 'ord'}
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle a Close atom. (Rule 6)
*/
close: function (style,size,mitem,prev) {
if (prev.type == 'bin') {prev.type = 'ord'}
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle a Punct atom. (Rule 6)
*/
punct: function (style,size,mitem,prev) {
if (prev.type == 'bin') {prev.type = 'ord'}
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle an Open atom. (Rule 7)
*/
open: function (style,size,mitem) {
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle an Inner atom. (Rule 7)
*/
inner: function (style,size,mitem) {
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle a Vcent atom. (Rule 8)
*/
vcenter: function (style,size,mitem) {
var box = jsMath.Box.Set(mitem.nuc,style,size);
var TeX = jsMath.Typeset.TeX(style,size);
box.y = TeX.axis_height - (box.h-box.d)/2;
mitem.nuc = box; mitem.type = 'ord';
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle an Over atom. (Rule 9)
*/
overline: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size);
var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
var t = TeX.default_rule_thickness;
var rule = jsMath.Box.Rule(box.w,t);
rule.x = -rule.w; rule.y = box.h + 3*t;
mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
mitem.nuc.h += t;
mitem.type = 'ord';
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle an Under atom. (Rule 10)
*/
underline: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size);
var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
var t = TeX.default_rule_thickness;
var rule = jsMath.Box.Rule(box.w,t);
rule.x = -rule.w; rule.y = -box.d - 3*t - t;
mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
mitem.nuc.d += t;
mitem.type = 'ord';
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle a Rad atom. (Rule 11 plus stuff for \root..\of)
*/
radical: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size);
var Cp = jsMath.Typeset.PrimeStyle(style);
var box = jsMath.Box.Set(mitem.nuc,Cp,size).Remeasured();
var t = TeX.default_rule_thickness;
var p = t; if (style == 'D' || style == "D'") {p = TeX.x_height}
var r = t + p/4;
var surd = jsMath.Box.Delimiter(box.h+box.d+r+t,[0,2,0x70,3,0x70],style,1);
t = surd.h; // thickness of rule is height of surd character
if (surd.d > box.h+box.d+r) {r = (r+surd.d-box.h-box.d)/2}
surd.y = box.h+r;
var rule = jsMath.Box.Rule(box.w,t);
rule.y = surd.y-t/2; rule.h += 3*t/2; box.x = -box.w;
var Cr = jsMath.Typeset.UpStyle(jsMath.Typeset.UpStyle(style));
var root = jsMath.Box.Set(mitem.root,Cr,size).Remeasured();
if (mitem.root) {
root.y = .55*(box.h+box.d+3*t+r)-box.d;
surd.x = Math.max(root.w-(11/18)*surd.w,0);
rule.x = (7/18)*surd.w;
root.x = -(root.w+rule.x);
}
mitem.nuc = jsMath.Box.SetList([surd,root,rule,box],style,size);
mitem.type = 'ord';
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle an Acc atom. (Rule 12)
*/
accent: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size);
var Cp = jsMath.Typeset.PrimeStyle(style);
var box = jsMath.Box.Set(mitem.nuc,Cp,size);
var u = box.w; var s; var Font;
if (mitem.nuc.type == 'TeX') {
Font = jsMath.TeX[mitem.nuc.font];
if (Font[mitem.nuc.c].krn && Font.skewchar)
{s = Font[mitem.nuc.c].krn[Font.skewchar]}
}
if (s == null) {s = 0}
var c = mitem.accent[2];
var font = jsMath.TeX.fam[mitem.accent[1]]; Font = jsMath.TeX[font];
while (Font[c].n && Font[Font[c].n].w <= u) {c = Font[c].n}
var delta = Math.min(box.h,TeX.x_height);
if (mitem.nuc.type == 'TeX') {
var nitem = jsMath.mItem.Atom('ord',mitem.nuc);
nitem.sup = mitem.sup; nitem.sub = mitem.sub; nitem.delta = 0;
jsMath.mList.prototype.Atomize.SupSub(style,size,nitem);
delta += (nitem.nuc.h - box.h);
box = mitem.nuc = nitem.nuc;
delete mitem.sup; delete mitem.sub;
}
var acc = jsMath.Box.TeX(c,font,style,size);
acc.y = box.h - delta; acc.x = -box.w + s + (u-acc.w)/2;
if (Font[c].ic) {acc.x -= Font[c].ic * TeX.scale}
mitem.nuc = jsMath.Box.SetList([box,acc],style,size);
if (mitem.nuc.w != box.w) {
var space = jsMath.mItem.Space(box.w-mitem.nuc.w);
mitem.nuc = jsMath.Box.SetList([mitem.nuc,space],style,size);
}
mitem.type = 'ord';
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle an Op atom. (Rules 13 and 13a)
*/
op: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size); var box;
mitem.delta = 0; var isD = (style.charAt(0) == 'D');
if (mitem.limits == null && isD) {mitem.limits = 1}
if (mitem.nuc.type == 'TeX') {
var C = jsMath.TeX[mitem.nuc.font][mitem.nuc.c];
if (isD && C.n) {mitem.nuc.c = C.n; C = jsMath.TeX[mitem.nuc.font][C.n]}
box = jsMath.Box.Set(mitem.nuc,style,size);
if (C.ic) {
mitem.delta = C.ic * TeX.scale;
if (mitem.limits || !mitem.sub || jsMath.Browser.msieIntegralBug)
{box = jsMath.Box.SetList([box,jsMath.mItem.Space(mitem.delta)],style,size)}
}
box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height);
if (Math.abs(box.y) < .0001) {box.y = 0}
}
if (!box) {box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured()}
if (mitem.limits) {
var W = box.w; var x = box.w;
var mlist = [box]; var dh = 0; var dd = 0;
if (mitem.sup) {
var sup = jsMath.Box.Set(mitem.sup,jsMath.Typeset.UpStyle(style),size).Remeasured();
sup.x = ((box.w-sup.w)/2 + mitem.delta/2) - x; dh = TeX.big_op_spacing5;
W = Math.max(W,sup.w); x += sup.x + sup.w;
sup.y = box.h+sup.d + box.y +
Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);
mlist[mlist.length] = sup; delete mitem.sup;
}
if (mitem.sub) {
var sub = jsMath.Box.Set(mitem.sub,jsMath.Typeset.DownStyle(style),size).Remeasured();
sub.x = ((box.w-sub.w)/2 - mitem.delta/2) - x; dd = TeX.big_op_spacing5;
W = Math.max(W,sub.w); x += sub.x + sub.w;
sub.y = -box.d-sub.h + box.y -
Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);
mlist[mlist.length] = sub; delete mitem.sub;
}
if (W > box.w) {box.x = (W-box.w)/2; x += box.x}
if (x < W) {mlist[mlist.length] = jsMath.mItem.Space(W-x)}
mitem.nuc = jsMath.Box.SetList(mlist,style,size);
mitem.nuc.h += dh; mitem.nuc.d += dd;
} else {
if (jsMath.Browser.msieIntegralBug && mitem.sub && C && C.ic)
{mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(-C.ic*TeX.scale)],style,size)}
else if (box.y) {mitem.nuc = jsMath.Box.SetList([box],style,size)}
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
}
},
/*
* Handle an Ord atom. (Rule 14)
*/
ord: function (style,size,mitem,prev,mList,i) {
if (mitem.nuc.type == 'TeX' && !mitem.sup && !mitem.sub) {
var nitem = mList.mlist[i+1];
if (nitem && nitem.atom && nitem.type &&
(nitem.type == 'ord' || nitem.type == 'op' || nitem.type == 'bin' ||
nitem.type == 'rel' || nitem.type == 'open' ||
nitem.type == 'close' || nitem.type == 'punct')) {
if (nitem.nuc.type == 'TeX' && nitem.nuc.font == mitem.nuc.font) {
mitem.textsymbol = 1;
var krn = jsMath.TeX[mitem.nuc.font][mitem.nuc.c].krn;
krn *= jsMath.Typeset.TeX(style,size).scale;
if (krn && krn[nitem.nuc.c]) {
for (var k = mList.mlist.length-1; k > i; k--)
{mList.mlist[k+1] = mList.mlist[k]}
mList.mlist[i+1] = jsMath.mItem.Space(krn[nitem.nuc.c]);
}
}
}
}
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Handle a generalized fraction. (Rules 15 to 15e)
*/
fraction: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size); var t = 0;
if (mitem.thickness != null) {t = mitem.thickness}
else if (mitem.from.match(/over/)) {t = TeX.default_rule_thickness}
var isD = (style.charAt(0) == 'D');
var Cn = (style == 'D')? 'T': (style == "D'")? "T'": jsMath.Typeset.UpStyle(style);
var Cd = (isD)? "T'": jsMath.Typeset.DownStyle(style);
var num = jsMath.Box.Set(mitem.num,Cn,size).Remeasured();
var den = jsMath.Box.Set(mitem.den,Cd,size).Remeasured();
var u; var v; var w;
var H = (isD)? TeX.delim1 : TeX.delim2;
var mlist = [jsMath.Box.Delimiter(H,mitem.left,style)]
var right = jsMath.Box.Delimiter(H,mitem.right,style);
if (num.w < den.w) {
num.x = (den.w-num.w)/2;
den.x = -(num.w + num.x);
w = den.w; mlist[1] = num; mlist[2] = den;
} else {
den.x = (num.w-den.w)/2;
num.x = -(den.w + den.x);
w = num.w; mlist[1] = den; mlist[2] = num;
}
if (isD) {u = TeX.num1; v = TeX.denom1} else {
u = (t != 0)? TeX.num2: TeX.num3;
v = TeX.denom2;
}
if (t == 0) {// atop
var p = (isD)? 7*TeX.default_rule_thickness: 3*TeX.default_rule_thickness;
var r = (u - num.d) - (den.h - v);
if (r < p) {u += (p-r)/2; v += (p-r)/2}
} else {// over
var p = (isD)? 3*t: t; var a = TeX.axis_height;
var r = (u-num.d)-(a+t/2); if (r < p) {u += p-r}
r = (a-t/2)-(den.h-v); if (r < p) {v += p-r}
var rule = jsMath.Box.Rule(w,t); rule.x = -w; rule.y = a - t/2;
mlist[mlist.length] = rule;
}
num.y = u; den.y = -v;
mlist[mlist.length] = right;
mitem.nuc = jsMath.Box.SetList(mlist,style,size);
mitem.type = 'ord'; mitem.atom = 1;
delete mitem.num; delete mitem.den;
jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
},
/*
* Add subscripts and superscripts. (Rules 17-18f)
*/
SupSub: function (style,size,mitem) {
var TeX = jsMath.Typeset.TeX(style,size);
var nuc = mitem.nuc;
var box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size,0);
if (box.format == 'null')
{box = mitem.nuc = jsMath.Box.Text('','normal',style,size)}
if (nuc.type == 'TeX') {
if (!mitem.textsymbol) {
var C = jsMath.TeX[nuc.font][nuc.c];
if (C.ic) {
mitem.delta = C.ic * TeX.scale;
if (!mitem.sub) {
box = mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(mitem.delta)],style,size);
mitem.delta = 0;
}
}
} else {mitem.delta = 0}
}
if (!mitem.sup && !mitem.sub) return;
mitem.nuc.Styled();
var Cd = jsMath.Typeset.DownStyle(style);
var Cu = jsMath.Typeset.UpStyle(style);
var q = jsMath.Typeset.TeX(Cu,size).sup_drop;
var r = jsMath.Typeset.TeX(Cd,size).sub_drop;
var u = 0; var v = 0; var p;
if (nuc.type && nuc.type != 'text' && nuc.type != 'TeX' && nuc.type != 'null')
{u = box.h - q; v = box.d + r}
if (mitem.sub) {
var sub = jsMath.Box.Set(mitem.sub,Cd,size);
sub = jsMath.Box.SetList([sub,jsMath.mItem.Space(TeX.scriptspace)],style,size);
}
if (!mitem.sup) {
sub.y = -Math.max(v,TeX.sub1,sub.h-(4/5)*jsMath.Typeset.TeX(Cd,size).x_height);
mitem.nuc = jsMath.Box.SetList([box,sub],style,size).Styled(); delete mitem.sub;
return;
}
var sup = jsMath.Box.Set(mitem.sup,Cu,size);
sup = jsMath.Box.SetList([sup,jsMath.mItem.Space(TeX.scriptspace)],style,size);
if (style == 'D') {p = TeX.sup1}
else if (style.charAt(style.length-1) == "'") {p = TeX.sup3}
else {p = TeX.sup2}
u = Math.max(u,p,sup.d+jsMath.Typeset.TeX(Cu,size).x_height/4);
if (!mitem.sub) {
sup.y = u;
mitem.nuc = jsMath.Box.SetList([box,sup],style,size); delete mitem.sup;
return;
}
v = Math.max(v,jsMath.Typeset.TeX(Cd,size).sub2);
var t = TeX.default_rule_thickness;
if ((u-sup.d) - (sub.h -v) < 4*t) {
v = 4*t + sub.h - (u-sup.d);
p = (4/5)*TeX.x_height - (u-sup.d);
if (p > 0) {u += p; v -= p}
}
sup.Remeasured(); sub.Remeasured();
sup.y = u; sub.y = -v; sup.x = mitem.delta;
if (sup.w+sup.x > sub.w)
{sup.x -= sub.w; mitem.nuc = jsMath.Box.SetList([box,sub,sup],style,size)} else
{sub.x -= (sup.w+sup.x); mitem.nuc = jsMath.Box.SetList([box,sup,sub],style,size)}
delete mitem.sup; delete mitem.sub;
}
});
/***************************************************************************/
/*
* The Typeset object handles most of the TeX-specific processing
*/
jsMath.Typeset = function (mlist) {
this.type = 'typeset';
this.mlist = mlist;
}
jsMath.Add(jsMath.Typeset,{
/*
* The "C-uparrow" style table (TeXbook, p. 441)
*/
upStyle: {
D: "S", T: "S", "D'": "S'", "T'": "S'",
S: "SS", SS: "SS", "S'": "SS'", "SS'": "SS'"
},
/*
* The "C-downarrow" style table (TeXbook, p. 441)
*/
downStyle: {
D: "S'", T: "S'", "D'": "S'", "T'": "S'",
S: "SS'", SS: "SS'", "S'": "SS'", "SS'": "SS'"
},
/*
* Get the various styles given the current style
* (see TeXbook, p. 441)
*/
UpStyle: function (style) {return this.upStyle[style]},
DownStyle: function (style) {return this.downStyle[style]},
PrimeStyle: function (style) {
if (style.charAt(style.length-1) == "'") {return style}
return style + "'"
},
/*
* A value scaled to the appropriate size for scripts
*/
StyleValue: function (style,v) {
if (style == "S" || style == "S'") {return .7*v}
if (style == "SS" || style == "SS'") {return .5*v}
return v;
},
/*
* Return the size associated with a given style and size
*/
StyleSize: function (style,size) {
if (style == "S" || style == "S'") {size = Math.max(0,size-2)}
else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
return size;
},
/*
* Return the font parameter table for the given style
*/
TeX: function (style,size) {
if (style == "S" || style == "S'") {size = Math.max(0,size-2)}
else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
return jsMath.TeXparams[size];
},
/*
* Add the CSS class for the given TeX style
*/
AddStyle: function (style,size,html) {
if (style == "S" || style == "S'") {size = Math.max(0,size-2)}
else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
if (size != 4) {html = '<span class="size'+size+'">' + html + '</span>'}
return html;
},
/*
* Add the font class, if needed
*/
AddClass: function (tclass,html) {
if (tclass != '' && tclass != 'normal') {html = jsMath.HTML.Class(tclass,html)}
return html;
}
});
jsMath.Package(jsMath.Typeset,{
/*
* The spacing tables for inter-atom spacing
* (See rule 20, and Chapter 18, p 170)
*/
DTsep: {
ord: {op: 1, bin: 2, rel: 3, inner: 1},
op: {ord: 1, op: 1, rel: 3, inner: 1},
bin: {ord: 2, op: 2, open: 2, inner: 2},
rel: {ord: 3, op: 3, open: 3, inner: 3},
open: {},
close: {op: 1, bin:2, rel: 3, inner: 1},
punct: {ord: 1, op: 1, rel: 1, open: 1, close: 1, punct: 1, inner: 1},
inner: {ord: 1, op: 1, bin: 2, rel: 3, open: 1, punct: 1, inner: 1}
},
SSsep: {
ord: {op: 1},
op: {ord: 1, op: 1},
bin: {},
rel: {},
open: {},
close: {op: 1},
punct: {},
inner: {op: 1}
},
/*
* The sizes used in the tables above
*/
sepW: ['','thinmuskip','medmuskip','thickmuskip'],
/*
* Find the amount of separation to use between two adjacent
* atoms in the given style
*/
GetSeparation: function (l,r,style) {
if (l && l.atom && r.atom) {
var table = this.DTsep; if (style.charAt(0) == "S") {table = this.SSsep}
var row = table[l.type];
if (row && row[r.type] != null) {return jsMath.TeX[this.sepW[row[r.type]]]}
}
return 0;
},
/*
* Typeset an mlist (i.e., turn it into HTML).
* Here, text items of the same class and style are combined
* to reduce the number of <SPAN> tags used (though it is still
* huge). Spaces are combined, when possible.
* ### More needs to be done with that. ###
* The width of the final box is recomputed at the end, since
* the final width is not necessarily the sum of the widths of
* the individual parts (widths are in pixels, but the browsers
* puts pieces together using sub-pixel accuracy).
*/
Typeset: function (style,size) {
this.style = style; this.size = size; var unset = -10000
this.w = 0; this.h = unset; this.d = unset;
this.bh = this.h; this.bd = this.d;
this.tbuf = ''; this.tx = 0; this.tclass = '';
this.cbuf = ''; this.hbuf = ''; this.hx = 0;
var mitem = null; var prev; this.x = 0; this.dx = 0;
for (var i = 0; i < this.mlist.length; i++) {
prev = mitem; mitem = this.mlist[i];
switch (mitem.type) {
case 'size':
this.FlushClassed();
this.size = mitem.size;
mitem = prev; // hide this from TeX
break;
case 'style':
this.FlushClassed();
if (this.style.charAt(this.style.length-1) == "'")
{this.style = mitem.style + "'"} else {this.style = mitem.style}
mitem = prev; // hide this from TeX
break;
case 'space':
if (typeof(mitem.w) == 'object') {
if (this.style.charAt(1) == 'S') {mitem.w = .5*mitem.w[0]/18}
else if (this.style.charAt(0) == 'S') {mitem.w = .7*mitem.w[0]/18}
else {mitem.w = mitem.w[0]/18}
}
this.dx += mitem.w-0; // mitem.w is sometimes a string?
mitem = prev; // hide this from TeX
break;
case 'html':
this.FlushClassed();
if (this.hbuf == '') {this.hx = this.x}
this.hbuf += mitem.html;
mitem = prev; // hide this from TeX
break;
default: // atom
if (!mitem.atom && mitem.type != 'box') break;
mitem.nuc.x += this.dx + this.GetSeparation(prev,mitem,this.style);
if (mitem.nuc.y || mitem.nuc.x) mitem.nuc.Styled();
this.dx = 0; this.x = this.x + this.w;
this.w += mitem.nuc.w + mitem.nuc.x;
if (mitem.nuc.format == 'text') {
if (this.tclass != mitem.nuc.tclass && this.tclass != '') this.FlushText();
if (this.tbuf == '' && this.cbuf == '') {this.tx = this.x}
this.tbuf += mitem.nuc.html; this.tclass = mitem.nuc.tclass;
} else {
this.FlushClassed();
if (mitem.nuc.x || mitem.nuc.y) this.Place(mitem.nuc);
if (this.hbuf == '') {this.hx = this.x}
this.hbuf += mitem.nuc.html;
}
this.h = Math.max(this.h,mitem.nuc.h+mitem.nuc.y); this.bh = Math.max(this.bh,mitem.nuc.bh);
this.d = Math.max(this.d,mitem.nuc.d-mitem.nuc.y); this.bd = Math.max(this.bd,mitem.nuc.bd);
break;
}
}
this.FlushClassed(); // make sure scaling is included
if (this.dx) {this.hbuf += jsMath.HTML.Spacer(this.dx); this.w += this.dx}
if (this.hbuf == '') {return jsMath.Box.Null}
if (this.h == unset) {this.h = 0}
if (this.d == unset) {this.d = 0}
var box = new jsMath.Box('html',this.hbuf,this.w,this.h,this.d);
box.bh = this.bh; box.bd = this.bd;
return box;
},
/*
* Add the font to the buffered text and move it to the
* classed-text buffer.
*/
FlushText: function () {
if (this.tbuf == '') return;
this.cbuf += jsMath.Typeset.AddClass(this.tclass,this.tbuf);
this.tbuf = ''; this.tclass = '';
},
/*
* Add the script or scriptscript style to the text and
* move it to the HTML buffer
*/
FlushClassed: function () {
this.FlushText();
if (this.cbuf == '') return;
if (this.hbuf == '') {this.hx = this.tx}
this.hbuf += jsMath.Typeset.AddStyle(this.style,this.size,this.cbuf);
this.cbuf = '';
},
/*
* Add a <SPAN> to position an item's HTML, and
* adjust the item's height and depth.
* (This may be replaced buy one of the following browser-specific
* versions by Browser.Init().)
*/
Place: function (item) {
var html = '<span style="position: relative;';
if (item.x) {html += ' margin-left:'+jsMath.HTML.Em(item.x)+';'}
if (item.y) {html += ' top:'+jsMath.HTML.Em(-item.y)+';'}
item.html = html + '">' + item.html + '</span>';
item.h += item.y; item.d -= item.y;
item.x = 0; item.y = 0;
},
/*
* For MSIE on Windows, backspacing must be done in a separate
* <SPAN>, otherwise the contents will be clipped. Netscape
* also doesn't combine vertical and horizontal spacing well.
* Here, the horizontal and vertical spacing are done separately.
*/
PlaceSeparateSkips: function (item) {
if (item.y) {
item.html = '<span style="position: relative; '
+ 'top:'+jsMath.HTML.Em(-item.y)+';'
+ '">' + item.html + '</span>'
}
if (item.x) {item.html = jsMath.HTML.Spacer(item.x) + item.html}
item.h += item.y; item.d -= item.y;
item.x = 0; item.y = 0;
}
});
/***************************************************************************/
/*
* The Parse object handles the parsing of the TeX input string, and creates
* the mList to be typeset by the Typeset object above.
*/
jsMath.Parse = function (s,font,size,style) {
var parse = new jsMath.Parser(s,font,size,style);
parse.Parse();
return parse;
}
jsMath.Parser = function (s,font,size,style) {
this.string = s; this.i = 0;
this.mlist = new jsMath.mList(null,font,size,style);
}
jsMath.Package(jsMath.Parser,{
// special characters
cmd: '\\',
open: '{',
close: '}',
// patterns for letters and numbers
letter: /[a-z]/i,
number: /[0-9]/,
// pattern for macros to ^ and _ that should be read with arguments
scriptargs: /^((math|text)..|mathcal)$/,
// the \mathchar definitions (see Appendix B of the TeXbook).
mathchar: {
'!': [5,0,0x21],
'(': [4,0,0x28],
')': [5,0,0x29],
'*': [2,2,0x03], // \ast
'+': [2,0,0x2B],
',': [6,1,0x3B],
'-': [2,2,0x00],
'.': [0,1,0x3A],
'/': [0,1,0x3D],
':': [3,0,0x3A],
';': [6,0,0x3B],
'<': [3,1,0x3C],
'=': [3,0,0x3D],
'>': [3,1,0x3E],
'?': [5,0,0x3F],
'[': [4,0,0x5B],
']': [5,0,0x5D],
// '{': [4,2,0x66],
// '}': [5,2,0x67],
'|': [0,2,0x6A]
},
// handle special \catcode characters
special: {
'~': 'Tilde',
'^': 'HandleSuperscript',
'_': 'HandleSubscript',
' ': 'Space',
'\01': 'Space',
"\t": 'Space',
"\r": 'Space',
"\n": 'Space',
"'": 'Prime',
'%': 'HandleComment',
'&': 'HandleEntry'
},
// the \mathchardef table (see Appendix B of the TeXbook).
mathchardef: {
// brace parts
braceld: [0,3,0x7A],
bracerd: [0,3,0x7B],
bracelu: [0,3,0x7C],
braceru: [0,3,0x7D],
// Greek letters
alpha: [0,1,0x0B],
beta: [0,1,0x0C],
gamma: [0,1,0x0D],
delta: [0,1,0x0E],
epsilon: [0,1,0x0F],
zeta: [0,1,0x10],
eta: [0,1,0x11],
theta: [0,1,0x12],
iota: [0,1,0x13],
kappa: [0,1,0x14],
lambda: [0,1,0x15],
mu: [0,1,0x16],
nu: [0,1,0x17],
xi: [0,1,0x18],
pi: [0,1,0x19],
rho: [0,1,0x1A],
sigma: [0,1,0x1B],
tau: [0,1,0x1C],
upsilon: [0,1,0x1D],
phi: [0,1,0x1E],
chi: [0,1,0x1F],
psi: [0,1,0x20],
omega: [0,1,0x21],
varepsilon: [0,1,0x22],
vartheta: [0,1,0x23],
varpi: [0,1,0x24],
varrho: [0,1,0x25],
varsigma: [0,1,0x26],
varphi: [0,1,0x27],
Gamma: [7,0,0x00],
Delta: [7,0,0x01],
Theta: [7,0,0x02],
Lambda: [7,0,0x03],
Xi: [7,0,0x04],
Pi: [7,0,0x05],
Sigma: [7,0,0x06],
Upsilon: [7,0,0x07],
Phi: [7,0,0x08],
Psi: [7,0,0x09],
Omega: [7,0,0x0A],
// Ord symbols
aleph: [0,2,0x40],
imath: [0,1,0x7B],
jmath: [0,1,0x7C],
ell: [0,1,0x60],
wp: [0,1,0x7D],
Re: [0,2,0x3C],
Im: [0,2,0x3D],
partial: [0,1,0x40],
infty: [0,2,0x31],
prime: [0,2,0x30],
emptyset: [0,2,0x3B],
nabla: [0,2,0x72],
surd: [1,2,0x70],
top: [0,2,0x3E],
bot: [0,2,0x3F],
triangle: [0,2,0x34],
forall: [0,2,0x38],
exists: [0,2,0x39],
neg: [0,2,0x3A],
lnot: [0,2,0x3A],
flat: [0,1,0x5B],
natural: [0,1,0x5C],
sharp: [0,1,0x5D],
clubsuit: [0,2,0x7C],
diamondsuit: [0,2,0x7D],
heartsuit: [0,2,0x7E],
spadesuit: [0,2,0x7F],
// big ops
coprod: [1,3,0x60],
bigvee: [1,3,0x57],
bigwedge: [1,3,0x56],
biguplus: [1,3,0x55],
bigcap: [1,3,0x54],
bigcup: [1,3,0x53],
intop: [1,3,0x52],
prod: [1,3,0x51],
sum: [1,3,0x50],
bigotimes: [1,3,0x4E],
bigoplus: [1,3,0x4C],
bigodot: [1,3,0x4A],
ointop: [1,3,0x48],
bigsqcup: [1,3,0x46],
smallint: [1,2,0x73],
// binary operations
triangleleft: [2,1,0x2F],
triangleright: [2,1,0x2E],
bigtriangleup: [2,2,0x34],
bigtriangledown: [2,2,0x35],
wedge: [2,2,0x5E],
land: [2,2,0x5E],
vee: [2,2,0x5F],
lor: [2,2,0x5F],
cap: [2,2,0x5C],
cup: [2,2,0x5B],
ddagger: [2,2,0x7A],
dagger: [2,2,0x79],
sqcap: [2,2,0x75],
sqcup: [2,2,0x74],
uplus: [2,2,0x5D],
amalg: [2,2,0x71],
diamond: [2,2,0x05],
bullet: [2,2,0x0F],
wr: [2,2,0x6F],
div: [2,2,0x04],
odot: [2,2,0x0C],
oslash: [2,2,0x0B],
otimes: [2,2,0x0A],
ominus: [2,2,0x09],
oplus: [2,2,0x08],
mp: [2,2,0x07],
pm: [2,2,0x06],
circ: [2,2,0x0E],
bigcirc: [2,2,0x0D],
setminus: [2,2,0x6E], // for set difference A\setminus B
cdot: [2,2,0x01],
ast: [2,2,0x03],
times: [2,2,0x02],
star: [2,1,0x3F],
// Relations
propto: [3,2,0x2F],
sqsubseteq: [3,2,0x76],
sqsupseteq: [3,2,0x77],
parallel: [3,2,0x6B],
mid: [3,2,0x6A],
dashv: [3,2,0x61],
vdash: [3,2,0x60],
leq: [3,2,0x14],
le: [3,2,0x14],
geq: [3,2,0x15],
ge: [3,2,0x15],
succ: [3,2,0x1F],
prec: [3,2,0x1E],
approx: [3,2,0x19],
succeq: [3,2,0x17],
preceq: [3,2,0x16],
supset: [3,2,0x1B],
subset: [3,2,0x1A],
supseteq: [3,2,0x13],
subseteq: [3,2,0x12],
'in': [3,2,0x32],
ni: [3,2,0x33],
owns: [3,2,0x33],
gg: [3,2,0x1D],
ll: [3,2,0x1C],
not: [3,2,0x36],
sim: [3,2,0x18],
simeq: [3,2,0x27],
perp: [3,2,0x3F],
equiv: [3,2,0x11],
asymp: [3,2,0x10],
smile: [3,1,0x5E],
frown: [3,1,0x5F],
// Arrows
Leftrightarrow: [3,2,0x2C],
Leftarrow: [3,2,0x28],
Rightarrow: [3,2,0x29],
leftrightarrow: [3,2,0x24],
leftarrow: [3,2,0x20],
gets: [3,2,0x20],
rightarrow: [3,2,0x21],
to: [3,2,0x21],
mapstochar: [3,2,0x37],
leftharpoonup: [3,1,0x28],
leftharpoondown: [3,1,0x29],
rightharpoonup: [3,1,0x2A],
rightharpoondown: [3,1,0x2B],
nearrow: [3,2,0x25],
searrow: [3,2,0x26],
nwarrow: [3,2,0x2D],
swarrow: [3,2,0x2E],
hbarchar: [0,0,0x16], // for \hbar
lhook: [3,1,0x2C],
rhook: [3,1,0x2D],
ldotp: [6,1,0x3A], // ldot as a punctuation mark
cdotp: [6,2,0x01], // cdot as a punctuation mark
colon: [6,0,0x3A], // colon as a punctuation mark
'#': [7,0,0x23],
'$': [7,0,0x24],
'%': [7,0,0x25],
'&': [7,0,0x26]
},
// The delimiter table (see Appendix B of the TeXbook)
delimiter: {
'(': [0,0,0x28,3,0x00],
')': [0,0,0x29,3,0x01],
'[': [0,0,0x5B,3,0x02],
']': [0,0,0x5D,3,0x03],
'<': [0,2,0x68,3,0x0A],
'>': [0,2,0x69,3,0x0B],
'/': [0,0,0x2F,3,0x0E],
'|': [0,2,0x6A,3,0x0C],
'.': [0,0,0x00,0,0x00],
'\\': [0,2,0x6E,3,0x0F],
'\\lmoustache': [4,3,0x7A,3,0x40], // top from (, bottom from )
'\\rmoustache': [5,3,0x7B,3,0x41], // top from ), bottom from (
'\\lgroup': [4,6,0x28,3,0x3A], // extensible ( with sharper tips
'\\rgroup': [5,6,0x29,3,0x3B], // extensible ) with sharper tips
'\\arrowvert': [0,2,0x6A,3,0x3C], // arrow without arrowheads
'\\Arrowvert': [0,2,0x6B,3,0x3D], // double arrow without arrowheads
// '\\bracevert': [0,7,0x7C,3,0x3E], // the vertical bar that extends braces
'\\bracevert': [0,2,0x6A,3,0x3E], // we don't load tt, so use | instead
'\\Vert': [0,2,0x6B,3,0x0D],
'\\|': [0,2,0x6B,3,0x0D],
'\\vert': [0,2,0x6A,3,0x0C],
'\\uparrow': [3,2,0x22,3,0x78],
'\\downarrow': [3,2,0x23,3,0x79],
'\\updownarrow': [3,2,0x6C,3,0x3F],
'\\Uparrow': [3,2,0x2A,3,0x7E],
'\\Downarrow': [3,2,0x2B,3,0x7F],
'\\Updownarrow': [3,2,0x6D,3,0x77],
'\\backslash': [0,2,0x6E,3,0x0F], // for double coset G\backslash H
'\\rangle': [5,2,0x69,3,0x0B],
'\\langle': [4,2,0x68,3,0x0A],
'\\rbrace': [5,2,0x67,3,0x09],
'\\lbrace': [4,2,0x66,3,0x08],
'\\}': [5,2,0x67,3,0x09],
'\\{': [4,2,0x66,3,0x08],
'\\rceil': [5,2,0x65,3,0x07],
'\\lceil': [4,2,0x64,3,0x06],
'\\rfloor': [5,2,0x63,3,0x05],
'\\lfloor': [4,2,0x62,3,0x04],
'\\lbrack': [0,0,0x5B,3,0x02],
'\\rbrack': [0,0,0x5D,3,0x03]
},
/*
* The basic macros for plain TeX.
*
* When the control sequence on the left is called, the JavaScript
* funtion on the right is called, with the name of the control sequence
* as its first parameter (this way, the same function can be called by
* several different control sequences to do similar actions, and the
* function can still tell which TeX command was issued). If the right
* is an array, the first entry is the routine to call, and the
* remaining entries in the array are parameters to pass to the function
* as the second parameter (they are in an array reference).
*
* Note: TeX macros as defined by the user are discussed below.
*/
macros: {
displaystyle: ['HandleStyle','D'],
textstyle: ['HandleStyle','T'],
scriptstyle: ['HandleStyle','S'],
scriptscriptstyle: ['HandleStyle','SS'],
rm: ['HandleFont',0],
mit: ['HandleFont',1],
oldstyle: ['HandleFont',1],
cal: ['HandleFont',2],
it: ['HandleFont',4],
bf: ['HandleFont',6],
left: 'HandleLeft',
right: 'HandleRight',
arcsin: ['NamedOp',0],
arccos: ['NamedOp',0],
arctan: ['NamedOp',0],
arg: ['NamedOp',0],
cos: ['NamedOp',0],
cosh: ['NamedOp',0],
cot: ['NamedOp',0],
coth: ['NamedOp',0],
csc: ['NamedOp',0],
deg: ['NamedOp',0],
det: 'NamedOp',
dim: ['NamedOp',0],
exp: ['NamedOp',0],
gcd: 'NamedOp',
hom: ['NamedOp',0],
inf: 'NamedOp',
ker: ['NamedOp',0],
lg: ['NamedOp',0],
lim: 'NamedOp',
liminf: ['NamedOp',null,'lim<span style="margin-left: '+1/6+'em"></span>inf'],
limsup: ['NamedOp',null,'lim<span style="margin-left: '+1/6+'em"></span>sup'],
ln: ['NamedOp',0],
log: ['NamedOp',0],
max: 'NamedOp',
min: 'NamedOp',
Pr: 'NamedOp',
sec: ['NamedOp',0],
sin: ['NamedOp',0],
sinh: ['NamedOp',0],
sup: 'NamedOp',
tan: ['NamedOp',0],
tanh: ['NamedOp',0],
vcenter: ['HandleAtom','vcenter'],
overline: ['HandleAtom','overline'],
underline: ['HandleAtom','underline'],
over: 'HandleOver',
overwithdelims: 'HandleOver',
atop: 'HandleOver',
atopwithdelims: 'HandleOver',
above: 'HandleOver',
abovewithdelims: 'HandleOver',
brace: ['HandleOver','\\{','\\}'],
brack: ['HandleOver','[',']'],
choose: ['HandleOver','(',')'],
overbrace: ['Extension','leaders'],
underbrace: ['Extension','leaders'],
overrightarrow: ['Extension','leaders'],
overleftarrow: ['Extension','leaders'],
overset: ['Extension','underset-overset'],
underset: ['Extension','underset-overset'],
llap: 'HandleLap',
rlap: 'HandleLap',
ulap: 'HandleLap',
dlap: 'HandleLap',
raise: 'RaiseLower',
lower: 'RaiseLower',
moveleft: 'MoveLeftRight',
moveright: 'MoveLeftRight',
frac: 'Frac',
root: 'Root',
sqrt: 'Sqrt',
// TeX substitution macros
hbar: ['Macro','\\hbarchar\\kern-.5em h'],
ne: ['Macro','\\not='],
neq: ['Macro','\\not='],
notin: ['Macro','\\mathrel{\\rlap{\\kern2mu/}}\\in'],
cong: ['Macro','\\mathrel{\\lower2mu{\\mathrel{{\\rlap{=}\\raise6mu\\sim}}}}'],
bmod: ['Macro','\\mathbin{\\rm mod}'],
pmod: ['Macro','\\kern 18mu ({\\rm mod}\\,\\,#1)',1],
'int': ['Macro','\\intop\\nolimits'],
oint: ['Macro','\\ointop\\nolimits'],
doteq: ['Macro','\\buildrel\\textstyle.\\over='],
ldots: ['Macro','\\mathinner{\\ldotp\\ldotp\\ldotp}'],
cdots: ['Macro','\\mathinner{\\cdotp\\cdotp\\cdotp}'],
vdots: ['Macro','\\mathinner{\\rlap{\\raise8pt{.\\rule 0pt 6pt 0pt}}\\rlap{\\raise4pt{.}}.}'],
ddots: ['Macro','\\mathinner{\\kern1mu\\raise7pt{\\rule 0pt 7pt 0pt .}\\kern2mu\\raise4pt{.}\\kern2mu\\raise1pt{.}\\kern1mu}'],
joinrel: ['Macro','\\mathrel{\\kern-4mu}'],
relbar: ['Macro','\\mathrel{\\smash-}'], // \smash, because - has the same height as +
Relbar: ['Macro','\\mathrel='],
bowtie: ['Macro','\\mathrel\\triangleright\\joinrel\\mathrel\\triangleleft'],
models: ['Macro','\\mathrel|\\joinrel='],
mapsto: ['Macro','\\mapstochar\\rightarrow'],
rightleftharpoons: ['Macro','\\vcenter{\\mathrel{\\rlap{\\raise3mu{\\rightharpoonup}}}\\leftharpoondown}'],
hookrightarrow: ['Macro','\\lhook\\joinrel\\rightarrow'],
hookleftarrow: ['Macro','\\leftarrow\\joinrel\\rhook'],
Longrightarrow: ['Macro','\\Relbar\\joinrel\\Rightarrow'],
longrightarrow: ['Macro','\\relbar\\joinrel\\rightarrow'],
longleftarrow: ['Macro','\\leftarrow\\joinrel\\relbar'],
Longleftarrow: ['Macro','\\Leftarrow\\joinrel\\Relbar'],
longmapsto: ['Macro','\\mapstochar\\char{cmsy10}{0}\\joinrel\\rightarrow'],
longleftrightarrow: ['Macro','\\leftarrow\\joinrel\\rightarrow'],
Longleftrightarrow: ['Macro','\\Leftarrow\\joinrel\\Rightarrow'],
iff: ['Macro','\\;\\Longleftrightarrow\\;'],
mathcal: ['Macro','{\\cal #1}',1],
mathrm: ['Macro','{\\rm #1}',1],
mathbf: ['Macro','{\\bf #1}',1],
mathbb: ['Macro','{\\bf #1}',1],
mathit: ['Macro','{\\it #1}',1],
textrm: ['Macro','\\mathord{\\hbox{#1}}',1],
textit: ['Macro','\\mathord{\\class{textit}{\\hbox{#1}}}',1],
textbf: ['Macro','\\mathord{\\class{textbf}{\\hbox{#1}}}',1],
TeX: ['Macro','T\\kern-.1667em\\lower.5ex{E}\\kern-.125em X'],
limits: ['Limits',1],
nolimits: ['Limits',0],
',': ['Spacer',1/6],
':': ['Spacer',1/6], // for LaTeX
'>': ['Spacer',2/9],
';': ['Spacer',5/18],
'!': ['Spacer',-1/6],
enspace: ['Spacer',1/2],
quad: ['Spacer',1],
qquad: ['Spacer',2],
thinspace: ['Spacer',1/6],
negthinspace: ['Spacer',-1/6],
hskip: 'Hskip',
kern: 'Hskip',
rule: ['Rule','colored'],
space: ['Rule','blank'],
big: ['MakeBig','ord',0.85],
Big: ['MakeBig','ord',1.15],
bigg: ['MakeBig','ord',1.45],
Bigg: ['MakeBig','ord',1.75],
bigl: ['MakeBig','open',0.85],
Bigl: ['MakeBig','open',1.15],
biggl: ['MakeBig','open',1.45],
Biggl: ['MakeBig','open',1.75],
bigr: ['MakeBig','close',0.85],
Bigr: ['MakeBig','close',1.15],
biggr: ['MakeBig','close',1.45],
Biggr: ['MakeBig','close',1.75],
bigm: ['MakeBig','rel',0.85],
Bigm: ['MakeBig','rel',1.15],
biggm: ['MakeBig','rel',1.45],
Biggm: ['MakeBig','rel',1.75],
mathord: ['HandleAtom','ord'],
mathop: ['HandleAtom','op'],
mathopen: ['HandleAtom','open'],
mathclose: ['HandleAtom','close'],
mathbin: ['HandleAtom','bin'],
mathrel: ['HandleAtom','rel'],
mathpunct: ['HandleAtom','punct'],
mathinner: ['HandleAtom','inner'],
mathchoice: ['Extension','mathchoice'],
buildrel: 'BuildRel',
hbox: 'HBox',
text: 'HBox',
mbox: 'HBox',
fbox: ['Extension','fbox'],
strut: 'Strut',
mathstrut: ['Macro','\\vphantom{(}'],
phantom: ['Phantom',1,1],
vphantom: ['Phantom',1,0],
hphantom: ['Phantom',0,1],
smash: 'Smash',
acute: ['MathAccent', [7,0,0x13]],
grave: ['MathAccent', [7,0,0x12]],
ddot: ['MathAccent', [7,0,0x7F]],
tilde: ['MathAccent', [7,0,0x7E]],
bar: ['MathAccent', [7,0,0x16]],
breve: ['MathAccent', [7,0,0x15]],
check: ['MathAccent', [7,0,0x14]],
hat: ['MathAccent', [7,0,0x5E]],
vec: ['MathAccent', [0,1,0x7E]],
dot: ['MathAccent', [7,0,0x5F]],
widetilde: ['MathAccent', [0,3,0x65]],
widehat: ['MathAccent', [0,3,0x62]],
'_': ['Replace','ord','_','normal',-.4,.1],
' ': ['Replace','ord',' ','normal'],
angle: ['Replace','ord','∠','normal'],
matrix: 'Matrix',
array: 'Matrix', // ### still need to do alignment options ###
pmatrix: ['Matrix','(',')','c'],
cases: ['Matrix','\\{','.',['l','l']],
cr: 'HandleRow',
'\\': 'HandleRow',
// LaTeX
begin: 'Begin',
end: 'End',
tiny: ['HandleSize',0],
Tiny: ['HandleSize',1], // non-standard
scriptsize: ['HandleSize',2],
small: ['HandleSize',3],
normalsize: ['HandleSize',4],
large: ['HandleSize',5],
Large: ['HandleSize',6],
LARGE: ['HandleSize',7],
huge: ['HandleSize',8],
Huge: ['HandleSize',9],
dots: ['Macro','\\ldots'],
newcommand: ['Extension','newcommand'],
def: ['Extension','newcommand'],
// Extensions to TeX
color: ['Extension','HTML'],
href: ['Extension','HTML'],
'class': ['Extension','HTML'],
style: ['Extension','HTML'],
cssId: ['Extension','HTML'],
unicode: ['Extension','HTML'],
require: 'Require',
// debugging and test routines
'char': 'Char'
},
/*
* LaTeX environments
*/
environments: {
array: 'Array',
matrix: ['Array',null,null,'c'],
pmatrix: ['Array','(',')','c'],
bmatrix: ['Array','[',']','c'],
Bmatrix: ['Array','\\{','\\}','c'],
vmatrix: ['Array','\\vert','\\vert','c'],
Vmatrix: ['Array','\\Vert','\\Vert','c'],
cases: ['Array','\\{','.','ll'],
eqnarray: ['Array',null,null,'rcl',[5/18,5/18],'D']
},
/***************************************************************************/
/*
* Add special characters to list above. (This makes it possible
* to define them in a variable that the user can change.)
*/
AddSpecial: function (obj) {
for (var id in obj) {
jsMath.Parser.prototype.special[jsMath.Parser.prototype[id]] = obj[id];
}
},
/*
* Throw an error
*/
Error: function (s) {
this.i = this.string.length;
if (s.error) {this.error = s.error} else {
if (!this.error) {this.error = s}
}
},
/***************************************************************************/
/*
* Check if the next character is a space
*/
nextIsSpace: function () {
return this.string.charAt(this.i) == ' ';
},
/*
* Trim spaces from a string
*/
trimSpaces: function (text) {
if (typeof(text) != 'string') {return text}
return text.replace(/^\s+|\s+/g,'');
},
/*
* Parse a substring to get its mList, and return it.
* Check that no errors occured
*/
Process: function (arg) {
var data = this.mlist.data;
arg = jsMath.Parse(arg,data.font,data.size,data.style);
if (arg.error) {this.Error(arg); return null}
if (arg.mlist.Length() == 0) {return null}
if (arg.mlist.Length() == 1) {
var atom = arg.mlist.Last();
if (atom.atom && atom.type == 'ord' && atom.nuc &&
!atom.sub && !atom.sup && (atom.nuc.type == 'text' || atom.nuc.type == 'TeX'))
{return atom.nuc}
}
return {type: 'mlist', mlist: arg.mlist};
},
/*
* Get and return a control-sequence name from the TeX string
*/
GetCommand: function () {
var letter = /^([a-z]+|.) ?/i;
var cmd = letter.exec(this.string.slice(this.i));
if (cmd) {this.i += cmd[1].length; return cmd[1]}
this.Error("Missing control sequnece name at end of string or argument");
return null;
},
/*
* Get and return a TeX argument (either a single character or control sequence,
* or the contents of the next set of braces).
*/
GetArgument: function (name,noneOK) {
while (this.nextIsSpace()) {this.i++}
if (this.i >= this.string.length) {if (!noneOK) this.Error("Missing argument for "+name); return null}
if (this.string.charAt(this.i) == this.close) {if (!noneOK) this.Error("Extra close brace"); return null}
if (this.string.charAt(this.i) == this.cmd) {this.i++; return this.cmd+this.GetCommand()}
if (this.string.charAt(this.i) != this.open) {return this.string.charAt(this.i++)}
var j = ++this.i; var pcount = 1; var c = '';
while (this.i < this.string.length) {
c = this.string.charAt(this.i++);
if (c == this.cmd) {this.i++}
else if (c == this.open) {pcount++}
else if (c == this.close) {
if (pcount == 0) {this.Error("Extra close brace"); return null}
if (--pcount == 0) {return this.string.slice(j,this.i-1)}
}
}
this.Error("Missing close brace");
return null;
},
/*
* Get an argument and process it into an mList
*/
ProcessArg: function (name) {
var arg = this.GetArgument(name); if (this.error) {return null}
return this.Process(arg);
},
/*
* Get and process an argument for a super- or subscript.
* (read extra args for \frac, \sqrt, \mathrm, etc.)
* This handles these macros as special cases, so is really
* rather a hack. A more general method for indicating
* how to handle macros in scripts needs to be developed.
*/
ProcessScriptArg: function (name) {
var arg = this.GetArgument(name); if (this.error) {return null}
if (arg.charAt(0) == this.cmd) {
csname = arg.substr(1);
if (csname == "frac") {
arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
} else if (csname == "sqrt") {
arg += '['+this.GetBrackets(csname)+']'; if (this.error) {return null}
arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
} else if (csname.match(this.scriptargs)) {
arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
}
}
return this.Process(arg);
},
/*
* Get the name of a delimiter (check it in the delimiter list).
*/
GetDelimiter: function (name) {
while (this.nextIsSpace()) {this.i++}
var c = this.string.charAt(this.i);
if (this.i < this.string.length) {
this.i++;
if (c == this.cmd) {c = '\\'+this.GetCommand(name); if (this.error) return null}
if (this.delimiter[c] != null) {return this.delimiter[c]}
}
this.Error("Missing or unrecognized delimiter for "+name);
return null;
},
/*
* Get a dimension (including its units).
* Convert the dimen to em's, except for mu's, which must be
* converted when typeset.
*/
GetDimen: function (name,nomu) {
var rest; var advance = 0;
if (this.nextIsSpace()) {this.i++}
if (this.string.charAt(this.i) == '{') {
rest = this.GetArgument(name);
} else {
rest = this.string.slice(this.i);
advance = 1;
}
var match = rest.match(/^\s*([-+]?(\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|px)/);
if (!match) {this.Error("Missing dimension or its units for "+name); return null}
if (advance) {
this.i += match[0].length;
if (this.nextIsSpace()) {this.i++}
}
var d = match[1]-0;
if (match[4] == 'px') {d /= jsMath.em}
else if (match[4] == 'pt') {d /= 10}
else if (match[4] == 'ex') {d *= jsMath.TeX.x_height}
else if (match[4] == 'mu') {if (nomu) {d = d/18} else {d = [d,'mu']}}
return d;
},
/*
* Get the next non-space character
*/
GetNext: function () {
while (this.nextIsSpace()) {this.i++}
return this.string.charAt(this.i);
},
/*
* Get an optional LaTeX argument in brackets
*/
GetBrackets: function (name) {
var c = this.GetNext(); if (c != '[') return '';
var start = ++this.i; var pcount = 0;
while (this.i < this.string.length) {
var c = this.string.charAt(this.i++);
if (c == '{') {pcount++}
else if (c == '}') {
if (pcount == 0)
{this.Error("Extra close brace while looking for ']'"); return null}
pcount --;
} else if (c == this.cmd) {
this.i++;
} else if (c == ']') {
if (pcount == 0) {return this.string.slice(start,this.i-1)}
}
}
this.Error("Couldn't find closing ']' for argument to "+this.cmd+name);
return null;
},
/*
* Get everything up to the given control sequence name (token)
*/
GetUpto: function (name,token) {
while (this.nextIsSpace()) {this.i++}
var start = this.i; var pcount = 0;
while (this.i < this.string.length) {
var c = this.string.charAt(this.i++);
if (c == '{') {pcount++}
else if (c == '}') {
if (pcount == 0)
{this.Error("Extra close brace while looking for "+this.cmd+token); return null}
pcount --;
} else if (c == this.cmd) {
// really need separate counter for begin/end
// and it should really be a stack (new pcount for each begin)
if (this.string.slice(this.i,this.i+5) == "begin") {pcount++; this.i+=4}
else if (this.string.slice(this.i,this.i+3) == "end") {
if (pcount > 0) {pcount--; this.i += 2}
}
if (pcount == 0) {
if (this.string.slice(this.i,this.i+token.length) == token) {
c = this.string.charAt(this.i+token.length);
if (c.match(/[^a-z]/i) || !token.match(/[a-z]/i)) {
var arg = this.string.slice(start,this.i-1);
this.i += token.length;
return arg;
}
}
}
this.i++;
}
}
this.Error("Couldn't find "+this.cmd+token+" for "+name);
return null;
},
/*
* Get a parameter delimited by a control sequence, and
* process it to get its mlist
*/
ProcessUpto: function (name,token) {
var arg = this.GetUpto(name,token); if (this.error) return null;
return this.Process(arg);
},
/*
* Get everything up to \end{env}
*/
GetEnd: function (env) {
var body = ''; var name = '';
while (name != env) {
body += this.GetUpto('begin{'+env+'}','end'); if (this.error) return null;
name = this.GetArgument(this.cmd+'end'); if (this.error) return null;
}
return body;
},
/***************************************************************************/
/*
* Ignore spaces
*/
Space: function () {},
/*
* Collect together any primes and convert them to a superscript
*/
Prime: function (c) {
var base = this.mlist.Last();
if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
{base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
if (base.sup) {this.Error("Prime causes double exponent: use braces to clarify"); return}
var sup = '';
while (c == "'") {sup += this.cmd+'prime'; c = this.GetNext(); if (c == "'") {this.i++}}
base.sup = this.Process(sup);
base.sup.isPrime = 1;
},
/*
* Raise or lower its parameter by a given amount
* @@@ Note that this is different from TeX, which requires an \hbox @@@
* ### make this work with mu's ###
*/
RaiseLower: function (name) {
var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
var box = this.ProcessArg(this.cmd+name); if (this.error) return;
if (name == 'lower') {h = -h}
this.mlist.Add(new jsMath.mItem('raise',{nuc: box, raise: h}));
},
/*
* Shift an expression to the right or left
* @@@ Note that this is different from TeX, which requires a \vbox @@@
* ### make this work with mu's ###
*/
MoveLeftRight: function (name) {
var x = this.GetDimen(this.cmd+name,1); if (this.error) return;
var box = this.ProcessArg(this.cmd+name); if (this.error) return;
if (name == 'moveleft') {x = -x}
this.mlist.Add(jsMath.mItem.Space(x));
this.mlist.Add(jsMath.mItem.Atom('ord',box));
this.mlist.Add(jsMath.mItem.Space(-x));
},
/*
* Load an extension if it has not already been loaded
*/
Require: function (name) {
var file = this.GetArgument(this.cmd+name); if (this.error) return;
file = jsMath.Extension.URL(file);
if (jsMath.Setup.loaded[file]) return;
this.Extension(null,[file]);
},
/*
* Load an extension file and restart processing the math
*/
Extension: function (name,data) {
jsMath.Translate.restart = 1;
if (name != null) {delete jsMath.Parser.prototype[data[1]||'macros'][name]}
jsMath.Script.Start();
jsMath.Extension.Require(data[0],jsMath.Translate.asynchronous);
throw "restart";
},
/*
* Implements \frac{num}{den}
*/
Frac: function (name) {
var num = this.ProcessArg(this.cmd+name); if (this.error) return;
var den = this.ProcessArg(this.cmd+name); if (this.error) return;
this.mlist.Add(jsMath.mItem.Fraction('over',num,den));
},
/*
* Implements \sqrt[n]{...}
*/
Sqrt: function (name) {
var n = this.GetBrackets(this.cmd+name); if (this.error) return;
var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
box = jsMath.mItem.Atom('radical',arg);
if (this.n != '') {box.root = this.Process(n); if (this.error) return}
this.mlist.Add(box);
},
/*
* Implements \root...\of{...}
*/
Root: function (name) {
var n = this.ProcessUpto(this.cmd+name,'of'); if (this.error) return;
var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
box = jsMath.mItem.Atom('radical',arg);
box.root = n; this.mlist.Add(box);
},
/*
* Implements \buildrel...\over{...}
*/
BuildRel: function (name) {
var top = this.ProcessUpto(this.cmd+name,'over'); if (this.error) return;
var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
var op = jsMath.mItem.Atom('op',bot);
op.limits = 1; op.sup = top;
this.mlist.Add(op);
},
/*
* Create a delimiter of the type and size specified in the parameters
*/
MakeBig: function (name,data) {
var type = data[0]; var h = data[1] * jsMath.p_height;
var delim = this.GetDelimiter(this.cmd+name); if (this.error) return;
this.mlist.Add(jsMath.mItem.Atom(type,jsMath.Box.Delimiter(h,delim,'T')));
},
/*
* Insert the specified character in the given font.
* (Try to load the font if it is not already available.)
*/
Char: function (name) {
var font = this.GetArgument(this.cmd+name); if (this.error) return;
var n = this.GetArgument(this.cmd+name); if (this.error) return;
if (!jsMath.TeX[font]) {
jsMath.TeX[font] = [];
this.Extension(null,[jsMath.Font.URL(font)]);
} else {
this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,'T',this.mlist.data.size)));
}
},
/*
* Create an array or matrix.
*/
Matrix: function (name,delim) {
var data = this.mlist.data;
var arg = this.GetArgument(this.cmd+name); if (this.error) return;
var parse = new jsMath.Parser(arg+'\\\\',null,data.size);
parse.matrix = name; parse.row = []; parse.table = [];
parse.Parse(); if (parse.error) {this.Error(parse); return}
parse.HandleRow(name,1); // be sure the last row is recorded
var box = jsMath.Box.Layout(data.size,parse.table,delim[2]);
// Add parentheses, if needed
if (delim[0] && delim[1]) {
var left = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
box = jsMath.Box.SetList([left,box,right],data.style,data.size);
}
this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
},
/*
* When we see an '&', try to add a matrix entry to the row data.
* (Use all the data in the current mList, and then clear it)
*/
HandleEntry: function (name) {
if (!this.matrix)
{this.Error(name+" can only appear in a matrix or array"); return}
if (this.mlist.data.openI != null) {
var open = this.mlist.Get(this.mlist.data.openI);
if (open.left) {this.Error("Missing "+this.cmd+"right")}
else {this.Error("Missing close brace")}
}
if (this.mlist.data.overI != null) {this.mlist.Over()}
var data = this.mlist.data;
this.mlist.Atomize(data.style,data.size);
var box = this.mlist.Typeset(data.style,data.size);
this.row[this.row.length] = box;
this.mlist = new jsMath.mList(null,null,data.size,data.style);
},
/*
* When we see a \cr or \\, try to add a row to the table
*/
HandleRow: function (name,last) {
if (!this.matrix)
{this.Error(this.cmd+name+" can only appear in a matrix or array"); return}
this.HandleEntry(name);
if (!last || this.row.length > 1 || this.row[0].format != 'null')
{this.table[this.table.length] = this.row}
this.row = [];
},
/*
* LaTeX array environment
*/
Array: function (name,delim) {
var columns = delim[2]; var cspacing = delim[3];
if (!columns) {
columns = this.GetArgument(this.cmd+'begin{'+name+'}');
if (this.error) return;
}
columns = columns.replace(/[^clr]/g,'');
columns = columns.split('');
var data = this.mlist.data; var style = delim[4] || 'T';
var arg = this.GetEnd(name); if (this.error) return;
var parse = new jsMath.Parser(arg+this.cmd+'\\',null,data.size,style);
parse.matrix = name; parse.row = []; parse.table = [];
parse.Parse(); if (parse.error) {this.Error(parse); return}
parse.HandleRow(name,1); // be sure the last row is recorded
var box = jsMath.Box.Layout(data.size,parse.table,columns,cspacing);
// Add parentheses, if needed
if (delim[0] && delim[1]) {
var left = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
box = jsMath.Box.SetList([left,box,right],data.style,data.size);
}
this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
},
/*
* LaTeX \begin{env}
*/
Begin: function (name) {
var env = this.GetArgument(this.cmd+name); if (this.error) return;
if (env.match(/[^a-z*]/i)) {this.Error('Invalid environment name "'+env+'"'); return}
if (!this.environments[env]) {this.Error('Unknown environment "'+env+'"'); return}
var cmd = this.environments[env];
if (typeof(cmd) == "string") {cmd = [cmd]}
this[cmd[0]](env,cmd.slice(1));
},
/*
* LaTeX \end{env}
*/
End: function (name) {
var env = this.GetArgument(this.cmd+name); if (this.error) return;
this.Error(this.cmd+name+'{'+env+'} without matching '+this.cmd+'begin');
},
/*
* Add a fixed amount of horizontal space
*/
Spacer: function (name,w) {
this.mlist.Add(jsMath.mItem.Space(w-0));
},
/*
* Add horizontal space given by the argument
*/
Hskip: function (name) {
var w = this.GetDimen(this.cmd+name); if (this.error) return;
this.mlist.Add(jsMath.mItem.Space(w));
},
/*
* Typeset the argument as plain text rather than math.
*/
HBox: function (name) {
var text = this.GetArgument(this.cmd+name); if (this.error) return;
var box = jsMath.Box.InternalMath(text,this.mlist.data.size);
this.mlist.Add(jsMath.mItem.Typeset(box));
},
/*
* Insert a rule of a particular width, height and depth
* This replaces \hrule and \vrule
* @@@ not a standard TeX command, and all three parameters must be given @@@
*/
Rule: function (name,style) {
var w = this.GetDimen(this.cmd+name,1); if (this.error) return;
var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
var d = this.GetDimen(this.cmd+name,1); if (this.error) return;
h += d; var html;
if (h != 0) {h = Math.max(1.05/jsMath.em,h)}
if (h == 0 || w == 0 || style == "blank")
{html = jsMath.HTML.Blank(w,h)} else {html = jsMath.HTML.Rule(w,h)}
if (d) {
html = '<span style="vertical-align:'+jsMath.HTML.Em(-d)+'">'
+ html + '</span>';
}
this.mlist.Add(jsMath.mItem.Typeset(new jsMath.Box('html',html,w,h-d,d)));
},
/*
* Inserts an empty box of a specific height and depth
*/
Strut: function () {
var size = this.mlist.data.size;
var box = jsMath.Box.Text('','normal','T',size).Styled();
box.bh = box.bd = 0; box.h = .8; box.d = .3; box.w = 0;
this.mlist.Add(jsMath.mItem.Typeset(box));
},
/*
* Handles \phantom, \vphantom and \hphantom
*/
Phantom: function (name,data) {
var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
this.mlist.Add(new jsMath.mItem('phantom',{phantom: arg, v: data[0], h: data[1]}));
},
/*
* Implements \smash
*/
Smash: function (name,data) {
var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
this.mlist.Add(new jsMath.mItem('smash',{smash: arg}));
},
/*
* Puts an accent on the following argument
*/
MathAccent: function (name,accent) {
var c = this.ProcessArg(this.cmd+name); if (this.error) return;
var atom = jsMath.mItem.Atom('accent',c); atom.accent = accent[0];
this.mlist.Add(atom);
},
/*
* Handles functions and operators like sin, cos, sum, etc.
*/
NamedOp: function (name,data) {
var a = (name.match(/[^acegm-su-z]/)) ? 1: 0;
var d = (name.match(/[gjpqy]/)) ? .2: 0;
if (data[1]) {name = data[1]}
var box = jsMath.mItem.TextAtom('op',name,'cmr10',a,d);
if (data[0] != null) {box.limits = data[0]}
this.mlist.Add(box);
},
/*
* Implements \limits
*/
Limits: function (name,data) {
var atom = this.mlist.Last();
if (!atom || atom.type != 'op')
{this.Error(this.cmd+name+" is allowed only on operators"); return}
atom.limits = data[0];
},
/*
* Implements macros like those created by \def. The named control
* sequence is replaced by the string given as the first data value.
* If there is a second data value, this specifies how many arguments
* the macro uses, and in this case, those arguments are substituted
* for #1, #2, etc. within the replacement string.
*
* See the jsMath.Macro() command below for more details.
* The "newcommand" extension implements \newcommand and \def
* and are loaded automatically if needed.
*/
Macro: function (name,data) {
var text = data[0];
if (data[1]) {
var args = [];
for (var i = 0; i < data[1]; i++)
{args[args.length] = this.GetArgument(this.cmd+name); if (this.error) return}
text = this.SubstituteArgs(args,text);
}
this.string = this.AddArgs(text,this.string.slice(this.i));
this.i = 0;
},
/*
* Replace macro paramters with their values
*/
SubstituteArgs: function (args,string) {
var text = ''; var newstring = ''; var c; var i = 0;
while (i < string.length) {
c = string.charAt(i++);
if (c == this.cmd) {text += c + string.charAt(i++)}
else if (c == '#') {
c = string.charAt(i++);
if (c == "#") {text += c} else {
if (!c.match(/[1-9]/) || c > args.length)
{this.Error("Illegal macro parameter reference"); return}
newstring = this.AddArgs(this.AddArgs(newstring,text),args[c-1]);
text = '';
}
} else {text += c}
}
return this.AddArgs(newstring,text);
},
/*
* Make sure that macros are followed by a space if their names
* could accidentally be continued into the following text.
*/
AddArgs: function (s1,s2) {
if (s2.match(/^[a-z]/i) && s1.match(/(^|[^\\])(\\\\)*\\[a-z]+$/i)) {s1 += ' '}
return s1+s2;
},
/*
* Replace the control sequence with the given text
*/
Replace: function (name,data) {
this.mlist.Add(jsMath.mItem.TextAtom(data[0],data[1],data[2],data[3]));
},
/*
* Insert space for ~
*/
Tilde: function (name) {
this.mlist.Add(jsMath.mItem.TextAtom('ord',' ','normal'));
},
/*
* Implements \llap, \rlap, etc.
*/
HandleLap: function (name) {
var box = this.ProcessArg(); if (this.error) return;
box = this.mlist.Add(new jsMath.mItem('lap',{nuc: box, lap: name}));
},
/*
* Adds the argument as a specific type of atom (for commands like
* \overline, etc.)
*/
HandleAtom: function (name,data) {
var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
this.mlist.Add(jsMath.mItem.Atom(data,arg));
},
/*
* Process the character associated with a specific \mathcharcode
*/
HandleMathCode: function (name,code) {
this.HandleTeXchar(code[0],code[1],code[2]);
},
/*
* Add a specific character from a TeX font (use the current
* font if the type is 7 (variable) or the font is not specified)
* Load the font if it is not already loaded.
*/
HandleTeXchar: function (type,font,code) {
if (type == 7 && this.mlist.data.font != null) {font = this.mlist.data.font}
font = jsMath.TeX.fam[font];
if (!jsMath.TeX[font]) {
jsMath.TeX[font] = [];
this.Extension(null,[jsMath.Font.URL(font)]);
} else {
this.mlist.Add(jsMath.mItem.TeXAtom(jsMath.TeX.atom[type],code,font));
}
},
/*
* Add a TeX variable character or number
*/
HandleVariable: function (c) {this.HandleTeXchar(7,1,c.charCodeAt(0))},
HandleNumber: function (c) {this.HandleTeXchar(7,0,c.charCodeAt(0))},
/*
* For unmapped characters, just add them in as normal
* (non-TeX) characters
*/
HandleOther: function (c) {
this.mlist.Add(jsMath.mItem.TextAtom('ord',c,'normal'));
},
/*
* Ignore comments in TeX data
* ### Some browsers remove the newlines, so this might cause
* extra stuff to be ignored; look into this ###
*/
HandleComment: function () {
var c;
while (this.i < this.string.length) {
c = this.string.charAt(this.i++);
if (c == "\r" || c == "\n") return;
}
},
/*
* Add a style change (e.g., \displaystyle, etc)
*/
HandleStyle: function (name,style) {
this.mlist.data.style = style[0];
this.mlist.Add(new jsMath.mItem('style',{style: style[0]}));
},
/*
* Implements \small, \large, etc.
*/
HandleSize: function (name,size) {
this.mlist.data.size = size[0];
this.mlist.Add(new jsMath.mItem('size',{size: size[0]}));
},
/*
* Set the current font (e.g., \rm, etc)
*/
HandleFont: function (name,font) {
this.mlist.data.font = font[0];
},
/*
* Look for and process a control sequence
*/
HandleCS: function () {
var cmd = this.GetCommand(); if (this.error) return;
if (this.macros[cmd]) {
var macro = this.macros[cmd];
if (typeof(macro) == "string") {macro = [macro]}
this[macro[0]](cmd,macro.slice(1)); return;
}
if (this.mathchardef[cmd]) {
this.HandleMathCode(cmd,this.mathchardef[cmd]);
return;
}
if (this.delimiter[this.cmd+cmd]) {
this.HandleMathCode(cmd,this.delimiter[this.cmd+cmd].slice(0,3))
return;
}
this.Error("Unknown control sequence '"+this.cmd+cmd+"'");
},
/*
* Process open and close braces
*/
HandleOpen: function () {this.mlist.Open()},
HandleClose: function () {
if (this.mlist.data.openI == null) {this.Error("Extra close brace"); return}
var open = this.mlist.Get(this.mlist.data.openI);
if (!open || open.left == null) {this.mlist.Close()}
else {this.Error("Extra close brace or missing "+this.cmd+"right"); return}
},
/*
* Implements \left
*/
HandleLeft: function (name) {
var left = this.GetDelimiter(this.cmd+name); if (this.error) return;
this.mlist.Open(left);
},
/*
* Implements \right
*/
HandleRight: function (name) {
var right = this.GetDelimiter(this.cmd+name); if (this.error) return;
var open = this.mlist.Get(this.mlist.data.openI);
if (open && open.left != null) {this.mlist.Close(right)}
else {this.Error("Extra open brace or missing "+this.cmd+"left");}
},
/*
* Implements generalized fractions (\over, \above, etc.)
*/
HandleOver: function (name,data) {
if (this.mlist.data.overI != null)
{this.Error('Ambiguous use of '+this.cmd+name); return}
this.mlist.data.overI = this.mlist.Length();
this.mlist.data.overF = {name: name};
if (data.length > 0) {
this.mlist.data.overF.left = this.delimiter[data[0]];
this.mlist.data.overF.right = this.delimiter[data[1]];
} else if (name.match(/withdelims$/)) {
this.mlist.data.overF.left = this.GetDelimiter(this.cmd+name); if (this.error) return;
this.mlist.data.overF.right = this.GetDelimiter(this.cmd+name); if (this.error) return;
} else {
this.mlist.data.overF.left = null;
this.mlist.data.overF.right = null;
}
if (name.match(/^above/)) {
this.mlist.data.overF.thickness = this.GetDimen(this.cmd.name,1);
if (this.error) return;
} else {
this.mlist.data.overF.thickness = null;
}
},
/*
* Add a superscript to the preceeding atom
*/
HandleSuperscript: function () {
var base = this.mlist.Last();
if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
{base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
if (base.sup) {
if (base.sup.isPrime) {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
else {this.Error("Double exponent: use braces to clarify"); return}
}
base.sup = this.ProcessScriptArg('superscript'); if (this.error) return;
},
/*
* Add a subscript to the preceeding atom
*/
HandleSubscript: function () {
var base = this.mlist.Last();
if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
{base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
if (base.sub) {this.Error("Double subscripts: use braces to clarify"); return}
base.sub = this.ProcessScriptArg('subscript'); if (this.error) return;
},
/*
* Parse a TeX math string, handling macros, etc.
*/
Parse: function () {
var c;
while (this.i < this.string.length) {
c = this.string.charAt(this.i++);
if (this.mathchar[c]) {this.HandleMathCode(c,this.mathchar[c])}
else if (this.special[c]) {this[this.special[c]](c)}
else if (this.letter.test(c)) {this.HandleVariable(c)}
else if (this.number.test(c)) {this.HandleNumber(c)}
else {this.HandleOther(c)}
}
if (this.mlist.data.openI != null) {
var open = this.mlist.Get(this.mlist.data.openI);
if (open.left) {this.Error("Missing "+this.cmd+"right")}
else {this.Error("Missing close brace")}
}
if (this.mlist.data.overI != null) {this.mlist.Over()}
},
/*
* Perform the processing of Appendix G
*/
Atomize: function () {
var data = this.mlist.init;
if (!this.error) this.mlist.Atomize(data.style,data.size)
},
/*
* Produce the final HTML.
*
* We have to wrap the HTML it appropriate <SPAN> tags to hide its
* actual dimensions when these don't match the TeX dimensions of the
* results. We also include an image to force the results to take up
* the right amount of space. The results may need to be vertically
* adjusted to make the baseline appear in the correct place.
*/
Typeset: function () {
var data = this.mlist.init;
var box = this.typeset = this.mlist.Typeset(data.style,data.size);
if (this.error) {return '<span class="error">'+this.error+'</span>'}
if (box.format == 'null') {return ''};
box.Styled().Remeasured(); var isSmall = 0; var isBig = 0;
if (box.bh > box.h && box.bh > jsMath.h+.001) {isSmall = 1}
if (box.bd > box.d && box.bd > jsMath.d+.001) {isSmall = 1}
if (box.h > jsMath.h || box.d > jsMath.d) {isBig = 1}
var html = box.html;
if (isSmall) {// hide the extra size
if (jsMath.Browser.allowAbsolute) {
var y = 0;
if (box.bh > jsMath.h+.001) {y = jsMath.h - box.bh}
html = jsMath.HTML.Absolute(html,box.w,jsMath.h,0,y,jsMath.h);
} else if (!jsMath.Browser.valignBug) {
// remove line height and try to hide the depth
var dy = jsMath.HTML.Em(Math.max(0,box.bd-jsMath.hd)/3);
html = '<span style="line-height: 0px;'
+ ' position:relative; top:'+dy+'; vertical-align:'+dy
+ '">' + html + '</span>';
}
isBig = 1;
}
if (isBig) {
// add height and depth to the line
// (force a little extra to separate lines if needed)
html += jsMath.HTML.Blank(0,box.h+.05,box.d+.05);
}
return '<nobr><span class="scale">'+html+'</span></nobr>';
}
});
/*
* Make these characters special (and call the given routines)
*/
jsMath.Parser.prototype.AddSpecial({
cmd: 'HandleCS',
open: 'HandleOpen',
close: 'HandleClose'
});
/*
* The web-page author can call jsMath.Macro to create additional
* TeX macros for use within his or her mathematics. See the
* author's documentation for more details.
*/
jsMath.Add(jsMath,{
Macro: function (name) {
var macro = jsMath.Parser.prototype.macros;
macro[name] = ['Macro'];
for (var i = 1; i < arguments.length; i++)
{macro[name][macro[name].length] = arguments[i]}
}
});
/*
* Use these commands to create macros that load
* JavaScript files and reprocess the mathematics when
* the file is loaded. This lets you to have macros or
* LaTeX environments that autoload their own definitions
* only when they are needed, saving initial download time
* on pages where they are not used. See the author's
* documentation for more details.
*
*/
jsMath.Extension = {
safeRequire: 1, // disables access to files outside of jsMath/extensions
Macro: function (name,file) {
var macro = jsMath.Parser.prototype.macros;
if (file == null) {file = name}
macro[name] = ['Extension',file];
},
LaTeX: function (env,file) {
var latex = jsMath.Parser.prototype.environments;
latex[env] = ['Extension',file,'environments'];
},
Font: function (name,font) {
if (font == null) {font = name + "10"}
var macro = jsMath.Parser.prototype.macros;
macro[name] = ['Extension',jsMath.Font.URL(font)];
},
MathChar: function (font,defs) {
var fam = jsMath.TeX.famName[font];
if (fam == null) {
fam = jsMath.TeX.fam.length;
jsMath.TeX.fam[fam] = font;
jsMath.TeX.famName[font] = fam;
}
var mathchardef = jsMath.Parser.prototype.mathchardef;
for (var c in defs) {mathchardef[c] = [defs[c][0],fam,defs[c][1]]}
},
Require: function (file,show) {
if (this.safeRequire && (file.match(/\.\.\/|[^-a-z0-9.\/:_+=%~]/i) ||
(file.match(/:/) && file.substr(0,jsMath.root.length) != jsMath.root))) {
jsMath.Setup.loaded[file] = 1;
return;
}
jsMath.Setup.Script(this.URL(file),show);
},
URL: function (file) {
file = file.replace(/^\s+|\s+$/g,'');
if (!file.match(/^([a-z]+:|\/|fonts|extensions\/)/i)) {file = 'extensions/'+file}
if (!file.match(/\.js$/)) {file += '.js'}
return file;
}
}
/***************************************************************************/
/*
* These routines look through the web page for math elements to process.
* There are two main entry points you can call:
*
* <script> jsMath.Process() </script>
* or
* <script> jsMath.ProcessBeforeShowing() </script>
*
* The first will process the page asynchronously (so the user can start
* reading the top of the file while jsMath is still processing the bottom)
* while the second does not update until all the mathematics is typeset.
*/
jsMath.Add(jsMath,{
/*
* Call this at the bottom of your HTML page to have the
* mathematics typeset asynchronously. This lets the user
* start reading the mathematics while the rest of the page
* is being processed.
*/
Process: function (obj) {
jsMath.Setup.Body();
jsMath.Script.Push(jsMath.Translate,'Asynchronous',obj);
},
/*
* Call this at the bottom of your HTML page to have the
* mathematics typeset before the page is displayed.
* This can take a long time, so the user could cancel the
* page before it is complete; use it with caution, and only
* when there is a relatively small amount of math on the page.
*/
ProcessBeforeShowing: function (obj) {
jsMath.Setup.Body();
var method = (jsMath.Controls.cookie.asynch ? "Asynchronous": "Synchronous");
jsMath.Script.Push(jsMath.Translate,method,obj);
}
});
jsMath.Translate = {
element: [], // the list of math elements on the page
cancel: 0, // set to 1 to cancel asynchronous processing
/*
* Typeset a string in \textstyle and return the HTML for it
*/
TextMode: function (s) {
var parse = jsMath.Parse(s,null,null,'T');
parse.Atomize();
var html = parse.Typeset();
return html;
},
/*
* Typeset a string in \displaystyle and return the HTML for it
*/
DisplayMode: function (s) {
var parse = jsMath.Parse(s,null,null,'D');
parse.Atomize();
var html = parse.Typeset();
return html;
},
/*
* Return the text of a given DOM element
*/
GetElementText: function (element) {
var text = this.recursiveElementText(element);
element.alt = text;
if (text.search('&') >= 0) {
text = text.replace(/</g,'<');
text = text.replace(/>/g,'>');
text = text.replace(/"/g,'"');
text = text.replace(/&/g,'&');
}
return text;
},
recursiveElementText: function (element) {
if (element.nodeValue != null) {return element.nodeValue}
if (element.childNodes.length == 0) {return " "}
var text = '';
for (var i = 0; i < element.childNodes.length; i++)
{text += this.recursiveElementText(element.childNodes[i])}
return text;
},
/*
* Move hidden to the location of the math element to be
* processed and reinitialize sizes for that location.
*/
ResetHidden: function (element) {
element.innerHTML =
'<span style="visibility: hidden; position:absolute; top:0px;left:0px;"></span>'
+ jsMath.Browser.operaHiddenFix; // needed by Opera in tables
element.className='';
jsMath.hidden = element.firstChild;
if (!jsMath.BBoxFor("x").w) {jsMath.hidden = jsMath.hiddenTop}
jsMath.ReInit();
},
/*
* Typeset the contents of an element in \textstyle
*/
ConvertText: function (element) {
var text = this.GetElementText(element);
this.ResetHidden(element);
text = this.TextMode(text);
element.className = 'typeset';
element.innerHTML = text;
},
/*
* Typeset the contents of an element in \displaystyle
*/
ConvertDisplay: function (element) {
var text = this.GetElementText(element);
this.ResetHidden(element);
text = this.DisplayMode(text);
element.className = 'typeset';
element.innerHTML = text;
},
/*
* Process a math element
*/
ProcessElement: function (element) {
this.restart = 0;
try {
if (element.tagName.toLowerCase() == 'div') {
this.ConvertDisplay(element);
element.onclick = jsMath.Click.CheckClick;
element.ondblclick = jsMath.Click.CheckDblClick;
} else if (element.tagName.toLowerCase() == 'span') {
this.ConvertText(element);
element.onclick = jsMath.Click.CheckClick;
element.ondblclick = jsMath.Click.CheckDblClick;
}
} catch (err) {
if (element.alt) {
var tex = element.alt;
tex = tex.replace(/&/g,'&');
tex = tex.replace(/</g,'<');
tex = tex.replace(/>/g,'>');
element.innerHTML = tex;
}
jsMath.hidden = jsMath.hiddenTop;
}
},
/*
* Asynchronously process all the math elements starting with
* the k-th one
*/
ProcessElements: function (k) {
jsMath.Script.blocking = 1;
if (k >= this.element.length || this.cancel) {
this.ProcessComplete();
if (this.cancel) {
jsMath.Message.Set("Process Math: Canceled");
jsMath.Message.Clear()
}
jsMath.Script.blocking = 0;
jsMath.Script.Process();
} else {
this.ProcessElement(this.element[k]);
if (this.restart) {
jsMath.Script.Push(this,'ProcessElements',k);
jsMath.Script.blocking = 0;
setTimeout('jsMath.Script.Process()',jsMath.Browser.delay);
} else {
k++; var p = Math.floor(100 * k / this.element.length);
jsMath.Message.Set('Processing Math: '+p+'%');
setTimeout('jsMath.Translate.ProcessElements('+k+')',jsMath.Browser.delay);
}
}
},
/*
* Start the asynchronous processing of mathematics
*/
Asynchronous: function (obj) {
if (!jsMath.initialized) {jsMath.Init()}
this.element = this.GetMathElements(obj);
this.cancel = 0; this.asynchronous = 1;
jsMath.Script.blocking = 1;
jsMath.Message.Set('Processing Math: 0%',1);
setTimeout('jsMath.Translate.ProcessElements(0)',jsMath.Browser.delay);
},
/*
* Do synchronous processing of mathematics
*/
Synchronous: function (obj,i) {
if (i == null) {
if (!jsMath.initialized) {jsMath.Init()}
this.element = this.GetMathElements(obj);
i = 0;
}
this.asynchronous = 0;
while (i < this.element.length) {
this.ProcessElement(this.element[i]);
if (this.restart) {
jsMath.Synchronize('jsMath.Translate.Synchronous(null,'+i+')');
jsMath.Script.Process();
return;
}
i++;
}
this.ProcessComplete(1);
},
/*
* Look up all the math elements on the page and
* put them in a list sorted from top to bottom of the page
*/
GetMathElements: function (obj) {
var element = [];
if (!obj) {obj = jsMath.document}
if (typeof(obj) == 'string') {obj = jsMath.document.getElementById(obj)}
if (!obj.getElementsByTagName) return null;
var math = obj.getElementsByTagName('div');
for (var k = 0; k < math.length; k++) {
if (math[k].className == 'math') {
if (jsMath.Browser.renameOK && obj.getElementsByName)
{math[k].setAttribute('name','_jsMath_')}
else {element[element.length] = math[k]}
}
}
math = obj.getElementsByTagName('span');
for (var k = 0; k < math.length; k++) {
if (math[k].className == 'math') {
if (jsMath.Browser.renameOK && obj.getElementsByName)
{math[k].setAttribute('name','_jsMath_')}
else {element[element.length] = math[k]}
}
}
// this gets the SPAN and DIV elements interleaved in order
if (jsMath.Browser.renameOK && obj.getElementsByName) {
element = obj.getElementsByName('_jsMath_');
} else if (jsMath.hidden.sourceIndex) {
element.sort(function (a,b) {return a.sourceIndex - b.sourceIndex});
}
return element;
},
/*
* Remove the window message about processing math
* and clean up any marked <SPAN> or <DIV> tags
*/
ProcessComplete: function (noMessage) {
if (jsMath.Browser.renameOK) {
var element = jsMath.document.getElementsByName('_jsMath_');
for (var i = element.length-1; i >= 0; i--) {
element[i].removeAttribute('name');
}
}
jsMath.hidden = jsMath.hiddenTop;
this.element = [];
if (!noMessage) {
jsMath.Message.Set('Processing Math: Done');
jsMath.Message.Clear();
}
jsMath.Message.UnBlank();
if (jsMath.Browser.safariImgBug &&
(jsMath.Controls.cookie.font == 'symbol' ||
jsMath.Controls.cookie.font == 'image')) {
//
// For Safari, the images don't always finish
// updating, so nudge the window to cause a
// redraw. (Hack!)
//
if (this.timeout) {clearTimeout(this.timeout)}
this.timeout = setTimeout("jsMath.window.resizeBy(-1,0); "
+ "jsMath.window.resizeBy(1,0); "
+ "jsMath.Translate.timeout = null",2000);
}
},
/*
* Cancel procesing elements
*/
Cancel: function () {
jsMath.Translate.cancel = 1;
if (jsMath.Script.cancelTimer) {jsMath.Script.cancelLoad()}
}
};
jsMath.Add(jsMath,{
//
// Synchronize these with the loading of the tex2math plugin.
//
ConvertTeX: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertTeX',element)},
ConvertTeX2: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertTeX2',element)},
ConvertLaTeX: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertLaTeX',element)},
ConvertCustom: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertCustom',element)},
CustomSearch: function (om,cm,od,cd) {jsMath.Script.Push(null,function () {jsMath.tex2math.CustomSearch(om,cm,od,cd)})},
tex2math: {
ConvertTeX: function () {},
ConvertTeX2: function () {},
ConvertLaTeX: function () {},
ConvertCustom: function () {},
CustomSearch: function () {}
}
});
jsMath.Synchronize = jsMath.Script.Synchronize;
/***************************************************************************/
/*
* Initialize things
*/
if (window.parent != window) {
window.parent.jsMath = jsMath;
jsMath.document = window.parent.document;
jsMath.window = window.parent;
}
jsMath.Loaded();
jsMath.Controls.GetCookie();
jsMath.Setup.Source();
jsMath.Script.Init();
jsMath.Setup.Fonts();
if (jsMath.document.body) {jsMath.Setup.Body()}
}}
--albertel1143487957--